谈谈对Adagrad和尺度归一化的一些理解

本文主要参考自:李宏毅Machine Learning P5(Gradient Descent),在此基础上融入一些自己的理解.

Adaptive Learning Rates 自适应学习率

前因:”不管是机器学习还是深度学习,学习率都是一个非常重要的超参数。如果学习率过大,模型将无法收敛,过小又收敛过慢,那有没有自动调整学习率的办法呢?

a. 一个简单的想法: Reduce the Learning Rate by some factor every epochs. (合适的学习率应该随着参数的更新变得越来越小)

通常在初始状态,参数距离最优参数点距离较远,这时候需要迈大步子。而经过一段时间的更新之后,离最优点的距离越来越紧,这时又需要迈小步子。例如,可以设置如下Learning Rate更新公式可以达到这种效果:

其中,t为迭代次数

b. 学习率设置不能一刀切: 模型中不同的参数应该设置不同的学习率,例如Adagrad,其核心思想在于每个参数都与之前的梯度相关,将学习率除以累积梯度的均方根,下面详细讲一讲Adagrad。

Adagrad 优化器

首先看普通的梯度下降是如何进行的,其中w为模型的一个参数

再看Adagrad是怎么做的:

每次更新时,学习率会除以一个σt,σt为参数w在之前更新过程中所产生的梯度累积。

Adagrad参数更新实例

要注意每个参数的梯度累积都是不一样的,所以能满足上一节提到的想法b

然后再融合想法a,随着参数更新的进行学习率逐渐衰减。Adagrad的最终的形式为:

问题:在普通的梯度下降中,梯度越大,每次更新的步子也就越大,这是符合常理的,因为gradient越大,往往当前参数距离最优点也越远。但在Adagrad中,由于η的分母部分与梯度成正比,这样会导致梯度越大,步长反而越小。

解释

  • Adagrad表示How Surperise it is(体现反差),示例如下,Adagrad会强调当前的反差,如果梯度突然变大或变小,通过Adagrad会表现出它的反差(比如,对于突然变大的梯度,我们给予更多的关注,步长也就越大;对于突然变小的导数,步长越小)。

其实对于这个解释我不是很赞同,可能是我还理解得不够清楚,希望大佬在评论区指点。

  • 其次当前梯度越大,其离最优点越远是相对于只考虑一个参数来说的,如下图a。但目前的模型中通常含有非常多的参数,很难在特征空间中衡量距离最优点的远近,如下图b。

a 单参数图

多参数

只考虑单参数,对于w1来说,a的导数比b大,因此a比b距离optimal更远;对于w2来说,c的导数比d大,c比d距离optimal更远。但考虑多个参数之后,即使c的导数比a大,但说c比a距离最优点更远显然是错的。

上面的例子反映了如果仅靠梯度来衡量距离的远近,对于多参数的模型来说是不可靠的。那么,怎么才能正确反映参数与最优点之间的距离,从而决定步长的大小呢?

  • 衡量距离时不单单要考虑一阶导,还需要考虑二阶导,如下图所示,x0与最优点的距离其实是一阶导除以二阶导
  • 但在很多时候,求二阶导是复杂的,需要耗费很多时间,甚至有些时候根本无法计算二次微分。因此,Adagrad要做的事情就是,让分母部分起到二阶导的效果(使用一次微分估计二次微分)。

Adagrad的分母部分将之前所有的一阶导结果考虑进来求L2范数。但这样为什么能代表二次微分呢?

如上图所示,求得两个函数的一阶导数形式,在一阶导上采集一批样本并得到对应的值,求得这批数据的L2范式能在一定程度上代表它们对应的二阶导大小。例如蓝色函数上采样求L2范式的结果要比绿色函数小,这也反应了它们的二阶导差异。

Feature Scaling 尺度归一化

在机器学习中,通常会进行尺度来使得各特征拥有相同的尺度,主要起到以下两点作用:

  1. 消除特征间单位和尺度差异的影响,同等看待每维特征:
  1. 在使用梯度下降时,归一化后的损失函数会更趋向于圆形,这使得梯度下降效率更高,减少了更新时的loss震荡,从而更快到达圆心(最优点)。

关于Feature Scaling的深层理解可以参考这个blog,写得很好.
https://www.cnblogs.com/shine-lee/p/11779514.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用中提到了一个关于MSCKF(Multi-State Constraint Kalman Filter)的方法,名为Consistency of EKF-Based Visual-Inertial Odometry。而在引用中提到了MSCKF系统的一致性问题。 尺度归一化是一种解决MSCKF系统不一致性问题的方法。在MSCKF系统中,由于状态量中的位置和方向信息是不可观的,会导致系统的不一致性。而尺度归一化通过引入尺度变量,将测量值在某一特定的尺度上进行归一化,使得系统在这一尺度上具有一致性。具体来说,通过引入尺度变量,将状态空间中的位置量进行归一化,使得系统的不可观维度获得了更多的信息,从而减小了估计的不确定度,进一步影响其他状态空间量的估计,提高了系统的一致性。 因此,尺度归一化是一种用于提高MSCKF系统一致性的改进方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MSCKF 2.0 理论推导以及能观性分析](https://blog.csdn.net/waittingforyou12/article/details/106397641)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [S-MSCKF(前端)代码解读](https://blog.csdn.net/weixin_51994127/article/details/126098400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值