Наприклад, для слова у позиції у вхідній послідовності , з вбудованим 4-мірним , а , операцією буде
шp o s ∈ [ 0 , L - 1 ]w = (ш0, ⋯ ,шL - 1)ешгм о де л= 4е'ш=еш+ [ s i n (п о с100000) ,cos (п о с100000) ,sin (п о с100002 / 4) ,cos (п о с100002 / 4) ]=еш+ [ s i n ( p o s ) , c o s ( p o s ) , s i n (п о с100) ,cos (п о с100) ]
де формула позиційного кодування наступна
з (таким чином, ) в оригінальному документі.PE ( p o s , 2 i ) = s i n (п о с100002 я /гм о де л) ,
PE ( p o s , 2 i + 1 ) = c o s (п о с100002 я /гм о де л) .
гм о де л= 512i ∈ [ 0 , 255 ]
Цей прийом використовується тому, що в запропонованій архітектурі немає поняття про порядок слів (1-е слово, 2-е слово, ..). Усі слова вхідної послідовності подаються в мережу без особливого порядку або положення (на відміну від звичайних архітектур RNN або ConvNet), таким чином модель не має уявлення про те, як впорядковані слова. Отже, сигнал, який залежить від позиції, додається до кожного вбудовування слів, щоб допомогти моделі включити порядок слів. На основі експериментів, це доповнення не тільки уникає руйнування вбудованої інформації, але й додає важливу інформацію про положення. У випадку з RNN ми подаємо слова послідовно RNN, тобто -те слово подається на етапі , що допомагає моделі включити порядок слів.нн
Ця стаття Джея Аламмара пояснює статтю чудовою візуалізацією. На жаль, його приклад позиційного кодування на даний момент є некоректним (він використовує для першої половини вбудовування розмірів і для другої половини, замість того, щоб використовувати для парних індексів і для непарних індексів).с я нc o sс я нc o s