1. 程式人生 > >深度學習系列(1)——從線性迴歸說起

深度學習系列(1)——從線性迴歸說起

為什麼先說線性迴歸

本文適合入門級同學,老司機繞行。
吳恩達老師的機器學習課程,介紹的第一個模型就是線性迴歸模型。機器學習(尤其是監督學習),主要圍繞分類和迴歸兩類問題展開,而線性迴歸模型作為最簡單的迴歸模型,與大多數監督學習演算法具有相同的建模思路,包括建立損失函式、優化引數、模型評估。可謂麻雀雖小五臟俱全,瞭解線性迴歸的建模思想能夠有助於理解複雜的深度學習模型。

什麼是線性迴歸:一個簡單的例子

import numpy as np
from numpy import random
import matplotlib.pyplot as plt

X = random.uniform(0
, 30, 100) # 隨機生成在[0,30]區間內服從均勻分佈的100個數 y = 1.85 * X + random.normal(2, 5, 100) # 對X乘以固定係數後加上隨機擾動 plt.scatter(X, y) plt.xlabel('X') plt.ylabel('y') plt.show()

隨機生成的X和y散點圖

以上程式碼隨機生成一組樣本X和y,現在給定一組X值,需要預測其對應的y值。

解決這個問題的思路如下:

  • 假設X和y之間存線上性關係,即y=wX+b;
  • y^=wX+b,其中y^表示根據線性方程計算得到的y值(稱為估計值),為儘可能準確的表達樣本中X和y之間的關係,我們需要找到最優的
    w
    b,使得y的實際值和估計值之間的誤差|yy^|最小化。

以上問題中X稱為自變數,y稱為因變數,找到最優直線方程y=wX+b,使得因變數的估計值與實際值之間的誤差最小的過程,稱為線性迴歸。

線性迴歸模型的數學推導

  • 將所有樣本點用座標表示為(xi,yi)i={1,2,...,m},即共有m各樣本點.
  • 假設線性方程形式為y=wX+b,則對於所有的iyi^=wxi+b.
  • 樣本誤差可表示為:
    loss=i=1m|yi
    ^yi|
    loss=i=1m|wxi+byi|
  • 找到最優引數wb使得樣本誤差loss值最小,此時可將loss看成是關於wb的函式,即求解無約束最優化問題:minloss=i=1m|wxi+byi|
  • 雖然線性迴歸可採用最小二乘法求解,但是相對梯度下降法來說,最小二乘法在機器學習中具有很大的侷限性,因此本文介紹梯度下降法求解線性迴歸問題,計算梯度需要對目標函式求偏導,而上面這種形式的目標函式不便於求偏導,因而轉換成誤差平方和形式:minloss=i=1m(wxi+byi)2.
  • 梯度下降法主要思想為通過不斷迭代使得解沿著目標函式值下降的方向變化,知道達到指定的精度或是迭代到一定的次數才終止,從而逼近最優解。設函式形式為f(x,y),則當前最優解為