理解 Gradient Descent 演算法
最近在看吳恩達的機器學習課程,剛看到第四周,其中線性回歸和邏輯回歸都用到了 Gradient Descent 演算法,用來求價值函數的最小值。由於課程里沒有對這個演算法詳細解釋,我就自己研究了下。
首先好比我們有一個這樣的價值函數 ,其中預測函數是一個簡單的線性方程 。
然後每次循環的時候同時更新 的值
(j = 0, i = 1)
問題來了, 是什麼東西?
其實這個時候就是體現數學基礎的地方了。
維基百科解釋:
Derivative 導數,我記得當時課程里用的就是這個詞,我查字典發現是派生的意思。。。(黑人問號臉.jpg),然後就沒有然後了。
現在弄明白了,更新 的時候,其實是對 Cost Function 的 求的導數,那麼用當前的 theta 減去 和導數的乘積,必然會找到 theta 對應 Cost Function 的更低的一個點。不服?我可以證明。
假設,我們的初始 theta 是 ,這個時候我們對 Cost Function 求關於 的導數,它的值有三種情況,大於0,小於0,或者等於0。如果等於0,那麼函數則已經達到最小值。我們主要討論不等於0的兩種情況。
大於0,那麼就是說,Cost Function 在theta 等於 的時候,如果 theta 增加那麼,Cost Function 的值會有增大的趨勢,又因為 theta 的導數乘以 大於0,所以 theta 減去他們的乘積會將新的 theta 更新為更小的值,也就是說 Cost Function 會往更小的值逼近。
小於0,其實和大於0的情況相似,只不過變化趨勢變了,同時此時更新 theta 後 theta 更大,從而 Cost Function 的值還是更小。
至此,關於 Gradient Descent 的困惑都已解開。
(另外,我發現 http://www.hostmath.com/ 提供的數學函數編輯器還是很好用的)
參考文章:
gradient descent 梯度下降演算法 - Kenney Qin 的專欄 - CSDN博客
維基百科 - Gradient descent
推薦閱讀:
※數學建模競賽的一些心得體會(關於每年的比賽)
※美國教育繞不過去的坎,更是學生的痛
※科普小說《遇見喜歡數學的女孩》三部曲下載地址
※有趣的數學問題
※學好數學要注意什麼?