超细粒度分析XLNet中神奇的Attention Mask
?PaperWeekly 原創 ·?作者|海晨威
學校|同濟大學碩士生
研究方向|自然語言處理
BERT 后時代,XLNet 在 20 個任務上超越 BERT,引起不小的關注。最重要的改進是 XLNet ?實現了不在輸入中加 [Mask] 標志,同樣可以利用上下文信息,解決了 BERT 預訓練和微調不一致的問題。
1. XLNet 如何實現在不加 [Mask] 情況下利用上下文信息呢?
XLNet 通過 Permutation Language Modeling(PLM)重排輸入文本,使得當前詞的下文也有可能出現在當前詞的「上文」中,而實際的操作不是通過改變文本輸入順序來實現,而是依靠關鍵的 Attention Mask 機制來完成的。
上圖就是文中 Attention Mask 的機制,只看圖并不是那么好理解,這里引用張俊林老師:XLNet:運行機制及和 Bert 的異同比較 [1] 文章中非常關鍵的一句話:
在Transformer內部,通過 Attention 掩碼,從 T 的輸入單詞里面,也就是 Ti 的上文和下文單詞中,隨機選擇 i-1 個,放到 Ti 的上文位置中,把其它單詞的輸入通過 Attention 掩碼隱藏掉,于是就能夠達成我們期望的目標(當然這個所謂放到Ti的上文位置,只是一種形象的說法,其實在內部,就是通過 Attention Mask,把其它沒有被選到的單詞 Mask 掉,不讓它們在預測單詞 Ti 的時候發生作用,如此而已。看著就類似于把這些被選中的單詞放到了上文 Context_before 的位置了)
以圖中的排列序列:3->2->4->1 為例,通過 Attention Mask,在 self-attention 的加權平均計算中,假設要計算 attention 之后第 2 個詞對應的向量 :
根據圖中 Content stream 中的 mask,,其中 表示第 2 個詞對應的向量,表示第 2 行第 2 列紅點位置對應的 attention score,其他同理。這樣在 中就看到了它的下文 ,就像是把 放到了它的上文位置一樣,但實際順序并沒有改變。
采樣序列的全排列,目的就是為了生成這個 Attention Mask,實際的文本輸入并不受任何的影響。
那這個 Attention Mask 是如何生成的呢?
還是以排列 3->2->4->1 為例,去生成 Content stream 中的 mask,1 前面有 3,2,4,再加上自己,所以上圖中第一行都為紅點;2 前面只有 3,再加上自己,所以第二行的二三列都為紅點,依次類推,就可以得到這個排列對應的? Attention Mask。
注:紅點位值為 0,代表這個位有用,白點位值為 -inf,代表這個位被 mask 掉。
2. 為什么不直接在attention掩碼矩陣中只把當前的單詞掩蓋住來獲取上下文的信息呢?直接mask住左上到右下的對角線構建雙向語言模型不行嗎?
XLNet 實際上仍然遵循語言模型的預測模式(AutoRegressive Language Modeling),即從左往右依次預測,如對于排列序列:3->2->4->1,預測 2 時用到了 3 信息,預測 4 時用到了 3、2 信息.……因此,它本質還是需要一個上三角/下三角 mask 矩陣,在第一幅圖的 content stream 矩陣中,把第 4 行的左邊兩個紅點移到第 4 列中去,就變成了一個三角矩陣了,和 Transformer decoder 中的 mask 矩陣是一樣的。
那為什么要這樣的三角矩陣呢?直接 mask 住左上到右下的對角線可以嘛?
答案是不行,mask 掉對角線在預測時可以不看到當前詞,但是會提前看到后面的詞,這樣在預測后面詞的時候就相當于提前發生了泄露。
另外,要提及的一點是,XLNet 的從左到右和一般語言模型(如 GPT)的從左到右稍微有一點區別,GPT 的輸入和輸出是錯位一個時間步的,即讀入 1,2,3,然后在 3 的位置預測 4;而 XLNet 的輸入和輸出時間步數是相同的(這一點類似于 BERT),輸入 1,2,3,4 并在 4 的位置預測 4。當然,XLNet 不會讀取第 4 個時間步的單詞(否則有信息泄露),僅僅利用位置 4 的 position embedding,告訴模型現在想要預測第 4 個位置,所以最終預測是用的 query stream,不含當前時間步文本信息 [2]。
3. 雖然不需要改變輸入文本的順序,但 XLNet 通過 PLM 采樣輸入文本的不同排列去學習,這樣不會打亂或者丟失詞匯的時序信息嘛?
不會,因為 BERT/XLNet 底層的特征提取器都是 Transformer,而不是時序敏感的 RNN/LSTM。
在 BERT/XLNet 中,時序信息是通過 Position Embedding 獲取的,每個詞最后的 embedding 都是已經疊加了 Position Embedding 的,采樣不同的排列,影響的是每個詞能看到的「上文」,但這個「上文」的 Position Embedding 是由它在原始輸入文本中的位置決定的,而不是排列之后的位置。
比如,兩種排列 3->2->4->1 和 2->3->4->1 對于預測 4 來說是沒有差別的,因為 4 看到的上文都是 2 和 3,它們各自最后的 embedding 不會因為采樣排列順序不同而變化。
XLNet 的實現,確實很驚艷,希望這篇文章能幫你掌握 XLNet 的關鍵實現機制——Attention Mask。
參考文獻
[1] https://zhuanlan.zhihu.com/p/70257427
[2] https://www.zhihu.com/question/330307904/answer/721986216
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的超细粒度分析XLNet中神奇的Attention Mask的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从动力学角度看优化算法:为什么学习率不宜
- 下一篇: C++一学就废?试试这个项目包