反向传播算法的推导

一、参数说明

参数说明

  • W i j ( l ) W_{ij}^{(l)} Wij(l):表示 第 l-1 层的第 j 个激活特征第 l 层第 i 个神经元 的权值

  • b i j ( l ) b_{ij}^{(l)} bij(l):表示 第 l-1 层的第 j 个激活特征第 l 层第 i 个神经元 的偏置(其中 j j j 恒为 0,表示偏置项;第 0 个特征 a 0 ( l ) a_0^{(l)} a0(l) 恒为 1,表示其只作为其它神经元的偏置,本身并不需要计算)

  • Note:输入层算作 第 0 层 j 代表第 l-1 层的激活特征的下标 j ∈ [ 1 , n l − 1 ] j \in [1, n^{l-1}] j[1,nl1]) 、 i 代表第 l 层的神经元的下标 i ∈ [ 1 , n l ] i \in [1, n^{l}] i[1,nl]


二、公式定义

  • l l 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),表示一个神经元所获得的输入信号的加权和(即:特征的线性组合)
  • l l l 层神经元的激活值 a ( l ) = f l ( z ( l ) ) a^{(l)}=f_l(z^{(l)}) a(l)=fl(z(l)),特征的非线性映射,可把 a ( l ) a^{(l)} a(l) 看作 更高级的特征
  • 激活函数: f ( z ) = 1 1 + e − z f(z) =\frac{1}{1+e^{-z}} f(z)=1+ez1
  • 损失函数(MSE): J ( W , b ; x , y ) = 1 2 ∥ a ( l ) − y ( l ) ∥ 2 = 1 2 ∑ i = 1 n l [ a i ( l ) − y i ( l ) ] 2 J(W,b; x,y) = \frac{1}{2} \left \| a^{(l)} - y^{(l)} \right \|^{2}=\frac{1}{2} \sum_{i=1}^{n^{l}}\left [a_i^{(l)}-y_i^{(l)} \right ]^{2} J(W,b;x,y)=21 a(l)y(l) 2=21i=1nl[ai(l)yi(l)]2
    这里写图片描述
    这里写图片描述
  • 向量的导数(注意 维度从下到上排列
    在这里插入图片描述

三、结合实例分析推导过程(全连接神经网络)

1. 我们以一个两层神经元为例对推导过程详细分析

two-layer-network

  • 输入特征和输出类标值分别为:
    [ x 0 , x 1 , x 2 ] T = [ 1 , 0.05 , 0.1 ] T ; y ( 2 ) = [ 0 , 1 ] T [x_0, x_1, x_2]^T=[1, 0.05, 0.1]^T; y^{(2)}=[0, 1]^T [x0,x1,x2]T=[1,0.05,0.1]T;y(2)=[0,1]T
  • 各参数初始化值分别为:
    这里写图片描述
2. 梯度值的推导
(a)抽象的推导过程

在这里插入图片描述在这里插入图片描述

(b) 结合实际例子的推导过程

gradient

3. 反向传播总结
  • 从误差项的公式中可以看出:
    • l l l 层的误差项可以通过第 l + 1 l + 1 l+1 层的误差项计算得到,这就是误差的反向传播(Backpropagation,BP)
    • 反向传播算法的含义是: l l l 的一个神经元的误差项是所有与该神经元相连的 l + 1 l + 1 l+1 的神经元的 误差项的权重和 再乘上该神经元 激活函数的导数
  • 全连接神经网络的训练过程可以分为以下四步:
    • 首先,前向 计算每一层的 状态值(作为整体,用于求导后带入导数公式)和激活值,且保存每一层的 权重值
    • 其次,计算输出层的误差项(因为输出层没有 δ l + 1 \delta^{l+1} δl+1 可用)
    • 然后,反向 传播计算每一层的误差
    • 最后,计算每一层参数的偏导数,并按下面的公式更新参数
      在这里插入图片描述

四、卷积神经网络的反向传播

  • 卷积神经网络的反向传播如下图所示:
    在这里插入图片描述
  • 卷积类型,其中 n 为输入大小,m 为卷积核大小
    在这里插入图片描述

五、固定网络参数反向优化输入(或参数)

  • 已经训练好的模型(固定权重),可通过 loss 反向传播(主要是残差)来反向优化输入(或参数)
  • 可参考AI-编解码、AI-ISP、Learning to Prompt for Vision-Language Models
    在这里插入图片描述

五、参考资料

1、https://xpqiu.github.io/slides/20151226_CCFADL_NNDL.pdf
2、卷积神经网络(CNN)反向传播算法
3、Convolutional Neural Networks backpropagation: from intuition to derivation
4、Backpropagation In Convolutional Neural Networks

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
神经网络的反向传播算法推导可以通过以下步骤进行: 1. 定义符号和常量:根据引用\[1\]中的定义,我们可以定义网络层下标、神经元数量和输入层、隐藏层、输出层的符号。 2. 计算输出层梯度:根据引用\[3\]中的公式,输出层的梯度可以表示为 δ_k = ∂E/∂y_k * ∂y_k/∂u_k。其中,∂E/∂y_k表示损失函数对输出层输出的偏导数,∂y_k/∂u_k表示激活函数对输出层输入的偏导数。 3. 计算隐藏层梯度:根据引用\[2\]中的公式,隐藏层的梯度可以通过链式法则计算得到。具体来说,隐藏层的梯度可以表示为 δ_j = ∑(δ_k * ∂u_k/∂y_j)。其中,∑表示对输出层神经元的求和,δ_k表示输出层的梯度,∂u_k/∂y_j表示输出层输入对隐藏层输出的偏导数。 4. 更新权重和偏置:根据梯度下降法则,可以使用梯度来更新权重和偏置。具体来说,权重的更新可以表示为 Δw_ij = η * δ_j * x_i,其中,η表示学习率,δ_j表示隐藏层的梯度,x_i表示输入层的输出。偏置的更新可以表示为 Δb_j = η * δ_j。 通过以上步骤,我们可以推导出神经网络的反向传播算法。请注意,这只是一个简单的推导过程,具体的推导可能会根据网络结构和激活函数的选择而有所不同。 #### 引用[.reference_title] - *1* *3* [神经网络——反向传播算法公式推导](https://blog.csdn.net/qq_42733778/article/details/129501294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [神经网络反向传播算法推导](https://blog.csdn.net/hnshhshjq/article/details/85243550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值