Supervised learning demo
摘要:
監督學習案例
規範
假設函式: 使用h(hypothesis, 假設)表示
輸入(input value): x
輸出(output value): y
引數(Parameters):\(\theta\)
房價的Siz...
監督學習案例
規範
- 假設函式: 使用h(hypothesis, 假設)表示
- 輸入(input value): x
- 輸出(output value): y
- 引數(Parameters):\(\theta\)
房價的Size和Price的預測
- 建立一個線性模型:\(h_\theta(x) = \theta_0 + \theta_1x\)
-
要讓我們fit的model與y差異最小, 稱之為最小化(minimize)
- 在這個案例中使用\[J(\theta_0, \theta_1) = {1\over2m}\sum_{i = 0}^m(h\theta(x^{(i)}) - y^{(i)})^2\]
- 上面的就是我們的代價函式(cost function), 因為我們有讓得到的和除以了2m, 所以我們的到函式也稱之為平均誤差函式(squared error function), 注意: cost function的自變數時theta_0和theta_1, 不在是我們熟悉的x了
- \[{minimize_{\theta_0\theta_1}} J(\theta_0, \theta_1)\] 表示求出一個\(\theta_0\) 和\(\theta_1\) 使得\(J(\theta_0, \theta_1)\) 的值最小, 我們稱之為最小化的過程, 上面的這個表示式就是我們的優化目標(optimization objective), 也就是我們的目標函式
- 對於線性迴歸模型來說, 它的\(J(\theta_0, \theta_1)\) 目標函式是一個凸函式(沒有區域性最優點, 只有一個全域性的最優點), 在二維上是拋物線, 在三維上是一個碗狀, 對於三維的(J有兩個theta引數), 一般使用等高線圖來替代三維凸函式
- 使用gradient regression梯度降維求出最優解, 梯度降維的公式為\(\theta_0 := \theta_0 - \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\) , 對於另一個\(\theta_1\) 也是一樣的,\(\theta_1 := \theta_1 - \alpha \times {\partial\over\partial\theta_1}J(\theta_0, \theta_1)\) , 上面的是公式, 在實際更新我們的引數\(\theta_0, \theta_1\) 的時候, 應該保證\(\theta_0, \theta_1\) 同步更新, 所以應該這樣子\[tmp0 := \theta_0 - \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\] \[tmp1 := \theta_0 - \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\] \[\theta_0 := tmp0\] \[\theta_1 := tmp1\] , 在最後同步更新\(\theta_0\) 和\(\theta_1\) 的值
-
關於梯度下降公式的細節
- 公式中,\(\alpha\) 表示學習率,\({\partial\over\partial\theta_0}J(\theta_0, \theta_1)\) 表示梯度下降的方向, 所以\(\alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\) 表示\(\theta_0\) 要更新多少的值, 形象一點就是說, 一個人在一個山頂上, 他步子的大小為\(\alpha\) , 他希望儘快下山的方向為\({\partial\over\partial\theta_0}J(\theta_0, \theta_1)\) , 這樣我們就可以更新\(\theta_0\) 的值了
- 雖然我們在公式中規定了\(\alpha\) 學習率, 但是並不代表我們走的每一步就是不變的, 因為導數是在變化的, 為最低點的時候為0, 在其他地方有時別的值
- 要應用梯度下降法, 我們需要為\(\theta_0\) 和\(\theta_1\) 進行初始化, 一般來說都初始化為0, 但是也要視情況而定
- 什麼時候停止梯度下降, 我們可以規定一個閾值, 當我們的\(\alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\) 小於這個閾值的時候停止
-
其他
- 對於這個房價的模型, 我們除了使用梯度下降的方法求出我們的目標函式之外還可以使用matrix的方法來求, 這個更加的簡單
- 我們每求一次\(J(\theta_0, \theta_1)\) 的值就要遍歷一遍所有的資料, 因為the definition of the\(J(\theta_0, \theta_1)\) is\[\sum_{i=1}^{m}{1\over2m}{(h(x^{(i)}) - y^{(i)})^2})\] , 這種方式我們稱之為Batch梯度降維