從詞嵌入到含義嵌入:概覽含義向量表示方法

從詞嵌入到含義嵌入:概覽含義向量表示方法

來自專欄論智

來源:arXiv

編譯:weakish

詞嵌入方法在眾多自然語言處理任務中得到了廣泛的應用。然而,詞嵌入方法將多義詞合併為單一表示,因此並不精確。為了更好地區分同一單詞的不同含義,人們轉而提出了含義嵌入(sense embeddings)。卡迪夫大學的Jose Camacho-Collados和劍橋大學的Mohammad Taher Pilehvar最近發表了論文(arXiv:1805.04032v2),概覽了含義向量表示的主要方法。

意義合併缺陷

詞嵌入方法的主要缺陷是無法很好地處理多義詞。由於在詞嵌入方法中,每個單詞表示為語義空間中的一個向量,因此它將多義詞的不同義項合併為單一表示,這就導致了意義合併缺陷(meaning conflation deficiency)

  1. 詞嵌入無法有效捕捉同一單詞的不同義項,即使這些義項都在訓練語料中出現過。
  2. 語義上無關的單詞,被多義詞拉扯到一起(見下圖)。
  3. 合併缺陷違反了歐幾里得空間的三角不等性,削弱了單詞空間模型的有效性。

語義上無關的rabbit(兔)和computer(計算機)因mouse(老鼠/滑鼠)牽扯到一起

因此,人們開始尋找直接建模詞義的方法。最早的建模方法,依賴於人工編製的意義清單(例如WordNet)。近年來,通過分析文本語料推導詞義差別的無監督表示模型漸漸流行。下面我們將分別介紹這兩種範式。

基於知識的語義表示

這一範式利用外部資源中的知識建模語義。首先,我們將概覽主要的外部資源。接著,我們將簡要介紹一些使用外部資源改進詞向量的方法。最後我們重點介紹構建基於知識的含義表示的方法。

知識資源

  • WordNet是NLP和語義表示學習中使用最為廣泛的資源之一。WordNet可以看成一個語義網路。其中的節點為synset(同義詞集),例如,表示「脊柱」這一概念的synset包括spinal column、vertebral column、spine、backbone、back、rachis六個辭彙。synset之間的聯繫(例如上位關係和部分整體關係)則為節點的邊。Open Multilingual Wordnet等項目則致力於將WordNet擴展到其他語言。
  • Wikipedia(維基百科)是最著名的協同構建資源。它是世界上最大的多語言百科,支持超過250種語言。而且,它還在持續更新之中,例如,英語維基百科每天新增將近750篇新文章。另外,Wikimedia基金會還運營Wikidata項目,一個面向文檔的語義資料庫,為維基百科和其他wikimedia項目提供共享數據。類似的項目有DBpedia,致力於結構化維基百科的內容。
  • BabelNet將WordNet連接到包括維基百科在內的協作構建的資源。BabelNet的結構和WordNet類似,只不過synset包含多個語種。synset間的聯繫來自WordNet及其他資源(例如維基百科的超鏈接和Wikidata)。
  • ConceptNet結合了WordNet、Wiktionary、DBpedia等資源的語義信息。和WordNet、BabelNet不同,ConceptNet的主要語義單元是辭彙而不是synset。
  • PPDB(Paraphrase Database)基於圖結構,以片語為節點,以片語間的相互關係為邊。

知識增強詞向量方法

知識增強詞表示(knowledge-enhanced word representation)利用知識資源改進現有的詞向量表示,加上文本語料中未包含的信息。

知識增強詞表示,主要有兩種思路,一為修改模型的目標函數,以便在學習過程中納入知識資源的信息,一為在後處理階段改進預訓練的詞嵌入。

後者通常稱為retrofitting(改裝)。其直覺為,在詞向量空間中,移動知識資源中聯繫密切的單詞對應的向量表示,使其更為接近。retrofitting模型的主要目標函數為最小化下式:

上式中,|V|表示辭彙量,N是給定的語義網路(知識資源),語義網路的形式為單詞對的集合,wi和wj為預訓練模型的詞嵌入,戴帽wi為輸出詞嵌入,αi、βi,j為可調整的控制係數。

基於知識的含義表示

基於知識的含義表示(knowledge-based sense representations)的基本思路是利用知識資源的信息拆分(de-conflating)詞表示為含義表示。

知識資源的信息主要有兩種表示形式,文本定義和語義網路。

在很多方法中,文本定義作為初始化含義表示的主要信號使用。例如,根據文本定義,對含義相近的預訓練詞嵌入取均值,作為初始化含義嵌入(Chen等,2014,A Unified Model for Word Sense Representation and Disambiguation)。再如,基於文本定義,利用卷積神經網路架構初始化含義嵌入(aclweb/P15-2003)。

和之前知識增強詞向量方法類似,基於語義網路,通過修改目標函數或後處理詞嵌入,可以從詞嵌入拆分出含義嵌入。

digit既可以指手指(digit#hand),也可以指數字(digit#number)

前者的例子有Mancini等在2016年底的工作(arXiv:1612.02703),修改了Word2Vec的目標函數,在同一向量空間中同時學習詞嵌入和含義嵌入。

後者的例子包括:

  • Jauhar等在2015年對retrofitting方法的擴展(Ontologically Grounded Multi-sense Representation Learning for Semantic Vector Space Models)
  • Johansson和Pina在2015年提出,後處理預訓練詞嵌入可以看起一個優化問題:多義詞嵌入可以分解為其含義嵌入的組合,同時含義嵌入應該靠近其語義網路中的鄰居。(aclweb/N15-1164)他們使用了SALDO語義網路(一個瑞典語語義網路),不過他們的方法可以直接擴展到其他語義網路。
  • Rothe和Schütze在2015年提出的AutoExtend,一個自動編碼器架構,該架構主要基於以下兩個限制:詞向量對應於其含義向量之和,synset向量對應於其辭彙/含義之和。例如,詞向量digit對應於digit(手指)和digit(數字)兩個含義向量之和,synset向量「預訂」對應於含義向量reserve、hold、book之和。即:

其中,s表示含義,w表示詞,y表示synset。

無監督含義表示

基於知識的含義表示依賴人工編製的意義清單,因此在某些場景下受到限制,例如,語料缺乏相應的外部知識資源。近年來,隨著算力的提升和機器學習技術的發展,無監督含義表示漸漸流行。

無監督含義表示方法的核心是詞義推導,也就是基於文本語料自動識別單詞的可能含義。其背後的直覺為,既然我們可以通過上下文學習單詞的表示,那麼我們同樣可以通過上下文學習單詞的不同含義。

這一方向早期的工作是雙階段模型(two-stage model),即首先推導出含義,然後學習其表示。

雙階段模型

這方面的先鋒之一是Schütze在1998提出的上下文分組識別(context-group discrimination)。其基本的思路是,聚類多義詞出現的上下文,然後基於上下文相似性自動推斷其含義。(aclweb/J98-1004)

後續這個方向的研究大多沿襲Schütze這一工作的思路,只不過改變了上下文表示形式和聚類演算法(Schütze使用了最大期望演算法)。

2010年,Reisinger和Moone直接聚類上下文,也就是將上下文表示為一元語法的特徵向量,而不是詞向量,大大降低了計算負擔,使這一基於聚類的方法能夠用於較大的語料。另外,他們還使用了movMF聚類演算法,這是一種和k-均值類似的演算法,不過它允許使用聚類特定的聚集參數控制語義的廣度,以更好地建模聚類尺寸的偏斜分布。(dl.acm/1858012)

類似地,Huang等在2012年改進了基於聚類的含義表示技術,通過idf加權平均詞向量得到上下文向量,並使用球形k均值聚類。然後根據聚類標註單詞的用例,並基於此學習含義表示。(aclweb/P12-1092)

雙階段模型的問題在於,聚類和含義表示學習均基於上下文,這兩者有潛在的相似性,分兩個階段單獨進行浪費了這一潛在的相似性,也浪費了算力。因此,最近的研究大部分轉向了聯合訓練(joint training),即同時進行推斷和表示學習。

聯合模型

Neelakantan等在2014年提出了MSSG(Multiple-Sense Skip-Gram)模型,擴展了Skip-gram嵌入模型。和前面提到的工作類似,MSSG也通過聚類形成單詞的含義表示。不過,聚類和含義表示學習是同時進行的。在訓練階段,每個單詞的預期含義是動態選擇的,選擇和上下文最接近的含義。與此同時,Tian等在2014年提出了一個基於Skip-gram的含義表示技術,將Skip-gram模型中的詞嵌入替換為有限混合模型,其中每個模型對應單詞的一個原型(prototype)。(aclweb/C14-1016)

Yang Liu等主張上面的技術在推斷含義表示時僅僅使用了單詞的局部上下文,因此是有局限的。為了應對這一問題,他們在2015年提出了TWE模型(Topical Word Embeddings)。其中,每個單詞在不同主題下可能有不同的詞嵌入,主題則通過基於全局計算的潛主題建模。Pengfei Liu等提出的NTSG模型( Neural Tensor Skip-gram)應用了同樣的想法,只不過引入了張量以更好地學習單詞和主題之間的關係。Nguyen等在2017年提出了TWE的一個擴展,MSWE模型,TWE在給定上下文中會選取最合適的含義,而MSWE則使用權重混合表示給定上下文中單詞和不同含義的關聯程度。

出於實現的簡單性,聯合模型往往假定每個單詞有固定數目的含義(使用啟發式演算法猜測數目)。然而這一假定和實際情況並不相符,單詞的含義數量可能差別很大。雖然在WordNet 3.0中,大約80%的單詞為單義詞,不到5%的單詞有3個以上含義。然而,如果我們重點關注常用詞,則情況大不相同。常用詞大都是多義詞,而且其含義數量分布比較分散。

SemCor數據集中常用詞的含義數量分布

之前提到的MSSG模型考慮了這一點,使用的是一種實時非參數聚類演算法,對某個單詞而言,僅僅在與現有含義的相似性低於某個閾值時才創建新含義。Bartunov等在2015年提出的AdaGram模型(Adaptive Skip-gram,自適應Skip-gram模型),則基於非參數貝葉斯方法實現了動態多義(dynamic polysemy)

另外,以上的聯合模型都有一個缺陷,推斷含義所用的上下文仍然為可能有歧義的詞向量,而不是含義向量。換句話說,這些聯合模型都不是純粹的基於含義的模型。

有鑒於此,Qiu等在2016年提出了一個純含義模型(aclweb/D16-1018),同時,這一模型也將去歧義上下文從之前的小窗口擴展至整個句子。Lee和Chen在2017年提出的MUSE模型則是另一個Skip-gram的純含義擴展,MUSE使用了強化學習方法。

多語語料

由於歧義通常並不跨語言,比如中文分別使用「老鼠」和「滑鼠」,沒有英文中mouse的歧義問題。因此我們可以利用多語語料對單詞的翻譯進行聚類,然後基於翻譯聚類構建含義嵌入表示。這一方法在機器翻譯(Machine Translation)領域尤為常用。

與下游應用的集成

文本的表示通常只是第一步,要完成NLP任務,通常還需要後續處理。目前而言,詞嵌入可以很方便地集成到下游應用中,而含義嵌入在這方面還處於嬰兒期。

Pilehvar等在2017年的研究(aclweb/E17-2062)表明,當輸入文本足夠龐大的時候,基於知識的含義嵌入能夠提升文本分類的效果,但在大多數數據集上,使用預訓練的含義嵌入相比詞嵌入,表現沒有明顯的提升。

2015年,Li和Jurafsky提出了一個框架(arXiv:1506.01070),可以將無監督含義嵌入集成到多項自然語言處理任務中。然而,他們發現無監督含義嵌入並沒有顯著優勢,增加詞嵌入的維度可以取得相近的效果。

2018年,Peters等提出了學習深度雙向語言模型(LSTM)的內部狀態所得的詞向量。(arXiv:1802.05365)他們發現,這一上下文詞表示(contextualized word representations)可以很容易地加入現有的模型,並顯著提升問答(question answering)、文本蘊涵(textual entailment)、情感分析(sentiment analysis)等6個NLP問題上當前最先進模型的表現。

黃色表示上下文敏感嵌入,灰色表示上下文無關嵌入

和(上下文無關)詞嵌入不同,上下文詞表示是動態的,其表示因所出現的上下文環境的不同而不同。上下文詞表示的直覺是,語言模型單元隱式地根據上下文區分了多義詞的具體含義。

結語

本文概覽了直接基於文本語料推斷含義(無監督)及使用外部含義清單(基於知識)的含義表示模型。其中一些模型已經在實踐中取得了不錯的效果,但含義表示模型仍有很大的提升空間。例如,大部分模型只在英語語料上測試過,只有少數模型涉及英語以外的語料。再如,含義表示模型集成到下游應用的最佳策略尚不明確,同時預先去歧義是否必要也不確定。

含義的定義和正確的範式仍然是一個開放問題。含義需要是離散的嗎?含義需要依賴知識資源或含義清單嗎?含義可以根據上下文動態學習嗎?這些問題仍有待探索。


推薦閱讀:

過擬合與模型容量
資源|用Python和NumPy學習《深度學習》中的線性代數基礎
人工智慧會取代醫生嗎?給您5個 "say no "的理由
(No.35)SVM(支持向量機)--知識串聯
台大林軒田機器學習課第十六講筆記:機器學習的三條原則

TAG:數學 | 自然語言處理 | 機器學習 |