softmax是邏輯回歸在多分類問題上的擴充套件,適合有k類情況下的分類任務。
首先看下邏輯回歸的假設函式: h
θ=11
+e−θ
tx
更多邏輯回歸請戳:有上面可以看出hθ
和e−θ
tx是正相關的,而softmax回歸和logistic 回歸的在形式上也很類似,其中softmax將x分類為類別j的概率為: p
(yi=
j|x(
i);θ
)=e−
θtjx
(i)∑
kl=1
e−θt
lx(i
) 所以softmax回歸的期望函式為:
同樣的,也可以知道softmax回歸的代價函式:
1 =1,也就是上式代價函式的意思是說如果****為類別j的概率越小,分類的錯誤就越大。1 的值為1,
1 的值為0
softmax 回歸有乙個不尋常的特點,就是給引數加/減乙個數,分類的概率不變:
這就說我們設其中某個引數為0,也不影響最終的概率值,而且softmax 回歸的代價函式是乙個凸函式,所以也不存區域性最優解,但是 hessian 矩陣是奇異的/不可逆的,這會直接導致採用牛頓法優化就遇到數值計算的問題。
實際應用中為了使演算法實現更簡單清楚,不任意地將某一引數設定為 0。但此時我們需要對代價函式做乙個改動:加入權重衰減。權重衰減可以解決 softmax 回歸的引數冗餘所帶來的數值問題。
通過下圖的權重衰減項懲罰過大的引數值,此時代價函式就變成了嚴格的凸函式,這樣就可以保證得到唯一的解了。 此時的 hessian矩陣變為可逆矩陣。
當類別數 \textstyle k = 2 時,softmax 回歸退化為 logistic 回歸。這表明 softmax 回歸是 logistic 回歸的一般形式。
q:什麼時候用softmax回歸,什麼時候用k個二元分類器呢?
a:這一選擇取決於你的類別之間是否互斥:
用機器學習演算法訓練模型,模型的好壞往往取決於是否有足夠的資料,但不是每種應用場景中都有標記好的資料,實際上,大規模的標記資料給演算法訓練是很耗費人力物力的一件事情,那有沒有什麼方法讓演算法自己學習呢?
這就涉及到無監督學習和自我學習了,常見的無監督學習方式有兩種:
1.自我學習:
這個例子裡,未標註資料完全來自於乙個和已標註資料不同的分布(未標註資料集中,或許其中一些影象包含汽車或者電單車,但是不是所有的影象都如此)。這種情形被稱為自學習。
2.半監督學習:
如果有大量的未標註影象資料,要麼是汽車影象,要麼是電單車影象,僅僅是缺失了類標號(沒有標註每張到底是汽車還是電單車)。也可以用這些未標註資料來學習特徵。
這種方式,即要求未標註樣本和帶標註樣本服從相同的分布,有時候被稱為半監督學習。在實踐中,常常無法找到滿足這種要求的未標註資料(到**找到乙個每張影象不是汽車就是電單車,只是丟失了類標號的影象資料庫?)因此,自學習在無標註資料集的特徵學習中應用更廣。
在自我學習中,我們首先利用未標註資料訓練乙個稀疏自編碼器。隨後,給定乙個新樣本 x,我們通過隱含層提取出特徵a。
考慮利用這個方法所學到的分類器(輸入-輸出對映)。它描述了乙個把測試樣本 x 對映到**值 p(y=1|x) 的函式。將此前的兩張結合起來,就得到該函式的圖形表示。
這個最終分類器整體上顯然是乙個大的神經網路。因此,在訓練獲得模型最初引數(利用自動編碼器訓練第一層,利用 logistic/softmax 回歸訓練第二層)之後,我們可以進一步修正模型引數,進而降低訓練誤差。具體來說,我們可以對引數進行微調,在現有引數的基礎上採用梯度下降或者 l-bfgs 來降低已標註樣本集 上的訓練誤差。
但這還是乙個非常淺層的神經網路,因為隱層只有乙個,深度神經網路,即含有多個隱藏層的神經網路。通過引入深度網路,我們可以計算更多複雜的輸入特徵。因為每乙個隱藏層可以對上一層的輸出進行非線性變換,因此深度神經網路擁有比「淺層」網路更加優異的表達能力(例如可以學習到更加複雜的函式關係)。
值得注意的是當訓練深度網路的時候,每一層隱層應該使用非線性的啟用函式 ,這是因為多層的線性函式組合在一起本質上也只有線性函式的表達能力(例如,將多個線性方程組合在一起僅僅產生另乙個線性方程)。因此,在啟用函式是線性的情況下,相比於單隱藏層神經網路,包含多隱藏層的深度網路並沒有增加表達能力。有什麼好的辦法可以訓練深層神經網路的嗎?
逐層貪婪訓練會是乙個不錯的辦法。
簡單來說,逐層貪婪演算法的主要思路是每次只訓練網路中的一層,即我們首先訓練乙個只含乙個隱藏層的網路,僅當這層網路訓練結束之後才開始訓練乙個有兩個隱藏層的網路,以此類推。
在每一步中,我們把已經訓練好的前 k-1 層固定,然後增加第 k 層(也就是將我們已經訓練好的前 k-1 的輸出作為輸入)。每一層的訓練可以是有監督的(例如,將每一步的分類誤差作為目標函式),但更通常使用無監督方法(例如自動編碼器)。
舉個栗子
假設訓練乙個識別mnist手寫數字分類的任務
首先,需要用原始輸入訓練乙個自編碼器,它能夠學習得到原始輸入的一階特徵表示h(
1)
接著,你需要把原始資料輸入到上述訓練好的稀疏自編碼器中,對於每乙個輸入都可以得到它對應的一階特徵表示h(
1),然後你再用這些一階特徵作為另乙個稀疏自編碼器的輸入,使用它們來學習二階特徵h(
2)
再把一階特徵輸入到剛訓練好的第二層稀疏自編碼器中,你可以把這些二階特徵作為softmax分類器的輸入,訓練得到乙個能將二階特徵對映到數字標籤的模型。
如果網路的輸入資料是影象,網路的第一層會學習如何去識別邊,第二層一般會學習如何去組合邊,從而構成輪廓、角等。更高層會學習如何去組合更形象且有意義的特徵。例如,如果輸入資料集包含人臉影象,更高層會學習如何識別或組合眼睛、鼻子、嘴等人臉器官。
UFLDL 教程學習筆記目錄
ufldl unsupervised feature learning and deep learning tutorial 是由 stanford 大學的 andrew ng 教授及其團隊編寫的一套教程,內容深入淺出,有很強的實用性,學習起來,讓人有種酣暢淋漓的感覺。下邊是我學習的筆記 1.1神經...
UFLDL 教程學習筆記(四)
在之前的練習中,比較小,這節課的方法可以應用到更大的影象上。在sparse autoencoder 後面會講到 中,一種設計選擇是將輸入層與隱藏層fully connect,這種方式對小的情況下計算量還 可以接受,但對大來說變得不可接受。一種簡單的解決方式是隱藏層只連線一部分的輸入層,即只對特定的輸...
UFLDL學習筆記系列 1
exercise 1a linear regression 此為斯坦福無監督特徵學習和深度學習教程 ufldl 的學習筆記。我們的目標為從輸入向量x nx in re n x n 目標值yyy。以 房價為例,y yy代表房價,x xx表示描述房子的特徵向量 比如其大小和房間的數目 假設給定大量的樣本...