【ACM】大文本語料庫中詞嵌入的異部訓練

標題:Asynchronous Training of Word Embeddings for Large Text Corpora

作者:Avishek Anand, Megha Khosla , Jaspreet Singh,Jan Hendrik Zab, Zijian Zhang

來源: WSDM'19: Proceedings of the Twelfth ACM International Conference on Web Search and Data Mining (第十二屆ACM網絡搜索和數據挖掘國際會議)

編譯:李灝城,孫靜正,劉博藝,數據挖掘組


摘要

詞嵌入是一種強大的語言分析方法,在信息檢索和文本挖掘等眾多任務中得到了廣泛的應用。在大型語料庫上進行嵌入式培訓在計算上非常昂貴,因為輸入通常是按順序處理的,並且參數是同步更新的。已經提出的用於異步培訓的分佈式體系結構要麼關注詞彙表大小和維度的縮放,要麼承受昂貴的同步延遲。在本文中,我們提出了一種可擴展的方法來訓練詞嵌入,它通過對輸入空間進行分區來實現大規模的文本語料庫的擴展,同時又不犧牲嵌入的性能。我們的訓練過程不涉及任何參數同步,除了最後一個通常在幾分鐘內執行的子模型合併階段。我們的分佈式訓練可以無縫地擴展到大型語料庫,我們使用我們的分佈式過程所訓練的模型,在各種NLP基準測試中獲得可比較的、有時甚至高達45%的性能改進,而這隻需要基線方法所用時間的1/10。最後,我們還證明了我們對子模型中缺失的單詞具有很強的魯棒性,並且能夠有效地重建單詞表示。


核心內容

什麼是詞嵌入?

詞嵌入(word embedding)又稱詞向量,是一種詞轉化成一種分佈式表示,是將詞彙映射到實數向量的方法總稱。分佈式表示將詞表示成一個定長的連續的稠密向量。詞嵌入是自然語言處理(NLP)的重要突破之一。

解釋:詞嵌入實際上是一類技術,單個詞在預定義的向量空間中被表示為實數向量,每個單詞都映射到一個向量。舉個例子,比如在一個文本中包含“貓”“狗”“愛情”等若干單詞,而這若干單詞映射到向量空間中,“貓”對應的向量為(0.1 0.2 0.3),“狗”對應的向量為(0.2 0.2 0.4),“愛情”對應的映射為(-0.4 -0.5 -0.2)(本數據僅為示意)。像這種將文X{x12345……xn12345……yn},這個映射的過程就叫做詞嵌入。

目的:通過詞嵌入這種方式將單詞轉變為詞向量,機器便可對單詞進行計算,通過計算不同詞向量之間夾角餘弦值cosine而得出單詞之間的相似性。


【ACM】大文本語料庫中詞嵌入的異部訓練


意義:通過詞嵌入這種方式將單詞轉變為詞向量,機器便可對單詞進行計算,通過計算不同詞向量之間夾角餘弦值cosine而得出單詞之間的相似性。

——來自CSDN


詞嵌入算法發展:

單詞表示通常是通過無監督的方式從大型文本語料庫中學習的——傳統上是通過矩陣分解方法學習,最近則是通過使用神經網絡學習。

Word2Vec(Word to Vector)

一個特別流行的實現是帶負抽樣的跳躍(SGNS),也稱為Word2Vec。SGNS方法的流行是由於基於異步梯度下降(通過無鎖更新和使用負採樣、子採樣和詞彙剪枝進行細緻的模型更新)的改進,訓練時間更快。缺點:儘管這些改進提高了實例級訓練的速度,但輸入本身必須按順序處理,從而降低了訓練大量數據集的速度。



創新:

針對SGNS的分佈式體系結構也已經被提出,但是目標不同。有的嘗試通過劃分嵌入維度來擴展SGNS訓練,有的通過劃分詞彙空間來擴展到更大的詞彙量。本論文則使用劃分輸入空間的方法。



在本文中提出了一種可擴展的方法來訓練詞嵌入,即通過劃分輸入空間來擴展到大量的文本語料庫,同時又不犧牲嵌入的性能。在大量的詞相似,類比和分類基準方面,與使用的集中的和分佈式的基線方法相比較,這種方法是簡單的,易於實現和有效的。


詳細方法

Step1:

劃分階段:

這個階段,使用的策略是將數據劃分為若干個子語料庫,這樣就可以保留unigram和bigram分佈。

為確保在子語料庫中不漏掉單詞和單詞上下文,實驗提出了一種簡單而有效的隨機抽樣方法,將輸入數據(一組句子)分成多個較小的子語料庫。特別地,實驗建議使用r(In %)的抽樣率進行隨機抽樣,即從rN /100個句子中分別選擇100/r個樣本,每個樣本獨立地、均勻地隨機地選擇句子,並進行替換。


Step2:

訓練階段:

研究通過MapReduce框架中實現了採樣和培訓,以利用並行數據加載和處理。與早期的工作不同,實驗採用無狀態的方法進行培訓。映射者負責將輸入採樣到子語料庫中,而還原者負責訓練。請注意,一個句子可以被分配給多個子語料庫。

ShuffleApproach

為了確保相同的模型接收到完全相同的輸入,需要對樣本進行一定程度的物化(假設輸入不是駐留在內存中)。研究提出了一種稱為Shuffle的無狀態方法,在每個epoch (MapReduce輪)中,不要求每個子模型接收與前一輪/秒相同的輸入樣本。注意,即使不是相同的訓練數據,每個子模型仍然接收整個輸入數據的相同部分。這樣做有兩個明顯的好處。首先,培訓過程是真正無狀態的,因此是可伸縮的。這是因為實驗不需要確保相同的訓練實例使用相同的縮減器,而這通常是使用基於內容的哈希技術實現的。其次,更重要的是,為相同的模型提供跨epoch的不同樣本具有正則化效果,並且比跨epoch看到相同的輸入時表現得更好。


Step 3:

合併階段:

在這個階段中,本實驗致力於找到一個單一的嵌入矩陣(有時也稱為一致嵌入矩陣),這個矩陣給出了d維單詞嵌入矩陣。這裡區分了兩種情況:(1)所有的n個子模型都有相同的詞彙表;(2)存在一個或多個給定矩陣中缺失的單詞(存在於至少一個子模型中)

對於第一種情況:將子模型與通用詞彙表合併。一種很簡單的方法是將得到的矩陣連接起來,以獲得最終的表示。然而,在存在大量子模型的情況下,合併矩陣的大小可能已經變得很大,因此不受歡迎。另一個簡單的替代方法是在連接的矩陣上使用主成分分析或或PCA,並使用PCA作為一種表示的原則組件的子集,並使用主成分的一個子集作為表示。

對於第二種情況:用部分詞彙表合併子模型。研究發展了GeneralizedProcrustes

Analysis (GPA) 方法來理詞彙缺失的問題。尋求共識表示的GPA方法可以總結如下:

(1)對組合表示進行初始化,例如通過隨機選擇其中一個表示或使用隨機值來初始化Y。

(2)將所有表示與Y對齊。

(3)計算Y '為對齊表示的均值。

(4)如果Y和Y '之間的誤差大於閾值,則設Y = Y ',返回步驟2。


主要試驗情況

實驗設置:

【ACM】大文本語料庫中詞嵌入的異部訓練

表1:基準數據統計(論文選擇基準數據來評估相似度、分類和類比任務)


數據集使用:

實驗中使用了兩個大型文本數據集,Wikipedia和Web。這兩個語料庫都是通過去除非文本元素、句子拆分和標記化來預處理的。

維基百科:維基百科的語料庫包含了4,227,933個句子,跨越2,313,580,449個標記。實驗使用Wikipedia語料庫進行所有的有效性和可伸縮性實驗。

Web:是指2007年從.co.網站上抓取的大量網頁的文本語料庫。數據集是286 GB未壓縮的。Web語料庫要大得多,包含1198、460、804個句子和47、297、217、342個標記。只可在可伸縮性實驗中使用Web語料庫,因為Web構建基線模型在計算上是不允許的。


模型構建:

實驗將Hogwild基線和子模型的維數固定為500。對於Hogwild和Shuffle方法,在訓練前將兩個數據集的詞彙量設置為300,000(按頻率過濾)。


【ACM】大文本語料庫中詞嵌入的異部訓練


表2:不同抽樣策略的評價結果。使用ALiR合併初始化與Pca和運行3個紀元。括號中的數字表示每個基準測試的詞彙表中沒有出現在最終合併模型中的單詞數。帶下劃線的值對應於每個基準的每採樣率的最佳結果。粗體表示每個基準測試的最佳結果。


實驗結果:


【ACM】大文本語料庫中詞嵌入的異部訓練


圖2:以10%的採樣率訓練Wikipedia和Web數據集的比例遞增所需的時間。相比之間合併時間太小了,選擇忽略。


詞彙稀疏和缺失的影響

為了更加精確的研究詞彙缺失對ALiR,Concat和Pca三種訓練方法的影響,實驗通過系統地從子模型中刪除基準詞來模擬更多OOV術語的影響。圖3顯示了從至少一個子模型的每個基準中刪除10%和50%的唯一單詞的效果。


【ACM】大文本語料庫中詞嵌入的異部訓練

從子模型中刪除10%基準測試


【ACM】大文本語料庫中詞嵌入的異部訓練

從子模型中刪除50%基準測試詞

圖3(上述兩圖): 從基準測試中刪除至少一個子模型的唯一單詞的k%後,使用ALiR,與Concat和Pca進行缺失詞重建的表現對比。


對照分析:在相同的基準測試中,當刪除10%的基準測試詞時,ALiR的表現與Concat和Pca的表現相當,而後者的表現則要差得多。當刪除50%的唯一單詞時,這種效果在所有基準測試中都更明顯。雖然ALiR的表現略有下降,但Concat和Pca的表現下降幅度很大(男性患者中,Concat和Pca分別為0.59和0.27、0.57和0.17)。這個結果表明,對於詞彙量非常大的集合,即使各個子模型中的詞彙量不一致,使用ALiR的並行異步訓練過程也可以找到良好的表示。


原文鏈接:https://doi.org/10.1145/3289600.3291011


Abstract

Word embeddings are a powerful approach for analyzing language and have been widely popular in numerous tasks in information retrieval and text mining. Training embeddings over huge corpora is computationally expensive because the input is typically sequentially processed and parameters are synchronously updated. Distributed architectures for asynchronous training that have been proposed either focus on scaling vocabulary sizes and dimensionality or suffer from expensive synchronization latencies. In this paper, we propose a scalable approach to train word embeddings by partitioning the input space instead in order to scale to massive text corpora while not sacrificing the performance of the embeddings. Our training procedure does not involve any parameter synchronization except a final sub-model merge phase that typically executes in a few minutes. Our distributed training scales seamlessly to large corpus sizes and we get comparable and sometimes even up to 45% performance improvement in a variety of NLP benchmarks using models trained by our distributed procedure which requires 1/10 of the time taken by the baseline approach. Finally we also show that we are robust to missing words in submodels and are able to effectively reconstruct word representations.



分享到:


相關文章: