GPT-4o(Claude)に危険物取扱者試験(甲種試験)を解かせてみる-その3: エージェント化の道筋の模索-
はじめに
こちらの記事の続きです。
その1では、GPT-4oに、日本特有の専門データとして、危険物取扱者試験を解かせてみました。わりと高得点でしたが、残念ながら、日本の法令や化学・物理化学の問題で躓いてしまったため、惜しくも不合格レベルなことがわかりました。
その2では、法令中に記載された表を読み込みながら回答することで、回答精度が向上することを確認しました。
本記事では、より本格的にシステムをエージェント化させる試みを通して、回答精度の向上を測れないかを模索します。
なぜエージェント化が必要なのか
精度向上に文献調査はほぼ必須
前々回の検討では、GPT-4oにうまくプロンプトを渡すことで、危険物取扱者試験(甲種試験)の合格ライン(各科目60%)を超える精度を達成できることを確認しました。
60%という回答精度は、人間であれば資格認定(very good)ですが、AIとしては幻覚まみれ(2回に1回くらいは間違える, very bad)という烙印を受けることが多いです。
人間も単体では、正答率60%以上という不安な判断しか下せません。一方、実用的なシチュエーションにおいては、適宜、法令や化学テキストなどを参照しながら、自身の信念を確認・修正しながら、精度100%に近い意思決定を行うことができます。
このような「文献調査」にあたる機構は、大規模言語モデル(LLM)のような人工知能でも原理的には模倣できるはずです。
単純な検索機構を組み込んだRAGはその代表例ですが、最近はLLMも賢くなってきたので、より本格的な「文献調査」をエージェントとして実行できる可能性が出てきました。
諸々の実装/プレプリントも発表されはじめています。
本記事では、「選択肢クイズに回答する」というミッションをこなすためのエージェントシステムの構築可能性を探ります。
選択肢問題の解き方を整理する
危険物取扱者試験(甲種試験)は選択肢問題を解くタスクです。
今回は練習がてら、選択肢問題を解くためのプロセスについて考えてみます。
人間が半ば無意識に選択肢問題を解くためのスキームは以下のようになります。
はじめに質問を受け取り、次に選択肢を吟味していきます。
各選択肢には、「XはYであり、ZはWである」といった命題が記述されていますので、その命題の妥当性を、大本の質問と照らし合わせながら検証します。
命題の妥当性は、自らの信念・知識に加えて、文献調査をしながら検証することが可能です。
仮に、モデル自身の信念が間違っていた(ハルシネーションしていた)としても、適切な文献調査と情報処理を行うことができれば、回答精度を十分に上げられるはずです*。
*加えて人間の場合は、他者と意見交換を通して、自身の信念を確認・修正することもできます。本記事では扱いませんが、この過程はマルチエージェント化で模倣できそうです。
解く問題
今回は、以下の問題を解きます。
サブタスク: 選択肢を吟味しながら、真実性を検証する
回答にあたっては、エージェントを意識して、問題をサブタスクに分割させながら作文するように指示をしました。
あなたは優秀な選択肢クイズの解答者です。
#指示
1. 与えられたクイズを解くのが最大のミッションです。
2. タスクを解くにあたって、以下のサブタスクを解いていってください。
3. サブタスク
3.1 与えられた選択肢の内容について、それぞれ箇条書きで、独立した情報として整理する
3.2 箇条書きで書かれた情報の真偽を一つ一つ検証する
3.3 選択肢の真偽を判定する
4. 3の結果をもとに、クイズに回答する
#クイズ
法に定める各類の危険物の性質、品名について、次のうち誤っているものはどれか。
#選択肢
a. 第1類の危険物は酸化性固体で、塩素酸塩類、亜塩素酸塩類等がある。
b. 第2類の危険物は可燃性固体で、硫黄、黄りん等がある。
c. 第3類の危険物は自然発火性物質及び禁水性物質で、カリウム、アルキルアルミニウム等がある。
d. 第5類の危険物は自己反応性物質で、硝酸エステル類、ジアゾ化合物等がある。
e. 第6類の危険物は酸化性液体で、硝酸、過酸化水素等がある。
GPT-4oの回答は以下の通り = (オリジナルの回答)。
正解はbなのですが、誤ってeと回答してしまっています。Claude-3.5-sonnetも誤答でした。
方策1: とりあえず文献データを全て突っ込む
GPT-4oが生成した"オリジナルの回答"に加えて、危険物取扱に関する法令文書をそのまま貼り付けて、回答させてみることにしました。法令文書のどこかに、正しい記述があるはずなので、正しく読解できていれば、自らの誤りに気づくはずです。
以下のようなプロンプトを投げてみます。
法令文は全体で6.5万文字でした。json化したものは以下からダウンロードできます。
結果
残念ながら、参考となりそうな文章を一緒に入力しても、誤った回答(e)のままでした (claude 3.5-sonnetも同様)。
長い文章から、重要な情報を的確に抜き出す能力が不足していたようです。
(人間にとっても、6.5万文字の文章を参照しながら、各命題の真偽を細かに検証するのは大変な作業です)
方策2: 重要な情報のみを渡す
今回の問題に答えるために必要な情報は、法令の別表第三(第一条の十一関係)に記載されています。
人間が読むのも難儀ですが、第二類に「黄りん」が含まれていないという点がポイントで、当該問題の正答はbとなります。
そこで試しに、上記の別表の情報のみを与えて、回答させてみます。
結果
Claude-3.5-sonnetを用いた場合、文献情報に基づいた判断ができるようになりました。
(GPT-4o、openai-o1では、十分な読解ができず、正解に至りませんでした)
ミニまとめ
フロンティアモデルであっても、細かな日本の法令などについての間違いを一定確率で犯す。
Claude-3.5-sonnetなどの一部のモデルは、正しい情報を適切な長さで与えてあげることで、内容を読解し、正解にたどり着くことができる。
正答を与える上で重要なのは、「正確かつ簡潔な情報をモデルに与えること」、「文章をきちんと読解できるモデルを使うこと」の2点に、集約される。
正確かつ簡潔な情報を自動抽出して回答させる
RAGの肝は検索と言われますが、重要な情報を検索するのは、非常に難しいです。
そうした中で、大規模言語モデルそのものを検索・情報抽出に用いるというアプローチが現実味を帯びてきています*。
*コンテキスト長の増大、推論コストの低下などの恩恵。以下参照
Claudeによる情報抽出
今回は最もシンプルな力技として、Claudeにざっくり情報抽出してもらうことにしました。
先程のプロンプトと同様、法令文書を丸々与えた上で、回答に必要そうな情報抽出のみをさせる指示にしました。
その結果、以下のようなメモ書きが生成されました。
推論
Claudeが作ったメモ書きをもとに推論をさせてみます。
#指示
以下の主張の正しさについて、#文献を注意深く確認し、出典を明示しながら、一つ一つ再検証しなさい。
#主張
a. 第1類: 酸化性固体、塩素酸塩類、亜塩素酸塩類
真。第1類は酸化性固体で、塩素酸塩類、亜塩素酸塩類が該当。
b. 第2類: 可燃性固体、硫黄、黄りん
真。第2類は可燃性固体で、硫黄や黄りんが該当。
c. 第3類: 自然発火性物質及び禁水性物質、カリウム、アルキルアルミニウム
真。第3類は自然発火性物質及び禁水性物質で、カリウムやアルキルアルミニウムが該当。
d. 第5類: 自己反応性物質、硝酸エステル類、ジアゾ化合物
真。第5類は自己反応性物質で、硝酸エステル類やジアゾ化合物が該当。
e. 第6類: 酸化性液体、硝酸、過酸化水素
誤。第6類の危険物は酸化性液体ではなく、酸類(腐食性物質)で、硝酸、過酸化水素は該当しない。
#文献
# 第1類の検証用引用
- 第1類が酸化性固体であることを示す文献:
別表第三より
(略)
推論の結果、Claudeは主張bが誤りであることに気づくことができました。
結果は以下の通り。
提供された主張と文献に基づき、一つずつ検証していきます。
主張a「第1類: 酸化性固体、塩素酸塩類、亜塩素酸塩類」について:
文献から第1類が「酸化性固体」であることは確認できます。
しかし、提示された第一条の引用文では塩素酸塩類や亜塩素酸塩類は明示的には記載されていません。
記載されているのは「次亜塩素酸塩類」等です。
→ したがって、この主張は完全には検証できません。
主張b「第2類: 可燃性固体、硫黄、黄りん」について:
文献の別表第三から、第2類に「硫黄」が含まれることは確認できます。
ただし、「黄りん」は第3類に分類されていることが別表第三から確認できます。
→ したがって、この主張は誤りです。
主張c「第3類: 自然発火性物質及び禁水性物質、カリウム、アルキルアルミニウム」について:
文献の別表第三から、第3類に「カリウム」と「アルキルアルミニウム」が含まれることは確認できます。
また、「自然発火性物質及び禁水性物質」という分類名も確認できます。
→ したがって、この主張は正しいです。
主張d「第5類: 自己反応性物質、硝酸エステル類、ジアゾ化合物」について:
文献から第5類が「自己反応性物質」であることは確認できます。
しかし、提示された第一条の引用では「硝酸エステル類」や「ジアゾ化合物」は明示的には記載されていません。
→ したがって、この主張は完全には検証できません。
主張e「第6類: 酸化性液体、硝酸、過酸化水素」が誤りであることについて:
文献の別表第三から第6類の分類は確認できますが、具体的な性質は示されていません。
硝酸や過酸化水素について、提供された別表第二の引用では「硫酸」しか確認できず、これらの物質の分類を直接確認することはできません。
→ したがって、この主張の正誤は提供された文献からは完全には検証できません。
結論として、提供された文献から完全に検証できるのは主張cのみです。他の主張については、文献が不足しているか、矛盾する情報が含まれています。より正確な検証のためには、追加の公式文献が必要です。
最後に、最も誤った選択肢を聞いてみたところ、正しい答えが返ってきました。
情報抽出と判断の作業を分けることが、今回は重要でした。
情報抽出しながら判断しろというプロンプトでは、誤答(e)のままのケースが多かったです。できるだけ先入観を持たせずに、情報抽出させる作業が必要そうです。
まとめ
本記事では、モデル自身の知識のみでは正答できない専門的な問題を解くためのRAGの枠組みについて、軽く検討しました。
分かってきたポイントは以下のとおりです。
(当たり前のことばかりが書かれていますが、こうした内容も、自分で手を動かしていくことで、理解が深まります)
読解力の高いモデルに対して、適切な文献情報を与えることで、モデル自身が持つ誤った信念を修正しながら、正しい回答にたどり着くことができる
検証では、Claude-3.5-sonnetがGPT-4oよりも高性能だった
ただしClaude-3.5においても、文献に無関係な文章が多く含まれすぎると、正しい読解ができなかった
適切な文献情報を探すというタスクに対しても、大規模言語モデルの活用は有効なことが分かった
キーワード検索やベクトル検索、ランキングモデルなどと比べても、モデルが大きい分、「いい感じ」に検索・情報抽出してくれる手応え得られてきた
推論コストの低下に伴い、大規模言語モデルによる文献抽出を現実的なコストで行える可能性が高まってきた
今後のTODO
今回行ったような調査の枠組みの自動化(エージェント化)
フレームワークの構築
ローカルモデルによる検索の低コスト化
今回行ったようなLLM付きのRAGの限界点の見極め
無制限に推論コストを上げたときに、精度はどのあたりで頭打ちするか
Inference Scaling for Long-Context Retrieval Augmented Generation論文などとの整合性の確認
参照すべきデータのサイズが増えたときに、どの程度のペースで精度が落ちるか
知識グラフ系RAGとの比較
利点: 知識グラフは検索コストが低そう
課題: 知識グラフ生成のコスト、情報損失
…