<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一文讀懂Softmax函數(shù)

          共 4848字,需瀏覽 10分鐘

           ·

          2021-05-17 22:37

          轉(zhuǎn)載自 | 深度學(xué)習(xí)這件小事

          作者 | LinT

          鏈接 | https://zhuanlan.zhihu.com/p/79585726

          編者薦語(yǔ)

          Softmax函數(shù)幾乎是深度學(xué)習(xí)中的標(biāo)配了,在人工神經(jīng)網(wǎng)絡(luò)中,幾乎無(wú)處不可見(jiàn)softmax函數(shù)的身影。可以認(rèn)為softmax是arg max操作的一種平滑近似。


             0. 引言

          文章將softmax的用途總結(jié)為兩種:

          • 分類:給定一系列類別,softmax可以給出某輸入被劃分到各個(gè)類別的概率分布。由于人工智能領(lǐng)域的許多問(wèn)題都可以抽象成分類問(wèn)題,所以softmax最廣泛的應(yīng)用當(dāng)屬分類;

          • 尋址:由于softmax的輸出是一種概率分布的形式,可以用它來(lái)實(shí)現(xiàn)一種軟性的尋址。近幾年逐漸推廣的(軟性)注意力機(jī)制就可以認(rèn)為是一種軟性尋址的方式,根據(jù)各個(gè)鍵向量與查詢向量的相似度從各個(gè)值向量中獲取一定的“信息”。因此使用了softmax的注意力機(jī)制也可以用于外部記憶的訪問(wèn)。

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

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


             1. 基本形式

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

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

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

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

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


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

          標(biāo)準(zhǔn)softmax具有非常漂亮的導(dǎo)數(shù)形式:

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

          在分類問(wèn)題中,softmax函數(shù)常常和交叉熵?fù)p失函數(shù)一起使用,此時(shí)交叉熵?fù)p失函數(shù)  對(duì)  的導(dǎo)數(shù),由下面的形式給出:

          其中  是真實(shí)標(biāo)簽對(duì)應(yīng)的one-hot編碼向量。這樣的導(dǎo)數(shù)在優(yōu)化時(shí)非常方便,實(shí)現(xiàn)起來(lái)也非常簡(jiǎn)單。

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

          但是當(dāng)softmax函數(shù)被應(yīng)用到尋址時(shí),例如注意力機(jī)制中,softmax這個(gè)拉大元素間差異的過(guò)程可能會(huì)導(dǎo)致一定的問(wèn)題。假設(shè)輸入向量有唯一的最大值,如果將arg max操作定義為指示最大值的一個(gè)one-hot編碼函數(shù)  ,在非標(biāo)準(zhǔn)softmax中有[1]

          * 這里的證明參見(jiàn)下方的補(bǔ)充(A)。

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

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


             3. Softmax的解釋

          Softmax可以由三個(gè)不同的角度來(lái)解釋。從不同角度來(lái)看softmax函數(shù),可以對(duì)其應(yīng)用場(chǎng)景有更深刻的理解。

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

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

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

          3.2 歸一化產(chǎn)生一個(gè)概率分布

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

          其中  。

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

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

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


             4. Softmax的改進(jìn)與變種

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

          • 層次化softmax將扁平的  分類問(wèn)題轉(zhuǎn)化為層次化的分類問(wèn)題。將詞匯表中的詞分組組織成(二叉)樹(shù)形結(jié)構(gòu),這樣一個(gè)  分類問(wèn)題,可以轉(zhuǎn)化為多層的二分類問(wèn)題,從而將求和的次數(shù)由  降低到了樹(shù)的深度級(jí)別。這里可以使用的一個(gè)方法是,按照詞匯的頻率求和編碼Huffman樹(shù),從而進(jìn)一步減少求和操作的計(jì)算次數(shù)。

          • 采樣方法使用梯度上升優(yōu)化時(shí),softmax的導(dǎo)數(shù)涉及到一次配分函數(shù)的計(jì)算和一次所有詞匯上的softmax對(duì)詞匯的梯度的期望,這兩個(gè)計(jì)算都可以用采樣方法來(lái)近似,比如重要性采樣,這樣計(jì)算次數(shù)由  減少為采樣樣本數(shù)  的級(jí)別。這種方法的性能很受采樣策略的影響,以重要性采樣方法為例,其效果就依賴于提議分布的選取;采樣樣本數(shù)  的選取也需要考慮精度和訓(xùn)練效率的折衷。

          • 噪聲對(duì)比估計(jì)(NCE)將密度估計(jì)問(wèn)題轉(zhuǎn)換為兩類分類問(wèn)題(區(qū)分噪聲與真實(shí)數(shù)據(jù)),從而降低計(jì)算復(fù)雜度。其中配分函數(shù)被替換為了一個(gè)可學(xué)習(xí)的參數(shù),這樣NCE方法能促使輸入的未歸一化向量自己適應(yīng)為一個(gè)歸一化的、接近真實(shí)分布的分布向量。由于不再需要計(jì)算配分函數(shù),訓(xùn)練效率大大提升。這種對(duì)比學(xué)習(xí)思想在深度學(xué)習(xí)中也十分常見(jiàn)。


             5. 總結(jié)

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


             A. 補(bǔ)充

          突然覺(jué)得式  直接放進(jìn)來(lái)有一點(diǎn)太唐突了,覺(jué)得還是要簡(jiǎn)單證明一下,算是完善一下之前的回答。

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

          不妨設(shè)  ,可以分類討論一下:

          1. 當(dāng)  ,則  ,此時(shí)


          2. 當(dāng)  ,則  ,此時(shí)
          結(jié)合  ,可以得到
          即,當(dāng)  取無(wú)窮大時(shí),非標(biāo)準(zhǔn)softmax的輸出收斂到一個(gè)one-hot向量,其中最大輸入對(duì)應(yīng)的輸出值是1,其他輸出是0。
          當(dāng)輸入向量中有多個(gè)最大值,可以更寬泛地定義arg max操作,使其輸出為一個(gè)  維向量,其中  個(gè)最大值下標(biāo)對(duì)應(yīng)的輸出為  ,其它輸出為0。這時(shí)類似上面的證明,很容易驗(yàn)證,當(dāng)  時(shí),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)絡(luò)與深度學(xué)習(xí)》


          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


          ?------------------------------------------------


          雙一流高校研究生團(tuán)隊(duì)創(chuàng)建 ↓

          專注于計(jì)算機(jī)視覺(jué)原創(chuàng)并分享相關(guān)知識(shí) ?


          整理不易,點(diǎn)贊三連!

          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产香蕉9| 日本一级婬片A片免费播放一 | 一区二区三区精品毛片 | 性无码免费一区二区三区四区 | 夜夜爽7777精品国产三级 |