文章目錄
- 相對位置編碼
- 經典式
- XLNET式
- T5式
- DeBERTa式
相對位置編碼
上一節我們介紹了絕對位置編碼,這一節我們來看相對位置編碼,也就是用相對位置信息來表示,之前每一個token的位置式通過一個絕對的位置向量來表示的,現在我們在計算i與j的注意力分數的時候,采用i-j的函數來表示位置向量,這樣的話,其外推性相對絕對位置來說更好,并且目前已經證明相對位置編碼相對絕對位置編碼效果更好。
經典式
我們首先考慮一般的帶絕對位置編碼的Attention:
現在位置向量就是和每一個token所處的位置有關系,現在我們在計算注意力分數的時候,將q和k帶進去得到:
為了引入相對位置信息,Google把第一項位置去掉,第二項 p j W k p_jW_k pj?Wk?改為二元位置向量 R i , j K R_{i,j}^K Ri,jK?,變成:
這樣的話,注意力分數就會和相對位置有關系了,并且通常來說會進行截斷,以適應不同的距離:
這樣依賴,只需要有限個位置編碼,就可以表達出任意長度的相對位置,這里的 p k p_k pk?可以選擇可訓練的或者式三角函數式的。這里補充說明以下,就相當于對于未知i來說,如果j超過某個長度之后,二者的插值過大,就進行截斷,也就是將超過閾值的很遠的都一視同仁了。
XLNET式
首先對計算注意力分數的公式完全展開:
直接將 p j p_j pj?替換為 R i ? j R_{i-j} Ri?j?,對于 p i p_i pi?,直接替換為可訓練的向量。
T5式
對于上面這個式子,我們可以將其理解為4項,分別是輸入輸入,輸入位置,位置輸入,位置位置。如果我們認為位置和輸入是解耦的,那么中間兩項就可以去掉,最后一項就可以看作一個偏置,變為:
不同于常規的位置編碼的截斷的方式,T5采用一種分桶的做法:
但是這個也會帶來一個問題,就是外推性。
DeBERTa式
去掉最后只有位置編碼的那一項,然后和普通的一樣進行裁剪。