正向传播和反向传播

正向传播和反向传播根据损失函数计算出的误差 通过链式法则 ChainRule 逐层计算并更新网络中的参数 权重和偏置 以最小化误差的过程

大家好,欢迎来到IT知识分享网。

正向传播(Forward Propagation)

正向传播是指将输入数据通过神经网络,计算出预测值的过程。具体步骤如下:

  1. 输入层:接受输入数据。
  2. 隐藏层:每个隐藏层中的神经元接收上一层的输出,进行加权求和,再经过激活函数得到输出。
  3. 输出层:最后一层的神经元将隐藏层的输出再次加权求和并通过激活函数,得到最终的预测结果。

正向传播和反向传播 

上图是一个简单的二层神经网络

正向传播的公式如下(以简单的单层网络为例):

Z= W\cdot x+b

y=\sigma (z)

W是权重矩阵,x是输入向量,b是偏置向量,\sigma(z)是激活函数,y是输出结果

反向传播(Backward Propagation)

反向传播是指根据损失函数计算出的误差,通过链式法则(Chain Rule)逐层计算并更新网络中的参数(权重和偏置)以最小化误差的过程。具体步骤如下:

  1. 计算损失:使用损失函数计算预测值与真实值之间的误差。例如,使用均方误差(MSE)或交叉熵损失。
  2. 误差反向传播:从输出层开始,计算损失相对于每个参数的梯度。通过链式法则,将梯度逐层传递回去。
  3. 参数更新:使用优化算法(如梯度下降)更新每个参数,使损失最小化。参数更新公式如下:

W_{new} = W_{old} - \eta \frac{\partial l}{\partial w}

W_{old}是更新前的权重,W_{new }是更新后的权重,\eta是学习速率,\frac{\partial l}{\partial w}是损失函数相对于权重的梯度。

关系与作用

  • 信息传递:正向传播将输入数据的信息从输入层传递到输出层,计算模型的预测结果;反向传播根据损失函数的梯度信息,将误差信号从输出层传递回每一层的参数,用于参数的更新。
  • 依赖关系:反向传播依赖于正向传播的计算结果。只有在进行了正向传播并得到预测结果后,才能计算损失函数并使用链式法则进行梯度计算。
  • 整体学习过程:正向传播和反向传播是神经网络学习过程中不可或缺的两个步骤。正向传播计算预测结果,反向传播根据预测结果与真实标签的差距来调整模型参数,使得模型在训练过程中不断优化。

通过正向传播和反向传播的结合,神经网络能够根据输入数据学习并调整参数,从而实现对复杂问题的有效建模和预测。

示例:神经网络训练过程

假设我们有一个简单的神经网络模型,包含一个输入层、一个隐藏层和一个输出层,具体如下

  • 网络结构
  • 输入层:2个特征输入
  • 隐藏层:3个神经元,使用ReLU激活函数
  • 输出层:1个神经元,使用sigmoid激活函数

 正向传播和反向传播

  • 正向传播(Forward Propagation)

    在正向传播过程中,我们将输入数据 X 通过网络层,计算得到模型的预测输出 \hat{y}

    其中:

    正向传播计算出了模型的预测输出 \hat{y},即模型对输入数据的预测结果。

    • 输入层到隐藏层: z^{[1]}=W^{[1]}X+b^{[1]}     a^{[1]}=ReLU(z^{[1]})
    • 隐藏层到输出层: z^{[2]} = W^{[2]} a^{[1]} + b^{[2]}    \hat{y} = \sigma(z^{[2]})
    • X 是输入特征向量。
    • W^{[1]}, b^{[1]}是隐藏层的权重和偏置。
    • W^{[2]}, b^{[2]} 是输出层的权重和偏置。
    • ReLU 是激活函数。
    • \sigma 是sigmoid激活函数。
  • 损失计算

    使用损失函数 \mathcal{L}(\hat{y}, y) 计算预测输出 \hat{y}​ 与真实标签 y 之间的差异。

  • 反向传播(Backward Propagation)

    反向传播根据损失函数的梯度,从输出层向隐藏层和输入层传播,计算每个参数的梯度并更新参数。

    其中,\odot表示逐元素相乘,\text{ReLU} 是ReLU激活函数的导数。

    • 计算输出层的梯度: \frac{\partial \mathcal{L}}{\partial z^{[2]}} = \hat{y} - y
    • \frac{\partial \mathcal{L}}{\partial W^{[2]}} = \frac{\partial \mathcal{L}}{\partial z^{[2]}} \cdot a^{[1]T}
    • \frac{\partial \mathcal{L}}{\partial b^{[2]}} = \frac{\partial \mathcal{L}}{\partial z^{[2]}}
    • 计算隐藏层的梯度: \frac{\partial \mathcal{L}}{\partial z^{[1]}} = (W^{[2]})^T \cdot \frac{\partial \mathcal{L}}{\partial z^{[2]}} \odot \text{ReLU}'(z^{[1]})
    • \frac{\partial \mathcal{L}}{\partial W^{[1]}} = \frac{\partial \mathcal{L}}{\partial z^{[1]}} \cdot X^T
    • \frac{\partial \mathcal{L}}{\partial b^{[1]}} = \frac{\partial \mathcal{L}}{\partial z^{[1]}}

 

相互依赖性的体现

  1. 信息流动
    • 正向传播计算出预测结果 \hat{y},反向传播使用 \hat{y} 和真实标签 y 的差异来计算梯度。
    • 反向传播的梯度计算依赖于正向传播的预测输出 \hat{y}​,因为梯度是基于损失函数对输出层的输出(即 \hat{y}​)的导数计算的。
  2. 参数更新
    • 反向传播计算出的梯度用于更新神经网络的参数(权重和偏置)。
    • 更新后的参数影响到下一次的正向传播,从而影响到预测输出 \hat{y}​ 的计算结果。
  3. 迭代优化
    • 每一次迭代中,正向传播计算出新的预测结果,反向传播根据这些预测结果计算出新的梯度,并用于参数更新。
    • 这种正向传播和反向传播的迭代过程不断优化模型,使得模型能够逐步逼近最优解。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135395.html

(0)
上一篇 2025-07-04 22:45
下一篇 2024-11-17 17:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信