自適應Softmax(Adaptive Softmax)

Adaptive Softmax

自適應Softmax
原文:https://towardsdatascience.com/speed-up-your-deep-learning-language-model-up-to-1000-with-the-adaptive-softmax-part-1-e7cc1f89fcc9

提出原因

原來的分層Softmax只使用于CPU,并不適用于GPU

基本原理

根據(jù)2-8原則,即80%的文檔中只包含20%的單詞,或者說20%的單詞覆蓋了80%的文檔,設想下面的場景:

假設有1000個單詞構成的詞匯表,其中200個為常用詞,且任意一個單詞,它為常用詞的概率80%。那么將詞匯表按常用和非常用進行分組后,計算次數(shù)的期望為200 x 80% + 800 x 20% = 320。而原始的Softmax需要計算1000次。則分組后,計算速度提升了將近4倍!

那么處理詞匯表的基本思路如下:

  1. 將詞匯表分割為兩組 V^{HEAD}V^{TAIL}
  2. 將少一些的更常出現(xiàn)的單詞放入V^{HEAD}, 其它單詞放入V^{TAIL},那么任意一個單詞出現(xiàn)在V^{HEAD}中的概率顯然更大,即p(V^{HEAD}) > p(V^{TAIL})

處理步驟

  1. 首先將V^{TAIL},從原詞匯表中剔除,并新增一個分類用來指代原來屬于V^{TAIL}中的詞,那么現(xiàn)在詞匯表的數(shù)量為V^{HEAD} + 1
  2. 首先在現(xiàn)有的詞匯表上做一次Softmax,若單詞屬于V^{TAIL}, 唯一需要做的就是在V^{TAIL}中再做一次Softmax。那么單詞的概率變?yōu)榱?P^{HEAD}(tail|h) * P^{TAIL}(w|h),P^{HEAD}(tail|h)指單詞屬于V^{TAIL}的概率,而后者指單詞是V^{TAIL}中任意單詞的概率。

然而,你并非只能分為兩組,更常用的是分為2-5組,處理方式與2組的相似,以5組為例:

  1. 首先將原詞匯表進行劃分,使其數(shù)量為V^{HEAD} + 4,其余4類代表單詞屬于其它分組的概率
  2. 然后按照2組時的第二步相同

提升推理速度的另一個Trick

另一個以最小的精度犧牲提高速度的方法,就是為每個組都賦予不同的容量。設nh為模型隱層的輸出維度,對于更常用的單詞,需要更大的容量來使預測更準確。假設1000個單詞,被[200, 400]分為3組,那么前200個單詞用nh進行預測,200-400個單詞可以nh / 2的容量進行預測,剩余的單詞可以nh / 4的容量進行預測。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 最近新接觸文本分類問題,對于我來數(shù)第一個問題就是Word Embedding這個詞到底是什么意思,因此也就開始學習...
    小松qxs閱讀 25,186評論 2 27
  • 首頁 資訊 文章 資源 小組 相親 登錄 注冊 首頁 最新文章 IT 職場 前端 后端 移動端 數(shù)據(jù)庫 運維 其他...
    Helen_Cat閱讀 4,151評論 1 10
  • 主要內(nèi)容 自然語言輸入編碼 前饋網(wǎng)絡 卷積網(wǎng)絡 循環(huán)網(wǎng)絡(recurrent networks ) 遞歸網(wǎng)絡(re...
    JackHorse閱讀 4,481評論 0 2
  • 有人說萬事開頭難,有人說堅持到底難。對于一個淺嘗輒止的人來說,平臺期無疑是最難過的。 小A是一個私企里的部門經(jīng)理。...
    Lucky_mama閱讀 188評論 0 1
  • 因為一句“城外的人都想進去,城里的人都想出去”,在家的幾天特意拜讀了一下錢老爺子的圍城,方鴻漸一個具有多重特色...
    站在風中的豬閱讀 720評論 0 0

友情鏈接更多精彩內(nèi)容