OpenAIのChatGPTのような大規模言語モデル(LLM)と長く会話していると、重要な情報を忘れ始める。そして、そのパフォーマンスは急速に悪化し始める。
また、ChatGPTや他のLLMは会話と会話の間の情報を保持することができない。例えば、ある会話を終えて1週間後にChatGPTを再起動しても、チャットボットは前のやりとりの内容を何も覚えていない。
意外なことかも知れないが、AIチャットボットは物事を記憶するのが苦手なのだ。だが、この状況も今後は変わるかも知れない。
マサチューセッツ工科大学(MIT)の研究者らは、AIが会話の途中で物事を忘れてしまう原因を突き止め、それを解決する方法を考え出した。
会話中のパフォーマンス向上
研究者らは、チャットボットの短期記憶であるkey-valueキャッシュがトークンを保存したり置き換えたりする方法を変えることで、チャットボットの短期記憶を改善できることを発見した。彼らはこの新しいアプローチを「StreamingLLM」と名付け、「Efficient Streaming Language Models with Attention Sinks」と題された論文でこれを発表した。
チャットボットのメモリには限りがあるため、会話が続くと古いトークンを削除し、新しいトークンに置き換える。これはモデルの失敗の原因となる。
しかし、StreamingLLMをLLMに適用することで、例えば最初の4つのトークンを保持したまま、5つ目以降のトークンを退避させるということができるようになる。つまり、LLMは限られたメモリーの性質上、物事を忘れてしまうが、一番最初のやりとりは覚えていられると言うことだ。
トークンの順番(1番目、2番目、3番目……とラベルが貼られているかどうか)は、アクティブな会話の「アテンション・マップ」に反映されるため、これも重要である。これは各トークンが他のトークンとどの程度強く関連しているかをマッピングする。
例えば、5番目のトークンが追い出された場合、6番目のトークンが新しい5番目のトークンになることが期待できる。しかしStreamingLLMが機能するためには、トークンは元のようにエンコードされたままでなければならない。この例では、6番目のトークンは5番目になったからといって、新しい「5番目」のトークンとしてエンコードされるのではなく、6番目のトークンとしてエンコードされたままでなければならない。
この方法は、会話が400万語以上続いても、モデルを効率的に保つことを可能にする。また、以前の会話の一部を常に再計算することでパフォーマンスのクラッシュを回避する別の短期記憶法よりも22倍以上高速に動作した。
「この方法を使えば、大規模言語モデルを持続的に展開することができます。常にチャットでき、最近の会話に基づいて常に応答できるチャットボットを作ることで、このチャットボットをいくつかの新しいアプリケーションに利用することができます」と、この研究の主執筆者であるマサチューセッツ工科大学(MIT)の電気工学・コンピューターサイエンス専攻の大学院生、Guangxuan Xiao氏は声明の中で述べた。
StreamingLLMはすでに、NVIDIAのオープンソースLLMモデル最適化ライブラリ「TensorRT-LLM」に組み込まれている。研究者たちはまた、StreamingLLMを改良し、退去させられたトークンが再び必要になった場合に、トークンを見つけて再び取り込むように設計することも計画している。
ChatGPTは忘れない
一方、OpenAIの開発者たちは、ChatGPTに会話の一部を記憶するように指示したり、記憶した内容を尋ねたり、後で何かを忘れるように指示したり、あるいは記憶を完全に消去したりすることができる長期記憶のテストを開始し、ユーザーが会話を続け、AIチャットボットと効果的に協力関係を築けるようにしている。
LLMと会話する際、ユーザーはChatGPTに特定の何かを記憶するよう求めたり、後で記憶するのに適切と思われる会話の要素を記憶するよう自律性を与えることができる。これらの記憶は特定の会話とリンクしていないため、チャットを削除しても記憶は消えることはない。手動で削除しない限り、新しいチャットを始めると、ChatGPTに以前保存したメモリがプリロードされる。
OpenAIは、これがどのように役立つかの例をいくつか示した。ある例では、25人の生徒を持つ幼稚園の先生が、フォローアップ活動のある50分のレッスンを好むことをチャットボットが記憶しており、レッスンプランの作成を支援する際にこの情報を思い出す。別の例では、誰かがChatGPTに自分の幼児がクラゲが好きだと伝えると、AIツールはそれを覚えていて、彼らのために誕生日カードをデザインする。
OpenAIは全ユーザーへの広範な展開に先立ち、ChatGPTユーザーのごく一部に新しいメモリ機能をテストしている。
OpenAIはメモリ機能から得た情報を使ってモデルを改善する予定のようだ。しかし、バイアスを評価し緩和するためのステップを踏んでおり、ユーザーが明示的に要求しない限り、ChatGPTが健康情報のような機密情報を記憶することを防いでいると付け加えた。メモリにアクセスできるユーザーは、メモリを完全に停止した「一時的なチャット」を使うこともできる。
論文
参考文献
研究の要旨
大規模言語モデル(Large Language Models: LLM)を、長時間の対話が予想されるマルチラウンド対話のようなストリーミング・アプリケーションに導入することは急務であるが、2つの大きな課題がある。第一に、デコードの段階で、前のトークンのキーと値の状態(KV)をキャッシュすることは、膨大なメモリを消費する。第二に、一般的なLLMは、訓練シーケンス長より長いテキストには汎化できない。最新のKVのみがキャッシュされるウィンドウアテンションは自然なアプローチであるが、テキスト長がキャッシュサイズを超えると失敗することを示す。我々は、初期トークンのKVを保持することで、ウィンドウアテンションの性能がほぼ回復するという、アテンションシンクという興味深い現象を観察した。本論文ではまず、アテンションシンクの出現が、意味的に重要でなくても“シンク”として初期トークンに対する強いアテンションスコアによるものであることを示す。上記の分析に基づき、有限長の注意窓で訓練されたLLMを、微調整なしで無限のシーケンス長に汎化することを可能にする効率的なフレームワークであるStreamingLLMを紹介する。我々は、StreamingLLMにより、Llama-2、MPT、Falcon、Pythiaが、最大400万トークン以上の安定かつ効率的な言語モデリングを実行できることを示す。さらに、事前学習時に専用のアテンションシンクとしてプレースホルダートークンを追加することで、ストリーミング展開をさらに改善できることを発見した。ストリーミング設定において、StreamingLLMはスライディングウィンドウ再計算ベースラインを最大22.2倍のスピードアップで上回る。コードとデータセットはこちらのURLで提供される。
コメントを残す