卷积神经网络的关键知识点学习

这两天看了本大神写的魏秀参——《解析卷积神经网络——深度学习时间手册》,在此写下我的一点总结,有助于巩固总结知识。

一、卷积的基本组成

  • 卷积操作:获取的是图像的局部信息
  • Pooling: ①特征不变性;②特征降维;③缓解一定程度的过拟合
  • 激活函数:增加了网络的非线性表达能力
  • 全连接层:分类层,可用卷积的方式实现,分前面是卷积层和全连接层两种形式
  • 感受野:相对于大的卷积核,使用小卷积核增加深度,减少参数

  •  特点:分布式表示,大量的神经元通过不同的组合,形成了对海量特征的描述。相同模式的特征可能是不同卷积核的响应,同一卷积核可能响应不同的模式。


二、典型网络结构

  • Alex首个应用到计算机视觉的卷积网络
   海量数据防过拟合

  局部响应规范化(LRN):同一层相邻channel的feature map的加权平均


  • VGG:更小的卷积核,更深的网络

  • Network-In-Network(NIN)
   多层感知机(多层全连接和非线性函数的组合)代替普通的卷积,增加表达能力

  全局汇合操作(global averagepooling),将每个feature map的值平均,不用全连接


  




  • 高速公路网络(Highway network)
  

变换门控制变换的强度,携带门控制输入信号的保留强度。

  • 深度残差网络
   

  梯度信息可以在多个神经网络层之间有效传播,解决难更深的网络难训练的问题


四、数据准备
  • 数据扩充
  • 中心化数据:计算训练集图像像素值,再用到训练集、些实际、验证集。

五、参数初始化
  • 最终参数的理想期望是0,初始化参数时,假设服从高斯分布,随机初始化。但输出数据分布的方差会随着输入神经元的个数变化,在初始化的同时加入方差的规范,即Xavier初始化方法√n,He等人进行√(n⁄2) 改进。
  • 假设均匀分布
  • 使用预训练模型

六、激活函数
在网络中引入非线性,使网络产生强大的表达能力。常用的是ReLu。


七、损失函数

  • 分类

  交叉熵损失函数(softmax)

 

  • 回归:L1是绝对值,l2是平方和

  • 标记的分布(label distribution),对不确定问题的确定,衡量预测与真实label之间分布的差别,kl散度
 


七、网络正则化

  • L2正则化=权重衰减(weight  decay)
  • L1正则化
  • 随机失活dropout,降低了神经元之间的依赖,避免过拟合的发生。训练阶段,以概率p随机失活,在测试阶段,要将权重*(1-p),保证参数的期望一致,也就是输出结果*(1-p)(倒置随机失活)。pytorch框架会有train、eval模式。每次相当于训练一个全新的网络,测试结果相当于多个网络的平均集成。
  • 验证集:一般在每轮或几批之后,计算训练集和验证集的精度,验证模型泛化能力。

 (a)增加层数、调整激活函数增加非线性,减小模型的正则化等增加模型复杂度

 (b)过拟合,增加模型正则化;及时早停,选取验证集精度最高的一轮训练结果。


八、训练技巧

  • 输入图像的大小:2的次幂
  • 卷积层:卷积核(3/5,补零1/2,步长为1,)个数也是2的次幂
  • 汇合层:大小为2,步长为2
  • Shuffle:打乱数据,确保不同轮次相同批次看到的数据不同。
  • 学习速率:开始为0.01或0.001,随着训练的进行,进行衰减

   

  黄色:爆炸,大幅减小学习速率

  绿色:使用较小学习速率,在训练后几轮减小学习速率

  蓝色:增大学习速率

  • 批规范化操作(batch normalization):使得输出的均为0,方差为1,消除梯度弥散,拉大小梯度的尺度。针对收敛速度慢,梯度爆炸等问题使用。
    优化方法:推荐使用Adagrad,Adadelta,RMSProp,Adam等。
    微调:网络已经别的数据集上收敛过,再次训练,用更小的学习速率;浅层小学习率,深层大一些。跟原始数据不相似,数据量又小的情况比较麻烦,多目标学习框架对预训练模型进行微调。





猜你喜欢

转载自blog.csdn.net/lxx516/article/details/79134653