相關文章目錄:python
咱們將用來描述迴歸問題的標記以下:算法
表明訓練集中實例的數量數組
表明特徵的數量機器學習
表示第
個訓練實例,是特徵矩陣的第i行,是一個向量函數
表示特徵矩陣中第
行的第
個特徵,也就是第
個訓練實例的第
個特徵post
表明目標變量,也就是輸出變量學習
表明訓練集中的一個實例優化
表明第
個觀察實例cdn
表明學習算法的函數,或者加假設(hypothesis)blog
對於多變量線性迴歸,假設函數能夠設爲
爲了使公式可以簡化,引入 則假設函數變爲
進行向量化後,最終結果爲
咱們須要求出,使得對於每個樣本,帶入到假設函數中,能獲得對應的一個預測值,而咱們的目標,是使求出的預測值儘量的接近真實值
因爲咱們實際預測的值和真實值之間確定會有偏差,對於每一個樣本:
其中,爲當前樣本實際真實值,
爲預測結果,
即爲預測偏差
對於整個數據集來講,則:
偏差 是獨立的而且具備相同的分佈,而且服從均值爲0,方差爲
的正態分佈
因爲偏差服從正態分佈,因此:
帶入得:
咱們但願偏差越接近0越好,因爲偏差服從均值爲0的正態分佈,因此對應偏差越接近分佈的中心處越好。咱們能夠近似的用對應機率來表示當前正態分佈的縱座標值,則因爲各個樣本的偏差互相獨立,因此,將每一個樣本偏差機率相乘,得總似然函數爲:
咱們的問題是但願找到合適的,與咱們的數據組合後儘量的接近真實值 因此咱們須要求解上述似然函數的針對於
最大值,即求解最大似然函數
因爲上述似然函數中的累乘運算過於複雜,咱們能夠將其進行轉換,變成對數似然,求加和,即:
上述公式中, 都是已知的,只有
是未知的。 因此咱們的目標是 找出一組
,使上述似然函數最大,即求最大似然函數。 因爲只有
是未知的。上述問題能夠轉換爲,求
的最小值
最終,得出咱們的目標函數(也稱爲代價函數)爲:
進行向量化:
要求取得最小值時對應的
值,一個辦法就是求偏導。因爲
爲凸函數,因此在偏導等於0處取得最小值,此時的
即爲咱們所須要的,而且也是最優解 這種直接令偏導等於0,解方程得出
的方法稱爲正規方程
令,得:
雖然,經過正規方程,能夠求得最優解,可是,在實際項目中,咱們的樣本數量以及每一個樣本的特徵 數量很是大,這個時候,採用正規方程,算法的時間複雜度過高,耗時過高,甚至因爲樣本呢和特徵過大,或者矩陣不可逆,致使沒法計算。 尤爲對於矩陣求逆來講更是如此。因此,通常對於樣本數量和特徵數量較少時能夠採用此種求解方式。
對於通常狀況,咱們須要採用另一種很是經典的優化算法,即 梯度降低法
對於直接求解正規方程的方式,首先,並不必定可解,另外,時間複雜度太高。 而機器學習的常規套路,都是使用梯度降低法,去求解最小值問題。
梯度降低背後的思想是:
開始時咱們隨機選擇一組參數.計算對應代價函數,而後咱們須要尋找下一組能讓代價函數值降低最多的參數組合,一直迭代這個過程,直到最後代價函數值收斂,即找到一個局部最小值. 此時對應的
即爲咱們須要求的結果.
咱們並無嘗試找出全部的參數組合,因此,不能肯定咱們獲得的局部最小值是不是全局最小值。 可是,對於線性迴歸的代價函數來講,其實自己是個凸優化問題,因此局部最小值即爲全局最小值!
換個思路來理解,好比,你如今站在山上某一點,你須要下山,到達山底(即須要找到最小值點)<br> 在梯度降低算法中,你要作的就是,環顧四周,找到一個方向,往下走一步,而後再從新查找方向,往下走一步,以此循環,直到到達山底。<br> 上述場景中,影響到達山底的因素有兩個,一個是方向,另一個是步長。<br> 要想能快速到底山底,咱們首先須要保證每步走的都是最陡的方向,而後步子邁大點。 而最陡的方向,即爲梯度,又由於是找最小值,因此得沿着負梯度的方向,這就是梯度降低法
下面,咱們正式說下<br> 梯度降低法的基本結構(最小化) (下面表述中的
表示第幾回迭代)<br>
下面說下,梯度降低中的三種方式,即:批量梯度降低,隨機梯度降低和小批量梯度降低
批量梯度降低,其實就是在每次迭代中,在更新一組參數中的任意一個時,都須要對整個樣本的代價函數
求對應梯度 <br> 他的優勢是 容易獲得最優解,可是因爲每次都須要考慮全部樣本,因此速度很慢
下面看下具體數學表示
對於某次迭代
其中,,即特徵個數
進行向量化後,對於每次迭代
隨機梯度降低,其實就是在每次迭代中,在更新一組參數中的任意一個時,只須要找一個樣本求對應梯度,進行更新。 他的優勢是 迭代速度快,可是不必定每次都朝着收斂的方向
具體數學表示爲:
小批量梯度降低,其實就是在每次迭代中,在更新一組參數中的任意一個時,找一部分樣本求對應梯度,進行更新。
小批量梯度降低 其實就是上述兩種方法的權衡,實際應用中,大部分也都用此算法
梯度降低法中有兩個因素,一個是方向,即梯度,另一個就是學習率,也就是步長。
若是學習率太小,則達到收斂(也就是近似接近於最小值)所須要的迭代次數會很是高。 學習率過大,則可能會越過局部最小值點,致使沒法收斂
歡迎關注個人我的公衆號 AI計算機視覺工坊,本公衆號不按期推送機器學習,深度學習,計算機視覺等相關文章,歡迎你們和我一塊兒學習,交流。