- 已經知道了logistic回歸模型,
- 也知道了損失函數
- 損失函數是衡量單一訓練樣例的效果,
- 還知道了成本函數
- 成本函數用於衡量參數w和b的效果在全部訓練集上面的衡量
- 下面開始討論如何使用梯度下降法來訓練或學習訓練集上的參數w和b
- 回顧一下:
- 這里是最熟悉的logistic回歸算法
- 第二行是成本函數J,成本函數是參數w和b的函數,他被定義為平均值,即1/m的損失函數之和,
- 損失函數可以用來衡量你的算法的效果,
- 每一個訓練樣例都會輸出y^(i),把它和基本真值標簽y(i)進行比較,等號右邊展開完全的公式,
- 成本函數衡量了參數w和b在訓練集上的效果,
- 要習得合適的參數w和b,很自然的就想到我們想找到使得成本函數盡可能小的w和b
- 下面開始來看看梯度下降法
- 在這個圖中,橫軸表示參數w和b,實際中,w可能是高緯度的,但是為了繪圖方便,這里讓w是一個實數,b也是一個實數,成本函數J(w,b)是在水平軸w和b上的曲面,曲面的高度表示了J(w,b)在某一點的值,
- 我們想要做的就是找到這樣的w和b使得其對應的成本函數j值是最小值,
- 可以看到成本函數J是一個凸函數,
- 因此我們的成本函數之所以是凸函數,凸函數這性質是我們使用logistic回歸的這個特定的成本函數J的重要原因之一,
- 所以為了找到更好的參數值,我們要做的就是利用某個初始值,初始化w和b,用那個小紅點表示,
- 對於logistic回歸而言,幾乎是對任意的初始化方法都有效,通常使用0來進行初始化,但是對於logistic回歸而言,我們通常不那么做,但是因為函數是凸的,無論在哪里進行初始化,都應該到達同一點,或者是大致相同的點,
- 梯度下降所做的就是從初始點開始,朝着最陡的下坡方向走一步,在梯度下降一步后,很有可能停一步,因為他在尋找梯度下降最快的方向,最后可能會找到最終的最優解,
- 這張圖片闡述了梯度下降法
- 下面開始考慮更新w,讓w為
- 在算法收斂之前,將會重復這樣做,
- 這里的阿爾法表示學習率,學習率可以控制每次一次迭代,或者梯度下降法中的步長,之后將會討論如何選擇學習率阿爾法,
- 其次,這里面有一個導數,這個就是對參數w的更新或者變化量,
- 當我們開始編碼,來實現梯度下降,我們會使用代碼中變量名的約定dw表示導數
,我們使用dw作為導數的變量名,
- 當我們開始編碼,來實現梯度下降,我們會使用代碼中變量名的約定dw表示導數
- 現在,我們確保梯度下降法更新是有用的,
- 在橫軸上面的一點w和其對應的成本函數J(W)在曲線上的這一點,
- 記住導數的定義是函數在這一點的斜率,而函數的斜率是高除以寬,在這個點是一個相切於J(w)的小三角形,