卷积神经网络的主要作用是图像处理,比如人脸识别

拿神经网络处理图片,资源消耗是巨大的

14.卷积神经网络

举个例子,上图上来输入为一张图片,输出为结果,形式是概率.

卷积神经

包含四种不同类型的层CONV,RELU,POOL,FC

CONV 卷积层

局部关联,一个神经元不看全图,只看一块区域,然后窗口滑动,然后对每次滑动的局部数据进行计算,比如这一块区域是3*3则会产生9个w(权重)

第二个神经元也做同样的操作,不过会用9个新的权重,后面也会生成

根据上面的描述就会出现几个特性,1.干这个事神经元的个数,2.步长,一次走多远,这个扫描不是说一次就3*3下面就是另外一个3*3,实际上,会有交集的.3.填充值,比如步长是2,那么宽度可能是不够的,这样就人为的加0为填充值

14.卷积神经网络

拿这个图来说,上面分别对应的rgb三组值,用三个单独的神经元扫描,然后扫描单个神经元的卷积层有两层,最后的结果为点乘然后相加,很奇怪,第一个组神经元扫描出来的值永远是差1的.

因为每个神经元只关注一个特征,和原本的人工神经网络比,需要估算的权重大幅度缩水了.

而一组固定的权重和不同窗口的内积,就叫卷积

RELU 激励层

其核心就是把卷积层得到的结果做一个非线性的映射

14.卷积神经网络

w0,w1,w2是一组新权重,根据特征的重要性分配这一权重f(x) = sum(wixi + b)这个函数就叫激励函数

非线性映射的选择:

    1.绝对不要用sigmoid

    2.首先试下RELU,注意观察输入输出方差的波动,免得挂掉了

    3.如果不行就用leaky RELU或者Maxout

    4.实在没办法就考虑tanh.反正不用sigmoid

池化层    Pooling layer

一般是放在连续的卷积层之间,压缩数据和参数的量,免得过拟合了
14.卷积神经网络

池化层分为Max pooling 和Average pooling,上图的数据窗是2*2,步长是2,各不相关,所以取最大值就是右边的结果,如果取平均值,则就是把最大值换成平均值,据说人脸识别平均值要更好用点

全连接层    FC

一般来说就是最后乘以最后一组权重求出结果了

卷积神经网络的结构

INPUT->[[CONV ->RELU]*N -> POOL?(表示加不加看业务需求)]*M->[FC->RELU]*K(也是根据业务来)->FC

不管是什么机器学习方式,貌似永远离不开损失函数,然后根据损失函数梯度下降,然后拟合出最优的解

CNN的求这一过程的算法是SGD,SGD需要对w和b求偏导,求偏导的算法为BP

BP利用链式法则逐级相乘,知道解出pw和db,就是w和b的偏导值.然后利用SGD或者随机梯度下降更新w,b直到得出最优解

卷积神经网络优缺点总结

优点:

        共享卷积核,对高维数据处理无压力

        无需手动选取特征,训练好权重,既得特征.

        分类效果好

缺点:

        需要调参,需要大量样本,训练恐怕要GPU

        物理含义不明确,不清楚那些数据实际表达出来的是什么

 目前比较好用的是AlexNet>lenNet

目前来说自己训练卷积神经网络都不是特别靠谱,容易出问题,改变别人设计好的CNN,从时间的降低和效率来说都会有很大的提升.

而且也很简单,改变下权重,或者改变部分权重就好了

常见的比较好用的框架Caffe Mxnet TensorFlow

相关文章:

  • 2022-01-20
  • 2021-08-11
  • 2021-05-18
  • 2021-09-09
  • 2021-07-02
猜你喜欢
  • 2022-12-23
  • 2022-01-01
  • 2021-04-06
  • 2022-01-12
  • 2021-12-19
  • 2021-09-28
相关资源
相似解决方案