深度解讀FRAGE: Frequency-Agnostic Word Representation(2018-NIPS)

FRAGE: Frequency-Agnostic Word Representation


Alt

寫在最前

agnostic [æg’nɒstɪk] 這個詞在詞典裏查到的意思解釋很少,作爲名詞(n.)是不可知論者,作爲形容詞(adj.)是不可知論的,那這篇文章的題目翻譯過來是"頻率不可知的詞向量表示"麼?顯然讓人很難理解,很難通過題目來判斷文章具體是做了什麼方面的研究工作。我們來看agnostic跟在一個名詞後組成一個術語一般有什麼樣的含義:

Technology agnostic is a term that we use in the business that simply means, we are unbiased towards the use of different technology tools to solve different problems. We believe there is no 'one size fits all‘ in the website development industry.

Technology agnostic (技術不可知論)是我們在業務中使用的一個術語,簡單地說,我們對使用不同的技術工具來解決不同的問題沒有偏見(unbiased)。我們認爲網站開發行業沒有“一刀切”的模式。( 'one size fits all‘ :adj. 通用的;一體適用的; )因此,“agnostic”在這裏更多是"unbiased(adj. 無偏倚的)"意思。

本文將Frequency-Agnostic作爲標題,作者也是從一開始就想傳達“針對高頻詞和低頻詞在傳統詞嵌入模型中的表現,我們也不應該採用‘一體適用’的方式訓練它們,而我們又不能分別訓練它們,我們只有把它們身上‘高頻/低頻詞’這個標籤給拿掉了,再來看訓練效果”。

摘要

連續詞向量表示(也稱爲 詞嵌入)在很多基於神經網絡的模型中被用於自然語言處理任務中作爲基本構建塊(basic building block)。儘管人們普遍認爲具有相似語義的詞在嵌入空間中應該彼此接近,但我們發現在幾個(NLP)任務中學習到的詞嵌入是有偏倚的(biased),高頻詞和低頻詞的向量表示在嵌入空間的不同子區域。即使高頻詞和低頻詞語義相似,它們在詞嵌入空間中卻彼此遠離。這使得學習到的詞嵌入無效,特別是對於低頻詞來說,結果限制了這些神經網絡模型的性能表現。

在本文中,我們開發了FRequency-Agnostic word Embedding(FRAGE),這是一種利用對抗性訓練(adversarial training)學習單詞表示的簡潔而有效的方法。我們對四個自然語言處理任務的十個數據集進行了全面的研究,包括單詞相似度(word similarity),語言建模(language modeling),機器翻譯(machine translation)和文本分類(text classification)。結果表明,使用FRAGE,我們在所有任務中都獲得了比基線(baseline)更高的性能。

1. 介紹(Introduction)

詞嵌入技術,通常分爲兩種,對詞的離散向量表示和連續向量表示,已經成爲了很多被用於自然語言處理任務的基於神經網絡模型中的基本構建塊。和經典的one-hot表示方法不同之處在於,這種方式所學習到的詞向量包含有語義信息可以用於衡量詞之間的語義相似度並且可以遷移到其他的學習任務(one-hot 表示的詞向量之間兩兩正交,沒有詞相似度的概念)。

在NLP任務的深度學習方法中,詞嵌入作爲神經網絡的輸入,通常與神經網絡參數一起訓練。作爲神經網絡的輸入,詞嵌入攜帶詞的所有信息,將會進一步被神經網絡處理,並且詞嵌入的質量非常重要,對最終學習任務的表現有着很高的影響。不幸的是,我們發現由很多深度學習方法所訓練出來的詞嵌入遠非完美。如圖1(a)和圖1(b)所示,在由word2vec所訓練出來的詞嵌入空間中,詞"Peking"的最近鄰包含"quickest",“multicellular"和"epigentic” 而這些詞都不是語義上相似,而真正語義上相關聯的詞如"Beijing"和"China"彼此相距很遠。類似現象也被發現在由翻譯任務訓練的詞嵌入表示上。

Alt

圖1(部分):由WMT14翻譯任務用Transformer訓練出來的詞嵌入和谷歌新聞(Google News)數據集用word2vec訓練出來的詞向量案例學習顯示在(a)和(b)中。紅點表示低頻詞彙,藍點表示高頻詞彙。在(a)和(b)中,我們將這些詞的語義上的鄰居用粗體字標明瞭出來。

經過仔細研究,通過仔細研究,我們發現了一個更普遍的問題,它起源於文本語料庫中的低頻詞。沒有任何混淆,我們也將高頻詞(high-frequency words)稱爲流行詞(popular words),並將低頻詞(low-frequency words)稱爲罕見詞(rare words)。衆所周知,詞的頻率分佈大致遵循一種被稱爲齊普夫定律(Zipf’s law)的簡單數學形式。隨着文本語料庫的大小增長,低頻詞(rare words)的頻率遠小於高頻詞,與此同時,低頻詞的數量會遠大於高頻詞。有趣的是,所學習到的對低頻詞和高頻詞的詞向量表示也完全不同。(1)在詞嵌入空間,高頻詞通常有語義相關的鄰居,而低頻詞通常沒有。此外,超過85%的低頻詞哪怕有最近鄰也還是低頻詞。(2)詞嵌入技術(原生地)將詞的頻率信息編碼進去,如圖1(a)和1(b)所示,低頻詞和高頻詞的嵌入(also 詞向量表示)實際上位於嵌入空間的不同子空間。

我們認爲,對高頻詞和低頻詞進行向量表示的不同行爲是有問題的。首先,這種嵌入會影響對詞的語義理解。我們觀察到超過一半的低頻詞是名詞或高頻詞的變體。這些低頻詞應該和高頻詞有相似的意思或者同屬於(共享)相同的主題。其次,大量低頻詞的鄰居是語義無關的低頻詞。在某種程度上,這些詞向量表示更多地將頻率信息編碼進來而不是語義信息,這一點從語義理解的角度上看不是很好。因此,它將限制使用這種詞嵌入的NLP下游任務的性能。例如,在文本分類中,當用其低頻/高頻詞的替代詞來替換掉句子中原有的一個高頻/低頻詞時,不能很好地保證句子的標籤不會改變。

爲了解決這個問題,本文提出一種對抗訓練的方法去學習FRequency-AGnostic word Embedding (FRAGE,頻率不可知的詞嵌入). 對於給定的NLP任務,除了通過要優化特定任務的參數以及詞嵌入來最小化特定任務的損失以外,我們引入了另一種判別器(discriminator),將詞嵌入作爲輸入並對其是否是高頻/低頻詞進行分類。判別器優化其參數去最大化它的分類準確率,與此同時,詞嵌入也針對低任務依賴性損失進行優化以至於最後能夠欺騙(fooling)判別器去將高頻/低頻詞錯誤分類。當整個訓練過程收斂並且系統達到平衡時,判別器不能很好地區分高頻詞與低頻詞。這樣做的結果是,低頻詞能夠與高頻詞處於詞嵌入空間的同一區域並與其混合。這時FRAGE將能夠更好地捕捉到語義信息並幫助特定任務獲得更好的表現。

我們對四種類型的NLP任務進行了實驗,包括三個詞相似性任務,兩個語言建模任務,三個情感分類任務,以及兩個機器翻譯任務來測試我們的方法。在所有任務中,FRAGE都優於基線。特別是,在語言建模和機器翻譯方面,我們在PTB,WT2和WMT14英語-德語數據集上獲得了比目前最先進(state-of-the-art)結果更好的性能。

2. 背景(Background)

2.1 詞表示 (Word Representation)

單詞是自然語言的基礎單位,分佈式單詞表示(即單詞嵌入)是NLP任務中許多模型的基本單元,包括語言建模和機器翻譯。已經證明,從一項任務中學到的詞向量表示可以轉移到其他任務並且也能實現很好的性能表現。

當詞嵌入技術在NLP基於神經網絡的模型中扮演着越來越重要的作用並取得巨大成功時,一個技術上的挑戰就是對低頻詞的嵌入很難訓練,由於其出現頻率低。R.Sennrich等人在“Neural machine translation of rare words with subword units“(2015)一文中提出一種新的方法將每個詞進一步劃分(split)爲子詞(sub-word)單元,這種方法通常廣泛用於神經機器翻譯中。然而,低頻子詞單元仍然很難去訓練;M.Ott等人在“Analyzing uncertainty in neural machine translation“(2018)一文中提供了一個綜合性研究,研究顯示低頻(子)詞在神經機器翻譯中通常被低估了:在推斷(inference)步驟中,模型更傾向於選擇高頻詞而不是它們的低頻替代詞。

2.2 對抗訓練(Adversarial Training)

我們解決上述問題的基本思想是對抗性訓練,使兩個或兩個以上的模型通過追求競爭目標一起學習。對抗性訓練的代表性例子是用於圖像生成的生成性對抗網絡(GAN,Generative Adversarial Networks),其中判別器(discriminator)和生成器(generator)彼此競爭:生成器旨在生成類似於原始圖像(natural images)的圖像,而判別器旨在從原始圖像中鑑別出後來生成的圖像(generate images)。最近(2016,2017發表的文章表明),對抗訓練已經被成功應用到NLP任務中。有些研究引入了一個額外的鑑別器來區分非並行雙語數據中從不同語言學到的語義。 Alex Lamb等人(2016)開發了一個鑑別器來分類句子是由人創造還是由模型生成,其研究結果發表爲“Professor forcing: A new algorithm for training recurrent networks“一文。

我們提出的方法是在對抗訓練框架下解決,但又不完全是傳統的生成器-判別器方法(generator-discriminator approach),因爲我們的方案中沒有生成器。對於NLP任務及其神經網絡模型(包括詞嵌入),我們引入了一個判別器來區分高頻詞和低頻詞的詞向量表示;而神經網絡模型旨在愚弄(fool)判別器的同時最小化特定任務的損失。

我們的工作也與對抗域適應性(adversarial domain adaptation)弱相關,試圖減輕在訓練和測試中進行域轉換的負面影響。而本文工作和對抗域適應之間的區別在於:我們的目標不是爲了造成訓練和測試之間的不匹配,我們旨在提升詞嵌入的有效性,從而提升端到端NLP任務的性能。

3. 實驗研究(Empirical Study)

在本節中,我們基於使用word2vec從Google新聞語料庫訓練的模型研究高頻詞和低頻詞的嵌入,並使用Transformer從WMT14英語 - 德語翻譯任務進行訓練。實現細節可以FRAGE_in_Github中找到。

實驗設計(Experimental Design)

在這兩個任務中,我們簡單地將詞彙中頻率排名前20%的常用單詞設置爲高頻詞(popular words),並將其餘單詞表示爲低頻詞(rare words)。(粗略地說,在WMT14數據集中如果一個詞的的相對頻率低於10610^{-6},以及在谷歌新聞數據集如果一個詞的的相對頻率低於10710^{-7},我們將其設置爲低頻詞。我們也嘗試了設置成其他閾值,如10%或25%,發現觀察結果相似。

我們研究在詞向量表示中所展現出來的兩個詞之間的語義關係是否合理。爲了達到這個目的,我們隨機抽取了一些高頻/低頻詞並檢查了從不同任務中訓練得到的嵌入。對於每個採樣得到的單詞,我們根據其與其他單詞之間的詞向量表示的餘弦相似度確定其最近鄰居。我們還手動選擇與其語義相似的單詞。爲簡單起見,對於每個單詞,我們將從詞嵌入中預測得到的最近單詞稱爲模型預測的最近鄰(model-predicted neighbors),並將我們選擇的單詞稱爲語義鄰居(semantic neighbors)。

觀察(Observation)

爲了對詞嵌入可視化,我們通過SVD(Singular Value Decomposition,奇異值分解)對詞向量進行降維,並且將兩個案例繪製成圖形如圖1所示。更多實驗案例以及其他沒有降維處理的研究可以在第5節中找到。

Alt

我們發現從不同任務中訓練得到的詞向量共享一些共同的模式。對於這兩項任務而言,超過90%的模型預測的低頻詞的鄰居還是低頻詞。對於每一個低頻詞而言,模型預測的鄰居詞通常與其並沒有語義相關性,而我們選出來的語義鄰居在詞嵌入空間中和該詞的距離非常遠。與此相反,模型預測的高頻詞的鄰居是非常合理的。

由於低頻詞和高頻詞的模式不同,我們進一步覈查整個嵌入矩陣來進行一個大體上理解。我們也對用SV處理過的詞嵌入進行可視化,通過將兩個方向保持爲兩個最大的特徵值(eigenvalues),並將它們繪製在圖1©和1(d)中。從圖中可以看出,這種嵌入方式實際上將詞的頻率信息在一定程度上編碼進了詞的向量表示:在這種線性投影之後,低頻詞和高頻詞位於不同的區域,因此它們在原始嵌入空間中佔據了的不同區域。這種奇怪現象也在其他由C-BOW和GloVe所訓練出的詞向量中有所體現,在Jiaqi Mu的“All-but-the-top: Simple and effective postprocessing for word representations.“一文中也被提及到。

解釋說明(Explanation)

從上面的實驗研究中,我們可以看到低頻詞和高頻詞所佔據的詞嵌入空間是不同的,這裏我們直觀地解釋一個可能的原因。我們簡單地將word2vec作爲一個例子,它是通過隨機梯度下降進行訓練的。在訓練過程中,對高頻詞的採樣率很高,因此高頻詞的詞嵌入更新頻繁。而對於一個低頻詞來說,採樣率很低並且它的詞嵌入很少更新。根據我們的研究發現,平均而言,在訓練過程中,高頻詞的詞嵌入的移動距離是低頻詞的兩倍長。由於所有詞向量表示通常都是在原點周圍以較小的方差(variance)初始化,我們在最終模型中觀察到,低頻詞的詞嵌入仍然在原點附近,而高頻詞已經移動到距離初始位置很遠的地方。

討論(Discussion)

我們有充分的證據表明當前這種現象是存在問題的。首先,我們使用 自然語言工具包_Natural Language ToolKit中的POS 詞性標註,研究發現在兩個任務中,超過半數以上的低頻詞是名詞,如公司名,城市名。它們可能與高頻實體(popular entities)共享相似的主題,如一些大公司和大城市;大約10%的低頻詞包含有連字符(即通常用於連接高頻詞的符號),以及超過30%的低頻詞是高頻詞的不同變體形式(PoSs)。這些低頻詞與高頻詞應該有着混合或者相似的語義。這些事實表明,低頻詞和高頻詞應該位於詞嵌入空間的同一區域,但這與我們觀察到的不同。其次,正如我們從案例中看到的,對於低頻詞,模型預測的鄰居通常不是語義相關的詞而是頻率相關的詞(同爲低頻詞)。這表明,對於低頻詞,詞嵌入技術更多地將頻率信息編碼進詞的向量表示而不是語義信息。這種方式訓練出來的詞向量表示被用於如文本分類,語言建模,語言理解和翻譯的語義理解任務中表現是不好的。

【拓展】POS tagger

即Part-Of-Speech Tagger,主要用於標註詞在文本中的成分。通常需要先對詞作Tokenize(標記字符串,which means distinguish meaningful word units from punctuation in the text)處理,然後再作POS tagging(to tag these units according to their Part of Speech, such as Noun, Verb, Adjective),接下來對單詞做lemmatizing(對詞進行不同形式歸類,to group related forms under a single heading, as would be done in a dictionary)。

其中PoS tagger 使用方法如下:

import nltk
text=nltk.word_tokenize(“TEXT”)
nltk.pos_tag(text)

通常會對詞進行如下標註:

Alt

4. 本文的方法(Our Method)

在這一部分,我們展現了我們用於提升詞的向量表示的方法。由於我們有一個很強的先驗認知,很多低頻詞應該與高頻詞在詞的嵌入空間中共享同一區域,因此我們算法的基本思想是在一個對抗性框架中訓練詞嵌入:我們引入了一個判別器將詞嵌入分爲兩類:高頻詞和低頻詞。我們希望通過訓練學習到的詞向量不僅可以最大限度地減少具體任務的訓練損失(minimize the task-specific training loss),同時也可以愚弄判別器。通過這種方式,詞的頻率信息就從詞嵌入中被移除掉了,因此我們將我們的研究稱作 頻率不可知的詞嵌入(frequency-agnostic word embedding ,FRAGE)

我們首先對之後會出現的符號進行一些標註,然後介紹我們的算法。我們開發了三種符號:詞嵌入,具體任務的參數/損失,以及判別器參數/損失,整體框架如圖2所示。

Alt

圖2 所提出的學習框架包含一個具體任務的預測器(predictor)以及一個判別器(discriminator),判別器的功能是用於區分低頻詞和高頻詞。兩個模塊都使用詞嵌入作爲輸入。

θembRd×V\theta^{ emb}\in R^{d \times |V|}表示爲要被學習到的詞嵌入矩陣。其中dd是嵌入向量的維度,V|V|是詞彙表大小(vocabulary size)。用VpopV_{pop}表示高頻詞(popular words)的集合,而Vrare=VVpopV_{rare}=V \setminus V_{pop} (\setminus符號表明對集合做差集運算 )爲低頻詞的詞向量表示。接下來,嵌入矩陣θemb\theta^{ emb}可以分爲兩部分:θpopemb\theta^{emb}_{pop}爲高頻詞的詞嵌入矩陣,θrareemb\theta^{emb}_{rare}爲低頻詞的詞嵌入矩陣。令θwemb\theta^{emb}_{w}表示詞ww的詞嵌入。令θmodel\theta^{model}表示除了詞嵌入以外所有的具體任務的參數。舉例來說,對語言建模,θmodel\theta^{model}是RNN或LSTM的參數;對神經機器翻譯而言,θmodel\theta^{model}是所有編碼器(encoder),注意力模塊(attention module)和解碼器(decoder)的參數。

公式1 (Formula 1)

LT(S;θmodel,θemb)L_{T}(S;\theta^{model},\theta^{emb})表示數據集SS上所有具體任務的損失。以語言建模爲例,損失LT(S;θmodel,θemb)L_{T}(S;\theta^{model},\theta^{emb}) 由數據的負對數似然定義:

LT(S;θmodel,θemb)=1SySlogP(y;θmodel,θemb)L_{T}(S;\theta^{model},\theta^{emb})=-\frac{1}{|S|}\displaystyle\sum_{y\in S}log P(y;\theta^{model},\theta^{emb})

其中,yy是一個句子。

【解析】

文章在這裏舉了一個語言建模的例子來說明詞嵌入模型的損失函數是怎麼設計的以及前面交代的符號表示在這裏都有什麼作用。具體分析如下:

在語言建模(language modeling)中,模型的基本構建塊(basic building block)不再是單個單詞,而是一個個句子。yy是一個句子,θmodel\theta^{model}表示模型的所有參數,θemb\theta^{ emb}表示句子的嵌入矩陣,因此P(y;θmodel,θemb)P(y;\theta^{model},\theta^{emb})表示一個句子出現的概率,模型需要不斷地進行隨機梯度下降(SGD)來調整句子的向量表示θemb\theta^{ emb},調整參數以最大化目標函數——對該句子的預測概率,從而最小化損失函數。

【問題】爲什麼最大化預測概率,就可以最小化損失函數呢?即負對數似然在該式中怎樣體現?

這裏我們還是回到詞嵌入本身,拿word2vec中的skip-gram模型來分析:

對每一個單詞 t=1,2,…,T(文本詞彙表大小),我們需要預測該單詞窗體“半徑(radius)”爲m的上下文單詞。

  • 目標函數:對於給定的當前中心詞,最大化它的每一個上下文單詞的預測概率。

J(θ)=t=1TmjmTp(wt+jwt;θ)J'(\theta)=\displaystyle \prod^{T}_{t=1}\displaystyle \prod^{T}_{-m\leq{j}\leq{m}}p(w_{t+j}|w_{t};\theta)

θ\theta 表示所有我們將要優化的變量(where θ\theta represents all variables we will optimize)。

​ 在訓練過程中我們需要做的是調整模型的參數,使得對中心詞的上下文單詞預測的概率儘可能高。

  • 要最大化目標函數,需要對其概率分佈取負對數,得到損失函數——對數似然的相反數。

J(θ)=1Tt=1Tmjmlog p(wt+jwt)J(\theta)=-{\frac{1}{T}}\displaystyle \sum^{T}_{t=1}\displaystyle \sum_{m\leq{j}\leq{m}}log\, p(w_{t+j}|w_{t})

​ 該式即負對數似然估計(negative log likelihood)

​ 對數函數如下圖紅線所示:

Alt

而公式中我們的對數函數的變量部分是一個概率值(0q10\leq q \leq1),因此爲紅線中(x<1x<1)的部分軌跡,我們對其取負號,得到負對數似然函數如下圖所示:

Alt

我們希望得到的概率越大越好,因此概率越接近於1,則函數整體值越接近於0,即使得損失函數取到最小值。取對數加負號以後前面還要乘以一個1T\displaystyle\frac{1}{T},這裏TT代表語料庫詞彙表中單詞總數,我們對每一個單詞的負對數進行累加求和之後需要除以TT,才能得到損失函數的平均值。

公式2 (Formula 2)

fθDf_{\theta^{D}}表示一個參數爲θD\theta^{D}的判別器,它的作用是當我們將一個詞嵌入作爲輸入時,判別器能夠輸出一個0到1之間的置信度(confidence score),用於表明該詞有多大可能性是一個低頻詞。令LD(V;θD,θemb)L_{D}(V;\theta^{D},\theta^{emb}) 表示判別器的損失:

Alt
【存在的疑問】爲什麼表示判別器的損失時與前面詞嵌入模型中損失函數的表示形式不一致?比如說:在這裏區分了高頻/低頻詞,以及取對數求和取平均值之後,前面沒有加負號?

上述公式爲判別器的損失函數的數學形式化表示,判別器的作用是對於一個輸入進行分類,判斷它是高頻詞還是低頻詞。因此,判別器的損失是當它分類錯誤的時候,我們對其累加求和取平均。分類錯誤就包含有兩種情況:(1)本來是高頻詞,判別器將其誤分類爲低頻詞;(2)本來是低頻詞,判別器將其誤分類爲高頻詞。分別對應上述公式前後兩項,具體分析如下:

fθD(θwemb)f_{\theta^{D}}(\theta_{w}^{emb}) 表示對於輸入的詞向量,判別器將其判定爲低頻詞的可能性;

而公式的第一項1VpopwVpoplogfθD(θwemb)\displaystyle\frac{1}{|V_{pop}|}\displaystyle\sum_{w \in V_{pop}}log f_{\theta^D}(\theta_{w}^{emb}) 表示一個詞ww原本是高頻詞,但判別器將其分類爲低頻詞;

同理,公式的第二項表明一個詞原本是低頻詞,但判別器將其誤分類爲高頻詞的概率。

兩項相加表示判別器在分類時的誤差,如果判別器每次判斷都準確,那麼整體損失就很小;如果判別器總是誤分類,整體損失就很大。與傳統GAN不同,這裏我們希望儘可能最小化判別器的損失,因此也不需要在前面加負號。

公式3 (Formula 3)

遵循對抗性訓練的原則,我們制定了一個極小極大(minimax)的目標來訓練具體任務模型(θmodel and  θemb\theta^{model} \:and\:\,\theta^{emb}) 以及判別器(θD\theta^D) 如下:

minθmodel,θembmaxθDLT(S;θmodel,θemb)λLD(V;θD,θemb)\displaystyle\min_{\theta^{model},\theta^{emb}}\displaystyle\max_{\theta^D}L_T(S;\theta^{model},\theta^{emb})-\lambda L_{D}(V;\theta^D,\theta^{emb})

其中,λ\lambda是用於權衡兩項損失的係數(where λ is a coefficient to trade off the two loss terms)。

公式4 (Formula 4)

我們可以看到,當模型參數θmodel\theta^{model}和嵌入矩陣θemb\theta^{emb} 都固定的情況下,對判別器θD\theta^D的優化變成了:

maxθDλLD(V;θD,θemb)\displaystyle\max_{\theta^D}-\lambda L_D(V;\theta^D,\theta^{emb})

此時需要優化對高頻/低頻詞的分類誤差(classification error)。

公式5 (Formula 5)

當判別器θD\theta^D固定時,對模型參數θmodel\theta^{model}和嵌入矩陣θemb\theta^{emb} 的優化變爲了:

minθmodel,θembLT(S;θmodel,θemb)λLD(V;θD,θemb)\displaystyle\min_{\theta^{model},\theta^{emb}}L_T(S;\theta^{model},\theta^{emb})-\lambda L_{D}(V;\theta^D,\theta^{emb})
也就是,爲了優化任務表現並且愚弄判別器,我們通過隨機梯度下降或它的變體來迭代訓練θmodel,θemb\theta^{model},\theta^{emb}以及θD\theta^{D} 。整體訓練過程展示在算法1中。
Alt

【算法解讀】

輸入:數據集SS ,詞彙表VV爲高頻詞VpopV_{pop}和低頻詞VrareV_{rare}的並集,模型的所有參數θmodel\theta^{model},詞嵌入矩陣θemb\theta^{emb}以及判別器的參數θD\theta^{D}

循環{

​ 在數據集SS中進行一個小批量取樣得到S^\hat{S}

​ 在詞彙表VV中進行一個小批量取樣得到V^\hat{V},其中V^=Vpop^Vrare^\hat{V}=\hat{V_{pop}}\cap\hat{V_{rare}}

​ 根據公式(5)和數據集S^\hat{S} ,通過梯度下降更新θmodel,θemb\theta^{model},\theta^{emb}

​ 根據公式(4)和詞彙表V^\hat{V},通過梯度上升更新θD\theta^{D}

}直至模型收斂

輸出: 模型的所有參數θmodel\theta^{model},詞嵌入矩陣θemb\theta^{emb}以及判別器的參數θD\theta^{D}

【拓展】Stochastic vs Mini-batch training

In the simplest term, Stochastic training is performing training on one randomly selected example at a time, while mini-batch training is training on a part of the overall examples.

5. 實驗(Experiment)

我們在很多任務上測試我們的方法,包括單詞相似度,語言建模,機器翻譯和文本分類。對於每項任務,我們選擇當前最先進的架構以及最先進的訓練方法作爲我們的基線。

爲了公平比較,對於每一個任務,我們的方法與基線共享相同的模型體系結構。唯一的區別是我們使用原始特定任務的損失函數以及如公式(3)所示一個附加的對抗性損失。數據集描述和超參數配置在本文中將會給出。

5.1 設定(Settings)

我們對以下任務進行實驗。

詞相似度(Word Similarity) 通過計算單詞相似度來衡量訓練得到的詞嵌入的性能:它根據斯皮爾曼等級相關(Spearman’s rank correlation) 來評估對於一個給定的單詞,它在詞嵌入空間中最相鄰的詞是否與實際情況一致。我們用Skip-gram模型作爲我們的基準模型,並用Enwik9語料庫來訓練詞嵌入。我們在RG65, WS, 和RW這三個數據集上測試基準模型和我們的模型方法。其中RW數據集是用於評估低頻詞的數據集。按照慣例(Skip-gram,GloVe等),我們在計算詞之間的相似性時使用餘弦距離(cosine distance)。

語言建模(Language Modeling) 是自然語言處理的基本任務。其目標是在有先前詞(previous words)的條件下預測下一個詞,並且該任務通過困惑度(perplexity)來衡量。我們在兩個被廣泛使用的數據集PTB(Penn Treebank)和WT2(WikiText-2)上進行了實驗。我們選擇兩個最近發表的研究工作作爲我們的基線:AWD-LSTM模型AWD-LSTM-MoS模型

機器翻譯(Machine Translation) 是深度學習和自然語言處理中的熱門任務。我們選擇兩個數據集:WMT14英語 - 德語和IWSLT14德語 - 英語數據集,根據BLEU得分(Bilingual Evaluation Understudy,雙語互譯質量輔助工具)進行評估。我們用Transformer作爲我們的基準測試模型。Transformer是2017年A.Vaswani等人在NIPS上發表的一篇文章"Attention Is All You Need"中的架構。其在編碼和解碼步驟中都用到了自注意網絡(Self-Attetion Network),該模型在很多機器翻譯任務中都實現了最佳性能。例如WMT14英語 - 德語和IWSLT14德語 - 英語數據集。

文本分類(Text Classification) 是傳統的機器學習任務,並通過準確性進行評估。根據2015年Siwei Lai等人在AAAI上發表的“Recurrent Convolutional Neural Networks for Text Classification”,我們實現了一個基於卷機神經網絡的循環模型(Recurrent CNN-based mode),並將其在AG‘s 新聞語料庫(AGs),IMDB電影評論數據集(IMDB)以及20新聞組(20 NG)數據集。RCNN同時包含循環層和卷積層用於捕獲文本中的關鍵成分,該模型被廣泛用於文本分類任務中。
在所有任務中,我們只是將詞彙中頻率排名前20%的單詞設置爲高頻詞,並將其餘單詞表示爲低頻詞,這與我們的實驗研究(Section3 empirical study)相同。對除了skip-gram模型之外的所有任務進行訓練,我們使用完全批量梯度下降來更新判別器。對於skip-gram模型的訓練,由於詞彙量太大,因此使用批量大小爲3000的小批量隨機梯度下降來更新鑑別器。對於語言建模和機器翻譯任務,我們使用邏輯迴歸作爲判別器。對於其他任務,我們發現使用伴隨有一個隱藏層的淺層神經網絡更有效,我們將隱藏層中的節點數設置爲嵌入大小的1.5倍。在所有任務中,我們將超參數λ設置爲0.1。

5.2 結果(Result)

在本小節中,我們提供了所有任務的實驗結果。爲簡單起見,我們在表中使用“with FRAGE”作爲本文提出的方法。

詞相似度(Word Similarity) 表1中列出了三個單詞相似性任務的結果。從表中可以看出,我們的方法在所有數據集上始終優於基線。特別是,我們在低頻詞(Rare Words)數據集RW上的表現優於基線約5.4點。這個結果表明我們的方法改進了單詞的表示,特別是罕見的單詞。

Alt

表1 在上個詞相似度任務數據集上的結果

語言建模(Language Modeling) 在PTB和WT2數據集上進行語言建模的結果如表2所示。我們用基線模型中已經用過的幾個檢查點(checkpoints)來測試我們的模型和基線:沒有微調without finetune,有微調with finetune,有後處理with post-process(連續緩存指針continuous cache pointer和動態評估dynamic evaluation)。在所有這些設置中,我們的方法優於兩個基線。在PTB數據集上,我們的方法在不同檢查點的測試集中將AWD-LSTM和AWD-LSTM-MoS基線提高了0.8 / 1.2 / 1.0和0.76 / 1.13 / 1.15點。在包含更多稀有詞的WT2數據集上,我們的方法實現了更大的提升。我們分別在測試困惑度方面將AWD-LSTM和AWD-LSTM-MoS的結果改善了2.3 / 2.4 / 2.7和1.15 / 1.72 / 1.54點。

Alt

表2 在Penn Treebank和WikiText2上驗證測試困惑度。困惑度越小,結果越好。“Paras”表示模型參數的數量。

機器翻譯(Machine Translation) 在WMT14英語 - 德語和IWSLT14德語 - 英語任務的神經機器翻譯結果如表3所示。我們在WMT14 英語-德語任務中進行BLEU得分評估,在transformer_basetransformer_big 設置方面分別超出基線1.06/0.71點。從對抗訓練中學到的模型也優於IWSLT14德語 - 英語任務中的原始模型0.85點。這些結果表明,改進的詞嵌入可以在更復雜的任務和更大的數據集中獲得更好的結果。

Alt

表3 在WMT2014英語-德語和IWSLT德語-英語任務上進行BLEU評分

**文本分類(Text Classification) ** 結果列於表4.我們的方法在三個不同的數據集上優於基線方法1.26%/ 0.66%/ 0.44%。

Alt

表4 在AG‘s 新聞語料庫(AGs),IMDB電影評論數據集(IMDB)以及20新聞組(20 NG)數據集上進行文本分類的準確度

總而言之,我們的實驗在四種任務一共10個數據集上驗證了我們方法的有效性。我們在表5和圖3中提供了使用或者不使用我們方法的案例研究和定性分析。通過對這些案例進行比較,我們發現,用我們的方法,詞相似度得到了很大提升,並且高頻/低頻詞更好地混合在了一起。

Alt

圖3 該圖展現了,在不同的任務中,在我們的模型中對高頻/低頻詞的嵌入是相互混合在一起的,效果更好

Alt
表5 對原始模型和我們的方法進行案例研究。低頻詞已經用"*"標註。對於每一個詞,我們將它模型預測的鄰居列出。此外,我們還基於餘弦相似展現出了它們的語義鄰居的排名位置。我們可以看到,對於原始模型,語義鄰居的排名位置非常低。

【表格解讀】

該表上半部分標註了"Orig.“爲在原始模型(Original Models)上詞嵌入表徵能力的展現。對詞"citizens(公民,pl.)”,模型預測的鄰居是"clinicians^*(臨牀醫生,pl.)",“astronomers^*(天文學家,pl.)”,“westliche(=Western)”,“adults(成人,pl.)”.而低頻詞"citizenship^*" ,模型預測的鄰居是"bliss^*", “pakistanis^*”, “dismiss^*”, "reinforces^* ", 低頻詞的鄰居幾乎還是低頻詞,而且大多數都沒有語義相關性。並且從排名上也可以看出,明明意思相似的詞,且相互之間作爲其某種形式上的變體,結果排名相隔很遠;

而在本文提出的模型FRAGE中,可以看到模型預測的鄰居一方面與給定單詞具有語義上的相似性,另一方面低頻詞的鄰居中出現了很多高頻詞,從這一點可以看出低頻詞和高頻詞在嵌入空間中不再分佈在不同子空間區域。該方法引入discriminator判別器消去詞的頻率信息之後打破了高頻/低頻詞在嵌入空間中相互隔離的壁壘,因此訓練效果很好。

參考(Reference)

1.原文

2.Github項目

3.Technology Agnostic
What is agnostic

4.負對數似然

5.Stochastic vs Mini-batch training

6.BLEU

7.RCNN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章