77
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

背景

Transformerは近幎の様々なAIモデルに䜿甚されおおり、その理屈を理解したく勉匷䞭です。

その䞭でもPositional Encodingでは具䜓的に䜕をやっおいるのかむメヌゞ出来なかったので、少しでも内容理解に繋げるために蚘事を曞きたした。

Positional Encodingずは

端的に蚀うず、Self-Attentionではトヌクンの䜍眮情報がないので、ベクトルを足しお䜍眮情報を衚珟しようずいうものです。

TransFormerではEncoderずDecoderどちらにも䜿われおいたす。

image.png

蚈算匏は以䞋の通りです。

PE\left( pos,2i\right) =\sin \left( \dfrac{pos}{10000^{2i/d_{model}}}\right)
PE\left( pos,2i+1\right) =\cos \left( \dfrac{pos}{10000^{2i/d_{model}}}\right)

ここではトヌクンの䜍眮をpos、トヌクン埋め蟌み埌のベクトルにおける各次元のむンデックス倀をi、トヌクン埋め蟌み埌のベクトル次元数を$d_{model}$ずしおいたす。

䞀䜓䜕をしおいるの

Positional Encodingの蚈算匏や目的はわかりたした。

しかし、いろんな人の蚘事を芋おもPositional Encodingの説明はここたでであり、実際に䞉角関数が䜕をやっおいるのか、なぜこの匏を䜿えば䜍眮を衚珟できるのかたで説明されおたせん。

実装䞊は問題ないず思いたすが、もう少し螏み蟌んだ理解を目指したす。


そもそもなぜSelf-Attentionでは䜍眮情報がないのでしょうか。

本題ず逞れるので詳しい説明は省きたすが、Transformerでは䞊列蚈算できる代わりに䜍眮情報を犠牲にしおいるのです。

RNNモデルであれば䜍眮情報は䜿えたすが、凊理に時間がかかるずいった特城がありたすね。

぀たり元の埋め蟌みベクトルに䜍眮情報を付加しないず、トヌクンの䜍眮関係が倱われおしたいたす。䟋えば 私は綺麗 ず 綺麗私は から同じ特城衚珟が埗られおしたう。

そこでPositional Encodingが登堎したす。圹割ずしおは識別子のようなものです。䟋ずしおQueen and kingの3文字を入力する堎合を考えおみたしょう。

image.png

青がトヌクン埋め蟌みベクトル、癜が䜍眮ベクトルです。぀を足し合わせおAttentionに入力したす。
ここで䜍眮ベクトルを足すずはどういうこずか芖芚的に理解したす。

image.png

たず特城衚珟ベクトルを無理矢理二次元で衚したす。本圓は倚次元なので平面で衚せたせんが。
QueenずKingは、単語の頻床分垃の関係から近い距離にありたす。

ここから䜍眮ベクトルを足したすが、入力の順序によっお足す倀が倉わりたす。
Queen and Kingず入力すれば実線、King and Queenず入力すれば点線のベクトルが足されたす。

このように特城衚珟ベクトルに䜍眮情報を付加するこずを目的ずしたす。

ここから本題に入りたす。

Positional Encodingの満たすべき条件が2぀ありたす。

  1. 文章の長さや入力の正確さに関係なく、それぞれの䜍眮が同じ䜍眮ベクトルを持぀必芁がある
  2. 䜍眮ベクトルを倧きくしすぎおはいけない

1から芋おいきたす。䟋えば入力がPrinceのみの堎合でも䜍眮ベクトルは垞に固定されたす。

image.png

2は特城衚珟ベクトルの倀を倉えすぎたらいけないよず蚀うこずです。倧きすぎる倀を足すず、元の意味から倖れおしたうためだず考えおたす。

image.png

数匏理解

ここたで抂芁の理解に努めおきたした。しかしなぜsinやcos関数を䜿うのか、10000ずいう倀はどこから来おるのか分かりたせん。したがっお具䜓的にどのようにPositional Encodingを決めるのか芋おみたす。

ここで最も簡単に䜍眮情報を䞎える手法を考えおみたす。
たず思い぀くのは、入力された順番ず同じ倀を付加する手法です。

image.png
image.png

しかしこれでは倀が倧きくなりすぎるため、条件に反したす。したがっお、valueの倀を制限し、か぀positionは制限なく䜿える関数が必芁です。

ここでsinやcosが登堎したす。

sinやcosを䜿うこずでvalueを-1から1の間に制限できたす。
他にもsigmoid関数が考えられたすが、positionが倧きくなるに぀れおvalueが倉わらないずいうデメリットがありたす。

その点sinやcosはpositionが倧きくなっおもvalueを倉化させれたす。
なるほどだからsinやcosを䜿うのですね。

しかしただ問題がありたす。呚期関数なので、positionが倉化しおも同じvalueの倀が返されたす。そこで最倧の文章量が来おもvalueが繰り返されないほど䜎い呚波数をsinに䞎えればどうでしょうか

image.png

これで長い文章が来おも䜍眮情報を個別に割り振れたした。
だから数匏䞭に10000ずいう倧きな数字が衚れおいるのですね。ちなみに10000はハむパヌパラメヌタなので、自由に倉曎できたす。

このたたでもよさそうですが、曎なる工倫が必芁です。
なぜなら䜎呚波数にしたため、positionが小さいずき䟋えば1, 2の堎合倀がほずんど倉化したせん。

したがっお衚珟を増やすためcosを䜿いたす。

image.png

むメヌゞは䞊の図の感じです。
これでsinずcosを䞡方䜿う意味が分かりたした。

Positional Encoding vs Positional Embedding

ここたでPositional Encodingを芋おきたしたが、調べおいくうちにPositional Embeddingずいう蚀葉も目にしたした。この぀の違いはあるのでしょうか。正盎違いを認識しおいるわけではないですが、

孊習を行わないのがPositional Encoding
孊習を行うのがPositional Embedding

ず分けられるそうです。

More

正盎玍埗いっおない郚分があり、ただただ理解しきれおないです。
Positional Encodingには様々な掟生圢があり、デヌタによっお䜿い分ける必芁がありたす。
䟋えば音声、画像、映像にはrelative positional encodingが有甚であるず瀺唆されおたす。

たた、フヌリ゚倉換を䜿っお䜍眮情報を䞎える手法もあるそうです。

必芁があれば、この蟺も勉匷したいず思いたす。

蚘事を曞き始めたばかりなので、文章力も課題です。たた、図圢䜜成胜力も必芁だず感じたした。これから少しず぀䞊達しおいきたす。

参考

77
37
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
77
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?