動態(tài)詞向量算法 — ELMo

傳統(tǒng)的詞向量模型,例如 Word2VecGlove 學(xué)習(xí)得到的詞向量是固定不變的系吩,即一個單詞只有一種詞向量玖姑,顯然不適合用于多義詞。而 ELMo 算法使用了深度雙向語言模型 (biLM)好芭,只訓(xùn)練語言模型,而單詞的詞向量是在輸入句子實時獲得的逸月,因此詞向量與上下文信息密切相關(guān)栓撞,可以較好地區(qū)分歧義。

1. 靜態(tài)詞向量算法

在之前的文章中介紹了詞嵌入算法 Word2Vec 和 Glove碗硬。與傳統(tǒng)的 one-hot 編碼瓤湘、共現(xiàn)向量相比,詞嵌入算法得到的詞向量維度更低恩尾、也可以比較好地支持一些下游的任務(wù)弛说,例如文檔分類,問答系統(tǒng)等翰意。

但是這兩種算法都是靜態(tài)詞向量算法木人,在數(shù)據(jù)集上訓(xùn)練好一個語言模型之后,每一個詞的詞向量就固定下來了冀偶。后續(xù)使用詞向量時醒第,無論輸入的句子是什么,詞向量都是一樣的进鸠,例如:

  • ”我喜歡吃小米“中的”小米“指一種食物

  • ”小米手機挺好用“中的”小米“指手機品牌

給定上面兩個句子稠曼,在 Word2Vec 和 Glove 中去得到“小米“的詞向量都是一樣的,不能根據(jù)上下文給出更準(zhǔn)確的詞向量客年。

ELMo 是一種動態(tài)詞向量算法霞幅,在大型的語料庫里訓(xùn)練一個 biLSTM (雙向LSTM模型)漠吻。下游任務(wù)需要獲取單詞詞向量的時候,將整個句子輸入 biLSTM司恳,利用 biLSTM 的輸出作為單詞的詞向量途乃,包含了上下文信息∪痈担可以理解成耍共,biLSTM 是一個函數(shù),函數(shù)的輸入是一個句子铅鲤,輸出是句子中單詞的詞向量划提。

2. 雙向語言模型

首先介紹什么是雙向語言模型,以及如何通過 biLSTM 得到單詞的詞向量邢享,對 LSTM 不熟悉的童鞋可以參考前一篇文章《循環(huán)神經(jīng)網(wǎng)絡(luò) RNN鹏往、LSTM、GRU》骇塘。

2.1 雙向語言模型

雙向語言模型包括前向模型后向模型伊履,給定一個包含 N 個單詞的句子 T = [t(1), t(2), ..., t(N)],前向模型需要通過前面的單詞 [t(1), t(2), ..., t(k-1)] 預(yù)測下一個單詞 t(k)款违,而后向模型需要通過后面的單詞唐瀑,預(yù)測前一個單詞。

2.2 使用 biLSTM 得到上下文相關(guān)的詞向量

2 層的 biLSTM

biLSTM 是一種雙向的循環(huán)神經(jīng)網(wǎng)絡(luò)插爹,包含了前向網(wǎng)絡(luò)與后向網(wǎng)絡(luò)兩部分哄辣。上圖是一個層數(shù) L = 2 的 biLSTM。

每一個單詞 t(i) 的輸入是詞向量赠尾,這個詞向量是固定的力穗,可以使用 Word2Vec 或者 Glove 生成的詞向量,在 ELMo 中使用了 CNN-BIG-LSTM 生成的詞向量气嫁。注意当窗,ELMo 輸入時的詞向量是固定的,ELMo 將輸入的詞向量傳到 biLSTM 得到的才是動態(tài)的寸宵,包含上下文信息崖面。

ELMo 的論文中使用以下符號表示雙向 LSTM 中每一層對應(yīng)第 i 個單詞的輸出前向輸出包含第 i 個單詞之前的語義梯影,后向輸出包含了第 i 個單詞之后的語義巫员。

文章中比較難添加公式,因此使用 h(k,j,→) 表示前向輸出甲棍,使用 h(k,j,←) 表示后向向輸出疏遏,請諒解。每一層的輸出 h(k-1,j,→) 和 h(k+1,j,←) 都是單詞的動態(tài)詞向量

LSTM 一共 L 層财异,對于前向 LSTM,每一個單詞 t(k-1) 的最后一層輸出 h(k-1,L,→) 用于預(yù)測下一個單詞 t(k)唱遭;對于后向 LSTM戳寸,每一個單詞 t(k+1) 的最后一層輸出 h(k+1,L,←) 用于預(yù)測前一個單詞 t(k)。預(yù)測的過程采用 softmax拷泽, biLSTM 需要優(yōu)化的目標(biāo)函數(shù)如下:

θ(x) 表示單詞輸入時候的詞向量疫鹊,這個詞向量是固定的。θ(s) 表示 softmax 層司致,用于預(yù)測前后的單詞拆吆。θ(LSTM,→) 表示前向 LSTM 的參數(shù),用于計算 h(k-1,L,→)脂矫。θ(LSTM,←) 表示后向 LSTM 的參數(shù)枣耀,用于計算 h(k-1,L,←)。

3. ELMo 算法

3.1 流程介紹

ELMo 模型

ELMo 中使用的 biLSTM 層數(shù) L = 2庭再,ELMo 首先在大型的數(shù)據(jù)集上訓(xùn)練好模型捞奕,然后再后續(xù)任務(wù)中可以根據(jù)輸入的句子,輸出每一個單詞的詞向量拄轻。例如給定一個句子 T = [t(1), t(2), ..., t(N)]颅围,ELMo 計算詞向量的方法如下:

  • 從靜態(tài)的詞向量表里查找單詞的詞向量 E(1), ..., E(N) 用于輸入。ELMo 使用 CNN-BIG-LSTM 生成的詞向量作為輸入恨搓。

  • 將單詞詞向量 E(1), ..., E(N) 分別輸入第 1 層前向 LSTM 和后向 LSTM院促,得到前向輸出 h(1,1,→), ..., h(N,1,→),和后向輸出 h(1,1,←), ..., h(N,1,←)斧抱。

  • 將前向輸出 h(1,1,→), ..., h(N,1,→) 傳入到第 2 層前向 LSTM常拓,得到第 2 層前向輸出 h(1,2,→), ..., h(N,2,→);將后向輸出 h(1,1,←), ..., h(N,1,←) 傳入到第 2 層后向 LSTM夺姑,得到第 2 層后向輸出 h(1,2,←), ..., h(N,2,←)墩邀。

  • 則單詞 i 最終可以得到的詞向量包括 E(i), h(N,1,→), h(N,1,←), h(N,2,→), h(N,2,←),如果采用 L 層的 biLSTM 則最終可以得到 2L+1 個詞向量盏浙。

3.2 使用詞向量

在上面我們知道句子中一個單詞 i 可以得到 2L+1 個詞向量眉睹,在實際使用的過程中應(yīng)該如何利用這 2L+1 個詞向量?

首先在 ELMo 中使用 CNN-BIG-LSTM 詞向量 E(i) 作為輸入废膘,E(i) 的維度等于 512竹海。然后每一層 LSTM 可以得到兩個詞向量 h(i,layer,→) 和 h(i,layer,←),這兩個向量也都是 512 維丐黄。則對于單詞 i 可以構(gòu)造出 L+1 個詞向量斋配。

h(i,0) 表示兩個 E(i) 直接拼接,表示輸入詞向量,這是靜態(tài)的艰争,1024 維坏瞄。

h(i,j) 表示第 j 層 biLSTM 的兩個輸出詞向量 h(i,j,→) 和 h(i,j,←) 直接拼接,這是動態(tài)的甩卓,1024維鸠匀。

ELMo 中不同層的詞向量往往的側(cè)重點往往是不同的,輸入層采用的 CNN-BIG-LSTM 詞向量可以比較好編碼詞性信息逾柿,第 1 層 LSTM 可以比較好編碼句法信息缀棍,第 2 層 LSTM 可以比較好編碼單詞語義信息。

ELMo 的作者提出了兩種使用詞向量的方法:

第一種是直接使用最后一層 biLSTM 的輸出作為詞向量机错,即 h(i,L)爬范。

第二種是更加通用的做法,將 L+1 個輸出加權(quán)融合在一起弱匪,公式如下青瀑。γ 是一個與任務(wù)相關(guān)的系數(shù),允許不同的 NLP 任務(wù)縮放 ELMo 的向量痢法,可以增加模型的靈活性狱窘。s(task,j) 是使用 softmax 歸一化的權(quán)重系數(shù)。

3.3 ELMo效果

ELMo 論文中的例子

這是論文中的一個例子财搁,上面的是 Glove蘸炸,下面兩行是 ELMo〖獗迹可以看到 Glove 查找 play 的最近鄰搭儒,會出現(xiàn)“游戲”、“表演”提茁、“運動”等相關(guān)的單詞淹禾,可能與 paly 在句子中的實際意思不同。但是在 ELMo 中茴扁,可以看到第一個句子中的 play 是比賽的意思铃岔,其最近鄰句子的 play 也是比賽的意思。而第二個句子的 play 都是表演的意思峭火。說明 ELMo 可以根據(jù)上下文更好地得到一個單詞的詞向量毁习。

4. ELMo 總結(jié)

  • ELMo 訓(xùn)練語言模型,而不是直接訓(xùn)練得到單詞的詞向量卖丸,在后續(xù)使用中可以把句子傳入語言模型纺且,結(jié)合上下文語義得到單詞更準(zhǔn)確的詞向量。

  • 使用了 biLSTM稍浆,可以同時學(xué)習(xí)得到保存上文信息和下文信息的詞向量载碌。

  • biLSTM 中不同層得到的詞向量側(cè)重點不同猜嘱,輸入層采用的 CNN-BIG-LSTM 詞向量可以比較好編碼詞性信息,第 1 層 LSTM 可以比較好編碼句法信息嫁艇,第 2 層 LSTM 可以比較好編碼單詞語義信息朗伶。通過多層詞向量的融合得到最終詞向量,最終詞向量可以兼顧多種不同層次的信息步咪。

參考文獻(xiàn)

  1. Deep contextualized word representations
  2. 知乎:ELMo原理解析及簡單上手使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腕让,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子歧斟,更是在濱河造成了極大的恐慌,老刑警劉巖偏形,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件静袖,死亡現(xiàn)場離奇詭異,居然都是意外死亡俊扭,警方通過查閱死者的電腦和手機队橙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萨惑,“玉大人捐康,你說我怎么就攤上這事∮拱” “怎么了解总?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姐仅。 經(jīng)常有香客問我花枫,道長,這世上最難降的妖魔是什么掏膏? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任劳翰,我火速辦了婚禮,結(jié)果婚禮上馒疹,老公的妹妹穿的比我還像新娘佳簸。我一直安慰自己,他們只是感情好颖变,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布生均。 她就那樣靜靜地躺著,像睡著了一般悼做。 火紅的嫁衣襯著肌膚如雪疯特。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天肛走,我揣著相機與錄音漓雅,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛邻吞,可吹牛的內(nèi)容都是我干的组题。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼抱冷,長吁一口氣:“原來是場噩夢啊……” “哼崔列!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起旺遮,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤赵讯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后耿眉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體边翼,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年鸣剪,在試婚紗的時候發(fā)現(xiàn)自己被綠了组底。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡筐骇,死狀恐怖债鸡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铛纬,我是刑警寧澤厌均,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站饺鹃,受9級特大地震影響莫秆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悔详,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一镊屎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茄螃,春花似錦缝驳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拼弃,卻和暖如春夏伊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吻氧。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工溺忧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留咏连,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓鲁森,卻偏偏與公主長得像祟滴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子歌溉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容