一.卷积神经网络简介
卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一。CNN在CV和NLP领域都有很广泛的应用,相较于传统的算法,CNN避免了复杂的前期预处理过程(提取人工特征等),可以直接输入原始数据。CNN能够实现上述独特功能的原因是它使用了局部连接(Sparse Connectivity)和权值共享(Shared Weights)的方法。
CNN对BP神经网络的改进和升级,其底层依然和BP神经网络相似,采用神经元计算,并将神经元分为隐含层,输出层等。对于BP神经网络的相关内容,可以参考:NLP学习01–BP神经网络
下图是一个很经典的示例,CNN在图像处理中的应用,左边是全连接,右边是局部连接。
对于一个1000 × 1000的输入图像而言,如果下一个隐含层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^12个权值参数,如此数目巨大的参数几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 × 10的局部图像相连接,那么此时的权值参数数量为10 × 10 × 10^6 = 10^8,将直接减少4个数量级
尽管减少了几个数量级,但参数数量依然较多。而权值共享则可以继续减少参数。具体做法是,在局部连接中隐藏层的每一个神经元连接的是一个10 × 10的局部图像,因此有10 × 10个权值参数,将这10 × 10个权值参数共享给剩下的神经元,也就是说隐藏层中10^6个神经元的权值参数相同,那么此时不管隐藏层神经元的数目是多少,需要训练的参数就是这 10 × 10个权值参数,也就是卷积核(也称滤波器)的大小,如下图