最近复习了一下基础知识,看到MLP的结构,关于隐藏层和神经元有了新的一些理解。
隐藏层的意义
要说明隐藏层的意义,需要从两个方面理解,一个是单个隐藏层的意义,一个是多层隐藏层的意义。
单个隐藏层的意义
隐藏层的意义就是把输入数据的特征,抽象到另一个维度空间,来展现其更抽象化的特征,这些特征能更好的进行线性划分。
举个栗子,MNIST分类。
输出图片经过隐藏层加工, 变成另一种特征代表 (3个神经元输出3个特征), 将这3个特征可视化出来。就有了下面这张图, 我们发现中间的隐藏层对于"1"的图片数据有了清晰的认识,能将"1"的特征区分开来。
隐藏层内的维度空间
多个隐藏层的意义
多个隐藏层其实是对输入特征多层次的抽象,最终的目的就是为了更好的线性划分不同类型的数据(隐藏层的作用)。
怎么理解这句话呢,举个有趣的例子,如下图所示。
在这里插入图片描述
我们的输入特征是:身高、体重、胸围、腿长、脸长等等一些外貌特征,输出是三个类:帅气如彭于晏,帅气如我,路人。
那么隐藏层H1中,身高体重腿长这些特征,在H1中表达的特征就是身材匀称程度,胸围,腰围,臀围这些可能表达的特征是身材如何,脸长和其他的一些长表达的特征就是五官协调程度。
那么把这些特征,再输入到H2中,H2中的神经元可能就是在划分帅气程度,身材好坏了,然后根据这些结果,分出了三个类。
很遗憾,帅气程度略输彭于晏一筹。
那么,是不是隐藏层约多就越好呢,可以特征划分的更清楚啊?
理论上是这样的,但实际这样会带来两个问题
- 层数越多参数会爆炸式增多
- 到了一定层数,再往深了加隐藏层,分类效果的增强会越来越不明显。上面那个例子,两层足以划分人是有多帅,再加几层是要得到什么特征呢?这些特征对划分没有什么提升了。
神经元的意义
现在终于彻底明白为什么西瓜书、花书讲神经网络之前要讲logistic regression了。就是所谓的感知器的意义。
我现在把一个神经元(感知器)的作用理解成为一种线性划分方式。
一个决策边界,一个神经元,就是线性划分,多个神经元,就是多个线性划分,而多个线性划分就是不断在逼近决策边界。可以把这个过程想象成积分过程。
一个决策边界就是又多个线性划分组成的。
那么如果神经元数量很多很多,这就导致会有很多个线性划分,决策边界就越扭曲,基本上就是过拟合了。
换一个角度来说神经元,把它理解为学习到一种东西的物体,如果这种物体越多,学到的东西就越来越像样本,也就是过拟合。
对于其他深度学习的网络来说,CNN,RNN其实是一个道理,filter层不也是找到更抽象的特征吗。LSTM增加forget gate,就不是为了让神经元不要学得太像而得到的。
so,温故而知新,可以吹逼矣。
网友评论