CNN的视觉感知 (Qer )
一、人脑的视觉感知
在生物神经网络中,学习源自于大脑中无数神经元之间的连接。大脑接触到新的刺激后,这些神经元之间的连接改变了配置。这些更改包括出现新的连接,加强现有连接和删除那些没有使用的连接。例如,重复给定任务的次数越多,与这个任务相关的神经连接就越强,最终我们会认为这个任务被学会了。
神经元使用记忆和感知里预先建立的表征来处理新的刺激。每个刺激都能让一组神经元在认知过程中会被激活,而这样的神经元有很多很多。
在生物视觉系统中,眼球就是一个成像系统,通过晶状体(可以理解成一个透镜组)成像在视网膜上(可以理解成一个光学传感器),而视网膜的感知信息,以生物信号的形式传递到大脑皮层,由大脑皮层进行重构与分析。
所谓重构,是因为我们所看到的的物质世界的样子,并不是人眼的生物感知的原始信息。我们可以感受到,眼球的晶状体可以高速调节生物适应信息,以处理不同远近不同光线不同色彩的信息,在接受不同信息的时候,人眼所处的状态是不同的,也就是说,信息的接受并不是一蹴而就的,而是对物质世界的一个离散信号采样,通过一个完整的采样周期(在人眼中表现的非常短)形成一个序列信号(生物信号)。通过传递到大脑皮层,大脑皮层重构出我们所“看到的”现实世界。而随着刺激的产生,学习的过程,我们逐渐拥有了针对不同特征“识别”的能力,就像我们知道“有眼,有鼻子,有嘴”是一张脸,而这些能力并不是与生俱来的,而是通过学习,突触的建立,删除,强化而最终形成的结果。
而一个神经元的结构包括细胞体,轴突,竖突结构图下图所示,轴突负责输出从神经核到其他神经元的信息,树突则负责从其他神经元接收信息,来自神经元的电化学信号聚集在细胞核中。如果电信号聚合超过突触阈值,就会形成电化学脉冲,沿轴突向下传播到其他神经元的树突。
根据此结构,我们得到了仿生的人工神经网络感知器结构同样如下图所示。
二、数字图像
数字图像的实质就是一个离散的二维信号。通过一个光学透镜系统与光学传感器进行物质世界的信号采样得到的,其中透镜组与传感器决定了图像的分辨率(像素尺寸大小),信号真实度(失真、噪声等)。
彩色图像通常是由多个通道构成的,每个通道有其独立的灰度值,通过不同通道的线性组合得到彩色图像。以RGB模型为例,一幅数字图像可以表示为 w∗h∗c 个灰度值。
传统意义上的图像处理,包括像素算子,灰度图像处理,图像增强与重构等,都可以看做一个滤波系统,通过一个输入的时域或频域信号,经过滤波器,得到一个系统的输出。
三、卷积
要将一幅图像的信息输入到神经网络中,是一个很复杂的事情。 最简单的方法,是把图像中的每一个像素看做一个孤立的点,用 w∗h∗c 个灰度值作为输入神经元。这样做一方面会使得网络规模变的很庞大,需要占用更多的内存和时间,另一方面,将一幅本来拥有连续的邻域信息的图像孤立处理像素点,会造成信息的丢失,丢失了局部特征信息,而仅仅保留了单点灰度值。
为了解决以上问题,考虑如何降低输入的维度,同时有效的表示邻域信息。一个方法就是获取多个图像的局部特征,通过局部特征的组合,来表示一幅图像的整体信息。
局部特征的提取,在广义上也是一个滤波器,通过卷积来实现可以达到很好的效果。
卷积核:一个固定大小的权值矩阵,用来对二维图像信号作卷积。通常我们需要多个卷积核,以丰富我们提取的特征。一个经过学习的卷积核,能够提取特定模式的特征。
卷积:二维信号的卷积就是卷积核权值矩阵与图像矩阵做数乘,得到的数字作为一点的输出,同时和一维信号一样作滑窗处理,从而遍历到图像的所有指定大小的局部信息。卷积操作会使得二维信号的大小改变(变小),然而在很多时候我们不希望改变图像的大小,所以对于边界的卷积,我们要在上下左右四个边界做填充,以使得卷积后的大小不变。
权值共享:图像的每个灰度值,都被多个卷积核所使用,在某种程度上,称该灰度值被一组卷积核滤波器所共同使用,成为权值共享。权值共享解决了把一幅图像的全像素信息输入的高维度信息量大的问题,通过卷积核的少量参数,达到了提取图像局部特征的目的。另一方面,权值共享解决了图像邻域信息不完整的问题。通过卷积操作提取的特征,相比于全像素的输入,更能代表局部特性。
卷积的大小与padding:由卷积的定义可以知道,一幅图像又一个卷积核操作后,其大小会受到改变,而在实际应用当中,通常不希望卷积操作改变结果图相对原始图像的大小。所以一般引入padding的概念,也就是填充。填充的方式有多种,零填充,相同填充等等,通过填充操作来对图像进行拓展保持大小不变。
多通道图像的卷积:以上的概念针对于灰度图像试用,而实际的输入图像一般为3通道(RGB、HSV色彩空间等),经过一层卷积的操作后,其通道数量更是改变到几十个。针对多通道的输入图像,卷积核的操作仅是简单的针对多通道输入,拓展成多个卷积窗,对每个通道的计算值求和得到卷积结果。对于一幅图像的输入,选择卷积核大小为 kw,kh ,则对应的卷积核参数量为: inputChannel∗kw∗kh∗outputChannel
四、激活和局部相应
人体的一个神经元,需要神经元细胞体接收到足够的刺激,才将接受到的刺激重新相应传递下去。在人工神经网络中:
激活函数:一个神经网络的表现能力是有限的,每一层都是感知机或卷积操作的线性组合,网络整体也是线性组合的,这样的网络对非线性函数的拟合能力欠佳,所以对于每一个神经元,引入激活函数。对于给定的输入,非线性的映射到新的输出空间。
根据以上描述,激活函数必须具有:非线性(用来使网络更好地拟合非线性函数),可微性(神经网络是基于梯度训练的),单调性(是函数保持凸特性,并且符合映射规律)。
常用的激活函数有: sigmoid函数 y(x)=11+e−x 其有良好的微分表达特性,tanh函数,Relu函数 y(x)=max{0,x} 等,适用于不同的情景。
局部响应归一化函数 LRN() , 由(Krizhevsky,2012)提出,依据生物学的侧抑制现象(激活的神经元会抑制相邻的神经元)提出,通过归一化达到抑制的作用。但在2015年论文very deep convolution networks for large-scale image recognition中提出 LRN 没有作用。
五、池化
在卷积操作与激活函数构成的卷积层后,通常会跟随一个池化层,池化层最主要的目的是降低维度,通过池化层,将卷积层的输出维度缩小。另一方面,也可以对图像的轻微震动有更好的鲁棒性。常用的池化有最大池化,平均池化等。
池化的过程:(以最大池化为例)对于大小为 w∗h 的池化操作, 选择图像分割的每个 w∗h 区域内最大的一个值最为输出。如下图所示 2∗2 大小的池化
六、全连接与 dropout 、 softmax
全连接层即多个感知机的组合。全连接层的输入为最后一层卷积池化层的输出,将其输出flatten为一个 w∗h 维度的向量,输入到全连接层。
全连接层的主要作用就是分类,通过卷积与池化提取的特征作为输入,分类输出到输出神经元。而最后的输出神经元通过 softmax 层函数,即可以得到每个神经元结果输出的概率,即分类的概率。
全连接层即是通过一个高维多项式来拟合非线性函数,对于每一层,有表达式 Y=wTX 传递。
dropout:由2012年论文ImageNet classification with deep convolutional提到,用来防止过拟合。dropout通过使某些全连接层的神经元不工作(以某一概率),来方式过拟合的发生(仅在训练阶段)。通过每次dropout,得到全连接网络的一个子网络,然后针对该子网络训练。使得训练时间增大, 但网络的泛化能力更强。
由此以上得到形如Alexnet的结构: