1.前言
CNN功能的总体概述:
我们希望电脑能够区分所有的图像,并找出且能识别实际案例(如:识别狗狗或识别小猫)的独特功能。当我们看一只狗的照片时,如果图片具有可识别的特征,例如爪子或四条腿,我们可以对其进行分类。以类似的方式,计算机能够通过寻找诸如边缘和曲线的低级特征,然后通过一系列卷积层来构建更抽象的概念来执行图像分类。举个形象的例子,计算机通过图像得出了的独特特征有:翅膀等,那么很容易我们就可以得知了,这个图像就是鸟儿。
CNN产生的原因:
当使用全连接的神经网络时,因为相邻两层之间的神经元都是有边相连的,当输入层的特征纬度非常高时(譬如图片),全连接网络需要被训练的参数就会非常多(参数太多,训练缓慢),CNN可以通过训练少量的参数从而进行特征提取。
CNN的优点:
1.相邻两层神经元部分相连。2.且同一层神经元的w(权重)和b(偏移)是共享的。
CNN总体工作原理:
给出已分类好的数据进行训练,训练一次后,再把未分类的数据进行分类,(A)根据预测值和真实值之间的损失值进行反向传播,从而更新参数,再次对未分类好的数据进行分类,重复A步骤,直至损失值最小,然后再输出层输出结果
2 神经元
我们知道神经元的主要组成成分:细胞核,树突,轴突,轴突末梢。一个神经元具有多个树突,主要用来接收信息;而轴突只有一条,轴突尾端有许多轴突末梢,可以给其他神经元传递信息。于是根据生物神经元的结构,人们发明了数学上神经元的原型
上述简单的模型可以理解为一个感知器模型,该模型可以理解为一个根据不同因素,以及各个因素所占的重要程度而做决策的模型
如:这周末北京有一草莓音乐节,那去不去呢?决定你是否去有二个因素,这二个因素可以对应二个输入,分别用x1、x2表示。此外,这二个因素对做决策的影响程度不一样,各自的影响程度用权重w1、w2表示。一般来说,音乐节的演唱嘉宾会非常影响你去不去,唱得好的前提下 即便没人陪同都可忍受,但如果唱得不好还不如你上台唱呢。所以,我们可以如下表示:
这样,咱们的决策模型便建立起来了
这里的b可以理解成 为更好达到目标而做调整的偏置项。
一开始为了简单,人们把激活函数定义成一个线性函数,即对于结果做一个线性变化,比如一个简单的线性激活函数是g(z) = z,输出都是输入的线性变换。后来实际应用中发现,线性激活函数太过局限,于是人们引入了非线性激活函数。
3.神经网络
讲完神经元,我们就来讲一下简单的神经网络,一下是单个神经元:
当多个神经元组织在一起,便形成了神经网络,下图是一个三层的神经网络:
最左端为输入层,中间为隐藏层,最右端为输出层。
输入层:接收讯息的输入,一般来讲,大多都是非线性的。输入的讯息又称为输入向量。
隐藏层:讯息的加权,激活,传输。(可有多个)
输出层:将经过处理的讯息输出,得出结果,输出的讯息又称为输出向量。
同时,每一层都可能由单个或多个神经元组成,每一层的输出将会作为下一层的输入数据。比如下图中间隐藏层来说,隐藏层的3个神经元a1、a2、a3皆各自接受来自多个不同权重的输入(因为有x1、x2、x3这三个输入,所以a1 a2 a3都会接受x1 x2 x3各自分别赋予的权重,即几个输入则几个权重),接着,a1、a2、a3又在自身各自不同权重的影响下 成为的输出层的输入,最终由输出层输出最终结果。
4.卷积神经网络之层级结构
从上面这张图可以看出,CNN网络要做的是,根据输入图片来判断这就是车还是马等?
最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。
而上图中
CONV:卷积层
RELU:激励层
POOL:池化层
FC:全连接层
——————————————划重点了!!—————————————
4.1卷积层
1.首先我们要知道,形象点来说,CNN怎么进行识别的?
当我们给定一个"X"的图案,计算机怎么识别这个图案就是“X”呢?有可能就是计算机已经存储了一张图案也为“X”的图像A,然后把需要识别的未知图像B和图像A进行局部比对,通过局部的比对的拟合率,来得出结论,这图究竟是不是"X"?
2.截下来我们要知道,什么是卷积:
对图像和滤波矩阵(或者说是卷积核,滤波器)进行内积求和的方法就称为卷积
PS:这里的滤波矩阵可以看成是一组固定的权重,同时根据图像的通道数,又可以设立多个滤波器,而多个滤波器又可以称为卷积层