网易首页 > 网易号 > 正文 申请入驻

注意!这个小球开始下山了

0
分享至


新智元报道

编辑:alan

【新智元导读】4年前的开源项目突然在Hacker News爆火,通过可视化的「小球下山」,帮助非专业和专业人士,更好地理解AI训练中梯度下降的过程。

近日,一个4年前的开源项目穿越了时空,突然爆火!

毕业于哈佛,前Quora数据科学主管,现工作于Waymo的Lili Jiang,在20年初编写了一个软件,

通过可视化的「小球下山」,帮助非专业和专业人士,更好地理解AI训练中梯度下降的过程。


软件名为Gradient Descent Viz,囊括了当下最常见的5种梯度下降算法:Vanilla Gradient Descent、Momentum、AdaGrad、RMSProp和Adam。


你可以选择不同的曲面,并发现Adam和RMSProp可以更好地处理鞍点:


可以调整参数,并发现学习率低时,动量法不足以推动小球通过平坦区域,而提高学习率可以解决问题。


可以观看分步动画,直观地了解每种方法的计算过程,比如动量下降的内部工作原理:


可以使用可视元素来跟踪梯度、动量、梯度平方和等数据,比如下图中的两片灰色代表两个方向上的梯度平方和:


可以绘制下降路径,以了解不同的算法如何以不同的方式到达目的地:



项目地址:https://github.com/lilipads/gradient_descent_viz

OK,介绍完毕,下面上点硬菜,结合大佬给出的可视化展示,解释一下梯度下降的几种优化算法的原理。

(小编水平有限,如有失误,烦请诸位指正)

AI训练的本质:从小球下山开始

众所周知,AI训练的目标是让预测值尽可能接近真实值。

可以按照某种方式,定义预测值和真实值之间的误差,也就是损失函数,比如最常用的交叉熵损失函数。

要让误差最小,也就是求损失函数的最小值。

为此,我们需要一个好的算法来快速可靠地找到全局最小值(不会卡在局部最小值或者鞍点)。

梯度下降

真实的神经网络中,参数千千万,不过我们人类(包括小编)一般情况下只能感知3维的事物,

所以,下面先用两个参数x,y对应的损失函数Z来理解这个问题。

下面的曲面表示损失函数Z(x,y):


在这种情况下,我们可以使用「一眼看出」大法,马上发现曲面最低点的位置(也就是损失函数的最小值),——但计算机程序不能。

人眼可以看到整个曲面,而算法只能一步步进行探索,就像拿着手电筒在黑暗中行走。

如上图中的演示,算法需要每次找到一个最佳的前进(下降)方向,然后移动一段距离,——这个最佳的方向就是梯度(函数对每个参数的偏导)。

根据我们小学二年级学过的知识,当二元函数Z在(x,y)点可微时,函数值变化量可以写成:


改写成向量内积的形式就是:


我们需要让函数值下降得越快越好,那么x和y的改变方向,就应该和梯度(两个偏导)的方向相反,——即向量方向相反,内积最小:


这就是「梯度下降」的意义,梯度前面的系数是我们熟悉的学习率,用来控制每次移动的步长,步子太小训练慢、步子大了容易扯着蛋。

如果我们「深入浅出」,把问题退化到一元函数,就是下面这个样子:


当然了,最原始的梯度下降算法,需要对网络中所有参数求偏导再求和,计算量相当大。

我们现在用的梯度下降算法,一般指的是随机梯度下降(Stochastic Gradient Descent,SGD),表示每次迭代只随机使用一个样本或一个小批量(mini-batch)来计算梯度。

动量法

当我们使用梯度下降的时候,可能会遇到下图中这种问题:

代表梯度下降的红线在寻找极值的过程中振荡比较严重,相应的也需要更多的步数才能收敛。

这是因为每个点的梯度可能和最终的方向差别比较大,——为了解决这个问题,科学家们提出了动量法,也就是下图中蓝线的路径。


动量法的思想就是把历史的梯度也考虑进来,用整体的趋势让路径变得更加平滑。

另一种简单理解就是,振荡来自于前后两点梯度的垂直分量方向相反。作为矫正,当我们遇到这种反向的情况时,可以将当前的垂直分量减小一点。

而前后两点梯度的水平分量是同向的,所以可以将当前的水平分量增大一点。

——把过去的梯度按照一定比例加到当前梯度,正好可以满足这两点。

动量法可以用公式表示为:

delta = - learning_rate * gradient + previous_delta * decay_rate

或者突出累积梯度的概念,表示为:

sum_of_gradient = gradient + previous_sum_of_gradient * decay_rate delta = -learning_rate * sum_of_gradient

两个公式是一样的,其中衰减率decay_rate,控制历史梯度信息进入的比例,一般情况下设置为0.8-0.9。


另外,这个公式是一个递归的表示,所以距离当前时刻越远的梯度会被decay_rate衰减得越多(指数级),

这样既保证了整体的趋势,又不会过多的被遥远的梯度所干扰。

我们可以利用本文的开源软件形象地了解动量法,以及其中参数的意义,比如当decay_rate为0时,就与普通的梯度下降完全相同;

而当decay_rate = 1时,小球就像在没有摩擦的碗中那样,孤独摇摆,永无休止。


下图中,普通梯度下降和动量法在软件中PK了一把:


可以看出,Momentum相比于Vanilla Gradient Descent有两个明显优势:

1.积累了过去的动量,所以跑得快; 2.动量法有机会逃脱局部最小值(也是因为来自过去的力量把它推了出去)
AdaGrad

前面我们提到了学习率的问题,学习率设置过大或过小都会出问题。


在实际训练中,学习率一般会人为设定在迭代中不断衰减,使得开始时可以快速深入,然后逐渐减慢速度,仔细探索。心有猛虎,细嗅蔷薇。

不过同样的,学习率衰减太快或太慢,也都会出问题,所以科学家们提出了AdaGrad算法来自适应调整学习率。


AdaGrad可用公式表示为:

sum_of_gradient_squared = previous_sum_of_gradient_squared + gradient² delta = -learning_rate * gradient / sqrt(sum_of_gradient_squared)

其实就是跟动量法类似的思想,使用历史梯度数据来校正当前数据。

这里给学习率除上一个历史梯度的平方和开根号,直观的理解就是:对于一个参数,在过去修改得越多,那么在未来需要修改得就越少。

这样就达成了学习率的自适应调节,而且每个参数有自己的学习率。

另外,在深度学习中,稀疏特征是非常常见的,而AdaGrad算法在面对稀疏数据时尤其有效,

稀疏的特征平均梯度很小,会导致训练缓慢,而为每个参数设置不同的学习率则解决了这个问题。


上图中,AdaGrad和Vanilla Gradient Descent进行PK,普通梯度下降会先选择最陡峭的方向,而AdaGrad选择的路径显然更优秀。

有时候,普通梯度下降会干脆停在两个方向的梯度为0的鞍点(saddle point),而AdaGrad等基于梯度平方的方法可以更好地逃离鞍点。

RMSProp

然而,AdaGrad的问题在于它的速度非常慢,——因为梯度平方的总和只会增长,永远不会缩小,就造成了学习率一定是越来越小的。

由于背上了沉重的历史包袱,AdaGrad在该快的地方也往往快不起来,为了解决这个问题,便诞生了RMSProp算法,公式如下:

sum_of_gradient_squared = previous_sum_of_gradient_squared decay_rategradient² (1- decay_rate) delta = -learning_rate * gradient / sqrt(sum_of_gradient_squared)

跟动量法中使用衰减率decay_rate的思想一致,让最近的梯度占比比较高,而离得比较远的梯度就赶紧忘掉,说白了就是移动加权平均。

不过跟动量法那边不同的是,这个 (1- decay_rate)是在分母上,所以还起到了缩放的作用。

举个例子,如果decay_rate设置为0.99,那么分母就多乘了一个sqrt(1 - 0.99)= 0.1,因此在相同的学习率下,步长比AdaGrad大了10倍。


图中的阴影部分表示两个方向上的梯度平法和,明显绿色的RMSProp甩掉了很多历史包袱,跑得也更快。

Adam

最后出场的是当下AI训练最流行的Adam算法,但已经没啥可说的了,因为Adam = Momentum + RMSProp,公式如下:

sum_of_gradient = previous_sum_of_gradient * beta1 + gradient * (1 - beta1) [Momentum] sum_of_gradient_squared = previous_sum_of_gradient_squared * beta2 + gradient² * (1- beta2) [RMSProp] delta = -learning_rate * sum_of_gradient / sqrt(sum_of_gradient_squared)

Beta1是Momentum的衰减率,通常设置为0.9;Beta2是RMSProp的衰减率,通常设置为0.999。


Adam从Momentum中获得速度,从RMSProp获得适应不同方向梯度的能力,两者结合使其功能强大。

参考资料:

https://github.com/lilipads/gradient_descent_viz


特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中央督察江西:大量违法违规项目运行 无视国家规定 对河岸保护不力

中央督察江西:大量违法违规项目运行 无视国家规定 对河岸保护不力

小小包工头阿汾
2024-06-17 08:52:35
社保被查!税务局动真格的了!6月起,这3种行为,可不能再有了!

社保被查!税务局动真格的了!6月起,这3种行为,可不能再有了!

学税
2024-06-16 19:17:27
全跑光了,一家7口套现20亿,把公司卖给了17万股民

全跑光了,一家7口套现20亿,把公司卖给了17万股民

灰鸽观察室
2024-06-15 20:09:36
破案了!龚翔宇哭泣,原因揭晓!球迷错怪蔡斌,真实情况令人愤怒

破案了!龚翔宇哭泣,原因揭晓!球迷错怪蔡斌,真实情况令人愤怒

小豆豆赛事
2024-06-17 11:47:23
CCTV5直播罗马尼亚vs乌克兰:最弱球队登场 难阻西甲金靴开门红

CCTV5直播罗马尼亚vs乌克兰:最弱球队登场 难阻西甲金靴开门红

智道足球
2024-06-17 09:01:14
子女们,准备好了吗?医院护工退出舞台,“无陪护病房”将开启!

子女们,准备好了吗?医院护工退出舞台,“无陪护病房”将开启!

猫小狸同学
2024-06-17 08:20:47
广东城际又贵又慢?国铁不服已经开战!

广东城际又贵又慢?国铁不服已经开战!

李天利爱生活
2024-06-16 05:59:40
瑞士和平峰会上波兰总统杜达提议:将俄罗斯分割为两百个独立国家

瑞士和平峰会上波兰总统杜达提议:将俄罗斯分割为两百个独立国家

橘色数码
2024-06-16 20:18:16
第一次性生活有多痛?进不去怎么办

第一次性生活有多痛?进不去怎么办

喜马拉雅主播暮霭
2024-06-12 09:53:49
网友质疑:阿里巴巴数学竞赛的含金量太低了?原来是开卷考试!

网友质疑:阿里巴巴数学竞赛的含金量太低了?原来是开卷考试!

火山诗话
2024-06-15 05:43:37
姜萍被重点高中家长吐槽:凭啥我儿子做不到,她中专女却能做到?

姜萍被重点高中家长吐槽:凭啥我儿子做不到,她中专女却能做到?

熙熙说教
2024-06-14 17:11:08
国足归化热门首次身披国足战袍亮相,效率堪比金靴,入籍时间敲定

国足归化热门首次身披国足战袍亮相,效率堪比金靴,入籍时间敲定

评球论事
2024-06-16 20:49:31
中方邻国爆发粮食危机,失去中方援助后,反华总统被美彻底抛弃!

中方邻国爆发粮食危机,失去中方援助后,反华总统被美彻底抛弃!

绝对军评
2024-06-17 09:11:21
深圳出租车司机哭诉:出车几小时拉不到一个乘客,能否给一碗饭吃

深圳出租车司机哭诉:出车几小时拉不到一个乘客,能否给一碗饭吃

火山诗话
2024-06-16 06:24:37
四大分卫都成了巨星,谁生涯赚得多?状元艾弗森1.55亿垫底

四大分卫都成了巨星,谁生涯赚得多?状元艾弗森1.55亿垫底

大卫的篮球故事
2024-06-17 13:01:17
新一代058型驱逐舰,满载排水量2.2万吨,会有多强悍呢?

新一代058型驱逐舰,满载排水量2.2万吨,会有多强悍呢?

文雅笔墨
2024-06-17 09:47:00
真想把老公买的避孕套全都给扔了:烦死我了!

真想把老公买的避孕套全都给扔了:烦死我了!

好笑娱乐君每一天
2024-06-17 07:15:09
喝茶对心脏到底是好是坏?医生苦劝:4种茶,一口都不要喝

喝茶对心脏到底是好是坏?医生苦劝:4种茶,一口都不要喝

宋若讲故事
2023-01-18 21:38:26
彻底对国足死心啦!瑞士对匈牙利的比赛才明白,国足是幼儿园水平

彻底对国足死心啦!瑞士对匈牙利的比赛才明白,国足是幼儿园水平

人生趣事悟语
2024-06-17 01:45:53
中国比亚迪进军德国市场,遭民众疯狂抢购!德国车企这下都慌了?

中国比亚迪进军德国市场,遭民众疯狂抢购!德国车企这下都慌了?

蜉蝣说
2024-06-16 23:47:53
2024-06-17 13:30:44
新智元
新智元
AI产业主平台领航智能+时代
11161文章数 65537关注度
往期回顾 全部

科技要闻

OpenAI可能会迎来重大变化

头条要闻

姜萍走红后有企业上门送5000元 老家门前将修水泥路

头条要闻

姜萍走红后有企业上门送5000元 老家门前将修水泥路

体育要闻

欧洲杯15亿豪阵险翻车:半场梦游 王牌打废

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

省市级税务人士:目前没有全国性查税

汽车要闻

传奇新篇章 全新一代大众迈腾来了

态度原创

房产
手机
数码
教育
游戏

房产要闻

强!全国第三!海口房价正在止跌!

手机要闻

一加冰川电池沟通会官宣!定档6月20日 锂电宁王助阵

数码要闻

PC鲜辣报:英伟达RTX 50规格曝光 微软暂缓Win 11新预览版

教育要闻

【买大送小】九九乘法除法口诀表小学一二三年级算术99口诀卡天天练

回来了!《怪物猎人:荒野》隐身衣装将会回归

无障碍浏览 进入关怀版