記憶の壁とハルシネーションを踏まえたAIの活用法

まず、AI活用における2つの大きな課題、「記憶の壁」と「ハルシネーション」について簡単におさらいしておく。

記憶の壁

AIとの対話は、ユーザー(人間)からの指示(プロンプト)に対してAIが回答を返す、というプロセスの繰り返しで成り立つ。
人間の指示が曖昧になりがちであるため、AIの回答が意図とズレることも少なくない。そのため、1つの課題を解決するだけでも、複数回のやり取りが必要になる。
さらにAIは、良かれと思って人間の意図を先回りし、様々な提案を提示してくる。その結果、AIとの会話は想定以上に長くなりがちだ。

このように会話を重ねていると、途中で合意したはずのルールや結論とは異なる内容をAIが提示し始めることがある。複数回のやり取りを経て、ようやく導き出した結論が破られるのだ。
これは、会話の総量(トークン量)が多くなると、AIが初期のやり取りを忘れてしまうために起こる。(「LLMのコンテキストウィンドウの限界」と呼ばれている。)
これが「記憶の壁」である。

AIは自身の回答に自信を持っているように見え、人間から訂正を求められる事態をあまり想定していない節がある。回答を終えると、次の行動を予測して勝手に人間へ次のタスクを提案してくる。
結果として手戻りが発生し、会話の中に不要な「ゴミ(ノイズ)」が蓄積していく。そして、このノイズが増えることで、AIは必要な記憶をさらに早く忘れてしまうという悪循環に陥る。(プロンプトが長くなり中間に不要な情報が増えると、AIは最初と最後に書かれた指示を重視し、中間の重要情報を無視しやすくなる。これは「Lost in the Middle現象」と呼ばれている。)
経験上、会話の行数が1500行を超えたあたりから、この記憶の壁が顕在化する印象だ。

ハルシネーション

AIは人間からの指示に従う際、情報が不足している部分をある程度「予測」して回答を生成する。しかし、その予測(仮説)が、いつの間にかAIの中で「確定した事実」にすり替わってしまうことがある。
また、人間側が与えた前提情報が、会話の途中で全く違う内容に置き換わってしまうケースもある。
これが「ハルシネーション(幻覚)」である。

AIが「~の意味が分からないので教えてほしい」と質問してくれれば修正できるが、大半のケースでAIは疑問を自己解決してしまう。
そのため、普通に会話を続けていると、どこでハルシネーションが発生したのかを察知するのが難しい。違和感を覚えてハッと気づいた時には、すでに脈絡のない情報が混ざり込んでいるのだ。
さらに厄介なのは、一度ハルシネーションが起きると、後から正しい情報を与えて訂正を試みても、AIが誤った情報に固執し続け、なかなか修正されない点にある。(LLMの確率的な性質から、文脈の中で一度「誤った事実」を出力してしまうと、次に出力する言葉もその誤った文脈の確率に引っ張られる性質があり、これを「コンテキストの汚染」と呼ぶ。)

記憶の壁とハルシネーションは防げない

記憶の壁やハルシネーションは、ユーザーが注意すれば防げるというものではない。大規模言語モデル(LLM)の根源的な技術的限界、すなわち「仕様」として捉えるべきだ。
したがって、これらの現象が発生した場合は、速やかに新しいチャット(別の会話)を立ち上げるしかない。

しかし、ここで問題になるのが、原則として新しいチャットには過去の会話履歴が引き継がれないという点だ。(プラットフォーム側のメモリ機能などが影響している可能性もあるが、同じテーマで話していると、なぜかある程度情報が引き継がれているように感じる現象もあるが、その詳細なメカニズムは掴めていない)。
そのため、前のチャットで議論を重ねて到達した結論や前提条件を、新しいチャットの冒頭で改めてAIにインプットする必要がある。

だが、このインプットの記述が長くなれば、それだけで会話のボリュームが増え、再びすぐに記憶の壁に突き当たってしまう。
では、過去の会話履歴をそのままドキュメントにコピー&ペーストして読ませれば良いかというと、それも記憶の壁とハルシネーションを誘発する原因になる。
例えば、過去の長い会話をAIに読み込ませて要約を依頼する場合、1000行程度であれば機能するかもしれないが、3000行クラスになると、要約の内容はほとんどAIの妄想(ハルシネーション)へと変貌してしまう。

AIの解説書などでは、記憶の壁やハルシネーションの対策として「AIの回答に対して、逐一指示を繰り返すような長いやり取りは避けるべきだ」とよく書かれている。
確かにその通りなのだが、実際の業務で解決したい課題は、定式化・明確化するまでにどうしても数回のラリーが必要になる。例えば、長文のライティングにおいて、一度の校正だけで満足なクオリティに仕上がることはない。
そもそも対象が長文であるため、小さく章ごとに分割して推敲を進めていたとしても、「途中で段落の構成を大きく入れ替えた方が良い」といった全体最適の視点が生じることもある。
結局のところ、実務でAIを活用する以上、複数回のやり取りは不可避であり、記憶の壁やハルシネーションからは基本的に逃れられないと覚悟するしかない。

記憶の壁とハルシネーション対策

試行錯誤の末にたどり着いた対策は、「AIとの会話(プロセス)は、人間が自分で要約する」ということだ。まずはAIが吐き出した冗長な出力(ノイズ)を削ぎ落すだけでも、テキストデータは格段に軽量化される。
そして、AIに渡す資料からは過去の「議論のプロセス」をすべて排除し、「確定事項」のみを残す。
併せて、前提となる「背景知識」もコンパクトなテキストとして整理しておく。

また、会話のスコープ(範囲)を極力小さく小分けにし、一定の成果が出た段階でそのチャットをクローズしていく運用が望ましい。
具体的には、解決したい課題に対する関連資料をテキストファイルとして事前に用意し、新しいチャットの最初のプロンプトでそのファイルを添付してインプットする。
その上で、そのチャットセッションで「何を解決したいのか」「AIに何を依頼したいのか」を極めて明確に定義して指示を出す。
このように、チャット環境(コンテキスト)に最初から最後まで余計なノイズを混入させない工夫こそが、最も重要である。

途中で送信してしまうというもう一つの問題

AIチャットを利用する上で、もう1つの頻出するトラブルが「指示の作成途中で誤って送信してしまう」という問題だ。
外部のエディターなどでプロンプトを完全に作成してからコピペして送信すれば防げるようにも思えるが、コピペした後にブラウザ上で軽微なミスを見つけ、修正している最中に誤送信してしまうケースが後を絶たない。

問題は、誤送信された不完全な指示に対しても、AIは良かれと思って不足部分を推測し、勝手に回答を生成してしまう点だ。
その推測がこちらの意図と奇跡的に合致していれば良いが、中途半端な段階で送信された場合、大抵は的外れな回答になる。結果として、会話の中に不要なノイズがまた1つ増えてしまう。

この対策として、指示の末尾に必ず [END] と記述するルールを設け、AIに対しては「[END] のない指示は誤送信とみなし、回答せずに次の指示を待つこと」と事前に厳格に定義する運用を試みている。
これは一定の効果があるものの、会話が長くなり「記憶の壁」が発生すると、AIはこの初期指示(前提ルール)から忘れていく。
また、AIは本質的に「人間の意図を先回りして回答する」ように設計されているため、この「待機せよ」という制約はAIにとって構造的なストレスがかかるようだ。そのため、誤送信への根本的なアプローチはいまだ完全な解決には至っていない。

タイトルとURLをコピーしました