1. 損失函數
在線性回歸分析中,假設我們的線性回歸模型為:
![]()
樣本
對應的正確數值為:![]()
現在假設判別函數的系數都找出來了,那么通過判別函數G(x),我們可以預測是樣本x對的值為
。那這個跟實際的y的差距有多大呢?這個時候我就出來一個損失函數:

其實損失函數很容易理解,就是所有樣本點的預測的值跟實際的值之間的差距的表達式而已。至於為什么有個1/2 分數,那只是為了后面求導的時候方便約掉那個平方而已。
2. 隨機梯度下降算法
其實梯度下降算法很好理解的。我們有了線性回歸模型了,那么我們的目標就是要找出這些系數,而且這些系數怎么樣也是最好的了。梯度下降算法就是來優化這個內容的,就是找出最佳的回歸系數:![]()
而最佳的回歸系數是不是要最小化
,就是讓損失函數的值越小越好。

當只有兩個系數的時候,我們的損失函數就如上圖一樣。那么谷底就是一個最優解了。那么應該怎么來找到谷底呢?是不是當我們初始化
之后,然后往谷底的方向慢慢來調節
,讓損失函數的值越來越小呢。對,就是這樣的,那么怎么來確定這個方向呢?這是關鍵所在。這時候,我們就需要理解對一個函數求導的意義了。其實導數的意義很簡單。
在一個而平面上,如A點的導數就是該函數在點A的斜率。

如果我們的回歸系數在優化的過程中,是按照下面的式子來優化的:
![]()
是步長,就是我們在優化
時候,往損失函數最小化的方向走的一個長度。
按照(1)式子,因為,即導數
是負的,那么
這個系數再減的話,就相當於加了,就是往導數的方向走,那么導數的值就越來越大,導數這條直線就越來越平。但導數這條直線平移x軸的時候,就是谷底了,也就是損失函數的最優解了。
根據上面的坐標軸圖,如果A點在右邊也沒關系,如果在右邊,那么
就為正數,
就相當於
減去一個值,同樣也是往最小的方向走,導致的值越到越小,當導數這條直線平行x軸時候,就到谷底了,也就是到了最小的地方了。
那么對所有的系數進行如下的操作,就能找到一個最優解了。

你也許有個問題,就是步長
因為是認為指定的,它的取值會不會另損失函數不能到達谷底,只是在附近而已。這個是會的,所以有些算法就專門針對這個問題進行研究,比如當越接近谷底的時候步長
越來越小等。
