卷积神经网络工作原理(基本的四步)

一 :识别

前提:由于图像以矩阵(2维)储存,所以我们要输入一个矩阵(图像)经过CNN后再得到输出。

一维与二维的卷积神经网络 二维卷积神经网络原理_一维与二维的卷积神经网络


(1)卷积操作(特征提取):

解释:为什么要进行卷积操作?难道原图不是最好的特征图像吗?

人可以看出下面四幅图是X,但机器呢?

一维与二维的卷积神经网络 二维卷积神经网络原理_卷积核_02

用训练(最后解释训练)得到的一个卷积核(二维或一维的小矩阵,也就是X的一个特征,就如X有经过训练后得到的三个基本特征分别是/,,x,)再矩阵(图像)上逐格进行运算,运算后变得到一个新的二维矩阵,这个新的矩阵就是原图的特征图像。

(先说一下怎么进行运算)

->

一维与二维的卷积神经网络 二维卷积神经网络原理_池化_03


(怎么逐步)

一维与二维的卷积神经网络 二维卷积神经网络原理_权重_04


但我们知道卷积核只是(举例)X的一个小特征,一个X就可以包涵多个小特征,

一维与二维的卷积神经网络 二维卷积神经网络原理_权重_05


一个人脸有成千上万个特征,我们要拿成千上万个卷积核(小特征)去提取,运算量非常大,这就引出了我们下一步操作,即是RUEL。(2)RELU(激活函数):

解释:RELU操作即是设定一个阈值,把池化后的到的矩阵上小于阈值的点都变为0,更加便于运算(因为0*x=0),而且阈值以下的点都是特征高度不匹配的,所以变为0并不会使特征图像变化。(下图把小于0的点变为0)

一维与二维的卷积神经网络 二维卷积神经网络原理_一维与二维的卷积神经网络_06


此时运算量虽然大大减小,但还能通过池化方法进一步缩小。

(3)下采样(池化):把得到的特征图像进行缩小,减少运算量。

(怎样缩小)

一维与二维的卷积神经网络 二维卷积神经网络原理_卷积神经网络_07


(池化方法有两种分别是最大值提取与平均值提取)


一维与二维的卷积神经网络 二维卷积神经网络原理_卷积神经网络_08

这三个基本操作已经把特征图像与运算量一步步缩小,那么这三个步骤循环几次运算量岂不是更小(美滋滋),而且此时图像的线性对应,已经逐步转化为非线性对应。就是假如X的一个特征原本假如是/,经过RELE与池化后就算/上多出几个点就会被忽略。

一维与二维的卷积神经网络 二维卷积神经网络原理_权重_09


(4)全连接层

假如X有经过训练后得到的三个基本特征分别是/,,x,我们用这三个不同卷积核对图像进行(卷积-RELU-池化)后得到三个最终的不同的特征图,全连接就是把这三个小矩阵(特征图)变成一个特征向量:就是把多维,多个特征变成一维特征,就叫特征向量

一维与二维的卷积神经网络 二维卷积神经网络原理_卷积核_10


列如把X的特征x放在第一位,/放在第二位,\放在第三位,三个特征图就变为了一维12行的特征向量了,此时每个特征点都对应以个权重(权重怎么来的稍后解释),例如x特征出现时原图为X的概率为0.9,/出现时X概率为……,这个时候我们把每一个特征点都乘以相应的权重在相加,就能判断出原图是X的概率是多少,如果值非常大那么我们便断定此图就是X。二:训练一个模型(最终卷积核与权重的获取):

前面我们说到X有三个小特征,那么这三个小特征是怎么得来的呢?

特征向量上每一个特征点所对应的权重又是怎么来的?

先解释一下超参数:例如卷积核的大小(里面的数字是随机生成的,参数只需要定义大小就行),池化方法大小等一系列无法通过学习得到,而需要人为给定的参数的总称叫做超参数。不过这些参数已经有大致的最优范围,这些我们都是可以借鉴先人的,只需要根据情况进行微调就行。

我们给定要训练的图像,即是正确的X(需要大量的不同的X的图像去喂饱它),起初,算法会根据<超参数>自动随机定义卷积核即其对应的权重,池化方法与池化大小等,那么就又回到了识别的第一步,只不过此时的卷积核是不准确的,输出的结果:即是原图为X的概率不会是100%,甚至偏差很大,这时就需要一个损失函数与误差反向传播算法(具体我不理解),误差反向传播算法会把误差原因传递给自定义的卷积核与权重,使其进行修改调整,这时又要引入梯度下降原理简单的说就是求导,求出损失函数的最小值,即是导数为0的点。

一维与二维的卷积神经网络 二维卷积神经网络原理_卷积神经网络_11


只不过,X有多个卷积核每个特征点对应的权重,不是普通的二维求导,而是多维求导。通过此过程把损失函数的值,即误差一步步的降到最小值,每一次调整都会进一步的接近比较完美的卷积核与权重,当误差值最小的时候,我们便把此模型叫为训练好的模型。训练好的模型有最完美的卷积核与其对应的权重,训练的过程就叫做机器学习的过程,卷积核并不是人为给定的,而是机器通过自身的学习得到的,这就是机器学习的强大与魅力所在!