首页 > 其他分享 >反向传播

反向传播

时间:2022-10-19 20:47:04浏览次数:35  
标签:right partial boldsymbol 传播 反向 pmb frac left

反向传播

预备

假设样本为\(\left\{ \left( \pmb{x}_1 , \pmb{y}_1 \right), \left( \pmb{x}_2 , \pmb{y}_2 \right), \dots , \left( \pmb{x}_n , \pmb{y}_n \right) \right\}\), \(\pmb a^i_j\)为第\(i\)层第\(j\)个神经元的结果, \(\pmb z^i_j\)为第\(i\)层第\(j\)个神经元激活函数的输入, \(\pmb w^i_j\)为第\(i\)层第\(j\)个神经元的权重组成的向量, \(b^i_j\)为第\(i\)层第\(j\)个神经元的偏置量。\(l+1\)代表神经元的层数(第\(0\)层为输入层,第\(l\)层为输出层,其他为隐藏层),\(l_i\)代表第\(i\)层的神经元个数。
\(h\left( x \right) = \frac{1}{1+e^{-x}}\) , \(\pmb h(\pmb x) = \pmb h\left( \begin{bmatrix} x_1 \\ x_2\\ \vdots \\ x_n \end{bmatrix}\right) = \begin{bmatrix} h(x_1) \\ h(x_2)\\ \vdots \\ h(x_n) \end{bmatrix}\)

\(\pmb A^0 = \begin{bmatrix} \pmb{x}_1\\ \pmb{x}_2\\ \vdots \\ \pmb{x}_n \end{bmatrix}\), \(\pmb A^i = \begin{bmatrix} \pmb{a}^i_1 \\ \pmb{a}^i_2\\ \vdots \\ \pmb{a}^i_n \end{bmatrix}\),
得\(\pmb{z}^{i}_{j} = \left( \pmb A^{i-1}\right)^T \pmb w^{i}_{j} + b^i_j \pmb 1\),\(\pmb a^i_j = \pmb h(\pmb z ^i_j)\)

image

损失函数

\[J(\pmb{W}, \pmb{b})=\frac{1}{N} \sum_{n=1}^{N} \mathcal{L}\left(\pmb{y}^{(n)}, \hat{\pmb{y}}^{(n)}\right) \]

由于上式是一个累加,对求导有分配律,这样我们对可以每个样例分开求损失,最后将其累加。比如我们拿出一个样例设作\(\left( \pmb{x}, \pmb{y} \right)\)预测结果为\(\hat{\pmb y}\)(这时是\(\pmb A\)是\(l\times 1\times p\)),来进行反向传播。

反向传播

我们先尝试求一个最简单的比如先求第\(l\)层的第i个神经元的参数对损失的导数\(\frac{\partial J}{\partial \pmb w^l}\),由于\(\pmb{A}^{l}_{j} = \pmb h\left(\left( \pmb A^{l-1}\right)^T \pmb w^{l}_{j} + b^l_j \pmb 1\right)\),这时\(\frac{\partial J}{\partial \pmb w^{l}} = \frac{\partial \pmb z^{l}}{\partial \pmb w^l}\frac{\partial \pmb A^{l}_i}{\partial \pmb z^{l}}\frac{\partial J}{\partial \pmb A^{l}_i}\),很容易得到,但若求第\(l-1\)层的第i个神经元的参数对损失的导数呢?\(\frac{\partial J}{\partial \pmb w^{l}} = \frac{\partial \pmb z^{l}}{\partial \pmb w^l} \frac{\partial \pmb A^{l-1}_j}{\partial \pmb z^{l}} \frac{\partial \pmb z^{l}}{\partial \pmb A^{l-1}_j} \frac{\partial \pmb A^{l}_i}{\partial \pmb z^{l}} \frac{\partial J}{\partial \pmb A^{l}_i}\)这里需要把后面那一块重新求一边。这就是为什么要用反向传播算法。
image
如图,我们将箭头的反方向就是反向传播的方向。为了较少时间我们可以单独设一个变量单独存每一层的\(z\)对损失函数的导数,我们用\(\delta^i = \frac{\partial J}{\partial \pmb z^i}\),然后通过乘上\(\frac{\partial z ^i}{ \partial W}\)或\(\frac{\partial z ^i}{ \partial b}\)得到最终结果。
假设我们已经求出\(\delta^l = \frac{\partial J}{\partial \pmb z^l}\),而\(\delta^{l-1} = \frac{\partial \pmb a^l}{\partial \pmb z^{l-1}}\frac{\partial \pmb z^l}{\partial \pmb a^l}\frac{\partial J}{\partial \pmb z^l} = \frac{\partial \pmb a^l}{\partial \pmb z^{l-1}}\frac{\partial \pmb z^l}{\partial \pmb a^l }\delta^{l}\)这样我们就得到了一个反向的递推关系

\[{\Large \begin{aligned} \delta^{i} &= \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{a}^{i}} \\ &=\frac{\partial \boldsymbol{z}^{i}}{\partial \boldsymbol{a}^{i}} \cdot \frac{\partial \boldsymbol{a}^{i+1}}{\partial \boldsymbol{z}^{i}} \cdot \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{a}^{i+1}} \\ &=\operatorname{diag}\left(f_{l}^{\prime}\left(\boldsymbol{a}^{i}\right)\right) \cdot\left(\boldsymbol{W}^{i+1}\right)^T \cdot \delta^{i+1} \\ &=f_{l}^{\prime}\left(\boldsymbol{a}^{l}\right) \odot\left(\left(\boldsymbol{W}^{i+1}\right)^T \delta^{l+1}\right) \end{aligned}} \]

而\(\pmb a^i_j = \hat{\pmb y}^j\)
得\(\frac{\partial J}{\partial a^l_j} = \frac{\partial \mathcal{L}(\pmb{y}, \hat{\pmb{y}})}{\partial a^l_j} = \frac{\partial \mathcal{L}(\pmb{y}, \hat{\pmb{y}})}{\partial \hat{\pmb y}}\)后面这个偏导,只需要知道损失函数,就能求出来。
求对某一层参数的偏导只需要在图中分叉的部分的\(\delta\)乘上其对系数的偏导。

\[{\LARGE \begin{array}{rcl} \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial w_{i j}^{l}}&=&a_{1j}^{l-1} \delta^{l}_i\\ \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{b}^{l}_i}&=&\delta^{l}_i \end{array}}\]

标签:right,partial,boldsymbol,传播,反向,pmb,frac,left
From: https://www.cnblogs.com/RanX2018/p/16807666.html

相关文章

  • 深度学习基础课:全连接层的前向和后向传播推导(上)
    大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序线上课程资料:本节课录像回放1加QQ群,获......
  • 一种新的CNN可视化方法,目标选择性梯度(TSG)反向传播
    公众号ID|ComputerVisionGzq​论文地址:​​https://arxiv.org/pdf/2110.05182.pdf​​计算机视觉研究院专栏作者:Edison_G在过去的几年里,对深度神经网络的解释性研究,在深度学......
  • NGINX反向代理与负载均衡
    NGINX反向代理与负载均衡目录nginx反向代理与负载均衡nginx负载均衡调度器高可用配置安装服务部分部署web页面实现nginx复制均衡部署keepalived高可用编写脚本......
  • 深度学习与统计力学(IV) :深层网络的信号传播和初始化
    谷歌和斯坦福最新合作综述报告,发表在物理学的顶级期刊“凝聚态物理年鉴”(AnnualReviewofCondensedMatterPhysics)。作者YasamanBahri,JonathanKadmon,JeffreyPenni......
  • 面试突击89:事务隔离级别和传播机制有什么区别?
    事务隔离级别和事务传播机制都是对事务行为的规范,但二者描述的侧重点却不同。本文这里所说的事务隔离级别和事务传播机制指的是Spring框架中的机制。1、事务隔离级别事务......
  • Linux中的DNS正向、反向与主从解析
    一、DNS概念在日常生活中人们习惯使用域名访问服务器,但机器间互相只认IP地址,域名写IP地址之间是多对一的关系,一个ip地址不一定只对应一个域名,且一个完整域名只可以对应一......
  • nginx反向代理多个docker容器(基于端口代理)
    一台已安装docker的服务器(安装过程此处省略)安装nginx,这里我直接在本机安装nginx(发行版为opensuse),参考链接:SuseLinux12Nginx安装-简书(jianshu.com)添......
  • 反向代理相关笔记
    注释反向代理,以便将域名地址指向维护页面。具体步骤:a)      cd /etc/httpd/conf 打开文件b)      vimhttp-ssl.conf   修改文件c)     ......
  • ssh反向代理
    机器IP用户名备注A10.21.32.106gdut728目标服务器,处于内网B123.123.123.123root外网服务器,相当于桥梁的作用 反向代理ssh-fCNR正向代理ssh-fCNL-......
  • Nginx 反向代理教程
       官网地址:https://nginx.org/en/download.html  1.修改Nginx监听端口号8089server{listen8089;server_namelocalhost;......