3 minute read

A self-Attentive model for Knowledge Tracing(SAKT)

0. Abstract

  • 과거 모델(DKT, DKVMN)은 실제 데이터에서 학생들이 적은 Knowledge Concept(KC)과 상호작용하는 Sparse data를 일반화하는데 어려움을 가진다.
  • 주어진 문제의 KC에 연관된 과거 학생이 푼 KC들을 확인하고, 그 소수의 연관된 KC들을 이용해 학생의 숙달도를 예측하는 접근법을 생각했다.
  • KC들 간의 연관성을 파악하기 위해, self-attention기법 기반의 모델 SAKT를 만들었다.

1. 개요

  • KT(Knowledge Tracing)는 학생의 과거 상호작용(문항과 그 답) X = ($x_{1}, x_{2}, … x_{t}$)를 기반으로 다음 풀이 $x_{t+1}$를 예측하는 것이다.
  • 과거 모델인 DKT는 하나의 요약된 vector으로 RNN모델을 기반으로 만들어졌고, DKVMN은 문항과 기저 개념간의 관계를 표현하는 key와 학생의 지식 상태를 표현하는 value, 두 metrix를 이용해 만들어졌으나, 위와 같은 RNN계열 모델들은 sparse data를 다루는데 있다고 한다.
  • 이 모델은 그런 문제를 해결하기 위해 ‘Transformer’의 Attention 기법을 가져와 사용하였다. 학생들의 과거 상호작용에서 관계(relevant) 있는 KC들을 찾고, 이 KC들에 대한 학생의 수행능력을 기반으로 예측한다.
  • 이때 SAKT는 이전에 답한 문항에 가중치를 부여하면서 특정 문항에 대한 학생의 수행능력을 예측한다.

image.png

  • 위 그림은 SAKT의 구조를 표현했다. 이때 각 시점에서 주의할 것은 오직 이전 element만을 이용해 예측한다.

image.png

  • 위 그림은 embedding layer를 표현했다. 과거 상호작용들은 interaction embedding layer에서 key와 value로 임베딩되고, 현재 학생이 푸는 문항은 question embedding layer에서 query로 임베딩된다.

2. 모델 구조

  • SAKT는 과거 상호작용 시퀀스인 X = ($x_{1}, x_{2}, … x_{t}$)을 기반으로 다음 문항인 $e_{t+1}$에 대한 대답을 예측하는 것이다.
  • 상호작용 $x_{t}$는 문항 $e_{t}$와 응답 $r_{t}$ 두 개의 튜플 형식으로 이뤄져있다. 이때 전체 문항 갯수가 N개라고 할 때 상호작용 시퀀스는 $y_{t} = e_{t} + r_{t}$ X N으로, 2N개로 표현한다. 문항 시퀀스는 그냥 N개로 표현한다.

Embedding Layer

  • embedding 전에 모델에서 다루기 쉽게 t길이의 시퀀스를 n길이의 시퀀스로 만든다. n보다 t가 크면 시퀀스를 자르거나 반대라면 padding을 하는 방식이다.
  • Interaction embedding matrix : M (2E X d). 이때 d는 임베딩차원
  • Exercise embedding matrix : E (E X d)
  • Position embedding matrix : P (n X d). 이는 상호작용 시퀀스의 위치정보를 주기 위한 matrix
  • 상호작용 임베딩해서 나온 M과 포지션 임베딩해서 나온 P를 row 별로 더하면 된다.

image.png

Self-Attention Layer

  • scaled dot-product attention 매커니즘을 이용한다.
  • 현재 문항의 응답을 예측하기 위해 과거에 풀었던 문항들끼리의 연관성을 찾아내는 작업이다.
  • $\hat M, \hat E$는 아래의 식을 따라 projection matrix와 곱하여 query (Q), key (K), value (V) matrix로 선형 변환한다.
    • $Q(query) = \hat E W^Q, K(key) = \hat M W^K, V(value) = \hat M W^V$ 이때 $(W^Q, W^K, W^V (d X d))$
  • attention weight를 찾기 위해 아래의 식을 수행한다.
    • $Attention(Q,K,V) = softmax({QK^T \over \sqrt d})V$
  • 다양한 space에서 attention하는 정보를 얻기 위해 h개의 다른 projeciton matrix를 이용한다. (Multi-head attention)
    • $Multihead(\hat M, \hat E) = Concat(head_1, head_2, …, head_h)$
    • $head_i = Attention(\hat E W^Q_i,\hat M W^K_i,\hat M W^V_i)$
  • 다만 미래 문항정보를 보고 예측에 활용하는 문제를 막기 위해 mask를 이용해야한다.

Feed Forward Layer & Prediction Layer

  • multihead layer S의 row들는 결국 weighted sum된 value V, 즉 선형결합된 value $V_{i}$다. 더 좋은 결과를 얻기 위해 비선형결합을 해준다.
    • $F = FFN(S) = ReLU(SW^1 + b^1)W^2 + b^2$
  • 마지막으로 한번 더 fully-connected layer를 지나고 sigmoid activation을 통해 최종적으로 예측값을 구한다
    • $p_{t} = Sigmoid(F_{t}w +b)$

Training

  • 예측값 $p_{t}$와 실제 레이블 $r_{t}$와의 cross entropy loss를 최소화 하는 방식으로 학습을 진행한다.
    • $L = - \sum_t (r_{t}log(p_{t}) + (1 - r_{t})(1 - log(p_{t}))$
  • 데이터의 80%는 train용 나머지는 test용으로 사용했다. 이전 연구들과 같이 hidden state dimention d = {50,100,150,200}에서 시행했고, Adam optimizer(learning rate=0.001), batch size는 128, drop out ration는 0.2, 최대 시퀀스 길이 n은 학생 당 문항 수에 비례하여 잡았다.

3. Performance

  • Synthetic, ASSISTment 2009, ASSISTment 2015, ASSISTment Challenge, STATICS 2011 5개의 데이터셋에 대한 DKT, DKT+, DKVMN, SAKT 4개 모델의 정오답 예측 성능을 비교했다. SAKT는 모든 데이터셋에 대해 이전 모델들보다 더 높은 예측 정확도를 보였다.

image.png

Atention weights visualization & Clustering concepts

  • attention weight를 시각화 하는 것은 어떤 과거 문항이 현재 풀 문항과 연관이 깊은지 보여줄 수 있다. image.png
  • relevace matrix를 이용해 attention weight가 큰 관계를 clustering하여 그래프로 만들 수 있다. image.png

내 생각

  • 기존 RNN계열 자연어처리에서 Transformer이 등장한 이후 큰 발전한 것처럼 KT모델에도 self-attention을 적용시켰다는 점이 흥미롭고 큰 발전을 이룰 수 있지 않을까 기대되는 논문이었다.

Updated: