卷积神经网络

上一章已经讲了什么是卷积

卷积神经网络

  • 卷积操作
  • 池化
  • 激活函数
  • 全连接层
  • 卷积核的选择
    • 减小误差

卷积神经网络_第1张图片
从这个图中我们可以知道,这样的卷积核将图中类似的特征保存了下来、

卷积操作

卷积神经网络_第2张图片
如图,红色的就是卷积核,与图片中的像素先相乘再加和之后,便形成了新的图片,这就是卷积操作
就相当于卷积核把原图中的特征提取了出来,反映在了新图中
卷积神经网络_第3张图片
这个图比较形象虽然最中间那一块不是1,但是仍然保留了0.55的卷积核的特征

卷积神经网络_第4张图片
用不同的卷积核就会出现不同的特征

这几个卷积出来的图像都跟原有的卷积核长得很像,说明了图像中都包含了原有的卷积核的特征
如果得到的是乱码,就说明原图不包含卷积核所有的特征

然而对于一个图,会有几万个特征,然后就会有几万个卷积核去识别,这就会造成一个非常大的运算量,但是往往有时候对时间有限制,来不及做这么多的运算,所以就需要对图片进行缩小,怎么缩小呢,就需要pooling池化

池化

池化的作用就是把得到的图片缩小
卷积神经网络_第5张图片
这张图就可以表示池化的作用,将一大块像素点用一个数字来表示

池化一般有两种,一种是最大池化,一种是平均池化
一般是用最大池化,因为它在保留了原图特征的同时,还能把图片的尺寸降下来

卷积神经网络_第6张图片

(有时候需要在图片边缘补0,因为图片边缘的特征也很重要)

激活函数

ReLU
把图片中像素小于0的全都写成0
卷积神经网络_第7张图片
这就是一个图片,先经过卷积,再经过修正,最后进行池化,这个过程也就是卷积神经网络。
这三个操作可以重复进行
卷积神经网络_第8张图片

全连接层

把得到的矩阵排成一列

卷积神经网络_第9张图片这一列的每一个值都是有权重的,把它们各自乘以各自的权重加起来,就能判断出这个数的是哪个数的概率,这个是需要通过训练得到的

卷积神经网络_第10张图片
为什么叫全连接呢,上图大家也看到了,最后这个结果是要跟之前每一个神经元都有关系的,每一个神经元都要乘以一个权重,最后加和,全连接还可以放好多层

卷积核的选择

不得不说到反向传播,bp算法,就是我们放入一个图片,假设这是一只猫,但是神经网络识别出来这是一条狗,我们就需要拿我们识别出来的狗跟真实的猫做对比,计算差值,这就是损失函数,我们的目标就是让损失函数降到最低。
然后我们对损失函数求导,求一个最小值,然后通过修改卷积核的参数,修改全连接每一个神经元的权重,来进行微调,最后使得损失函数最小,由于它是一层一层把误差反馈回去的,所以叫反向传播,也就是说,最后可能它的误差是要反馈到第一个卷积核上的,来对卷积核上的操作进行修改。所以叫反向传播算法。经过不停地训练最后学会了自己用那个卷积核,以及全连接中的权重是多少。

减小误差

又被叫做梯度下降
卷积神经网络_第11张图片

在某一点取得最小值,我们对它求导要找它的最小值,所以叫做梯度下降
梯度其实就是一个导数,只不过它是多维函数导数

当找到损失函数地最小值地时候,我们就认为它成功了,但是我们必要要让它有一个初始地参数,这个参数就叫做超参数,比如我们事先就指定好卷积核的尺寸,卷积核的数目,池化的步长,池化的大小,全连接层神经元的数量,这些是没办法学的,这些要事先指定,又随机生成一些数字放到卷积核里面。找到损失函数的最小值,把参数调到最佳,这是神经网络干的事

它不光可以处理二维的,还可以处理3D的数据,只要3D的数据结构呈现出类似图像的特征,就可以处理,比如说视频,文本等
如果要处理的是表格之类的无法转换成图像的数据,就比如表格,可以两列之间进行交换位置,但是图像不能。

总结,卷积神经网络在发现特征,分类图片上,非常有用

手写字体的神经网络识别流程如下图
卷积神经网络_第12张图片

你可能感兴趣的:(#,深度学习,python,Linux,算法)