CNN学习

想想如果我们有1000*1000的图像,如果我们隐藏层有1百万个神经元(其实也是可以获得的特征值),每一个特征值(神经元)都要和每一个像素进行连接,也就是全连接,俺么我们需要1000*1000*1百万=10^12参数需要学习。所以我们升级打怪,进化为局部连接(1:图像空间局部性,比如你鼻子周围某一个像素不可能立马就是嘴巴的像素吧,所以空间联系是局部的2:每一个神经元只对局部感受,就可以获得相应的局部特征。然后在高层,将感受不同的局部神经元综合起来就可以的得到全局信息了,还减少了需要学习的参数)。接下来,我们讲讲如何减少的参数,比如我隐藏层单元只感受10*10大小的区域,那么如果我有1百万个隐藏层单元,我们需要学习的参数是1百万*10*10=10^8参数,是不是少了4个0.这还折腾的不够,因为这些参数学习起来,也要挺费劲的。我们接着优化,上面我们讲的是,每一个神经元对应10*10大小,如果我们把每一个神经元都变成一样的,也就是每个神经元与10*10大小区域连接的参数是一模一样的,那么我们1百万个神经元其实就是一个模板刻出来的,也就是我们只需要100个参数了。是不是又少了6个0,100个参数还是挺好学习的吧。但是想想,我们也说了神经元其实刻画的就是特征提取啊,我们都是一个模子刻出来的,那意思就是我们只能取到一个特征啊,这完全不符合要求啊,参数是少了,但是也不能只取得一种特征吧?所以,我们可以多加几种滤波器啊不就行了,也就是多卷积核的思想。那么这样下来,如果我们提取100种特征,每一种感受10*10大小,我们需要学习参数是10K。按照卷积方法,我们学习参数是减少了,但是又出现了一个问题,那就是输出向量维度变得很大,这对后面分类器设计同样带来了困难,这就涉及到pooling方法。这样就会将产生一个大概缩小四倍的特征映射图(比如2*2pooling,stride=2).对于激活函数而言,我们可以选择sigmoid或者tanh',现在一般采用校正线性激活函数ReLu。以sigmoid为例,它会将输出平均值趋于0(只有正确一类接近1,其余接近0,平均值当然趋于0)。所以如果将我们的训练数据归一化为0均值,方差1的,可以在梯度下降的过程中增加收敛性。

多通道卷积动态图:

http://cs231n.github.io/assets/conv-demo/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值