深度學習筆記:logistic分類

1. logistic分類

幾乎所有的教材都是從logistic分類開始的,因為logistic分類實在太經典,而且是神經網絡的基本組成部分,每個神經元(cell)都可以看做是進行了一次logistic分類。

所謂logistic分類,顧名思義,邏輯分類,是一種二分類法,能將數據分成0和1兩類。

logistic分類的流程比較簡單,主要有線性求和,sigmoid函數激活,計算誤差,修正參數這4個步驟。前兩部用於判斷,後兩步用於修正。本文分為3部分,前2部分講普通logistic分類的流程,第三部分則稍作擴展。

1.1 線性求和以及sigmoid函數

第1,2步是用於根據輸入來判斷分類的,所以放在一起說。假設有一個n維的輸入列向量 x

x,也有一個n維的參數列向量h

h, 還有一個偏置量b, 那麼就可以線性求和得到z.

深度學習筆記:logistic分類

此時因為z的值域是[−∞,+∞],是無法根據z來判斷x

x 到底是屬於0還是1的。因此我們需要一個函數,來將z的值映射到[0,1]之間, 這就是激活函數。激活函數有很多種,這裡的激活函數是sigmoid函數。

深度學習筆記:logistic分類

其形狀為

深度學習筆記:logistic分類

圖1 sigmoid函數

可以看到x越大,σ(x)

σ(x)越接近1,反之,則越接近0. 那麼在判斷的時候,我們首先對之前得到的z代入sigmoid函數

深度學習筆記:logistic分類

當 a 大於0.5的時候,我們判定x應屬於1類,如果小於0.5,則屬於0類。這樣,就完成了判斷的工作

1.2 誤差計算以及參數修正

上面完成的判斷過程中用到了參數向量h和偏置量b。 可以說,h和b的值直接關係到logistic判斷的準確性。那麼這兩組參數是如何獲得的呢?這就涉及到了參數的修正。在最開始的時候,h中的值是隨機的,而b的值是0. 我們通過不斷的訓練來使得h和b能夠儘可能的達到一個較優的值。

那麼如何訓練呢?假設我們期望輸入x的判定是y,而實際得到的判定值是a,那麼我們定義一個損失函數C(a,y),通過修正h和b的值來使得C最小化,這是一個優化問題。在凸優化問題中,可以通過

深度學習筆記:logistic分類

來直接算得h和b的最優解。然而在某些情況下,例如數據規模很大,或者非凸優化問題中,則不能這麼做,而是用迭代的方法來得到局部最優解。

深度學習筆記:logistic分類

深度學習筆記:logistic分類

深度學習筆記:logistic分類

1.3 將logistic擴展到多分類

從之前可以看出,普通的logistic只能進行二分類,即只能夠分為0或者1。那麼如果這些樣本屬於多個類該怎麼辦呢?人們想了很多辦法,例如一對多法,依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類需要構建k個分類器。還有一對一法,在任意兩類樣本之間設計一個分類器,k個類需要k(k-1)/2個分類器。

在這裡,我們將輸出由一個值更改為一個向量。例如有3個類,那麼輸出就是一個長度為3 的列向量,對應項的值為1,其他為0.即

深度學習筆記:logistic分類

分別表示第0,1,2個類。 也可以看成是原來若干個logistic分類器組合在一起。對應的某個分類器只對該類輸出1,其他情況都輸出0.從這一點上來講,這個做法有點類似於一對多法。此時,由於輸出從一個數成為一個向量,

之前的公式都要加以修改。首先,原來的y,a,z,b變成了列向量, 向量h

h變成了矩陣W。這樣,判斷部分的公式變為

深度學習筆記:logistic分類

此時的σ函數表示對向量中的每一個元素單獨做運算。即

深度學習筆記:logistic分類

得到的a向量中,其最大值所在的位置索引即為判斷出的分類。

參數修正部分的公式也是類似的,

深度學習筆記:logistic分類

注意有些向量之間是進行點乘的。

深度學習筆記:logistic分類


分享到:


相關文章: