吳恩達深度學習 2 4 梯度下降

2021-09-29 23:18:56 字數 2484 閱讀 5311

在上一節中學習了邏輯回歸模型,也知道了損失函式,損失函式是衡量單一訓練樣例的效果,還知道了成本函式,成本函式用於衡量引數w和b的效果,在全部訓練集上來衡量,下面我們討論如何使用梯度下降法來訓練或學習訓練集上的引數w和b。

回歸一下,以下圖中是熟悉的邏輯回歸演算法,第二行是成本函式,成本函式j是引數w和b的函式,它被定義為平均值,即1

m\frac

m1​的損失函式之和,損失函式可以衡量你的演算法的效果,每乙個訓練樣例都輸出y(i

)^\hat}

y(i)^​

,把它與實際的真值標籤y(i

)y^y(i)

進行比較,等號右邊展開完整的公式,成本函式衡量了引數w和b在訓練集上的效果。

要學習到合適的引數w和b,很自然地就想到,我們想找到使得成本函式j(w

,b)j(w,b)

j(w,b)

盡可能小的w和b,下面來看看梯度下降法,看下圖,這個圖中的橫軸表示空間引數w和b,實踐中,w可以是更高維度的,為了方便繪圖,我們讓w是乙個實數,b也是乙個實數,成本函式j(w

,b)j(w,b)

j(w,b)

是在水平軸w和b上的曲面,曲面的高度表示了j(w

,b)j(w,b)

j(w,b)

在某一點的值。

我們所想要做的就是找到這樣的w和b,使其對應的成本函式j值是最小值。可以看到,成本函式j是乙個凸函式,這個成本函式是凸函式的這個性質是邏輯回歸演算法使用這個特定成本函式j的重要原因之一。

為了找到更好的引數值,我們要做的就是,用某初始值初始化w和b。對於邏輯回顧而言,幾乎是任何的初始化方法都有效,通常用0來進行初始化,但是對於邏輯回歸,我們通常不這樣做,但因為函式是凸的,無論在**初始化,都應該到達同一點,或者大致相同的點。

梯度下降法所做的就是,從初始點開始,朝最陡的下坡方向走一步,在梯度下降一步後或許在那裡停下,因為它正試圖沿著最快下降的方法往下走,或者說,盡可能快地往下走,這是梯度下降的一次迭代,這張闡述了梯度下降法,我們多寫一點細節。

為了更好地說明,讓我們來看一些函式,你希望得到最小化j(w

)j(w)

j(w)

,函式可能看起來像這樣,為了方便畫,先忽略b,僅僅是用一維曲線來代替多維曲線,梯度下降法是這樣做的,我們將重複執行以下的更新操作,我們更新w的值,使用:=:=

:=表示更新w,w的更新公式為w:=

w−αd

j(w)

dww:=w-\alpha \frac

w:=w−α

dwdj

(w)​

在演算法收斂之前,會重複這樣去做,要說明的是,公式中的兩點,公式中的α

\alpha

α表示學習率,學習率可以控制每一次迭代或者梯度下降法中的步長,我們之後會討論如何選擇學習率α

\alpha

α,其次在這裡的這個數dj(

w)dw

\frac

dwdj(w

)​是導數,這就是對引數w的更新或者變化量。當我們開始編寫**來實現梯度下降,我們會使用**中變數名的約定,dwdw

dw表示導數。

現在我們確保梯度下降法更新是有用的。如圖所示,w在橫座標上的某一點,對應的成本函式j(w)在曲線上有對應位置的一點。記住導數的定義,是導數在這個點的斜率,而導數的斜率是高除於寬,在這個點相切於j(w)的乙個小三角形,在圖中位置的導數是正的,新的w值等於w自身,減去學習率乘於導數。導數是正的,從w中減去這個乘積,接著向左邊走一步,通過梯度下降,讓演算法漸漸地減小這個引數w。

另乙個例子,如圖所示,w的位置在左邊,這個點處的斜率將會是負的,用梯度下降法去更新,w將會減去α

\alpha

α乘上乙個負數。慢慢地,使得引數w增加,不斷用梯度下降法來迭代,w會變得越來越大。無論你初始化的位置,是在左邊還是右邊,梯度下降法會朝著全域性最小值方向移動。

當前j(w)的梯度下降法只有引數w,在邏輯回歸中,成本函式是乙個含有w和b的函式。在這種情況下,梯度下降的內迴圈就是引數w和引數b的更新公式。

當函式j有兩個以上的變數,不使用小寫字母d而使用花哨的符號∂

\partial

∂,這個符號稱為偏導數符號。如果j只有乙個變數,就用小寫字母d。唯一的區別是,是用偏導數符號還是小寫字母d取決於你的函式j是否含有兩個以上的變數。變數超過兩個就用偏導數符號∂

\partial

∂,如果函式只有乙個變數,就用小寫字母d,這是在微積分裡乙個有趣的符號規則。

吳恩達機器學習筆記(1) 梯度下降隨記

賦值 a b a a 1 而不能使用a b,a a 1,這兩行只相當於做了乙個判斷 梯度下降是乙個用來求函式最小值的演算法,我們將使用梯度下降演算法來求出代價函式?0,1 的最小值。批量梯度下降 batch gradient descent 演算法的公式為 其中?是學習率 learning rate...

梯度下降 from 吳恩達的機器學習

梯度下降 用來求函式最小值的演算法,使用梯度下降演算法來求出代價函式的最小值。梯度下降思想是 開始時我們隨機選擇乙個引數的組合 計算代價函式,然後我們尋找下乙個能讓代價函式值下降最多的引數組合。我們持續這麼做直到到到乙個區域性最小值 local minimum 因為我們並沒有嘗試完所有的引數組合,所...

吳恩達機器學習筆記 梯度下降法

1 假設函式的引數更新要做到同時更新,即先將求得的引數放在統一的temp中,然後同時賦值給對應的引數w0,w1,w2,w3.2 特徵縮放和收斂速度問題 倘若,特徵向量中一些特徵值相差太大,就會導致代價函式特徵引數的函式曲線很密集,以至於需要多次迭代才能達到最小值。學習率 決定演算法收斂的速度,較大的...