这里省略了深层神经网络的前向传播和反向传播,内容和之前相似,不做过多描述。若今后需要,可以再补习。
一、为什么使用深层表示
解决问题时其实并不需要很大的神经网络,但是得有深度,得有比较多的隐藏层。这是为什么呢?如下图,人脸识别神经网络所示:
当输入一张脸部的照片,你可以把深度神经网络的第一层,当成一个特征探测器或者边缘探测器。在这个例子里,我会在第一个隐藏层中建大概20个隐藏单元。隐藏单元就是这些图里这些小方块(第一个隐藏层可视化图),举个例子,这个小方块(第一行第一列)就是一个隐藏单元,它会去找这张照片里“|”边缘的方向。那么这个隐藏单元(第四行第四列),可能是在找(“—”)水平向的边缘。你可以先把神经网络的第一层当作看图,然后去找这张照片的各个边缘。我们可以把照片里组成边缘的像素放在一起看,然后它可以把被探测到的边缘组合成面部的不同部分(第二隐藏层可视图)。比如说,可能有一个神经元会去找眼睛的部分,另外还有别的在找鼻子的部分,然后把这许多的边缘结合在一起,就可以开始检测人脸的不同部分。最后再把这些部分放在一起,比如鼻子眼睛下巴,就可以识别或是探测不同的人脸(第三隐藏层的可视化图)。
你可以直觉上把这种神经网络的前几层当作探测简单的函数,比如边缘,之后把它们跟后几层结合在一起,那么总体上就能学习更多复杂的函数。这些图的意义,我们在学习卷积神经网络的时候再深入了解。还有一个技术性的细节需要理解的是,边缘探测器其实相对来说都是针对照片中非常小块的面积。面部探测器就会针对于大一些的区域。但是主要的概念是,一般你会从比较小的细节入手,比如边缘,然后再一步步到更大更复杂的区域,比如一只眼睛或是一个鼻子,再把眼睛鼻子装一块组成更复杂的部分。
这种从简单到复杂的金字塔状表示方法或者组成方法,也可以应用在图像或者人脸识别以外的其他数据上。比如当你想要建一个语音识别系统的时候,需要解决的就是如何可视化语音,比如你输入一个音频片段,那么神经网络的第一层可能就会去先开始试着探测比较低层次的音频波形的一些特征,比如音调是变高了还是低了,分辨白噪音,咝咝咝的声音,或者音调,可以选择这些相对程度比较低的波形特征,然后把这些波形组合在一起就能去探测声音的基本单元。在语言学中有个概念叫做音位,比如说单词cat,c的发音,“嗑”就是一个音位,a的发音“啊”是个音位,t的发音“特”也是个音位,有了基本的声音单元以后,组合起来,你就能识别音频当中的单词,单词再组合起来就能识别词组,再到完整的句子。
所以深度神经网络的许多隐藏层中,较早的前几层能学习一些低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。同时我们所计算的之前的几层,也就是相对简单的输入函数,比如图像单元的边缘什么的。到网络中的深层时,你实际上就能做很多复杂的事,比如探测面部或是探测单词、短语或是句子。
1.1 深度神经网络的特点
深度神经网络一般隐藏层数比较多,但每一个隐藏层中的隐藏单元却不多,隐藏单元总数也不多。如果用一个浅层神经网络代替深度神经网络,要是想达到相同的效果,通常浅层神经网络的神经单元总数要呈指数级增长。因此深度神经网络表现更加优秀。
1.2 深度神经网络的前向反向传播
下图是深度神经网络的前向反向传播图。上边是前向传播,下边是反向传播,中间是缓存(cache)。
二、参数和超参数
在我们上述例子中,参数就是W和b(最小化损失函数,最后想要得到的数值)。超参数:1、学习率。2、梯度下降法循环的次数。3、隐藏层数目。4、每个隐藏层的隐藏单元数目。5、激活函数的选择。这些数字实际上控制了最后的参数W和b的值,所以它们被称作超参数。
2.1 如何寻找超参数的最优值
应用深度学习领域,在很大程度上是基于经验的过程。凭经验的过程通俗来说,就是不断调参,直到找到合适的数值。