見出し画像

ナッジ分野での生成AIを活用したボットの開発

こんにちは!PolicyGarage(愛称ポリガレ)でデータ分析や機械学習(ML)を担当している鈴木です。前回の投稿からかなり時間が経ってしまいましたが、今回は生成AIを活用したナッジについて教えてくれるボットの開発についてご紹介します。なお、ボットの開発にあたっては、いつもお手伝いいただいている神代さんにサポートいただきました。

生成AIとRAG

2022年11月にChatGPTが発表されて以来、生成AIが大きな注目を集めています。ChatGPTなどの大規模言語モデル(LLM)は、大量のデータとディープラーニング技術を使って作られており、まるで人間が書いたような文章を生成できます。
しかし、LLMは学習したデータに基づいて尤もらしい回答を生成するだけで、いつも回答が正しいとは限りません。このため、間違った答えでも正解らしく見える「ハルシネーション」と呼ばれる問題が発生します。また、LLMは最新の情報や専門的な情報を必ずしも含んでいないことも問題として挙げられています。
こうした問題に対処するために、RAGという技術が多く使われています。RAGはRetrieval Augmented Generationの略で、LLMに外部情報の検索・取得を組み合わせることで、ハルシネーションを抑制したり、専門的な情報等を反映したりすることができると期待されています。大雑把に言うと、LLMが持つ生成部分にデータベース部分を付け加えるというものになります。RAGに関する概要はこちらを参照ください。

図表1:代表的なRAGの構成図

ナッジについて教えてくれるボット

こうした中、PolicyGarageとして、ナッジにおける生成AIの活用可能性を探るべく、RAGを使って、行政分野におけるナッジについて気軽に質問できるチャットボットの開発に取り組みました。LangChainやLlamaIndexといったパッケージを使うことで思ったより簡単に実装することができました。
なお、英国のBehavioural Insights Teamがブログで紹介している通り、効果的な行動介入や定性調査の定量化、シミュレーションなど生成AIはナッジで様々な活用が考えられています。実際、BITでもCOM-BとEASTのフレームワークを活用したChatBITの開発が行われています。

ボットの仕組み

1.データベースの構築

参照する外部情報として「自治体ナッジシェア」を選択しました。PolicyGarage、大阪大学社会経済研究所、行動経済学会が連携して運営しているウェブサイトで、ナッジを体系的に解説するとともに、実務者や研究者としてナッジを活用するメンバーが厳選した事例を分野ごとに掲載しています。
自治体ナッジシェアのうち、機械が読み取りやすい記事を選別し、Markdown形式で保存。保存したファイルにメタ情報を付与しつつ、ファイルから文を抽出・分割し、埋め込みモデルを用いてベクトル化。ベクトルデータベースに逐次保管していきました。

2.質問の入力と検索

ユーザーからの質問をベクトル化し、コサイン類似度等を用いて類似した情報をデータベースから検索、リトリーバーにて取得します。

3.プロンプトの設計

ユーザーからの質問と取得した情報を、あらかじめ用意したプロンプトに渡します。また、過去のやり取りも考慮できるようにしています。具体的には以下のとおりで、質問、取得情報、過去のやり取りが{question}、{context}、{history}に挿入されていきます。

”””
あなたはナッジの情報を提供する優秀なアシスタントです。
以下の質問と回答の履歴と自治体ナッジシェアからの関連情報を参照しながら、回答の手順に従って回答してください。
------
質問:{question}
自治体ナッジシェアからの関連情報:{context}
質問と回答の履歴:{history}
回答の手順:(以下略)
“””

プロンプトチューニングでは様々なことを試しましたが、ハルシネーション対策として、自治体ナッジシェアにはない事例や固有名詞等の創作は絶対に行わないことなどの制約を課しています。

4.回答の生成

上記プロンプトを入力としてLLMにより推論を行い、回答を生成していきます。LLMについては様々なモデルを試してみましたが、回答スピードとコストを勘案してgpt-3.5-turbo-1106を選択しました。
また、リトリーバーで取得した内容を含む記事のリンクを「関連しそうなページ」として回答の最後に掲載し、ユーザーが自分で判断しやすいような表示にするなどのハルシネーションの問題の緩和策も講じました。

5.Slackでの実装

メンバー全員で見える形で、使い勝手に関するフィードバックを得たかったので、ボットはPolicyGarageのメンバーのメインのコミュニケーションツールであるSlackに実装しました。なお、Slackへの実装にあたってはGoogle Cloudを使用しています。
全体の構成は図表2のとおりです。

図表2:ボットの全体の構成図

なお、図表3が実際のSlackでやり取りしている画面になります。

図表3:Slackでのやり取りの例

実際の回答例

このようにしてナッジについて精度高く教えてくれるボットを作成していきましたが、例えば、「日本の地方自治体での政策立案・実施におけるナッジ活用の促進要因と課題はどのようなものがあるのでしょうか?」という質問に対しては、通常のChatGPTと比較すると、きちんと自治体ナッジシェアの情報に基づいて適切に回答してくるようになっています。

図表4:ボットとChatGPTの回答の比較例

また、Slackへの実装の前には人間による評価を行いました。今回は、50個の質問と真の回答(Ground Truth)をマニュアルで作成し、ボットが作成した回答と比較して評価していきました。RAGをどのように評価していくかについては、LLM-as-a-JudgeやRagasなどが提唱されていますが、こちらで述べられているように、実務で使っていくにはまだまだ発展途上だと感じています。実際、LangSmithにデータを集めながらRagasでの評価を試みましたが、今一歩という結論になり、明らかにおかしな回答がないかを基準にして、目検で評価していきました。

図表5:目検を行ったデータセットの抜粋

実証実験の結果

2024年1月7日〜1月31日の期間で実証実験を行いました。利用人数は合計で13人、投稿件数は85件でとなりました。また、投稿件数85件のうち、明らかに間違いと判断できる回答は4件(5%)と、思った以上の精度が出ており、RAGによる効果はある程度は認められるのではと考えています。

質問・ユーザー件数

ボットを導入してから一貫して減少傾向となりました。ナッジについては、毎日問い合わせたいというものではなく、使ってもらうための仕掛けや目的が必要だと感じました。また、コストもあまり気にする必要がないとの気づきも得られました。

図表6:質問件数とユーザー利用件数の推移

質問・回答の分類

約40%がナッジの活用方法やアイディア出しについて、約35%がナッジ理論等の学習という目的でした。一方、事例照会は約10%に留まる結果となりました。

図表7:質問・回答の分類

質問のキーワード

行動経済学や行動インサイトだけではなく、EBPMと関連した質問が多かったほか、「3つ挙げてください」といったアイディア出しで使用されるような単語も多くみられました。

図表8:質問のキーワードに関するワードクラウド

フィードバック

実際に使用したメンバーからのフィードバックのまとめは以下のようになりました。

  • ナッジと生成AIの掛け算は世界的なトレンドであり良い取組み。

  • 回答のクオリティとしてはもう一歩ではあるが、アイディア出しのツールとして便利。なお、倫理面の判断が難しい回答もあった。

  • 活用目的を明確化しユーザーにも共有していく必要。想定される活用シーンはアイディア出し、事例紹介、上司やセミナーでの質疑応答などが考えられる。広い視野と自由な発想を得意とするGPTの性質を踏まえるとアイディア出しをメインとするのが良い。セミナーやワークショップでの導入を想定してもいいのでは。

  • 最終的には業務改善の入り口としての役割を果たすことが期待され、チラシの改善やアンケート調査といった特定の用途に特化したものがあるといい。

今後について

実証実験から得られた結果を踏まえ、以下の点を中心に改善していくこととしています。

  • コスト面をあまり心配しなくていいため、LLMをGPT3からGPT4に変更させ、ハルシネーションを少しでも減らしていく

  • ハルシネーションの影響がそこまで大きくならないよう、アイディア出しに特化させていく

  • 再度、PolicyGarageのSlackでの実証実験を行い、問題がなければ一般公開に向けた作業を開始

なお、今回のボットの開発に取り組んでみて、COM-BやEASTといったフレームワークがしっかり確立しているナッジでは生成AIのポテンシャルが大きいと感じました。また、RAGに関してはGPTsといった簡単に実装できるツールも出てきていますが、詳細にカスタマイズしていく必要があるのではとも感じました。様々な拡張手法が出てきていますが、これらも取り込みつつ、開発を進めていきたいと思います。


この記事が気に入ったらサポートをしてみませんか?