LLMファインチューニングのためのNLPと深層学習入門 #2 系列変換モデルとアテンション機構(1)
Transformerの記事を読み進めていたんですが、知識が足りな過ぎて概観をつかむことすらできなかったので、Transformer: アテンションが主要部品の系列変換モデル [深層学習]の親記事である、系列変換モデル と アテンション機構から読み進めることにしました。
この記事では、系列変換モデルとアテンション機構について同時に解説されています。
1. 系列変換モデルとアテンション機構
1.1 系列変換モデル
系列変換モデル(seq2seq translation)とは、系列Encoderと系列Decoderの2つを直列に連結したEncoder-Decoderモデルのことです。
Encoder-Decoderモデルは前回記事で学んだとおりです。
EncoderとDecoderが対象構造をなして、もとの情報を変換、復元するネットワークのことをEncoder-Decoderモデル、Encoder-Decoderネットワークと呼びます。
自然言語処理では、この系列変換モデルを使用して、特定の、異なる分野や情報形式間での情報の変換を学習します。
系列変換モデルの基本的な仕組みは、2014年にseq2seq(sequence-to-sequence, 系列から系列への変換)として提案されました。
1.2 アテンション機構
アテンション機構(Attention Mechanism)とは、入力の各ベクトルを重要度に沿って重みづけし、その重みを毎フレーム動的に変化させます。
(図1)この重みのことを「アテンション係数」といいます。
ここで、「フレーム」とは「出力を生成する各ステップ」という意味です。
![](https://assets.st-note.com/img/1688126884043-1g3F80uB3m.png?width=1200)
(系列変換モデル と アテンション機構 [seq2seq から Transformer まで] より)
「アテンション機構」は、認知科学の「視覚的注意」にインスパイアされたもので、これを「特定の入力ベクトル群にだけ強く注意を向ける=重みを高くする」という仕組みで実現します。
アテンション機構はベクトル間類似度を用いてアテンション係数(つまり、各ベクトルの重要性を示す重み)を推定します。
そして、毎フレーム予測する際に、アテンション係数を用いて各入力特徴ベクトルを重みづけし、その結果を予測に活用します。
仕組みが非常に単純で、使いやすいわりに大きな威力を発揮するので、深層学習で人気の技術となりました。
1.3 アテンション機構の利点
アテンション機構は、当初seq2seqの改善を目指して提案されたものですが、その後系列変換モデル以外の問題でも応用されていくこととなります。
特に、皆さんも知っている通り、Transformerとその部品であるマルチヘッドアテンションの活用は広範囲で活用されていきました。
その理由は大きく分けて3つあります。
動的な重要度の調整:
アテンション機構を導入することで、Decoder側の各予測フレームごとに、動的に全入力ベクトルの重要度を動的に変更することが可能になります。
これにより、各予測ステップで最も関連性の高い情報に焦点を当てることができます。
自動的な位置合わせ:
アテンション機構は単語ごとの関係性に基づいて重みづけするため「入出力間の単語間関係性の位置合わせ」を行うことができ、より精度の高い予測を行うことが可能になります。
また、このプロセスはデータから直接学習されます。つまり、入力と出力の間の関連性を自動的に学習します。
可視化とデバッグの容易さ:
アテンション機構は「入力系列語彙 - 出力系列語彙」間の「アテンション係数行列(=ベクトル間の関連度行列)」を可視化することが可能です。
これにより、モデルの内部動作の理解と、デバッグが行いやすくなります。
このように、シンプルな対応付け重み係数という仕組みが、予測精度の向上に大きく寄与するだけでなく、デバッグ・可視化においても利点が出てくることが分かるかと思います。
現在では、画像キャプション生成、Text-to-Speechなどのモーダル間のアテンションを活用して変換を行う課題でも、アテンション機構が広く応用されています。
Transformerの登場以降は、BERTやGPT、コンピュータビジョンのVision TransformerやDETRなどでも、Transformer-EncoderとTransformer-Decoderがネットワークモデルとして採用されています。
2. 系列変換モデル(seq2seq translation)
2.1 概要
系列変換モデルは「ドメイン・モーダルの異なる2つの系列データ間の変換」を、Encoder-Decoder型の「RNN2つを接続したネットワーク」と「アテンション機構」の組み合わせにより実施します。
ここで、ドメインとモーダルについて整理しておきます。
ドメイン:
特定の分野や領域のことで、問題(タスク)の種類やその問題が扱うデータの性質を表します。たとえば、自然言語処理、画像認識、音声認識などはそれぞれ異なるドメインとなります。
モーダル:
情報やデータの種類や形式のことで、データがどのような形式で表現されているかを表します。例えば、テキスト、画像、音声などはそれぞれ異なるモーダルです。
系列変換モデルはRNNを2つ繋げた自己回帰なモデルとなっているため、次のように予測が進んでいきます。
入力系列を全てエンコードする。
Decoderでは前フレームの予測単語も用いながら1フレームずつ次の単語を予測していく。
2.2 変遷
最初に機械翻訳向けに提案された、アテンション機構なしのseq2seqは、入力系列のRNNモデルと、出力系列生成用のRNNLMの2つを、潜在変数間で橋渡ししただけのシンプルなモデルでした。(入力系列と出力系列がEncoder-Decoderの関係に対応している)
しかし、EncoderのRNNの最後のフレームの隠れ表現しかDecoderのRNNに渡せないので、精度がいまひとつでした。
この精度を改善すべく、アテンション機構を追加したseq2seq with attentionが登場しました。
seq2seq with attentionでは、seq2seqと一緒に学習しておいた「スコア関数」をもとに、テスト時に「アテンション係数」を予測します。
このアテンション係数は、現在のDecoderの隠れ状態と、入力単語のどの隠れ表現が関連が強いかを示した重み係数(=注意の強さ)に相当します。
ここで「隠れ○○」という単語は初学者の私にとって馴染みのない言葉なので、整理しておきます。
隠れ○○:
「隠れベクトル変数空間」や「隠れ層」などの「隠れ」は、ニューラルネットワークの中間層(入力層と出力層の間に位置する層)を指す言葉。
これらの層は、直接的に観測や操作ができないため、「隠れ層」と呼ばれる。
隠れ状態:
RNNの各フレームでの内部状態のこと。RNNは系列データを処理する際、各時点での入力と前の時点の隠れ状態をもとに新たな隠れ状態を生成する。この隠れ状態は、その時点までに処理した系列の情報をエンコードしたものと考えることができる。
隠れ表現:
一般に、ニューラルネットワークの中間層におけるデータ表現のことを指す。つまり、もとの入力データがネットワークを通過する過程で変換・抽象化された形のデータのこと。ネットワークが特定のタスクを解くためにデータから抽出・学習した特徴を表している。
さて、seq2seq with attentionでは、アテンション機構の導入により、次のような利点を得ることができました。
1.予測精度の向上
予測時に「次の予測に強く関連する」入力単語の隠れベクトルを重視することができるようになったため。
2.動的な注視の変更
アテンション機構を導入したことにより、各予測フレームで注視する入力単語群を動的に変更することが可能になりました。
これにより、各予測単語に対して最も関連性の高い入力単語に「注意」を向けることができます。
3.関連性の強い単語間の対応付けと可視化が可能に
動的な注視の変更の仕組みにより、学習中に入力と出力の間の関連性をより明確に捉えることができます。
また、前述した通り、単語間の関係性を可視化することも容易です。
以降、seq2seq with attentionは、機械翻訳、音声認識、音声合成、画像キャプション生成など、さまざまな系列対系列間の変換問題や集合対集合間の変換問題で用いられるようになりました。
そして、seq2seq with attentionの後継モデルとしてTransformerが登場し、現在では系列対系列変換モデルの決定版として広く用いられています。
2.3 応用例
アテンション機構は、NLPだけでなく、NLP以外の様々な問題で応用されています。
画像と文章を結びつけるV&L(ビジョン&ランゲージ)の領域でも、アテンション機構の応用が盛んです。
例えば、画像キャプション生成では、CNNの特徴マップの各局所特徴ベクトルと生成文章中の単語埋め込みベクトルとの間でアテンションを学習します。
なお、アテンションを使用した場合、モデルが学習した「入出力系列間の対応付け結果の可視化」をよく行います。
2.3.1 機械翻訳における例
「英語→ドイツ語」への翻訳を行うseq2seq with attentionでは、英語とドイツ語との間での翻訳変換を学習します。
図2は、入力文(英語)と予測文(ドイツ語)の間で、各単語ペアのアテンション係数(つまり、関連度の高さを示す重み)を行列にして可視化したものです。
白い部分ほどアテンション係数が高いことを表しています。
![](https://assets.st-note.com/img/1688132903180-mhhF76QW0L.png)
([Luong et al. , 2015] から引用)
このように、seq2seqにアテンション機構を追加すると、入出力言語間での単語同士の対応付けをシンプルに把握できます。
また、アテンション係数を入力単語ベクトル群の重みづけとして用いるので、重要な箇所にだけ注意を向けた予測が可能になるということも理解しやすいかと思います。
2.3.2 画像キャプション生成における例
この例では、画像キャプション生成におけるアテンション係数を可視化しています。
具体的には、「人がフリスビーを投げている画像」を入力とし、"A woman is throwing a frisbee in a park."を出力として生成しています。
図3では、出力側RNNが単語「frisbee」を予測するときに、画像中の「フリスビー」に対応する領域の特徴ベクトルが、高いアテンション係数をもつことが推定されていることが分かります。
![](https://assets.st-note.com/img/1688133493975-zEqUOGuuG3.png)
このように、出力単語を予測するごとに、関連度の高い画像領域のアテンション係数が適応的に変化しています。
つまり、この例では画像を用いているものの、2.3.1の機械翻訳の場合とアテンション機構が実現していることが全く同じであるということがわかります。
2.4 アテンション機構の利点まとめ
最後に、冒頭でも述べた、アテンション機構を導入することによる利点(参照元記事では、「2大利点」とされています)を列挙して整理します。
1.動的コンテキストの追加
「特定の単語だけを重要視し、逆にそれ以外を無視する」ような予測が可能に。元のモデルにコンテキストベクトルを補助入力として追加することで実現します。
毎フレームの次に来る単語の予測時に、入力系列中で注目すべき単語の箇所 (図2のようなアテンション係数)を動的に変えられるので、変換モデルとしての表現力が高まります。
2.解釈可能性の向上
変換前後の単語同士の対応づけ(alignment)が、対応付けのラベルなしで、単語ベクトル間の類似度と入出力データから弱教師あり学習的に可能になります。
予測の全てのフレームにおける入力系列のすべてに、アテンション係数が割り当てられることにより、モデルの解釈可能性が高まる(アテンション係数の可視化が容易であり、かつ可視化結果も明確であるため、どの入力単語に注目して予測したかすぐわかるということ).
言語系列変換だけでなく,画像認識CNNと共にアテンションを使用しても,モデルに説明可能性がつく付加価値が出てくる( [山下 2019])
3. おわりに
本記事では、系列対系列変換モデルとアテンション機構について、勉強しました。
この後、系列対系列変換モデルの変遷、特にseq2seq with attentionとTransformerについての深掘りが続くのですが、長くなるので一旦これで区切ろうと思います。
記事を読んでいて、アテンション周りについて、もっと具体的な理解が必要だなーと感じました。
今勉強している項目が終わったらそっちに行くかもしれません。
でもニューラルネットワークにおける「層」の種類についても知りたいなという思いもあり・・・中々悩みますね。
間違っている部分や気が付いた部分などありましたら、お気軽にコメントしてください。
次回は、同じ記事の続き(2. seq2seq with attention による機械翻訳)を勉強する予定です。
それでは。
参考
系列変換モデル と アテンション機構 [seq2seq から Transformer まで], CVMLエキスパートガイド, 林 昌希, 2022
[Luong et al., 2015] M.-T. Luong, H. Pham, and C. D. Manning, Effective approaches to attention-based neural machine translation. In EMNLP, 2015.
[Xu et al., 2015] Xu, K., Ba, J., Kiros, R., Cho, K., Courville, A., Salakhudinov, R., Zemel, R., Bengio, Y. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. In ICML, 2015.
この記事が気に入ったらサポートをしてみませんか?