線性迴歸

定義:線性迴歸(相關資料)試圖學習一個線性模型以儘可能準確地預測輸出標記,其函式表示為:

z = w^T + b\\

邏輯(Logistic)迴歸

邏輯迴歸實際上是一種分類模型。

邏輯迴歸 將

分類任務

的真實標記 y 與

線性迴歸

模型的預測值聯絡起來。

以一個二分類任務為例,其輸出標記

y\in {0,1}

,而線性迴歸模型產生的預測值

z=w^T+b, z\in [-\infty, +\infty]

是連續值,於是,我們需要將連續值z轉換為0/1值。

最理想的是“單位階躍函式”(unit-step function):

f(n)= \begin{cases} 0, & \text {z<0} \\ 0.5, & \text{z=0} \\1, & \text{z>0} \end{cases} \\

即若預測值z大於零就判為正例,小於零就判為負例,預測值為臨界值零則可任意判別,下圖繪製了單位階躍函式和對數機率函式:

線性迴歸 and 邏輯迴歸

從上圖可以看出,單位階躍函式不可導,而我們在模型求解的步驟中會對出現 y 對 z 的導數,這樣單位階躍函式就不可用了。於是我們希望找到能在一定程度上近似單位階躍函式的 “替代函式”,並希望它單調可微。對數機率函式(簡稱 “對率函式”)正是這樣一個常用的替代函式:

y = \frac{1}{1+e^{-z}} \\

對數機率函式是一種“sigmoid函式”,它將 z 值轉化為一個接近0或1的 y 值,並且其輸出值在 z=0 附近變化很陡。

對數機率函式有個非常好的性質,就是它是任意階可導的函式。

將對數機率函式作為判別函式代入到線性迴歸模型中,得到

y = \frac{1}{1+e^{-(w^Tx+b)}} \\

logistic函式實現了任意實數到 [0,1] 的對映,這樣我們的資料集

(x_1,x_2,...,x_n)

,不管其輸出 y 是大於 1 或者小於 0,都可以對映到 [0,1]區間進行分類。實際上 y 給出了輸出為 1 的機率,比如當 y=0。8,那麼說明有 80% 的機率輸出為 1,輸出為0的機率是輸出為 1 的補集,也就是 20%。

若將 y 視為樣本 x 作為正例的可能性,則 1-y 是其反例的可能性,兩者的比值:

\frac{y}{1-y} \\

稱為“機率”,反映了 x 作為正例的 **相對可能性**。對機率取對數則得到“對數機率”

ln\frac{y}{1-y}=w^Tx+b \\

由此可以看出,上式實際上是在用線性迴歸模型的預測結果是逼近真實標記的對數機率,因此,其對應的模型稱為“對數機率迴歸”。

需要注意的是,雖然它的名字是“迴歸”,但實際確實是一種分類方法。這種方法有很多優點:

它是直接對分類可能性進行建模,無需事先假設資料分佈,這樣就避免了假設分佈不準確所帶來的問題;

它不是僅預測出 “類別”,二是可得到近似機率預測,這對許多需利用機率輔助決策的任務很有用;

對數機率函式是任意階可導的凸函式,有很好的數學性質,現有的許多數值最佳化演算法都可以直接用於求取最優解,例如梯度下降法、擬牛頓法等。

如果我們有合適的引數 w 和 b,那麼我們對樣本 x 分類就可以透過上述公式計算出一個機率,如果這個機率大於 0。5,我們就可以說樣本是正樣本,否則樣本是負樣本。舉個例子,對於判斷西瓜是否成熟的應用場景,對於給定的西瓜,我們定義成熟西瓜為正樣本,生瓜為負樣本。我們透過計算出的機率值即可判斷西瓜是否成熟。

下面我們來看看如何確定 w 和 b。若將 y 視為類後驗機率估計

p(y=1|x)

,則有

ln\frac{p(y=1|x)}{p(y=0|x)}=w^Tx+b \\

簡單起見,我們令:

h_w(x)=\frac{1}{1+e^{-(w^Tx+b)}} \\

顯然有:

p(y=1|x;w,b)=h_w(x)=\frac{e^{w^Tx+b}}{1+e^{w^Tx+b}} \\

p(y=0|x;w,b)=1-h_w(x)=\frac{1}{1+e^{w^Tx+b}} \\

上式即為在已知樣本 x 和引數 w 和 b 的情況下,樣本 x 屬於正樣本(y=1)和負樣本(y=0)的條件機率。理想情況下,求出各個點的機率都為 1,也就是所有點都分類正確。但是考慮到實際情況,求出的機率不可能完全等於 1,這時候樣本點的機率越接近 1,分類效果就越好。比如一個樣本屬於正樣本的機率為 0。51,那麼我們就可以說明這個樣本屬於正樣本。另一個樣本屬於正樣本的機率為 0。99,那麼我們也可以說明這個樣本屬於正樣本。但是顯然,第二個樣本機率更高,更具說服力。我們可以把上述兩個機率公式合二為一:

Cost(h_w(x),y)=h_w(x)^y(1-h_w(x))^{1-y} \\

合併出來的 Cost,我們稱之為代價函式。當 y=1 時,後面一項為 0;當 y=0 時,前面一項為0。為簡化問題,我們隊整個表示式求對數:

Cost(h_w(x),y)=ylnh_w(x)+(1-y)ln(1-h_w(x)) \\

這個代價函式是對一個樣本而說的,給定一個樣本,透過這個公式就能求出樣本所屬類別的機率,而這個機率越大越好,所以也就是求解這個代價函式的最大值。這只是對一個樣本來說的,而樣本集的代價函式之和只需要將所有樣本的代價函式累加即可,因此整個樣本集的生成機率為:

J(w)=\sum_{i=1}^{m}[y^{(i)}ln(h_w(x^i))+(1-y^{(i)})ln(1-h_w(x^{(i)}))] \\

(等同於交叉熵的公式)

求 J(w) 的極大值等價於求 −J(w) 的最小值,注意到 J(w) 是關於 w 的高階可導連續凸函式,根據凸最佳化理論,經典的數值最佳化演算法如梯度下降法、牛頓法等都可以求得其最優解。這裡我們以梯度下降法為例,求 J(w) 的極小值。

邏輯迴歸詳解

進一步聯想

根據以上推導,可聯想到 CNN 的具體操作:

Process 1。 先利用 **線性迴歸** 提取高維資料特徵(由於batch中每個資料獨立不存在“序”關係,所以需轉化為k維向量),同時作低階預測;

Process 2。 而後利用 **邏輯迴歸**(也就是sigmoid)作為非線性函式,對上述提取的特徵進行分類,將機率對映到 0~1,同時作高階預測;

Process 3。 最後使用 **交叉熵** 來刻畫輸出機率與真實機率之間的距離,並作為代價函式來累積一個batch的總誤差,再透過反向傳播來達到最佳化目的。

End。 交叉熵是由邏輯迴歸推導而出,而邏輯迴歸又由線性迴歸推導而出,三者並不是獨立存在,相互之間存在依賴關係。