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.李宏毅關(guān)于transformer模型的講解,對(duì)positional encoding(位置編碼)比較在意,思考加查找一些資料,特此記錄。
對(duì)transformer而言,最大的問題在于平行處理中無法體現(xiàn)數(shù)據(jù)的有序性,為了保持?jǐn)?shù)據(jù)的這種有序性,人為的設(shè)計(jì)一種序列關(guān)系增加在數(shù)據(jù)上,并進(jìn)入計(jì)算。
一種是硬編碼,即直接使用one-hot編碼值加到數(shù)據(jù)上
另一種是采用一種和三角函數(shù)相關(guān)的函數(shù)對(duì)位置進(jìn)行表示,在圖像上較為常見,因?yàn)檠芯糠较蚴菆D像,所有著重關(guān)注一下這種方法
計(jì)算方法如下
其中,PE為二維矩陣,大小跟輸入embedding的維度一樣,行表示詞語,列表示詞向量;pos 表示詞語在句子中的位置;dmodel表示詞向量的維度;i表示詞向量的位置。因此,上述公式表示在每個(gè)詞語的詞向量的偶數(shù)位置添加sin變量,奇數(shù)位置添加cos變量,以此來填滿整個(gè)PE矩陣,然后加到input embedding中去,這樣便完成位置編碼的引入了。
從圖像的角度理解,可以認(rèn)為pos代表圖像的行,i代表當(dāng)前行對(duì)應(yīng)的列,這樣就可以對(duì)圖像中的每一個(gè)像素點(diǎn)進(jìn)行編碼了。
具體實(shí)現(xiàn)的代碼參考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
總結(jié)
以上是生活随笔為你收集整理的Transformer中的位置编码(PE,position)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对Tensor结果使用opencv2中的
- 下一篇: 相机成像投影计算