引言

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

在这里插入图片描述

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

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 第一层(隐藏层或输入层)

  • 加权输入:计算每个神经元的加权输入 Z [ 1 ] Z^{[1]} Z[1]。这通过将输入 X X X与权重矩阵 W [ 1 ] W^{[1]} W[1]相乘,并加上偏置向量 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)以获得最终输出。

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

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐