2019/6/8CS231n课程笔记(批量归一化、监控训练过程、优化超参数)

目录

 

批量归一化

监控训练过程

优化超参数


批量归一化

在训练过程中,每一层的输入分布总是变来变去,我们希望它能稳定成高斯分布,所以在全连接层或是卷积层之后进行批量归一化的操作,使得每一层的激活分布固定下来。首先计算每一维度的均值和方差,之后进行归一化。

在卷积层后面进行批量归一化的时候,不仅对训练数据进行批量归一化,对feature map也将进行这一操作。

对于tanh这种激活函数,我们需要控制饱和的程度,不是非要给tanh function输入一单位高斯数据,有时候有一点饱和也是允许的,所以,又引入了两个参数……γ用来缩放,β用来平移。

批量归一化总结:

需要注意的是,测试阶段的批量归一化和训练阶段的批量归一化是有所区别的,在测试过程中使用的均值和方差不是测试数据计算得到的,而是在训练过程中我们得到的经验数据。

监控训练过程

回顾一下过程:首先进行数据预处理,next选择网络结构,then初始化权值并计算loss,确保loss值在允许的范围内,此时正则化的系数设置为0。

(有一个归一化指数函数分类器,将知道损失函数应该是什么样的,当权重很小且分布较为分散时,归一化指数函数分类器的损失将是负对数似然操作的结果。如果有10个分类类别,将会是1/10(大概2.3左右)的负对数,所以我们希望loss值是接近这个数的。)

and then 启用正则化系数,这会使得loss增大。

开始训练,先使用小的数据集,使用小数据集的时候,先不设置正则化的系数,让loss值接近0准确值接近1.确保网络没有问题之后进行完整数据的训练,此时设置较好的正则化项,并选择一个合适的学习率。注意:当学习率太小的时候,loss值不会发生什么变化。当学习率过大的时候,loss为nan,就是loss太大了。

(question:尽管loss值没有发生什么变化但是准确率却上升了10%,why?because:尽管分步还是很分散使得loss没什么变化,但是因为权值已经朝着理想的方向改变了,我们一直选择的都是最大的正确率,所以整体的准确值还是会有所提升的。【我并没有明白这是为什么……】)

优化超参数

使用交叉验证的方法优化超参。使用训练集验证集进行学习。首先使用一些分布较大的值,进行几个epoch的训练,将超级参数的选择固定在一个范围里面,之后用更长时间的训练精细调整参数,当发现调整之后的cost大于初试cost的3倍的时候,就该停止训练了,因为这说明你的参数调整的并不好……

很高的激增线,损失爆炸:学习率太高;

过于线性和平缓,说明学习率太低;

如果有突变,而其他地方还是很平缓,说明学习率高,因为步长大才会有突变,不能得到局部最优解;

正常情况:一个相对陡峭的曲线然后又连续下降

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值