卷积神经网络(Convolutional Neural Networks,CNN)
监督学习两大类:分类问题,归一问题
卷积神经网络相对于全连接神经网络的优点:有效地减少神经网络中参数个数
卷积神经网络主要构成
- 输入层:图像的原始像素矩阵
- 卷积层:卷积层中每一个节点的输入只是上一层神经网络的一小块(常用大小3X3,5X5)。卷积层试图将神经网络中的每一块进行更加深入地分析从而得到抽相关程度更高的特征。一般来说,经过卷积层处理的节点矩阵会变深
- 池化层:不改变三维矩阵的深度,但可以缩小矩阵的大小(可以理解为将一张分辨率高的图片转换为分辨率较低的图片)。通过池化层,可以进一步缩小全连接层中节点的个数,从而达到减少整个神经网络中参数的目的
- 全连接层:将卷积层和池化层看成自动图像特征提取的过程。在特征提取完成之后,仍然需要使用全连接层完成分类任务
- Softmax层:将神经网络的输出(神经网络前向传播得到的结果)变成一个概率分布(经过神经网络的推导,一个样例为不同类别的概率分别是多大)。从而通过交叉熵来计算预测的概率分布和真实答案的概率分布之间的距离
卷积层
卷积层的参数个数和图片的大小无关,它只和过滤器的尺寸、深度以及当前层节点矩阵的深度有关
过滤器(filter)
过滤器可以将当前层神经网络上的一个子节点矩阵转化为下一层神经网络上的一个单位节点矩阵(长和宽都为1,但深度不限的节点矩阵)
常用过滤器尺寸:3X3或5X5
池化层
有效地缩小矩阵的尺寸,最后减少全连接层中的参数。既可以加快计算速度也有防止过拟合问题的作用
池化层过滤器中的计算采用最大值或平均值运算
池化层过滤器与卷积层的区别:卷积层的过滤器是横跨整个深度的,而池化层使用的过滤器只影响一个深度上的节点。所以池化层的过滤器出了在长和宽两个维度移动之外,它还需要在深度这个维度移动
损失函数(交叉熵)
给定两个概率分布p和q,通过q来表示p的交叉熵为: H(p,q)=-∑p(x)log q(x)
p代表的是正确答案,q代表的是预测值
交叉熵刻画了两个概率分布之间的距离,交叉熵值越小,两个概率分布越接近
TensorFlow实现交叉熵
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(y,y_)
y代表了原始神经网络的输出结果,y_给出了标准答案