关于边和角的神经学习:卷积神经网络简介
一、在多个地方重复使用weights
如果需要在多个位置检测相同的特征,请使用相同的权重!
神经网络最大的挑战是过度拟合,当神经网络记忆一个数据集,而不是学习有用的抽象,概括到看不见的数据。换句话说,神经网络学会了根据数据集中的噪声进行预测,而不是依靠基本信号。
过度拟合通常是由于参数过多(相比数据集大小)
过拟合涉及模型中权重的数量和它必须学习这些权重的数据点的数量之间的比率。
结构是当你有选择地选择在神经网络中为多种目的重用权重时,因为我们认为需要在多个地方检测到相同的模式。正如您将看到的,这可以显著减少过度拟合并导致更精确的模型,因为它降低了权重与数据 的比率。
二、卷积层( convolutional layer)
许多非常小的线性层在每个位置重复使用,而不是一个大的。
卷积层背后的核心思想是,不是有一个从每个输入到每个输出的大而密集的线性层,而是有许多非常小的线性层,通常只有不到 25 个输入和一个输出,可以在每个输入位置使用。每个迷你层都被称为卷积内核,但它实际上只不过是一个只有少量输入和单一输出的婴儿线性层。
这里显示的是单个 3 × 3 卷积内核,通过把这个矩阵不断在图片上移动,每滑动一个像素,就对应的在图像上的3 × 3 的像素,进行矩阵乘法运算,图像有一个规律,往往图像之中,距离越近的像素点越具有相关性,这种3 × 3,4 × 4 的矩阵就是卷积核,用于把每一个小片区域的数据“卷积”起来,成为一个新的数据。
卷积核不断在同一个输入图片上移动,每移动一次,就运算出一个结果,这样就会得到一个新的矩阵,这个矩阵小于输入的图像数据矩阵,新矩阵大小是(N-2)*(M-2)。
数据量压缩了,就不用更多的参数了,参数(权重)就意味着overfitting的可能性变低了。
这是一个模拟卷积层的运算:
就是通过这样的步骤来进行运算的。
图示里右下角下标的 ×1 ×0是代表卷积核的内容,这是比较简单的卷积核,是由0,1代表,然后做一一对应的元素乘法,并且求和。
3x3 * 3x3 9个位置的数字 相加 放到 一个位置 。
(5-2)*(5-2) 得到这个高宽的 输出数据,矩阵 ,这种是对于单通道(一个pixel只有一个值代表颜色的)卷积运算 。
如果碰到彩色的 比如RGB( Red Green Blue) 三通道:
每次移动并不是1像素,卷积核可以规定step,也就是一次滑动1个像素还是两个,数据忽略的多,就越能尽快把数据压缩,但是损失了信息。
这个图展示了RGB三个通道图片的卷积运算过程,共有两组卷积核,每组卷积核都有三个filter分别与原图的RGB三个通道进行卷积。每组卷积核各自生成一个feature map。
+pad 的意思是:如果滑动距离为2 ,不补充0 ,在图像周围 则会无法卷积运算完所有数据 。
三、池化层
池化 也是用一个NxN的矩阵 不断在图片上移动,每次对应的图片位置 只取一个值 或者算一个值。
池化层 可以是 max pooling ,就是取每次池化矩阵的 最大值 。
也可以取平均值,平均池化。倾向于让图像更平缓,亮的不会太亮,暗的不会太暗。
最大池化,倾向于让图像亮化 。
池化也可以设置 每次滑动多少步。
这个是比较经典的 LeNet :
应该是卷积神经网络用卷积,解决 手写字体识别的经典案例。
通过卷积层,增加数据的相关性和降低数据体量以及池化层进一步简化数据 。
以前 500x500像素总计 250000x3 bytes 的一张图片,可以通过几层卷积网络达到可以被神经网络训练的结果,降低数据量又尽量不损失数据内涵 ,就是卷积网络做的主要事情
通过卷积网络,图像识别,图像生成等领域成为了可能,否则训练效率会非常低 。
通过卷积神经网络,同样的数据集,精度和准确率都有所提高。