日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

softmax函数_干货 | 浅谈 Softmax 函数

發(fā)布時間:2024/10/8 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 softmax函数_干货 | 浅谈 Softmax 函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊上方“視學算法”,馬上關注

來自 | 知乎 作者 | LinT鏈接丨h(huán)ttps://zhuanlan.zhihu.com/p/79585726編輯 | 深度學習這件小事公眾號僅作學術交流,如有侵權,請聯(lián)系刪除

0. 引言

Softmax函數(shù)幾乎是深度學習中的標配了,在人工神經(jīng)網(wǎng)絡中,幾乎無處不可見softmax函數(shù)的身影。可以認為softmax是arg max操作的一種平滑近似。

我將softmax的用途總結為兩種:

  • 分類:給定一系列類別,softmax可以給出某輸入被劃分到各個類別的概率分布。由于人工智能領域的許多問題都可以抽象成分類問題,所以softmax最廣泛的應用當屬分類;
  • 尋址:由于softmax的輸出是一種概率分布的形式,可以用它來實現(xiàn)一種軟性的尋址。近幾年逐漸推廣的(軟性)注意力機制就可以認為是一種軟性尋址的方式,根據(jù)各個鍵向量與查詢向量的相似度從各個值向量中獲取一定的“信息”。因此使用了softmax的注意力機制也可以用于外部記憶的訪問。

不難發(fā)現(xiàn),在分類問題中,我們也可以使用arg max來找到對應的類別;在尋址問題中,一個直觀的方法也是使用arg max尋找最相似的向量/記憶。但是arg max操作并不具有良好的數(shù)學性質,其不可導的性質使其無法直接應用基于梯度的優(yōu)化方法。因此在分類和尋址兩種用途中,常常都使用softmax函數(shù)替代arg max。

基于這兩種用途,softmax可以在人工神經(jīng)網(wǎng)絡中充當什么樣的角色,就靠諸君的想象了。這篇文章中,我想簡單、粗淺地探討一下softmax的一些性質與變種。

1. 基本形式

給定一個 維向量,softmax函數(shù)將其映射為一個概率分布。標準的softmax函數(shù) 由下面的公式定義[1]:

其中,分母是配分函數(shù)(Partition Function),一般簡記為 ,表示所有狀態(tài)/值的總和,作為歸一化因子;分子是勢能函數(shù)(Potential Function)。

直觀上看,標準softmax函數(shù)用一個自然底數(shù) 先拉大了輸入值之間的差異,然后使用一個配分將其歸一化為一個概率分布。在分類問題中,我們希望模型分配給正確的類別的概率接近1,其他的概率接近0,如果使用線性的歸一化方法,很難達到這種效果,而softmax有一個先拉開差異再歸一化的“兩步走”戰(zhàn)略,因此在分類問題中優(yōu)勢顯著。

事實上,在勢能函數(shù)和配分函數(shù)中,可以采用的底數(shù)不僅僅是自然底數(shù) ,也可以采用一些其他的底數(shù)。原則上,任意 都可以作為這里的底數(shù),越大的底數(shù)越能起到“拉開差異”的作用。使用 作為底數(shù)時,將產生以下的非標準softmax函數(shù)[1]:

其中 是一個實數(shù),正的 常常在機器學習中使用,在信息檢索的工作DSSM中, 就充當了一個平滑因子[2];負的 常常在熱力學系統(tǒng)中使用,由于一些概率圖模型也參考了熱力學的原理,所以在概率圖模型中也常常能見到這種形式,如玻爾茲曼機。

2. 導數(shù)與優(yōu)化

標準softmax具有非常漂亮的導數(shù)形式:

這里導數(shù)的推導可以參考 @邱錫鵬 老師的《神經(jīng)網(wǎng)絡與深度學習》[3]附錄B.2.4的推導。

在分類問題中,softmax函數(shù)常常和交叉熵損失函數(shù)一起使用,此時交叉熵損失函數(shù) 對 的導數(shù),由下面的形式給出:

其中 是真實標簽對應的one-hot編碼向量。這樣的導數(shù)在優(yōu)化時非常方便,實現(xiàn)起來也非常簡單。

由于softmax函數(shù)先拉大了輸入向量元素之間的差異,然后才歸一化為一個概率分布,在應用到分類問題時,它使得各個類別的概率差異比較顯著,最大值產生的概率更接近1,這樣輸出分布的形式更接近真實分布。

但是當softmax函數(shù)被應用到尋址時,例如注意力機制中,softmax這個拉大元素間差異的過程可能會導致一定的問題。假設輸入向量有唯一的最大值,如果將arg max操作定義為指示最大值的一個one-hot編碼函數(shù) ,在非標準softmax中有[1]:

* 這里的證明參見下方的補充(A)。

如果將非標準softmax的 融入到輸入中,則容易看出:當輸入的方差/數(shù)量級較大時,softmax的輸出會比較接近一個one-hot向量。根據(jù)式 ,其導數(shù)的兩個項會比較接近,導致導數(shù)變成0矩陣。這也就導致了梯度彌散的問題,不利于優(yōu)化,具體討論可以參考我先前的一篇回答[4]。這也是為什么注意力機制中常常使用縮放點積形式的注意力。

插一句題外話,開篇提到softmax是arg max操作的一種平滑近似,而針對max操作的近似,其實有一個LogSumExp[5]操作(也叫作softmax),其導數(shù)形式就是softmax函數(shù),是不是很有趣呢?

3. Softmax的解釋

Softmax可以由三個不同的角度來解釋。從不同角度來看softmax函數(shù),可以對其應用場景有更深刻的理解。

3.1 是arg max的一種平滑近似[1]

前面提到過,softmax可以當作arg max的一種平滑近似,與arg max操作中暴力地選出一個最大值(產生一個one-hot向量)不同,softmax將這種輸出作了一定的平滑,即將one-hot輸出中最大值對應的1按輸入元素值的大小分配給其他位置。如式 所示,當?shù)讛?shù)增大時,softmax逐漸收斂為arg max操作。

在機器學習應用中,我們往往不(直接)需要一個arg max的操作,這時候顯然數(shù)學性質更好、更容易優(yōu)化的softmax就是我們的第一選擇。

3.2 歸一化產生一個概率分布

Softmax函數(shù)的輸出符合指數(shù)分布族的基本形式

其中 。

不難理解,softmax將輸入向量歸一化映射到一個類別概率分布,即 個類別上的概率分布(前文也有提到)。這也是為什么在深度學習中常常將softmax作為MLP的最后一層,并配合以交叉熵損失函數(shù)(對分布間差異的一種度量)。

3.3 產生概率無向圖的聯(lián)合概率

從概率圖模型的角度來看,softmax的這種形式可以理解為一個概率無向圖上的聯(lián)合概率。因此你會發(fā)現(xiàn),條件最大熵模型與softmax回歸模型實際上是一致的,諸如這樣的例子還有很多。由于概率圖模型很大程度上借用了一些熱力學系統(tǒng)的理論,因此也可以從物理系統(tǒng)的角度賦予softmax一定的內涵。

4. Softmax的改進與變種

Softmax函數(shù)是一種簡單優(yōu)美的歸一化方法,但是它也有其固有的缺陷。直觀上看,當應用到實際問題時,其最大的問題就在于配分函數(shù)的計算:當類別的數(shù)量很多時,配分函數(shù)的計算就成為了推斷和訓練時的一個瓶頸。在自然語言處理中,類別常常對應詞匯表中的所有詞匯,這個數(shù)量之大可見一斑,如果直接采用softmax計算方法,計算效率會非常低。因此一般采用一些方法改進softmax函數(shù),加速模型訓練。這里列舉幾個自然語言處理中的經(jīng)典改進/變種[3]:

  • 層次化softmax:將扁平的 分類問題轉化為層次化的分類問題。將詞匯表中的詞分組組織成(二叉)樹形結構,這樣一個 分類問題,可以轉化為多層的二分類問題,從而將求和的次數(shù)由 降低到了樹的深度級別。這里可以使用的一個方法是,按照詞匯的頻率求和編碼Huffman樹,從而進一步減少求和操作的計算次數(shù)。
  • 采樣方法:使用梯度上升優(yōu)化時,softmax的導數(shù)涉及到一次配分函數(shù)的計算和一次所有詞匯上的softmax對詞匯的梯度的期望,這兩個計算都可以用采樣方法來近似,比如重要性采樣,這樣計算次數(shù)由 減少為采樣樣本數(shù) 的級別。這種方法的性能很受采樣策略的影響,以重要性采樣方法為例,其效果就依賴于提議分布的選取;采樣樣本數(shù) 的選取也需要考慮精度和訓練效率的折衷。
  • 噪聲對比估計(NCE):將密度估計問題轉換為兩類分類問題(區(qū)分噪聲與真實數(shù)據(jù)),從而降低計算復雜度。其中配分函數(shù)被替換為了一個可學習的參數(shù),這樣NCE方法能促使輸入的未歸一化向量自己適應為一個歸一化的、接近真實分布的分布向量。由于不再需要計算配分函數(shù),訓練效率大大提升。這種對比學習思想在深度學習中也十分常見。

5. 總結

前面簡單討論了softmax的性質、解釋與變種,從現(xiàn)在來看,似乎softmax已經(jīng)是神經(jīng)網(wǎng)絡中的一根老油條了。Softmax還有哪些可以挖掘的地方呢?作為一個菜鳥,只好先把這個問題拋給諸位了。

A. 補充

突然覺得式 直接放進來有一點太唐突了,覺得還是要簡單證明一下,算是完善一下之前的回答。

假設固定輸入 不變,變化參數(shù) ,假設輸入 中有唯一的最大值 ,則有:

不妨設 ,可以分類討論一下:

1. 當 ,則 ,此時

2. 當 ,則 ,此時結合 ,可以得到即,當 取無窮大時,非標準softmax的輸出收斂到一個one-hot向量,其中最大輸入對應的輸出值是1,其他輸出是0。當輸入向量中有多個最大值,可以更寬泛地定義arg max操作,使其輸出為一個 維向量,其中 個最大值下標對應的輸出為 ,其它輸出為0。這時類似上面的證明,很容易驗證,當 時,softmax依然仍然收斂為arg max操作。

參考鏈接:

[1] Softmax function

https://en.wikipedia.org/wiki/Softmax_function

[2] Huang et al., Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

https://posenhuang.github.io/papers/cikm2013_DSSM_fullversion.pdf

[3] 邱錫鵬,《神經(jīng)網(wǎng)絡與深度學習》

https://nndl.github.io

[4] transformer中的attention為什么scaled? - lintongmao的回答 - 知乎

https://www.zhihu.com/question/339723385/answer/782509914

[5] LogSumExp https://en.wikipedia.org/wiki/LogSumExp

總結

以上是生活随笔為你收集整理的softmax函数_干货 | 浅谈 Softmax 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。