Datawhale X 李宏毅苹果书AI夏令营—进阶 task2

3.3 自适应学习率

Loss可以根据训练的迭代次数不断下降。

但是在梯度下降法中,Grad,作为有大小和方向两个信息的向量,其大小(范数)却随着迭代次数的增加有小范围的波动。(当然根据图上来看波动越来越小)。那么这可能是由于学习率不恰当的原因而反复横跳。Gradient依然很大,但是loss并没有卡到saddle、critical point等。(反思训练过程)

范数是数学中的一个基本概念,定义在赋范线性空间中,满足非负性、齐次性和三角不等式,常用于度量向量空间中向量的长度或大小。在人工智能领域,范数是一种常见的正则化方法,在模型训练中用于防止过拟合。

Training为什么被卡住了?学习率出了小问题。

看上去把learning grade缩小以后就能解决问题。但是实际上可以看出,当坡度很平滑的时候(右下角图横着走)学习率太小了以后无法收敛,无法让训练前进。

如何做的更好?那就是想要一个可以不断改变的学习率。刚刚可以看出,当平坦时,想要大的学习率。陡峭,想要小的学习率。

3.3.1 AdaGrad

既然学习率和grad有关,那么可以把学习率乘以受grad影响的系数,为了量纲一致(怎么说呢 数量级一致?),除以一个σ。(我个人是这么理解的。)

书上的解释是σ的上标为 i,这代表参数 σ 与 i 相关,不同的参数的 σ 不同。σit 的下标为 t,这代表参数 σ 与迭代相关,不同的迭代也会有不同的 σ。学习率从 η 改成 ησit的时候,学习率就变得参数相关(parameter dependent)。也可以理解。其实就是g变成g/σ,还是学习率变成学习率/σ,两个参数一个道理。

σ的大小是前面所有更新的g的均方根。(很神奇为什么是所有的,我以为是前一个g就可以了)

3.3.2RMSRrop

如果用RMSProp,那就可以动态调整σ这一项。感觉比Ada好用很多。

3.4学习率调度

当学习率在平缓的地方不断增大的时候,会出现因为σ变得很小以后,σ作为分母,学习率的参数整体会突然变得很大。不过肯定是会回来的。

但是为了减少这种情况,来了个learning rate scheduling,目的是为了让learning rate更加平滑。因为根据设置,learning rate随着时间变化的图样必须是一个光滑的下降曲线。所以加上decay之后,可以保证没有σ过小导致的情况出现。

第二个方法是warm up,当我们使用 Adam、RMSprop 或 AdaGrad时,需要计算 σ。而 σ 是一个统计的结果。统计的结果需要足够多的数据才精准,一开始统计结果 σ 是不精准的。一开始学习率比较小是用来探索收集一些有关误差表面的情报,先收集有关 σ 的统计数据,等 σ 统计得比较精准以后,再让学习率慢慢爬升。(大概就是先收集数据打野,再正式启动学习率)

3.5 优化总结

动量,启动!把过去所有算出梯度的方向做一个加权总和,当作更新的方向。Task1里面有很好的解释,所以这里其实把m和g替换一下,就ok了。

3.6分类

先介绍了一个由三组x预测出三组y的过程。(就是多加一层weight)这就是回归的过程。

那如果要classification,就要加上一层softmax。Softmax就是归一化的过程。看似缩小了y之间的差距,但是其实小的值会接近于0(忽略不计),大值逐渐趋近于1.(log函数是不是更合适一点 不过log函数会有负的)

当我们把 x 输入到一个网络里面产生 yˆ 后,通过 softmax 得到 y′,再去计算 y′ 跟 y 之间的距离 e,比较常用的计算方法是交叉熵。

也就是极大似然估计法:如何理解这个公式呢?由于抽样的结果是确定的,而每次抽样的积事件组成了现在已知的既定事件,所以“独立同分布”且属于二项分布。利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!

换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。

Task3 具体实践

有点难。

没看太懂。

跑是跑了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值