深度学习笔记--多层感知器以及BP算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qy20115549/article/details/86499891

简介

多层感知器,是指包含1个或多个隐层的前馈神经网络。
在这里插入图片描述

前馈神经网络的特点:

  1. 第0层为输入层,最后一层为输出层,中间层为隐层。
  2. 整个网络无反馈,信号从输入层向输出层单向传播,整个网络为有向无环图。
  3. 激活函数多使用连续非线性函数,如logistic函数。 3.激活函数多使用连续非线性函数,如logistic函数。
  4. 可看成多层logistic回归模型的组合。
  5. 具有解决复杂模式分类的能力,解决简单感知不能解决的线性不可分问题。

其可以解决单层感知器不能解决异或的问题(线性不可分问题),可以用来作多元分类问题,例如手写数字识别。
在这里插入图片描述

反向传播算法

反向传播算法是在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
同时,李教授在YouTobe上也讲解了很多其他深度学习算法的课程,都非常不错,有兴趣的读者可以观看:https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ

学习神经网络,我们知道常用的梯度下降算法,首先需要定义损失函数。如下图所示,我们有多个样本,我们定义所有样本的总损失函数:
在这里插入图片描述
这里的话,只需要算一个样本的梯度Cr(θ)C^{r}\left ( \theta \right )就行了,将所有样本的进行加和就是所有的梯度了。
跟对某一个样本,来计算梯度Cr(θ)\triangledown C^{r}\left ( \theta \right )
针对网络中的某层的权重,计算偏微分,如下图所示:
在这里插入图片描述
在上图中,用到了微分计算中的链式法则。其中,上图中的损失函数对权重的偏微分,可以分成两部分。针对第一部分,比较容易求,求得的结果如下图所示:
在这里插入图片描述
针对第二部分,求起来还是很麻烦的,这里采用的是反向计算【反向传播】,从最后一层向隐层计算。如下图所示,核心包含两个部分,第一部分是怎么计算最后一层的偏微分,第二部分是怎么求找ll层与l+1l+1层偏微分的关系
在这里插入图片描述
下面来计算δL\delta ^{L},如下图所示:

在这里插入图片描述
在这里插入图片描述
计算**δL\delta ^{L}使用的也是链式法则,计算起来很简单。

下面依旧利用链式法则寻找δl\delta ^{l}δl+1\delta ^{l+1}的关系,如下图所示:
在这里插入图片描述
上图中的加和相当于是对l+1l+1层的所有节点进行计算,求出具体的值如下图所示:在这里插入图片描述
这样就能获得每个节点的偏微分,从下图便能够看出反向的概念,即只要知道下一层的值,便能计算该层的值。
在这里插入图片描述
转化成矩阵相乘的结果,便可以计算得到δl\delta ^{l}δl+1\delta ^{l+1}
在这里插入图片描述

参考

https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ
http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2015_2/Lecture/DNN backprop.ecm.mp4/index.html

没有更多推荐了,返回首页