.. _chap_attention-and-transformers: 注意機構と Transformer ====================== ディープラーニングブームの初期数年間は、主として 多層パーセプトロン、畳み込みネットワーク、再帰型ネットワーク アーキテクチャを用いて得られた成果によって牽引されていた。 驚くべきことに、2010年代のディープラーニングの 多くのブレークスルーを支えたモデルアーキテクチャは、 その前身からほぼ30年が経過していたにもかかわらず、 驚くほど少ししか変わっていなかった。 ReLU 活性化関数、残差層、バッチ正規化、ドロップアウト、 適応的学習率スケジュールなど、数多くの新しい方法論的革新が 多くの実務家のツールキットに加わったが、核となる 基盤アーキテクチャは、明らかに古典的なアイデアを 大規模化した実装として認識できるものだった。 何千もの論文が代替案を提案したにもかかわらず、 古典的な畳み込みニューラルネットワーク(:numref:`chap_cnn`\ )に似たモデルは コンピュータビジョンにおいて *state-of-the-art* の地位を保ち、 Sepp Hochreiter による LSTM 再帰型ニューラルネットワークの 元の設計(:numref:`sec_lstm`\ )に似たモデルは、 自然言語処理のほとんどの応用を支配していた。 言い換えれば、それまでの時点では、ディープラーニングの急速な台頭は 主として利用可能な計算資源の変化 (GPU を用いた並列計算の革新のおかげで)と、 巨大なデータ資源の利用可能性 (安価なストレージとインターネットサービスのおかげで)に 起因しているように見えた。 これらの要因が今後もこの技術の力を高める 主因であり続けるかもしれないが、 私たちは今、ついに、支配的なアーキテクチャの 景観における大きな転換を目の当たりにしている。 現時点では、ほぼすべての自然言語処理タスクにおける 支配的なモデルは Transformer アーキテクチャに基づいている。 自然言語処理の新しいタスクが与えられたときの、デフォルトの第一歩は、 大規模な Transformer ベースの事前学習済みモデル (たとえば BERT :cite:`Devlin.Chang.Lee.ea.2018`\ 、ELECTRA :cite:`clark2019electra`\ 、RoBERTa :cite:`Liu.Ott.Goyal.ea.2019`\ 、Longformer :cite:`beltagy2020longformer`\ ) を取り出し、必要に応じて出力層を適応させ、 下流タスクのために利用可能なデータでモデルを微調整することである。 ここ数年、OpenAI の 大規模言語モデルを中心とした息の詰まるようなニュース報道に注目してきたなら、 GPT-2 および GPT-3 の Transformer ベースモデル :cite:`Radford.Wu.Child.ea.2019,brown2020language` を中心とする議論を追ってきたことになる。 一方、Vision Transformer は、 画像認識、物体検出、意味的セグメンテーション、超解像など、 多様な視覚タスクに対するデフォルトモデルとして登場した :cite:`Dosovitskiy.Beyer.Kolesnikov.ea.2021,liu2021swin`\ 。 Transformer はまた、音声認識 :cite:`gulati2020conformer`\ 、 強化学習 :cite:`chen2021decision`\ 、 グラフニューラルネットワーク :cite:`dwivedi2020generalization` においても競争力のある手法として現れた。 Transformer モデルの核となるアイデアは *注意機構* であり、 これはもともと、機械翻訳のような 系列変換アプリケーションに適用されるエンコーダ–デコーダ RNN の 拡張として構想されたものである :cite:`Bahdanau.Cho.Bengio.2014`\ 。 機械翻訳の最初期の sequence-to-sequence モデル :cite:`Sutskever.Vinyals.Le.2014` では、入力全体がエンコーダによって 単一の固定長ベクトルに圧縮され、それがデコーダに渡されていたことを 思い出してほしい。 注意機構の直感は、入力を圧縮するよりも、 デコーダが各ステップで入力系列を再訪するほうがよいかもしれない、 というものである。 さらに、常に同じ入力表現を見るのではなく、 デコーダは特定のデコードステップで入力系列の特定部分に 選択的に焦点を当てるべきだと考えられる。 Bahdanau の注意機構は、デコーダが各デコードステップで 入力の異なる部分に動的に *注意を向ける* ための 簡潔な手段を提供した。 高レベルの考え方は、エンコーダが元の入力系列の長さに等しい 表現を生成できるというものである。 そしてデコード時には、デコーダは(何らかの制御機構を介して) 各時刻の入力表現の重み付き和からなるコンテキストベクトルを 入力として受け取ることができる。 直感的には、重みは各ステップのコンテキストが 各入力トークンにどの程度「焦点を当てる」かを決定し、 重要なのは、この重み付けの過程を 微分可能にして、 他のすべてのニューラルネットワークパラメータとともに 学習できるようにすることである。 当初、このアイデアは、すでに機械翻訳アプリケーションを支配していた 再帰型ニューラルネットワークに対する 驚くほど成功した拡張だった。 モデルは、元のエンコーダ–デコーダ sequence-to-sequence アーキテクチャよりも 良い性能を示した。 さらに、注意重みのパターンを調べることで、 いくつかの興味深い定性的洞察が しばしば得られることが研究者によって指摘された。 翻訳タスクでは、注意モデルは ターゲット言語で対応する単語を生成するときに、 しばしば言語間の同義語に高い注意重みを割り当てた。 たとえば、文 “my feet hurt” を “j’ai mal au pieds” に翻訳する際、ニューラルネットワークは 対応するフランス語の単語 “pieds” を生成するときに “feet” の表現に高い注意重みを割り当てるかもしれない。 こうした洞察は、注意モデルが「解釈可能性」をもたらすという主張を後押ししたが、 注意重みが正確に何を意味するのか――すなわち、 それらをどのように、あるいはそもそも *解釈* すべきなのか――は、 依然として曖昧な研究テーマである。 しかし、注意機構はやがて、 エンコーダ–デコーダ再帰型ニューラルネットワークの拡張としての有用性や、 顕著な入力を見つけ出すための有望性を超えて、 より重要な関心事として浮上した。 :cite:t:`Vaswani.Shazeer.Parmar.ea.2017` は 機械翻訳のために Transformer アーキテクチャを提案し、 再帰接続を完全に排除して、 その代わりに巧みに配置された注意機構に依存して 入力トークンと出力トークンのあらゆる関係を捉えた。 このアーキテクチャは驚くほどうまく機能し、 2018年までに Transformer は 大半の state-of-the-art 自然言語処理システムに登場するようになった。 さらに同時期に、自然言語処理における支配的な実践は、 巨大な汎用コーパス上で大規模モデルを事前学習し、 何らかの自己教師あり事前学習目的を最適化したうえで、 利用可能な下流データを用いて それらのモデルを微調整することになった。 Transformer と従来アーキテクチャとのギャップは、 この事前学習パラダイムで適用したときに特に大きくなり、 そのため Transformer の台頭は、 現在しばしば *foundation models* と呼ばれる このような大規模事前学習モデルの台頭と 一致していた :cite:`bommasani2021opportunities`\ 。 この章では、最も基本的な直感と このアイデアの最も単純な実装から始めて、 注意モデルを紹介する。 その後、Transformer アーキテクチャ、 Vision Transformer、そして 現代の Transformer ベース事前学習モデルの全体像へと進んでいく。 .. toctree:: :maxdepth: 2 queries-keys-values attention-pooling attention-scoring-functions bahdanau-attention multihead-attention self-attention-and-positional-encoding transformer vision-transformer large-pretraining-transformers