卷积神经网络主要有4个操作:1.卷积; 2.非线性转换(激活函数); 3.池化 ;4.完全连接层
卷积:目的是从输入图像中提取特征,通过使用一定大小的小方块在图像中移动,提取一定量的特征,卷积保留了像素之间的空间关系。
具体操作:
考虑用一个55的卷积矩阵,将此卷积矩阵套入输入图像的像素矩阵中,被套中的部分子矩阵与卷积矩阵进行对应元素的乘积运算,再将得到的乘积相加作为特征矩阵的一个元素。卷积矩阵每次移动1或数个像素的步幅,得到所有数值组成特征矩阵。该卷积矩阵被称为过滤器。
在一步骤中,会使用多个不同的过滤器来提取多种不同的特征,会生成多个不同的特征矩阵(又称特征映射),这一性质被称为深度。
零填充:将输入矩阵的边界用零来填充,如此可允许我们控制特征矩阵的尺寸(添加零填充为宽卷积,否则为窄卷积)
上图未考虑零填充,因此特征矩阵相较于原输入矩阵的尺寸较小。
倘若在行与列的首尾各添加2个零,原输入矩阵变为3232,特征矩阵则变为2828,与原图像的像素矩阵大小一致。
一个过滤器提取一种特征,因此该过滤器对于整张图像都是一视同仁,权重(即元素数值)一致的,偏置也相同。换言之,用一个55的过滤器提取图像特征这一过程,会用5*5+1个参数。
非线性变化(激活函数):应用于特征矩阵的每一个像素,当该数值超过一定阈值时才允以保留,意义在于这一块区域的特征强度如果没有达到一定的标准,就输出0,表明这种特征提取方式不能在该块区域提取到特征,或者说这块区域的这种特征很弱。由于输出0时,激活函数梯度几乎都为0,所以在特征很弱的区域,梯度几乎不下降,也就是说,和该特征无关的区域不会影响到该特征提取方式的训练。常用的激活函数是ReLu函数。
池化:降低每个特征矩阵的维度,并保留最重要的信息。方式有最大值、平均值、求积等。
例如最大池化:
全连接层:将池化后的所有矩阵的所有参数作为输入,代入线性方程,得出输出。在上述的卷积-池化操作中,我们用多个过滤器提取了一张图像的多个特征信息并保留强信息,现在将这些所有信息整合起来拼凑得出结果。
卷积神经网络的训练过程:
1.用随机值初始化所有过滤器的权重
2.将训练图像作为输入,经过卷积、RELu,池化操作,在完全连接层中前向传播,得到每个类的输出概率
3.计算输出层的总误差
4.使用反向传播计算网络中所有权重的误差梯度,使用梯度下降更新所有权重,以最小化输出误差
5.对训练集中的所有图像重复步骤2-4,直到误差减小至一定精度