归纳卷积神经网络的常用算法
在卷积算法之前,是有很多图片分类和识别的机器学习算法,像SVM向量机的原理特别复杂,卷积算法还是比较易懂,一方面避免全连接带来的庞大参数,主要通过提取特征值,算法准确率也是最高的,几乎可以跟人工识别相提并论了。
经典算法:
1,LeNet算法:
LeNet算法的流程是:
Input –>conv2->relu->pool->conv2->relu->pool->CF->softmax->output
Input:输入; 矩阵为(w,h,c) w:宽的像素;h:高的像素;c:通道
Conv:卷积计算
卷积就是把一个图层(w,h)
Conv2:表示二维图的卷积
一个图层可能是64*64,通过W过滤层为(6,6) 通常有多个过滤层,输出层为矩阵维度为64-6+1=59 ,即(59,59)
以下面的图简单为例:
Pool:是池化操作,可能翻译原因表述不一样,池化层是单层的,池化层分为最大值池化和平均值池化;其实,也就是提取特征值最明显的值,最大值池化的效果相对来说更好,所以建议使用。
FC:也就是全连接了,即WX+b=Y
Softmax:归一化的处理,分类
在conv2到pool过程中,还有一层no_linear_normal的操作,也是比较难懂,作用似乎没那么大,就被忽略了。
2,AlexNet算法:
其实就是一个leNet的变形,先来看一张图:
大体过程可分为:
Input->conv2->pool->conv2->pool->pool->pool->pool->pool->FC->FC->FC->softmax
当然中间还有一些relu激化函数就略过了,在激活函数前会通过LRN进行局部归一化,减少使用复杂的激化函数。
3,VGG-16 算法:
VGG-16 跟VGG-19算法 主要是在层次多少区别,算法效果差不多,所以一般建议使用VGG-16
VGG算法跟alexNet的最大不同是这个算法重点是conv2卷积多次,达到集中特征收集的目的
==========================================================
高效的算法:
残差算法:ResNet算法
卷积算法,流程都是通过多个过滤器进行特征值提取,中间的过程容易造成层次越多,原始特征丢失越严重,损失函数在逆向优化时梯度下降太快,所以需要加一些特征优化降低这个速度。对于一些神经深度越大的,这种算法越见优势。
首先来一般的神经深度过程:
Input –>linear->rule->linear->relu->a
而resNet是加了一步
Input –>linear->rule->linear->?->relu->a
运算过程:
接下来是:?
不是,这样网络越大,会增加错误几率,所以得保真:
把上上步的a[L] 拿过来加进去求激活函数,这样就能保真。再看一张图: