Riiid AI Research team 2020년 2월 14일 논문 발간
Overview
💡 어떤 학생이 문제를 푼 히스토리가 주어졌을 때, 모델은 새로운 문제를 학생이 맞출지 여부를 예측. 이때 모델(SAINT)은 transformer의 self-attention을 활용한다.
- SAINT 모델 이전에 어텐센을 적용한 모델(ex. SAKT model)은 input 데이터(ex. IRT)의 복잡한 관계를 반영하지 못했다.
- SAINT 모델은 input 데이터의 적절한 활용을 제안하여 EdNet 데이터 셋(=KT 모델 관련 밴치마크 데이터셋)에 대해 좋은 성능을 보였다.
- SAINT 모델이 input 데이터를 활용하는 방법은 다음과 같다.
- Encoder-Decoder transformer architecture 사용
- 인코더에서 문제 관련된 정보를 사용
- 디코더에서 학생이 문제를 맞췄는지 틀렸는지 관련된 정보를 사용
SAINT
💡 Model archi는 transformer encoder-decoder로 구성되어 있음.
- 인코더에서 문제 관련된 정보를 input으로 사용.
- 디코더에서 문제 반응 정보를 input으로 사용.
Model architecture
- Transformer encoder-decoder 구조
- Q, K, V를 어떻게 사용할지 고민을 많이 했다고 함
- 실제 학생이 공부한다고 생각하며 구성.
k번째 문제를 풀 때에는 k-1개의 문제 관련된 정보만 알고 있음 - K번째 문제를 맞췄는지 예측하기 위해 K-1개의 문제 embedding vector를 사용
- Masking을 적용하여 현재 지점(k)을 예측함에 있어 앞의 시퀀스(k-1)에만 의존하도록 제한
- 실제 학생이 공부한다고 생각하며 구성.
Input datasets
- Encoder
- Exercise ID: A latent vector is assigned to an ID unique to each exercise.
- Exercise category: 각각의 exercise가 속하는 categoty.
- Position
- input sequence에 있는 exercise나 response의 위치. 포지션 임베딩은 exercise나 response 공유
- Decoder
- Position
- input sequence에 있는 exercise나 response의 위치. 포지션 임베딩은 exercise나 response 공유
- Response: 학생의 정오답 여부 1:정답, 0:오답
- Position
Model output
- 새로운 exercise(문제)를 학생이 맞출지 여부를 예측
- Model output은 해당 exercise를 맞췄다 or 틀렸다로 나옴
- 확률을 구하기 위해 마지막에 sigmoid를 통과시켜 확률 값을 반환
- [0, 1] 범위의 확률로 threshold를 설정하여 threshold 이하면 틀렸다, 이상이면 맞췄다.
Model Performance
데이터셋 → EdNet-KT1
💡 Android, iOS 및 웹을 통해 제공되는 한국의 780,000명 이상의 사용자가 있는 다중 플랫폼 AI 튜터링 서비스인 Santa에서 2년 동안 수집한 모든 학생 시스템 상호 작용의 데이터 세트
- 즉, articial intelligence tutoring system인 산타토익 어플에서 수집된 로그 데이터
https://github.com/riiid/ednet
결과
💡 exercise와 response의 관계를 잘 포착하여 모델의 성능이 좋아짐
- 정확도와 AUC 모두 기존의 SOTA 모델 압도
- layer=4, d_model=512일 때 가장 좋은 성능
References
논문
https://arxiv.org/pdf/2002.07033.pdf
논문 리뷰
https://aimaster.tistory.com/54
배포된 코드
💡 SAINT의 저자인 Riiid에서 공식적으로 공개한 pre-trained model이나 source code는 없음
- 다만 유저들이 직접 github, kaggle에 업로드한 것들은 찾을 수 있었음
- 어떤 코드가 괜찮은 코드인지 검토 필요
https://github.com/Shivanandmn/Knowledge-Tracing-SAINT
https://github.com/arshadshk/SAINT-pytorch
반응형
'Broad AI without NLP > Education' 카테고리의 다른 글
[이모저모] 플랫폼을 만들기 위해서는 무엇이 필요 할까? (0) | 2022.08.24 |
---|---|
[Mathpresso] 콴다에서 AI 기술 활용 정리 (1) | 2022.08.24 |
Knowledge Tracing datasets (0) | 2022.06.23 |
[SAINT+] Integrating Temporal Features for EdNet Correctness Prediction (0) | 2022.06.23 |
[SAKT] A Self-Attentive model for Knowledge Tracing (0) | 2022.06.22 |
댓글