[斯坦福大學2014機器學習教程筆記]第二章-梯度降低線性迴歸

    上一節中,咱們講了梯度降低算法,這一節咱們將要將梯度降低和代價函數結合獲得線性迴歸算法。它能夠用直線模型來擬合數據。算法

    首先咱們來回顧一下以前的知識點。左側爲梯度降低法,右側爲線性迴歸模型(包括線性假設和平方差代價函數)。機器學習

    咱們要作的就是將梯度降低法應用到最小化平方差代價函數。爲了應用梯度降低法,咱們要弄清楚公式中的導數項。函數

    當咱們計算完後,咱們將它們代回到咱們的梯度降低算法中。咱們就會獲得以下所示的式子。學習

    這就是咱們的線性迴歸算法。注意:在實現算法的時候,咱們要同時更新θ0和θ1 spa

    接下來,咱們看一下梯度降低是如何實現的。在咱們以前的例子中,出現過它容易陷入局部最優的問題。以下圖,咱們的起始位置不一樣會致使咱們獲得兩個不一樣的局部最優解。orm

   可是,線性迴歸的代價函數老是一個以下所示的弓狀函數。blog

    

    這個函數的特色就是只有一個全局最優。當你計算這種代價函數的梯度降低,只要你使用的是線性迴歸,它老是會收斂到全局最優。由於它並無其餘的局部最優解。io

    如今咱們看一下這個算法的使用。這裏有假設函數的曲線和代價函數J的曲線。bfc

    咱們在這個值的參數初始化,如何咱們會獲得一條線。方法

   若是咱們梯度降低一步,咱們會從這個點往左下方移動一點點。以後咱們會獲得另一條新的直線。咱們每降低一步,就會獲得代價更小的新的直線。隨着咱們不斷降低,直線看起來也愈來愈好。最後,咱們到了全局的最小值。

    顯然,此時的直線很好地擬合了數據。這就是梯度降低。

    咱們剛剛學習的算法有時候也被稱做Batch梯度降低(批量梯度降低法)。它意味着在梯度降低的每一步中,咱們都用到了全部的訓練樣本,在梯度降低中,在計算微分求導項時,咱們須要進行求和運算,因此,在每個單獨的梯度降低中,咱們最終都要計算這樣一個東西,這個項須要對全部個訓練樣本求和。所以,批量梯度降低法這個名字說明了咱們須要考慮全部這一"批"訓練樣本,而事實上,有時也有其餘類型的梯度降低法,不是這種"批量"型的,不考慮整個的訓練集,而是每次只關注訓練集中的一些小的子集。在後面的課程中,咱們也將介紹這些方法。

    將批量梯度算法應用到線性迴歸中,這就是用於線性迴歸的梯度降低法。

    若是你以前學過線性代數,你應該知道有一種計算代價函數最小值的數值解法,不須要梯度降低這種迭代算法。在後面的課程中,咱們也會談到這個方法,它能夠在不須要多步梯度降低的狀況下,也能解出代價函數的最小值,這是另外一種稱爲正規方程(normal equations)的方法。實際上在數據量較大的狀況下,梯度降低法比正規方程要更適用一些

    如今咱們已經掌握了梯度降低,咱們能夠在不一樣的環境中使用梯度降低法,咱們還將在不一樣的機器學習問題中大量地使用它。因此,祝賀你們成功學會你的第一個機器學習算法。

相關文章
相關標籤/搜索