Attention Word Embedding 之二

  • 2020 年 12 月 25 日
  • AI

還是關於word2vec的attention改進,前面介紹了很多背景信息以及cbow的介紹就不翻譯了,直接看核心的部分

將cbow的簡單平均預測的公式修改為:

去掉ai(wi)的部分,即使原始的cbow,其中ai(wi)的公式就是標準的attention score的softmax的計算公式:

這篇文章的最核心的部分就是上述公式的理解,文中提到了:

當所有的K和s都固定在零,這個模型就還原成了常規的cbow了,s表示偏置倒是不難理解,問題是這個k是什麼,和word的embedding向量w有什麼關係,文中有提到

it simply requires retrieving one value from the lookup matrix K for each word and one value from the bias s for each word in the window.

它只需要從查找矩陣K中為每個單詞檢索一個值,並從偏差s中為窗口中的每個單詞檢索一個值以及:

這裡我們就可以知道K是啥了,為了便於理解,假設詞彙表中的詞一共就13個,窗口為6,即b為2,那麼K就是一個 10X4的注意力係數矩陣,大概長這樣:

所以

這裡的數據是隨便瞎填的,所以前向傳播的過程就是:

假設我們此時的中心詞為word1,然後窗口為2,則取其上下文分別4個單詞的embedding得到word1的上下文的4個單詞的embeding分別為v1、v2、v3、v4,然後去K里查詢word1得到了4個注意力係數a1、a2、a3、a4,然後a1*v1+a2*v2+a3*v3+a4*v4代替了原來的 (v1+v2+v3+v4)/4 的cbow的簡單平均的做法,其它部分(樣本準備啊,訓練啥的)和cbow都一樣。可以看到,這種attention的機制和:

馬東什麼:Attention Word Embedding 之一zhuanlan.zhihu.com圖標

上一篇提到的完全是兩種思路,我們根據文中的說法,在進行attention的計算的時候,完全沒有使用到中心詞word1的embedding:

可以看到,這裡壓根沒有包含任何與中心詞有關的變量表示,純粹是上下文之間的一些計算,公式裏面壓根就沒有中心詞的embedding表示,所以k的值不可能是中心詞的embedding和上下文詞的embedding的計算結果。所以就是直接初始化:

這個K矩陣和另一個s矩陣。。。然後直接就這麼簡單直接地加權求和了。。。。k和s都是可訓練的參數。。。。這個和之前nlp中提到的attention機制感覺就不是一個東西。。。沒有所謂的q、v、k存在啊。。