深度學習系列一:邏輯迴歸與線性迴歸

概念:

迴歸是機器學習中一個基礎概念,通俗來講,即從有限的現實事件中提取一系列特徵,通過發現這些特徵之間的關係,尋找其規律,來通過已有的特徵來預測或判斷一個相關的結果,對應數學概念來說,即建立一個數學模型(建模),並對一些已有數據提取其特徵轉換爲自變量,將這一系列自變量輸入到模型之中(輸入),經過模型計算得到因變量(輸出),通過把計算得到的因變量與已有的真實因變量對比(使用損失函數),應用一些優化方法來優化模型(訓練),使用訓練過的模型來對一些已有的自變量去預測其結果(預測)。

數學中的迴歸方法很多,各類迴歸方法雖然在一些細節方面有所差異去,但本質上卻是比較一致的,不同的迴歸方法的提出,主要基於不同的應用場景,當需要解釋的現實規律不同時,需要找出不同的模型來進行適配,而線性迴歸與邏輯迴歸即爲比較典型的兩種類型。

  • 線性迴歸
    一種當自變量與因變量之間主要呈現線性關係的經典模型,應用於金融、經濟學、流行病學等各個領域,其表達式如下:
    f(x)=θ0x0+θ1x1+θ2x2...+θnxn+b f(x)=θ_0​x_0​+θ_1​x_1​+θ_2​x_2​...+θ_n​x_n​+b
    簡化爲向量形式:
    hθ(x)=θTx+b h_\theta(x)=\theta^Tx+b
    損失函數一般可以選用均方差,表達式如下:
    loss=12mi=1m(hθ(xi)yi)2 loss=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x_i)-y_i)^2
    寫成矩陣形式:
    L(w)=12YXTW2 L(w)=\frac{1}{2}||Y-X^TW||^2
    可以證明該函數爲凸函數,因此可以通過求導的方式得到其極值,以此得到最優參數使loss最小。
    優化模型的方法可以採用最小二乘法,用損失函數對w求導,並令結果爲0:
    L(w)w=(YXTW)=0 W=(XXT)1XY \frac{\partial L(w)}{\partial w}=-(Y-X^TW)=0\\ \ \\ W=(XX^T)^{-1}XY

    此外,也可以採用交叉熵作爲損失函數,使用梯度下降法進行優化,相關的資料和文章很多,這裏就不多做介紹了。

    從表達式上來看,線性迴歸的特點很明顯,需要數據特徵之間存在線性關係,當輸出量爲差別較大的離散量時,模型的訓練會很困難,而且無法很好的預測結果,只能簡單的以某個閾值作爲分類的標準,因此,提出邏輯迴歸模型來彌補這個缺陷。

  • 邏輯迴歸
    常見邏輯迴歸解決的問題中,因變量一般是true or false的關係,例如在判定某種癌症問題上,通過提取一類人羣的特徵如身高體重等(自變量),以及結果如是否患有該種類癌症(因變量),去尋找自變量和因變量的關係(參數θ),並用以推斷某人是否患有該類癌症,其結果不具有連續性特徵。
    邏輯迴歸主要在線性迴歸的基礎上,將結果輸入到sigmoid函數中去,即將該連續結果映射到0-1的區間中,因此可以將輸出的結果視爲分類爲True的概率。

    sigmoid函數表達式如下:
    f(z)=11+ez f(z)=\frac{1}{1+e^{-z}}
    因此邏輯迴歸的表達式爲:
    hθ(x)=11+eθTx h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}
    對於邏輯迴歸損失函數的選擇上,由於對輸出加入了sigmoid激活函數,如果採用均方差作爲損失函數,當輸出接近0或者1時,會出現梯度消失的問題,結合sigmoid函數曲線來看:在這裏插入圖片描述
    很顯然,當輸出接近0或者1時,其斜率幾乎爲0,而均方差損失函數在求導後,在反向傳播的過程中會再次與sigmoid函數的導數向乘,造成梯度消失,而採用交叉熵則可以避免這個問題,後續文章中會詳細講到,交叉熵表達式如下:
    loss=12mi=1m(yilog(hθ(xi))+(1yi)log(1hθ(xi))) loss=-\frac{1}{2m}\sum_{i=1}^m(y_ilog(h_\theta(x_i))+(1-y_i)log(1-h_\theta(x_i)))
    此外,有文章提出,在邏輯迴歸中採用均方差損失函數與與線性迴歸另一個不同之處在於該損失函數會出現許多局部極小值,對於使用梯度下降等方法求解全局最優解不利,本文尚未進行相應證實。

    之後採用梯度下降法來優化參數,使損失函數逐步趨於最優解,以此來進行模型的優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章