Contextual Word Embeddings
最想學習哪些內容,彙總如下:
- 變壓器 (Transformers)
- BERT
- 問題解答 (QA)
- 文本生成和摘要
預訓練的詞向量:早年的Collobert,Weston等人,2011成績
預訓練的詞向量:當前(2014 -)
- 我們可以從隨機詞向量開始,然後在我們感興趣的方面進行訓練。
- 但在很多時候,使用預訓練的詞向量會有所幫助,因爲我們可以在更多數據上進行訓練以獲得更多詞
- Chen和Manning(2014)依賴性解析
- 隨機:均勻(-0.01,0.01)•- - 預訓練:
- PTB(C&W):+ 0.7%
- CTB(word2vec):+ 1.7%
用詞向量識別生詞
-
最簡單和常見的解決方案:
-
訓練時間: Vocab is {words occurring, say, ≥ 5 times} ∪ {<UNK>}
-
映射所有稀少(<5)的字到<UNK>,訓練爲一個字向量
-
運行時間:當out-of-vocabulary(OOV)字出現時,使用<UNK>
-
問題:
- 不論身份或含義如何,都無法區分不同的UNK詞
-
解決方案:
- 我們剛剛學習了用於構建向量的char級模型!
- 特別是在諸如問答之類的應用中
- 單詞標識匹配的重要位置(甚至單詞矢量詞彙之外的單詞)
- 特別是在諸如問答之類的應用中
2.嘗試這些技巧(來自Dhingra,Liu,Salakhutdinov和Cohen,2017年)
- a. 在測試時間內,如果<UNK>字出現在無監督的嵌入字裏,就在測試時間內使用該向量。
- b. 另外換句話說,只需給他們分配一個隨機向量,將它們添加到您的詞彙表中。
- a. 絕對有很大幫助; b. 可能會有所幫助
- 您可以嘗試的另一件事:
- 將東西組裝成單詞類(例如,未知數,大寫的東西等),並且每個裏都有一個<UNK-class>
1. 怎樣描述一個詞?
-
到目前爲止,基本上我們已經說過我們有一種描述詞的方法:
- 在一開始就學過的詞向量
- Word2vec,GloVe,fastText
- 在一開始就學過的詞向量
-
這些有兩個問題:
- 對於單詞類型,始終使用相同的表示形式,而不考慮單詞標記出現的上下文
- 我們可能希望細粒度的詞義消除歧義
- 我們只用一個詞來表示,但是詞有不同的方面,包括語義,句法行爲和註冊/內涵
- 對於單詞類型,始終使用相同的表示形式,而不考慮單詞標記出現的上下文
我們一直都有解決這個問題的辦法嗎?
- 在一個NLM中,我們立即通過LSTM層插入單詞向量(也許僅在語料庫上訓練)
- 這些LSTM層經過訓練可以預測下一個單詞
- 但是這些語言模型在每個位置都產生了上下文特定的單詞表示形式!
2. Peters等(2017年):TagLM –“Pre-ELMo”
https://arxiv.org/pdf/1705.00108.pdf
- 想法:希望在上下文中使用單詞的含義,但通常僅在帶有小任務標籤的數據(例如NER)上學習任務RNN )
- 爲什麼不做半監督方法,在大型的未標記語料庫上訓練NLM(不僅僅是單詞向量)?
Tag LM
命名實體識別(NER)
NLP的一個非常重要的子任務:例如,在文本中查找和分類名稱:
- 獨立議員安德魯·威爾基(Andrew Wilkie)決定撤回對少數黨工黨政府的支持,這聽起來很引人注目,但不應進一步威脅其穩定性。 2010年大選後,威爾基,羅伯·奧克肖特,託尼·溫莎和綠黨同意支持工黨時,他們只提供了兩項保證:信心和供給。
彼得斯等(2017):TagLM –“Pre-ELMo”
語言模型在“十億個單詞基準”的八億個訓練單詞上進行訓練
語言模型觀察
- 接受過監督數據培訓的LM並沒有幫助
- 雙向LM僅能向前推進約0.2
- 巨大的LM設計(ppl 30)可以將較小的模型(ppl 48)減少0.3
特定於任務的BiLSTM觀察 - 僅使用LM嵌入來預測效果不好:88.17 F1
- 遠低於僅對標籤數據使用BiLSTM標記器
同樣在空中:McCann等(2017年)
https://arxiv.org/pdf/1708.00107.pdf
- 還具有使用訓練好的序列模型爲其他NLP模型提供上下文的想法
- 想法:機器翻譯旨在保留含義,也許這是一個好目標?
- 使用作爲seq2seq +注意NMT系統的編碼器的2層bi-LSTM作爲上下文提供者
- 在各種任務上,生成的CoVe向量的性能均優於GloVe向量
- 但是,結果並沒有其他幻燈片中介紹的更簡單的NLM培訓那樣強大,因此似乎被放棄了
- 也許NMT比語言建模更難?
- 也許有一天這個想法會回來嗎?
彼得斯等(2018):ELMo:語言的嵌入模型
深度上下文化的單詞表示形式。 NAACL 2018.https://arxiv.org/abs/1802.05365
- 單詞標記向量或上下文單詞向量的突破版本
- 使用長上下文而不是上下文窗口來學習單詞標記向量(此處,整個句子可能更長)
- 學習深入的Bi-NLM並將其所有層用於預測
彼得斯等(2018):ELMo:語言模型的嵌入模型
- 訓練雙向LM
- 針對績效較高的LM,但不要過大:
- 使用2個biLSTM層
- 使用字符CNN構建初始單詞表示(僅)
- 2048剋剋過濾器和2個高速公路層,512d投影
- 用戶4096個暗淡隱藏/單元格LSTM狀態和512個暗淡
下一個輸入的投影 - 使用剩餘連接
- 綁定令牌輸入和輸出(softmax)的參數,並將其綁定在前向和後向LM之間
彼得斯等(2018):ELMo:語言的嵌入模型
- ELMo學習特定任務的biLM表示形式的組合
- 這是一項創新,僅在使用LSTM堆棧的頂層時有所改進
-
可將ELMo的總體實用性擴展到任務;
-
是softmax-normalized混合模型權重
彼得斯等(2018):ELMo:與任務配合使用
- 首先運行biLM以獲取每個單詞的表示形式
- 然後讓(任何)最終任務模型使用它們
- 凍結ELMo的重量以用於監督模型
- 將ELMo權重連接到特定於任務的模型中•詳細信息取決於任務
- 連接到中間層,以實現標記LM典型
- 可以在產生輸出時再次提供EL更多表示,例如在問題回答系統中
序列標記器中使用的ELMo
CoNLL 2003命名實體識別(en news testb)
ELMo結果:適用於所有任務
ELMo:圖層權重
- 兩個biLSTM NLM層具有不同的用途/含義•較低的層更適合較低層的語法等。
- 詞性標記,句法依賴性,NER•較高的層更適合較高級別的語義
- 情感,語義標籤,問題回答,SNLI
- 這看起來很有趣,但是看起來似乎更有趣
它如何通過兩層以上的網絡來實現
周圍還有:ULMfit
Howard and Ruder(2018)通用語言模型微調,用於文本分類。 https://arxiv.org/pdf/1801.06146.pdf
- 轉讓NLM知識的一般思路
- 適用於文本分類
ULMfit
在大型通用領域語料庫上訓練LM(使用biLM)在目標任務數據上調整LM
微調爲目標任務的分類器
ULMfit重點
使用大小適中的“ 1 GPU”語言模型不是真正龐大的模型在LM微調中要多加註意
每層學習率不同
傾斜的三角形學習率(STLR)進度表學習分類器時,使用層級[h#,maxpool +,meanpool +]進行分類時逐步分層和STLR
ULMfit性能
- 文本分類器錯誤率
ULMfit轉移學習
讓我們擴大規模!
GPT-2語言模型(精選)輸出
系統提示(人爲寫)
模型完成(機器編寫,10條)
在一個令人震驚的發現中,科學家發現了一羣獨角獸,它們生活在安第斯山脈一個偏遠的,以前未被開發的山谷中。令研究人員更加驚訝的是,獨角獸會說完美的英語。
這位科學家以其獨特的號角Ovid的獨角獸命名了這個種羣。這些四角銀白色獨角獸以前是科學界所不知道的。
現在,在將近兩個世紀之後,終於解決了引發這種奇怪現象的謎團。
拉巴斯大學(University of La Paz)的進化生物學家豪爾赫·佩雷斯(JorgePérez)博士和幾位同伴在安第斯山脈發現一個沒有其他動物或人類的小山谷時正在探索。佩雷斯注意到該山谷似乎是一個天然噴泉,周圍環繞着兩個岩石和銀色雪峯。
佩雷斯和其他人然後進一步冒險進入山谷。 ...
變壓器模型
所有這些模型都是Transformer體系結構模型...所以也許我們最好了解一下Transformers?
4. 變壓器的動力
- 我們想要並行化,但RNN本質上是順序的
- 儘管有GRU和LSTM,但RNN仍需要注意機制來處理遠距離依賴關係–狀態之間的路徑長度會隨着序列的增長而增加
- 但是,如果注意力使我們能夠進入任何狀態……也許我們可以只使用注意力而無需RNN?
變壓器概述
注意就是您所需要的。 2017.阿斯瓦尼(Aswani),Shazeer,Parmar,Uszkoreit,Jones,Gomez,Kaiser,Polosukhin https://arxiv.org/pdf/1706.03762.pdf
- 非循環序列到序列編碼器-解碼器模型
- 任務:具有平行語料庫的機器翻譯
- 預測每個翻譯的單詞
- 最終成本/誤差函數是softmax分類器之上的標準交叉熵誤差
變壓器基礎
- 自己瞭解變壓器?
- 重要推薦資源:
http://nlp.seas.harvard.edu/2018/04/03/attention.html•TheAnnotatedTransformerbySashaRush - 使用PyTorch的Jupyter筆記本可以解釋所有內容!
- 現在:讓我們定義基本的構建基塊
變壓器網絡:首先,新的關注層!
- 現在:讓我們定義基本的構建基塊
點積注意(擴展我們以前的DEF)
-輸入:查詢q和到輸出的一組鍵值(k-v)對
- 查詢,鍵值對和輸出都是向量
- 輸出是值的加權總和,其中
- 每個值的權重由查詢的內積計算和相應的密鑰
- 查詢和鍵具有相同的維數dk值具有dv
點產品注意–矩陣符號
- 當我們有多個查詢q時,我們將它們堆疊在矩陣Q中:
- 成爲:
逐行softmax
點積乘積注意
- 問題:隨着dk變大,qTk的方差增加-softmax內的一些值變大- softmax變得非常尖峯,因此其梯度變小。
- 解決方案:按查詢/鍵向量的長度縮放:
編碼器中的自我注意
- 輸入的單詞向量是查詢,鍵和值
- 換句話說:單詞向量本身彼此選擇
- Wordvectorstack = Q = K = V
- 我們將在解碼器中看到爲什麼我們在定義中將它們分開
多頭注意力
- 簡單的自我關注的問題:
- 單詞彼此交互的唯一方式
- 解決方案:多頭注意力
- 將第一個Q,K,V映射到h = 8時要低很多
W矩陣維空間 - 然後注意,然後連接輸出並通過 全聯接層進行傳遞
完整的變壓器塊
每個塊都有兩個“子層”
- 多頭注意力
- 2層前饋NNet(帶有ReLU)
這兩個步驟還具有:
殘餘(短路)連接和LayerNorm
LayerNorm(x +子層(x))
Layernorm將輸入更改爲均值0和方差1,
每層和每個訓練點(並增加了兩個參數)
由Ba,Kiros和Hinton,進行的圖層歸一化,https://arxiv.org/pdf/1607.06450.pdf
編碼器輸入
- 實際的單詞表示形式是字節對編碼
- 與上一講一樣
- 還添加了位置編碼,因此在不同位置的相同單詞具有不同的整體表示形式
完整的編碼器
- 對於編碼器,在每個塊中,我們使用相同的Q,K和V
來自上一層 - 塊重複6次
- (在垂直堆棧中)
第5層中的注意力可視化
- 單詞開始以明智的方式關注其他單詞
關注可視化:隱式回指解析
在第5層。 注意頭5和6的注意力僅與“它”一詞分開。請注意,此單詞的注意非常尖銳。
變壓器解碼器
- 解碼器中有2個子層更改
- 對先前生成的輸出進行屏蔽的解碼器自我關注:
- Encoder-Decoder Attention,其中查詢來自先前的解碼器層,而鍵和值來自編碼器的輸出
塊也重複了6次
提示和變壓器的技巧
詳細信息(書面和/或以後的講座):
- 字節對編碼
- 檢查點平均
- ADAM優化與學習率的變化
- 在添加殘差之前,在每一層的訓練過程中都會出現輟學現象
- 標籤平滑
- 具有波束搜索和長度的自動迴歸解碼
處罰 - 變壓器的使用正在普及,但是它們很難進行優化,與LSTM不同,它們通常不是開箱即用的
而且它們在其他任務構建塊上還不能很好地發揮作用。
MT的實驗結果
解析實驗結果
5. BERT:Devlin,Chang,Lee,Toutanova(2018年)
BERT(來自變壓器的雙向編碼器表示):
深度雙向變壓器的預訓練以提高語言理解能力
基於Jacob Devlin的幻燈片
- 問題:語言模型僅使用左上下文或右上下文,但是語言理解是雙向的。
- LM爲什麼是單向的?
- 原因1:需要方向性才能生成格式正確的
概率分佈。- 我們不關心這個。
- 原因2:單詞可以在雙向編碼器中“看到自己”。
- 解決方案:屏蔽掉k%的輸入單詞,然後預測被屏蔽的單詞
- 他們總是使用k = 15%
該男子去了[MASK]買的牛奶[MASK]
- 掩膜太少:訓練太昂貴
- 掩蓋過多:上下文不足
BERT複雜化:下一句預測
- 要了解句子之間的關係,請預測句子B是執行句子A的實際句子還是隨機句子
BERT句子對編碼
令牌嵌入是單詞片段
學習的分段式嵌入表示每個句子位置式嵌入與其他Transformer架構相同
BERT模型結構和訓練
- 變壓器編碼器(以前一樣)
- 自我關注⇒沒有地方偏見
- 長距離範圍內有“機會均等”
- 每層單乘法⇒GPU / TPU的效率
- 在Wikipedia + BookCorpus上進行訓練
- 訓練2種模型尺寸:
- BERT-Base:12層,768隱藏層、12頭層
- BERT-Large:24層,1024隱藏層,16頭層
- 在4x4或8x8 TPU切片上訓練了4天
BERT模型微調
- 微調每個任務,只需學習建立在頂層的分類
BERT在GLUE任務上的結果
- GLUE基準測試由自然語言推理任務主導,但也具有句子相似度和情感度
- MultiNLI
- 前提:耆那教教徒特別崇尚丘陵和山脈。
假設:耆那教討厭自然。
標籤:矛盾 - CoLa
- 句子:馬車在路上轟隆作響。 標籤:可接受
- 句子:汽車在路上鳴喇叭。 標籤:不可接受
CoNLL 2003命名實體識別(en news testb)
BERT在SQuAD 1.1上的結果
SQuAD 2.0排行榜,2019-02-07
預培訓任務的效果
大小事項
- 從110M到340M參數有很大幫助
- 尚未出現改進
Reference: https://www.jianshu.com/p/1bb863c4f26f