入門自然語言處理必看:圖解詞向量

AIBigbull2050發表於2019-08-28
入門自然語言處理必看:圖解詞向量

詞嵌入(embedding)是機器學習中最驚人的創造, 如果你有輸入法打字預測的經歷,那麼你很有可能是詞嵌入(自然語言處理的核心模型)技術的受益者。

在過去的幾十年中,基於神經網路模型的詞嵌入技術發展迅猛。尤其是最近,包括使用BERT和GPT2等最先進的模型進行語義化詞嵌入。

Word2vec是一種有效建立詞嵌入的方法,於2013年提出。除了作為詞嵌入的方法之外,它的一些概念已經被證明可以有效地應用在推薦引擎和理解時序資料上。

在本文中,將討論詞嵌入的概念,以及使用word2vec生成詞嵌入的機制。從一個例子開始,熟悉使用向量來表示事物,你是否知道你的個性可以僅被五個數字的列表(向量)表示?

詞嵌入表示你的性格

如何用0到100的範圍來表示你是多麼內向/外向(其中0是最內向的,100是最外向的)? 你有沒有做過像MBTI那樣的人格測試,或者五大人格特質測試? 如果你還沒有,這些測試會問你一系列的問題,然後在很多維度給你打分,內向/外向就是其中之一。

入門自然語言處理必看:圖解詞向量

五大人格特質測試測試結果示例。它可以真正告訴你很多關於你自己的事情,並且在學術、人格和職業成功方面都具有預測能力。

假設我的內外向得分為38/100。 可以用這種方式繪圖表示:

入門自然語言處理必看:圖解詞向量

把範圍收縮到-1到1:

入門自然語言處理必看:圖解詞向量

當你只知道這一條資訊的時候,你覺得你有多瞭解這個人?人性很複雜,需要新增另一測試的得分作為新維度。

入門自然語言處理必看:圖解詞向量

可以將兩個維度表示為圖形上的一個點,或者作為從原點到該點的向量。

現在可以說這個向量代表了我的一部分人格。當你想要將另外兩個人與我進行比較時,這種表示法就有用了。假設我突然被車撞掛了,需要找一個性格相似的人替換我,那在下圖中,兩個人中哪一個更像我?

入門自然語言處理必看:圖解詞向量

處理向量時,計算相似度得分的常用方法是使用餘弦相似度:

入門自然語言處理必看:圖解詞向量

很明顯,1號替身在性格上與我更相似。指向相同方向的向量(長度也起作用)具有更高的餘弦相似度。

兩個維度還不足以捕獲有關不同人群的足夠資訊。心理學已經研究出了五個主要人格特徵(以及大量的子特徵),所以使用所有五個維度進行比較:

入門自然語言處理必看:圖解詞向量

使用五個維度的問題是不能在二維平面繪製整齊小箭頭了。在機器學習中,經常需要在更高維度的空間中思考問題。 但是餘弦相似度的計算仍然有效,仍適用於任意維度:

入門自然語言處理必看:圖解詞向量

餘弦相似度適用於任意維度的資料,現在的得分比上次的得分要更合理,因為是根據被比較事物的更高維度算出的。

在本節的最後,總結兩個中心思想:

  1. 可以將人和事物表示為代數向量(這樣才能使用機器進行!)。
  2. 可以很容易地計算出向量之間的相互關係,是否相似。
入門自然語言處理必看:圖解詞向量

詞嵌入

透過上文的理解,繼續看看訓練好的詞向量(也被稱為詞嵌入),並接著探索它們的一些有趣屬性。

這是一個單詞”king”的詞嵌入(在維基百科上訓練的GloVe向量):

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

這是一個包含50個數字的列表。透過觀察數值看不出什麼,但是稍微給它視覺化,就可以和其它詞向量作比較。把上面所有這些數字放在一行:

入門自然語言處理必看:圖解詞向量

根據它們的值對單元格進行顏色編碼(如果它們接近2則為紅色,接近0則為白色,接近-2則為藍色),得到如下圖片:

入門自然語言處理必看:圖解詞向量

忽略數字僅檢視單元格顏色。現在將”king”與其它單詞進行比較:

入門自然語言處理必看:圖解詞向量

上圖可以看出:”Man”和”Woman”彼此之間要更加相似,相比於單詞”king”來說。 這暗示著向量圖示很好的展現了這些單詞的資訊/含義/關聯。

這是另一個示例列表:

入門自然語言處理必看:圖解詞向量

總結:

  1. 所有這些不同的單詞都有一條直的紅色列,說明它們在這個維度上是相似的(雖然不知道每個維度具體是什麼含義)
  2. 可以看到”woman”和”girl”在很多維度是相似的,”man”和”boy”也是一樣
  3. “boy”和”girl”也有彼此相似的地方,但這些地方卻與”woman”或”man”不同。這些維度是否可以總結出一個模糊的”youth”概念?
  4. 除了最後一個單詞,所有單詞都是代表人。 透過新增了一個”water”物件來顯示類別之間的差異。你可以看到藍色列一直向下並在 “water”的詞嵌入之前停下了。
  5. “king”和”queen”彼此之間相似,但它們與其它單詞都不太相似。這些不相似的維度是否可以總結出一個模糊的”royalty”概念?

類比

展現詞嵌入奇妙屬性的著名例子是類比。透過新增、減去詞嵌入得到一些有趣的結果。一個經典例子是公式:”king”-“man”+”woman”:

入門自然語言處理必看:圖解詞向量

在python中使用Gensim庫,可以新增和減去詞向量,它會找到與結果向量最相似的單詞。該影像顯示了最相似的單詞列表,輸出其與每個單詞餘弦相似性。

同樣進行視覺化:

入門自然語言處理必看:圖解詞向量

雖然”king-man + woman”生成的向量並不完全等同於”queen”,但是”queen”是在整個400,000個字詞嵌入中最接近它的單詞。

由此已經看過訓練好的詞嵌入向量了,下文會詳細介紹訓練過程。 在開始使用word2vec之前,需要看一下詞嵌入的上級概念:神經語言模型。

語言模型

自然語言處理最典型的應用,應該就是智慧手機輸入法中對下一單詞預測功能。

入門自然語言處理必看:圖解詞向量

單詞預測可以透過語言模型來實現,語言模型會從單詞列表中(比如說兩個詞)去嘗試預測可能緊隨其後的單詞。

在上面這個手機截圖中,可以認為該模型接收到兩個綠色單詞(thou shalt)並推薦了一組單詞(“not” 就是其中最有可能被選用的一個):

入門自然語言處理必看:圖解詞向量

可以把這個模型想象為如下所示的黑盒:

入門自然語言處理必看:圖解詞向量

但事實上,該模型不會只輸出一個單詞。實際上,所有它知道的單詞(模型的詞庫,可能有幾千到幾百萬個單詞)按可能性打分,輸入法程式會選出其中分數最高的推薦給使用者。

入門自然語言處理必看:圖解詞向量

自然語言模型的輸出就是模型所知單詞的機率評分,通常把機率按百分比表示,實際使用中,40%這樣的分數在輸出向量組是表示為0.4

自然語言模型(請參考Bengio 2003)在完成訓練後,會按下圖所示的三個步驟完成預測:

入門自然語言處理必看:圖解詞向量

第一步與本文主題最相關,因為討論的就是Embedding。模型在經過訓練之後會生成一個對映單詞表所有單詞的詞向量矩陣。在進行預測的時候,輸入法預測演算法就是在這個對映矩陣中查詢輸入的單詞的詞向量,然後計算出預測值:

入門自然語言處理必看:圖解詞向量

下文將重點放到模型訓練上,來學習一下模型如何構建這個對映矩陣詞向量,歡迎關注。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655248/,如需轉載,請註明出處,否則將追究法律責任。

相關文章