self-attention! A Structured Self-attentive Sentence Embedding
模型輸入
一個含有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 | 機器學習 |