Ví dụ: đối với từ ở vị trí trong chuỗi đầu vào , với nhúng 4 chiều và , thao tác sẽ là
wpos∈[0,L−1]w=(w0,⋯,wL−1)ewdmodel=4e′w=ew+[sin(pos100000),cos(pos100000),sin(pos100002/4),cos(pos100002/4)]=ew+[sin(pos),cos(pos),sin(pos100),cos(pos100)]
trong đó công thức mã hóa vị trí như sau
với (do đó ) trong bài báo gốc.PE(pos,2i)=sin(pos100002i/dmodel),
PE(pos,2i+1)=cos(pos100002i/dmodel).
dmodel=512i∈[0,255]
Kỹ thuật này được sử dụng vì không có khái niệm về trật tự từ (từ 1, từ 2, ..) trong kiến trúc đề xuất. Tất cả các từ của chuỗi đầu vào được đưa vào mạng mà không có thứ tự hoặc vị trí đặc biệt (không giống như các kiến trúc RNN hoặc ConvNet thông thường), do đó, mô hình không biết các từ được sắp xếp như thế nào. Do đó, tín hiệu phụ thuộc vào vị trí được thêm vào mỗi từ nhúng để giúp mô hình kết hợp thứ tự các từ. Dựa trên các thí nghiệm, việc bổ sung này không chỉ tránh phá hủy thông tin nhúng mà còn thêm thông tin vị trí quan trọng. Trong trường hợp RNN, chúng tôi cung cấp các từ liên tục cho RNN, tức là từ thứ được cung cấp ở bước , giúp mô hình kết hợp thứ tự các từ.nn
Bài viết này của Jay Alammar giải thích bài báo với hình ảnh tuyệt vời. Thật không may, ví dụ của nó cho mã hóa vị trí là không chính xác tại thời điểm này (nó sử dụng cho nửa đầu của kích thước nhúng và cho nửa sau, thay vì sử dụng cho các chỉ số chẵn và cho các chỉ số lẻ).sincossincos