self-attention! A Structured Self-attentive Sentence Embedding

[1703.03130] A Structured Self-attentive Sentence Embedding?

arxiv.org

模型輸入

一個含有n個token的序列

w_i 表示序列中第i個token對應的word embedding

用句子 H∈R^{n?2u} 表示所有隱藏狀態h的集合

生成self-attention的簡單前饋神經網路

最後a∈ R^{1*n}

並且由於使用了softmax函數進行了歸一化,a的每一維度可以認為是對應位置單詞的attention

作者認為常見的向量表示只能表示句子中的某個特定component,那麼如何全面的把句子的大部分甚至所有component都表現出來呢,那麼一個很自然的想法就是把向量擴展成矩陣。所以我們不能只用單個attention,我們需要對每個component都提供一個attention,所以就要將a變成A

如果我們需要對句子的r個component進行建模,那麼只需要提供r個a,即一個r*2u的矩陣。為了得到這個矩陣,作者將參數 W_{s_2} 的形狀從 R^{1?2u} 調整成了 R^{r?2u},那麼a∈R^{1?n} 也就變成了 A∈R^{r?n}

最終句子表示也從向量

變成了

得到了矩陣級別的句子表示

Penalization Term

如果計算得到的attention句子A中有部分行的值相似的話,最終得到的句子表示矩陣中也會出現一些行的值是相似的,這樣就讓M變得冗餘了。所以在設計網路的損失函數時,需要考慮加入penalization term來讓模型得到的A的每一行的差別明顯。

於是在loss中加入

||?||F||·||F表示的矩陣的Frobenius範數,I是單位矩陣

損失函數為cost=交叉熵+ααP,其中αα是調節P的比重的係數


推薦閱讀:

從零開始實現邏輯回歸模型
Michael Nielsen對交叉熵的解釋(三)
受限制玻爾茲曼機(RBM)的能量函數及其梯度求解
深度學習框架內存不夠解決思路
Paper Reading | 讓機器像人類一樣學畫畫?GANs 「全家福」一覽

TAG:神經網路 | 深度學習DeepLearning | 機器學習 |