NTTドコモR&Dの技術ブログです。

データ分析コンペKDDCUP 2025 CRAG-MM Challenge 特別部門賞解法

・データ分析コンペであるKDDCUP 2025にて、2部門で特別賞を受賞した解法を紹介します。

・論文は公開され次第追記します。  

はじめに

NTTドコモ クロステック開発部の吉川です。 ドコモR&Dでは、データマイニング国際学術会議であるKDDで開催されているKDDCUPに毎年参加しており、KDDCUP 2025のMeta CRAG-MM Challengeにおいて、256チームが参加する中、2部門で特別賞をいただくことができました。 カナダのトロントに現地参加し、ドコモチームの発表と他の上位チームの発表を聴講してきましたのでドコモの解法を紹介します。

受賞時の記念写真

現地参加の様子はこちらの記事を参照ください。

nttdocomo-developers.jp

また、本コンペの上位チーム解法はこちらの記事を参照ください。

nttdocomo-developers.jp

タスク説明

Meta CRAG-MM Challengeは、スマートグラス視点で撮影された日常的な画像と自然言語の質問を対象に、Visual Language Model(VLM) + RAG のシステム性能を実世界シナリオで評価することを目的としています。タスクは段階的に異なる推論能力を評価する3つに分かれています。

タスク設定

  • Task1(Single-source Augmentation):外部情報として画像検索のみを活用回答する
  • Task2(Multi-source Augmentation):画像検索に加え、テキスト検索を活用して回答する
  • Task3(Multi-turn QA):Task2に加え連続した会話履歴をもとに文脈に一致した回答をする

上記のタスクに対し、LLaMA 3.2 11B / 90B Vision-Instructを使用することが求められており、さらに与えられたナレッジグラフである画像検索・テキスト検索などの外部知識を活用することで信頼性の高い回答を生成することを目指します。 またコンペ主催者からはベースコードが提供されており、それに沿った実装で提出をします。

4種類の質問

データセットとして、合計5,000枚の画像とそれに関する質問とその答えが与えられ、上記のような4種類の質問が含まれています。 質問のジャンルごとに特別賞があり、今回ドコモチームは「間接的な質問(Multi-hop Question)」「推論的な質問(Reasoning Question)」で入賞することができました。

KDD2025結果

評価方法

本コンペの評価は、自動評価(GPT-4o)と人間による評価の両方を採用し、以下のようなスコアリング方式で評価を行っています

  • Perfect (+1点):完璧な正解
  • Acceptable (0.5点):軽微な誤りを含む回答の場合
  • Missing (0点):「I don't know」と回答がない場合
  • Incorrect(-1点):間違っているか、質問と無関係な回答の場合(ハルシネーション)

今回のタスクの場合、誤った回答をAIがしてしまうハルシネーションの場合、大きくマイナスの評価をされてしまうため、回答できない問題は「I don’t know」と答えハルシネーションを抑制することが重要となっています。

ドコモチームの解法

ドコモチームは、ハルシネーションの抑制のために「教師データ作成パイプライン」と「推論パイプライン」の2つを構成しました。

教師データ作成パイプライン

モデルが回答できない問題に対しては、分からないと回答できるようハルシネーションの抑制が重要です。そのための信頼性の高い教師データを作成します。 教師データは、画像、質問、外部APIから取得したコンテキストで構成されます。

Task1: 教師データ作成パイプライン
Task2&3: 教師データ作成パイプライン

構成は上記のように、データ準備、初期の回答生成、評価(と選定)、再構築の4ステップからなります。 このように、LLaMA 3.2 11Bで教師データを生成し、より高性能なモデルでチェックを行うことで、教師データがより信頼性の高いものになります。

Task1

Step1.データ準備(Data Preparation):画像と質問に加え、画像検索APIから得られたメタデータをテキスト化し、コンテキストとして用意します。画像検索APIは、画像を投げると類似画像とその写真の物体名や説明などがメタ情報が得られるといったものでした。

Step2.初期の回答生成(Initial Output Generation):ベースモデル(LLaMA 3.2 11B)を使用し、構造化されたChain-of-Thought(CoT)形式で回答を生成させました。CoTプロンプトはといったタグを利用して、画像からわかる情報やモデル自身の知識、外的知識を活用して生成するように指示したり、等のXMLタグを活用して設計することで論理の飛躍による回答の不正解を抑制しました。 また、複数の温度によって生成させることで合計11個の回答候補を生成し、正解が含まれる可能性を高めました。

Step3.回答の評価と選定(Answer Evaluation and Selection):生成された回答候補を、GPT-4o-miniで評価します。評価は、正しいタグを用いているかの構文的な正しさ評価と回答が正しいか(Correct/Missing/Incorrect)の評価を行います。また、それらの評価が高いものを最終的な回答候補とします。

Step4.回答の再構築(Output Refinement):評価された一部の回答に対し、GPT-4oを用いて修正を行います。タグが間違った場合は、その構文のみを修正し、回答が誤っていた場合は「I don't know」と変更を行います。

Task2&3

Task2&3は、同様の手順でデータ作成を行いましたが、以下の点で異なるアプローチで教師データを作成しました。

Step1.データ準備 (Data Preparation):Task1と異なり、検索クエリをテキストで投げることで、Webページのスニペット情報をコンテキストとして得ることができるWEB検索APIを利用できます。 画像のメタ情報と比較して、Webスニペット情報には回答に関する情報が含まれる場合がおおかったため、より画像や質問に関連がある情報を引っぱって来れるように、検索クエリの生成をベースモデル(LLaMA 3.2 11B)で行いました。またその際には「具体的なキーワードを含む」ように指示をし、本の名前や車の名前などのキーワードを含んだ検索クエリを生成させます。

質問: "When was this book published?"
検索クエリの例:"The Immortal Life of Henrietta Lacks" publication date
WEB検索結果の例:"The Immortal Life of Henrietta Lacks is a non-fiction book by American author Rebecca Skloot. It was published by Crown Publishing Group on February 2、 2010..."

Step2.初期の回答生成(Initial Output Generation):Task2&3ではCoTに用いるタグと複数回答の生成を廃止し、シンプルにQ&A方式のプロンプトを採用することで生成速度を向上させました。

Step3.回答の評価(Answer Evaluation):生成された回答候補を、GPT-4o-miniで評価します。CoTタグを用いていないため、回答が正しいかの評価(Correct/Missing/Incorrect)のみを行います。

Step4.回答の再構築(Output Refinement):Webスニペット情報には回答直結する内容が含まれる場合がおおかったため、初期の回答が間違って(Missing/Incorrect)いても、Webスニペット情報から正解が導けるとGPT-4oが判断できる場合は、正解の回答に教師データを書き換えます。これにより、ベースモデルが自力では答えられなかった問題も外部情報から回答を導けるように学習することができます。

モデル学習

教師データ作成パイプラインで作成した教師データを用いてベースモデル(LLaMA 3.2 11B)での学習(ファインチューニング)を行います。また、ファインチューニングでは、LoRAやDORAを用いて効率的に性能向上を図りました。

学習率とハルシネーションの関係

学習率のパラメータ調整も行いました。実験の結果、学習率を低くすると、より多くの正解を導き出せるようになりますが、同時にハルシネーションを生成する率も上がってしまうというトレードオフの関係が確認されました。 このバランスが最もよいパラメータを選択します。

推論パイプライン

Task1推論パイプライン

Task1:

Task1では、教師データ作成パイプラインと同様、検索・生成が大きな流れですが、より品質の高い回答を行うために上記の図のような6段階のパイプラインとしました。 なお、利用しているモデルは全てLLaMA 3.2 11Bとなり、教師データで学習済みのモデルを利用しています。

Step1.入力処理(Input):画像と質問を受け取り、12サンプルのバッチ処理を行います。

Step2.外部コンテキスト検索(Retrieve External Context):画像検索APIを使用し、入力画像に類似した画像を50件とそのメタ情報を取得します。

Step3.検索クエリの生成(Generate Text Query):質問と画像に対する回答を検索するためのクエリを生成します。

Step4.リランキング(Rerank):検索クエリとメタ情報との類似度をBAAI/bge-reranker-v2-m3で計算し、50件のメタ情報から最も関連度の高いものを1つ選定します。

Step5.回答生成(Answer):リランクされたコンテキスト・画像・質問を入力とし、(推論過程)と(最終回答)を用いて構造化された回答を生成します。

Step6.検証(Verification):推論過程と最終回答を評価し、モデルを用いて矛盾していないかを評価します。また、モデルが曖昧な回答をしている("probably"や"might"が含まれている)場合は「I don't know」に回答を変更することで回答のハルシネーションを抑制します。

Task2&3推論パイプライン

Task2&3

Task2&3では、Task1をシンプルにした形となります。

Step1.入力処理(Input):Task 3の場合: ここで「対話履歴」も入力に追加し、マルチターン会話に対応させます。

Step2.検索クエリの生成(Generate Text Query):質問と画像から、Web検索に適したキーワードを含む検索クエリを生成します。

Step3.外部コンテキスト検索(Retrieve External Context):Web検索APIを使用し、上位3件のテキスト結果を取得します。画像検索APIはノイズが多いため、Task2&3では使用しませんでした。

Step4.回答生成(Answer):Webコンテキスト・画像・質問を入力とし、回答を生成します。(推論過程)を使用せず、シンプルな生成を行いました。

最後に

改めて、KDDCUP2025 MetaCRAG challengeにおいて受賞することができ非常に嬉しく思います。今回Large Language Models(LLM)を利用したコンペは私自身初めてだったのですが、チームで様々な手法を共有しあうことで、一人ではたどりつけないようなノウハウを学ぶことができました。

また、コンペティション終了後も上位のチームの面白い解法が大変勉強になったりと、今後も様々なコンペに参加していきたいなと思います!