深度学习——PyTorch实战计算机视觉3

后向传播

深度学习中,后向传播主要用于对模型的参数进行微调。经过多次后向传播之后,可以得到模型的最优参数组合。这个过程其实就是一个复合函数求导的过程。

举例:

定义上图模型的前向传播函数为F=(X+Y)\times Z。假设输入数据X=2, Y=5, Z=3,可得前向传播计算结果F=(X+Y)\times Z=21。若把原函数改写为复合函数的形式,令H=X+Y=7,就可以得到F=H\times Z=21

接下来是后向传播中涉及到的计算过程。

假设在后向传播过程中需要微调的参数有3个,分别是X, Y, Z,这3个参数每轮后向传播的微调值为\frac{\partial F}{\partial X}\frac{\partial F}{\partial Y}\frac{\partial F}{\partial Z},这3个值计算的都是偏导数。将求偏导的步骤拆解:

首先,分别计算\frac{\partial H}{\partial Y}=1\frac{\partial H}{\partial X}=1\frac{\partial F}{\partial Z}=H\frac{\partial F}{\partial H}=Z,然后计算X,Y,Z后向传播微调值,即偏导数:

  •  Z的偏导数:\frac{\partial F}{\partial Z}=7
  • Y的偏导数:\frac{\partial F}{\partial Y}=\frac{\partial F}{\partial H}\frac{\partial H}{\partial Y}=Z\times 1=3
  • X的偏导数:\frac{\partial F}{\partial X}=\frac{\partial F}{\partial H}\frac{\partial H}{\partial X}=Z\times 1=3

接下来看一个复杂点的例子:

假设x0=1、x1=1、b=-1,同时有对应权重值w0=0.5、w1=0.5,使用Sigmoid作为激活函数,则前向传播的计算函数为:f=\frac{1}{1+e^{-(w0x0+w1x1+b)}},将参数代入函数进行计算,可得f=\frac{1}{1+e^0}=0.5,然后再对函数进行求导。同样,若将原函数进行化简,改写为复合函数形式求解,令h=w0x0+w1x1+b=0,化简后的函数为f(h)=\frac{1}{1+e^h}=0.5,故\frac{\partial h}{\partial x0}=w0=0.5\frac{\partial h}{\partial x1}=w1=0.5,然后计算x0、x1后向传播微调值:

  •  x0后向传播微调值:\frac{\partial f}{\partial x0}=\frac{\partial f}{\partial h}\frac{\partial h}{\partial x0}=(1-f(h))f(h)\times 0.5=(1-0.5)\times 0.5\times 0.5=0.125
  •  x1后向传播微调值:\frac{\partial f}{\partial x1}=\frac{\partial f}{\partial h}\frac{\partial h}{\partial x1}=(1-f(h))f(h)\times 0.5=(1-0.5)\times 0.5\times 0.5=0.125
发布了115 篇原创文章 · 获赞 33 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Dorothy_Xue/article/details/102625591