Gradient Descent

本文深入探讨了梯度下降算法,包括其基本原理、步骤以及在机器学习中如何应用。通过实例解释了如何通过梯度下降优化目标函数,并讨论了批量梯度下降、随机梯度下降和小批量梯度下降的区别和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html                                                    点击此处返回总目录

//邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io

 

 

 

今天要讲的是Gradient descent,Gradient descent 已经大概讲过怎么做了。但是有一些小技巧你可能是不知道的。所以我们要再详细说明一下Gradient descent,你要怎么把它做得更好。

 

-------------------------------------------------------------------------------------------------------------------------------

我们上次是这样说的,在整个machine learning的第三个步骤,我们要找一个最好的function。找一个最好的function这件事呢,是要解一个optimization problem。也就是在第二步的时候,我们定义了一个Loss function ,L。这个Loss function 呢,是function的function。你把一个function带到这个Loss function里面,或者你把一个操控function形状的参数(这里写作)带到Loss function里面,就会得到这组参数有多不好。那接下来要做的事情呢,就是找一组参数,让Loss function 越小越好。

 

                      

那这件事情怎么做呢?可以用Gradient descent。

假设这个参数的set,里面有两个参数。首先随机选取起始的点,随机选取一组起始的参数,写成:。用上标0表示初试的那一组参数,用下标代表说这是这一组参数里面的第几个component。接下来计算偏微分。然后更新。然后这个步骤反复不断地进行。这个就是Gredient descent.

                          

如果你想要写的更简洁一些,假设你现在有两个参数,你可以这样写:

                            

把L对参数求偏微分,然后把两个偏微分放在一起,组成一个向量。这个向量就叫做梯度。

所以,可以把更新过程简写为:

                         

-------------------------------------------------------------------------------------------------------------------------------

如果把它virtualize的话呢,他看起来是这个样子:

首先初始,随机找两个参数:

                                   

然后计算这个点,对Loss function的梯度。假设梯度是红色的箭头。Gradient是一个向量。如果你不知道gradient是什么的话,你就想成它是等高线的法线方向。如果你把Loss function 的等高线画出来的话呢,这个红色的箭头指的方向就是等高线的法线方向。

 

                                   

 

那怎么update参数呢?你就把这个gredient乘上learning rate。再取一个负号,就是这个蓝色的箭头。再加上,就得到

                                   

然后这个步骤就反复地进行下去,再计算一遍梯度,得到另外一个红色的箭头,走的方向是红色箭头相反的方向。一直进行下去。算一次Gredient,决定要走的方向。。。

                                 

 

-------------------------------------------------------------------------------------------------------------------------------

以上的这些,我们其实都讲过了。接下来呢,讲一下gradient descent的tips。第一个呢是,你要小心地调你的learning rete。

                                             

如果你已经开始做作业1的话呢,你会知道说,learning rate 有时候会给你造成一些问题的。举例来说,下面是Loss function的曲线,长这个样子。

如果你的learning rate 调的刚刚好的话,你从左边开始,顺着红色的箭头可以很顺利地走到最低点。

                                          

可是,如果learning rate 调的太小的话,会变得非常慢。虽然,实际上给它足够的时间,它终究会走到local minimum的地方。但是,如果他走得太慢的话,你会没有办法接受这件事。

                                          

如果,今天这个learning rate 调的稍微大一点。像绿色这个箭头的话,那就变成说呢,它的步伐太大,它变得像个巨人一样,它永远没有办法走到这个特别低的地方。它都在这个山谷的口这个地方震荡。它永远走不下去。

                                          

甚至,如果今天你把learning rate 调的太大的话,它可能就一瞬间就飞出去了。结果你update参数以后,loss function反而越来越大。

                                          

其实是只有你的参数在一维或者二维的时候,你才能画出这样的图。如果你有很多维的参数,error 在一个高维的空间里面,你是没有办法visualize它的。但是有另外一个东西,你是可以visualize的。什么东西呢,你可以visualize参数的变化对loss的变化。你可以visualize每次参数update的时候,Loss的改变的情形。所以如果你今天learning rate设置的太小的话,你就会发现,Loss下降的非常非常慢。

                                        

如果,你今天learning rate调的太大的话,在前面的图也可以看到,loss 先快速的下降,接下来就卡住了。画出图来,是下面绿色的线,Loss很快就下降了,然后很快就卡住了。

                                       

如果,你的learning rate 调的过于大了,你会发现你的loss直接就飞出去了。

                 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值