我们知道一个并不大(神经元数量不多)但是够深(隐藏层数量多)的神经网络可以解决非常多现实中的问题,那么为什么这样就可以达到更好的效果呢?
对于人脸识别这个例子(之后的卷积神经网络会细讲),来分析以下神经网络的每一层在做什么?
- 第一层:边缘探测器,从比较细微的那些细节入手,比如边缘
- 第二层:扩大到更复杂一些的区域,比如 👀 👂 等
- 第三层:再把 👀 👂 这样的区域组合成更复杂的整体,得到人脸
总的来说,这是金字塔型从易到难的表示方法,这种思想可以应用到图像识别、声音识别等多个领域。
如果是声音的识别,第一层会探测低层次的音频波形特征(比如音调是变高了还是变低了,分辨白噪音的“嘶嘶嘶”等),然后把这些波形组合在一起,于是就可以探测声音的基本单元。在语言学中有个概念叫做音位(比如cat的第一个发音c,音标就我就不标上了,意会一下c的发音“咳”,对吧),于是识别了cat中“c”“a”“t”三个音位后,组合识别音频中的单词,再组合识别词组,最终到完整的句式。
电路理论
还有一个关于神经网络为何有效的理论,就是电路理论。
在计算数字逻辑运算时,可以采用上图中左右两种方法
- 左边的方法两两组合运算,再进一步组合,最终得到输出值。将每一次的运算看作一层网络,那么这种方法实际上是多隐藏层的结构,复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)
- 右边的方法仅仅依靠一个隐藏层,直接计算得到最终的输出值。因为仅仅只有一个隐藏层,所以神经元的数量会呈指数增加,复杂度 O ( 2 n ) O(2^n) O(2n)
- 对比可见,借助多隐藏层的网络结构有更高的效率,这也是为什么选择深层神经网络表示原因了