見出し画像

論文まとめ(第1回):AudioGPTとTransformerのトークン数拡大

 皆様、お元気ですか? 私が今いる時空間上の座標はGWの初めですが、窓の外は雨模様ですので、こうして記事をしたためています。

 今週の話題は、大規模言語モデル(Large Language Models; LLMs)を音声情報を扱えるように拡張した"AudioGPT: Understanding and Generating Speech, Music, Sound, and Talking Head"と、Transormerの入力トークン数を大幅に増加させた"Scaling Transformer to 1M tokens and beyond with RMT"です。

AudioGPT: Understanding and Generating Speech, Music, Sound, and Talking Head

AudioGPTの概要(Fig.1より引用)

 AudioGPTは、ChatGPTを拡張し、音声による対話や様々な音声処理タスクを扱えるようにしたモデルです。といっても、文章と音声という異なるモーダルのデータを一つのモデルに学習させる訳ではないようです。

 AudioGPTはユーザーとの対話を行うChatGPTと、音声認識(Automatic Speech Recognition; ASR)や音声合成(Text-to-Speech; TTS)などの音声処理を行う複数の基盤モデル(Foundation Models)で構成されています。ユーザーが音声による指示(プロンプト)をAudioGPTに与える場合、音声から文章への変換や指示された音声処理タスクは後者の基盤モデルが行います。一方で、ChatGPTは文章に変換されたプロンプトについて、どの音声処理タスクを実行すべきかを推定し、数ある基盤モデルの中から相応しいものを割り当てます。

 例えば、ユーザーが「雨音をBGMとして流して」というプロンプトを発話したとすると、AudioGPTの内部ではASRモデルによってそのプロンプトを文章に変換します。ChatGPTはその文章からText-to-Audioが要求されていることを推定し、Text-to-Audioモデルにタスクを割り当て、TTSモデルを介して「BGMを流しますね!」と音声で応答しながら生成されたBGMを再生する、という感じです。ChatGPTが音声処理を行う基盤モデルのインターフェースとなっているイメージですね。

 レポート内では、一貫性と能力、ロバスト性という3つの観点でAudioGPTを評価しています。ここでの一貫性とは、AudioGPTがプロンプトからタスクを正しく推定できているかを表しています。具体的には、ChatGPTに対して人間の作成したプロンプトから同様の表現を生成させ、プロンプト本来の意図を維持した言い換えができているかを評価しています。能力とは、単にどれだけのタスクをどれだけの性能でこなせるかを表します。また、ロバスト性の評価では、複数回に渡る長いやりとりや対応していないタスクの要求など、通常とは異なる入力に対する応答の妥当性を見ているようです。

 さて、その評価の結果は……というと、本文中は見当たりません。このレポートは速報性を重視した簡易版のようです。形式はNeurIPSっぽいので、投稿に向けて本命の論文を用意している真っ最中かもしれません。著者らは浙江大学の方が中心のようです。

 所感として思うことは、「この手のモジュールを組み合わせる手法って、後からEnd-to-Endモデルに狙い撃ちにされる場合が多いよなあ」です。とはいえ、今この瞬間にAudioGPTのようなものが存在することに価値があると言われればそんな気もします。コードデモが公開されていますから、とりあえず触れてみてイメージを膨らませてみるのが良いと思います。

Scaling Transformer to 1M tokens and beyond with RMT

入力トークン数に対するスケーリングの様子(Fig.1より引用)

 Transformer(BERT)の入力トークン数を1M以上にまで拡張した、というレポートです。トークンとは文章を構成する文字列の断片(Tokenizerを動かすのが直感的です)で、モデルの入力トークン数が多いほど文章内の長い依存関係を扱えるようになります。既存モデルの入力トークン数は最大で64k(CoLT5)や32k(GPT-4)なので、大幅な増加といえます。といっても、安易に入力トークン数を増やしては早々に計算資源が超過しますから、このレポートでは過去の情報を再帰的に記憶するメモリトークンを備えたReccurent Memory Transformer(RMT)というものを使用し、実際の入力トークン数は512のまま、1Mを超える入力トークンを扱えることを実証しています。

Reccurent memory mechanismの図(Fig.2より引用)

 RMTでは、モデルの入力トークン数を超える長い文章をいくつかのセグメントに分割して順番に処理します。その際、最初のセグメントに学習可能な一定数(レポート中では10)のベクトルをメモリトークンとして連結し、その入力に対してTransformerが出力するメモリトークンを次のセグメントに連結する、ということを最後のセグメントを処理するまで繰り返します。Q&Aタスクであれば、各セグメントから抽出された情報をメモリトークンに保存することで、最後のセグメントで行われる質問にも正しく回答できるようになる、という寸法ですね。

 レポート内では、RMTの記憶能力を3つの人工的なタスクで評価しています。回答に必要な事実を含む「ファクト」文と質問とは無関係な「ノイズ」文、そして質問文を組み合わせてQ&Aのデータセットを人工的に作成し、「ノイズ」の量を変えることで文章全体の長さを調整し、「ファクト」の数や配置場所を変えることで3つのタスク(memorize, detect&memorize, reasoning)を作成しています。

 実験では、学習時と推論時でセグメント数を変更し、学習時より長い文章について汎化するかどうかを評価しています。その結果、5個以上のセグメント数で学習したモデルは、それ以上のセグメント数からなる文章についても性能を落とさないことが確認されています。冒頭の画像に示されている1M以上の入力トークンに対する性能は、7セグメント、すなわち3584トークンの入力で学習したモデルのものだそうですから、RMTの入力トークン数に対する汎化能力は非常に強力であると言えるでしょう。

 RMT自体はこのレポートが初出ではなく、同じ著者らによる論文が元になっています(そちらはNeurIPS2022に採択されています)。レポートの形式はNeurIPSですから、こちらも本命の論文が投稿の最中なのかもしれません。著書らはロシアの研究チームのようです。

 所感としては、「人工データだもんなー」ですね。質問文を先に読まない限り、どの情報が回答に必要かはわからない訳ですから、10個のメモリトークンなんてすぐに枯渇するのでは、と思ってしまいます(「ファクト」を2つにするreasoningの精度も他より低いですしね)。文章の水増しに使う「ノイズ」がよっぽど質問に無関係でないとレポートが示すような結果にはならないのではないでしょうか。コードは公開されているようですから、そういう批判的な目で眺めてみるのも良いでしょう。

おわりに

 今回の記事は以上になります。正直、レポートを読み込むのに時間を取られすぎました。しかも両方とも「レポート」であって、査読を経た論文ではないという。SNSで話題になったものを拾うということはそういうことなのでしょうが、少々徒労感があります。次はもっと適当にやりたいなと思いつつ、NLPや音声関係は頓珍漢なので迂闊なことも言えないというジレンマ。まあ、続けてさえいればちょうどいい落とし所は見つかるでしょう。それでは次回。


この記事が気に入ったらサポートをしてみませんか?