第三章 神经网络萃取隐蔽相关性(第5页)
但是如果我们从一维扩展到二维,就有可能从一个“局部最小值”
中逃逸。
在图3.9中,假设函数1是一个沿X轴切下去的一维函数,A点就是函数1的一个“局部最小值”
。
如果一个小珠子只能沿着X轴滚动,就会陷在A点出不来。
但在图中的二维曲面上,小珠子只要沿着Y轴方向挪动一点,就到了C点,而从这个C点出发就能到达整个曲面的“全局最小值”
B点。
当误差函数的维数增加时,这种从“局部最小值”
逃逸的机会就会增大。
我们无法画出三维以上的图像,但我们可以想象每个“局部最小值”
附近都有许多“虫洞”
可以方便逃逸。
维数越高,这种虫洞就越密集,就越不容易陷在一个“局部最小值”
里。
图3.9从一维空间扩展到二维空间,误差函数找到“全局最小值”
的概率增大
如果图3.9不够直观,我们可以用一个数字阵列来表达。
首先假设地形是一个一维函数,每个数字表示它的海拔高度。
在图3.10中,有两个最小的海拔高度0和5,但是无论从哪一边开始下山,每走一步的话,都会被困在高度5这个“局部最小值”
里出不来,无法走到“绝对最小值”
0。
图3.10地形函数的数字阵列
但是,如果将这个地形叠加为二维函数,仍然用数字表示海拔高度,我们可以看到,无论从哪一边开始下山,每走一步,当在一维函数中走到“局部最小值”
5以后,在另外一个维度的函数中,则可以继续走到更低的海拔,直到到达“全局最小值”
0。
同样地,维度越多,在某一个维度到达“局部最小值”
后,可以选择的其他维度和路径就越多,因此被困在“局部最小值”
的概率就越低。
(见图3.11)
图3.11将地形叠加为二维函数
深度学习——化繁为简
为什么深度学习有许多层神经元?这是因为世界上许多信息和知识是可以通过分层表达的。
例如人脸是很复杂的一幅图像,但人脸可以先分解成五官,五官的复杂程度就比人脸低了,五官又可以进一步分解为线条。
深度学习就是用一层神经元去识别一个层级的信息。
在图3.12中,左图是第一层网络来识别人脸上的线条,中间的图是第二层网络在识别出线条的基础上识别出器官,右图是第三层网络在识别出器官的基础上识别出长相。
同样一个时间序列的信息,例如语音也可以分解为递进的层级:句子、单词、音节等。
分层的最大好处是大大降低计算量,把原来的N次计算变为m×logN次计算,这里m是层数。
除了将要处理的信息表达为层级以外,另外一种降低计算量的方法是将“一大块”
信息分解为许多小块来处理。
例如想要在一张像素很大的图片中识别出一个小三角形,我们只需拿着这个小三角形的模板在大图中滑动比较即可。
本章未完,点击下一页继续阅读