轉自 http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92php
在本節中,咱們介紹Softmax迴歸模型,該模型是logistic迴歸模型在多分類問題上的推廣,在多分類問題中,類標籤 能夠取兩個以上的值。 Softmax迴歸模型對於諸如MNIST手寫數字分類等問題是頗有用的,該問題的目的是辨識10個不一樣的單個數字。Softmax迴歸是有監督的,不事後面也會介紹它與深度學習/無監督學習方法的結合。(譯者注: MNIST 是一個手寫數字識別庫,由NYU 的Yann LeCun 等人維護。http://yann.lecun.com/exdb/mnist/ )html
回想一下在 logistic 迴歸中,咱們的訓練集由 個已標記的樣本構成: ,其中輸入特徵。(咱們對符號的約定以下:特徵向量 的維度爲 ,其中 對應截距項 。) 因爲 logistic 迴歸是針對二分類問題的,所以類標記 。假設函數(hypothesis function) 以下: 算法
咱們將訓練模型參數 ,使其可以最小化代價函數 : 函數
在 softmax迴歸中,咱們解決的是多分類問題(相對於 logistic 迴歸解決的二分類問題),類標 能夠取 個不一樣的值(而不是 2 個)。所以,對於訓練集 ,咱們有 。(注意此處的類別下標從 1 開始,而不是 0)。例如,在 MNIST 數字識別任務中,咱們有 個不一樣的類別。 學習
對於給定的測試輸入 ,咱們想用假設函數針對每個類別j估算出機率值 。也就是說,咱們想估計 的每一種分類結果出現的機率。所以,咱們的假設函數將要輸出一個 維的向量(向量元素的和爲1)來表示這 個估計的機率值。 具體地說,咱們的假設函數 形式以下: 測試
其中 是模型的參數。請注意 這一項對機率分佈進行歸一化,使得全部機率之和爲 1 。 優化
爲了方便起見,咱們一樣使用符號 來表示所有的模型參數。在實現Softmax迴歸時,將 用一個 的矩陣來表示會很方便,該矩陣是將 按行羅列起來獲得的,以下所示: spa
如今咱們來介紹 softmax 迴歸算法的代價函數。在下面的公式中, 是示性函數,其取值規則爲:3d
值爲真的表達式, 值爲假的表達式 。舉例來講,表達式 的值爲1 ,的值爲 0。咱們的代價函數爲:htm
值得注意的是,上述公式是logistic迴歸代價函數的推廣。logistic迴歸代價函數能夠改成:
能夠看到,Softmax代價函數與logistic 代價函數在形式上很是相似,只是在Softmax損失函數中對類標記的 個可能值進行了累加。注意在Softmax迴歸中將 分類爲類別 的機率爲:
對於 的最小化問題,目前尚未閉式解法。所以,咱們使用迭代的優化算法(例如梯度降低法,或 L-BFGS)。通過求導,咱們獲得梯度公式以下:
讓咱們來回顧一下符號 "" 的含義。 自己是一個向量,它的第 個元素 是 對 的第 個份量的偏導數。
有了上面的偏導數公式之後,咱們就能夠將它代入到梯度降低法等算法中,來最小化 。 例如,在梯度降低法的標準實現中,每一次迭代須要進行以下更新: ()。
當實現 softmax 迴歸算法時, 咱們一般會使用上述代價函數的一個改進版本。具體來講,就是和權重衰減(weight decay)一塊兒使用。咱們接下來介紹使用它的動機和細節。
Softmax 迴歸有一個不尋常的特色:它有一個「冗餘」的參數集。爲了便於闡述這一特色,假設咱們從參數向量 中減去了向量 ,這時,每個 都變成了 ()。此時假設函數變成了如下的式子:
換句話說,從 中減去 徹底不影響假設函數的預測結果!這代表前面的 softmax 迴歸模型中存在冗餘的參數。更正式一點來講, Softmax 模型被過分參數化了。對於任意一個用於擬合數據的假設函數,能夠求出多組參數值,這些參數獲得的是徹底相同的假設函數 。
進一步而言,若是參數 是代價函數 的極小值點,那麼 一樣也是它的極小值點,其中 能夠爲任意向量。所以使 最小化的解不是惟一的。(有趣的是,因爲 仍然是一個凸函數,所以梯度降低時不會遇到局部最優解的問題。可是 Hessian 矩陣是奇異的/不可逆的,這會直接致使採用牛頓法優化就遇到數值計算的問題)
注意,當 時,咱們老是能夠將 替換爲(即替換爲全零向量),而且這種變換不會影響假設函數。所以咱們能夠去掉參數向量 (或者其餘 中的任意一個)而不影響假設函數的表達能力。實際上,與其優化所有的 個參數 (其中 ),咱們能夠令 ,只優化剩餘的 個參數,這樣算法依然可以正常工做。
在實際應用中,爲了使算法實現更簡單清楚,每每保留全部參數 ,而不任意地將某一參數設置爲 0。但此時咱們須要對代價函數作一個改動:加入權重衰減。權重衰減能夠解決 softmax 迴歸的參數冗餘所帶來的數值問題。
咱們經過添加一個權重衰減項 來修改代價函數,這個衰減項會懲罰過大的參數值,如今咱們的代價函數變爲:
有了這個權重衰減項之後 (),代價函數就變成了嚴格的凸函數,這樣就能夠保證獲得惟一的解了。 此時的 Hessian矩陣變爲可逆矩陣,而且由於是凸函數,梯度降低法和 L-BFGS 等算法能夠保證收斂到全局最優解。
爲了使用優化算法,咱們須要求得這個新函數 的導數,以下:
經過最小化 ,咱們就能實現一個可用的 softmax 迴歸模型。
當類別數 時,softmax 迴歸退化爲 logistic 迴歸。這代表 softmax 迴歸是 logistic 迴歸的通常形式。具體地說,當 時,softmax 迴歸的假設函數爲:
利用softmax迴歸參數冗餘的特色,咱們令 ,而且從兩個參數向量中都減去向量 ,獲得:
所以,用 來表示,咱們就會發現 softmax 迴歸器預測其中一個類別的機率爲 ,另外一個類別機率的爲 ,這與 logistic迴歸是一致的。
若是你在開發一個音樂分類的應用,須要對k種類型的音樂進行識別,那麼是選擇使用 softmax 分類器呢,仍是使用 logistic 迴歸算法創建 k 個獨立的二元分類器呢?
這一選擇取決於你的類別之間是否互斥,例如,若是你有四個類別的音樂,分別爲:古典音樂、鄉村音樂、搖滾樂和爵士樂,那麼你能夠假設每一個訓練樣本只會被打上一個標籤(即:一首歌只能屬於這四種音樂類型的其中一種),此時你應該使用類別數 k = 4 的softmax迴歸。(若是在你的數據集中,有的歌曲不屬於以上四類的其中任何一類,那麼你能夠添加一個「其餘類」,並將類別數 k 設爲5。)
若是你的四個類別以下:人聲音樂、舞曲、影視原聲、流行歌曲,那麼這些類別之間並非互斥的。例如:一首歌曲能夠來源於影視原聲,同時也包含人聲 。這種狀況下,使用4個二分類的 logistic 迴歸分類器更爲合適。這樣,對於每一個新的音樂做品 ,咱們的算法能夠分別判斷它是否屬於各個類別。
如今咱們來看一個計算視覺領域的例子,你的任務是將圖像分到三個不一樣類別中。(i) 假設這三個類別分別是:室內場景、戶外城區場景、戶外荒野場景。你會使用sofmax迴歸仍是 3個logistic 迴歸分類器呢? (ii) 如今假設這三個類別分別是室內場景、黑白圖片、包含人物的圖片,你又會選擇 softmax 迴歸仍是多個 logistic 迴歸分類器呢?
在第一個例子中,三個類別是互斥的,所以更適於選擇softmax迴歸分類器 。而在第二個例子中,創建三個獨立的 logistic迴歸分類器更加合適。