Gradient Descent學習筆記

2021-10-03 13:02:15 字數 2865 閱讀 3809

今日網課初步學習了

gradient descent,特此把筆記記下,以後有空看看。

(同專業的發現不要抄我作業 tat)

定義出損失函式loss function,若該函式可微分,則可以使用梯度下降法。設變數為x=,損失函式為l(x)。為了找到損失函式的最小值(即目標的最優解),通過任意取乙個初始值,然後根據函式的性質迭代n次,找出較優的x解,迭代的方法如下:

當迭代次數足夠大,或者偏微分足夠小可看作幾乎為0時,結束迭代,此時得到最優解x。

因此,在此迭代過程中,learning rate大小的選擇尤為重要。learning rate在式子中相當於是乙個與微分相乘的權值,因此可以理解為每次試探的步長,learning rate的選擇可以下面例子說明。

如上圖所示,這是目標的loss function。顯然,要讓損失最少就要到達最低點。

①若learning rate過小,相當於在此過程中步長過小的藍色情況,因此,若要到達最低點,則需要更多次數的迭代。極大地增加了計算量,而且若迭代次數滿之後還未到達最低點,甚至會導致找不到較優解。

②若learning rate適中,相當於在此過程中步長適中的紅色情況,因此三次迭代後剛好到達最優解,結束迭代。然而這個值較為精確,很難找到。

③若learning rate過大,相當於在此過程中步長過大的綠色情況,由於迭代時步長過時,直接跳過了最低點到達了高點,於是又折回走,來回振盪,找不到最優解。

所以,為了選出合適的learning rate,可以採用一些演算法自動得到適合的adaptive learning rate

最普遍簡單的方法:每次迭代都按一定的演算法來減少learning rate,例如

為了更好地找到最低點,最好的方法是每個函式都設立乙個learning rate。

adagrad方法:

在迭代的減數中再除以過去微分的均方根,結合變化的learning rate,化簡得到:

特點是下降速度會越來越慢,後期非常緩慢。

圖中有乙個疑點:

按照原理來說,應該偏微分大的時候跨大一點,但是在分母加上了偏微分的均方根,使此時的跨步反而小了,如何解釋?

答:直觀的解釋:可以看成是一種反差,當某次微分突然變得特別大/小,因此除以均方根可以看出反差。

正式的解釋:當同時需要考慮多個引數時,不能單純地認為微分越大步伐越大。由二次方程推導最好的步伐大小應是正比於一次微分,反比於二次微分。但計算二次微分的計算時間代價會成倍增加,於是可以用過去微分的均方根來表示二次微分的大小,可以達到相似的效果。

stochastic gradient descent:

不等計算完所有的迭代x才更新引數,隨機或順序計算迭代完乙個x就更新一次引數。使得迭代速度變快。

feature scaling:

讓不同的變數(中的x1和x2)的scale相同。

通過使得scale一樣,使得更新的w1和w2的量級一樣,在各個方向上更加公平。

*feature scaling的方法(歸一化normalization):

例如上圖中方法,有r個引數,每次輸入的資料有r個,取這一次組成乙個dimension,算出均值mi,和標準差,然後用上述式子把資料歸一化到[0,1]。

數學基礎:

泰勒展開:如果函式足夠平滑,在已知函式某一點的各階導數值都已知的情況下,可以用以下來估計領域中的值:

所以,當x接近x0的時候:

因為導數都是常量,可以簡化寫成:

又因為下次的位置是在以步長為半徑,此時位置為圓心的圈內,即下圖所示的紅圈內,需滿足以下條件:

把第乙個加數看成

第二個加數看成

然後分析函式:

s是常數相加,可以忽略不分析。變成兩個向量相乘

要使此時函式的值最小,必然是以下情況:

推出一開始的結論:

(這裡只考慮了一次展開,如果考慮二次式的話運算量增大,一般把learning rate調大一點。

gradient descent的注意點

可能找到了極小值或微分很接近0的地方,而找不到最小值。

總結一般步驟:

①確定引數數量

②選擇合適的loss function

③選擇learning rate的大小或變化策略

④選擇迭代的策略,如adagrad

⑤歸一化處理

梯度下降(Gradient Descent)

1.特徵 沿負梯度方向迭代更新下一次的搜尋方向 2.用於 優化問題中逼近極值點 3.基本形式 theta j theta j alpha cdot frac 4.步長 alpha 學習速率 alpha 太小,收斂慢 alpha 太大,可能不收斂。5.缺點 靠近極值點收斂速度減慢 導數減小 可能之字形...

gradient descent 梯度下降演算法

今天給大家介紹乙個machine learning中非常基礎又非常重要的演算法 gradient descent 梯度下降演算法。其實在寫這篇文章之前,我前面的文章中就有提到gradient descent,它實在是太 氾濫 了,幾乎到處都能看到它的身影。那麼,它到底是什麼?能幹什麼?它是一種優化演...

梯度下降法 gradient descent

也稱為最速下降法 steepest descent 用來求解無約束的最優化問題,有約束的最優化問題使用拉格朗日乘子法 lagrangian multiplier method 梯度下降法是迭代演算法,每一步需要求解目標函式的梯度向量。目標函式f x 已知f x 可導且有極小值,求解無約束條件下f x...