卷积神经网络
本文只是做一个总结性概述,具体各部分请点击相应链接
- 卷积神经网络的层次
1、数据输入层:Input Layer
输入层具体内容详见博主博客链接:https://blog.csdn.net/qq_38646027/article/details/97786102
2、卷积计算层:CONV Layer —— 卷积核计算
卷积核计算具体内容详见博主博客链接:https://blog.csdn.net/qq_38646027/article/details/97786764
3、ReLU激励层:ReLU Layer —— 激活函数计算
后面的具体内容之后陆续更新
4、池化层:Pooling Layer —— 减少特征平面特征值数量。
5、全连接层:FC Layer
6、输出层:
激活函数即分类器:如softmax,通过分类器得到图像属于每个类的概率。
过程可简单表示为:
[ ( CONV > ReLU ) * N > POOL? ] * M > (FC > RELU) * K > SoftMax
7、求损失函数
8、反向传播更新卷积核参数(损失函数对各个参数w求偏导,将输出的所有特征值的误差和代入,求得梯度值,使用梯度下降:新w = 旧w-学习率*梯度值,更新参数)
简单说一下:
首先它依然有输入层和输出层,输入层是一个矩阵,接收图像的二维矩阵信息(此处图像只考虑一个通道),经过卷积、池化、卷积、池化……得到的依然是矩阵。但是输出层与BPNN一样,并非一个矩阵,而是一个向量,例如(1, 0, 0)代表图像是狗,(0, 1, 0)代表图像是猫, (0, 0, 1)代表图像是鸟,(0.9, 0.1, 0)代表图像很大概率是狗,小概率是猫,所以CNN在最后的结构需要把矩阵展开,然后类似BPNN那样全连接神经网络,输出到一个一维向量中。
首先了解前向传播。前向传播的过程是,图像的原始像素值输入到CNN中,经过卷积操作,得到特征平面,特征平面经过激活函数激活,输出到池化层,池化层经过简单的最大值池化或均值池化,再输出给下一层卷积,经过N次这样反复处理,即可完成从识别简单的轮廓、线到识别抽象物体的飞跃。以上过程存续的结果都是二维的矩阵。最后连接到一个全连接层,输出成一个一维向量。最后经过激活函数即可得到图像属于每个类的概率。
卷积层的激活函数可以选择ReLU函数(线性整流函数),池化层没有激活函数,池化的结果直接传递给下一层,输出层的激活函数可以选择Softmax,Softmax是专门处理多分类的激活函数,可以输出样本分别属于各个类的概率。
需要训练的参数是卷积核矩阵中的值以及偏置。训练好的卷积核矩阵理论上可以表示物体的相关特征(如针对汽车的轮胎形状)。
一、总体结构
卷积层负责提取特征,池化层负责特征选择,全连接层负责分类。
两层或者以上的神经网络,几乎可以拟合任意函数。
具体各部分请点击相应网页链接。