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

简介

多层感知器,是指包含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

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

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

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

  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
《Python学习笔记》是由皮大庆编写的一本关于Python语言学习的教材。在这本书中,作者详细介绍了Python语言的基础知识、语法规则以及常用的编程技巧。 首先,作者简要介绍了Python语言的特点和优势。他提到,Python是一种易于学习和使用的编程语言,受到了广大程序员的喜爱。Python具有简洁、清晰的语法结构,使得代码可读性极高,同时也提供了丰富的库和模块,能够快速实现各种功能。 接着,作者详细讲解了Python的基本语法。他从变量、数据类型、运算符等基础知识开始,逐步介绍了条件语句、循环控制、函数、模块等高级概念。同时,作者通过大量的示例代码和实践案例,帮助读者加深对Python编程的理解和应用。 在书中,作者还特别强调了编写规范和良好的编程习惯。他从命名规范、注释风格、代码缩进等方面指导读者如何写出清晰、可读性强的Python代码。作者认为,良好的编程习惯对于提高代码质量和提高工作效率非常重要。 此外,作者还介绍了Python的常用库和模块。他提到了一些常用的库,如Numpy、Pandas、Matplotlib等。这些库在数据处理、科学计算、可视化等领域有广泛的应用,帮助读者更好地解决实际问题。 总的来说,《Python学习笔记》是一本非常实用和全面的Python学习教材。通过学习这本书,读者可以系统地学习和掌握Python编程的基础知识和高级应用技巧,为以后的编程学习和工作打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值