こんにちは!スタビジ編集部です!
ハルシネーションは、AIが誤った情報や現実には存在しない内容を生成する現象で、特に生成系モデルにおいて注目されています。
これを理解しておくことで、AIの利用におけるリスクを低減し、より効果的に生成AIを活用することが可能です!
具体例を通じてハルシネーションの実態を明らかにし、その防止策や対策についても見ていきましょう!
代表的な生成AIであるGPTのこれまでの歴史については以下の記事をチェックしてみてください!
・生成AIにおけるハルシネーションとは
・ハルシネーションの具体例
・ハルシネーションが発生する原因
・ハルシネーション対策法
・実際にハルシネーションの様子を確認する
目次
生成AIにおけるハルシネーションとは?
ハルシネーション(Hallucination)は、本来の意味では「幻覚」を指しますが、生成AIの文脈ではAIが現実には存在しない情報や事実に基づかない回答を生成する現象を指します。
たとえば、AIに「1850年にアメリカの大統領は誰だったか?」と質問した際、歴史上存在しない架空の人物名を返す、または違う人物名を返すような状況がこれに該当します。
この現象は、生成AIが膨大なデータセットからパターンを学習する際に、事実に基づかないデータや不正確な推論を行うことで発生します。
生成AIが情報を生成するプロセスは、基本的にデータに基づいています。
しかし、AIはデータの正確性や文脈を完全に理解しているわけではなく、学習したパターンに基づいて最も可能性の高い回答を生成します。
このため、入力が曖昧であったり誤解を招くものであった場合、生成される結果も正しくないことが起こり得るのです!
たとえば、医療分野で生成AIが誤った診断結果や薬の処方に関する情報を提示すると、実際の患者に重大なリスクをもたらします。
また、法務分野では、法律の解釈を誤るようなハルシネーションが発生すると、法的なトラブルを引き起こしかねません!
これらの分野では、AIの出力に対する信頼性が非常に重要であり、ハルシネーションの発生を防ぐことが不可欠です。
以上から、生成AIが提供する情報を完全に信頼するのは危険だということがわかりますね。
通常使用においてもこの点は意識するようにしましょう!
生成AIハルシネーションの具体例
生成AIによるハルシネーションはさまざまな形で発生します。
ここでは、具体的な例を通じてハルシネーションがどのように起こるかを見ていきましょう!
論理的に矛盾した回答
生成AIに対して重ねて質問を投げかけると、時折、論理的に矛盾する回答が返されることがあります。
たとえば、「今年のアメリカ大統領は誰ですか?」と尋ねて「A氏」と回答した後、「昨年の大統領は?」と尋ねると、まったく異なる「B氏」と回答される場合があります。
AIが文脈を正しく理解できずに矛盾した情報を出力することは、特に連続した質問が必要な場合に問題となります。
あいまいな質問による誤った結果
ユーザーがAIに曖昧な質問を投げかけると、AIはその曖昧さを補うために誤った情報を生成することがあります。
たとえば、「未来のテクノロジーについて教えて」と尋ねた場合、AIは現実に存在しない技術やデバイスを作り上げ、それを説明することがあります。
生成AIは、質問に対する回答の曖昧さを埋めるために空想を混ぜ込んでしまうため、情報の信頼性が低下します。
存在しない医療技術や治療法の提示
生成AIに医療や健康に関する質問をすると、実際に存在しない治療法や医療技術を提案することがあります。
たとえば、「最新のがん治療について教えてください」と尋ねた際に、実際には存在しない薬や治療方法をAIが生成してしまう可能性があります。
医療分野では、このような誤情報が患者の命に関わる重大なリスクとなります。
画像生成AIによる架空の物体や場所の描写
Stable Diffusionなどの画像生成AIに「宇宙空間にある未来の都市」を描かせると、現実には存在しない風景が生成されることがあります。
このような場合、ハルシネーションは「創造的なアート」として扱われることが多いですが、もし科学や地理に関する質問に対して架空の場所や物体が生成されると、誤解を招くことにも繋がります。
架空の企業や製品のレビュー
マーケティングやカスタマーサポートにおいて、AIが「最新のスマートフォンのレビューを教えてください」といった質問に対して、存在しない企業や製品のレビューを作り上げてしまうケースがあります。
実際には存在しない企業の詳細や製品の特徴を説明されてしまうと、ユーザーが誤った購買判断を下すリスクがあり、企業や製品の信頼性が損なわれることになります。
ハルシネーションが発生する原因
生成AIがハルシネーションを起こす原因には、いくつかの要因があります!
大きく、以下のようなことが考えられるでしょう。
データ不足
AIモデルは、過去に提供されたデータに基づいて学習しますが、そのデータセットに欠陥があったり、不足している場合、AIはその隙間を補うために誤った推論を行いがちです。
たとえば、特定のテーマについてのデータが極端に少ない場合、AIは関連性の低い情報を参照し、結果的に事実と異なる内容を生成します。
過学習(オーバーフィッティング)
過学習とは、AIが学習データに対して過剰に適応してしまい、新しいデータに対する汎用性が失われる現象です。
過学習が起こると、AIは学習データのパターンに強く依存し、異なる文脈や条件下で誤った推論を行う可能性が高くなります。
これにより、実際には存在しない情報や不正確な結論を生成することになります。
バイアス
データセット自体に偏りがあると、その偏った情報を基にしてAIが誤った判断を下す可能性が高くなります。
特に、特定の文化や社会的背景に依存するデータが含まれている場合、AIがそのバイアスに基づいて不正確な結論を生成することがあります。
曖昧なプロンプトや不明確な指示
たとえば、ユーザーがAIに対して非常に広範な質問や指示を与えた場合、AIはどのように回答すべきかを判断する際に混乱し、結果として曖昧で誤った情報を生成することがあります。
AIは非常に強力なツールですが、その能力を最大限に引き出すためには、ユーザー側が明確かつ具体的な指示を提供する必要があります!
ハルシネーションの対策方法
前章と被る部分もありますが、改めて生成AIでのハルシネーション発生を防ぐための方法について複数の観点から見ていきましょう!
モデルの再トレーニング
まず最も基本的な方法は、「モデルの再トレーニング」です!
AIの学習に使われるデータセットが不正確だったり偏りがあったりする場合、AIはそれに基づいて誤った情報を生成する可能性が高くなります。
再トレーニングを行う際には、より多様で正確なデータを使用することで、AIが誤った推論を行うリスクを低減できます!
プロンプトの改善
次に、ユーザー側が行う「プロンプトの改善」もとても重要です。
実際に生成AIを使う側である我々が意識する一番のポイントはここになるでしょう!
AIに対して曖昧な質問をするのではなく、具体的で明確な指示を与えることで、生成される結果の精度が向上します。
たとえば、「有名な女性科学者について教えてください」と尋ねる代わりに、「20世紀に活躍した女性科学者で、ノーベル賞を受賞した人物は誰ですか?」といった具体的な質問を投げかけることで、より正確な回答を得ることができます!
知識ベースでの確認
「知識ベースの使用」も効果的な方法の一つです。AIが生成する情報をすべてそのまま受け入れるのではなく、知識ベースと照らし合わせることで、誤った情報が混入していないかを確認することができます。
他の媒体やネットでの検索、自分や他人を介した判断などを併用することで誤った情報をそのまま活用してしまうリスクがかなり抑えられます!
生成AIのアウトプット以外の信頼できる引用元を探すことで、AIがハルシネーションを起こしても、ユーザーはすぐにその誤りに気づくことができます。
自動化ツールによる誤り検出と修正
また、「自動化ツールによる誤り検出と修正」も有効です!
AIが生成したコンテンツを自動的にチェックし、明らかに不自然な箇所や矛盾点を検出するツールを導入することで、ハルシネーションのリスクを減らすことが可能となります。
実際にハルシネーションを発生させてみる
この章では、実際に生成AIであるChat-GPTを使用し、ハルシネーションが発生してしまうパターンについて見てみましょう!
1. 地理的な質問への回答
2. 答えの有る問題への回答
3. 計算の限界や計算ミスの可能性
1. 地理的な質問への回答
まずは地理に関する問いをChatGPTに投げかけて見ましょう!
例えば以下です!
北海道の高い山のランキングは以下の通りです。
すると出力結果はこのようになりました。
まず標高の所に着目すると、ランキング形式で依頼しているのにもかかわらず標高が高い順に並んでいないことが分かりますね。
黒岳1986mの次にトムラウシ山2141mが来て、その次に剣岳2020mがくるなど、ランキングがバラバラになってしまっています!
また、実際の北海道の山には例えば「愛別岳(2113m)」がありますがランキング内にこれが含まれていないなどの誤りも生じておりました。
以下はそれを指摘してみた結果になります。
愛別岳もありませんか?
2. 問題の回答は正しいとは限らない
学校の宿題を早く終わらせるためにCatGPTに問題を解かせてしまおう、、と悪いことを考える人もいるかもしれませんが、問題を必ず正しい回答で返してくれる保証はありません。
例えば社会の問題集で以下の問題が出て、それをそのままChatGPTに聞いてみたとします。
六歌仙と呼ばれる歌人は?
実際の六歌仙の人物として正しい回答は以下です。
小野小町(おののこまち)
在原業平(ありわらのなりひら)
文屋康秀(ふんやのやすひで)
喜撰法師(きせんほうし)
僧正遍昭(そうじょうへんじょう)
大友黒主(おおとものくろぬし)
生成AIの回答では新六歌仙の人物が混ざっているなど事実と異なる回答となっていることが分かります。
3. 計算の限界や計算ミスの可能性
使用する生成AIのレベルにもよりますが、計算をさせると間違えた値が返ってくる可能性があります!
以前は簡単な素因数分解や割り算の商と余りを尋ねると間違った答えが返ってくるようなことがありました。
最近では比較的簡単は計算は間違えないようになっているかなーとは感じます!
ですがやはり絶対に合っている保証はないので注意が必要です。
以下は、複雑な5桁×5桁の計算の解を聞いた時の返答になります。
アップデートされる前のChatGPTでは、誤った数が出力されていたりしたのですが、その点が改善されていますね!
返答を和訳すると、「今はより高度なデータ解析ができないようです。後でもう一度お試しください。もしよろしければ、その間に計算機を使ってこの計算を行うこともできますよ!」となります!
できないことを教えてくれているのでこちらはハルシネーションとは呼びませんが、計算によっては間違った答えが出てくることもまだあるので注意しましょう。
まとめ
本記事では、生成AIにおけるハルシネーションの現象について、具体的な事例や原因を交えて解説しました!
ハルシネーションは、データの不足や過学習、バイアスなどが原因で発生し、ビジネスや日常生活において信頼性の低下を引き起こす可能性があります。
しかし、プロンプトの改善やモデルの再トレーニング、知識ベースとの照合、自動化ツールの活用といった対策を講じることで、ハルシネーションを防ぐことが可能です!
生成AIの技術は進化を続けており、未来においてはハルシネーション問題も克服され、より高精度なAIが実現されることでしょう!
生成AIの活用においては、ユーザーがその可能性と限界を理解し、慎重に取り扱うことが求められます。
引き続き注目してAIと共存していきましょう!
さらに詳しくAIやデータサイエンスの勉強がしたい!という方は当サイト「スタビジ」が提供するスタビジアカデミーというサービスで体系的に学ぶことが可能ですので是非参考にしてみてください!
AIデータサイエンス特化スクール「スタアカ」
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組み合わせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!
Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
\今すぐ試す/
# 線形計画問題を解く
result = linprog(c, A_ub=A, b_ub=b, bounds=bounds, method='simplex')
# 結果の表示
print(f'Optimal value: {-result.fun}')
print(f'x_A (Product A): {result.x[0]}')
print(f'x_B (Product B): {result.x[1]}')