ELMo詞向量

ELMo詞向量出自于論文《Deep contextualized word representations》

什么是ELMo瞻佛?

ELMo的全稱是Embeddings from Language Models费彼,中文意思是基于語(yǔ)言模型的詞向量,它是一個(gè)上下文詞向量/動(dòng)態(tài)詞向量,同一單詞在不同的上下文中具有不同的含義泵三,而ELMo詞向量能表示出這種不同口猜。
實(shí)現(xiàn)過(guò)程可以簡(jiǎn)單描述為:將不同的句子輸入模型,模型會(huì)實(shí)時(shí)產(chǎn)生上下文詞向量逃沿。

ELMo是如何實(shí)現(xiàn)的婴渡?

  1. 構(gòu)建一個(gè)雙向語(yǔ)言模型,給定一個(gè)包含N個(gè)tokens(t_1,t_2,...,t_N)的序列
    前向語(yǔ)言模型凯亮,給定前面的tokens(t_1,t_2,...,t_{k-1})求下一個(gè)token是t_k的概率:
    p(t_1,t_2,...,t_N)=\prod_{k=1}^{N}p(t_k|t_1,t_2,...,t_{k-1})
    反向語(yǔ)言模型边臼,與前向語(yǔ)言模型相反,知道后邊的token假消,求前面的token:
    p(t_1,t_2,...,t_N)=\prod_{k=1}^{N}p(t_k|t_{k+1},t_{k+2},...,t_N)
    那么柠并,雙向語(yǔ)言模型可以表示為:
    \sum_{k=1}^N \log (p(t_k|t_1,t_2,...,t_{k-1};\Theta_x;\stackrel{\rightarrow}\Theta_{LSTM},\Theta_s)+p(t_k|t_{k+1},t_{k+2},...,t_N);\Theta_x; \stackrel{\leftarrow} \Theta_{LSTM},\Theta_s)
    其中,\Theta_x是輸入層單詞表示的參數(shù)置谦,\Theta_{LSTM} 是LSTM參數(shù)堂鲤,\Theta_s是Softmax層的參數(shù)。

  2. 結(jié)合網(wǎng)絡(luò)各層的雙向語(yǔ)言模型的表達(dá)
    對(duì)于tokent_k媒峡,通過(guò)一個(gè)由L層雙向語(yǔ)言模型構(gòu)成的網(wǎng)絡(luò)瘟栖,可以得到2L+1個(gè)表示:
    R_k=\{x_k^{LM},\stackrel{\rightarrow}h_{k,j}^{LM},\stackrel{\leftarrow} h_{k,j}^{LM}|j=1,2,...,L\} =\{h_{k,j}^{LM}|j=0,1,...,L\}
    h_{k,0}^{LM}是對(duì)token直接編碼的結(jié)果(可以使用word2vec,Glove,或者將字符通過(guò)CNN進(jìn)行編碼)谅阿,h_{k,j}^{LM}是每個(gè)biLSTM層輸出的結(jié)果半哟。
    在下游任務(wù)中,可以組合不同層的單詞的表示進(jìn)行使用:
    ELMo_k^{task}=E(R_k,\Theta^{task})=\gamma^{task}\sum_{j=0}^{L}s_j^{task}h_{h,j}^{LM}
    其中签餐,\gamma^{task}是任務(wù)相關(guān)的scale參數(shù)寓涨,不同的任務(wù)要設(shè)置不同的數(shù)值,s_j是一個(gè)softmax的結(jié)果氯檐,可以在訓(xùn)練的過(guò)程中學(xué)習(xí)戒良。

ELMo是如何訓(xùn)練的?

網(wǎng)絡(luò)結(jié)構(gòu)共三層

  • 第一層是普通的word embedding 可以用wrod2vec或者glove來(lái)得到冠摄,或者使用character level得到token embedding糯崎。 這部分是general embedding,上下文無(wú)關(guān)河泳。文中使用的是character level的CNN+Highway沃呢。
  • 后面兩層是兩個(gè)biLSTM 去encode 輸入(同時(shí)也有殘差連接), 每一層LSTM得到的輸出(隱狀態(tài)) 作為每個(gè)詞的上下文相關(guān)的word vectors。

ELMo和Glove的區(qū)別

  • Glove 詞向量是固定的詞向量拆挥。同一單詞在不同的語(yǔ)句中具有相同的表示薄霜。

  • ELMo的基本輸入單元為句子,每個(gè)詞沒(méi)有固定的詞向量,是根據(jù)詞的上下文環(huán)境來(lái)動(dòng)態(tài)產(chǎn)生當(dāng)前詞的詞向量惰瓜,可以較好地解決一詞多義的問(wèn)題否副。

  • ELMo 的輸入是字母而不是單詞。因此鸵熟,他們可以利用子字詞單元來(lái)計(jì)算有意義的表示副编,即使對(duì)于詞典外的詞(如 FastText這個(gè)詞)也是如此。

  • ELMo 是 biLMs 幾層激活的串聯(lián)流强。語(yǔ)言模型的不同層對(duì)單詞上的不同類型的信息進(jìn)行編碼(如在雙向LSTM神經(jīng)網(wǎng)絡(luò)中痹届,詞性標(biāo)注在較低層編碼好,而詞義消歧義用上層編碼更好)打月。連接所有層可以自由組合各種文字表示队腐,以提高下游任務(wù)的性能。

實(shí)踐參考代碼

哈工大改寫的多國(guó)語(yǔ)言版:https://github.com/HIT-SCIR/ELMoForManyLangs

Pytorch版ELMo(Allennlp)

from allennlp.commands.elmo import ElmoEmbedder
elmo = ElmoEmbedder(options_file='../data/elmo_options.json', weight_file='../data/elmo_weights.hdf5', cuda_device=0)
context_tokens = [['I', 'love', 'you', '.'], ['Sorry', ',', 'I', 'don', "'t", 'love', 'you', '.']]
elmo_embedding, elmo_mask = elmo.batch_to_embeddings(context_tokens)
print(elmo_embedding)
print(elmo_mask)

1. 導(dǎo)入ElmoEmbedder類
2. 實(shí)例化ElmoEmbedder. 3個(gè)參數(shù)分別為參數(shù)配置文件, 預(yù)訓(xùn)練的權(quán)值文件, 想要用的gpu編號(hào), 這里兩個(gè)文件我是直接下載好的, 如果指定系統(tǒng)默認(rèn)自動(dòng)下載會(huì)花費(fèi)一定的時(shí)間, 下載地址
   
    DEFAULT_OPTIONS_FILE = "https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_options.json"
    DEFAULT_WEIGHT_FILE = "https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5"
    
3. 輸入是一個(gè)list的token序列, 其中外層list的size即內(nèi)層list的個(gè)數(shù)就是我們平時(shí)說(shuō)的batch_size, 內(nèi)層每個(gè)list包含一個(gè)你想要處理的序列(這里是一句話, 你可以一篇文章或輸入任意的序列, 因?yàn)檫@里預(yù)訓(xùn)練的模型是在英文wikipidia上訓(xùn)的, 所以輸入非英文的序列肯定得到的結(jié)果沒(méi)什么意義).
4. 通過(guò)batch_to_embeddings對(duì)輸入進(jìn)行計(jì)算的到tokens的embedding結(jié)果以及我們輸入的batch的mask信息(自動(dòng)求mask)

    Variable containing:
    ( 0  , 0  ,.,.) = 
      0.6923 -0.3261  0.2283  ...   0.1757  0.2660 -0.1013
     -0.7348 -0.0965 -0.1411  ...  -0.3411  0.3681  0.5445
      0.3645 -0.1415 -0.0662  ...   0.1163  0.1783 -0.7290
               ...             ?             ...          
      0.0000  0.0000  0.0000  ...   0.0000  0.0000  0.0000
      0.0000  0.0000  0.0000  ...   0.0000  0.0000  0.0000
      0.0000  0.0000  0.0000  ...   0.0000  0.0000  0.0000
      
            ?  

    ( 1  , 2  ,.,.) = 
     -0.0830 -1.5891 -0.2576  ...  -1.2944  0.1082  0.6745
     -0.0724 -0.7200  0.1463  ...   0.6919  0.9144 -0.1260
     -2.3460 -1.1714 -0.7065  ...  -1.2885  0.4679  0.3800
               ...             ?             ...          
      0.1246 -0.6929  0.6330  ...   0.6294  1.6869 -0.6655
     -0.5757 -1.0845  0.5794  ...   0.0825  0.5020  0.2765
     -1.2392 -0.6155 -0.9032  ...   0.0524 -0.0852  0.0805
    [torch.cuda.FloatTensor of size 2x3x8x1024 (GPU 0)]

    Variable containing:
        1     1     1     1     0     0     0     0
        1     1     1     1     1     1     1     1
    [torch.cuda.LongTensor of size 2x8 (GPU 0)]

輸出兩個(gè)Variable, 第一個(gè)是2*3*8*1024的embedding信息, 第二個(gè)是mask. 
其中2是batch_size, 3是兩層biLM的輸出加一層CNN對(duì)character編碼的輸出, 8是最長(zhǎng)list的長(zhǎng)度(對(duì)齊), 1024是每層輸出的維度
mask的輸出2是batch_size, 8實(shí)在最長(zhǎng)list的長(zhǎng)度, 第一個(gè)list有4個(gè)tokens, 第二個(gè)list有8個(gè)tokens, 所以對(duì)應(yīng)位置輸出1.

參考資料
http://shomy.top/2019/01/01/elmo-1/
https://cstsunfu.github.io/2018/06/ELMo/
https://blog.csdn.net/sinat_26917383/article/details/81913790

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子会喝,更是在濱河造成了極大的恐慌甸鸟,老刑警劉巖挺狰,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)第股,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)话原,“玉大人夕吻,你說(shuō)我怎么就攤上這事》比剩” “怎么了涉馅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)黄虱。 經(jīng)常有香客問(wèn)我稚矿,道長(zhǎng),這世上最難降的妖魔是什么捻浦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任盐捷,我火速辦了婚禮,結(jié)果婚禮上默勾,老公的妹妹穿的比我還像新娘。我一直安慰自己聚谁,他們只是感情好母剥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般环疼。 火紅的嫁衣襯著肌膚如雪习霹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天炫隶,我揣著相機(jī)與錄音淋叶,去河邊找鬼。 笑死伪阶,一個(gè)胖子當(dāng)著我的面吹牛煞檩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栅贴,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼斟湃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了檐薯?” 一聲冷哼從身側(cè)響起凝赛,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坛缕,沒(méi)想到半個(gè)月后墓猎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赚楚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年毙沾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片直晨。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搀军,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勇皇,到底是詐尸還是另有隱情罩句,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布敛摘,位于F島的核電站门烂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兄淫。R本人自食惡果不足惜屯远,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捕虽。 院中可真熱鬧慨丐,春花似錦、人聲如沸泄私。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至捅暴,卻和暖如春恬砂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蓬痒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工泻骤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梧奢。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓狱掂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親粹断。 傳聞我的和親對(duì)象是個(gè)殘疾皇子符欠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • “假如你對(duì)未來(lái)渴望到恨不得從喉嚨里深處一只手去抓住它希柿,那么你很可能得到的遠(yuǎn)遠(yuǎn)超出你的期許。命养筒、運(yùn)曾撤,很多時(shí)候就掌握在...
    何夕輕語(yǔ)閱讀 458評(píng)論 1 3
  • 上海/SOPHIA安然 迎來(lái)了小雪的節(jié)氣挤悉, 恰巧也是國(guó)外的感恩節(jié)。 在眾多國(guó)外的節(jié)日中巫湘, 我最喜歡的就是感恩節(jié)装悲。 ...
    Sophia安然閱讀 1,443評(píng)論 33 57
  • 從聊天群里知道了今年的高考作為題目之一,如上圖所示尚氛。 我猜測(cè)命題的中心大抵是诀诊,“對(duì)優(yōu)秀的嚴(yán)苛,對(duì)尚未優(yōu)秀的寬容”阅嘶。...
    化濁閱讀 230評(píng)論 0 0
  • 幣圈金馬獎(jiǎng)日更第10/30 天 寫稿子不用心很容易看出來(lái)属瓣。 最近給領(lǐng)導(dǎo)寫了篇稿子,反反復(fù)復(fù)改了好幾次讯柔,領(lǐng)導(dǎo)一會(huì)這一...
    LEMON_d6ad閱讀 183評(píng)論 0 0
  • 近日來(lái)魂迄,城東鎮(zhèn)及下轄各村委充分結(jié)合人大選民登記的工作粗截,通過(guò)派發(fā)宣傳單張、出動(dòng)宣傳車等方式捣炬,加大關(guān)于毒品危害的宣...
    城東綜治中心閱讀 534評(píng)論 0 0