CNN
本文将从以下几个方面介绍CNN:
1.CNN的产生背景
CNN是卷积神经网络的简称,它是将人类观察事物的规律特点用于算法,解决图片识别问题的一种神经网络算法。
2.CNN的特点
CNN有如下几个特点:
2.1.卷积层参数共享
在卷积层中的每个神经元所连接的数据窗的权重是固定的,每个神经元只观察一个特征,神经元就是图像处理的滤波器。
2.2.局部感受野
3.CNN的网络模型
卷积神经网络包括如下几个模块:卷积层、激活函数、池化层、全连接层、损失函数。主要用途有两个,特征提取和决策推断。
3.1.卷积层
卷积的作用是特征提取,因为一次卷积可能提取的特征比较粗糙,所以多次卷积,以及层层纵深卷积,层层提取特征(层层卷积不等于同一层多次卷积)。为什么要层层卷积,每层还要多次卷积呢?这里我们以相亲为例,假设我们第一次见到相亲对象,看第一眼,先看到对方的眼睛,发现细长有神;再看对方的眉毛,发现长长的;再看对方的鼻子,整体顺眼,没有鹰钩鼻之类的不好鼻型;好,本层多次卷积特征提取完毕。然后边聊天边喝咖啡,又注意到对方的嘴巴也很性感;说话声音也很富有磁性性感;又观察到对方今天有刮胡子;好,第二层的多次卷积特征提取完毕,然后对方不经意撩了下自己的头发,又观察到对方的头发长短适中,和自己的爱豆一样的发型,好,第三层的卷积特征提取完毕。然后得出结论,对方的外形符合自己的理想。总结下,人类在有限的视野范围内不可能一次将事物的特征完全提取,所以需要多次层层提取,然后得出结论。卷积神经网络正是利用人类的这一特点,进行特征提取和进一步的决策推断。
3.2.激活函数
Relu激活函数,激活函数的作用是将线性分布转化为非线性分布,更逼近我们的真实场景。之所以使用 Relu激活函数,而不是tan或者sigmod函数的激活函数,是因为这两种函数都无法解决梯度消失的问题。梯度消失问题详见:https://zhuanlan.zhihu.com/p/76772734,所以这里我们使用Relu激活函数。
上图均为盗图。
3.3.池化层
池化层的作用是:减少输入矩阵的大小;提取主要特征,它的目的就说在后续操作时能降低运算。
3.4.全连接层
全连接层的作用:分类器角色,将特征映射到样本标记空间,本质是矩阵变换(affine)
3.5.损失函数
作用:计算损失函数,从而求出梯度grad。
其中是要计算的类别 i 的网络输出,分母是网络输出所有类别之和(共有k个类别),表示第 i 类的概率。
交叉熵损失:
其中,是类别 i 的真实标签,表示第 i 类的概率,N是样本总数,k是类别数。
我们知道信息熵反应了事物的不确定性,这里损失函数的J值越大反应了事物分类属于哪类的不确定性越大。
3.6.前向传播法
前向传播包含卷积、激活函数、池化层、全连接层。主要是权重参数 w,b 的初始化,以及更新 w,b ,生成
分类器模型。
3.7.反向传播法
反向传播法主要是利用损失函数的梯度下降法,反向计算dw,db的 值,激活函数逆变换,反池化,反全连接。
3.8. 梯度下降
作用,梯度下降法用来计算新的参数矩阵 w 。
sgd公式为:, ,其中
其中,η为学习率,gt为x在t时刻的梯度。
3.9. 算法的超参数说明
一般我们是将整个数据集分成n个epoch,每个epoch再分成m个batch,每次更新都利用一个batch的数据,而非整个训练集。
优点:batch的方法可以减少机器的压力,并且可以更快地收敛。
缺点:其更新方向完全依赖于当前的batch,因而其更新十分不稳定。
4.CNN的算法
上图来自大神的图,做的很nice。本处只放图不说话...
5.CNN的应用场景
卷积神经网络的主要用途有两大类,数据预测和图片处理。图片处理主要包含有图像分类,检测,识别,以及分割方面的应用。
图像分类:场景分类,目标分类
图像检测:显著性检测,物体检测,语义检测等
图像识别:人脸识别,字符识别,车牌识别,行为识别,步态识别等等。
图像分割:前景分割,语义分割。
7.参考文献