如何讓語言模型充分利用GPU:針對大規模並行裝置的N-gram

機器之心分析師發表於2018-11-27

愛丁堡大學的論文《N-gram language models for massively parallel devices》介紹了用於大規模並行裝置的 N-gram 語言模型。機器之心技術分析師對該論文進行了解讀。

論文:https://aclweb.org/anthology/P/P16/P16-1183.pdf

引言

這篇論文談的是用於大規模並行裝置(GPU)的 N-gram 語言模型,這是最早為 GPU 設計的語言模型(至少在這篇論文發表時是這樣)。N-gram 語言模型的查詢速度存在計算瓶頸,而且儘管 GPU 擅於計算,但在 GPU 上卻並不好實現,因為還不存在針對 GPU 的已有的資料結構型別。這個問題導致我們無法完全發揮 GPU 的效力。

1 背景

也許有的讀者並不真正瞭解 N-gram 模型是什麼,因此首先我會先簡要介紹一些基本概念:

N-gram 語言模型

參閱:https://lagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf

為詞序列分配概率的模型被稱為語言模型(LM)。N-gram 是目前最簡單的語言模型。N-gram 是 N 個詞構成的序列:2-gram(bi-gram)是兩個詞構成的詞序列,比如“please turn”;3-gram(tri-gram)是三個詞構成的詞序列,比如“please turn your”。

我們需要關注的有兩點(至少這篇論文是這麼說的):

  • 給定之前的詞,如何使用 N-gram 模型來估計 N-gram 中最後一個詞的概率?
  • 如何將概率分配給整個序列?

(注意:我們通常會丟棄“模型”這個詞,這樣 N-gram 既可表示詞序列本身,也可表示為其分配概率的預測模型。這或許會產生一點術語歧義。)

對數概率

為什麼為語言模型使用對數概率?因為(按照定義)概率是小於或等於 1 的,所以相乘的概率越多,所得到的積就會越小。乘上足夠多的 N-gram 就會導致數值下溢。通過使用對數概率而非原始概率,我們能得到不會那麼小的值。在對數空間中相加等效於線上性空間中相乘,這樣我們就可以通過加法來將對數概率結合到一起。在對數空間中執行所有計算和儲存是很方便的,如果我們想檢視結果,只需要將結果轉換到普通概率空間既可,即求該對數概率的指數:p1 × p2 × p3 × p4 = exp(log p1 +log p2 +log p3 +log p4)。

相關文章