T Taisei / PORTFOLIO

PROJECT / 少ない質問で理解度を推定する

少ない質問で理解度を推定する

Knowledge Graphを基に、人間の知識推定を行う仕組み際に使用するシステムの開発

pythonKnowlegeGraphAI

TECHNICAL NOTE

少ない質問で「どこを復習するとよさそうか」を考える仕組み

「微分が苦手ですか?」と一問だけ聞いても、どこでつまずいているかは分かりません。極限が苦手なのか、微分法則があやふやなのか、応用だけが難しいのかは別の話です。

だからといって、知識を一つずつ全部聞くと質問が増えます。そこで作っているのが、答えを聞くたびに、次に聞く一問を選び直す仕組みです。

今の段階では試作です。実際の人の回答で役立つと確認できたわけではありません。ここでは、何を作っていて、今どこまで分かっているかを普通の言葉でまとめます。

まず、知識のつながりを並べる

知識を点、知識どうしの関係を線として並べます。たとえば微分なら、「極限」は「微分の定義」より前に出てくる知識です。

説明文が似ている知識も見つけます。内部ではコサイン類似度という計算を使っていますが、「説明文がどれくらい似ているかを見る物差し」くらいに考えれば大丈夫です。

関係は、次の三つに分けています。

関係ざっくり言うと使い方
equivalentほぼ同じことを聞いている代表して一問だけ聞く候補にする
similar関係はあるが別のこと回答を少しだけ参考にする
prerequisite先に知っておきたいこと基礎から考えるために使う

equivalent は文章の似方だけでは決めません。「何を聞く質問か」「答え方は同じか」「何について聞いているか」も一致して、初めて同じ質問の候補にします。

下の図では、灰色の線が説明文の近さ、黒い矢印が前後関係、赤い矢印が基礎から応用へ進む順番です。

微分の知識のつながり

答えるたびに、次の一問を選び直す

この仕組みには便宜上GIADという名前を付けています。名前は忘れても大丈夫です。

やっていることは次の繰り返しです。

  1. 最初は、各知識を「分かっているか、まだ分からないか半々」と考える
  2. 候補の問題を一問ずつ見て、正解でも不正解でも何が分かるかを考える
  3. 一番判断の助けになりそうな一問を出す
  4. 答えを受け取り、知識ごとの見立てを更新する
  5. まだよく分からない大事なところがあれば、次の一問を選ぶ

例えば「極限」の問題を間違えた場合、極限そのものを苦手かもしれないと考えます。同時に、極限を土台にする「微分の定義」も少し慎重に見ます。ただし、極限を間違えたからといって微分を全く分からないと決めつけるわけではありません。

すでに十分に分かっていそうなところを何度も聞かないのがポイントです。

Ollamaを使うところ、使わないところ

Ollamaの llama3.2gemma4 は、問題文のたたき台を作る補助として使えます。

一方で、「次に何を聞くか」や「どこが苦手そうか」を決める部分には使いません。そこは毎回同じ計算で動くようにしています。

実際に試すと、問題の形は作れましたが、傾きの式の記号を誤る例もありました。AIが作った問題を、そのまま出すのは危険です。内容を確認する人は必要です。

いまの試し方

本当は、多くの人に全問題へ答えてもらい、少ない問題だけの場合と比べたいところです。まだそのデータがないため、今は仮想の回答を作って試しています。

方法内容
Random問題をランダムに選ぶ
Independent CAT知識のつながりを使わずに選ぶ
GIAD知識のつながりも少し使って選ぶ

見る数字は二つです。

仮想の回答での比較

今の結果では、GIADは「復習した方がよさそうな場所」を見つける方では良い数字になりました。一方で、全ての知識の理解度を細かい数字で当てる方では、まだ弱いです。

微分では、GIADを4問だけ出したときの「復習候補を見つける数字」が、別の方法で8問出したときに近いところまで行きました。少ない問題で絞り込めるかもしれない、という手がかりです。ただし仮想の回答での話なので、実際の人についての結論ではありません。

途中で見つかったこと

最初の試しでは、問題を増やすほど結果が悪くなる不自然な動きが出ました。調べると、答えを作る側と、見立てる側で前提がそろっていませんでした。

仮想回答の作り方を直すと、問題数が増えるにつれて結果が良くなる自然な動きになりました。仕組みを作る途中では、こうした確認も大切です。

アンケートにも使えるか

考え方は、アンケートにも使えます。知識テストでは正解・不正解から理解度を考えます。アンケートでは、5段階評価などから満足度や推奨意向を考えます。

知識テストアンケート
知識のつながりを見る質問どうしの重なりを見る
正解・不正解を使う満足・不満などの答えを使う
復習候補を探す満足度や傾向を知る

例えば、サービス調査に次の質問があるとします。

Q1: このサービスに満足している
Q2: サービスの品質に満足している
Q3: 友人に勧めたい
Q4: 再び利用したい

Q1とQ2は近い質問です。Q3とQ4は関係しますが、同じ質問ではありません。Q1とQ3へ答えてもらった後で、「次はどれを聞けば、まだ分からない部分を一番減らせるか」を考えます。

固定で「必ず5問」とするより、はっきりした回答の人には早く終わり、判断しにくい人にだけ追加で聞く方が自然です。

アンケート用にするには、正解・不正解ではなく5段階・7段階の答えを扱えるように変える必要があります。また、文章が似ているだけで質問をまとめず、実際の答え方を見てから判断します。

おわりに

大事なのは、AIに全部を任せることではありません。知識や質問のつながりを見える形にして、答えを聞くたびに次の一問を選び直すことです。

まずは「少ない質問で、復習した方がよさそうなところを見つけられるか」を丁寧に試します。将来Collectorの回答が集まったら、実際の結果でも確かめます。

参考にしたもの

← プロジェクト一覧へ戻る