為什麼梯度下降法每次找到的都是下降最快的點?
01-05
梯度下降法 機器學習
概念理解有誤,梯度下降法並不是下降最快的方向,它只是目標函數在當前的點的切平面(當然高維問題不能叫平面)上下降最快的方向。在practical implementation中,牛頓方向(考慮海森矩陣)才一般被認為是下降最快的方向,可以達到superlinear的收斂速度。梯度下降類的演算法的收斂速度一般是linear甚至sublinear的(在某些帶複雜約束的問題)。為什麼在一般問題里梯度下降比牛頓類演算法更常用呢?因為對於規模比較大的問題,Hessian計算是非常耗時的;同時對於很多對精度需求不那麼高的問題,梯度下降的收斂速度已經足夠了。而這也motivate了一類quasi-Newton演算法,可以在規避Hessian計算的前提下達到於牛頓類演算法差不多的收斂速度。
非線性規劃當前的一個難點在於處理非凸問題的全局解,而搜索全局解這個問題一般的梯度下降也無能為力。
下面從梯度與方嚮導數的關係來解釋:
1 方嚮導數
-
引入
原來我們學到的偏導數指的是多元函數沿坐標軸的變化率,但是我們往往很多時候要考慮多元函數沿任意方向的變化率,那麼就引出了方嚮導數
-
定義
(1)方嚮導數是個數值。
二維空間情形:
我們把f(x+Dx,y+Dy)-f(x,y)的值Value1與PP1的距離value2的比值的極值叫做沿PP1的方嚮導數。
三維空間計算過程相似;
換句話來說,方嚮導數就是研究在某一點處的任意方向的變化率~
2 梯度
首先我來說,梯度是一個向量,並不是原來方嚮導數說的那樣是一個數,那麼這個向量是什麼特殊的向量呢?還需要拿出來單獨研究,那就是梯度代表的是各個導數中,變化趨勢最大的那個方向,下面來介紹~
-
定義
-
證明
梯度方向就是方嚮導數最大的方向,我們看如下:
只有當Θ為0度的時候(),方嚮導數最大(左邊的式子),也就是說方嚮導數什麼情況下最大,就是它的方向(,)(這個方向公式中表示用x,y軸的線性組合表示了)和梯度方向一樣()(平行)的時候,這個方嚮導數是最大的....換句話也可以說,方嚮導數任意方向一定有個變化率最大的方向,這個時候,我們把這個最大的方向定義為梯度方向~
梯度下降法找到的不一定是最快下降的點。梯度下降由梯度方向,和步長決定,每次移動一點點。但是每一次移動都是往極值方向,所以能夠保證收斂。怎麼找到合適的步長,使得每次下降最快,這是另外一個問題了。
不是找到下降最快的點,而是對你所在的那個點來說,這個方向是下降最快的。至於找到的點,選定步長之間可能出現任何奇葩驚悚匪夷所思奇奇怪怪的起伏波折山巒吧?
吳恩達說的是當你在求解偏導完成那一刻,最大坡度已經找到了,其實當你每走一步你並不是真的在四處張望看看哪裡更陡,而是戴著一個頭盔,這個頭盔(偏導)就是用來幫你在尋找最大坡度,所以你是沒有選擇權的,正是因為如此才會使你有時候陷入局部最優點,如果我能看到那就不會往局部最優解走了,而是往全局最優解走。我也是初學不知道對不對,不對請指出
首先要了解梯度的含義,梯度實際上是函數值變化最快的方向。比如說,你站在一個山上,梯度所指示的方向是高度變化最快的方向。你沿著這個方向走,能最快的改變(增加或是減小)你所在位置的高度,但是如果你亂走,可能走半天所在位置高度也沒有變化多少。也就是說,如果你一直沿著梯度走,你就能最快的到達山的某個頂峰或低谷(偶爾會到鞍點,不過這幾乎不可能)。所以實際上,梯度下降法是用來數值搜索局部極小值或極大值的,它是實際應用中一種非常高效,高速且可靠的方法。
其實這是泰勒展開到二次時,h,k很小delt(f)約等於梯度運算元作用在f上與向量(h,k)的內積,在h^2+k^2一定時當向量(h,k)平行於梯度方向時f的變換最大,所以梯度方向讓f變化最大。這是二元情況,而對於一元,多元都是類似的。同時如何與梯度方向相同,則變換是+,相反則為-。這就是為何梯度下降法求極大或極小值時 步長前的+,-號會不同的原因。
我覺得還是 本章要點:最速下降法的基本思想及特點牛頓方向Newton法 里第5/6頁(4.1)講得更清楚。例子是『瞎子下山』 。
並且,其他答案里也糾正了:每次找到的是局部最優(下降最快),並不是全局最優的。
因為函數下降最快的方向就是梯度方向,對於二元函數倆說,想像成你在爬山,梯度方向是爬山最快的方向,也就是教科書上經常講解的梯度方向。
大兄弟 你先給我說一說梯度是啥?
建議查閱梯度的定義ps:梯度下降法很容易陷入局部極值,然後每個點求導,也容易出問題。
推薦閱讀:
※如何評價 Coursera 的機器學習 (Andrew Ng) 課程?
※如何評價Deep and Hierarchical Implicit Models?
※已知兩個高斯分布及他們的關係,如何求條件期望?
※深度學習乃至機器學習和凸論有什麼本質聯繫?
※怎麼看待現在一些論文提出的新點子就只在mnist或者cifar上跑跑實驗?