Attention Is All You Need の 『Positional Encoding』の作用の仕組みを探る（まず、見つけた！論文1個。）

#目的

Positional Encodingについて、以下のような値を加算することについては、
**なるほどな**、というような感想を持つと思う。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342207/ff2c65fb-6988-be74-f886-a5795a0db1dc.png)

このような値を足しこんで、

* 害がないのか
* 仕込んだ値を、正確に、抽出する手段があるのか、そのとも、コミコミで処理してしまうのか？
* この機能が、効果的に作用する場面が、わかりやすく説明されている記事とかYoutubeがあるか？

などについて、知りたい。

#『Positional Encoding』の作用
（まだ、確認できていないので、後述）。


#論文内の説明

>Since our model contains no recurrence and no convolution, in order for the model to make use of the order of the sequence, we must inject some information about the relative or absolute position of the
5
Table1: Maximumpathlengths,per-layercomplexityandminimumnumberofsequentialoperations for different layer types. n is the sequence length, d is the representation dimension, k is the kernel size of convolutions and r the size of the neighborhood in restricted self-attention.
>
>tokens in the sequence. To this end, we add "positional encodings" to the input embeddings at the bottoms of the encoder and decoder stacks. The positional encodings have the same dimension dmodel as the embeddings, so that the two can be summed. There are many choices of positional encodings, learned and ﬁxed [9]. In this work, we use sine and cosine functions of different frequencies:
>
>where pos is the position and i is the dimension. That is, each dimension of the positional encoding corresponds to a sinusoid. The wavelengths form a geometric progression from 2π to 10000·2π. We chose this function because we hypothesized it would allow the model to easily learn to attend by relative positions, since for any ﬁxed offset k, PEpos+k can be represented as a linear function of PEpos. We also experimented with using learned positional embeddings [9] instead, and found that the two versions produced nearly identical results (see Table 3 row (E)). We chose the sinusoidal version because it may allow the model to extrapolate to sequence lengths longer than the ones encountered during training.



↓Google翻訳
>モデルには漸化式と畳み込みが含まれていないため、モデルがシーケンスの順序を利用するには、の相対位置または絶対位置に関する情報を挿入する必要があります。
5
表1：さまざまなレイヤータイプの最大パス長、レイヤーごとの複雑さ、およびシーケンシャル操作の最小数。 nはシーケンスの長さ、dは表現の次元、kは畳み込みのカーネルサイズ、rは制限された自己注意における近傍のサイズです。
>
>シーケンス内のトークン。この目的のために、エンコーダースタックとデコーダースタックの下部にある入力埋め込みに「位置エンコード」を追加します。位置エンコーディングは、埋め込みと同じ次元のdmodelを持っているため、2つを合計できます。位置エンコーディングには多くの選択肢があり、学習および修正されています[9]。この作業では、異なる周波数の正弦関数と余弦関数を使用します。
>
>ここで、posは位置、iは寸法です。つまり、位置エンコーディングの各次元は正弦波に対応します。波長は2πから10000・2πへの等比数列を形成します。この関数を選択したのは、モデルが相対位置による参加を簡単に学習できると仮定したためです。固定オフセットkの場合、PEpos + kはPEposの線形関数として表すことができるためです。また、学習した位置埋め込み[9]を代わりに使用して実験したところ、2つのバージョンでほぼ同じ結果が得られることがわかりました（表3の行（E）を参照）。モデルがトレーニング中に遭遇したものよりも長いシーケンス長に外挿できる可能性があるため、正弦波バージョンを選択しました。

#まず、見つけた！論文1個。
## What Do Position Embeddings Learn? An Empirical Study of Pre-Trained Language Model Positional Encoding
https://arxiv.org/abs/2010.04903

What Do Position Embeddings Learn? An Empirical Study of Pre-Trained Language Model Positional Encoding
Yu-An Wang, Yun-Nung Chen

##この論文の結論は

>This paper investigates the implicit meaning of pretrained Transformer position embeddings. Transformer encoders learn the local position information that can only be effective in masked language modeling. On the other hand, the Transformer decoders for autoregressive language modeling actually learn about absolute positions. The empirical experiments on the pre-trained position embeddings validate our hypothesis. We also show that different NLP tasks with different model architectures and different training objectives may utilize the position information in different ways. As a result, it is believed that this study will benefit future work about choosing suitable positional encoding functions or designing other modeling methods for position information in the target NLP tasks based on their properties.

↓Google翻訳
>このホワイトペーパーでは、事前にトレーニングされたTransformerの位置埋め込みの暗黙的な意味を調査します。 Transformerエンコーダーは、マスクされた言語モデリングでのみ有効なローカル位置情報を学習します。 一方、自己回帰言語モデリング用のTransformerデコーダーは、実際には絶対位置について学習します。 事前にトレーニングされた位置の埋め込みに関する経験的実験は、私たちの仮説を検証します。 また、さまざまなモデルアーキテクチャとさまざまなトレーニング目的を持つさまざまなNLPタスクが、さまざまな方法で位置情報を利用する可能性があることも示します。 結果として、この研究は、適切な位置エンコーディング関数を選択すること、またはそれらのプロパティに基づいてターゲットNLPタスクの位置情報のための他のモデリング方法を設計することに関する将来の作業に役立つと考えられます。 

##結論のポイントは

|ポイントは？|
|:---|
|Transformer **エンコーダー**は、マスクされた言語モデリングでのみ**有効なローカル位置情報**を学習します。|
|一方、自己回帰言語モデリング用のTransformer **デコーダー**は、実際には**絶対位置**について学習します。|



#余興
普通の画像認識において、画像を足しこんで、大丈夫かをResNet50のimagenetの学習済モデルで確認した。
確認した画像は、以下で、pandaとbananaを足して、panda-bananaとした。
(こらは、Positional Encoding　の足しこみではなく、画像に対して画像を足しこんでいる。
⇒足しこんでも、元の値が、バラバラに元の意味で作用するかの確認の意図。）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342207/6d7fba3f-f6e2-364d-70b6-4680de9bdcb0.jpeg" width=400>


**余談を持たずに実行した結果は、以下のとおり。**

```
Predicted: [
('n03188531', 'diaper', 0.06685701),
 ('n04209133', 'shower_cap', 0.06336665),
 ('n01748264', 'Indian_cobra', 0.053833533),
 ('n03958227', 'plastic_bag', 0.0477978),
 ('n07880968', 'burrito', 0.0431565),
 ('n04033995', 'quilt', 0.03513578),
 ('n07718747', 'artichoke', 0.02602887),
 ('n04235860', 'sleeping_bag', 0.025143128),
('n07860988', 'dough', 0.024247095),
('n01667778', 'terrapin', 0.022566179),
 ('n01664065', 'loggerhead', 0.021968575),
 ('n07714571', 'head_cabbage', 0.021425359)]
```

0点でした。



#まとめ
特にありません。
自然言語処理（NLP）の分野では、わかりやすく、説明されている処理なのかもしれないので、別途、確認します。