關于最近的NLP模型Bert、Elmo、GPT(上)

有些時沒有更新blog,最近被工作弄的很鬧心,拖了又拖,還是把最近的一些nlp模型研究學一下。

雖然現(xiàn)在沒有這這一塊工作,但是總的來說,新出來的這些個模型,還是沒有讓人眼前一亮的東西出來。Bert的出現(xiàn)可能是暫時統(tǒng)一了江湖,但是底層結構不改,還是在提升那1%。


Elmo

Elmo(Embeddings from Language Models),是allen NLP 在18年6月NAACL上發(fā)的一個詞向量訓練模型。

就是說,Elmo的作用就是訓練一個模型,用來表示某個詞,換句話說,和word2vec和GloVe功能是一樣的,這個新的訓練方法有兩點進步:

  1. 能夠處理單詞用法中的復雜特性(比如句法和語義)
  2. 有些用法在不同的語言上下文中如何變化(比如為詞的多義性建模)

具體是什么意思呢,因為很多詞它表達的意思是隨著語境而變化的,比如說“今年的蘋果很貴,13塊一斤”和“今年的蘋果很貴,高配要1萬塊”。這兩個句子里的蘋果顯然不是一個東西,但是我們之前用的詞向量word2vec和GloVe,都不能表達出這兩個詞之間的差別。
所以Elmo要解決這個問題。

Elmo為什么能有這個能力來聯(lián)系上下文表達出詞義。其實可以想想,什么模型可以聯(lián)系上下文,無疑CRF和RNN對不對。而CRF是通過概率圖的形式,將每一步的概率向下傳遞,這就沒辦法給出每一個詞的輸出。但是我們在LSTM中,每一個cell是又兩個輸出的,一個是c(x)(細胞狀態(tài)),一個是h(x)(隱藏層狀態(tài)),這兩種狀態(tài)中都包含之前的信息。
這里我們想到,從前到后是一種信息,從后到前又是一種信息,所以用雙向模型所擁有的信息會更多。如果把雙向每一個cell的隱藏層信息的向量組合起來,最后再接一個softmax(也有取最上一層的輸出),最后訓練出的向量即為我們想要的詞向量。


ELMo

大家其實看張圖已經可以很清楚的看到ELMO的結構了,也沒有那么復雜,對比和word2vec訓練出的詞向量:

  1. ELMo的假設前提一個詞的詞向量不應該是固定的,所以在一詞多意方面ELMo的效果一定比word2vec要好。
  2. word2vec的學習詞向量的過程是通過中心詞的上下窗口去學習,學習的范圍太小了,而ELMo在學習語言模型的時候是從整個語料庫去學習的,而后再通過語言模型生成的詞向量就相當于基于整個語料庫學習的詞向量,更加準確代表一個詞的意思。
  3. ELMo還有一個優(yōu)勢,就是它建立語言模型的時候,可以運用非任務的超大語料庫去學習,一旦學習好了,可以平行的運用到相似問題。

上elmo的效果:

  • Textual entailment: stanford natural language inference (SNLI)數(shù)據(jù)集上提升了1.4%。
  • Question answering: 在stanford question answering dataset (SQuAD)數(shù)據(jù)集上提升了4.2%,將ELMo加入到之前的state-of-the-art的ensemble模型中,提升了10%。
  • Semantic role labeling: 比之前的state-of-the-art模型提高了3.2%,將ELMo加入到之前的state-of-the-art的單模型中,提升了1.2%。
  • Coreference resolution: 比之前的state-of-the-art模型提高了3.2%,將ELMo加入到之前的state-of-the-art的ensemble模型中,提升了1.6%。
  • Named entity extraction: 在CoNLL 2003 NER task數(shù)據(jù)機上提高了2.06%
  • Sentiment analysis: 比之前的state-of-the-art模型提高了3.3%,將ELMo加入到之前的state-of-the-art模型中,提升了1%。
    也還是1-3%左右的提升。

GPT

因為bert統(tǒng)治性的地位,bert我要單獨用一篇文章講。這里來介紹GPT。
GPT是openAI早于BERT的一個模型,但是由于宣傳原因,導致GPT1.0并沒有出個大新聞,但是GPT的單項語言模型在GPT2.0為自己正名,雖然還沒有在GLUE上大展拳腳,但是我相信,按照目前的趨勢,GPT3.0一定會大展拳腳,打掉bert。這篇文章寫的很不錯GPT和BERT的現(xiàn)狀和前景。

說GPT之前,我想說結合Bert和GPT來看,LSTM很有可能淘汰,而被Transformer全方位的取代,原因有兩點:

  1. Transformer可以并行計算;
  2. Transformer有關聯(lián)上下文的能力

GPT采用了單項的Transformer完成預訓練任務,并且將12個Trm疊加起來,而訓練的過程其實非常的簡單,就是將句子n個詞的詞向量(第一個為<SOS>)加上Positional Encoding后輸入到前面提到的Transfromer中,n個輸出分別預測該位置的下一個詞(<SOS>預測句子中的第一個詞,最后一個詞的預測結果不用于語言模型的訓練)。


GPT的單項Transformer結構

GPT的訓練方式

和Bert相同的是,GPT也是分兩個階段進行訓練,第一階段預訓練后還有一個fine-tune。(因為GPT發(fā)布的比bert早,所以是不是bert抄GPT的呢?)

上一步中最后一個詞的輸出我們沒有用到,在這一步中就要使用這一個輸出來作為下游監(jiān)督學習的輸入,這樣就運用少量的帶標簽數(shù)據(jù)對模型參數(shù)進行微調。
然后接下來一步就是我覺得這個模型很牛逼的地方了,為避免Fine-Tuning使得模型陷入過擬合,文中還提到了輔助訓練目標的方法,類似于一個多任務模型或者半監(jiān)督學習。具體方法就是在使用最后一個詞的預測結果進行監(jiān)督學習的同時,前面的詞繼續(xù)上一步的無監(jiān)督訓練,使得最終的損失函數(shù)成為:


多任務的損失函數(shù)

針對不同任務,需要修改輸入數(shù)據(jù)的格式:


多任務輸入數(shù)據(jù)訓練格式

站著把監(jiān)督和無監(jiān)督都辦了,真是牛逼。這篇文章寫的非常好https://zhuanlan.zhihu.com/p/69290203。

以上是GPT1.0,而GPT2.0主要改進我覺得除了對Transformer有細微的改動之外,還有就是增大了參數(shù)容量(變成了1.5億參數(shù)。。),還有訓練數(shù)據(jù)加大(800W高質量網頁內容)。這些改變就讓GPT2.0變得炙手可熱(好像是有錢就是牛逼,暴力提升法),不得不期待一下GPT3.0 能做到什么地步。

好的,上到這里就完了,下來好好講一講Transformer和Bert。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 本文上兩篇系列 NLP的巨人肩膀(上) NLP的巨人肩膀(中) 4.6 Bidirectional Encoder...
    weizier閱讀 6,832評論 1 22
  • 本文另兩篇系列 NLP的巨人肩膀(上) NLP的巨人肩膀(下) 3. 梯子的一級半 除了在word級別的embed...
    weizier閱讀 6,850評論 0 18
  • 自從著魔似的看了電視劇《我的前半生》之后,我就在思考,這部劇的作者是誰,她怎么能編出這么好的故事,于是我順藤摸瓜。...
    榴蓮幫主閱讀 629評論 0 0
  • 出差回來,接娃放學,吃完晚飯,屁顛屁顛兒的去上我人生的第一節(jié)咖啡課,手沖咖啡? 晚上是有個趙老師上的課,帥~而且愛...
    阿欣_30閱讀 260評論 0 0
  • 提綱 1、介紹一下分享的書。介紹作者和本書的要義。 2、為什么要分享這本書。 3、這本書能帶給你什么? 4、這本書...
    文雅羊閱讀 851評論 0 1

友情鏈接更多精彩內容