大家好啊,我是董董灿。
如果你是搞AI算法的同学,相信你在很多地方都见过全连接层。
无论是处理图片的卷积神经网络(CNN),还是处理文本的自然语言处理(NLP)网络,在网络的结尾做分类的时候,总是会出现一个全连接层。
那么到底什么是全连接层,这一层在神经网络中有什么作用,以及它和矩阵乘法、卷积运算有什么关系呢?
在阅读之前,建议先了解一个预备知识。
卷积也好,矩阵乘法也好,其目的都是为了完成神经网络中的特征融合,这是其本质。
神经网络的运算,也是为了更好的完成输入数据的特征提取和融合,从而识别一张图片、一个句子。
就好像我们记住一个人一样,记住的不是他的全部,而是他的特征。
1、什么是全连接层
全连接层(Fully Connected Layer),有时也被叫作密集层(Dense Layer)。
之所以这么叫,是因为这一层的每个神经元都与前一层的每个神经元连接在一起,形成了一个全连接的网络结构,如下所示,每个笑脸都与前一层的所有笑脸相连。
这种全连接的方式与卷积和池化不同,卷积和池化是通过固定大小的卷积核或池化窗口在输入上移动,以便有效地捕捉局部特征。
因此,"全连接"强调了这一层中的神经元与前一层中的所有神经元之间的连接,与卷积和池化层的局部连接方式形成对比。
2、全连接有什么作用
既然是所有神经元的全部连接,说明它可以捕获到前面所有的特征,经过运算就可以更加有效、完备的融合所有特征。
使得神经网络最终看到的特征是个全局特征(一只猫),而不是局部特征(眼睛或者鼻子)。
有一个蚂蚁开会的比喻来比喻全连接层,比较形象。
假设你是一只蚂蚁,你的任务是找小面包。这时候你的视野比较窄,只能看到很小一片区域,也就只能看到一个大面包的部分。
当你找到一片面包之后,你根本不知道你找到的是不是全部的面包,所以你们所有的蚂蚁开了个会,互相把自己找到的面包的信息分享出来,通过开会分享,最终你们确认,哦,你们找到了一个大面包。
上面说的蚂蚁开会的过程,就是全连接,这也是为什么,全连接需要把所有的节点都连接起来,尽可能的完成所有节点的信息共享。
说到这,大概就能理解全连接的作用了吧,那就是可以完成全部特征的融合。
3、全连接和卷积以及矩阵乘的关系
单纯从数学运算上来看,全连接就是矩阵运算,关于矩阵运算的本质,这里说的更清晰一些:5分钟搞懂矩阵乘法的本质。
全连接和卷积的区别,除了上面说的前者是全局视野,卷积是局部视野之外,还有一个很重要的联系,那就是如果卷积的卷积核变为1x1,那么相当于卷积核的每一个像素都与输入图片的每一个像素相关联,此时1x1的卷积,也就变成了矩阵乘了。
全连接一般放在一个神经网络的最后,用来做分类。
假设神经网络前面很多层学到了1000个特征,那么最后一层全连接就可以把这1000个特征进行全部融合,融合之后就可以知道这张图片是一只狗,或者这个句子说的是“我爱学习”了。