ハルシネーション
AIモデルの仕組みを理解したところで、AIツールを使い始めた多くの開発者が最初につまずくハルシネーションについて見ていきましょう。
ハルシネーションとは、AIモデルがもっともらしいものの、実際には誤った情報を自信を持って生成することです。よく知らない話題について、知っているふりをして会話を乗り切ろうとする人のようなものです。
AIモデルがハルシネーションを起こす理由
AIモデルは、学習したパターンに基づいて次のトークンを予測すると説明したことを覚えていますか?しかし、ときにはそのパターンがモデルを誤った方向に導くこともあります。
これらのモデルは、非常に強力なテキストの自動補完のようなものです。「今日の天気は…」と入力すると、スマートフォンは一般的なパターンに基づいて「晴れ」や「曇り」を候補として表示するかもしれません。AIモデルも同じことをしますが、概念全体やコードブロックを対象に行います。
AIモデルは何かを知らないとき、必ずしも「わかりません」と答えるわけではありません。代わりに、見たことのあるパターンに基づいて、最もありそうな内容を生成します。コーディングでは、次のようなことが起こる可能性があります。
- 実際には存在しない、もっともらしいAPIメソッドを作り出す
- 異なるプログラミングライブラリやフレームワークの構文を混同する
- もっともらしいが実在しない設定オプションを作成する
AIモデルプロバイダーは、インターネット上の大量のテキスト (およびその他の独自データ) を使って、「知識のカットオフ」と呼ばれるある時点までのデータでモデルを学習させます。この日付は、モデルが持つ最新の知識の時点を示します。この日付以降に作成されたライブラリについて質問すると、AIモデルが誤った解決策を提案することがあります。
ハルシネーションの可能性が高いAPIメソッドに対して、まず取るべき対応はどれですか?
実際に見られるハルシネーション
開発者が遭遇するハルシネーションの実例をいくつか紹介します。
最初の例は、一見正しそうに見えるものの、実際には存在しないパッケージのインポートです。
// AIの提案:import { debounce } from "react";// 実際には、Reactはdebounceをエクスポートしていません!// lodashを使うか、自分で実装する必要があります2つ目は、もっともらしく見えるものの、クラスに存在しない偽のメソッドです。
# AIの提案:df.remove_outliers(threshold=3)# 実際には、pandasのDataFrameにこのメソッドはありません# 外れ値の除去は自分で実装する必要があります最後に、ほぼ正しい設定ファイルです:
// AIによるpackage.jsonの提案:{ "type": "module", "exports": "./index.js", "browser": true // <- これは無効です!}AIモデルを使うほど、ハルシネーションを見分けられるようになります。
モデルから得られる結果を鵜呑みにせず、提示された提案を自分で確認することが重要です。これを容易にするには、フィードバックが得られるようエディターやアプリケーション環境を設定します。
たとえばCherri Codeでは、誤ったimport文にはインポート先が存在しないというエラーが表示されます。この情報をフィードバックとしてAIモデルに返すことができます。
その他のモデルの限界
モデルは、誤った回答を自信満々に提案することもあります。
実際にはあなたが間違っていたのに、「その通りです!」というレスポンスが返ってくることがあります。また、一部のモデルは、真にランダムな数値の生成や単語内の特定の文字の出現回数を数えることなど、決定論的なソフトウェアが得意とする処理を苦手とします。
しかし、ハルシネーションや限界があっても、AIモデルは依然として非常に有用です。
AIを効果的に活用する鍵は、検証する姿勢を身に付けることです。すべての提案は出発点であり、最終的な答えではありません。これは余計な作業に思えるかもしれませんが、コードをただコピーするのではなく、その動作を理解する必要があるため、実際にはより優れた開発者になることにつながります。
このコースでは、生成されるコードの品質を向上させ、AIモデルを適切に活用するためのアプローチを紹介します。
モデルとのやり取りの方法について説明する前に、モデルがどのように考え、どのように価格設定されているかを詳しく理解する必要があります。次のレッスンで見ていきましょう。