想研究 NLP,不了解詞嵌入與句嵌入怎麼行?

雷鋒網按:本文為雷鋒字幕組編譯的研究博客,原標題 The Current Best of Universal Word Embeddings and Sentence Embeddings ,作者 Thomas Wolf。

翻譯 | 付騰、汪星宇     整理 | 凡江

插播一則小廣告:NLP領域的C位課程,斯坦福CS224n正在AI慕課學院持續更新中,無限次免費觀看!


詞與句的嵌入模型已經是目前任何以深度學習為基礎的 NLP 系統的核心部件了。

它們將詞和句編碼成為固定長度的密度向量,以此來大幅提升文本數據的處理性能。

目前一個大趨勢就是:如何構建通用嵌入系統。通用嵌入系統是已經在大量的文獻基礎上進行了訓練的系統,這種訓練好的系統能夠被用於大量的下游任務模型當中(情感分析,分類,翻譯,等等),以此來自動提升這些任務模型的性能,因為通用嵌入系統已經在大型的數據集上學習到了一些基本的詞/句的表徵特點,來和任務模型進行配合。

這就是一種形式的遷移學習。

目前對句子的非監督的表徵學習已經是一種常態,並且持續了很長一段時間,但是在過去的幾個月里,尤其是在 2017 年末至 2018 年初,出現了很多有趣的可遷移的監督學習和多任務學習方案。

目前通用詞/句嵌入模型的趨勢。在這片文章中,我們會介紹上圖中以黑色字體標識的模型。相關的具體文獻會在本文結尾列出。

這篇文章只是對目前最新的通用詞/句嵌入系統的大概介紹,此外,深入介紹了一些模型的細節,包括:

  • 性能好/速度快的基線模型: 比如 FastText,詞袋(BoW)

  • 目前最新的模型:ELMo, Skip-Thoughts, Quick-Thoughts, InferSent, MILA/MSR』s General Purpose Sentence Representations & Google』s Universal Sentence Encoder

讓我們從詞嵌入模型開始吧。

當下詞嵌入模型的發展

在過去五年的時間裡,很多可能的詞嵌入方法被提出。其中最常用的包括 Word2vec 和 GloVe,它們採用的都是非監督的方法,也都是基於詞義分佈理論 distributional hypothesis 來構建的(即某些詞如果出現於相同上下文中則它們可能具有相同或類似的意義)。

雖然同時期也有一些研究提出了結合傳統詞義和句法知識且基於非監督的方法,但是在 2017 到 2018 年間,純粹的非監督方法依然有可喜的進展,其中最受矚目的就是 FastText(word2vec 模型的擴展)和 ELMo(最新的基於上下文的詞向量模型)。

FastText 是 Tomas Mikolov 團隊的傑出作品,這引爆了對於通用詞嵌入模型的研究熱情。(Tomas Mikolov 同時也是在 2013 年提出 word2vec 架構的始作俑者。)

FastText 相對於原版的 word2vec 向量主要提升包括基於字符的 ngrams 的模型。這種模型可以讓詞嵌入模型計算出訓練數據當中沒有出現的詞的表徵向量(即詞典之外的詞)。

FastText 向量 的訓練速度堪稱急速,並且提供基於 Wiki 百科和 Crawl 數據集的預訓練模型,支持多達 157 種語言。這些都是很重要的基準模型。

深度上下文詞表徵 模型(ELMo)最近在詞嵌入方面的性能提升同樣引人側目。ELMo 是由 Allen AI 研究院提出並且開源,並且被 NAACL 2018 收錄,將會在 2018 年六月上旬大會期間進行展示。

ELMo 對於詞一級的上下文知道不少。

在 ELMo 模型當中,每個詞都被賦予一個表徵,這個表徵是一個函數,代表它們所屬整個語料庫的語句的一個函數。從兩層雙向語言模型(LM)的內部狀態計算嵌入,因此從語言模型命名為「ELMo」:Embeddings from Language Models。

ELMo 的具體特點:

  • ELMo 的輸入是字符而不是詞。這讓 ELMo 可以獲得 分詞單元 一級的優勢,從而讓模型能夠為 詞典外單詞 計算出有意義的表徵(與 FastText 類似)。

  • ELMo 是好幾層激活的 biLM 的 並列組合。不同層的語言模型編碼了相同單詞的不同信息(比如,POS 標識能夠被底層 biLSTM 很好的預測,同時高層的 biLM 模型能很好的完成詞義的消歧)。將所有層並列組合能夠將大量的信息結合然後賦予詞表徵向量,以此提高下游任務模型的性能。

接下來,讓我們看看通用句嵌入模型吧。

通用句嵌入模型的興起

目前在句嵌入模型領域 有很多相互競爭的方案。簡單的基線模型比如 基於詞嵌入的平均方法就不斷的有更好的結果出現,一些新奇的非監督和監督方法和一些多任務學習方案,在 2017 年末和 2018 年初出現,並且引領了有趣的性能提升。

讓我們趕快看看目前較新的四類方法: 從簡單的詞向量平均基線模型到一些新奇的非監督和監督方法,和一些多任務學習方案(如前文所述)。

先說說在這個領域的共識,那就是最簡單的方法: 直接對一個句子中的詞嵌入向量求平均值(簡稱 BoW 方法),已經能夠提供足夠好的基線性能,並且適合大部分下游任務。

計算此類基線方法中有一個比較好的算法,具體細節可以參考 Arora et al. 發表在 ICLR 2017 年的文章。標題是:A Simple but Tough-to-Beat Baseline for Sentence Embeddings。具體的實施方法就是使用任意一種詞嵌入,然後對句子當中的詞向量 進行線型加權的整合。然後對所得向量進行正常的成分移除(即 移除 向量在其第一主成分的低緯度方向上的 投影)。這個簡單的方法背後的理論動機深厚且強大。這個理論是基於生成模型的原理,就是利用話語向量的隨機遊動來生成文本(此處我們就不討論理論細節了)。

這是一個 Hugging Face(一個社交對話 AI)對話的熱詞圖詞袋。詞袋(BoW)的 排序比較鬆散,但是卻很神奇的保存了大量的語義和句法 的內容信息。這是一個有趣的結論,也是 Conneau 等人的成果,文章發於 ACL 2018。

超越簡單的求平均,第一個重要的提案就是利用非監督來達到訓練目標。這也是 Jamie Kiros 及其同事在 2015 年 提出的 Skip-thoughts vectors 方法。

基於非監督學習的句嵌入方案其實是一個副產品。而這個副產品的本來目標其實是希望模型能夠學會預測 一個連貫一致的句子,或者至少是一個連貫的句子摘要。這些方法(理論上)能夠利用任何文本數據,只要文本數據中存在句子或者摘要,並且是連貫且並列的方式組織起來的。

Skip-thoughts vectors 模型就是一個典型的基於非監督學習的句嵌入模型。它可以與另一種模型等價,那就是基於skip-gram 模型的句嵌入模型。這種模型的原型其實是基於 skip-gram 詞嵌入。它的的特點就是:與其預測某個具體單詞 的上下文可能出現的單詞,不如預測某個給定的句子的上下文可能出現的句子。這個模型包含一個 基於 RNN 的編碼-解碼器,而這個編碼-解碼器就是被訓練用來重構上下文句子的,前提是一個具體的句子已經給定。

Skip-Thought 這篇文章有一個很有趣的結論,那就是詞彙擴展方案。Kiros 小組處理未出現生詞的方法,尤其是在模型訓練階段,就是 從 RNN 詞嵌入空間和另外一個大型的詞嵌入模型(比如 word2vec)之間的線性轉換當中學習到生詞的向量。


......

想要繼續閱讀,請移步至我們的AI研習社社區:https://club.leiphone.com/page/TextTranslation/708

更多精彩內容盡在 AI 研習社。

不同領域包括計算機視覺,語音語義,區塊鏈,自動駕駛,數據挖掘,智能控制,編程語言等每日更新。

手機端可以掃描二維碼訪問

雷鋒網雷鋒網





想在手機閱讀更多周邊設備資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems