模型参数、梯度更新步骤【初始化参数、前向传播得到模型输出值、计算输出值与目标值之间损失Loss、反向传播梯度下降更新参数 】

计算图:通过图的方式来描述函数的图形已知J(a,b,c)=3(a+bc),令v=bc,u=a+v​J(a,b,c) = 3(a+bc),令v = bc, u=a+v​J(a,b,c)=3(a+bc),令v=bc,u=a+v​,求a,b,c各自的偏导数。令:a+bc=u,即:J=3udJda=dJdu×duda=3×1dJdb=dJdu×dudv×dvdb=3×1×cdJdc=dJdu×dudv×dvdc=3×1×b\begin{aligned} 令:&a+bc=u, 即: J = 3u\\ \frac{
摘要由CSDN通过智能技术生成

一、单层、单一输出“感知机”梯度

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

二、单层、多输出“感知机”梯度

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

三、多层、多输出“感知机”梯度

在这里插入图片描述

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

二、反向传播算法-链式法则

1、计算图和反向传播

计算图:通过图的方式来描述函数的图形

已知 J ( a , b , c ) = 3 ( a + b c ) , 令 v = b c , u = a + v ​ J(a,b,c) = 3(a+bc),令v = bc, u=a+v​ J(a,b,c)=3(a+bc),v=bc,u=a+v,求a,b,c各自的偏导数。

令 : a + b c = u , 即: J = 3 u d J d a = d J d u × d u d a = 3 × 1 d J d b = d J d u × d u d v × d v d b = 3 × 1 × c d J d c = d J d u × d u d v × d v d c = 3 × 1 × b \begin{aligned} 令:&a+bc=u, 即: J = 3u\\ \frac{dJ}{da} &=\frac{dJ}{du} \times \frac{du}{da} = 3\times1 \\ \frac{dJ}{db} &=\frac{dJ}{du} \times \frac{du}{dv} \times \frac{dv}{db} = 3\times1\times c \\ \frac{dJ}{dc} &=\frac{dJ}{du} \times \frac{du}{dv} \times \frac{dv}{dc} = 3\times1\times b \\ \end{aligned} :dadJdbdJdcdJa+bc=u,即:J=3u=dudJ×dadu=3×1=dudJ×dvdu×dbdv=3×1×c=dudJ×dvdu×dcdv=3×1×b

J = 3 ( a + b c ) , 令 v = b c , u = a + v ​ J = 3(a+bc),令v = bc, u=a+v​ J=3(a+bc),v=bc,u=a+v绘制成计算图可以表示为:

在这里插入图片描述
绘制成为计算图之后,可以清楚的看到向前计算的过程

之后,对每个节点求偏导可有:

在这里插入图片描述
那么反向传播的过程就是一个上图的从右往左的过程,自变量 a , b , c a,b,c a,b,c各自的偏导就是连线上的梯度的乘积:

d J d a = 3 × 1 d J d b = 3 × 1 × c d J d c = 3 × 1 × b \begin{aligned} \frac{dJ}{da} &= 3 \times 1 \\ \frac{dJ}{db} &= 3 \times 1 \times c \\ \frac{dJ}{dc} &= 3 \times 1 \times b \end{aligned} dadJdbdJdcdJ=3×1=3×1×c=3×1×b

2、 神经网络中的反向传播

2.1 神经网络的示意图

W 1 , W 2 , . . . . W n W1,W2,....Wn W1,W2,....Wn表示网络第n层权重

W n [ i , j ] Wn[i,j] Wn[i,j]表示第 n n n 层第 i i i 个神经元,连接到第 n + 1 n+1 n+1 层第 j j j 个神经元的权重。

在这里插入图片描述

2.2 神经网络的计算图

在这里插入图片描述
其中:

  1. ∇ o u t \nabla out out是根据损失函数对预测值进行求导得到的结果
  2. f f f 函数可以理解为激活函数

问题:那么此时 W 1 [ 1 , 2 ] W_1[1,2] W1[1,2]的偏导该如何求解呢?

通过观察,发现从 o u t out out W 1 [ 1 , 2 ] W_1[1,2] W1[1,2]的来连接线有两条

在这里插入图片描述
结果如下:
d o u t d W 1 [ 1 , 2 ] = x 1 ∗ f ′ ( a 2 ) ∗ { W 2 [ 2 , 1 ] ∗ f ′ ( b 1 ) ∗ W 3 [ 1 , 1 ] ∗ ∇ o u t + W 2 [ 2 , 2 ] ∗ f ′ ( b 2 ) ∗ W 3 [ 2 , 1 ] ∗ ∇ o u t } \frac{dout}{dW_1[1,2]} = x1*f^{'}(a2)*\left\{W_2[2,1]*f^{'}(b1)*W_3[1,1]*\nabla out +W_2[2,2]*f^{'}(b2)*W_3[2,1]*\nabla out\right\} dW1[1,2]dout=x1f(a2){ W2[2,1]f(b1)W3[1,1]out+W2[2,2]f(b2)W3[2,1]out}

公式分为两部分:

  1. 括号外:左边红线部分
  2. 括号内
    1. 加号左边:右边红线部分
    2. 加号右边:蓝线部分

但是这样做,当模型很大的时候,计算量非常大

所以反向传播的思想就是对其中的某一个参数单独求梯度,之后更新,如下图所示:

在这里插入图片描述
计算过程如下
∇ W 3 [ 1 , 1 ] = f ( b 1 ) ∗ ∇ o u t (计算 W 3 [ 1 , 1 ] 梯度) ∇ W 3 [ 2 , 1 ] = f ( b 2 ) ∗ ∇ o u t (计算 W 3 [ 2 , 1 ] 梯度) ∇ b 1 = f ′ ( b 1 ) ∗ W 3 [ 1 , 1 ] ∗ ∇ o u t (计算 W 3 [ 2 , 1 ] 梯度) ∇ b 2 = f ′ ( b 2 ) ∗ W 3 [ 2 , 1 ] ∗ ∇ o u t (计算 W 3 [ 2 , 1 ] 梯度) \begin{aligned} &\nabla W_3[1,1] = f(b_1)*\nabla out & (计算W_3[1,1]梯度)\\ &\nabla W_3[2,1] = f(b_2)*\nabla out & (计算W_3[2,1]梯度)\\ \\ &\nabla b_1= f^{'}(b_1)*W_3[1,1]*\nabla out & (计算W_3[2,1]梯度)\\ &\nabla b_2= f^{'}(b_2)*W_3[2,1]*\nabla out & (计算W_3[2,1]梯度)\\ \end{aligned} W3[1,1]=f(b1)outW3[2,1]=f(b2)outb1=f(b1)W3[1,1]outb2=f(b2)W3[2,1]out(计算W3[1,1]梯度)(计算W3[2,1]梯度)(计算W3[2,1]梯度)(计算W3[2,1]梯度)

更新参数之后,继续反向传播

在这里插入图片描述
计算过程如下:
∇ W 2 [ 1 , 2 ] = f ( a 1 ) ∗ ∇ b 2 ∇ a 2 = f ′ ( a 2 ) ∗ ( w 2 [ 2 , 1 ] ∇ b 1 + W 2 [ 2 , 2 ] ∇ b 2 ) \begin{aligned} &\nabla W_2[1,2] = f(a_1)* \nabla b_2 \\ &\nabla a_2 = f^{'}(a_2)*(w_2[2,1]\nabla b_1 +W_2[2,2] \nabla b_2) \end{aligned} W2[1,2]=f(a1)b2a2=f(a2)(w2[2,1]b1+W2[2,2]b2)

继续反向传播

在这里插入图片描述
计算过程如下:
▽ W 1 [ 1 , 2 ] = x 1 ∗ ▽ a 2 ▽ x 1 = ( W 1 [ 1 , 1 ] ∗ ▽ a 1 + w 1 [ 1 , 2 ] ∗ ▽ a 2 ) ∗ x 1 ’ \begin{aligned} &▽W_1[1,2]= x_1*▽a_2\\ &▽x_1= (W_1[1,1]*▽a_1+w_1[1,2]*▽a_2)*x_1’ \end{aligned} W1[1,2]=x1a2x1=(W1[1,1]a1+w1[1,2]a2)x1

通用的描述如下
∇ w i , j l = f ( a i l ) ∗ ∇ a j i + 1 ∇ a i l = f ′ ( a i l ) ∗ ( ∑ j = 1 m w i , j ∗ ∇ a j l + 1 ) \nabla w^{l}_{i,j} = f(a^l_i)* \nabla a^{i+1}_{j}\\ \nabla a^{l}_i = f'(a^l_i)*(\sum_{j=1}^{m}w_{i,j}*\nabla a_j^{l+1}) wi,jl=f(ail)aji+1ail=f(ail)(j=1mwi,jajl+1)

2.3 反向传播算法-链式法则

在这里插入图片描述

反向传播算法-链式法则:

  • ∂ l ∂ w 11 ( 1 ) = \color{red}{\cfrac{\partial l}{\partial w^{(1)}_{11}}}= w11(1)l=
    在这里插入图片描述
  • ∂ l ∂ w 11 ( 2 ) = \color{red}{\cfrac{\partial l}{\partial w^{(2)}_{11}}}= w11(2)l=
    在这里插入图片描述
  • ∂ l ∂ w 11 ( 3 ) = \color{red}{\cfrac{\partial l}{\partial w^{(3)}_{11}}}= w11(3)l=
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值