Attention is all you need

Abstract

Queue,Key,Valueは全て学習可能なパラメタで、全て同じサイズ。Attentionの前後で、大きさは変わらない。

QueueとKeyのCosine SimilarityをDot積で求めSoftmaxで正規化し重みを求め全てのValueを足し合わせる。 入力全体に対してQ,K,Vを求め、一度の計算で全て処理してしまう。 HeadsはConvolutionでのfilterのようなもので、異なる重みで、Q,K,Vを求める。 Attention後にはRedisualConnectionで入力が足し合わされWord, Time Embeddingが失われるのを防ぐ。 Decoderでは先ほどのプロセスに加えて、DecoderのQだけ求め、EncoderのK,Vに対して同じ処理を実行する。同じ重みを用いることで、wordの関連性を引き続き利用することができる。 いずれにしても、入力出力のサイズはwordの長さと全く同じになり、好きなだけheadを増やしたりqueryの数を変更することができる。

少ない計算量で、複雑さ、含まれる情報量、文脈の関連性を増やす。 並列実行が可能。Query,Key,ValueからOutputを出力する。

<img src="/attachment/65b8bc224817030b361c0abf" width=500>

<img src="/attachment/65b8bd9a4817030b361c16ea" width=300>

dkで割ることで、softmaxでのgradientの消失を防ぐ。Dotでmultiplicative attention, denseでadditive attentionを実現する。

<img src="/attachment/65b8bed74817030b361c25e6" width=300>

Multiheadでは、Concatして一つの行列としてまとめて計算してしまう。 <img src="/attachment/65b8bfb84817030b361c2ed2" width=300>

並列処理により失われた時間情報は、Time Embeddingによって埋め込まれる。 sin関数は相対的な位置情報を埋め込むのに適している。入力ベクトルの各値ごとに、異なる周波数のsin関数が足し合わせるため、embeddingのsetは一意に定まる。 複数回に分けたConvolutionは情報量を低下させる。関連性を可視化することもできる。

Note

Links

Swin Transformer

Abstract

Shifted Windows → Swin. Solve variation and high dimension of image problem, using hierarical transformer. non-over wrapping self-attention and cross-window connection. Linear complexity.