
ファインチューニングよりも検索が優れている理由
私はAIに学習データを与える実験を始めて間もなく、ファインチューニング(Fine-tuning|微調整)と検索(語彙ベース・グラフベース・埋め込みベースなど)って何が違うんだろう?どっちがいいんだろう?という疑問を持ちました。因みに「埋め込み」とはよく聞く「Embeddings」のことです。
色々と調べていくうちに、非常にわかりやすい説明のある資料をOpenAI Cookbookの中に見つけました。
この資料の中の「Why search is better than fine-tuning」というセクションを日本語訳して以下で共有します。
直訳ではなく、一部日本語でもわかりやすいように修正を入れている部分があります。
GPTは2つの方法で知識を学ぶことができます:
モデルの重みを経由する(つまり、トレーニングセットでモデルを微調整する)
モデルの入力を経由する(つまり、知識を入力メッセージに挿入する)
ファインチューニングは、より自然な選択肢のように感じられるかもしれませんが、GPTが他のすべての知識を学習した方法であり、モデルに知識を教える方法としては一般的に推奨されていません。ファインチューニングは、特殊なタスクやスタイルを教えるのに適しており、事実の想起にはあまり信頼できません。
例えて言うなら、モデルの重みは長期記憶のようなものです。モデルを微調整するときは、1週間先の試験のために勉強するようなものです。試験本番になると、モデルは詳細を忘れてしまったり、読んだことのない事実を間違って記憶してしまったりすることがあります。
これに対して、メッセージのインプットは、短期記憶のようなものです。メッセージに知識を入れるということは、ノートを開いて試験を受けているようなものです。ノートを手にすれば、モデルはより正しい答えを導き出すことができます。
微調整に対するテキスト検索の欠点は、各モデルが一度に読めるテキストの最大量に制限があることです:
(Model): (Maximum text length)
gpt-3.5-turbo: 4,096トークン(~5ページ程度)
gpt-4: 8,192トークン(~10ページ程度)
gpt-4-32k: 32,768トークン(~40ページ程度)
例えるなら、教科書を何冊も持っているにもかかわらず、一度に数ページのノートしか見ることができない学生のようなものです。
ですから、大量のテキストを駆使して質問に答えるシステムを構築するためには、「Search-Ask」方式を採用することをお勧めします。
「Search-Ask」方式とは、GPTが参考文献のライブラリを用いて質問に答えることを可能にするための2段階のメソッドです。
1. Search(検索):ライブラリのテキストを検索して、関連するテキスト部分を探し出す
2. Ask(質問):検索したテキストセクションをGPTへのメッセージに挿入して質問する