理解神经网络
- 计算机中的人工神经网络像是一个黑盒,如果你丢一个东西进这个黑盒, 他会给你丢出来另一个东西。具体在黑盒里偷偷摸摸做了什么,我们不得而知。但丢出来的东西和丢进去的东西有着某些联系。这是为什么呢? 这个黑盒里究竟又发生了什么呢?一般来说,神经网络是一连串神经层所组成的把输入进行加工再输出的系统。中间的加工过程就是我们所谓的黑盒。想把黑盒打开,就是把神经网络给拆开。按正常的逻辑, 我们能将神经网络分成三部分,分别为输入端、黑盒、输出端。
- 输入端是我们能理解一个物体比如一个宝宝, 输出端也是一个我们能理解的物体比如一个奶瓶。对于神经网络,传统的理解就是,中间的这两层神经层在对输入信息进行加工,好让自己的输出信息和奶瓶吻合。但是我们如果换一个角度来想想。
3. 此时,我们将左边的红线移动一下。现在的输入端增加了一层,原本我们认定为黑盒的一部分被照亮,变成了一个已知部分。我们将最左边两层的神经层共同看成输入端,你可能会问: “可是这时的输入端不再是我们知道的宝宝了呀, 为什么可以这样看?”它的确已经不是我们认识的宝宝,但是宝宝这个人类定义的形象通过了一层神经网络加工,变成了另外一种宝宝的形象,可能这种形象我们用肉眼看起来并不像宝宝,不过计算机却能理解,这是它所能识别的宝宝形象。
4. 在专业术语中,我们将宝宝当做特征(features),将神经网络第一层加工后的宝宝叫做代表特征(feature representation)。如果再次移动红线, 我们的黑盒就消失了,这时原本在黑盒里的所有神经层都被照亮。原本的代表特征再次被加工,变成了另一种代表特征,同样,再次加工形成的代表特征通常只有计算机自己看得懂能够理解。所以, 与其说黑盒是在加工处理, 还不如说是在将一种代表特征转换成另一种代表特征,一次次特征之间的转换, 也就是一次次的更有深度的理解。
5. 比如神经网络如果接收人类手写数字的图片。然后我们将这个神经网络的输出层给拆掉,只留下前三层,那第3层输出的信息就是我们这些数字的3个最重要的代表特征,换句话说,就是用3个信息来代表整张手写数字图片的所有像素点。我们如果把这3个信息展示出来,我们就能很清楚的看到,计算机是如何用3个点来代表不同的数字内容,比如神经网络认为 1 和 0 是完全不同的,所以他们应该被放在空间里不同的地方。输出层就更好理解了。
6. 有了用3个点表示的数字代表特征,我们整理后将落在相同区域的数字分为一类,如果落在了那些1所在的区域,我们就认定张手写图片就是1,如果是2的区域,就认定为2。这就是神经网络的黑盒并不黑的原因,只是因为有时候代表特征太多了,我们人类没有办法看懂他们代表的是什么,然而计算机却能看清楚它所学到的规律,所以我们才觉得神经网络就是个黑盒。这种代表特征的理解方式其实非常有用, 以至于人们拿着它来研究更高级的神经网络玩法。