Adaptive Softmax
提出原因
原來的分層Softmax只使用于CPU,并不適用于GPU
基本原理
根據(jù)2-8原則,即80%的文檔中只包含20%的單詞乾巧,或者說20%的單詞覆蓋了80%的文檔描沟,設想下面的場景:
假設有1000個單詞構(gòu)成的詞匯表,其中200個為常用詞钾虐,且任意一個單詞噪窘,它為常用詞的概率80%。那么將詞匯表按常用和非常用進行分組后效扫,計算次數(shù)的期望為200 x 80% + 800 x 20% = 320倔监。而原始的Softmax需要計算1000次。則分組后菌仁,計算速度提升了將近4倍丐枉!
那么處理詞匯表的基本思路如下:
- 將詞匯表分割為兩組
和
- 將少一些的更常出現(xiàn)的單詞放入
, 其它單詞放入
,那么任意一個單詞出現(xiàn)在
中的概率顯然更大掘托,即
處理步驟
- 首先將
瘦锹,從原詞匯表中剔除,并新增一個分類用來指代原來屬于
中的詞闪盔,那么現(xiàn)在詞匯表的數(shù)量為
- 首先在現(xiàn)有的詞匯表上做一次Softmax弯院,若單詞屬于
, 唯一需要做的就是在
中再做一次Softmax。那么單詞的概率變?yōu)榱?
,
指單詞屬于
的概率泪掀,而后者指單詞是
中任意單詞的概率听绳。
然而,你并非只能分為兩組异赫,更常用的是分為2-5組椅挣,處理方式與2組的相似,以5組為例:
- 首先將原詞匯表進行劃分塔拳,使其數(shù)量為
鼠证,其余4類代表單詞屬于其它分組的概率
- 然后按照2組時的第二步相同
提升推理速度的另一個Trick
另一個以最小的精度犧牲提高速度的方法,就是為每個組都賦予不同的容量靠抑。設為模型隱層的輸出維度量九,對于更常用的單詞,需要更大的容量來使預測更準確。假設1000個單詞荠列,被[200, 400]分為3組类浪,那么前200個單詞用
進行預測,200-400個單詞可以
的容量進行預測肌似,剩余的單詞可以
的容量進行預測费就。