Task 2: Word Vectors and Word Senses

1. 複習:word2vec的主要思想


  • 遍歷整個語料庫的每個單詞
  • 使用單詞向量預測周圍的單詞

更新向量,以便您可以很好地預測

Word2vec參數和計算


每個位置的預測相同
我們希望有一個模型,可以對上下文中出現的所有單詞(相當經常)給出合理的高概率估計

Word2vec通過在空間中放置相似的單詞來最大化目標函數


 

2. 優化:梯度下降


  • 我們有一個要最小化的成本函數J(θ)
  • 梯度下降是最小化J(θ)的算法
  • 想法:對於θ的當前值,計算J(θ)的梯度,然後朝負梯度的方向走一小步。 重複。

注意:我們的目標可能不會像這樣凸出

梯度下降


  • 更新公式(以矩陣表示法):

  • 更新公式(對於單個參數):

  • 算法:

 

while True:
    theta_grad = evaluate_gradient(J,corpus,theta)
    theta = theta - alpha * theta_grad

隨機梯度下降


  • 問題:J(θ)是語料庫中所有窗口的函數(可能是數十億!)
    • 因此∇θJ(θ)的計算非常昂貴
  • 您將等待很長時間才能進行單個更新!
  • 對於幾乎所有的神經網絡來說,這都是一個非常糟糕的主意!
  • 解決方案:隨機梯度下降(SGD)
  • 反覆採樣窗口,並在每個窗口之後進行更新
  • 算法:

 

while True:
    window = sample_window(corpus)
    theta_grad = evaluate_gradient(J,window,theta)
    theta = theta - alpha * theta_grad

單詞向量的隨機漸變!


  • 在每個這樣的窗口迭代獲取SGD的梯度
  • 但是在每個窗口中,我們最多隻有2m +1個字,
    所以∇θJt(θ)非常稀疏!

  • 我們可能只會更新實際出現的單詞向量!
  • 解決方案:您需要稀疏矩陣更新操作以僅更新完全嵌入矩陣U和V的某些行,或者您需要保留散列以保留詞向量

  • 如果您有數百萬個單詞向量並進行分佈式計算,那麼不必發送大量更新就很重要!

1b. Word2vec:更多詳細信息


爲什麼選擇兩個向量?更容易優化。 最後對兩者進行平均•每個單詞只用一個向量就能做到
兩種模型:
1.Skip-grams(SG)
預測給定中心的上下文(“外部”)單詞(與位置無關)

2.連續詞袋(CBOW)
從上下文詞袋中預測中心詞
我們介紹了:跳過圖模型

訓練效率更高:
1.負採樣
到目前爲止:專注於樸素的softmax(簡單但昂貴的訓練方法)

具有負採樣(HW2)的跳過語法模型


  • 歸一化因子在計算上過於昂貴。

  • 因此,在標準word2vec和HW2中,您可以執行負採樣的skip-gram模型
  • 主要思想:訓練一個真實對(中心詞和上下文窗口中的詞)與幾個噪聲對(中心詞與一個隨機詞配對)的二進制邏輯迴歸
  • 摘自論文:“單詞和短語的分佈式表示及其組成”(Mikolov等,2013)
  • 總體目標函數(它們最大化):

  • sigmoid函數(我們很快會成爲好朋友):

  • 因此,我們在第一對數中最大化了兩個單詞同時出現的概率

  • 表示法更類似於class和HW2:

  • 我們取k個否定樣本(使用單詞概率)
  • 最大化出現真實的外部單詞的可能性,
    最小化概率。 在中心詞周圍出現隨機詞
  • P(w)= U(w)3/4 / Z,
  • 將字母組合分佈U(w)提高到3/4冪(我們在入門代碼中提供了此功能)。
  • 強大的功能使單詞詞頻次降低

3.但是爲什麼不直接捕獲同現計數呢?


與同現矩陣X

  • 2個選項:Windows與完整文檔
  • 窗口:類似於word2vec,在每個單詞周圍使用窗口-捕獲語法(POS)和語義信息
  • Word文檔共現矩陣將給出導致“潛在語義分析”的一般主題(所有運動術語將具有相似的條目)

示例:基於窗口的共現矩陣


  • 窗口長度1(更常見的是5-10)
  • 對稱(與左或右上下文無關)
  • 示例語料庫:
    • I like deep learning.
    • I like NLP.
    • I enjoy flying.
counts I like enjoy deep learning NLP flying .
I 0 2 1 0 0 0 0 0
like 2 0 0 1 0 1 0 0
enjoy 1 0 0 0 0 0 1 0
deep 0 1 0 0 1 0 0 0
learning 0 0 0 1 0 0 0 1
NLP 0 1 0 0 0 0 0 1
flying 0 0 1 0 0 0 0 1
. 0 0 0 0 1 1 1 0

簡單共現向量的問題


  • 詞彙量增加
  • 尺寸很高:需要大量存儲
  • 後續分類模型存在稀疏性問題
    ->模型不那麼健壯

解決方案:低維向量


  • 想法:將“大多數”重要信息存儲在固定的少量維度中:密集的向量
  • 通常爲25–1000個維度,類似於word2vec。
  • 如何降低維度?

方法1:X(HW1)上的降維


共生矩陣X的奇異值分解將X分解爲UΣVT,其中U和V是正交的

爲了概括,僅保留k個奇異值。
X^是用最小二乘法表示的X的最佳秩k近似值。經典的線性代數結果。計算大型矩陣的成本很高。

Python中的簡單SVD詞向量


語料庫:
I like deep learning. I like NLP. I enjoy flying.

 

import numpy as np
la = np.linalg
words = ["I","like","enjoy","deep","learnig","NLP","flying","."]

X = np.array([[0,2,1,0,0,0,0,0],
              [2,0,0,1,0,1,0,0],
              [1,0,0,0,0,0,1,0],
              [0,1,0,0,1,0,0,0],
              [0,0,0,1,0,0,0,1],
              [0,1,0,0,0,0,0,1],
              [0,0,1,0,0,0,0,1],
              [0,0,0,0,1,1,1,0]])
U,s,Vh = la.svd(X, full_matrices = False)

打印對應於2個最大奇異值的U的前兩列

 

import matplotlib.pyplot as plt
plt.ylim(-0.8, 1)
plt.xlim(-0.8, 1)
for i in range(len(words)):
    plt.text(U[i,0],U[i,1],words[i])

對X的攻擊(在Rohde等人2005中多次使用)


  • 縮放單元格中的計數可以有很大幫助
  • 問題:功能詞(the,he,has)也太頻繁的
    ->語法影響太大。 一些修復:
    • min(X,t), with t ≈ 100
    • 忽略它們
  • 傾斜的窗戶可以計算出更多的單詞
  • 使用Pearson相關而不是計數,然後設置負值爲0

向量中出現有趣的句法模式


來自的COALS模型
一種基於詞法共現的語義相似度改進模型。 2005年

向量中出現有趣的語義模式


來自的COALS模型
基於詞法共現的語義相似度改進模型
羅德(Rohde)等人。 2005年

基於計數與直接預測


  1. LSA,HAL(隆德和伯吉斯),COALS,Hellinger-PCA(Rohdeet al,Lebret和Collobert)
  • 快速訓練
  • 有效利用統計數據
  • 主要用於捕獲單詞相似度
  • 不計其數的重要性
  1. Skip-gram/ CBOW(Mikolov等人)NNLM,HLBL,RNN(Bengio等; Collobert&Weston; Huang等; Mnih&Hinton)
  • 具有語料庫大小的音階
  • 統計使用率低
  • 在其他任務上產生更高的性能
  • 可以捕獲單詞相似度以外的複雜模式

矢量差異中的編碼含義


重要啓示:
同現概率的比率可以編碼含義成分

  x = solid x = gas x = water x = random
P(x!ice large small large small
P(x!steam) small large large small
P(x!ice)/P(x!steam) large small ~1 ~1
  x = solid x = gas x = water x = fashion
P(x!ice 1.9 x 10 -4 6.6 x 10-5 3.0 x 10 -3 1.7 x 10 -5
P(x!steam) 2.2 x 10-5 7.8 x 10-4 2.2 x 10-3 1.8 x 10-5
P(x!ice)/P(x!steam) 8.9 8.5 x 10-2 1.36 0.96

問:我們如何捕獲單詞向量空間中共現概率的比率作爲線性含義成分?
答:對數雙線性模型:

具有向量差異

融合兩全其美的GloVe


  • 快速訓練
  • 可擴展到大型語料庫
  • 即使具有較小的語料庫和較小的向量也表現良好

GloVe結果


如何評估詞向量?


  • 與自然語言處理中的一般評估有關:內部與外部
  • 內部:
    • 評估特定/中間子任務
    • 快速計算
    • 幫助瞭解該系統
    • 如果沒有建立與實際任務的相關性,則不清楚是否有幫助
  • 外在的:
    • 評估任務
    • 可以始終保證計算準確性
    • 不清楚子系統是否存在與其他子系統相互作用的問題
    • 如果完全替換一個子系統並進一步提高準確性,那將是一個勝利!

內在詞向量評估


  • 詞向量類比

  • 通過添加後的餘弦距離捕獲直觀的語義和句法類比問題來評估單詞向量
  • 從搜索中丟棄輸入的單詞!
  • 問題:如果信息在那裏但不是線性的,該怎麼辦?

Glove 可視化


Glove 可視化:公司-CEO


Glove 可視化:最高級


內在詞向量評估的詳細信息


: city-in-state
Chicago Illinois Houston Texas
Chicago Illinois Philadelphia Pennsylvania Chicago Illinois Phoenix Arizona
Chicago Illinois Dallas Texas
Chicago Illinois Jacksonville Florida Chicago Illinois Indianapolis Indiana Chicago Illinois Austin Texas
Chicago Illinois Detroit Michigan
Chicago Illinois Memphis Tennessee Chicago Illinois Boston Massachusetts
問題:不同城市的名稱可能相同

  • 詞向量類比:下面的句法和語義示例
    : gram4-superlative
    bad worst big biggest
    bad worst bright brightest bad worst cold coldest bad worst cool coolest bad worst dark darkest bad worst easy easiest bad worst fast fastest
    bad worst good best
    bad worst great greatest

類比評估和超參數


  • Glove詞向量評估

  • 好的尺寸是〜300
  • 非對稱上下文(僅左側單詞)效果不佳
  • 但這對於下游任務可能有所不同!
  • 每個中心詞周圍8的窗口大小適合手套矢量

詞嵌入的維數

[Zi Yin and Yuanyuan Shen, NeurIPS 2018]

 

使用矩陣攝動理論,揭示了詞嵌入維數選擇中的基本偏差-方差折衷

  • 更多訓練時間有幫助

  • 更多數據有幫助,維基百科比新聞文本更好!

另一個內在詞向量評估


最接近的詞“瑞典”(餘弦相似度)

相關評估


  • 詞向量距離及其與人類判斷的相關性

  • Glove論文中的一些想法也已顯示出可以改善skip-gram(SG)模型(例如,將兩個向量相加)

詞義和詞義歧義

  • 大多數單詞都有很多含義!

  • 特別常見的詞

  • 特別是已存在很久的單詞

  • 示例:pike

  • 一個矢量捕獲所有這些含義還是我們一團糟?
    pike

  • 尖銳的人員

  • 一種拉長的魚

  • 鐵路線或系統

  • 道路類型

  • 未來(降低收益)

  • 一種身體姿勢(例如在潛水中)

  • 用長矛殺死或刺穿

  • 走自己的路(一起走)

  • 用澳大利亞英語來說,派克是指退出某件事:我認爲他本可以爬上那座懸崖,但他卻戳了一下!

通過全局上下文和多種單詞原型改進單詞表示(Huang等,2012)


  • 想法:圍繞單詞圍繞單詞窗口,對每個單詞進行重新訓練,將其分配給多個不同的類bank1,bank2等

詞義的線性代數結構及其在多義性中的應用


  • 單詞的不同含義駐留在諸如word2vec之類的標準單詞嵌入中的線性疊加(加權和)中

  •  

     

    對於頻率f,其中

  • 令人驚訝的結果:

    • 由於稀疏編碼的想法,您實際上可以將它們分開詞義(假設它們相對普遍)

外在詞向量評估


  • 詞向量的外在評估:此類中的所有後續任務
  • 一個好的單詞向量應直接幫助的例子:命名實體識別:找到一個人,組織或位置


Reference: https://www.jianshu.com/p/64817a61a958

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