2

我試圖找出梯度下降與八度。隨着每次迭代,我的觀測指數變得更大。我不確定是什麼問題,因爲我直接複製另一個函數。梯度下降:θ驅動不收斂

這裏是我的矩陣:

X = 1 98 
    1 94 
    1 93 
    1 88 
    1 84 
    1 82 
    1 79 

y = 97 
    94 
    94 
    78 
    85 
    85 
    76 

theta = 1 
     1 

我使用這個公式:

theta = theta - 0.001 * (1/7) * (X' * (X * theta - y)) 

我想通了最佳的θ驅動用的是什麼正常的方程,但只有少數迭代後我這些數字都在幾千。任何想法有什麼不對?

回答

1

你似乎是使用梯度下降線性迴歸,你的學習速度過高,如前面的答案中提到過,這個帖子只是增加一些可視化和解釋究竟是什麼在你的情況發生。

如下圖所示,學習速率足夠高以便在凸面成本曲面上收斂到全局最小值,θ值振盪並錯過最小點,因爲步長過大(如RHS所示數字)。如果你降低你的學習率(如LHS),收斂率將會降低,但最終你會達到全球最低。

您需要找到正確的alpha(學習率),以便收斂速度不會太慢或太高(這取決於數據,縮放功能將有所幫助)。

enter image description here

1

如果數值吹起來,然後你一步都要太大。基本上,你每次都在超調。如果你的步驟太大,你會看到一系列的估計值,例如[100,-100,1000,-1000,...] ......估計值將在連續的大正值和負值之間振盪。最簡單的解決方法是從

0.001 *(1/7)

改變你的步長恆定爲類似

1E-6

或或許甚至更小。

+1

爲了避免數值不穩定,實際上也可以更好地縮放數據。問題是X和Y都在100秒內,將X和Y除以100都不會改變解,但會產生相同的效果(有效地改變學習速率),但不會失去數值穩定性(大數乘法與小數數字是基本的不穩定操作之一) – lejlot