AkihikoWatanabe / paper_notes

たまに追加される論文メモ
https://AkihikoWatanabe.github.io/paper_notes
15 stars 0 forks source link

When is Deep Learning the Best Approach to Knowledge Tracing?, Theophile+ (Ken Koedinger), CMU+, JEDM'20 #451

Open AkihikoWatanabe opened 2 years ago

AkihikoWatanabe commented 2 years ago

https://jedm.educationaldatamining.org/index.php/JEDM/article/view/451

AkihikoWatanabe commented 2 years ago

下記モデルの性能をAUCとRMSEの観点から9つのデータセットで比較した研究

DKT、およびLogistic Regressionが最も良い性能を示し、DKTは5種類のデータセットで、Logistic Regressionは4種類のデータセットでbestな結果を示した。 SAKTは #417 で示されている結果とは異なり、全てのデータセットにおいてDKTの性能を下回った。 また、データセットのサイズがモデルのパフォーマンスに影響していることを示しており、 小さなデータセットの場合はLogistic Regressionのパフォーマンスがよく、 大きなデータセットの場合はDKTの性能が良かった。 (アイテムごとの学習者数の中央値、およびKCごとの学習者数の中央値が小さければ小さいほど、Logistic Regressionモデルが強く、DLKTモデルはoverfitしてしまった; たとえば、アイテムごとの学習者数の中央値が1, 4, 10とかのデータではLRが強い; アイテムごとの学習者数の中央値が仮に大きかったとしても、KCごとの学習者数の中央値が少ないデータ(200程度; Spanish)では、Logistic Regressionが強い)。 加えて、DKTはLogistic Regressionと比較して、より早くピークパフォーマンスに到達することがわかった。

AkihikoWatanabe commented 2 years ago

ちなみに、一つのアイテムに複数のKCが紐づいている場合は、それらを組み合わせ新たなKCを作成することで、DKTとSAKTに適用したと書いてある(この辺がずっと分かりづらかった)。

AkihikoWatanabe commented 2 years ago

データセットの統計量はこちら: image

AkihikoWatanabe commented 2 years ago

データセットごとに、連続して同じトピックの問題(i.e. 連続した問題IDの問題を順番に解いている)を解いている割合(i.e. どれだけ順番に問題を解いていっているか)を算出した結果が下図。 同じトピックの問題を連続して解いている場合(i.e. 順番に問題を解いていっている場合)に、DKTの性能が良い。

image

AkihikoWatanabe commented 2 years ago

またパフォーマンスに影響を与える要因として、学習者ごとのインタラクション数が挙げられる。ほとんどのデータセットでは、power-lawに従い中央値が数百程度だが、bridge06やspanishのように、power-lawになっておらず中央値が数千といったデータが存在する。こういったデータではDKTはlong-termの情報を捉えきれず、高い性能を発揮しない。

image

AkihikoWatanabe commented 2 years ago

実験に利用した実装はこちら:https://github.com/theophilee/learner-performance-prediction

ただ、実装を見るとDKTの実装はオリジナルの論文とは全く異なる工夫が加えられていそう https://github.com/theophilee/learner-performance-prediction/blob/master/model_dkt2.py これをDKTって言っていいの・・・? オリジナルのDKTの実装はDKT1として実装されていそうだけど、その性能は報告されていないと思われる・・・。 DKT1の実装じゃないと、KCのマスタリーは取得できないんでは。

追記:と思ったら、DKTのAblation Studyで報告されている Input/Output をKC, Itemsで変化させた場合のAUCの性能の変化の表において、best performingだった場合のAUCスコアが9つのデータセットに対するDKTの予測性能に記載されている・・・。 じゃあDKT2はどこで使われているの・・・。

AkihikoWatanabe commented 2 years ago

DKTは、inputとしてquestion_idを使うかKCのidを使うか選択できる。また、outputもquestion_idに対するprobabilityをoutputするか、KCに対するprobabilityをoutputするか選択できる。 これらの組み合わせによって、予測性能がどの程度変化するかを検証した結果が下記。 KCをinputし、question_idをoutputとする方法が最も性能が良かった。

image

明記されていないが、おそらくこの検証にはDKT1の実装を利用していると思われる。input / outputをquestionかKCかを選べるようになっていたので。 実際にIssueでも、assistments09のAUC0.75を再現したかったら、dkt1をinput/output共にKCに指定して実行しろと著者が回答している。

ちなみに論文中の9つのデータセットに対するAUCの比較では、各々のモデルはKCに対して正答率を予測しているのではなく、個々の問題単位で正答率を予測していると思われる(実装を見た感じ)。