当前位置: 首页 > news >正文

【机器学习】神经网络通过梯度下降学习的步骤以及前向传播的详细步骤

引言

神经网络中的梯度下降是一种优化算法,用于训练网络,即调整网络的权重和偏置,以最小化损失函数

文章目录

  • 引言
  • 一、神经网络通过梯度下降学习的步骤
    • 1.1 初始化网络参数
    • 1.2 前向传播(Forward Propagation)
    • 1.3 计算损失(Loss)
    • 1.4 反向传播(Back Propagation)
    • 1.5 参数更新
    • 1.6 迭代
    • 1.7 详细说明反向传播中的梯度计算
    • 1.8 总结
  • 二、前向传播
    • 2.1 输入层
    • 2.2 第一层(隐藏层或输入层)
    • 2.3 后续隐藏层
    • 2.4 输出层
    • 2.5 总结

在这里插入图片描述

一、神经网络通过梯度下降学习的步骤

1.1 初始化网络参数

  • 随机初始化权重 W W W 和偏置 b b b
  • 这些参数将随着训练过程的进行而更新

1.2 前向传播(Forward Propagation)

  • 对于每个训练样本 x x x 和其对应的标签 y y y
    • 输入层:将输入 x x x传递到网络的第一层。
    • 隐藏层
      • 计算加权输入: z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] z^{[l]} = W^{[l]}a^{[l-1]} + b^{[l]} z[l]=W[l]a[l1]+b[l],其中 l l l 表示层数, a [ l − 1 ] a^{[l-1]} a[l1] 是前一层激活输出。
      • 应用激活函数: a [ l ] = σ ( z [ l ] ) a^{[l]} = \sigma(z^{[l]}) a[l]=σ(z[l]),其中 σ \sigma σ 是激活函数,如ReLUSigmoidTanh
    • 输出层
      • 计算加权输入和激活输出,对于分类问题,通常使用Softmax函数计算最终输出

1.3 计算损失(Loss)

  • 使用损失函数计算预测输出 y ^ \hat{y} y^和实际标签 y y y之间的差异。
  • 常见的损失函数包括:
    • 对于回归问题:均方误差(MSE) L ( y , y ^ ) = 1 2 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 L(y, \hat{y}) = \frac{1}{2m}\sum_{i=1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 L(y,y^)=2m1i=1m(y(i)y^(i))2
    • 对于分类问题:交叉熵损失 L ( y , y ^ ) = − 1 m ∑ i = 1 m y ( i ) log ⁡ ( y ^ ( i ) ) L(y, \hat{y}) = -\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log(\hat{y}^{(i)}) L(y,y^)=m1i=1my(i)log(y^(i))

1.4 反向传播(Back Propagation)

  • 计算损失函数关于输出层激活的梯度。
  • 逆向遍历网络,计算每一层的梯度:
    • 对于输出层:
      • KaTeX parse error: Can't use function '\)' in math mode at position 58: …igma'(z^{[L]}) \̲)̲,其中 \( \nabla_{…是损失函数关于 a [ L ] a^{[L]} a[L]的梯度, σ ′ \sigma' σ是激活函数的导数。
    • 对于隐藏层:
      • δ [ l ] = ( ( W [ l + 1 ] ) T δ [ l + 1 ] ) ⋅ σ ′ ( z [ l ] ) \delta^{[l]} = ((W^{[l+1]})^T \delta^{[l+1]}) \cdot \sigma'(z^{[l]}) δ[l]=((W[l+1])Tδ[l+1])σ(z[l])
    • 计算损失函数关于参数的梯度:
      • ∂ L ∂ W [ l ] = 1 m δ [ l ] ( a [ l − 1 ] ) T \frac{\partial L}{\partial W^{[l]}} = \frac{1}{m} \delta^{[l]} (a^{[l-1]})^T W[l]L=m1δ[l](a[l1])T
      • ∂ L ∂ b [ l ] = 1 m ∑ i = 1 m δ [ l ] ( i ) \frac{\partial L}{\partial b^{[l]}} = \frac{1}{m} \sum_{i=1}^{m} \delta^{[l] (i)} b[l]L=m1i=1mδ[l](i)

1.5 参数更新

  • 使用梯度下降更新权重和偏置:
    - W [ l ] = W [ l ] − α ∂ L ∂ W [ l ] W^{[l]} = W^{[l]} - \alpha \frac{\partial L}{\partial W^{[l]}} W[l]=W[l]αW[l]L
  • b [ l ] = b [ l ] − α ∂ L ∂ b [ l ] b^{[l]} = b^{[l]} - \alpha \frac{\partial L}{\partial b^{[l]}} b[l]=b[l]αb[l]L
  • 其中, α \alpha α是学习率

1.6 迭代

  • 重复步骤2到5,直到满足停止条件,如达到预定的迭代次数、损失低于某个阈值或验证集上的性能不再提升

1.7 详细说明反向传播中的梯度计算

  • 输出层梯度:对于不同的损失函数,计算方式不同。例如,对于交叉熵损失, δ [ L ] = y ^ − y \delta^{[L]} = \hat{y} - y δ[L]=y^y
  • 隐藏层梯度:通过链式法则,将输出层的梯度传递回前一层,计算每一层的梯度
  • 参数梯度:最终计算得到的梯度用于更新权重和偏置

1.8 总结

通过这个过程,神经网络能够通过不断调整参数来学习数据中的模式,并减少预测误差

二、前向传播

前向传播(Forward Propagation)是神经网络中用于计算网络输出的一系列步骤。在这个过程中,输入数据通过网络层传递,每层都对数据进行变换,直到到达输出层。以下是前向传播的详细步骤:

2.1 输入层

  • 输入数据:网络接收输入数据 X X X,它是一个维度为 [ n , d ] [n, d] [n,d]的矩阵,其中 n n n 是样本数量, d d d 是每个样本的特征数量

2.2 第一层(隐藏层或输入层)

  • 加权输入:计算每个神经元的加权输入 KaTeX parse error: Can't use function '\)' in math mode at position 9: Z^{[1]} \̲)̲。这通过将输入 \( X \)…相乘,并加上偏置向量 b [ 1 ] b^{[1]} b[1]来完成。
    Z [ 1 ] = W [ 1 ] X + b [ 1 ] Z^{[1]} = W^{[1]}X + b^{[1]} Z[1]=W[1]X+b[1]
  • 激活函数:将加权输入 Z [ 1 ] Z^{[1]} Z[1]通过激活函数 σ \sigma σ 来获得该层的激活输出 A [ 1 ] A^{[1]} A[1]
    A [ 1 ] = σ ( Z [ 1 ] ) A^{[1]} = \sigma(Z^{[1]}) A[1]=σ(Z[1])
    常用的激活函数包括ReLUSigmoidTanh

2.3 后续隐藏层

  • 对于网络的每一个隐藏层 l ( l = 2 , 3 , . . . , L − 1 ) l( l = 2, 3, ..., L-1 ) l(l=2,3,...,L1,其中 L L L是网络的总层数:
    • 加权输入:计算每个神经元的加权输入 Z [ l ] Z^{[l]} Z[l],这是通过将前一层的激活输出 A [ l − 1 ] A^{[l-1]} A[l1]与权重矩阵 W [ l ] W^{[l]} W[l]相乘,并加上偏置向量 b [ l ] b^{[l]} b[l]来完成的。
      Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]} Z[l]=W[l]A[l1]+b[l]
    • 激活函数:将加权输入 Z [ l ] Z^{[l]} Z[l]通过激活函数 σ \sigma σ 来获得该层的激活输出 A [ l ] A^{[l]} A[l]
      A [ l ] = σ ( Z [ l ] ) A^{[l]} = \sigma(Z^{[l]}) A[l]=σ(Z[l])

2.4 输出层

  • 对于网络的输出层 L L L
    • 加权输入:计算每个神经元的加权输入 Z [ L ] Z^{[L]} Z[L],这是通过将最后一层的激活输出 A [ L − 1 ] A^{[L-1]} A[L1]与权重矩阵 W [ L ] W^{[L]} W[L]相乘,并加上偏置向量 b [ L ] b^{[L]} b[L] 来完成的。
      Z [ L ] = W [ L ] A [ L − 1 ] + b [ L ] Z^{[L]} = W^{[L]}A^{[L-1]} + b^{[L]} Z[L]=W[L]A[L1]+b[L]
    • 激活函数:根据问题的性质,选择合适的激活函数。对于分类问题,通常使用Softmax函数来获得概率分布输出 Y ^ \hat{Y} Y^
      Y ^ = softmax ( Z [ L ] ) \hat{Y} = \text{softmax}(Z^{[L]}) Y^=softmax(Z[L])
      其中,Softmax函数将 Z [ L ] Z^{[L]} Z[L]转换为概率分布,使得每个输出 y ^ [ i ] \hat{y}^{[i]} y^[i] 都在0和1之间,并且所有输出之和为1

2.5 总结

前向传播的整个过程可以总结为以下步骤:

  1. 对于每个层 l l l,计算加权输入 Z [ l ] Z^{[l]} Z[l]
  2. 应用激活函数 σ \sigma σ 来获得激活输出 A [ l ] A^{[l]} A[l]
  3. 重复步骤1和2,直到到达输出层
  4. 在输出层应用适当的激活函数(如Softmax)以获得最终输出。

前向传播是神经网络进行预测的基础,它将输入数据转换为输出预测,为后续的反向传播和参数更新提供了必要的信息

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mac终端 shell脚本打包iOS,发现没有生成DSYM文件
  • L1 - OpenCompass 评测 InternLM-1.8B 实践
  • 编程-设计模式 13:责任链模式
  • Conda的自动化魔法:一探auto_activate_base的奥秘
  • Redis 为什么读写性能高?
  • 【Android Git】Git版本回退方式
  • 为啥说SPFA已死?三种图论算法太难懂?深入浅出谈图论,看这篇文章就够了
  • docker系列11:Dockerfile入门
  • Java | Leetcode Java题解之第332题重新安排行程
  • JAVA开发学习-day21
  • 【sdk】- 对接阿里云抠图
  • C++ //练习 16.42 对下面每个调用,确定T和val的类型:
  • linux 6.10.0 CXL/memdev.c 详解
  • 【json解析】控制台打印json字符串格式正确,但json.loads()解析失败问题解决
  • Java中等题-不同二叉搜索树(力扣)
  • 【node学习】协程
  • DOM的那些事
  • HTTP那些事
  • HTTP请求重发
  • HTTP中GET与POST的区别 99%的错误认识
  • Java Agent 学习笔记
  • Java方法详解
  • Java应用性能调优
  • NSTimer学习笔记
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 从tcpdump抓包看TCP/IP协议
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 嵌入式文件系统
  • 如何合理的规划jvm性能调优
  • 山寨一个 Promise
  • 使用Swoole加速Laravel(正式环境中)
  • 首页查询功能的一次实现过程
  • 物联网链路协议
  • 一起参Ember.js讨论、问答社区。
  • 智能网联汽车信息安全
  • mysql面试题分组并合并列
  • 如何用纯 CSS 创作一个货车 loader
  • ### RabbitMQ五种工作模式:
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #微信小程序:微信小程序常见的配置传旨
  • $jQuery 重写Alert样式方法
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (AngularJS)Angular 控制器之间通信初探
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Python) SOAP Web Service (HTTP POST)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二) 初入MySQL 【数据库管理】
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (九)c52学习之旅-定时器
  • (四)React组件、useState、组件样式
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)