卷积神经网络简介

2021-03-30 15:07:09 浏览数 (1)

前面介绍光学神经网络进展的笔记里(基于频率梳的光学神经网络),多次提到卷积神经网络(convolutional neural network, 以下简称CNN)。这里对CNN做一个更详细的介绍。

先解释下什么是卷积(convolution)。对于光学背景的朋友,卷积的概念肯定不陌生。在傅里叶光学中,输出面的频谱响应是输入面的频谱与传递函数的乘积,对应到实空间上,即为两者的卷积(函数卷积的傅里叶变换,等于函数傅里叶变换的乘积),如下式所示,

顾名思义,卷积=翻卷 积分,先把函数h(x,y)对于x',y'翻卷过去,然后再与f(x,y)进行积分。上式可以写成求和的形式,

乘积求和的形式与矩阵乘法非常相似。

对于计算机来说,一副图片就是一个大的矩阵,每个矩阵元对应单个像素点的信息。对于一张200*200的图片,包含RGB三种颜色通道,如果采用多层感知器的方式,将会有12万个神经元,通过训练得到每个神经元之间的weight,变得非常困难。卷积神经网络则巧妙地解决了这个问题,使用一个小的特征矩阵,与原先的矩阵做运算,矩阵规模得以降低。下图中,通过一个小矩阵的作用,原先8x8的矩阵变换为6x6,

(图片来自https://towardsdatascience.com/simple-introduction-to-convolutional-neural-networks-cdf8d3077bac)

上述的小矩阵称为卷积核,它的作用类似滤波器,提取出图片的特征信息,如下图所示,两个3x3的卷积核分别探测图案中的边界和对图片进行锐化。

(图片来自https://towardsdatascience.com/simple-introduction-to-convolutional-neural-networks-cdf8d3077bac)

下图是典型的卷积神经网络的流程图,

28x28的图片,经过第一组卷积核5x5矩阵的作用(多个卷积核,提取图片的不同特征),得到多个24x24的矩阵,进而经过池化层的作用,得到12x12的矩阵,接着再进行一次卷积核的作用,得到8x8的矩阵,再次经过池化层,得到4x4的矩阵,将这一矩阵展开为一个列矢量,得到一个全连接层,进而判断出所属的分类。

所谓的池化层(pooling layer), 对特征矩阵进行一定的作用,使得其维度大幅降低,例如max-pooling,即取一定区域内的最大特征值。这是因为在图片中,相邻像素点的信息是有一定冗余的,所以可以进特征矩阵进行进一步压缩。池化层更加有效地降低数据的维度。

全连接层是CNN网络的最后一层,将原先的特征矩阵转换为一维列向量,并由此判断出图片所属的类别。

以上是对卷积神经网络的简单介绍, 认识比较肤浅。核心思想是采用较小的卷积核矩阵,提取图片的特征信息(feature map),将较大数据量的图片转换为较小维度的矩阵进行处理,并有效保留原图片的特征信息。卷积神经网络一定程度模拟了人类的视觉皮层的层次结构。卷积神经网络广泛用于计算机视觉中,包括图片的识别、分类、搜索等。

文章中如果有任何错误和不严谨之处,还望大家不吝指出,欢迎大家留言讨论。也欢迎大家向我提问,小豆芽会尽自己的能力给出解释。另外,微信讨论3群还有空位,有需要的朋友可以加入进来讨论硅光技术。

0 人点赞