Monday, December 13, 2021

NLP(六):BERT Overview

NLP(六):BERT Overview

2019/01/17

說明:

Natural Language Processing (NLP) 的 Pre-trained Models 從 2013 的 Word2vec 到 2018 的 BERT 有極大的進步 [1]-[11]。簡單說,Word2vec, GloVe, fastText 是淺層模型,ELMo, AWD-LSTM, ULMFiT 是深層的 LSTM 模型。OpenAI GPT 是深層的 Transformer 模型。BERT 則是基於雙向的 ELMo 模型與深層的 Transformer 模型之優點合併成為雙向的 Transformer 模型。

建議讀者可先瞭解 Transformer 的原理 [5],再分別以一篇文章 [6] 或兩篇文章 [7], [8] 或三篇文章 [9]-[11] 漸次理解 Pre-trained Models 的演進過程。

-----

Outline:

一、Word2vec, GloVe, fastText
二、ELMo, AWD-LSTM, ULMFiT
三、OpenAI GPT
四、BERT
五、from Word2vec to BERT

-----


Fig. 1. BERT [1]。

-----

一、 Word2vec、GloVe、fastText

◎ 三個淺層模型。

「早在 2013 年 Google 提出了 Word2Vec 之後,NLP 領域的深度學習就開始使用預訓練模型,而後斯坦福大學提出的 GloVe 和 Facebook 提出的 fastText 則是進一步發展。然而在今年之前,這方面的嘗試大都局限於使用淺層網絡,在詞的層面上進行建模。針對具體的應用場景,要達到較好的效果依然需要非常大量的標註語料。預訓練深層模型以及之上的遷移學習在圖像領域的成功,引領著 NLP 領域專家們也在思考如何實現同樣的範式。多年的努力與探索,終於在今年迎來了豐收。 」[4]

二、ELMo、AWD-LSTM、ULMFiT

◎ ELMo 是雙向的 LSTM 模型。

「首先是年初發表於 NAACL-HIT 2018 的 ELMo 預訓練模型,用正向和反向兩個 LSTM 語言模型(BiLM)在通用語料上進行訓練,將得到的預訓練好的模型(即 ELMo)用於深度網絡的輸入上,在多個任務上能夠明顯改善已有的模型的效果。 」[4]

◎ ULMFiT 是三層的 AWD-LSTM 模型。

「此後,FastAI 基於三層 AWD-LSTM 構建出的語言模型,使用大規模通用語料預訓練出 ULMFiT 模型。將該模型應用於特定領域,只要使用非常少量的標註數據就可以達到普通模型需要大量標註數據的效果。這個模型的成功,使得大家看到了遷移學習在 NLP 領域上的曙光。」 [4]

三、OpenAI GPT

◎ OpenAI GPT 是單向的 Transformer(捨棄 LSTM,只保留 FNN)。

「緊接著,OpenAI 使用 Transformer 和無監督結合的方法在大規模通用語料上進行訓練,得到預訓練好的 GPT 模型。針對特定的場景,在預訓練好的 GPT 模型基礎上,用小得多的數據集進行有監督學習,獲得了當時最好的成績。 」[4]

四、BERT

◎ BERT 綜合雙向的 ELMo 與單向的 OpenAI GPT 之優點,推出雙向 Transformer 的版本。

「2018 年10月,Google 在 GPT 的基礎上進一步改進,提出了基於 Transofrmer 的 BERT 模型。在訓練 BERT 的過程中,Google 構造出 MLM(Masked Language Model)語言模型,這是一個“真”雙向語言模型。並在通用的大規模語料 BooksCorpus(800M words)加上英文維基百科(2,500M words)上進行無監督訓練,得到預訓練模型 BERT。論文中,使用預訓練的模型 BERT 在 11 個任務上進行有監督的微調(遷移學習),其效果全部達到當前最優。特別地,在斯坦福問答評測數據集(SQuAD 1.1)上超越了人類專家的評測結果。」[4]

五、from Word2vec to BERT

-----


Fig. 2. From fastText to ELMo [2]。

-----


Fig. 3. CBOW and skip-gram [3]。

-----

Task #1: Masked LM

◎ CBOW and Masked-LM

「CBOW 方法,它的核心思想是:在做語言模型任務的時候,我把要預測的單詞摳掉,然後根據它的上文 Context-before 和下文 Context-after 去預測單詞。其實 BERT 怎麼做的? BERT就是這麼做的。從這裡可以看到方法間的繼承關係。當然 BERT 作者沒提 Word2vec 及 CBOW 方法,這是我的判斷,BERT 作者說是受到完形填空任務的啟發,這也很可能,但是我覺得他們要是沒想到過 CBOW 估計是不太可能的。」[6]。

-----

Task #2: Next Sentence Prediction

◎ Skip-gram and Skip-Thought

「除了用上 Masked-LM 的方法使得雙向 Transformer 下的語言模型成為現實,BERT 還利用和借鑒了 Skip-thoughts 方法中的句子預測問題,來學習句子級別的語義關係,具體做法則是將兩個句子組合成一個序列,當然組合方式會按照下面將要介紹的方式,然後讓模型預測這兩個句子是否是先後近鄰的兩個句子,也就是會把 "Next Sentence Prediction" 問題建模成為一個二分類問題。訓練的時候,數據中有 50% 的情況這兩個句子是先後關係,而另外 50% 的情況下,這兩個句子是隨機從語料中湊到一起的,也就是不具備先後關係,以此來構造訓練數據。句子級別的預測思路和之前介紹的 Skip-thoughts 基本一致,當然更本質的思想來源還是來自於 Word2vec 中的 skip-gram 模型。」[10]。

◎ Skip-Thought and Quick-Thought

「2018年的時候,在 Skip-thoughts 的基礎上,Google Brain 的 Logeswaran 等人將這一思想做了進一步改進,他們認為 Skip-thoughts 的 Decoder 效率太低,且無法在大規模語料上很好的訓練(這是 RNN 結構的通病)。所以他們把 Skip-thoughts 的生成任務改進成為了一個分類任務,具體說來就是把同一個上下文窗口中的句子對標記為正例,把不是出現在同一個上下文窗口中的句子對標記為負例,並將這些句子對輸入模型,讓模型判斷這些句子對是否是同一個上下文窗口中,很明顯,這是一個分類任務。可以說,僅僅幾個月之後的 BERT 正是利用的這種思路。而這些方法都和 Skip-thoughts 一脈相承。」[11]。

-----

符號說明:

# basic
// advanced

-----

Paper

# Word2vec
Le, Quoc, and Tomas Mikolov. "Distributed representations of sentences and documents." International Conference on Machine Learning. 2014.
http://proceedings.mlr.press/v32/le14.pdf

# GloVe
Pennington, Jeffrey, Richard Socher, and Christopher Manning. "Glove: Global vectors for word representation." Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014.
https://nlp.stanford.edu/pubs/glove.pdf

# fastText
Bojanowski, Piotr, et al. "Enriching word vectors with subword information." Transactions of the Association for Computational Linguistics 5 (2017): 135-146.
https://www.mitpressjournals.org/doi/pdfplus/10.1162/tacl_a_00051

# ELMo
Peters, Matthew E., et al. "Deep contextualized word representations." arXiv preprint arXiv:1802.05365 (2018).
https://arxiv.org/pdf/1802.05365.pdf

# AWD-LSTM
Merity, Stephen, Nitish Shirish Keskar, and Richard Socher. "Regularizing and optimizing LSTM language models." arXiv preprint arXiv:1708.02182 (2017).
https://arxiv.org/pdf/1708.02182.pdf

# ULMFiT
Howard, Jeremy, and Sebastian Ruder. "Universal language model fine-tuning for text classification." Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). Vol. 1. 2018.
http://www.aclweb.org/anthology/P18-1031

# OpenAI GPT
Radford, Alec, et al. "Improving language understanding by generative pre-training." URL https://s3-us-west-2. amazonaws. com/openai-assets/research-covers/languageunsupervised/language understanding paper. pdf (2018).
https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf

# BERT
Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).
https://arxiv.org/pdf/1810.04805.pdf

-----

References

# BERT
[1] Google AI Blog  Open Sourcing BERT  State-of-the-Art Pre-training for Natural Language Processing
https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html

[2] 想研究 NLP,不了解詞嵌入與句嵌入怎麼行? _ 香港矽谷
https://www.hksilicon.com/articles/1646194

[3] A Review of the Neural History of Natural Language Processing - AYLIEN
http://blog.aylien.com/a-review-of-the-recent-history-of-natural-language-processing/

# Word2vec GloVe fastText 淺層 ELMo ULMFiT Open AI GPT BERT 深層
[4] 帮AI摆脱“智障”之名,NLP这条路还有多远  - AI科技大本营 - CSDN博客
https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/83754091

# Transformer
[5] Seq2seq pay Attention to Self Attention  Part 2(中文版)
https://medium.com/@bgg/seq2seq-pay-attention-to-self-attention-part-2-%E4%B8%AD%E6%96%87%E7%89%88-ef2ddf8597a4

-----

一文道盡預訓練模型
 
[6] 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 - 知乎
https://zhuanlan.zhihu.com/p/49271699
    
-----

兩篇文章分別解釋淺層模型與深層模型

# word2vec、GloVe、fastText
[7] word2vec、glove和 fasttext 的比较 - sun_brother的博客 - CSDN博客
https://blog.csdn.net/sun_brother/article/details/80327070

# ELMo、ULMFiT、OpenAI GPT
[8]【NLP】语言模型和迁移学习 - 知乎
https://zhuanlan.zhihu.com/p/42618178

-----

三篇系列文章詳細解釋預訓練模型。

[9] NLP的巨人肩膀(上) - 简书
https://www.jianshu.com/p/fa95963c9abd

[10] NLP的巨人肩膀(中) - 简书
https://www.jianshu.com/p/81dddec296fa

[11] NLP的巨人肩膀(下) - 简书
https://www.jianshu.com/p/922b2c12705b

No comments: