【机器学习】卷积神经网络

卷积神经网络所做的工作就是采用卷积、池化等操作从数据中提取特征,进行分类,回归等机器学习任务。

1.卷积

在原始的输入上进行特征的提取。三种卷积方法:valid,full ,same。

在这里插入图片描述
图1:valid卷积(不补零)
卷积
图2:full卷积
蓝色为原图像,白色为对应卷积所增加的padding,通常全部为0,绿色是卷积后图片。图6的卷积的滑动是从卷积核右下角与图片左上角重叠开始进行卷积,滑动步长为1,卷积核的中心元素对应卷积后图像的像素点。
在这里插入图片描述
图3:same卷积(输出与输入feature map大小一致)
在这里插入图片描述

图4:反卷积(先补0再卷积)

out=(in-filter+pading)/stride+1

2.池化

在这里插入图片描述

池化层只有滤波器尺寸f和步长s两个超参数,这两个参数是不需要经过fp、bp进行学习的,是初始就设定好的参数。矩阵经过池化层后的维度计算,和之前卷积的维度计算公式一致。常用的超参数设定,f=2、s=2、p=0。

3.特点

卷积有三大特点:1)参数共享:特定滤波器在图片任一小块都适用,可以共享特征。2)稀疏连接:每一小部分的输出值,与图片其他部分无关。3)平移不变:图片平移,由于和原图相似,卷积计算的结果也是相似的。

4.过拟合

所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

5.正则化方法

5.1batch normalization

思想:
对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题。
训练:
对于Mini-Batch SGD来说,一次训练过程里面包含m个训练实例,其具体BN操作就是对于隐层内每个神经元的激活值来说,进行如下变换:
x ( k ) = x ( k ) − E ( x ( k ) ) / v a r ( x ( k ) ) x^{(k)}=x^{(k)}-E(x^{(k)})/var(x^{(k)}) x(k)=x(k)E(x(k))/var(x(k))

要注意,这里t层某个神经元的 x ( k ) x^{(k)} x(k)不是指原始输入,就是说不是t-1层每个神经元的输出,而是t层这个神经元的线性激活x=WU+B,这里的U才是t-1层神经元的输出。变换的意思是:某个神经元对应的原始的激活x通过减去mini-Batch内m个实例获得的m个激活x求得的均值E(x)并除以求得的方差Var(x)来进行转换。

BN为了保证非线性的获得,对变换后的满足均值为0方差为1的x又进行了scale加上shift操作 y=scale*x+ shift,每个神经元增加了两个参数scale和shift参数,这两个参数是通过训练学习到的,意思是通过scale和shift把这个值从标准正态分布左移或者右移一点并长胖一点或者变瘦一点,每个实例挪动的程度不一样,这样等价于非线性函数的值从正中心周围的线性区往非线性区动了动。核心思想应该是想找到一个线性和非线性的较好平衡点,既能享受非线性的较强表达能力的好处,又避免太靠非线性区两头使得网络收敛速度太慢。

5.2dropout

训练过程中使用dropout是在每次训练过程中随机将部分神经元的权重置为0,即让一些神经元失效,这样可以缩减参数量,避免过拟合。

5.3 早停

将数据集分成训练集和验证集,训练集用来学习权值,验证集用来估计误差,当训练集误差降低但验证集误差升高,停止训练。

5.4 L1 L2正则项

在损失函数中增加一个用于描述网络复杂度的部分,连接权的L1,L2范数。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值