梯度上升演算法與梯度下降演算法求解回歸係數怎麼理解?


其實是一回事了。最小化損失函數,就用梯度下降,最大化似然函數,就用梯度上升。

本質上都是一樣的。


我不理解的是求增加回歸係數跟這個梯度上升演算法怎麼搞到一塊了,我是小白....

現在懂了,看了一個人的推導過程

【機器學習筆記1】Logistic回歸總結


因為剛剛看到《機器學習實戰》的這一章節,一開始研究書中的梯度上升演算法代碼使確實懵逼了一下,不過自己推導了一番,作者確實採用的梯度上升演算法,只不過是稍微繞了一點。下面我就寫一下推導的過程,為簡單起見,將一些符號進行簡化,設樣本的類別標籤為y,回歸係數為w,樣本矩陣為x,誤差為e,步長為alpha 。那麼我們的目標是

最小化誤差e^{T}e (因為e是列向量)

反過來就是最大化-e^{T}e ,為消去因子,此處最大化-frac{1}{2}e^{T}e

-frac{1}{2}e^{T}e=-frac{1}{2}(xw-y)^{T}(xw-y) =f(w)

拆開來就是:f(w)=-frac{1}{2}(w^{T}x^{T}-y)(xw-y)
     =-frac{1}{2}(w^{T}x^{T}xw-w^{T}x^{T}y-y^{T}xw+y^{T}y)

到這就可以用梯度上升演算法了,對w求導可以得出

frac{ partial f(w)} {partial w} =x^{T}y-x^{T}xw=x^{T}(y-wx)=x^{T}e(矩陣求導可以參考周志華的《機器學習》,網上也有很多教程)

因此更新回歸係數的公式就是:w=w+alpha x^{T}e

這就是書中章節的梯度上升演算法的一個推導過程。我感覺在從這裡面可以看出梯度上升演算法和梯度下降演算法分別是用來求最大值和最小值,也許僅僅使一個負號的差別。


首先理解梯度是什麼,沿著梯度方向前進一點點,函數值會增加,那如果你要讓函數值減小,那就走梯度反方向。所以看你是要maximize或minimize你的函數值


梯度上升演算法:w = w + 調節因子 * 回歸係數;

梯度下降演算法:w = w - 調節因子 * 回歸係數;

其實原理上是一樣的,沒有什麼區別。只是引用上有點小區別


凸函數乘以負一不就是凹函數嘛,所以。。。


推薦閱讀:

梯度下降法和高斯牛頓法的區別在哪裡,各自的優缺點呢?
使用ReLU作為激活函數還有必要用交叉熵計算損失函數嗎?
為什麼隨機梯度下降方法能夠收斂?
為什麼 feature scaling 會使 gradient descent 的收斂更好?
尋找全局最小值和防止過擬合之間是不是矛盾的?

TAG:機器學習 | 回歸分析 | 梯度下降 |