深度学习简介——神经网络与后向传播(Hung-Yi Lee)

深度学习三步走

Step1 Neural Network

从neural network说起,每个神经元以不同的方式链接,就会产生不同的结果输出。将两个神经元并排拼在一起
在这里插入图片描述
每个神经元有不同的参数,以输入1,-1为例,可以得到的结果是:(神经网络的参数 θ \theta θ:所有的weight和bias)
在这里插入图片描述
即输入先乘上权重再加上偏置,最后通过激活层,输出的又作为下一层的输入层。通常把全连接网络分成输入层,隐藏层和输出层,Deep learning中的Deep可以认为是Many hidden layers。
y = f ( x ) = σ ( w m ⋯ σ ( w 2 ∗ σ ( w 1 ∗ x + b 1 ) + b 2 ) ⋯ + b m ) ) y=f(x)=\sigma(w^m \cdots\sigma(w^2 *\sigma(w^1*x+b^1)+b^2) \cdots+b^m )) y=f(x)=σ(wmσ(w2σ(w1x+b1)+b2)+bm))
也可以把这种运算看成矩阵运算,针对上图有:
在这里插入图片描述

Step2 goodness of function

loss函数的设计,以手写数字识别为例,采用交叉熵,则 l ( y , y ^ ) = − ∑ i = 1 10 y i ^ l n y i l(y,\hat{y})=-\sum_{i=1}^{10} \hat{y_i}lny_i l(y,y^)=i=110yi^lnyi

Step3 pick the best function

利用梯度下降让loss最小,即计算 ∂ L ∂ w 1 , ∂ L ∂ b 1 ⋯ \frac{\partial L}{\partial w1},\frac{\partial L}{\partial b1} \cdots w1L,b1L
再利用和线性规划中一样的更新迭代方法,找到最优解。唯一不同的就是此时的函数更复杂——需要采用后向传播

后向传播(让梯度计算更有效率)

用到的原理就是链式法则。
loss函数可以简写为 L ( θ ) = ∑ n = 1 N l n ( θ ) L(\theta)=\sum_{n=1}^N l^n(\theta) L(θ)=n=1Nln(θ),对w求偏导, ∂ L ( θ ) ∂ w = ∑ n = 1 N ∂ l n ( θ ) ∂ w \frac{\partial L(\theta)}{\partial w}=\sum_{n=1}^N \frac{\partial l^n(\theta)}{\partial w} wL(θ)=n=1Nwln(θ)
在这里插入图片描述
以一个神经元为例,根据链式法则, ∂ l ∂ w = ∂ l ∂ z ∂ z ∂ w \frac{\partial l}{\partial w}=\frac{\partial l}{\partial z}\frac{\partial z}{\partial w} wl=zlwz
其中 ∂ z ∂ w \frac{\partial z}{\partial w} wz比较好计算(结果就是权重w连接的输入),称为Forward pass
∂ l ∂ z \frac{\partial l}{\partial z} zl则有些复杂,需要再往后面找,称为Backward pass
在这里插入图片描述
从这幅图可以看出, ∂ l ∂ z = ∂ l ∂ a ∂ a ∂ z \frac{\partial l}{\partial z}=\frac{\partial l}{\partial a}\frac{\partial a}{\partial z} zl=alza
其中 ∂ a ∂ z = σ ′ ( z ) , ∂ l ∂ a = ∂ l ∂ z ′ ∂ z ′ ∂ a + ∂ l ∂ z ′ ′ ∂ z ′ ′ ∂ a \frac{\partial a}{\partial z}=\sigma'(z),\frac{\partial l}{\partial a}=\frac{\partial l}{\partial z'}\frac{\partial z'}{\partial a}+\frac{\partial l}{\partial z''}\frac{\partial z''}{\partial a} za=σ(z)al=zlaz+zlaz
所以 ∂ l ∂ z = σ ′ ( z ) [ w 3 ∂ l ∂ z ′ + w 4 ∂ l ∂ z ′ ′ ] \frac{\partial l}{\partial z}=\sigma'(z)[w_3\frac{\partial l}{\partial z'}+w_4\frac{\partial l}{\partial z''}] zl=σ(z)[w3zl+w4zl]
现在就是要解决 ∂ l ∂ z ′ \frac{\partial l}{\partial z'} zl ∂ l ∂ z ′ ’ \frac{\partial l}{\partial z'’} zl
(递归循环开始出现)
case1.output layer
在这里插入图片描述
case2 Not output layer
在这里插入图片描述

另一种观点看后向传播

之前计算梯度时,要计算loss函数对第一层参数的导数就得计算第二层,计算第二层就得计算第三层……这样子效率不高。可以换一种观点,将反向传播看出“前向传播”,先计算最后一层的导数,这样就可以计算倒数第二层的导数……只需要注意一下此时的"激活函数"是 σ ′ ( z ) \sigma'(z) σ(z)
在这里插入图片描述
最后总结一下后向传播:
在这里插入图片描述

参考链接:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值