更新流程↓
Task 1: 簡介和詞向量Word Vectors
Task 2: 詞向量和詞義Word Senses
Task 3: 子詞模型Subword Models
Task 4: Contextual Word Embeddings
Task 5: 大作業
日本人綜藝感從昭和時代開始就這麼強了嗎?
今日份的舒適
常見餐桌禮儀
文章目錄
1. ELMo
Allen實驗室認爲好的詞表徵應該同時兼顧兩個問題:一是單詞在語義和語法上的複雜特點;二是隨着語言環境的改變,這些用法也應該隨之變化。
爲此,Allen實驗室提出了deep contextualized word representation(深度情景化詞表徵)。這種算法的特點是每個詞的表徵都是整個輸入語句的函數。
具體做法:
- 現在大語料上以 language model爲目標訓練處 Bi-LSTM模型,利用它產生詞語的表徵 (pre-trained biLM模型)。ELMo因此得名embedding from language model。
- 爲了應用在下游NLP任務中,一般先利用下游任務的語料庫(此時,忽略掉label)進行 language model的微調(fine tuning),這種微調相當於一種domain transfer。
- 然後纔是利用label的信息進行supervised learning。
ELMo表徵是“深”的,就是說它們是biLM的所有層的內部表徵的函數。這樣做的好處是能夠產生豐富的詞語表徵。高層的LSTM的狀態可以捕捉詞語意義中和語境相關的那方面的特徵(比如可以用來做語義的消歧),而低層的LSTM可以找到語法方面的特徵(比如可以做詞性標註)。如果把它們結合在一起,在下游的NLP任務中會體現優勢。
1.1. Bidirectional language models
ELMo顧名思義是從Language Models得來的embeddings,確切的說是來自於Bidirectional language models。具體可以表示爲:
這裏的是一系列的tokens,作爲語言模型可能有不同的表達方法,最經典的方法是利用多層的LSTM,ELMo的語言模型也採取了這種方式。所以這個Bidirectional LM由stacked bidirectional LSTM來表示。
假設輸入是的表示。在每一個位置,每一層LSTM上都輸出相應的context-dependent的表徵,,代表LSTM的某層layer。例如頂層的LSTM的輸出可以表示爲:,通過Softmax層來預測下一個token 。
最開始兩個概率的對數極大似然估計Loglikehood表達如下:
這裏的代表token embedding, 代表softmax layer的參數。
1.2. ELMo
對於每一個token,一個層的biLM要計算出共個表徵:
這裏是簡寫,當時,代表token層。時,同時包括兩個方向的表徵。
在下游的任務中, ELMo把所有層的R壓縮在一起形成一個單獨的vector。(在最簡單的情況下,可以只保留最後一層的。)
具體來講如何使用ElMo產生的表徵呢?對於一個supervised NLP任務,可以分以下三步:
- 產生pre-trained biLM模型。模型由兩層bi-LSTM組成,之間用residual connection連接起來。
- 在任務語料上(注意是語料,忽略label)fine tuning上一步得到的biLM模型。可以把這一步看爲biLM的domain transfer。
- 利用ELMo的word embedding來對任務進行訓練。通常的做法是把它們作爲輸入加到已有的模型中,一般能夠明顯的提高原模型的表現。
2.GPT
GPT的核心思想是先通過無標籤的文本去訓練生成語言模型,再根據具體的NLP任務(如文本蘊涵、QA、文本分類等),來通過有標籤的數據對模型進行fine-tuning。
具體來說,在這篇論文中提出了半監督的方法,即結合了無監督的預訓練和有監督的fine-tuning。論文采用兩階段訓練。首先,在未標記數據集上訓練語言模型來學習神經網絡模型的初始參數。隨後,使用相應NLP任務中的有標籤的數據地將這些參數微調,來適應當前任務。
模型的結構是使用了多層的單向Transformer結構(《Attention is All you need》提出)。下圖是GPT語言模型的結構:
2.1. 無監督的預訓練
對於無標籤的文本,最大化語言模型的極大似然函數: 這裏的是文本上下文窗口的大小。
論文中使用的是多層Transformer的decoder的語言模型,input爲詞嵌入以及單詞token的位置信息;再對transformer_block的輸出向量做softmax,output爲詞的概念分佈。具體公式如下:
這裏表示的上下文,是詞向量矩陣,是位置向量矩陣。
2.2. 有監督的fine-tuning
在對模型預訓練之後,採用有監督的目標任務對模型參數微調。假設一個有標籤的數據集,假設每一條數據爲一個單詞序列以及相應的標籤,通過之前預訓練的模型獲得輸出向量,再送入線性輸出層,來預測標籤
Loss函數爲: 最後,將兩階段的目標函數通過超參相加訓練整個模型:
2.3. 具體任務的模型微調
對於文本分類,只需要在預訓練模型上微調。對於QA任務或者文本蘊含,因爲預訓練模型是在連續序列上訓練,需要做一些調整,修改輸入結構,將輸入轉化爲有序序列輸入
-
文本蘊含 :將前提和假設序列拼接,中間用($)符號來分隔兩個序列。
-
文本相似度:分別將兩個序列輸入,通過模型輸出兩個序列的特徵向量,再逐元素相加輸入線性層。
-
問答和常識推理:給定上下文文本,問題,一組可能的候選答案 ,將上下文文本、問題以及每個候選答案拼接起來,得到這樣一個序列 $ ,再將該序列輸入預訓練模型,經softmax層得到候選答案的概率分佈。
3. BERT
Bert(原文)是谷歌的大動作,公司AI團隊新發布的BERT模型,在機器閱讀理解頂級水平測試SQuAD1.1中表現出驚人的成績:全部兩個衡量指標上全面超越人類,並且還在11種不同NLP測試中創出最佳成績,包括將GLUE基準推至80.4%(絕對改進7.6%),MultiNLI準確度達到86.7% (絕對改進率5.6%)等。可以預見的是,BERT將爲NLP帶來里程碑式的改變,也是NLP領域近期最重要的進展。
BERT的全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的Encoder。模型的主要創新點都在pre-train方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的representation。
BERT採用了Transformer Encoder的模型來作爲語言模型,Transformer模型來自於經典論文《Attention is all you need》, 完全拋棄了RNN/CNN等結構,而完全採用Attention機制來進行input-output之間關係的計算,如下圖中左半邊部分所示:
Bert模型結構如下:
BERT模型與OpenAI GPT的區別就在於採用了Transformer Encoder,也就是每個時刻的Attention計算都能夠得到全部時刻的輸入,而OpenAI GPT採用了Transformer Decoder,每個時刻的Attention計算只能依賴於該時刻前的所有時刻的輸入,因爲OpenAI GPT是採用了單向語言模型。