深度学习入门笔记(八):深层网络的原理

欢迎关注WX公众号:【程序员管小亮】

专栏——深度学习入门笔记

声明

1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。
2)本文仅供学术交流,非商用。因此每一部分具体的参考资料并无详细对应。若是某部分不当心侵犯了你们的利益,还望海涵,并联系博主删除。
3)博主才疏学浅,文中若有不当之处,请各位指出,共同进步,谢谢。
4)此属于初版本,如有错误,还需继续修正与增删。还望你们多多指点。你们都共享一点点,一块儿为祖国科研的推动添砖加瓦。html

深度学习入门笔记(八):深层网络的原理

一、深层网络组成

跟往常同样(深度学习入门笔记(二):神经网络基础深度学习入门笔记(六):浅层神经网络深度学习入门笔记(七):深层神经网络),其实整个过程你应该大概了解过了,主要的两个部分就是前向传播和反向传播。程序员

吴恩达老师手稿以下:
在这里插入图片描述
下面就来聊一聊深层网络的原理。web

二、为何使用深层表示?

深度学习为啥被你们吹捧到这个地步,实际上是由于咱们你们都知道,深度神经网络能解决好多问题,其实并不须要很大的神经网络,可是得有深度,得有比较多的隐藏层,这是为何呢?为何必须得深层而不是大呢?算法

举几个例子,来帮助你理解这个问题——为何深度神经网络会很好用。编程


首先,深度网络在计算什么?网络

其实早就在 深度学习入门笔记(二):神经网络基础 中咱们就讲过了这个问题,这一次换个例子来看。
在这里插入图片描述
想象一下,若是你在建一个 人脸识别或是人脸检测系统,深度神经网络所作的事,或者你须要它作的事就是,当输入一张脸部的照片,能够把深度神经网络的第一层,当成一个特征探测器或者边缘探测器,来提取特征。在这个例子里,建一个大概有20个隐藏单元的深度神经网络,那么咱们如何针对这张输入的人脸图像进行计算?app

隐藏单元其实就是这些图里的小方块(第一张大图),举个例子,这个小方块(第一行第一列)就是一个隐藏单元,它会去找这张照片里 (/) 边缘的方向;那么这个隐藏单元(第四行第四列),多是在找()水平向的边缘。框架

为何小单元是这么表示的?机器学习

  • 先把神经网络的第一层看成看图,而后去找这张照片的各个边缘。
  • 能够把照片里组成边缘的像素们放在一块儿看,而后它能够把被探测到的边缘组合成面部的不一样部分(第二张大图)。好比说,可能有一个神经元会去找眼睛的部分,另外还有别的在找鼻子的部分,而后把这许多的边缘结合在一块儿,就能够开始检测人脸的不一样部分。
  • 最后再把这些部分放在一块儿,好比鼻子眼睛下巴,就能够识别或是探测不一样的人脸(第三张大图)。

是否是很神奇?其实到目前为止,应该尚未比较准确的理论来阐述这些个不一样维度的特征图所表明的真实含义,你能够把它们当成是你炼丹过程当中,丹药的不一样状态,多是液态、固液混合、固态等等。。。svg


还有一个技术性的细节须要理解的是,边缘探测器其实相对来讲都是针对照片中很是小块的面积。就像这块(第一行第一列),都是很小的区域。面部探测器就会针对于大一些的区域,可是主要的概念是,通常会从比较小的细节入手,好比边缘,而后再一步步到更大更复杂的区域,好比一只眼睛或是一个鼻子,再把眼睛鼻子装一块组成更复杂的部分。这也是人类观察的特色不是吗?

这种从简单到复杂的金字塔状表示方法或者组成方法,也能够应用在图像或者人脸识别之外的其余数据上。

好比当你想要建一个 语音识别系统 的时候,须要解决的就是如何可视化语音,假设输入了一个音频片断,那么神经网络的第一层可能就会去先开始试着探测比较低层次的音频波形的一些特征,好比音调是变高了仍是低了,分辨白噪音,咝咝咝的声音,或者音调,能够选择这些相对程度比较低的波形特征,而后把这些波形组合在一块儿就能去探测声音的基本单元。在语言学中有个概念叫作 音位,好比说单词ca,c的发音,“嗑”就是一个音位,a的发音“啊”是个音位,t的发音“特”也是个音位,有了基本的声音单元之后,组合起来,你就能识别音频当中的单词,单词再组合起来就能识别词组,再到完整的句子。
在这里插入图片描述
因此深度神经网络的这许多隐藏层中:较早的前几层能学习一些 低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。好比你录在音频里的单词、词组或是句子,而后就能运行语音识别了。同时计算的以前的几层,也就是相对简单的输入函数,好比图像单元的边缘什么的。到网络中的深层时,实际上就能作不少复杂的事,好比探测面部或是探测单词、短语或是句子。(这也是目前特别火的一个方向,你应该据说过科大讯飞,著名的输入法语音输入和识别)

有些人喜欢把深度神经网络和人类大脑作类比,这些神经科学家以为人的大脑也是先探测简单的东西,好比眼睛看获得的边缘,而后组合起来才能探测复杂的物体,好比脸。这种深度学习和人类大脑的比较,有时候比较危险。可是不能否认的是,咱们对大脑运做机制的认识颇有价值,有可能大脑就是先从简单的东西,好比边缘着手,再组合成一个完整的复杂物体,这类简单到复杂的过程,一样也是其余一些深度学习的灵感来源。


另一个,关于神经网络为什么有效的理论,来源于电路理论。

根据不一样的基本逻辑门,譬如与门、或门、非门等等。在非正式的状况下,这些函数均可以用相对较小,但很深的神经网络来计算,小的意思是隐藏单元的数量相对比较小,可是若是用浅一些的神经网络计算一样的函数,也就是说不用不少隐藏层时,你会须要成指数增加的单元数量才能达到一样的计算结果。
在这里插入图片描述
有同窗可能看的比较蒙逼,简单地说,就是若是层数少就须要更多的神经元;若是层数多则能够更少的神经元。

再来举个例子,用没那么正式的语言介绍这个概念。

假设你想要对输入特征计算 异或(这个应该都知道是什么吧,数电),能够算:

x 1 X O R x 2 X O R x 3 X O R x n x_{1} XOR x_{2} XOR x_{3} XOR ……x_{n}

假设如今一共有 n n 或者 n x n_{x} 个特征,若是画一个 异或 的树图,先要计算 x 1 x_{1} x 2 x_{2} 的异或,而后是 x 3 x_{3} x 4 x_{4} 。技术上来讲,若是只用或门,还有非门的话,你可能会须要几层才能计算 异或 函数,可是用相对小的电路,应该就能够计算 异或 了。而后继续建这样的一个 异或 树图(上图左),那么最后会获得这样的电路来输出结果 y y ,也就是输入特征的 异或。要计算 异或 关系,这种树图对应网络的深度应该是 O ( l o g ( n ) ) O(log(n)) ,那么节点的数量和电路部件,或是门的数量并不会很大,你也不须要太多门去计算 异或

可是 若是你不能使用多隐层的神经网络的话,在这个例子中隐层数为 O ( l o g ( n ) ) O(log(n)) ,好比被迫只能用单隐藏层来计算的话,这里所有都指向从这些隐藏单元到后面这里,再输出 y y ,那么要计算 异或 关系函数,就须要这一隐层(上图右方框部分)的单元数呈指数增加才行,由于本质上来讲,须要列举耗尽 2 n 2^{n} 种可能的配置,或是 2 n 2^{n} 种输入比特的配置。异或 运算的最终结果是1或0,那么最终就会须要一个隐藏层,其中单元数目随输入比特指数上升。精确的说应该是 2 n 1 2^{n-1} 个隐藏单元数,也就是 O ( 2 n ) O(2^{n}) ,而 O ( 2 n ) > O ( l o g ( n ) ) O(2^{n}) > O(log(n)) 。到这里了,你应该能意识到有不少数学函数用深度网络计算比浅网络要容易得多。

若是你学过这种电路理论的话,那么这个解对你来讲就比较容易了;若是没有的话,也不要紧,这种理论对训练直觉思惟没那么有用,只是常常提到的用来解释为何须要更深层的网络的方法之一。

到这里了,咱们来闲聊几句,算是吐槽或者八卦之类的。说实话,讲道理,我的认为 深度学习 这个名字真的挺唬人的,不知道大家是什么感受,反正我第一次听到这个名字,就以为要多高大上就多高大上,要多牛就多牛,这名字起的太深奥了,就像一个尖端科技同样,震慑住了我。。。

其实这些概念之前都统称为 有不少隐藏层的神经网络,我记得以前知乎上还有过关于多层神经网络和深度学习的讨论,https://www.zhihu.com/question/26017374/answer/31868340,有兴趣的小伙伴能够看一下,其中这个回答让我印象深入。
在这里插入图片描述
其实若是只是使用的话,这其中的区别是无所谓的,没必要太过于担忧,可是若是想研究的话,建议你仍是研究一下,我更偏向于 深度学习是一种学习方式,是有别于人工网络学习的让网络本身挑选特征并学习的一种学习方式;而多层神经网络则是一种网络结构。 固然这只是个人我的见解,若是你有什么不一样的观点,能够评论一下。

深度学习这个词流传出去之后,由于自身是神经网络的从新包装或是多隐藏层神经网络的从新包装,激发了大众的想象力。深度网络效果确实不错,然而过拟合起来也是让人头疼不已的。但仍是有不少人会按照字面意思钻牛角尖,非要用不少隐层。尤为是近几年,随着网络结构的复杂化,有一些人会趋向于使用很是很是深邃的神经网络,好比好几打的层数,某些问题中只有这种网络才是最佳模型,VGG 论文中证实了这一点。可是这其中也是存在问题的,因此有了 ResNet,即残差网络,用残差结构解决网络深度带来的 退火,这些个网络的经典结构仍是建议看一看,在 大话卷积神经网络CNN(干货满满) 我给出了论文资源,去找一下吧,这里就不在多说了。

三、深度学习和大脑的关联性

深度学习和大脑有什么关联性吗?

这应该是不少人一直以来的疑问,我只能说有,可是关联不大。

那么为何会说深度学习和大脑相关呢?

当你在实现一个神经网络的时候,那些公式是你在作的东西,你会作前向传播、反向传播、梯度降低法,其实很难表述这些公式具体作了什么,深度学习像大脑这样的类比实际上是过分简化了大脑具体在作什么,但由于这种形式很简洁,也能让普通人更愿意公开讨论,也方便新闻报道而且吸引大众眼球,但这个类比是很是不许确的!!!

一个神经网络的逻辑单元能够当作是对一个生物神经元的过分简化,但迄今为止连神经科学家都很难解释究竟一个神经元能作什么,它多是极其复杂的;它的一些功能可能真的相似 logistic 回归的运算,但单个神经元到底在作什么目前尚未人可以真正能够解释。

深度学习的确是个很好的工具,用来学习各类很灵活很复杂的函数,学习到从 x x y y 的映射,在监督学习中学到输入到输出的映射。记得不久以前,还有个一我的评论怼了我一下,说深度学习不过就是一个映射函数罢了,其实这么说,不能说不对,只不过不许确而已,只是由于如今的过分捧杀(我称之为捧杀),让它展现在全部人面前,而其实它的理论尚未那么彻底,天然有不少问题。
在这里插入图片描述
但这个类比仍是很粗略的,上图中,左下边的是一个感知机,右边的是一个大脑中的神经元,图中这个生物神经元,也是你大脑中的一个细胞,它能接受来自其余神经元的电信号,好比 x 1 , x 2 , x 3 x_1,x_2,x_3 ,或可能来自于其余神经元 a 1 , a 2 , a 3 a_1,a_2,a_3 。其中有一个简单的临界计算值,若是这个神经元忽然激发了,它会让电脉冲沿着这条长长的轴突,或者说一条导线传到另外一个神经元。

这是一个过分简化的对比,把一个神经网络的逻辑单元和右边的生物神经元对比。至今为止其实连神经科学家们都很难解释,究竟一个神经元能作什么?一个小小的神经元其实倒是极其复杂的,以致于没法在神经科学的角度描述清楚,它的一些功能,可能真的是相似于一种运算,但单个神经元到底在作什么,目前尚未人可以真正解释,大脑中的神经元是怎么学习的,至今这还是一个谜之过程。到底大脑是用相似于后向传播或是梯度降低的算法,或者人类大脑的学习过程用的是彻底不一样的原理。

因此虽然深度学习的确是个很好的工具,能学习到各类很灵活很复杂的函数来学习到从 x x y y 的映射。在监督学习中,学到输入到输出的映射,但这种和人类大脑的类比,在这个领域的早期也许值得一提。但如今这种类比已经逐渐过期了。这就是神经网络和大脑的关系,我相信在计算机视觉,或其余的学科都曾受人类大脑启发,还有其余深度学习的领域也曾受人类大脑启发,可是这不表明着是同样的,要知道其中的区别!!!

补充

大话卷积神经网络CNN(干货满满) 中咱们提到过【人类视觉原理】,这就是一种启发,或者说最开始是类比于,可是后来发现并非同样的。
在这里插入图片描述
在这里插入图片描述

推荐阅读

参考文章

  • 吴恩达——《神经网络和深度学习》视频课程