Softmax分類器

2021-03-02 AIDD student

Softmax回歸

在我們之前學習的過程中,我們知道對於簡單的二分類任務,只需要用logistic回歸模型就可以得到想要的結果,對於多分類任務,我們需要用一種新的softmax回歸模型來對數據進行分類。

各xi的softmax函數值之和為1,符合概率之和為1,為了適應不同的數據,引入參數θ,得到假設函數形式如下:

當k=2時,也就是分類數只有兩個時,其實並不需要計算兩個的softmax值,只需要計算其中一個,因為兩種分類的預測概率和必定為1,接下來的另一個只需用1減去第一個softmax值即可。這時softmax的假設函數為:

由於softmax回歸參數冗餘,即被過度參數化了。對於用於擬合數據的假設參數,可以求出多組參數值。那麼我們可以固定一個參數為0,即從兩個參數向量中都減去向量θ1,得到:

令(θ2-θ1) = -θ,則可以看出在二分類條件下,與logistic回歸是一致的(logistic回歸假設函數如下):

最後我們來看一下softmax在神經網絡中所處的位置,可以看出,softmax是在最後一個全連接層轉輸出的時候用的。

代價函數

log後為假設函數h(x),根據假設函數的定義知道0≤hθ(x)≤1。當yi= 類別數,比如假設狗為class1,貓為class 2,馬為class 3,那麼當yi = 3,也就是真實分類為馬時,將會將其他預測結果h(x)全部刪掉,只保留j = 3時的h(x)。當h(x)越接近1時代價函數越小,反之越大,降低代價函數就會提升模型準確率。

同假設函數一樣,上述公式是logistic回歸代價函數的推廣。logistic代價函數為:

當yi= 1時,後一項為0,其中我們根據假設函數的定義知道0≤hθ(x)≤1,那麼h(xi)越接近1,損失函數越接近0,說明預測越準確,反之損失函數會很大,說明預測結果不準確。這樣降低損失函數就會提升模型準確率。損失函數的形式解釋了為什麼要把softmax定義為指數的形式,這是因為對數似然中的log可以抵消softmax中的exp,使得計算更加簡便:

Softmax回歸的pytorch實現

def softmax(x):    return torch.exp(x)/torch.sum(torch.exp(x), dim=1).view(-1,1)

dim=1是讓torch.sum()逐列進行求和操作,.view(-1,1)是為了防止廣播。這裡提及一下運算中的廣播broadcast,以numpy為例,實現對一個1-d array的每一個元素乘以2。
a = np.array([1., 2., 3.])b = np.array([2., 2., 2.])print(a*b)

a = np.array([1., 2., 3.])b = 2.print(a*b)

輸出:



Reference

深度學習課程 --吳恩達
Deep learing --Ian Goodfellow,Yoshua bengio,Aaron Courville

https://zhuanlan.zhihu.com/p/35010592

https://zhuanlan.zhihu.com/p/30875066

https://zhuanlan.zhihu.com/p/42615390                  

https://medium.com/data-science-bootcamp/understand-the-softmax-function-in-minutes-f3a59641e86d

相關焦點

  • 第三期:Python實現Softmax多分類回歸算法
    因為在用計算機語言編寫的分類器看來,數值變量本身有大小之說,學歷中,博士>碩士>本科>帶專,對應3>2>1>0還有理可循,但在性格分類上,冷靜勇敢耐心溫柔本身並無大小好壞之分,再用3210進行編碼則會對分類器的訓練增添不必要的麻煩。因此提出『獨熱編碼(One-Hot Encoding)』解決這一問題。
  • softmax進階多分類 - 基礎理解
    - 邏輯回歸(3) python自定義邏輯回歸碼源softmax放在邏輯回歸二分類後面說因為覺得很多相似的地方,比如用的損失函數,比如映射的過程,比如求解參數的過程,是二分類向多分類的進階,也是神經網絡的基礎。
  • 淺談logistic函數和softmax函數
    (2)二分類情況logistic回歸針對的是二分類情況,而softmax解決的是多分類問題,若softmax回歸處理的是二分類問題,則表達式如下:與logistic二分類的表達式一致,因此,softmax回歸與logistic回歸的二分類算法相同 。
  • 【2019年第六期文章推薦】Softmax分類器深度學習圖像分類方法應用綜述
    2 Softmax在深度學習圖像分類中的應用自Softmax分類器問世以來,其在圖像分類領域的應用越來越廣泛,基於深度學習Softmax的圖像分類算法採用神經網絡模型與Softmax分類器級聯的形式實現圖像分類[17]。
  • 這樣的Softmax你真的不了解!
    我們將介紹以下內容:介紹Softmax數值穩定性Log SoftmaxLog-Softmax推導Softmax溫度機制結論Softmax是一個非線性函數,主要用於多類分類的分類器輸出。其中d為分類數。所有指數值的總和,
  • Logistic和Softmax回歸實戰(附代碼)
    從上面的圖中能清楚的看到在大於2cm的時候,分類器對Virginica有一個高的概率值,而在小於1cm的時候,對非Virginica有一個高的預測值。而對於1.6cm附近的豎直虛線則稱為分類器的決策邊界,也就是說,當花瓣寬度大於1.6cm的時候,分類器將樣本分為Virginica,小於1.6cm的時候分為非Virginica。
  • 【softmax】詳解softmax函數以及相關求導過程
    一、softmax函數softmax用於多分類過程中,它將多個神經元的輸出,映射到(0,1)區間內,可以看成概率來理解,從而來進行多分類!舉一個我最近碰到利用softmax的例子:我現在要實現基於神經網絡的句法分析器。用到是基於轉移系統來做,那麼神經網絡的用途就是幫我預測我這一個狀態將要進行的動作是什麼?比如有10個輸出神經元,那麼就有10個動作,1動作,2動作,3動作...一直到10動作。
  • 【Softmax】乾貨 | 淺談Softmax函數
    引言Softmax函數幾乎是深度學習中的標配了,在人工神經網絡中,幾乎無處不可見softmax函數的身影。可以認為softmax是arg max操作的一種平滑近似。我將softmax的用途總結為兩種:分類:給定一系列類別,softmax可以給出某輸入被劃分到各個類別的概率分布。
  • 多分類利器-保姆級告訴你什麼是SoftMax
    SoftMax一般用於解決多分類的問題。什麼樣的問題為多分類問題?多分類問題例如對車的多個評價包括極差、一般、中等、好進行分類等等問題。實際上,多分類問題也能夠用邏輯回歸等二分類算法來解決,用多個二分類來表達多分類,這裡不深入描述。而SoftMax解決多分類問題完全是另一種方式。SoftMax作為函數的形式為:
  • CVPR2020 oral | 解決目標檢測長尾問題簡單方法:Balanced Group Softmax
    發現當數據集極度偏斜時,現有的檢測方法無法對few-shot類別進行建模,這可能導致分類器在參數大小上的不平衡。由於檢測和分類之間的內在差異,將長尾分類模型直接應用於檢測框架無法解決此問題。因此,在這項工作中,提出了一個新穎的balanced group softmax (BAGS)模塊,用於通過逐組訓練來平衡檢測框架內的分類器。
  • FM, FTRL, Softmax
    本文介紹FM(Factorization Machines)二分類器使用FTRL優化的算法原理,以及如何結合softmax改造成一個多分類器。
  • Softmax-based Loss Functions
    將使用softmax loss訓練獲得的特徵向量用於retrieval和verification等「需要設置閾值」的任務時,效果可能不足夠好,這其中的原因是:softmax loss儘可能使得所有樣本能夠被正確地分類;而retrieval和verification等任務要求一個具有優良泛化性能的度量空間;這兩種目的的相關性很強,但是不直接等價。
  • Softmax(假神經網絡)與詞向量的訓練
    一方面,小夕下面要講的確實是作為一種用神經網絡(人們為了提高逼格,更喜歡叫用深度學習xxx)訓練詞向量的基本理論和方法,但是實際上,小夕並沒有把它當神經網絡看,因為理解了小夕講的softmax後,這種方法不過是用了一下softmax而已,還不如叫「基於softmax分類器」或者「基於改良的邏輯回歸」呢。。。當然啦,對外還是要稱之為神經網絡的。
  • 乾貨 | 淺談Softmax函數
    引言Softmax函數幾乎是深度學習中的標配了,在人工神經網絡中,幾乎無處不可見softmax函數的身影。可以認為softmax是arg max操作的一種平滑近似。我將softmax的用途總結為兩種:分類:給定一系列類別,softmax可以給出某輸入被劃分到各個類別的概率分布。
  • 乾貨 | 淺談 Softmax 函數
    引言Softmax函數幾乎是深度學習中的標配了,在人工神經網絡中,幾乎無處不可見softmax函數的身影。可以認為softmax是arg max操作的一種平滑近似。我將softmax的用途總結為兩種:分類:給定一系列類別,softmax可以給出某輸入被劃分到各個類別的概率分布。
  • 通俗詳解softmax函數及其求導過程
    1、softmax函數講解2、softmax函數求導過程詳解3、softmax函數求導為什麼如此方便softmax用於多分類過程中,它將多個神經元的輸出,映射到(0,1)區間內,可以看成概率來理解,從而來進行多分類!
  • logistic函數和softmax函數
    ,K    softmax函數經常用在神經網絡的最後一層,作為輸出層,進行多分類。   1)logistic具體針對的是二分類問題,而softmax解決的是多分類問題,因此從這個角度也可以理解logistic函數是softmax函數的一個特例。
  • 【周末AI課堂】理解softmax函數 | 機器學習你會遇到的「坑」
    如果我們選擇添加sigmoid作為激活函數的隱層,那麼從整個神經網絡的角度來說,sigmoid函數在隱藏單元的作用只是提供非線性,在輸出單元的作用卻是作為分類器。我們已經熟悉三種常見的輸出單元:其中,linear和sigmoid都是較為好理解的,softmax作為一個用於多分類的函數,如果我們只是把softmax看作是sigmoid的多分類推廣,實際上卻本末倒置,sigmoid和softmax函數都有著更為本質的意義,我們將會在這一節對softmax進行詳細討論。
  • 從最優化的角度看待Softmax損失函數
    那麼我們就要思考一個問題:使用神經網絡進行多分類(假設為  類)時的目標函數是什麼?神經網絡的作用是學習一個非線性函數  ,將輸入轉換成我們希望的輸出。這裡我們不考慮網絡結構,只考慮分類器(也就是損失函數)的話,最簡單的方法莫過於直接輸出一維的類別序號  。
  • Softmax函數與交叉熵
    值,其中Loss function對數似然函數機器學習裡面,對模型的訓練都是對Loss function進行優化,在分類問題中,我們一般使用最大似然估計(Maximum likelihood estimation)來構造損失函數。對於輸入的