学习笔记6:神经网络-梯度下降-反向传播
sigmoid神经元组成的神经网络就是一个层级式Log Reg,处理过程跟Log Reg差别不大,最大的变化就是引入了反向传播法(back propagation,BP)来传递误差,并在这个基础上做梯度下降。
【前情提要】
先复习一下Log Reg的损失函数(详见学习笔记1):
P为sigmoid函数,向量w为权重,x为每一层神经元的输入信号。
和Log Reg一样的,神经网络的优化过程就是将损失函数视为权重w的函数,不断变化w的值,直到损失函数其达到(全局或局部)最小值。而优化方法仍旧是梯度下降,顺着函数值下降最快的方向——梯度方向按某个学习速率α慢慢逼近最小值。
但神经网络比一般Log Reg麻烦的地方在于它有好多层,需要就对每一层上每一个神经元的权重w求其梯度,也就是损失函数对每个权重的偏导数:d(E(w))/d(w),但若直接求导,计算成本很高,这也导致过去神经网络并不受推崇。
-------------------------------------------------------------------------------------------------------------------------------------------
【反向传播的提出】
直到1986年,哈佛大学的David & Geoffrey & Ronald 在Nature上发表了一篇著名的论文,推荐了反向传播(back propagation)法,可以有效减少损失函数求导过程中的重复计算带来的资源浪费,因而可以大幅降低计算成本,反向传播的推广也帮助复兴了神经网络的相关研究。
说来也逗,反向传播的基本逻辑就是非常简单的、高中生都知道的链式法则,人们却等了几十年才发现它竟然可以被用于神经网络的优化。
-------------------------------------------------------------------------------------------------------------------------------------------
【误差反向传播】
下图是一个简单神经网络:
反向传播是如何操作的呢?
首先,之所以称为反向,是因为它的计算方向是从输出端(右侧)向输入端(左侧)进行的,一层层计算损失函数对该层权重w的偏导数。
++第一步:倒数第一层++
* a(4)是输出值、预测值,而y是观测值。
++第二步:倒数第二层++
由于导数的链式法则,我们知道:
带入第一步公式后:
*sigmoid函数的导数为:d(h(z))/d(z) = h(z) * [1-h(z)]
*a为激发函数Activation Function,在正向传播过程中都已经求得了,是已知常数。
++第三步:倒数第三层++
倒数第三层的神经元a2可以通过两条路径影响最终的输出值:
因而需要把两条路径的偏导数相加,才是损失函数对a2的偏导,带入第二步的公式后:
以此类推...
++总结++
所以BP过程可以用向量化的表达方式归纳为:
-------------------------------------------------------------------------------------------------------------------------------------------
【从BP到梯度下降】
接着我们在反向传播的基础上,计算我们需要的梯度d(E)/d(w)。
那么按照梯度下降原理,当学习速率为μ时:
———————————————————————————————————————————
一万头草泥马的放风时间到了~~报告教官!我有槽要吐!
为了写这篇文章,我真是累死了....公式太多,上标下标拼得我眼花缭乱....好在还算有收获,原本的推导弄错了一个致命的地方,把δ的操作型定义搞错了,但我原本没发现,写这篇文章的时候又推了一遍才发现。原因在于第一次推导时,我是知道答案的,有点主观心证,从结果推测可能的推导过程,总有疏忽。写文章却要求要明确因果关系,按照逻辑顺序再捋了一遍,于是发现了漏洞。
---------------------------------------------------------------------------------------------------------------------------------------------
Index:
学习笔记1:Logistic回归分类器
学习笔记2:Bayes和Logistic实作比较
学习笔记3:Hierarchical Dirichlet Process vs Latent Dirichlet Allocation
学习笔记4:Linear Regression, Poisson Regression and Negative Binomial Regression
学习笔记5:又谈sigmoid
学习笔记6:神经网络-梯度下降-反向传播
【前情提要】
先复习一下Log Reg的损失函数(详见学习笔记1):
![]() |
损失函数 |
P为sigmoid函数,向量w为权重,x为每一层神经元的输入信号。
和Log Reg一样的,神经网络的优化过程就是将损失函数视为权重w的函数,不断变化w的值,直到损失函数其达到(全局或局部)最小值。而优化方法仍旧是梯度下降,顺着函数值下降最快的方向——梯度方向按某个学习速率α慢慢逼近最小值。
但神经网络比一般Log Reg麻烦的地方在于它有好多层,需要就对每一层上每一个神经元的权重w求其梯度,也就是损失函数对每个权重的偏导数:d(E(w))/d(w),但若直接求导,计算成本很高,这也导致过去神经网络并不受推崇。
-------------------------------------------------------------------------------------------------------------------------------------------
【反向传播的提出】
直到1986年,哈佛大学的David & Geoffrey & Ronald 在Nature上发表了一篇著名的论文,推荐了反向传播(back propagation)法,可以有效减少损失函数求导过程中的重复计算带来的资源浪费,因而可以大幅降低计算成本,反向传播的推广也帮助复兴了神经网络的相关研究。
说来也逗,反向传播的基本逻辑就是非常简单的、高中生都知道的链式法则,人们却等了几十年才发现它竟然可以被用于神经网络的优化。
-------------------------------------------------------------------------------------------------------------------------------------------
【误差反向传播】
下图是一个简单神经网络:
![]() |
Neuro Network Example |
反向传播是如何操作的呢?
首先,之所以称为反向,是因为它的计算方向是从输出端(右侧)向输入端(左侧)进行的,一层层计算损失函数对该层权重w的偏导数。
++第一步:倒数第一层++
![]() |
* a(4)是输出值、预测值,而y是观测值。
++第二步:倒数第二层++
由于导数的链式法则,我们知道:
![]() |
带入第一步公式后:
![]() |
*sigmoid函数的导数为:d(h(z))/d(z) = h(z) * [1-h(z)]
*a为激发函数Activation Function,在正向传播过程中都已经求得了,是已知常数。
++第三步:倒数第三层++
倒数第三层的神经元a2可以通过两条路径影响最终的输出值:
![]() |
a2的两条路径 |
因而需要把两条路径的偏导数相加,才是损失函数对a2的偏导,带入第二步的公式后:
![]() |
以此类推...
++总结++
所以BP过程可以用向量化的表达方式归纳为:
![]() |
-------------------------------------------------------------------------------------------------------------------------------------------
【从BP到梯度下降】
接着我们在反向传播的基础上,计算我们需要的梯度d(E)/d(w)。
![]() |
那么按照梯度下降原理,当学习速率为μ时:
![]() |
———————————————————————————————————————————
一万头草泥马的放风时间到了~~报告教官!我有槽要吐!
为了写这篇文章,我真是累死了....公式太多,上标下标拼得我眼花缭乱....好在还算有收获,原本的推导弄错了一个致命的地方,把δ的操作型定义搞错了,但我原本没发现,写这篇文章的时候又推了一遍才发现。原因在于第一次推导时,我是知道答案的,有点主观心证,从结果推测可能的推导过程,总有疏忽。写文章却要求要明确因果关系,按照逻辑顺序再捋了一遍,于是发现了漏洞。
---------------------------------------------------------------------------------------------------------------------------------------------
Index:
学习笔记1:Logistic回归分类器
学习笔记2:Bayes和Logistic实作比较
学习笔记3:Hierarchical Dirichlet Process vs Latent Dirichlet Allocation
学习笔记4:Linear Regression, Poisson Regression and Negative Binomial Regression
学习笔记5:又谈sigmoid
学习笔记6:神经网络-梯度下降-反向传播