[size=0.8]卷积神经网络。这种神经网络在计算机视觉领域取得了重大的成功,而且在自然语言处理等其它领域也有很好的应用。卷积神经网络的示意图1:
[size=0.8]一个卷积神经网络由若干卷积层、Pooling层、全连接层组成。
[size=0.8]三维的层结构:
[size=0.8]从图1我们可以发现卷积神经网络的层结构和全连接神经网络的层结构有很大不同。全连接神经网络每层的神经元是按照一维排列的,也就是排成一条线的样子;而卷积神经网络每层的神经元是按照三维排列的,也就是排成一个长方体的样子,有宽度、高度和深度。
[size=0.8]对于图1展示的神经网络,我们看到输入层的宽度和高度对应于输入图像的宽度和高度,而它的深度为1。接着,第一个卷积层对这幅图像进行了卷积操作(后面我们会讲如何计算卷积),得到了三个Feature Map。这里的"3"可能是让很多初学者迷惑的地方,实际上,就是这个卷积层包含三个Filter,也就是三套参数,每个Filter都可以把原始输入图像卷积得到一个Feature Map,三个Filter就可以得到三个Feature Map。至于一个卷积层可以有多少个Filter,那是可以自由设定的。也就是说,卷积层的Filter个数也是一个超参数。我们可以把Feature Map可以看做是通过卷积变换提取到的图像特征,三个Filter就对原始图像提取出三组不同的特征,也就是得到了三个Feature Map,也称做三个通道(channel)。
[size=0.8]继续观察图1,在第一个卷积层之后,Pooling层对三个Feature Map做了下采样(后面我们会讲如何计算下采样),得到了三个更小的Feature Map。接着,是第二个卷积层,它有5个Filter。每个Fitler都把前面下采样之后的3个Feature Map卷积在一起,得到一个新的Feature Map。这样,5个Filter就得到了5个Feature Map。接着,是第二个Pooling,继续对5个Feature Map进行下采样,得到了5个更小的Feature Map。
[size=0.8]图1所示网络的最后两层是全连接层。第一个全连接层的每个神经元,和上一层5个Feature Map中的每个神经元相连,第二个全连接层(也就是输出层)的每个神经元,则和第一个全连接层的每个神经元相连,这样得到了整个网络的输出。
[size=0.8]卷积层计算:
[size=0.8]假设有一个5*5的图像,只使用一个3*3的filter进行卷积,想得到一个3*3的Feature Map,如下所示:
[size=0.8]计算Feature map的第一个元素,用输入图像数据的3*3滑动窗口与filter做内积运算并加上偏置得到。如下公式:
[size=0.8]计算Feature map第二个元素,用滑动窗口滑动一个步长再与filter内积,同理,得到feature map。
[size=0.8]每个卷积层可以有多个filter。每个filter和原始图像进行卷积后,都可以得到一个Feature Map。因此,卷积后Feature Map的深度(个数)和卷积层的filter个数是相同的。
[size=0.8]以上就是卷积层的计算方法。这里面体现了局部连接和权值共享:每层神经元只和上一层部分神经元相连(卷积计算规则),且filter的权值对于上一层所有神经元都是一样的。对于包含两个3*3*3的fitler的卷积层来说,其参数数量仅有(3*3*3+1)*2=56个,且参数数量与上一层神经元个数无关。与全连接神经网络相比,其参数数量大大减少了。
[size=0.8]Pooling层计算:
[size=0.8]Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在n*n的样本中取最大值,作为采样后的样本值。下图是2*2 max pooling:
[size=0.8]除了Max Pooing之外,常用的还有Mean Pooling——取各样本的平均值。
[size=0.8]对于深度为D的Feature Map,各层独立做Pooling,因此Pooling后的深度仍然为D。
[size=0.8]激活函数:
[size=0.8]卷积中激活函数往往不选择sigmoid或tanh函数,而是选择relu函数。
[size=0.8]优势:
[size=0.8]l 速度快:与sigmoid函数需要计算指数和倒数相比,relu其实就是一个max(0,x),计算代价很小。
[size=0.8]l 减轻梯度消失问题:计算梯度时每经过一层神经元都要乘上sigmoid函数的倒数,会使梯度越来越小,对于深层网络的训练是个很大的问题;而relu函数的导数为1,所以对于梯度这个角度来讲,relu要强于sigmoid,relu可以训练更深的网络。
[size=0.8]l 稀疏性:通过对大脑的研究发现,大脑在工作的时候只有大约5%的神经元是激活的,而采用sigmoid激活函数的人工神经网络,其激活率大约是50%。有论文声称人工神经网络在15%-30%的激活率时是比较理想的。因为relu函数在输入小于0时是完全不激活的,因此可以获得一个更低的激活率。
[size=0.8]卷积神经网络之优缺点优点共享卷积核,对高维数据处理无压力无需手动选取特征,训练好权重,即得特征分类效果好缺点需要调参,需要大样本量,训练最好要GPU物理含义不明确(也就说,我们并不知道没个卷积层到底提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)。
|
|