AN IMAGE IS WORTH 16x16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE(2021)
April 29, 2023画像認識にTransformerを使う手法を提案し、Big TransferとNoisy Studentと比較した。 論文が発表された2021年でも、画像認識にニューラルネットワークを使う場合、畳込みニューラルネット(CNN)が基本の選択肢になる。 自己注意機構を使った画像処理の先行研究はあるが、スケールするアーキテクチャではない。
AN IMAGE IS WORTH 16x16 WORDSは、分割した画像をトークン(単語)のようにTransformerへ入力することで、Transformerを画像認識へ応用できるこを示した。 TransformerはCNNのように画像の向きや局所性を帰納バイアスにもたず、データが不十分でないと汎化性能は低い。 しかし、学習データを14M-300Mまで増やすと、CNNを越える汎化性能を発揮した。
画像をパッチに分割し、画像の断片を単語のようにTransformerへ入力する。
ただし、単語とは異なり、一次元ではなく二次元のデータに画像を変換し、Transformerに入力する。
以下は、論文にある学習時の様子である。
解像度を\(H\times W\), チャネルを\(C\), パッチの解像度を\((P\times P)\)として、画像\({\rm x}\in\mathbb{R}^{H\times W\times C}\)をパッチ\({\rm x}_p\in\mathbb{R}^{N\times (P^2\cdot C)}\)に分割する。
\(N=HW/P^2\)である。
Transformerは後続の層に入力データを流すために、長さ\(D\)の固定長の潜在ベクトルにパッチを変換する。 以下の式により、クラスを表現するためのエンベディング\({\rm z}^0_0={\rm x}_{\text{class}}\)と重み\(\boldsymbol{\rm E, E}_{\textit{pos}}\)を使い、画像を\({\rm z}_0\in \mathbb{R}^{(N+1)\times D}\)に変換する。 \(E_{\textit{pos}}\)はパッチの位置を表すパラメタである。 $$ {\rm z}_0 =[{\rm x}_{\text{class}};{\rm x}^1_p{\rm E};{\rm x}^2_p{\rm E};\cdots ;{\rm x}^N_p{\rm E}]+{\rm E}_{\textit{pos}} $$ \({\rm E}\in \mathbb{R}^{(P^2\cdot C)\times D}\), \({\rm E}_{\textit{pos}}\in\mathbb{R}^{(N+1)\times D}\)である。
層正規化を\(\text{LN}\), マルチヘッド注意機構を\(\text{MSA}\), フィードフォワード層を\(\text{MLP}\)とすると、画像の表現\({\rm y}\)までの後続のネットワークは、\(l=1\dots L\)として $$ \begin{align*} {\rm z}'_l&=\text{MSA}(\text{LN}({\rm z_{l-1}}))+{\rm z}_{l-1}\\ {\rm z}_l&=\text{MLP}(\text{LN}(z'_l))+{\rm z}'_l\\ {\rm y}&=\text{LN}({\rm z}^0_L) \end{align*} $$ と示せる。 事前学習時には、\({\rm z^0_L}\)の後に、隠れ層が1つのMLPが続き、ファインチューニング時にはlinear layerが1つ続く。