本博客及後續博客翻譯和記錄學習“Unsupervised Feature Learning and Deep Learning Tutorial”的收穫及體會!
1 線性迴歸
1.1 問題形式化
作爲新手,就從如何實現線性迴歸開始吧!我們需要熟練掌握目標函數、目標梯度和目標優化。這些基本的概念、方法和工具將是接下來學習更加複雜的算法的基礎。切記打牢地基莫忽視!
線性迴歸的目標是根據一個輸入向量x∈Rn 預測一個目標值y 。例如:預測一個房子的價格,y 表示房價,特徵x 中的元素xj 表示房子的屬性(大小、房間數目)。假設給定很多個房子,第i 個房子的特徵爲x(i) ,其對應價格爲y(i) 。我們的目標是尋找一個函數y=h(x) ,使得對每個訓練樣本y(i)≈h(x(i)) 。如果我們在足夠多的樣本上成功找到了這樣一個函數h(x) ,那麼我們希望h(x) 能夠很好預測一個房子的價格,即便該房子是一個新房子且價格未知。
爲了找到這樣一個函數h(x) 使得y(i)≈h(x(i)) ,我們需要先確定如何表示函數h(x) 。讓我們先從做簡單的線性函數開始hθ(x)=∑jθjxj=θTx 。這裏,hθ(x) 表示一個函數家族,選擇不同參數θ 得到不同的函數。有了h(x) 的表示,我們任務變爲尋找一個參數θ ,使得hθ(x(i)) 儘可能逼近y(i) 。特別的,我們希望尋找一個θ ,最小化下式
J(θ)=12∑i(hθ(x(i))−y(i))2=12∑i(θTx(i)−y(i))2
該函數稱爲“代價函數”,用於度量一個特徵選擇的θ 在預測y(i) 時的誤差。通常,也稱爲“損失函數”、“懲罰函數”或“目標函數”。
1.2 函數最小化
現在的目標是選擇θ 使J(θ) 最小。有很多方法可以最小化該目標。現在,我們來回顧一下函數最小化最常用算法的一些事實。我們需要完成有關J(θ) 的兩個事實:計算J(θ) 和∇θJ(θ) 。然後,優化的剩下部分就可以交給優化算法去尋找最好的θ 。(梯度∇θJ(θ) 是一個向量,指向J(θ) 下降最快的方向,這樣只要小小地改變θ 就可以降低或增加J(θ) )
給定一組訓練集{x(i),y(i)} ,J(θ) 的梯度可表示如下:
∇θJ(θ)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂J(θ)∂θ1...∂J(θ)∂θj...∂J(θ)∂θn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥, ∂J(θ)∂θj=∑ix(i)j(hθ(x(i))−y(i))
2 邏輯斯特迴歸
上節學習瞭如何預測連續變量(房價)。實際中,我們也需要區預測離散變量(分類問題)。邏輯斯特迴歸就是一個簡單的用於分類決策的算法。
線性迴歸中,我們嘗試使用線性函數y=hθ(x)=θTx 去預測第i 個樣本x(i) 的y(i) 的值。很明顯這不適合預測二值標籤(y(i)∈{0,1} )。在邏輯斯特迴歸中,我們使用一個不同的函數來預測一個給定的樣本是屬於類“1”,還是屬於類“0”。該函數的形式如下:
P(y=1|x)=hθ(x)=11+exp(−θTx)≡σ(−θTx)
P(y=0|x)=1−P(y=1|x)=1−hθ(x)
函數σ(z)≡1/(1+exp(−z)) 通常稱爲“sigmoid”或“logistic”函數。他是一個S型函數,將z 的值映射到[0,1] 範圍,故我們可以理解hθ(x) 爲一個概率。我們的目的是尋找θ 的一個值使得當x 屬於類“1”時概率P(y=1|x)=hθ(x) 是大的,而當x 屬於類“0”時概率是小的(此時概率P(y=0|x) 是大的)。給定一組二值標籤樣本{(x(i),y(i)):i=1,...,m} ,下面的代價函數可度量一個給定的hθ 是否是好的:
J(θ)=−∑i(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))
##############################################################
上式代價函數是根據最大似然得到的:
L=∏i(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)
J(θ) 對應於負的對數似然如下:
J(θ)=−logL=−log∏i(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i) =−∑i(log(hθ(x(i)))y(i)+log(1−hθ(x(i)))1−y(i)) =−∑i(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))
##############################################################
對於一個訓練樣本而言,上式中的兩項只有一項不爲零(這取決於標籤y(i) 是0或1)。當y(i)=1 ,最小化代價意味着我們需要使hθ(x(i)) 變大,當y(i)=0 ,我們希望使1−hθ(x(i)) 變大。
現在我們有了一個代價函數來度量一個給定的假設hθ 是否是對訓練樣本好的。我們通過最小化J(θ) 來找到最佳的θ 。一旦我們完成,我們就可以分類一個新的樣本是屬於“1”還是屬於“0”(通過檢查兩類的概率,若P(y=1|x)>P(y=0|x) ,則判爲“1”,否則判爲“0”,等同於判斷hθ(x)>0.5 )。
爲了最小化J(θ) ,我們使用和線性迴歸一樣的工具。我們需要提供計算J(θ) 和∇θJ(θ) 的函數,J(θ) 關於θj 的偏導數如下:
∂J(θ)∂θj=∑ix(i)j(hθ(x(i))−y(i))
向量形式的整體梯度如下:
∇θJ(θ)=∑ix(i)(hθ(x(i))−y(i))
該式本質上與線性迴歸的梯度一樣,只不過此時的hθ(x)=σ(−θTx).
3 Softmax迴歸
3.1 引言
Softmax迴歸,也稱多項式邏輯斯特迴歸,是邏輯斯特迴歸的廣義版本,用於處理多類分類問題。在邏輯斯特迴歸中,我們假設標籤是二值的,即y(i)∈{0,1} 。我們使用該分類器來區分兩類手寫字符。Softmax迴歸允許我們處理y(i)∈{1,...,K} 問題,其中K 爲類別個數。
回顧邏輯斯特迴歸,我們有一組共m 個帶標籤訓練樣本{(x(i),y(i)):i=1,...,m} ,其中輸入特徵x(i)∈Rn ,標籤y(i)∈{0,1} 。假設
hθ(x)=11+exp(−θTx)
模型參數θ 通過最小化如下代價函數求得:
J(θ)=−∑i(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))
在Softmax迴歸中,我們關注多類分類,故標籤y 取自K 個不同的值。給定帶標籤訓練樣本{(x(i),y(i)):i=1,...,m} ,此時y(i)∈{1,...,K} 。如MNIST數據集,K=10 表示不同類。
給定一個測試輸入x ,我們希望假設可以估計概率P(y=k|x) ,k=1,...,K 。即估計在K 個不同類別上估計類別的概率。故我們的假設應該輸出一個K 維的向量,表徵K 個估計的概率。具體地,假設
hθ(x)=⎡⎣⎢⎢⎢⎢P(y=1|x;θ)P(y=2|x;θ)...P(y=K|x;θ)⎤⎦⎥⎥⎥⎥=1∑Kj=1exp(θ(j)Tx)⎡⎣⎢⎢⎢⎢⎢exp(θ(1)Tx)exp(θ(2)Tx)...exp(θ(K)Tx)⎤⎦⎥⎥⎥⎥⎥
其中,θ(1),θ(2),...,θ(K)∈Rn 是模型參數,1/∑Kj=1exp(θ(j)Tx) 用於標準化分佈,即求和爲一。
爲了方便,用θ 表示模型參數,以列的方式將θ(1),θ(2),...,θ(K) 連接起來。
θ=⎡⎣⎢|θ(1)||θ(2)||...||θ(k)|⎤⎦⎥
3.2 代價函數
首先,引入指示函數1{⋅} ,1{true}=1 ,否則1{false}=0 。例如1{2+2=4}=1 ,1{1+1=5}=0 。Softmax迴歸代價函數
J(θ)=−[∑i=1m∑k=1K1{y(i)=k}logP(y(i)=k|x(i);θ)]
其中,
P(y(i)=k|x(i);θ)=exp(θ(k)Tx(i))∑Kj=1exp(θ(j)Tx(i)).
我們無法解析求解J(θ) ,故採用迭代優化算法,計算梯度如下:
∇θ(k)J(θ)=−[∑i=1mx(i)(1{y(i)=k}−P(y(i)=k|x(i);θ))].
##############################################################
代價函數J(θ) 是根據最大似然得到的:
L=∏i=1m(∏k=1cP(y(i)=k|x(i);θ)1{y(i)=k})
J(θ) 對應於負的對數似然如下:
J(θ)=−logL=−∑i=1m(∑k=1c1{y(i)=k}logP(y(i)=k|x(i);θ))
由
hθ(x)=1∑Kj=1exp(θ(j)Tx)⎡⎣⎢⎢⎢⎢⎢exp(θ(1)Tx)exp(θ(2)Tx)...exp(θ(K)Tx)⎤⎦⎥⎥⎥⎥⎥
,令hθ(x)(k′)=exp(θ(k′)Tx)∑Kj=1exp(θ(j)Tx) ,則
∂∂θ(k)hθ(x)(k′)=∂∂θ(k)exp(θ(k′)Tx)∑Kj=1exp(θ(j)Tx)=∂exp(θ(k′)Tx)∂θ(k)1∑Kj=1exp(θ(j)Tx)−exp(θ(k′)Tx)(∑Kj=1exp(θ(j)Tx))2∂∑Kj=1exp(θ(j)Tx)∂θ(k)=1{k′=k}exp(θ(k′)Tx)x∑Kj=1exp(θ(j)Tx)−exp(θ(k′)Tx)exp(θ(k)Tx)x(∑Kj=1exp(θ(j)Tx))2=exp(θ(k′)Tx)x∑Kj=1exp(θ(j)Tx)⎛⎝1{k′=k}−exp(θ(k)Tx)∑Kj=1exp(θ(j)Tx)⎞⎠=hθ(x)(k′)x(1{k′=k}−hθ(x)(k))
∇θ(k)J(θ)=∂∂θ(k)−∑i=1m⎛⎝∑k′=1c1{y(i)=k′}loghθ(x(i))(k′)⎞⎠ =−∑i=1m⎛⎝∑k′=1c1{y(i)=k′}1hθ(x(i))(k′)∂∂θ(k)hθ(x(i))(k′)⎞⎠ =−∑i=1m⎛⎝∑k′=1c1{y(i)=k′}1hθ(x(i))(k′)hθ(x(i))(k′)x(i)(1{k′=k}−hθ(x(i))(k))⎞⎠ =−∑i=1m⎛⎝∑k′=1c1{y(i)=k′}x(i)(1{k′=k}−hθ(x(i))(k))⎞⎠ =−∑i=1mx(i)(1{y(i)=k}−hθ(x(i))(k))
##############################################################
3.3 Softmax參數化屬性
Softmax迴歸有一個不尋常的屬性,其參數集是冗餘的。假設參數θ(1),θ(2),...,θ(K) 共同減去一個固定向量ψ ,則類標籤概率
P(y(i)=k|x(i);θ)=exp((θ(k)−ψ)Tx(i))∑Kj=1exp((θ(j)−ψ)Tx(i)) =exp(θ(k)Tx(i))exp(−ψTx(i))∑Kj=1exp(θ(j)Tx(i))exp(−ψTx(i)) =exp(θ(k)Tx(i))∑Kj=1exp(θ(j)Tx(i))
換言之,參數減去常向量ψ 並不改變預測的概率。故可以說參數存在冗餘。由於J(θ) 可以由θ(1),θ(2),...,θ(K) 達到最小,也可以由θ(1)−ψ,θ(2)−ψ,...,θ(K)−ψ 達到最小。但兩個目標值是不同的。故,可以令ψ=θ(K) ,將原始的θ(K) 替換爲θ(K)−ψ=0⃗ 向量。故可以消除最後一個參數向量而不影響表示能力。
3.4 與邏輯斯特迴歸的關係
當K=2 時,Softmax迴歸變爲邏輯斯特迴歸,Softmax迴歸假設的輸出爲
hθ(x)=1exp(θ(1)Tx)+exp(θ(2)Tx)[exp(θ(1)Tx)exp(θ(2)Tx)]
令ψ=θ(2) 可得
hθ(x)=1exp((θ(1)−θ(2))Tx)+exp(0⃗ Tx)⎡⎣exp((θ(1)−θ(2))Tx)exp(0⃗ Tx)⎤⎦ =1exp((θ(1)−θ(2))Tx)+1[exp((θ(1)−θ(2))Tx)1]
令
θ′=θ(2)−θ(1) ,則
hθ(x)=⎡⎣⎢⎢⎢⎢⎢exp(−θ′Tx)exp(−θ′Tx)+11exp(−θ′Tx)+1⎤⎦⎥⎥⎥⎥⎥
該式與邏輯斯特迴歸一致。