softmax 損失函數 & 參數更新詳解

2021-02-21 閒人數據

大家好,周六愉快哈哈哈哈

既然下雨,在家寫公眾號吧

先小調查一下(隨便點,小編也在學習

可直接私信


目錄

上節softmax要點回歸

softmax進階多分類 - 基礎理解

softmax多分類實現圖解

softmax 損失函數產生及理解

對參數求偏導推導及更新

要點回歸:

邏輯回歸二分類用sigmoid變換成預測單個「概率」,損失函數為交叉熵,用梯度下降求解參數wb

softmax多分類用softmax變換成多個「概率」,損失函數和求解思路類似

相比(−∞,+∞)範圍內的數值結果,概率天然具有更好的可解釋性;我們獲得了K個類別(−∞,+∞)範圍內的分數zj,先通過e^zj將分數映射到(0,+∞);然後再歸一化到(0,1),拉開不同類別的差異,便是Softmax的思想

softmax函數


圖解softmax多分類的過程

(機器學習會傳入已知數據 - 輸入變量x和輸出變量y去訓練模型對數據的擬合,用訓練好的模型去預測)

損失函數 - 交叉熵通式

機器學習 - 邏輯回歸(2) 這裡詳細解釋了交叉熵通式以及為什麼可以表示距離

p 是樣本的期望輸出,q是樣本的實際輸出

softmax 交叉熵形式

那此時的期望輸出和實際輸出是什麼呢?即圖中的y和a, 形式可以寫成:

softmax交叉熵形式變換

yi 是期望輸出,即onehot形式,即一個樣本只屬於一類,這一類的標籤是1,其餘是0,假設這裡屬於第n類

簡單例子理解交叉熵表示損失


假設你有3類, 樣本x1的期望輸出是(0,0,1), 即樣本屬於第三類。

z通過softmax函數變換,實際輸出1是(0.2,0.3,0.5)

更新了參數之後再次傳入, 實際輸出2是(0.05,0.05,0.9)

可能需要迭代很多次,有很多個實際輸出

第一次交叉熵為H1 = - (0 * log 0.2 + 0 *log 0.3 + 1 * log 0.5) = 0.3

第二次交叉熵為H2 = - (0 * log 0.05 + 0 *log 0.05+ 1 * log 0.9) = 0.046

看:當我們第一次輸出概率,第三類概率是0.5,損失為0.3,迭代之後二次輸出第三類概率是0.9,計算出的交叉熵(損失)= 0.046,遠小於0.3。即預測結果越準確,損失越小。

softmax損失函數求解和參數更新

明確損失函數(交叉熵)

明確期望輸出和實際輸出

明確要求解的參數 - w和b

不斷更新優化參數wb使得我們損失函數最小

損失函數是H,對參數wb求偏導數,由於H = -yn * log(an), 所以函數H裡有函數a,函數裡有函數z,函數z裡是w和b。

請拿出一張草稿紙哈哈哈


後續

w = w - 學習率 * H/w求偏導結果

b = b - 學習率 * H/b求偏導結果

重新和x結合計算出z -- z傳入softmax變換得到新的實際輸出a,和期望分布y求出交叉熵即損失,反覆迭代,使得損失達到較小的數值。

消化一下吧,下一章實戰python

END

相關焦點

  • 從最優化的角度看待 Softmax 損失函數
    Softmax交叉熵損失函數應該是目前最常用的分類損失函數了,在大部分文章中,Softmax交叉熵損失函數都是從概率角度來解釋的,本周二極市就推送了一篇Softmax相關文章:一文道盡softmax loss及其變種。本文將嘗試從最優化的角度來推導出Softmax交叉熵損失函數,希望能夠啟發出更多的研究思路。
  • 深度學習中常見的損失函數
    該式其實是式(1)的推廣,正如softmax是sigmoid的多類別推廣一樣,在TensorFlow裡面根據最後分類函數softmax和sigmoid就分為softmax交叉熵以及sigmoid的交叉熵,並對這兩個功能進行統一封裝。
  • 周末AI課堂 理解softmax函數 | 機器學習你會遇到的「坑」
    函數都有著更為本質的意義,我們將會在這一節對softmax進行詳細討論。回顧Logistic回歸考慮一個二分類問題,我們希望模型可以輸出某個類別的概率,即有,那麼1—,類別標記為{0,1},同時服從伯努利分布,由sigmoid函數指定:利用我們在《基於貝葉斯推斷的回歸模型》中介紹的極大似然估計,就會得到損失函數
  • 神經網絡中的各種損失函數介紹
    不同的損失函數可用於不同的目標。在這篇文章中,我將帶你通過一些示例介紹一些非常常用的損失函數。這篇文章提到的一些參數細節都屬於tensorflow或者keras的實現細節。損失函數的簡要介紹損失函數有助於優化神經網絡的參數。
  • 機器學習算法中的7個損失函數的詳細指南
    我不會詳細介紹Gradient Descent的細節,但這裡提醒一下權重更新規則:這裡,θ_j 是要更新的權重,α 是學習率,J 是成本函數。成本函數由 θ 參數化。我們的目標是找到產生最小總成本的 θ 值。
  • Python機器學習算法中的7個損失函數的詳細指南
    目錄什麼是損失函數?回歸損失函數平方誤差損失絕對誤差損失Huber損失二分類損失函數二分類交叉熵Hinge損失多分類損失函數多分類交叉熵損失KL散度(Kullback Leibler Divergence Loss)1. 什麼是損失函數?假設你在山頂,需要下山。你如何決定走哪個方向?
  • 通過對抗損失函數來降低對抗損失函數的效用
    該文將進一步通過對抗損失函數來降低對抗損失函數的效用,並且使用優化ranknet-2模型實現對抗損失函數。同時將softmax函數映射到了循環網絡中,即將損失函數映射到了dnn整體和用戶的得分之間的差值之間的回歸梯度,增強網絡網絡的泛化能力。
  • RBF-Softmax:讓模型學到更具表達能力的類別表示
    對比損失和三元組損失則是直接去優化歐式距離,也得到了很好的效果,但是需要比較麻煩的樣本挖掘方法,而且比較不容易收斂,所以,無法完全取代傳統的softmax損失。本文的貢獻有:1、討論了傳統的softmax的主要缺陷。
  • PYNQ中實現SoftMax函數加速器
    孫齊偉本文引用地址:http://www.eepw.com.cn/article/201905/401026.htm  (西南交通大學 信息科學與技術學院,四川 成都 611756)  摘要:SoftMax函數通常在深度學習中作為激活函數使用,但其計算涉及自然指數和除法運算,傳統PC機上計算較慢,拖累了一個神經網絡的訓練。
  • 引入魯棒性作為連續參數,這種新的損失函數實現了自適應、隨時變換
    最為常見的損失函數包括平方損失、指數損失、log 對數損失等損失函數。這裡回顧了一種新的損失函數,通過引入魯棒性作為連續參數,該損失函數可以使圍繞最小化損失的算法得以推廣,其中損失的魯棒性在訓練過程中自動自我適應,從而提高了基於學習任務的性能。
  • 代碼詳解:一文掌握神經網絡超參數調優
    其中可調優的超參數是學習速度,動量,衰變和nesterov項。學習速度在每批結束時控制重量,並且動量控制先前重量如何影響當前重量。衰變表示每次更新時學習速度的下降幅度。nesterov取值「True」或「False」取決於是否要應用Nesterov動量。這些超參數的通常數值是lr = 0.01,衰變= 1e-6,動量= 0.9,nesterov = True。
  • 菜鳥:簡單神經網絡train and test詳解(雙層)
    簡單神經網絡train and test詳解(雙層)【 The latest data : 2018/05/01 】Yuchen1. NN模型如下神經網絡整體架構內容可參考之前的雲筆記《06_神經網絡整體架構》http://note.youdao.com/noteshare?
  • TensorFlow2.0(8):誤差計算——損失函數總結
    1 均方差損失函數:MSE 均方誤差(Mean Square Error),應該是最常用的誤差計算方法了,數學公式為:其中,0.4], dtype=float32)>loss_mse_2 = tf.reduce_mean(loss_mse_1)loss_mse_2<tf.Tensor: id=24, shape=(), dtype=float32, numpy=0.4>一般而言,均方誤差損失函數比較適用於回歸問題中
  • 楊植麟等人瞄準softmax瓶頸,新方法顧表達性和高效性
    但是,MoS 的內存和時間成本均高於 softmax,這使得它在計算資源有限的情況下實際應用性減弱。MoS →Mixtape為了降低 MoS 的計算成本,最近楊植麟等人提出了一種高效解決 softmax 瓶頸的新型輸出層 Mixtape。Mixtape 可作為額外層嵌入到任意現有網絡的交叉熵損失函數之前。
  • CMU楊植麟等人再次瞄準softmax瓶頸,Mixtape兼顧表達性和高效性
    但是,MoS 的內存和時間成本均高於 softmax,這使得它在計算資源有限的情況下實際應用性減弱。MoS →Mixtape為了降低 MoS 的計算成本,最近楊植麟等人提出了一種高效解決 softmax 瓶頸的新型輸出層 Mixtape。Mixtape 可作為額外層嵌入到任意現有網絡的交叉熵損失函數之前。
  • 理解損失函數(代碼篇)機器學習你會遇到的「坑」
    全文共1950字,預計學習時長4分鐘在上一節,我們主要講解了替代損失(Surrogate loss)由來和性質,明白了機器學習中損失函數定義的本質,我們先對回歸任務總結一下常用的損失函數:均方誤差(MSE):
  • XGBoost 重要關鍵參數及調優步驟
    4. gamma [default=0, alias: min_split_loss]分裂節點時,損失函數減小值只有大於等於gamma節點才分裂,gamma值越大,算法越保守,越不容易過擬合,但性能就不一定能保證,需要平衡。
  • 機器學習中參數更新規則背後的數學
    在本文中,我們將討論機器學習中參數更新規則背後的數學。我們的目標是找到一種算法,該算法可在任何時間戳下告訴我們如何更改w的值,以使我們在新值下計算的損失小於在當前值下的損失。無論從哪裡開始,如果我們每一步都這樣做,損失一定會減少,最終達到最小值。