Ng機器學習 梯度下降法

2021-08-28 09:01:51 字數 2361 閱讀 9137

梯度下降是乙個用來求函式最小值的演算法,我們將使用梯度下降演算法來求出代價函式 的最小值。

梯度下降背後的思想是:開始時我們隨機選擇乙個引數的組合​,計算代價函式,然後我們尋找下乙個能讓代價函式值下降最多的引數組合。我們持續這麼做直到到到乙個區域性最小值(local minimum),因為我們並沒有嘗試完所有的引數組合,所以不能確定我們得到的區域性最小值是否便是全域性最小值(global minimum),選擇不同的初始引數組合,可能會找到不同的區域性最小值。

想象一下你正站立在山的這一點上,站立在你想象的公園這座紅色山上,在梯度下降演算法中,我們要做的就是旋轉360度,看看我們的周圍,並問自己要在某個方向上,用小碎步盡快下山。這些小碎步需要朝什麼方向?如果我們站在山坡上的這一點,你看一下周圍,你會發現最佳的下山方向,你再看看周圍,然後再一次想想,我應該從什麼方向邁著小碎步下山?然後你按照自己的判斷又邁出一步,重複上面的步驟,從這個新的點,你環顧四周,並決定從什麼方向將會最快下山,然後又邁進了一小步,並依此類推,直到你接近區域性最低點的位置。

批量梯度下降(batch gradient descent)演算法的公式為:

其中是學習率(learning rate),它決定了我們沿著能讓代價函式下降程度最大的方向向下邁出的步子有多大,在批量梯度下降中,我們每一次都同時讓所有的引數減去學習速率乘以代價函式的導數。

在梯度下降演算法中,還有乙個更微妙的問題,梯度下降中,我們要更新​和​ ,當 ​ 和​時,會產生更新,所以你將更新​和​。實現梯度下降演算法的微妙之處是,在這個表示式中,如果你要更新這個等式,你需要同時更新​和​,我的意思是在這個等式中,我們要這樣更新:

實現方法是:你應該計算公式右邊的部分,通過那一部分計算出​和​的值,然後同時更新​和​。

在梯度下降演算法中,這是正確實現同時更新的方法。我不打算解釋為什麼你需要同時更新,同時更新是梯度下降中的一種常用方法。我們之後會講到,同步更新是更自然的實現方法。當人們談到梯度下降時,他們的意思就是同步更新。

在上面的式子中,:=表示賦值,阿爾法表示學習率(learning rate)。後面的的一項是偏導數。 後面為了方便記此偏導為d。

對於阿爾法,不能過大或者過小;如果過大最終結果可能無法收斂甚至發散;如果過小最終結果會需要很多步才能到達全域性最低點。

如果我們預先把​放在乙個區域性的最低點,你認為下一步梯度下降法會怎樣工作?

假設你將​初始化在區域性最低點,在這兒,它已經在乙個區域性的最優處或區域性最低點。結果是區域性最優點的導數將等於零,因為它是那條切線的斜率。這意味著你已經在區域性最優點,它使得​不再改變,也就是新的​等於原來的​,因此,如果你的引數已經處於區域性最低點,那麼梯度下降法更新其實什麼都沒做,它不會改變引數的值。這也解釋了為什麼即使學習速率​保持不變時,梯度下降也可以收斂到區域性最低點。

我們來看乙個例子,這是代價函式​。

我想找到它的最小值,首先初始化我的梯度下降演算法,在那個品紅色的點初始化,如果我更新一步梯度下降,也許它會帶我到這個點,因為這個點的導數是相當陡的。現在,在這個綠色的點,如果我再更新一步,你會發現我的導數,也即斜率,是沒那麼陡的。隨著我接近最低點,我的導數越來越接近零,所以,梯度下降一步後,新的導數會變小一點點。然後我想再梯度下降一步,在這個綠點,我自然會用乙個稍微跟剛才在那個品紅點時比,再小一點的一步,到了新的紅色點,更接近全域性最低點了,因此這點的導數會比在綠點時更小。所以,我再進行一步梯度下降時,我的導數項是更小的,​更新的幅度就會更小。所以隨著梯度下降法的執行,你移動的幅度會自動變得越來越小,直到最終移動幅度非常小,你會發現,已經收斂到區域性極小值。

回顧一下,在梯度下降法中,當我們接近區域性最低點時,梯度下降法會自動採取更小的幅度,這是因為當我們接近區域性最低點時,很顯然在區域性最低時導數等於零,所以當我們接近區域性最低時,導數值會自動變得越來越小,所以梯度下降將自動採取較小的幅度,這就是梯度下降的做法。所以實際上沒有必要再另外減小​。

這就是梯度下降演算法,你可以用它來最小化任何代價函式​,不只是線性回歸中的代價函式​。

機器學習之梯度下降法 梯度下降法分析

梯度下降法的基本思想是函式沿著其梯度方向增加最快,反之,沿著其梯度反方向減小最快。在前面的線性回歸和邏輯回歸中,都採用了梯度下降法來求解。梯度下降的迭代公式為 j j j j 在回歸演算法的實驗中,梯度下降的步長 為0.01,當時也指出了該步長是通過多次時間找到的,且換一組資料後,演算法可能不收斂。...

機器學習 梯度下降法

梯度下降法,一般用來求解線性回歸方程,我的理解是根據一組形如 特徵1,特徵2.結果 的資料來找到這些對應的特徵和結果之間的聯絡 例如,我們利用一組 銷量的資料判斷乙個物品的銷量和 之間的關係 我們要求的線性回歸方程可以表示為 銷量 引數 實質上其實就是找到對應的 引數 而當影響乙個結果的特徵不只有乙...

機器學習 梯度下降法

1 梯度下降法的邏輯思路 的取值影響獲得最優解的速度 取值不合適,甚至得不到最優解 是梯度下降法的乙個超引數 一般需要調參找到最適合的 太小,減慢收斂學習速度 太大,導致不收斂 2 梯度下降法的問題 3 其它1 具體實現 模擬損失函式 y x 2.5 2 1 資料集特徵值 plot x np.lin...