\[ h_\theta(x)=\theta_0+\theta_1x \]算法
很顯然這是一個一次函數,使用一次函數是爲了方便學習。爲了簡便,咱們一般簡寫成:
\[ h(x)=\theta_0+\theta_1x \]機器學習
學過一次函數的都知道表明的是什麼。\(\theta_0\)在這裏表明的是截距,\(\theta_1\)表明斜率。在這裏咱們將會不斷調整截距和斜率,儘可能獲得一個合適的假設函數。咱們須要儘可能減小真實數據和假設函數的輸出之間的平方差。函數
方差學習
平方差函數(代價函數)
\[ J(\theta_0,\theta_1)=\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \]
而咱們的目標是:
\[ \mathop{minisize}\limits_{\theta_0\theta_1}\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \]
就是但願找到一對\(\theta_0\theta_1\)使得方差函數是最小的。spa
在上面咱們明確了咱們的目標:
\[ \mathop{minisize}\limits_{\theta_0\theta_1}\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \]
咱們須要一種高效的方法,去尋找方差最小時的解。數學
想像一下你在一座大山上,在梯度降低算法中咱們要作的就是旋轉360度,看看咱們的周圍,並問本身我要在某個方向上用小碎步儘快下山。若是咱們站在山坡上的這一點,你看一下週圍你會發現最佳的下山方向,如今你在山上的新起點上 ,你再看看周圍,而後再一次想一想 ,我應該從什麼方向邁着小碎步下山? 而後你按照本身的判斷又邁出一步 ,往那個方向走了一步,而後重複上面的步驟 ,從這個新的點,你環顧四周,並決定從什麼方向將會最快下山 ,而後又邁進了一小步,又是一小步,並依此類推,直到你接近局部最低點的位置。it
梯度降低是一種不斷且同時更新的。咱們採用一次函數來學習,所以只須要更新兩個值:
\[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) \]
其中\(\alpha\)是成長速率,就是每一次更新的步長。io
其中要注意的是,\(\theta\)是先計算出來再賦值。也就是說,全部\(\theta\)的更新不會由於別的\(\theta\)先更新了而被影響。class
所以,\(\alpha\)要控制好大小,可是直觀點看是寧願偏小也不要過大。方法
代價函數不必定是隻有一個谷底的,可能有幾個谷底。
若是隻有一個谷底,那麼梯度降低找到的必定是全局最優解。
而不止一個谷底的時候,咱們觀察一下表達式:
\[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) \]
當到達某個谷谷底,但該谷底不是最優的。那麼此使後面的微積分項表明的是函數的斜率,此時必定爲0。那就說明,只要達到谷底,函數就會中止迭代,不會繼續去尋找真正的全局最優解。
所以咱們能夠得出一個結論:一開始選的起始點會影響最後解的結果,迭代出來的不必定是全局最優解。
這裏是使用一次函數作例子,若是不是一次函數那推廣便可。
\[ J(\theta_0,\theta_1)=\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \tag{1} \]
\[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\tag{2} \]
將(1)代入(2):
\[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \tag{3} \]
將1和0分別代入\(\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\),可得
\[ j=0:\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})\tag{4} \]
\[ j=1:\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})·x^{(i)}\tag{5} \]
將(4),(5)代入(2),得:
\[ \theta_0=\theta_0-\alpha\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)}) \]
\[ \theta_1=\theta_1-\alpha\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})·x^{(i)} \]
至此,咱們就獲得了兩個參數的迭代公式。