生成AIの指示した文章
(プロンプト)のほとんどは学習されない

生成AIの指示した文章(プロンプト)のほとんどは学習されない。
この事実は、あまり直感的ではないようです。
日常生活では、学習と記憶をあまり区別しないですが、生成AIにとっては重要な違いがあります。

関連記事

1. ニューラルネットワークとコンテキストウィンドウ

生成AIの動きを考える上で、ニューラルネットワークとコンテキストウィンドウという2つの要素を理解することが大切です。

生成AIの2つの重要な要素 ニューラルネットワーク 重み(パラメータ) で定義される関数 コンテキストウィンドウ 入力プロンプト 前回の出力 今回の入力 生成中の出力 一時的に参照できる トークン列の範囲

ニューラルネットワーク」とは、重みと呼ばれる多数のパラメータによって定義される関数です1
関数(function)とは、入力に対して出力を返す「対応関係」です。
ここでいう重みは、モデルの振る舞いそのものを決める内部構造にあたります。

一方、「コンテキストウィンドウ」とは、推論時にモデルが一時的に参照できる入力トークン列の範囲を指します2
コンテキストウィンドウには、ユーザーからの入力プロンプトだけでなく、あらかじめ指示されたシステムプロンプト、生成された出力が含まれます。

2. 学習はニューラルネットワークの関数構造を変化させる

学習」とは、これらの重みが更新される過程です。
たとえば、勾配降下法などの、誤差を減らす方向に重みを少しずつ調整する手法によって、モデルという関数自体が別の関数へと変化します3
この変化は長期的で、学習が終わった後も保持され、明示的に再学習しない限り元には戻りません。

2.1. 「知識カットオフ」

この学習の仕組みは、ふだんの会話の中では動いていません。
AIの開発過程において、学習データと評価付けを管理された形で実行し、その結果がモデルとしてAIサービスに反映されます。
そのモデルが学習データとして参照している情報の最終時点は、「知識カットオフ」として示されます4

3. プロンプトは関数に与える条件付け

これに対して、コンテキストウィンドウ内の情報は、条件付けとして扱うと理解しやすくなります。
生成AIが回答する時、モデルは重みを変えずに、今与えられている入力を条件として、次に「最も尤もらしい出力」を計算しているだけです。

学習 vs 推論 学習(Training) モデル (関数) 重み更新 対応関係を書き換え 長期的に保持 計算コスト大 推論(Inference) モデル (固定) P R 対応関係を使用 一時的な条件付け 計算コスト小

学習とはその対応関係そのものを書き換えること、
推論とはその対応関係を使って、実際に出力を得ること。

一部の文脈では「In-Context Learning」といって、学習の一種に含める場合もあります5
しかし、その場の振る舞いを変えてもAIモデルそのものを変化させるものではありません。

このコンテキストは推論が終われば破棄され、次のやり取りには影響しません。
プロンプトが即座に学習データにならないのです。
つまり、プロンプトは学習ではなく、「学習済みモデルの振る舞いを一時的に方向付けているだけ」だと考えると、両者の違いが明確になります。

4. チャット履歴は学習ではない

紛らわしい概念にチャット履歴があります。
しかし、これは「学習」でも「モデル内部の記憶」でもありません。
生成AIの外側で管理されているのです。

チャット履歴の仕組み 外部ストレージ 履歴1 履歴2 過去のやり取り を保存 モデル外で管理 再提示 AI モデル 前回履歴 新規入力 重みは 変化しない 応答 ユーザー 毎回履歴を読み込んで推論 モデル自身は何も「覚えていない」

チャット履歴とは、過去の発話を保存しておき、次の発話を生成する際に、必要に応じて再び入力としてモデルに渡す仕組みです6
モデル自身が何かを覚えているわけではなく、あくまで「以前のやり取りをもう一度読ませている」状態です。

「覚えてくれているように見える」のは、履歴が毎回入力に含まれているためであって、内部状態が持続しているわけではありません。
チャット履歴のうち、コンテキストウィンドウに収まる範囲だけが、その時点の推論に使われます。
長い履歴は要約されたり、切り捨てられたりします7

ただし、チャット履歴は、AIサービスのサーバ上に保存され、運営企業は見ることができます。
また、その一部は、次の学習データに含められる可能性もあります8
「AIへのメッセージに個人的な秘密を含めないほうがよい」というのは、このためです。

とはいえ、重要なのは、チャット履歴が残っているように見えても、モデルの重みは一切変わっていないという点です。
同じ履歴を与えれば同じ出力になり、履歴を与えなければ何も引き継がれません。

  1. より厳密には、ニューラルネットワークは重みとバイアスといった学習可能なパラメータと、活性化関数などの構造によって定義される数理モデル(関数近似器)です。 – ニューラルネットワークとは?仕組みや種類、学習手法や活用事例なども解説 | EAGLYS
  2. コンテキストウィンドウには入力プロンプトだけでなく、生成される出力も含まれます。例えば10万トークンのコンテキストウィンドウを持つモデルでは、入力と出力の合計が10万トークンまで処理可能です。 – コンテキスト・ウィンドウとは? | IBM
  3. 代表的な学習手法には、確率的勾配降下法(SGD)、誤差逆伝播法、Dropout法などがあります。特に誤差逆伝播法は現在最も主流な学習手法の一つです。 – ニューラルネットワークとは?仕組みや種類、学習手法や活用事例なども解説 | EAGLYS
  4. 知識カットオフはモデルごとに異なります。例えば、GPT-4の知識カットオフは2023年4月、Claude 3.5 Sonnetは2024年4月などです。ただし、一部のモデルでは継続的な更新が行われる場合もあります。 – Claude API ドキュメント
  5. この手法は「In-Context Learning(インコンテキストラーニング)」とも呼ばれ、LLMのパラメータを更新せずに、プロンプト内の情報だけで新規タスクをその場で学習させる手法です。 – 生成AIを賢くするには「メガプロンプト」がお勧め、ファインチューニングは有害?
  6. チャット履歴の管理方法は実装によって異なります。メモリ上での一時保存、データベース(DynamoDB、PostgreSQLなど)への永続化、コンテキストウィンドウ内での要約など、様々な手法があります。 – チャット履歴を保持・参照するRAGの実装 #ChatGPT – Qiita
  7. コンテキストウィンドウのサイズには上限があるため、長い会話では古い履歴を削除したり、LLMを使って要約したりする必要があります。LangChainのConversationSummaryMemoryなどがこの機能を提供しています。 – LangChainでChatBotの会話履歴をまとめて扱いたい!|ChatGPT部 Produced by NOB DATA
  8. 通常のプロンプトは学習されませんが、以下のような例外的なケースがあります:(1)ファインチューニング:特定のタスクやドメイン向けのデータセットで追加学習を行う手法。この場合、モデルの重みが更新されます。(2)RAG(Retrieval-Augmented Generation):外部データベースから情報を取得してコンテキストに追加する手法で、モデルの知識を動的に拡張します。(3)一部のサービスでは、ユーザーの明示的な同意のもと、プロンプトデータを今後の改善に活用する場合があります。 – プロンプトエンジニアリング vs ファインチューニング vs RAG