CNN
mnist一张28*28的黑白图片训练的模型,两层隐层的简单NN,节点数724 *500 *10,就有将近四十万个参数(w,b)。
如果是一张rgb彩色图片,由单通道变成三通道,参数将更多。
待优化的参数过多,很容易导致模型过拟合。
实际应用中会先对原始图像进行特征提取。再把提取到的特征喂给全连接网络。
卷积可认为是一种有效提取图像特征的方法。
一般会用一个正方形卷积核,遍历图片上的每个点。图片区域内,相对应的每一个像素值,乘以卷积核内相对应点的权重,求和,再加上偏置。
一张5*5*1的图片,5*5表示分辨率,1表示单通道。
输出图片边长= (输入图片边长-卷积核长+1) /步长
此图:
输出图片边长= (输入图片边长一卷积核长+1) 1步长
此图:
输出图片边长就是(5-3+1)/1 = 3。用了一个卷积核所以输出深度是1,输出3*3*1的图片。
有时候会在输入图片周围进行全0填充(padding)保证输出图片和输入图片大小相同。
使用padding后,输出图片计算公式变为 入长/步长。
灰度图是单通道,通道数1。彩色图是三通道,3。
卷积核的通道数由输入图片决定。输出图片的通道数等于卷积核的个数。
即使使用卷积核进行卷积,参数数量依然很大。
我们要进行池化。
pooling:池化用于减少特征数量,最大池化可提取图片纹理,均值池化可保留背景特征。
最大池化使用2*2的核,步长为2,输出图片变为输入图片的1/4大小,每次提取当前范围内的最大像素点值。
均值池化原理与最大池化相似,不过提取的是四个像素点的均值。
为了减少过多参数,使用dropout方法(dropout正则化)。
按照一定概率舍弃一部分神经元。舍弃是临时性的。
仅在训练时候舍弃这些神经元,使用时要恢复他们。dropout可有效避免过拟合。
在前向传播构建神经网络时候使用do避免过拟合,加快模型训练速度。
一般放在全连接网络中。
卷积就是对输入图片进行特征提取,再把提取到的特征喂入全连接网络。
所以卷积神经网络可认为两部分组成。
一部分是特征提取,一部分是全连接网络。
卷积神经网络发展: