系統學習NLP(三十)--詞向量對齊

這塊,也可以參考facebook的https://www.jiqizhixin.com/articles/under-the-hood-multilingual-embeddings

關於詞向量對齊的歷史方法,可以看這裏:https://blog.csdn.net/xacecaSK2/article/details/102096256

1. 前言

在公司業務需求背景下,我需要解決來源不同語言語料的NLP問題如多語言(具體是中英日韓)情感分析,翻譯(n種語言翻譯成英語)。以前的時候總是爲每總語言對應訓練一個或者多個模型,但是這樣難免效率低而且浪費資源。我聯想起Alexis等人在18年《Word translation without parallel data》無監督單詞翻譯一文,特別是裏面一句Mikolov first noticed that continuous word embedding spaces exhibit similar structures across languages, even when considering distant language pairs like English and Vietnamese,也就是即使越南語和英語兩種差距很遠的語言,它們的詞向量亦有相似的地方。於是嘗試多種預料放在一起共同訓練,結合論文詞向量對齊方法,最終也拿到不錯的結果,在數據多接近一倍的情況下,情感分析跟最好的單語言模型只相差3個百分點。在翻譯上,僅需要一個模型就可以翻譯翻譯多種語言爲英語,對於一些港式夾雜英文的中文,例如“我先book個酒店,然後做個gym,再做個facial,今晚還有時間的話,我會send個email通知你。”翻譯爲"I will book a hotel first, then make a gym and have a facial. If time tonight, I will send you an email to inform you."這些細節在後面我會常說。由於水平限制,主要介紹Word translation without parallel data給我們帶來的有監督,無監督(主要)以及CSLS方法解決K近鄰問題。最後說一說我自己的一些通過詞向量對齊來優化的實踐和總結。

2. 通過監督學習對齊

2.1 語言本身的相似性

在Mikolvo的實驗中,通過他自己提出的Skip-gram和CBOW模型,訓練出多種語言的embedding。在他的論文《Exploiting Similarities among Languages for Machine Translation》中,他以英語和西班牙語爲例(下圖),左邊是英語的一些詞向量分佈,右邊是西班牙語的。這些詞向量都通過PCA映射到二維平面上。,並且手動通過一系列的仿射變換:旋轉、平移和縮放給讀者觀察他們之間的相似性。

英文-西班牙文PCA映射

因爲任何語言,只要在這個星球上,因爲都有着非常相似的背景。無論什麼語言,在大量樣本的條件下,例如貓和狗最容易出現在動物類的語料中,因此它們之間的夾角很小。上圖中的one與uno都語其他數字相差很遠,甚至看看下圖你發現中文的 “一” 跟one也是一樣,可能是因爲1在所有的語言中,使用頻率要比其他數字高得多,上下文跟各種詞的接觸也很廣,所以造成其看起來比較遠離數字羣體的現象。正是因爲語言的相似性讓Mikolvo的工作可以繼續進行。 下面給出兩張中文和英文的,不過融合在一起,可以看出 “數字” 向量(圖左)比較相似而 “動物” 向量(圖右)有一些差異。

中文-英文PCA映射

2.2 Procrustes analysis(普氏分析)

Mikolov的方法通過找到一個矩陣W,實現一組語言向量到另外的一組語言向量的“對齊”。通過使用一個小詞典(5000對英語-西班牙語{xi,yi}i∈[1,n],如下進行學習W:

d是詞向量的維度,Md(R)是一個d×d的實數矩陣。X和Y是兩個d×n的對齊矩陣(每一列是一個詞向量),分別代表兩個詞典。||•||F是弗羅貝尼烏斯範數。上面等式可以歸結爲普氏分析問題,只需要對Y•XT進行奇異值分解,如下:

下面是基於歐幾里德範數(L2範數)下的證明:

由於S是正交矩陣,當S爲單位陣E時取得最大值,有:

有了理論支持,實踐中對齊過程總結步驟如下:
1.通過SVD求解W'。
2.更新X=W'X,計算||W'X-Y||F。
3.重複上述兩個步驟,直到達到指定循環次數或者L2範數值收斂到一定閥值。

3. 通過無監督學習對齊

大部分通過無監督學習跨語言詞嵌入的方法都是分兩步走的,在引入種子詞典以後需要用有監督的方式學習最終嵌入

同時,第一步是使用單語詞嵌入訓練方法獲得源語言和目標語言的詞嵌入

3.1 域對抗訓練

通過上面的監督學習方式,我們可以通過求出W矩陣實現對齊,在無監督方法也是如此。域對抗參考自Ganin et al.(2016)的文章《Analysis of Representations for Domain Adaptation》,分析領域自適應的表示層。首先Domain Adaptation基本思想是既然源域和目標域數據分佈不一樣,那麼就把數據都映射到一個特徵空間中,在特徵空間中找一個度量準則,使得源域和目標域數據的特徵分佈儘量接近,於是基於源域數據特徵訓練的判別器,就可以用到目標域數據上。在本文就是把X通過映射W投影到Y上。設X={x1,x2,...,xn}和Y={y1,y2,...,ym}分別是source和target的詞向量集合,現在我們需要訓練一個判別器來區別來自WX={Wx1,Wx2,...,Wxn}和Y的隨機採樣。W則通過訓練,使得WX跟Y儘量地相似而至判別器無法區別它們。算法的目的都可以看做是學習一個線性變換來最小化目標分佈和源分佈之間的散度
判別器的損失函數:

生成器的損失函數:

3.2 GAN結構

論文作者採用fastText提供的詞向量作爲訓練樣本,其維度跟維基百科語料一致,都是300維。因此,W矩陣的維度也是300*300。單詞全部採取小寫,同時爲了加快實驗腳步,只選用了20萬個常用的單詞加入訓練。
在分辨器那邊,作者採用了兩層且每層有2048個神經單元的多層感知器,輸入層0.1的dropout噪音,輸出則採用leaky-Relu作爲激活函數。選取SGD優化算法,batch大小爲32,學習率0.1並且加上0.95的衰減率。不過作者後來在(Luong et al.,2013)的研究發現,採用高頻詞的效果要比低頻詞的效果要好,最終作者只選取了只有50000個高頻詞,並且他發現不比採用所有20萬個單詞的效果要差,可以忽略不計。

到這裏,得到的是粗略的翻譯矩陣

3.3 通過Procrustes再優化

儘管只用無監督方法得到不錯的效果,但是依舊追及不上監督方式。細細分析一下,在最初的對抗訓練中,生成器對所有的單詞都一視同仁地進行對齊,這樣可能存在一些高頻詞更新梯度比低頻詞還要低的情況。至於爲什麼選擇高頻詞,這裏插入我自己的一些理解。 第一個優點是高頻詞的有較高的支持度,儘量將高頻詞對齊,對後續使用詞向量作爲特徵有着更好的效果。 第二個優點是我認爲論文沒有提及的,就是越高頻的詞組,它們之間夾角就可能越大,這裏用可能是表示概率相對於低頻詞組更大。其實我用了一個自己的優化方法,就是儘量採用秩高的詞向量矩陣。我不肯定跟作者論文中提及的Stiefel流形是不是同一概念,在維基百科中對Stiefel描述如下:

由於自己的能力有限,未能寫出數學上的證明,不過我可以僞數學的形式描述一下: 當詞向量矩陣的秩高的時候,也就是有多組正交的詞向量,這些詞向量經過歸一化可以作爲這些詞向量所在的向量空間的基。而對正交向量的調整會比共面的向量更有作用,因爲共面向量可能不會有大幅度提升,因爲該面上可能存在已經對齊好的向量,強行對齊只會是此消彼長,而非共面向量則有着更大的對齊空間(正交的時候,向量的關係最小,不是相反那種,可以加速對齊不同的詞向量簇而不是相近的詞向量簇),可以加速Procrustes的收斂,當然這些時間上的收穫不是100%的,畢竟需要付出一定的時間到收集相互垂直的詞向量表。

總結來說:使用得到的粗略翻譯舉證可以構造一個小的高頻詞雙語詞典,然後對這個詞典剪枝,僅保留那些滿足雙向翻譯性質的詞對。通過求解正交普氏問題,可學到在這些高頻詞對上可用的新的翻譯矩陣Ω,新的Ω會得到新的種子詞對,新的種子詞對也會得到新的Ω,這個方法要求作爲錨點的高頻翻譯對要儘可能可靠

3.4 CSLS(CROSS-DOMAIN SIMILARITY LOCAL SCALING)跨領域相似度局部放縮

爲了產生可靠的配對詞典,目標詞向量與源詞向量的“距離”越近越好。不過,作者發現了了一個最近鄰不對稱的問題。可以想象,y是x的K-NN(k個最近鄰)並不意味着x也是y的K-NN,很容易舉一個英文向中文對齊的例子,“one“應該向中文的“一”對齊。W * Vone可能是“一”的k個最近鄰居之一,但是W * Vone並不一定跟“一”最相近,因爲“個”,“條”,“年”等等即“一個”、“一條”、“一年”等詞比“一”等詞更可能離W*Vone近,更可能靠的更緊。因此,這一種叫hubness的問題,即W * Vone向靠得更近的那組詞向量(“一個”、“一條”等)優化比向“一“靠近的loss更少。在我看來,這是一種陷入局部最小的現象。
當然,這種現象也出現在其他的領域,從CV問題((Jegou et al., 2010)到詞翻譯(Dinu et al., 2015),當然有些問題已被解決,有些則遺留在譜聚類算法中。 在作者的解決方案中,作者的主要思路是實現一種懲罰措施,用餘弦相似度衡量高維度上的“距離”。NT(Wx)這個標記是指Wx在target詞向量中k個最近鄰,類似,NS(y)則是指y中source詞向量中的k個最近鄰居。這裏k作者實驗了1,5,10,結果都十分平穩,不過作者最後選擇了10。

其中,cos是餘弦函數,計算兩高維度向量的夾角,r函數是一個懲罰項目,其值是所有最近鄰的平均餘弦相似度。下面是CSLS表達式: 

集中度(hubness),是在高維空間中觀察到的一種現象,即某些點可能是很多其它點的最近鄰居。這種現象會影響跨語言詞向量模型的效果 

總體來說:CSLS的作用是在高密度區域擴張,在低密度區域收縮,這樣可以算出更準確的最鄰近點,因此可以解決高維空間的中樞點問題。

3.5 正交性

正交矩陣每行或者每列都正交,並且都是單位向量。作者提及使用正交矩陣,可以保證了多語言詞向量的質量,因爲兩正交矩陣的乘積得單位矩陣(WT*W=I),維持了歐幾里德距離不變。參考歸一化,用正交矩陣訓練還可以保持訓練的穩定。作者從(Cisse等人的論文Parseval Networks: Improving Robustness to Adversarial Examples)得出一個既可以保持正交性又簡單的更新方法:

公式一

上面方法來自一種叫斯蒂弗爾流形的正交矩陣優化方法。放心,百度百科暫時沒有該詞條。這種簡單的一階集合方法可以在使用梯度更新的時候又保持這正交的性質。
這種方法的關鍵是,爲了保持流形的正交性質,每次進行梯度更新之後,需要做一定的“回滾”操作,在Absil的論文中(準確來說是一本書),這些操作作用在一部分的子流形上,譬如基於凱利變換的斯蒂弗爾流形。不過,這種方法的缺點是在反向傳播的過程中不可直接計算。作者用了一種近似的辦法克服這種困難。

這種方法參考自(Kovaceviˇc&Chebira´,2008)

只需要在每次梯度下降後優化Rβ(Wk),直到其收斂,這能確保流形的性質不變,也就是正交性不變。當然這種計算也是很昂貴,而且很容易造成剛剛梯度更新過的參數遠離原來的更新軌道方向。這裏Rα(Wk)的梯度是∇WkRβ(Wk) = β(Wk*Wk^T − I)Wk.因此有了上面的公式一。
具體更新算法僞代碼如下:

補充一下作者的一些細節: 由於一次性更新整個W矩陣非常喫力,效率是O(K^2),因此作者提出了抽樣更新法。通過從W隨機抽取行來更新,可以使效率降低到O(S^2),當然S<K。當然這裏S的抽樣是由Drineas等人在Fast monte carlo algorithms for matrices i: Approximating matrix multiplication提出的一種基於蒙特卡洛模擬方法,這篇論文的數學公式與推導太多,不再展開。

無監督方法的侷限性
[Søgaard2018]給出了MUSE的三個侷限性

1.MUSE不能保證對所有語言對都能給出好的對齊結果。例如如果一個語言詞形態豐富,而且是dependency-marking(這個語言學術語實在找不到翻譯了)時,效果就不好
2.MUSE不能很好對齊來自不同領域的詞
3.MUSE不能很好對齊使用不同算法訓練出的詞向量
例如,MUSE可以近乎完美地對齊用fasttext在維基上訓出的英語-西班牙語詞向量,但是不能很好對齊如下幾種詞向量:1. 英語-愛沙尼亞語 2. 使用醫學語料訓練出的英語詞向量和使用維基訓出的西班牙語詞向量

此外,對一些比較難的語言對,MUSE有時可以學出可用的映射,但是有時候不行

無監督方法的效果還受其核心成分GAN能力的制約。一方面,如前所述,GAN有模型崩塌現象,另一方面,有時候向量空間之間不存在線性映射關係。最後,[Søgaard2018]指出使用不同算法在不同語言上訓出的嵌入基本很難對齊 

4 應用與總結

詞向量對齊我主要用於兩個項目,一個是基於自注意力的簡單情感分析項目,一個是基於TF提供的nmt自然語言翻譯機項目做中對英的翻譯(後者還在學習中因此暫時不展示了)。
第一個項目是一個多語言的情感分析,網絡上的主流做法是一種語言對應一個模型。在這裏,會有兩種問題是,一個是某些語言的語料十分缺少,另外一個是正負樣本比例失衡的問題。譬如日語的評論,可能是日本人比較含蓄的原因,日語的評論好評佔最多,其次到中文評論。也有可能是買家害怕賣家的報復不敢差評。這次我採用的做法是,把其餘三種語種的詞向量均向英語語種對齊,當然也可以向中文或者其他語言對齊。不過這次是因爲英語數據量比較大,採用了以英語爲基準。融合後,詞向量數量是前面所有語種詞向量之和,當然這裏也可以優化,把餘弦距離低於一定閥值的兩個詞向量相互合併取平均或者僅僅保留其中一個,不過由於項目時間原因,最終沒有來得及進一步試驗。

我的模型是bilstm+self_attention,attention參考Attention is What you need裏面的單頭或者多頭注意力結構,採用了8個注意力頭,attention層參考了Yequan Wang的Attention-based LSTM for Aspect-level Sentiment Classification的模型,兩層bi-LSTM,一共約710萬個參數,整個網絡參數圖例結構如下:

下面是關於數據的統計:

第二列到最後一列分別指英文、中文、日文、韓文和融合語言,均使用同一模型進行訓練。 最後兩行是訓練成績,其中日文那一塊交叉驗證出現明顯的問題,我沒能查出是不是特徵工程造成的錯誤,也可能正負樣本相差太大造成的。中日韓數據集相對於英語比較少,所以它們收斂得比較快,但是也許正是這個原因,模型沒能更充分地學會情感的判別。英語的模型可能已經overfit了,不過最欣慰的是,融合後的數據,並沒有因爲語種的不同,使得準確率變差。

詞語級別的對齊確實是一種很有效的優化方法,當一種語料的數據較少的時候,可以藉助其他語料進行數據增強。當詞語級別對齊後,神經網絡所要學習的,就是語法上的不同了。相比詞語數量級別,語法學習的難度則少得多。詞向量對齊確實是一項非常有創意有突破性的想法,由於本人的水平有限,不足之處,敬請指出,如有錯誤的地方,請輕虐~

5 參考

Alexis Conneau, Guillaume Lample, Marc'Aurelio Ranzato, Ludovic Denoyer, Hervé Jégou. Word Translation Without Parallel Data

T. Mikolov, Q. V Le, I. Sutskever.Exploiting similarities among languages for machine translation

Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. Attention Is All You Need

Yequan Wang and Minlie Huang and Li Zhao* and Xiaoyan Zhu. Attention-based LSTM for Aspect-level Sentiment Classification

Moustapha Cisse, Piotr Bojanowski, Edouard Grave, Yann Dauphin, Nicolas Usunier. Parseval Networks: Improving Robustness to Adversarial Examples

Thang Luong, Eugene Brevdo, Rui Zhao (Google Research Blogpost, Github)Neural Machine Translation

[Søgaard2018]: Anders Søgaard, Sebastian Ruder, and Ivan Vulić. 2018. On the limitations of unsupervised bilingual dictionary induction. In Proc. of Association for Computational Linguistics (ACL 2018), pages 778–788.

補充一份有用的數據及工具:

單語資源
多語分佈式詞向量,以及40種語言的wiki dump(需科學上網,而且詞向量最近一次更新是在2013年了)
23種語言的維基語料,XML格式
英、法、德、意語單語語料(10億單詞量級)
fastText單語詞向量(294種語言)
跨語種數據
BabelNet,覆蓋了284種語言的雙語百科詞典,同時具有一定的語義網功能
PanLex,一個龐大的詞典數據庫,同時也提供一些詞語翻譯功能。號稱覆蓋5700種語言,但是網站內容純度略堪憂
OPUS,開放的平行語料庫
23種語言,253個語言對的維基數據。注意文檔之間並非嚴格對齊的翻譯關係,只是原書提到的“可比較數據”
跨語言詞向量模型
大部分都是給出訓練用的代碼。比較有名的包括

VecMap (ACL 2018)、Ruder的擴展版本,基於隱變量
對78種語言fastText詞向量的對齊工作,其中英語是中樞語言 (ICLR 2017)
無監督方法的代表MUSE
BiSkip
BilBOWA
(本小節沒有列出原書給出的全部工作)

評估工具
SemEval 2017,基於詞向量相似度
ACL 2016的工作,對內涵評估和外延評估都有涉及
85種語言的treebank
基於跨語言詞向量的無監督機器翻譯:UNdreaMT (ICLR 2018)、Monoses (EMNLP 2018)、FAIR的無監督機器翻譯工作 (EMNLP 2018)
此外,可以使用前面提供的跨語詞典或機器翻譯工具(如Google Translate)來評估學到的雙語詞典的質量

目前重建巴別塔最大的阻礙還是缺少跨語系語言的雙語評估數據

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