<>简介
多层感知器,是指包含1个或多个隐层的前馈神经网络。
前馈神经网络的特点:
* 第0层为输入层,最后一层为输出层,中间层为隐层。
* 整个网络无反馈,信号从输入层向输出层单向传播,整个网络为有向无环图。
* 激活函数多使用连续非线性函数,如logistic函数。 3.激活函数多使用连续非线性函数,如logistic函数。
* 可看成多层logistic回归模型的组合。
* 具有解决复杂模式分类的能力,解决简单感知不能解决的线性不可分问题。
其可以解决单层感知器不能解决异或的问题(线性不可分问题),可以用来作多元分类问题,例如手写数字识别。
<>反向传播算法
反向传播算法是在Rumelhart 以及Hinton
在1986年在nature上发表出的一篇文章介绍。在该文章发表之前,神经网络又开始焕发青春(神经网络研究寒冬),原因是该算法可以很好的解决神经网络的模型参数训练问题。以下是该文章:
Rumelhart D E, Hinton G E, Williams R J. Learning representations by
back-propagating errors[J]. nature, 1986, 323(6088): 533.
以下是我个人在学习李宏毅(Hung-yi Lee)教授课程的内容,其课程讲的反向传播算法很生成,也很容易理解。以下是课程的地址:
http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLSD15_2.html
<http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLSD15_2.html>
同时,李教授在YouTobe上也讲解了很多其他深度学习算法的课程,都非常不错,有兴趣的读者可以观看:
https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ
<https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ>
学习神经网络,我们知道常用的梯度下降算法,首先需要定义损失函数。如下图所示,我们有多个样本,我们定义所有样本的总损失函数:
这里的话,只需要算一个样本的梯度Cr(θ)C^{r}\left ( \theta \right )Cr(θ)就行了,将所有样本的进行加和就是所有的梯度了。
跟对某一个样本,来计算梯度▽Cr(θ)\triangledown C^{r}\left ( \theta \right )▽Cr(θ)。
针对网络中的某层的权重,计算偏微分,如下图所示:
在上图中,用到了微分计算中的链式法则。其中,上图中的损失函数对权重的偏微分,可以分成两部分。针对第一部分,比较容易求,求得的结果如下图所示:
针对第二部分,求起来还是很麻烦的,这里采用的是反向计算【反向传播】,从最后一层向隐层计算。如下图所示,
核心包含两个部分,第一部分是怎么计算最后一层的偏微分,第二部分是怎么求找lll层与l+1l+1l+1层偏微分的关系。
下面来计算δL\delta ^{L}δL,如下图所示:
计算**δL\delta ^{L}δL使用的也是链式法则,计算起来很简单。
下面依旧利用链式法则寻找δl\delta ^{l}δl与δl+1\delta ^{l+1}δl+1的关系,如下图所示:
上图中的加和相当于是对l+1l+1l+1层的所有节点进行计算,求出具体的值如下图所示:
这样就能获得每个节点的偏微分,从下图便能够看出反向的概念,即只要知道下一层的值,便能计算该层的值。
转化成矩阵相乘的结果,便可以计算得到δl\delta ^{l}δl与δl+1\delta ^{l+1}δl+1。
<>参考
https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ
<https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ>
http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2015_2/Lecture/DNN
backprop.ecm.mp4/index.html
<http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2015_2/Lecture/DNN%20backprop.ecm.mp4/index.html>
热门工具 换一换