《基于卷积神经网络的个性化推荐算法研究》前期准备2
1.2卷积神经网络的介绍
卷积神经网络主要是对输入的数据进行特征提取和分类,输入的数据可以是图片、文本,音频等,具体的分类过程体现在输入层(Input Layer)、卷积层(Covn Layer)、池化层(Pooling Layer)和全连接层(FC Layer)中。
1.2.1图片卷积神经网络
1.卷积层
卷积层的作用是使用卷积核对输入的数据进行特征提取,具体过程可以借鉴图1.4,从左上角开始,卷积核按照设置好的步长从左到右的顺序依次滑动,对应着数据的3*3的矩阵范围,然后相乘再相加得出一个值。按照这种顺序,每隔一个像素就操作一次,我们就可以得出9个值。这九个值形成的矩阵被我们称作激活映射。
图1.4卷积过程
①局部连接
因为图片特征具有局部性,同时神经网络由多个神经元组成,所以一个神经元只与输入数据的一个局部连接,提取这个局部的特征。与神经元连接的空间大小叫做神经元的感受野,它代表输出接结果与输入数据的哪一部分对应,大小是输入数据的深度。
②零填充
一方面,对于输入的矩阵和给定的卷积核,要想输出的矩阵和卷积核大小相同,就需要对矩阵做填充,填充的大小为,
其中strides代表卷积的步长;nH代表卷积后输出图像的高度;nHprev代表最初前输入图像的高度;f代表卷积核的大小。另一方面,为了能够提取图片的边缘特征,防止边缘特征丢失,也需要做零填充。
③滑动步长
在进行卷积运算时,卷积核每次滑动的参数称为滑动步长
,但是步长的选择是有限制的,譬如当输入大小为W=10,P=0(即不做填充),卷积核的大小为F=3,则S=
不是一个整数,这就说明神经元不能整齐对称地滑过输入数据体,这样的超参数设置是无效的,进行卷积的时候就会报错,可以改变步长,或者使用零填充让设置变得合理。
④参数共享
卷积层使用参数共享可以有效地减少参数的个数,这样之所以能够行得通,是因为特征的相同性,也就是说相同的卷积核能够检测出不同位置的相同特征。一个卷积核监测出一个空间位置(X1,Y1)处的特征,那么也能够有效检测出(X2,Y2)位置的特征,所以就可以用相同的滤波器来检测相同的特征,基于这个假设,我们就能够有效减少参数个数。
需要注意的是,参数共享之所以能够有效,是因为一个特征在不同位置的表现是相同的,比如一个滤波器检测到了水平边边界这个特征,那么这个特征具有平移不变性,所以在其他位置也能够检测出来。
2.池化层
卷积层之后就是池化层,进行池化,也称为采样,作用是对卷积后的特征图进行压缩,使网络中参数的个数减少,降低数据体的空间尺寸。也就是将图片缩小再进行卷积处理,减少计算资源耗费,降低了卷积运算的时间。最常使用池化操作有两种,分别是平均池化核最大池化。平均池化是将卷积后的参数矩阵平均分成几部分,然后求部分的平均值作为该部分池化后的值。最大池化也是将图像平均分成几部分,与平均池化不同的是最大池化是求每部分的最大值作为该区域池化后的值。池化扫描的顺序跟卷积一样,都是从左上角开始然后根据你设置的步长逐步扫描全局
3.全连接层
将某一层的某个神经元与上一层或下一层的神经元全部连接起来称为全连接。全连接层是它的每一个神经元都与上一层的所有神经元全部连接,将经过卷积和池化后学到的特征映射到样本标记空间,对输入的数据进行分类。