Transformer中的位置编码(PE,position)
參考鏈接
[1]https://blog.csdn.net/qq_34771726/article/details/102918440?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=40f9420b-8d9a-4faa-a5f3-41e4befda63d&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
[2]https://zhuanlan.zhihu.com/p/266311690
昨天看了一下Prof.李宏毅關于transformer模型的講解,對positional encoding(位置編碼)比較在意,思考加查找一些資料,特此記錄。
對transformer而言,最大的問題在于平行處理中無法體現數據的有序性,為了保持數據的這種有序性,人為的設計一種序列關系增加在數據上,并進入計算。
一種是硬編碼,即直接使用one-hot編碼值加到數據上
另一種是采用一種和三角函數相關的函數對位置進行表示,在圖像上較為常見,因為研究方向是圖像,所有著重關注一下這種方法
計算方法如下
其中,PE為二維矩陣,大小跟輸入embedding的維度一樣,行表示詞語,列表示詞向量;pos 表示詞語在句子中的位置;dmodel表示詞向量的維度;i表示詞向量的位置。因此,上述公式表示在每個詞語的詞向量的偶數位置添加sin變量,奇數位置添加cos變量,以此來填滿整個PE矩陣,然后加到input embedding中去,這樣便完成位置編碼的引入了。
從圖像的角度理解,可以認為pos代表圖像的行,i代表當前行對應的列,這樣就可以對圖像中的每一個像素點進行編碼了。
具體實現的代碼參考ref[1]https://blog.csdn.net/qq_34771726/article/details/102918440?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=40f9420b-8d9a-4faa-a5f3-41e4befda63d&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
總結
以上是生活随笔為你收集整理的Transformer中的位置编码(PE,position)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对Tensor结果使用opencv2中的
- 下一篇: 相机成像投影计算