3.8 Softmax 回归-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
| 3.7 測試時的 Batch Norm | 回到目錄 | 3.9 訓練一個 Softmax 分類器 |
Softmax 回歸 (Softmax Regression)
到目前為止,我們講到過的分類的例子都使用了二分分類,這種分類只有兩種可能的標記0或1,這是一只貓或者不是一只貓,如果我們有多種可能的類型的話呢?有一種logistic回歸的一般形式,叫做Softmax回歸,能讓你在試圖識別某一分類時做出預測,或者說是多種分類中的一個,不只是識別兩個分類,我們來一起看一下。
假設你不單需要識別貓,而是想識別貓,狗和小雞,我把貓加做類1,狗為類2,小雞是類3,如果不屬于以上任何一類,就分到“其它”或者說“以上均不符合”這一類,我把它叫做類0。這里顯示的圖片及其對應的分類就是一個例子,這幅圖片上是一只小雞,所以是類3,貓是類1,狗是類2,我猜這是一只考拉,所以以上均不符合,那就是類0,下一個類3,以此類推。我們將會用符號表示,我會用大寫的 CCC 來表示你的輸入會被分入的類別總個數,在這個例子中,我們有4種可能的類別,包括“其它”或“以上均不符合”這一類。當有4個分類時,指示類別的數字,就是從0到 C?1C-1C?1 ,換句話說就是0、1、2、3。
在這個例子中,我們將建立一個神經網絡,其輸出層有4個,或者說 CCC 個輸出單元,因此 nnn ,即輸出層也就是 LLL 層的單元數量,等于4,或者一般而言等于 CCC 。我們想要輸出層單元的數字告訴我們這4種類型中每個的概率有多大,所以這里的第一個節點(最后輸出的第1個方格+圓圈)輸出的應該是或者說我們希望它輸出“其它”類的概率。在輸入 XXX 的情況下,這個(最后輸出的第2個方格+圓圈)會輸出貓的概率。在輸入 XXX 的情況下,這個會輸出狗的概率(最后輸出的第3個方格+圓圈)。在輸入 XXX 的情況下,輸出小雞的概率(最后輸出的第4個方格+圓圈),我把小雞縮寫為bc(baby chick)。因此這里的 y^\hat{y}y^? 將是一個 4?14 * 14?1 維向量,因為它必須輸出四個數字,給你這四種概率,因為它們加起來應該等于1,輸出中的四個數字加起來應該等于1。
讓你的網絡做到這一點的標準模型要用到Softmax層,以及輸出層來生成輸出,讓我把式子寫下來,然后回過頭來,就會對Softmax的作用有一點感覺了。
在神經網絡的最后一層,你將會像往常一樣計算各層的線性部分, z[l]z^{[l]}z[l] 這是最后一層的 zzz 變量,記住這是大寫 LLL 層,和往常一樣,計算方法是 z[l]=W[l]a[L?1]+b[l]z^{[l]}=W^{[l]}a^{[L-1]}+b^{[l]}z[l]=W[l]a[L?1]+b[l] ,算出了 zzz 之后,你需要應用Softmax激活函數,這個激活函數對于Softmax層而言有些不同,它的作用是這樣的。首先,我們要計算一個臨時變量,我們把它叫做 ttt ,它等于 ez[l]e^{z^{[l]}}ez[l] ,這適用于每個元素,而這里的 z[l]z^{[l]}z[l] ,在我們的例子中, z[l]z^{[l]}z[l] 是4×1的,四維向量 t=ez[l]t=e^{z^{[l]}}t=ez[l] ,這是對所有元素求冪, ttt 也是一個4×1維向量,然后輸出的 a[l]a^{[l]}a[l] ,基本上就是向量 ttt ,但是會歸一化,使和為1。因此 a[l]=ez[l]∑j=14tia^{[l]}=\frac{e^{z^{[l]}}}{\sum_{j=1}^4t_i}a[l]=∑j=14?ti?ez[l]? ,換句話說, a[l]a^{[l]}a[l] 也是一個4×1維向量,而這個四維向量的第 iii 個元素,我把它寫下來, ai[l]=ti∑j=14tia^{[l]}_i=\frac{t_i}{\sum_{j=1}^4t_i}ai[l]?=∑j=14?ti?ti?? ,以防這里的計算不夠清晰易懂,我們馬上會舉個例子來詳細解釋。
我們來看一個例子,詳細解釋,假設你算出了 z[l]z^{[l]}z[l] , z[l]z^{[l]}z[l] 是一個四維向量,假設為 z[l]=[52?13]z^{[l]}=\left[\begin{matrix}5\\2\\-1\\3\end{matrix}\right]z[l]=?????52?13?????? ,我們要做的就是用這個元素取冪方法來計算 ttt ,所以 t=[e5e2e?1e3]t=\left[\begin{matrix}e^5\\e^2\\e^{-1}\\e^3\end{matrix}\right]t=?????e5e2e?1e3?????? ,如果你按一下計算器就會得到以下值 t=[148.47.40.420.1]t=\left[\begin{matrix}148.4\\7.4\\0.4\\20.1\end{matrix}\right]t=?????148.47.40.420.1?????? ,我們從向量 ttt 得到向量 a[l]a^{[l]}a[l] 就只需要將這些項目歸一化,使總和為1。如果你把 ttt 的元素都加起來,把這四個數字加起來,得到176.3,最終 a[l]=t176.3a^{[l]}=\frac{t}{176.3}a[l]=176.3t? 。
例如這里的第一個節點,它會輸出 e5176.3=0.842\frac{e^5}{176.3}=0.842176.3e5?=0.842 ,這樣說來,對于這張圖片,如果這是你得到 zzz 的值( [52?13]\left[\begin{matrix}5\\2\\-1\\3\end{matrix}\right]?????52?13?????? ),它是類0的概率就是84.2%。下一個節點輸出 e2176.3=0.042\frac{e^2}{176.3}=0.042176.3e2?=0.042 ,也就是4.2%的幾率。下一個是 e?1176.3=0.002\frac{e^{-1}}{176.3}=0.002176.3e?1?=0.002 。最后一個是 e3176.3=0.114\frac{e^3}{176.3}=0.114176.3e3?=0.114 ,也就是11.4%的概率屬于類3,也就是小雞組,對吧?這就是它屬于類0,類1,類2,類3的可能性。
神經網絡的輸出 a[l]a^{[l]}a[l] ,也就是 y^\hat{y}y^? ,是一個4×1維向量,這個4×1向量的元素就是我們算出來的這四個數字( [0.8420.0420.0020.114]\left[\begin{matrix}0.842\\0.042\\0.002\\0.114\end{matrix}\right]?????0.8420.0420.0020.114?????? ),所以這種算法通過向量 z[l]z^{[l]}z[l] 計算出總和為1的四個概率。
如果我們總結一下從 z[l]z^{[l]}z[l] 到 a[l]a^{[l]}a[l] 的計算步驟,整個計算過程,從計算冪到得出臨時變量 ttt ,再歸一化,我們可以將此概括為一個Softmax激活函數。設 a[l]=g[l](z[l])a^{[l]}=g^{[l]}(z^{[l]})a[l]=g[l](z[l]) ,這一激活函數的與眾不同之處在于,這個激活函數 ggg 需要輸入一個4×1維向量,然后輸出一個4×1維向量。之前,我們的激活函數都是接受單行數值輸入,例如Sigmoid和ReLu激活函數,輸入一個實數,輸出一個實數。Softmax激活函數的特殊之處在于,因為需要將所有可能的輸出歸一化,就需要輸入一個向量,最后輸出一個向量。
那么Softmax分類器還可以代表其它的什么東西么?我來舉幾個例子,你有兩個輸入 x1,x2x_1,x_2x1?,x2? ,它們直接輸入到Softmax層,它有三四個或者更多的輸出節點,輸出 y^\hat{y}y^? ,我將向你展示一個沒有隱藏層的神經網絡,它所做的就是計算 z[1]=W[1]x+b[1]z^{[1]}=W^{[1]}x+b^{[1]}z[1]=W[1]x+b[1] ,而輸出的出 a[l]a^{[l]}a[l] ,或者說 y^\hat{y}y^? , a[l]=y=g(z[1])a^{[l]}=y=g(z^{[1]})a[l]=y=g(z[1]) ,就是 z[1]z^{[1]}z[1] 的Softmax激活函數,這個沒有隱藏層的神經網絡應該能讓你對Softmax函數能夠代表的東西有所了解。
這個例子中(左邊圖),原始輸入只有 x1x_1x1? 和 x2x_2x2?,一個 C=3C=3C=3 個輸出分類的Softmax層能夠代表這種類型的決策邊界,請注意這是幾條線性決策邊界,但這使得它能夠將數據分到3個類別中,在這張圖表中,我們所做的是選擇這張圖中顯示的訓練集,用數據的3種輸出標簽來訓練Softmax分類器,圖中的顏色顯示了Softmax分類器的輸出的閾值,輸入的著色是基于三種輸出中概率最高的那種。因此我們可以看到這是logistic回歸的一般形式,有類似線性的決策邊界,但有超過兩個分類,分類不只有0和1,而是可以是0,1或2。
這是(中間圖)另一個Softmax分類器可以代表的決策邊界的例子,用有三個分類的數據集來訓練,這里(右邊圖)還有一個。對吧,但是直覺告訴我們,任何兩個分類之間的決策邊界都是線性的,這就是為什么你看到,比如這里黃色和紅色分類之間的決策邊界是線性邊界,紫色和紅色之間的也是線性邊界,紫色和黃色之間的也是線性決策邊界,但它能用這些不同的線性函數來把空間分成三類。
我們來看一下更多分類的例子,這個例子中(左邊圖) C=4C=4C=4 ,因此這個綠色分類和Softmax仍舊可以代表多種分類之間的這些類型的線性決策邊界。另一個例子(中間圖) C=5C=5C=5 是類,最后一個例子(右邊圖)是 C=6C=6C=6 ,這顯示了Softmax分類器在沒有隱藏層的情況下能夠做到的事情,當然更深的神經網絡會有 xxx ,然后是一些隱藏單元,以及更多隱藏單元等等,你就可以學習更復雜的非線性決策邊界,來區分多種不同分類。
我希望你了解了神經網絡中的Softmax層或者Softmax激活函數有什么作用,下一個視頻中,我們來看一下你該怎樣訓練一個使用Softmax層的神經網絡。
課程PPT
| 3.7 測試時的 Batch Norm | 回到目錄 | 3.9 訓練一個 Softmax 分類器 |
總結
以上是生活随笔為你收集整理的3.8 Softmax 回归-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.7 测试时的 BatchNorm-深
- 下一篇: 3.9 训练一个 Softmax 分类器