study:start
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| study:start [2020/09/11 10:39] – [用語] yuuho | study:start [2021/03/19 01:22] (現在) – [Transformer] yuuho | ||
|---|---|---|---|
| 行 28: | 行 28: | ||
| {{: | {{: | ||
| {{: | {{: | ||
| + | |||
| + | ==== Transformer ==== | ||
| + | |||
| + | === 章分け === | ||
| + | * Attention | ||
| + | * Self-Attention / Source Target Attention | ||
| + | * Multi-Head Attention | ||
| + | * Encoder / Decoder | ||
| + | * BERT (Encoder) / GPT (Decoder) | ||
| + | |||
| + | 画像関係で Self-Attention を使っていたので Attention についてはある程度わかっているつもりになっていた.\\ | ||
| + | しかしながら「Transformer と Self-Attention 使っているモデルって何が違うの?」みたいな疑問があった.\\ | ||
| + | ここでは Transformer を構成する要素を分解し,通常の Self-Attention を使用した画像系モデルであまり採用されていない Transformer を | ||
| + | Transformer たらしめているものを理解する. | ||
| + | |||
| + | === 概要 === | ||
| + | |||
| + | まず始めに Transformer は Encoder と Decoder により構成されているということを把握しておく.\\ | ||
| + | しかしながらこの片方を指して Transformer と呼ぶことが多くあるので注意する. | ||
| + | (BERTはTransformer-Encoderのみ,GPTはTransformer-Decoderのみ) | ||
| + | |||
| + | **パラダイム** | ||
| + | |||
| + | まず始めに, Transformer は単語の列を扱う自然言語処理のモデルとして生まれたことが大きな違いである. | ||
| + | 単語の列というのはつまり可変長の列であり,決まったサイズの長さの文章を扱うわけではない. | ||
| + | これだけでは画像系とあまり違いがわからないかもしれない. | ||
| + | 自然言語処理でも固定長文章しか扱えないモデルもあれば可変長も扱えるモデルもあるように, | ||
| + | 画像系でも特定のサイズにリサイズしないと使えないモデルやサイズに依存しない全層畳み込みニューラルネット(Fully Convolutional Neural Network) がある. | ||
| + | しかし,完全に列として扱うということは全層畳み込みモデルとは全然違う. | ||
| + | 全層畳み込みモデルは,入力に依存して出力サイズが決まり,そのサイズの各箇所の値を求めるものである. | ||
| + | つまり,画像変換であれば入力と同じサイズのキャンバスに色を埋めていく作業であるし,超解像であれば入力の縦横何倍かのキャンバスの各ピクセルの色を計算するものである. | ||
| + | この手の画像変換と完全に列として扱うTransformerはパラダイムが違う. | ||
| + | Transformer の Decoder 部分では列の途中まで計算された値から列の次の値を求めるし,列が左シフトしていくようなイメージである. | ||
| + | つまり用意されたキャンバスを埋めると言うよりは横に系列を追加しつつ生成していくようなイメージである. | ||
| + | さらに,画像変換系であればキャンバスのすべての値が並列に求まっていくのと違い,キャンバスをスキャンラインして逐次的に処理していくイメージである. | ||
| + | |||
| + | **モデル構造** | ||
| + | |||
| + | 上記のパラダイムの違いから Transformer は完全にそれぞれの単語を分けて処理しているということを理解しておく. | ||
| + | 画像系では Self-Attention を用いて画素毎に分解して考える処理が入っても,畳み込み層を使って周辺画素をまとめて扱ってしまうことも多い. | ||
| + | Transformer で言う MLP は各単語に対して適用しているのであり,全ての単語をまとめて扱っているわけではないことに注意.\\ | ||
| + | つまり画像系で言えば畳み込み層は完全に排除したものである. VisionTransformer は各パッチをそれぞれ別の物として扱うため畳み込み層は使っていない. | ||
| + | ただし VisionTransformer はTransformer-Encoder のみのモデルであり,その最後に全てのパッチを合算するための全結合が入る. | ||
| + | そのため最後以外はパッチを完全に個別のものとして扱っているが,最終層により系列長は自由とはならない. | ||
| + | |||
| + | **Source-Target Attention** | ||
| + | |||
| + | Decoder 部分はなかなかに特殊であり,画像関係ではあまり使われていない. | ||
| + | Image-GPT はこれを試しに使ってみたものである. | ||
| + | Decoder の Source-Target Attention 部分は | ||
| + | 系列の後ろに系列を逐次的に追加していく処理である. | ||
study/start.1599820787.txt.gz · 最終更新: 2020/09/11 10:39 by yuuho
