2019斯坦福CS224N筆記(13)Contextual Word Representations and Pretraining

【2019斯坦福CS224N筆記】(13)Contextual Word Representations and Pretraining

csdn:https://blog.csdn.net/abcgkj

github:https://github.com/aimi-cn/AILearners


[toc]

詞向量的表示

目前為止,我們已經(jīng)學(xué)過(guò)了one-hot編碼辐益、word2vec站削、glove等詞向量的表示。但是這三個(gè)方法都普遍存在在一些問(wèn)題秉撇,就是無(wú)法解決一詞多義的問(wèn)題市殷。即對(duì)于同一個(gè)詞無(wú)論上下文的單詞是否相同,訓(xùn)練出來(lái)的詞向量都是一樣的篡撵。

當(dāng)我們手中的語(yǔ)料不足時(shí)訓(xùn)練出來(lái)的詞向量效果不會(huì)很理想褐着,這時(shí)我們可以使用他人已經(jīng)訓(xùn)練好的詞向量坷澡,并且以預(yù)訓(xùn)練的詞向量來(lái)作為初始值,在訓(xùn)練過(guò)程中進(jìn)行微調(diào)含蓉。下圖是2011年Collobert, Weston等人使用預(yù)訓(xùn)練的詞向量進(jìn)行NLP任務(wù)的精度和F1值频敛,模型使用了預(yù)訓(xùn)練詞向量之后,得分得到了提升:

但是馅扣,我們訓(xùn)練好的詞向量是不可能涵蓋所有詞的(這里主要有兩個(gè)原因斟赚,一是訓(xùn)練語(yǔ)料中本來(lái)就不存在這些詞,二是這些詞在訓(xùn)練語(yǔ)料中出現(xiàn)次數(shù)過(guò)少)差油,這就會(huì)存在一個(gè)未登錄詞(unknown words)的問(wèn)題汁展,遇到這個(gè)問(wèn)題的時(shí)候我們?cè)趺刺幚砟兀砍R?jiàn)的解決方案是:

  • 首先厌殉,最簡(jiǎn)單和最普遍的解決方法就是將所有未登錄的詞映射為,并且為它訓(xùn)練一個(gè)詞向量侈咕。但是這種方法存在缺點(diǎn)公罕,它把這些未登錄詞都視為相同,不能區(qū)分它們的區(qū)別耀销。
  • 訓(xùn)練字符級(jí)的詞向量
  • 此外楼眷,你可以將其視為新的單詞,并為其分配一個(gè)隨機(jī)向量熊尉,將它們添加到你的詞匯表罐柳。

不過(guò),對(duì)于這樣的解決方案存在著一定的問(wèn)題狰住,即:我們沒(méi)有辦法區(qū)分不同的unknown words张吉。此外,到目前為止催植,對(duì)于每一個(gè)單詞肮蛹,我們都只擁有一個(gè)詞向量,因此很難解決一詞多義的問(wèn)題创南。接下來(lái)伦忠,我們介紹一些經(jīng)典模型。

經(jīng)典模型

1.Peters et al. (2017): TagLM – “Pre-ELMo”

核心思想:通過(guò)上下文中獲取單詞的含義稿辙,但只在task-labeled的任務(wù)(例如昆码,NER)上使用RNN來(lái)進(jìn)行訓(xùn)練。算法的核心步驟如下:

  • 在未標(biāo)記的數(shù)據(jù)上預(yù)訓(xùn)練詞向量和語(yǔ)言模型
  • 在輸入序列中準(zhǔn)備好單詞嵌入和語(yǔ)言模型嵌入。
  • 在序列標(biāo)記模型中同時(shí)使用單詞嵌入和語(yǔ)言模型嵌入赋咽。

模型結(jié)構(gòu)圖如下:

論文得出的結(jié)論如下:

  • 通過(guò)對(duì)語(yǔ)言模型觀察我們得出:使用有監(jiān)督數(shù)據(jù)集來(lái)訓(xùn)練的語(yǔ)言模型效果甚微旧噪,使用雙向語(yǔ)言模型僅對(duì)向前有利,網(wǎng)絡(luò)結(jié)構(gòu)越復(fù)雜效果越好冬耿。
  • 通過(guò)對(duì)任務(wù)特定BILSTM觀察可知:僅使用lm嵌入來(lái)預(yù)測(cè)并不好

2.Peters et al. (2018): ELMo: Embeddings from Language Models

在下一年舌菜,Peters等人提出的ELMo模型在非常多的NLP task上都提高了state-of-the-art 方法的performance, 被一些人稱為新的word2vec. 這文章同時(shí)被ICLR 2018 和NAACL 2018 接收, 后來(lái)獲得了NAACL best paper award。

ELMO是第一個(gè)使用雙向語(yǔ)言模型來(lái)獲得詞向量的方法亦镶。這里使用長(zhǎng)上下文而不是上下文窗口學(xué)習(xí)單詞標(biāo)記向量日月,使用雙向的深層NLM進(jìn)行訓(xùn)練并使用其所有層進(jìn)行預(yù)測(cè)。

我們來(lái)簡(jiǎn)要介紹下這個(gè)模型:首先缤骨,它訓(xùn)練了一個(gè)雙向的語(yǔ)言模型爱咬,其次,其性能很好并且模型不大:使用2個(gè)bilstm層绊起,使用字符級(jí)的CNN建立初始單詞表示(2048 char n-gram過(guò)濾器和2個(gè)HighWay層精拟,512 dim投影),使用4096 dim hidden/cell lstm狀態(tài)虱歪,512dim投影到下一個(gè)輸入蜂绎,使用殘差網(wǎng)絡(luò)連接token輸入和輸出(SoftMax)的參數(shù),并將這些參數(shù)連接在正向和反向語(yǔ)言模型之間笋鄙。

ELMO用于學(xué)習(xí)特定任務(wù)的雙向語(yǔ)言模型表示的組合师枣,這是首次僅使用LSTM堆棧頂層的模型,ELMO的任務(wù)可以簡(jiǎn)單表示為:

在使用雙向語(yǔ)言模型獲得詞向量后萧落,我們?cè)谙掠稳蝿?wù)中使用詞向量時(shí)践美,凍結(jié)有監(jiān)督模型中的ELMO部分,并且將EMLO的權(quán)重根據(jù)不同的任務(wù)來(lái)連接不同的模型中找岖。模型中的兩個(gè)bilstm nlm層具有不同的用途/含義:較低層學(xué)習(xí)的是較低級(jí)別的語(yǔ)法等,比如詞性標(biāo)注陨倡,句法依賴,NER等任務(wù)许布;高層次學(xué)習(xí)的是語(yǔ)義兴革,可用于情感,語(yǔ)義角色標(biāo)注蜜唾,問(wèn)題回答等任務(wù)帖旨。

3.ULMfit

Howard and Ruder (2018)提出了 Universal Language Model Fine-tuning for Text Classification。ULMfit主要是使用遷移學(xué)習(xí)來(lái)進(jìn)行文本分類灵妨。遷移學(xué)習(xí)示意圖如下:

該模型的核心思想是:

  • 在大的通用域語(yǔ)料庫(kù)上訓(xùn)練神經(jīng)語(yǔ)言模型
  • 在目標(biāo)任務(wù)數(shù)據(jù)上微調(diào)語(yǔ)言模型
  • 采用該模型解阅,將其從語(yǔ)言模型轉(zhuǎn)化
  • 為分類器

模型結(jié)構(gòu)圖如下:

該模型在訓(xùn)練時(shí)有一些細(xì)節(jié):

  • 每層使用不同的學(xué)習(xí)率,即Slanted triangular learning rate (STLR) schedule泌霍,開(kāi)始學(xué)習(xí)率逐漸增大货抄,后面逐漸變小
  • 在學(xué)習(xí)分類器時(shí)逐步解凍并且采用STLR策略
  • 分類時(shí)使用下圖拼接的方法:

4.Transformer

transformer的出現(xiàn)主要是為了利用純attention來(lái)解決RNN系列網(wǎng)絡(luò)無(wú)法并行計(jì)算的問(wèn)題述召。模型結(jié)構(gòu)圖如下所示:

我們從圖中可以看到:和大多數(shù)seq2seq模型一樣,transformer的結(jié)構(gòu)也是由encoder和decoder組成蟹地。最初應(yīng)用于使用并行語(yǔ)料庫(kù)進(jìn)行機(jī)器翻譯并預(yù)測(cè)每個(gè)單詞的翻譯积暖。

1.Encoder

Encoder由N=6個(gè)相同的layer組成,layer指的就是上圖左側(cè)的單元怪与,最左邊有個(gè)“Nx”夺刑,這里是x6個(gè)。每個(gè)Layer由兩個(gè)sub-layer組成分别,分別是multi-head self-attention mechanism和fully connected feed-forward network遍愿。其中每個(gè)sub-layer都加了residual connection和normalisation,因此可以將sub-layer的輸出表示為:

首先我們先看一下Multi-head self-attention耘斩。對(duì)于普通的attention機(jī)制沼填,可以用以下形式表示:

multi-head attention則是通過(guò)h個(gè)不同的線性變換對(duì)Q,K括授,V進(jìn)行投影坞笙,最后將不同的attention結(jié)果拼接起來(lái)并通過(guò)線性層傳輸,荚虚,可以用以下公式表達(dá):

與CNN和傳統(tǒng)的Attention相比薛夜,Multi-head attention還是有很多特性的。下面以這句話為例子:The cat stuck out its tongue and licked its owner版述。當(dāng)使用CNN處理這段話時(shí)却邓,體現(xiàn)的是相對(duì)位置的不同線性變換。

當(dāng)使用普通的Attention時(shí)院水,體現(xiàn)的是權(quán)重的平均,如下圖所示:

當(dāng)使用Multi-Attention時(shí),在輸入和輸出上具有不同線性變換的并行行Attention層,如下圖所示:

其次是Position-wise feed-forward networks简十。這層主要是提供非線性變換檬某。

2.Decoder

Decoder和Encoder的結(jié)構(gòu)差不多,但是多了一個(gè)attention的sub-layer螟蝙,這里先明確一下decoder的輸入輸出和解碼過(guò)程:

  • 輸入:encoder的輸出和對(duì)應(yīng)i-1位置decoder的輸出恢恼。所以中間的attention不是self-attention,它的K胰默,V來(lái)自encoder场斑,Q來(lái)自上一位置decoder的輸出
  • 輸出:對(duì)應(yīng)i位置的輸出詞的概率分布
  • 解碼:這里要特別注意一下,編碼可以并行計(jì)算牵署,一次性全部encoding出來(lái)漏隐,但解碼不是一次把所有序列解出來(lái)的,而是像rnn一樣一個(gè)一個(gè)解出來(lái)的奴迅,因?yàn)橐蒙弦粋€(gè)位置的輸入當(dāng)作attention的query

明確了解碼過(guò)程之后最上面的圖就很好懂了青责,這里主要的不同就是新加的另外要說(shuō)一下新加的attention多加了一個(gè)mask,因?yàn)橛?xùn)練時(shí)的output都是ground truth,這樣可以確保預(yù)測(cè)第i個(gè)位置時(shí)不會(huì)接觸到未來(lái)的信息脖隶。

3.Positional Encoding

截止目前為止扁耐,我們介紹的Transformer模型并沒(méi)有捕捉順序序列的能力,也就是說(shuō)無(wú)論句子的結(jié)構(gòu)怎么打亂产阱,Transformer都會(huì)得到類似的結(jié)果婉称。換句話說(shuō),Transformer只是一個(gè)功能更強(qiáng)大的詞袋模型而已构蹬。

為了解決這個(gè)問(wèn)題王暗,論文中在編碼詞向量時(shí)引入了位置編碼(Position Embedding)的特征。具體地說(shuō)怎燥,位置編碼會(huì)在詞向量中加入了單詞的位置信息瘫筐,這樣Transformer就能區(qū)分不同位置的單詞了。那么怎么編碼這個(gè)位置信息呢铐姚?常見(jiàn)的模式有:a. 根據(jù)數(shù)據(jù)學(xué)習(xí)策肝;b. 自己設(shè)計(jì)編碼規(guī)則。在這里作者采用了第二種方式隐绵。那么這個(gè)位置編碼該是什么樣子呢之众?通常位置編碼是一個(gè)特征向量,這樣便于和詞向量進(jìn)行單位加的操作依许。論文給出的編碼公式如下:

在上式中,pos表示單詞的位置棺禾,i表示單詞的維度。關(guān)于位置編碼的實(shí)現(xiàn)可在Google開(kāi)源的算法中get_timing_signal_1d()函數(shù)找到對(duì)應(yīng)的代碼峭跳。

作者這么設(shè)計(jì)的原因是考慮到在NLP任務(wù)重膘婶,除了單詞的絕對(duì)位置,單詞的相對(duì)位置也非常重要蛀醉。根據(jù)公式sin(α+β)=sinαcosβ+cosαsinβ以及cos(α+β)=cosαcosβ-sinαsinβ悬襟,這表明位置k+p的位置向量可以表示為位置k的特征向量的線性變化,這為模型捕捉單詞之間的相對(duì)位置關(guān)系提供了非常大的便利拯刁。

Transformer是第一個(gè)用純attention搭建的模型脊岳,算法的并行性非常好,并且在翻譯任務(wù)上也獲得了更好的結(jié)果垛玻,因此Transformer也可以用在NLP的其他任務(wù)上割捅。但是,Transformer一味的去除掉了RNN帚桩,因此RNN和Transformer的結(jié)合也許會(huì)更好亿驾。

5.BERT

Bert模型是Google在2018年10月發(fā)布的語(yǔ)言表示模型,Bert在NLP領(lǐng)域橫掃了11項(xiàng)任務(wù)的最優(yōu)結(jié)果账嚎,可以說(shuō)是最近NLP中最重要的突破颊乘。Bert模型的全稱是Bidirectional Encoder Representations from Transformers参淹,BERT模型的目標(biāo)是利用大規(guī)模無(wú)標(biāo)注語(yǔ)料訓(xùn)練、獲得文本的包含豐富語(yǔ)義信息的Representation乏悄,即:文本的語(yǔ)義表示浙值,然后將文本的語(yǔ)義表示在特定NLP任務(wù)中作微調(diào),最終應(yīng)用于該NLP任務(wù)檩小。

BERT模型的主要輸入是文本中各個(gè)字/詞的原始詞向量开呐,該向量既可以隨機(jī)初始化,也可以利用Word2Vector等算法進(jìn)行預(yù)訓(xùn)練以作為初始值规求;輸出是文本中各個(gè)字/詞融合了全文語(yǔ)義信息后的向量表示筐付。

BERT將多個(gè)transformer編碼器堆疊在一起。BERT卓越的性能基于兩點(diǎn)阻肿。首先創(chuàng)新預(yù)訓(xùn)練任務(wù)Masked Language Model (MLM)以及Next Sentence Prediction (NSP). 其次訓(xùn)練BERT使用了大量數(shù)據(jù)和算力瓦戚。

MLM使得BERT能夠從文本中進(jìn)行雙向?qū)W習(xí),也就是說(shuō)這種方式允許模型從單詞的前后單詞中學(xué)習(xí)其上下文關(guān)系丛塌。此前的模型這是做不到的较解。此前最優(yōu)的算法稱為Generative Pre-training (GPT) 該方法采用了從左到右的訓(xùn)練方式,另外ELMo 采用淺雙向?qū)W習(xí)(shallow bidirectionality)赴邻。

而近日印衔,百度提出知識(shí)增強(qiáng)的語(yǔ)義表示模型 ERNIE(Enhanced Representation from kNowledge IntEgration),并發(fā)布了基于 PaddlePaddle 的開(kāi)源代碼與模型姥敛,在語(yǔ)言推斷奸焙、語(yǔ)義相似度、命名實(shí)體識(shí)別彤敛、情感分析与帆、問(wèn)答匹配等自然語(yǔ)言處理(NLP)各類中文任務(wù)上的驗(yàn)證顯示,模型效果全面超越 BERT墨榄。由此可以看出玄糟,預(yù)訓(xùn)練模型已成為近來(lái)NLP領(lǐng)域的潮流。

本文使用 文章同步助手 同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末渠概,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子嫂拴,更是在濱河造成了極大的恐慌播揪,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筒狠,死亡現(xiàn)場(chǎng)離奇詭異猪狈,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)辩恼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門雇庙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谓形,“玉大人,你說(shuō)我怎么就攤上這事疆前『” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵竹椒,是天一觀的道長(zhǎng)童太。 經(jīng)常有香客問(wèn)我,道長(zhǎng)胸完,這世上最難降的妖魔是什么书释? 我笑而不...
    開(kāi)封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮赊窥,結(jié)果婚禮上爆惧,老公的妹妹穿的比我還像新娘。我一直安慰自己锨能,他們只是感情好扯再,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著腹侣,像睡著了一般叔收。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上傲隶,一...
    開(kāi)封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天饺律,我揣著相機(jī)與錄音,去河邊找鬼跺株。 笑死复濒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乒省。 我是一名探鬼主播巧颈,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼袖扛!你這毒婦竟也來(lái)了砸泛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蛆封,失蹤者是張志新(化名)和其女友劉穎唇礁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惨篱,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盏筐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砸讳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琢融。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡界牡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漾抬,到底是詐尸還是另有隱情宿亡,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布奋蔚,位于F島的核電站她混,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泊碑。R本人自食惡果不足惜坤按,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馒过。 院中可真熱鬧臭脓,春花似錦、人聲如沸腹忽。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窘奏。三九已至嘹锁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間着裹,已是汗流浹背领猾。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骇扇,地道東北人摔竿。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像少孝,于是被迫代替她去往敵國(guó)和親继低。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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