前沿綜述:細數2018年最好的詞嵌入和句嵌入技術
from:http://3g.163.com/dy/article/DJRJDB9S0511D05M.html
在任何一種基於深度學習的自然語言處理系統中,詞嵌入和句子嵌入已成為重要組成部分。它們使用固定長度的稠密向量對詞和句子進行編碼,從而大幅提升通過神經網路處理文字資料的能力。
對通用嵌入的追尋是個大趨勢:在大型語料庫上預先訓練好的嵌入模型,可以應用到多種下游任務模型中(情感分析,分類,翻譯...),通過合併一些在較大的資料集上學習的常用詞/句子表示,預訓練的嵌入可以自然地提高其效能。
這是一種遷移學習。最近,已經證實遷移學習能大幅提升NLP模型在很多重要的任務上的表現,例如文字分類任務。感興趣可以進一步瞭解Jeremy Howard 和 Sebastian Ruder (ULMFiT)在這方面的傑出工作,以及它的實際應用。
研究工作:
http://nlp.fast.ai/classification/2018/05/15/introducting-ulmfit.html
實際應用:
http://ruder.io/word-embeddings-1/
雖然在相當長時間內,句子的無監督表徵學習已經成為規範,但隨著2017年末、2018年初一些非常有趣的方案被提出,近幾個月,已經有向監督和多工學習方案轉變的跡象。
通用詞/句子嵌入的最新趨勢。在這篇文章中,我們描述了圖中用黑體表示的模型。
這篇文章簡要介紹了目前普遍使用的、最先進的詞和句子嵌入技術。詳細介紹了:
強有效且快速的基線:FastText
最先進的模型:ELMo,Skip-Thoughts,Quick-Thoughts,InferSent,微軟蒙特利爾研究院提出的「通用目的句子表徵」和谷歌的「通用句子編碼器」
如果你想對2017年之前發生的事情有一些背景知識,我推薦Sebastian Ruder去年寫過的關於詞嵌入的不錯的帖子和他的簡介帖子。
我們先從詞嵌入開始。
1.詞嵌入的最新發展
在過去的五年裡,已經提出了大量可行的詞嵌入的方法。 最常用的模型是word2vec和GloVe,它們都是基於分佈假設(distributional hypothesis)的無監督方法(出現在相似語境中的詞往往具有相似的含義)。
Word2Vec:https://github.com/dav/word2vec/
GloVe:https://nlp.stanford.edu/projects/glove/
雖然有些研究工作通過結合對語義或句法知識的監督來增強這些無監督的方法,但在2017-2018年,純粹的無監督方法獲得了有趣的進展,最著名的是:FastText(word2vec的擴充套件)和ELMo(最先進的上下文詞向量)。
傳送門:https://arxiv.org/abs/1805.04032
FastText
FastText由Tomas Mikolov團隊提出,word2vec框架也是他們在2013年提出的,FastText促進了對於通用詞嵌入研究的爆炸式增長。
FastText對原始word2vec向量的主要改進是包含基於字元的n-gram模型,它允許計算沒有出現在訓練資料中的單詞表示(“詞外”字)。
FastText向量訓練速度超快,可在157種語言的Wikipedia和Crawl訓練中使用。 他們是一個很好的基準。
ELMo
最近,深層語境化詞表徵(ELMo)在最好的詞嵌入技術基礎上有了顯著地提升。 它們由艾倫人工智慧研究所開發,將於6月初在NAACL 2018展出。
ELMo知道很多關於文字的上下文
在ELMo中,每個單詞被賦予一個表徵,這個表徵是它們所屬的整個語料庫句子的函式。 嵌入是從雙層雙向語言模型(LM)的內部狀態計算出來的,因此名為“ELMo”:Embeddings fromLanguageModels,從語言模型嵌入。
ELMo的特點:
ELMo的輸入是字元而不是單詞。 因此,可以利用子字詞單元來計算有意義的表徵,即使對於詞典外的詞(如FastText)也是如此。
ELMo是由biLMs若干層啟用的連線。 語言模型的不同層對單詞上的不同型別資訊進行編碼(例如,詞語標註由biLSTM的較低層完成預測,而詞義消歧在較高層中更好地編碼)。 把所有層連線起來,可以自由組合各種文字表徵,以提高下游任務的效能表現。
2.通用句嵌入的興起
對於句子嵌入任務,許多解決方案都很有競爭力。 儘管像平均詞嵌入這樣的簡單基線經常得出很好的結果,但一些新穎的無監督和監督方法以及多工學習方法已於2017年末至2018年初被提出來,並且都有一些有趣的改進與提升。
讓我們快速瀏覽目前研究的四種方法(如上文所述):
簡單的詞向量平均基線
無監督方法
監督方法
多工學習方案
該研究領域普遍的觀點是:直接平均句子的詞向量這個簡單方法(所謂的詞袋方法)能為許多下游任務提供強的基線。
Arora等人去年發表在ICLR上的工作詳細介紹了計算這種基線的一個很好的演算法。A Simple but Tough-to-Beat Baseline for Sentence Embeddings:選擇的熱門詞嵌入技術,線上性加權組合中對一個句子進行編碼,並執行一個通用元件移除(移除它們的第一主成分上的向量)。 這種通用的方法具有更深入而強大的理論動機,它依賴於一個生成模型,該模型使用語篇向量上的隨機漫步來生成文字(我們不會在這裡討論理論細節)。
Bag-of-Words
一個強大的詞袋模型基線(甚至比Arora的基線更強)的方案是來自達姆施塔特大學的連線p-mean嵌入,你會在這裡找到(感謝Yaser指出這個工作)。
Hugging Face對話方塊的詞袋。 詞袋模型弱化了詞語的順序關係,但保留了驚人數量的語義和句法內容。 Conneau 等人在ACL2018發表的有趣見解。
Skip-thought vectors
除了簡單的計算平均,第一個主要提議是使用無監督訓練目標,這首先是Jamie Kiros和同事在2015年提出的Skip-thought vectors.
無監督方案將句子嵌入學習作為學習的副產品,以預測句子與句子間的內連貫或句子內從句與從句間的內連貫。這些方法可以(理論上)使用任何文字資料集,只要它包含以一致的方式並列的句子/子句。
Skip-thought vectors是學習無監督句嵌入的典型例子。它可以作為為詞嵌入而開發的skip-gram模型的句子等同物:不是預測單詞周圍的詞,我們嘗試預測給定句子周圍的句子。該模型由基於RNN的編碼器 - 解碼器組成,該解碼器被訓練用於重建來自當前句子周圍的句子。
Skip-thought論文中有一個有趣的見解是詞彙表擴充套件計劃:Kiros 等人通過學習RNN詞嵌入空間與諸如word2vec之類的較大詞嵌入之間的線性變換來處理在訓練期間看不到的詞。
Quick-thoughts vectors
Quick-thoughts vectors是今年在ICLR上釋出的Skip-thought vectors的最新改進版。在這項工作中,給定前面一句話來預測下一句話的任務被重新定義為一個分類任務:解碼器被一個分類器所取代,該分類器必須在一組候選者中選擇下一句。它可以被解釋為對生成問題的區分性近似。
該模型的一個優勢是其訓練速度(與跳躍思維模型相比快一個數量級),使其成為開發大量資料集的有競爭力的解決方案。
Quick-thoughts 分類任務。 分類器必須從一組句子嵌入中選擇以下句子。 來源:Logeswaran等人所著的「An efficient framework for learning sentence representations」
InferSent
長期以來,監督式句嵌入學習被認為能夠提供比無監督方法更低質量的嵌入,但是這種假設最近已經被推翻,部分歸功於InferSent結果的公佈。
與之前詳述的無監督方法不同,監督學習需要標註資料集來標註某些任務,如自然語言推理(例如成對句子)或機器翻譯(帶有成對翻譯句子),它們也引出了具體任務的選擇問題,以及高質量嵌入所需的資料集大小的相關問題。 我們在下一節和最後一節中討論關於這些問題的更多資訊,但在此之前,讓我們先看看2017年釋出的InferSent的背後原理。
因其簡單的體系結構,使得InferSent成為一個非常有趣的方法。 它使用Sentence Natural Language Inference(NLI)資料集(包含570k對標有3種類別的句子:中性,矛盾和包含)來在句子編碼器之上訓練分類器。 兩個句子都使用相同的編碼器進行編碼,而分類器則是根據兩個句嵌入構建的對錶徵進行訓練。 Conneau 等人採用了一個通過最大池化操作實現的雙向 LSTM 作為編碼器。
有監督句子嵌入模型(InferSent)從一個NLI資料集中學習。 此圖來自 A.Conneau 等人所著的「Supervised Learning of Universal Sentence Representations from Natural Language Inference Data」
InferSent 的成功不僅導致了對選擇最佳的神經網路模型的探索,它還引發了對以下問題的研究:
哪種有監督訓練任務可以學習句嵌入,以便能更好地泛化到下游任務?
多工學習可以看作是Skip-Thoughts、InferSent和相關的無監督/監督學習方案的泛化,它通過試圖在一個訓練方案中結合幾個訓練目標來回答這個問題。
2018年初,幾個關於多工學習的方案發布。讓我們快速瀏覽一下MI特利 爾微軟研究院提出的「通用目的句子表徵」和谷歌的「通用句子編碼器」。
通用目的句子表徵模型
在ICLR 2018發表的描述微軟蒙特利爾研究院的工作(通過大規模多工學習,學習通用分散式句子表示)的論文中,Subramanian等觀察到,為了能夠泛化句子表徵到各種不同的任務,編碼同一句子的多個層面是必要的。
因此,作者利用一對多的多工學習框架,通過在多個任務之間切換來學習通用句子嵌入。 選擇的6個任務【下一個/前一個句子的Skip-thoughts預測,神經機器翻譯,組別解析(constituency parsing)和自然語言推理】共享由雙向GRU獲得的相同句嵌入。 實驗表明,通過新增多語言神經機器翻譯任務,可以更好地學習語法屬性;通過解析任務,可以學習長度和詞序;通過訓練自然語言推斷,可以編碼語法資訊。
Google通用句子編碼器
Google於2018年初發布的通用句子編碼器採用相同的方法。 他們的編碼器使用了一個遷移網路,該網路在各種資料來源和各種任務上進行訓練,目的是動態地適應各種自然語言理解任務。 TensorFlow提供了預先訓練好的版本。
通用句子編碼器: https://arxiv.org/abs/1803.11175
後記
以上就是我們關於通用詞嵌入和句嵌入現狀的簡短綜述。
在過去的幾個月中,該領域已經有了很多有趣的發展,我們在評估和探索這些嵌入的表現以及它們內在的偏見/公正性(這是談論通用嵌入時的一個實際的問題)方面也有了巨大進步。
我們沒有時間討論一些最新的主題,但您可以在參考資料中找到一些連結。
希望你喜歡這個簡短的綜述!
參考資料:
1.Hironsan 的 github 倉庫:
https://github.com/Hironsan/awesome-embedding-models
2.FastText:https://fasttext.cc/
3.ELMo:http://allennlp.org/elmo
4.Skip-Thoughts 論文:https://arxiv.org/abs/1506.06726
5.Quick-Thoughts 論文:
https://openreview.net/forum?id=rJvJXZb0W
6.DiscSent 論文:
https://arxiv.org/abs/1705.00557
7.InferSent 論文:
https://arxiv.org/abs/1705.02364
8.MILA/MSR’s General Purpose Sentence Representations 論文:https://arxiv.org/abs/1804.00079
9.Google’s Universal Sentence Encoder 論文:
https://arxiv.org/abs/1803.11175
10.Google Input-Ouput Sentence learning on dialog論文:http://arxiv.org/abs/1804.07754
11.Facebook 的 SentEval 句子嵌入專案倉庫:
https://github.com/facebookresearch/SentEval/tree/master/data/probing
12.SentEval 探索任務:
https://github.com/facebookresearch/SentEval
13.NYU、UW 和 DeepMind 的 GLUE(通用語言理解評估標準):https://gluebenchmark.com/
翻譯:王貝貝
審校:高飛
編輯:王怡藺
原文
https://medium.com/huggingface/universal-word-sentence-embeddings-ce48ddc8fc3a
論文解讀:複雜網路的多尺度動態嵌入技術
最新資料集:閱讀理解、對話與自動摘要等NLP任務集錦
NLP初學教程:word2vec實踐
講座筆記分享:深度學習在自然語言處理中的應用
自然語言理解在金融領域的應用 | 尹相志
加入集智,一起復雜!集智俱樂部團隊招新啦!
集智QQ群|292641157
商務合作|[email protected]
投稿轉載|[email protected]