Coder Social home page Coder Social logo

p4-dkt-no_caffeine_no_gain's Introduction

๐Ÿ“ No Caffeine No Gain


ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ : 2021.05.24 ~ 2021.06.15

ํ”„๋กœ์ ํŠธ ์ฃผ์ œ : Deep Knowledge Tracing

[๋ชฉ์ฐจ]



[Deep Knowledge Tracing ์†Œ๊ฐœ]

DKT๋Š” Deep Knowledge Tracing์˜ ์•ฝ์ž๋กœ ์šฐ๋ฆฌ์˜ "์ง€์‹ ์ƒํƒœ"๋ฅผ ์ถ”์ ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค.


๋Œ€ํšŒ์—์„œ๋Š” ํ•™์ƒ ๊ฐœ๊ฐœ์ธ์˜ ์ดํ•ด๋„๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ง€์‹ ์ƒํƒœ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ผ๋ณด๋‹ค๋Š”, ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋งž์ถœ์ง€ ํ‹€๋ฆด์ง€ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.



[Installation]

Dependencies

  • torch
  • pandas
  • sklearn
  • pycaret
  • tqdm
  • wandb
  • easydict
  • pytorch-tabnet
pip install -r requirements.txt


[Usage]

Dataset

ํ•™์Šต์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ .py ํŒŒ์ผ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$ p4-dkt-no_caffeine_no_gain# python make_elapsed.py
$ p4-dkt-no_caffeine_no_gain# python make_fixed_data.py

Train

๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” train.py ๋ฅผ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

์•„๋ž˜ Arguments ์— ์žˆ๋Š” argument ์ค‘ ํ•„์š”ํ•œ argumet ๋ฅผ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$ p4-dkt-no_caffeine_no_gain# python train.py

์ด 7๊ฐ€์ง€์˜ ๋ชจ๋ธ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • TABNET
  • LASTQUERY
  • SAINT
  • LGBM
  • BERT
  • LSTMATTN
  • LSTM

Inference

ํ•™์Šต๋œ ๋ชจ๋ธ๋กœ ์ถ”๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” inference.py ๋ฅผ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ argument ๋Š” โ€”-model_name ๊ณผ โ€”-model_epoch ์ž…๋‹ˆ๋‹ค.

$ p4-dkt-no_caffeine_no_gain# python inference.py --model_name "ํ•™์Šตํ•œ ๋ชจ๋ธ ํด๋” ์ด๋ฆ„" --model_epoch "์‚ฌ์šฉํ•˜๊ณ ํ”ˆ ๋ชจ๋ธ์˜ epoch"

Arguments

train ๊ณผ inference ์—์„œ ํ•„์š”ํ•œ argument ์ž…๋‹ˆ๋‹ค.

# Basic
--model: model type (default:'lstm')
--scheduler: scheduler type (default:'plateau')
--device: device to use (defualt:'cpu')
--data_dir: data directory (default:'/opt/ml/input/data/train_dataset')
--asset_dir: asset directory (default:'asset/')
--train_file_name: train file name (default:'add_FE_fixed_train.csv')
--valid_file_name: validation file name (default:'add_FE_fixed_valid.csv')
--test_file_name: test file name (default:'add_FE_fixed_test.csv')
--model_dir: model directory (default:'models/')
--num_workers: number of workers (default:1)
--output_dir: output directory (default:'output/')
--output_file: output file name (default:'output')
--model_name: model folder name (default:'')
--model_epoch: model epoch to use (default:1)

# Hyperparameters
--seed: random state (default:42)
--optimizer: optimizer type (default:'adamW')
--max_seq_len: max sequence length (default:20)
--hidden_dim: hidden dimension size (default:64)
--n_layers: number of layers (default:2)
--n_epochs: number of epochs (default:20)
--batch_size: batch size (default:64)
--lr: learning rate (default:1e-4)
--clip_grad: clip grad (default:10)
--patience: for early stopping (default:5)
--drop_out: drop out rate (default:0.2)
--dim_div: hidden dimension dividor in model to prevent too be large scale (default:3)

# Transformer
--n_heads: number of heads (default:2)
--is_decoder: use transformer decoder (default:True)

# TabNet
--tabnet_pretrain: Using TabNet pretrain (default:False)
--use_test_to_train: to training includes test data (default:False)
--tabnet_scheduler: TabNet scheduler (default:'steplr')
--tabnet_optimizer: TabNet optimizer (default:'adam')
--tabnet_lr: TabNet learning rate (default:2e-2)
--tabnet_batchsize: TabNet batchsize (default:16384)
--tabnet_n_step: TabNet n step(not log step) (default:5)
--tabnet_gamma: TabNet gamma (default:1.7)
--tabnet_mask_type: TabNet mask type (default:'saprsemax')
--tabnet_virtual_batchsize: TabNet virtual batchsize (default:256)
--tabnet_pretraining_ratio: TabNet pretraining ratio (default:0.8)

# Sliding Window
--window: Using Sliding Window augmentation (default:False)
--shuffle: shuffle Sliding Window (default:False)
--stride: Sliding Window stride (default:20)
--shuffle_n: Shuffle times (default:1)

# T-Fixup
--Tfixup: Using T-Fixup (default:False)
--layer_norm: T-Fixup with layer norm (default:False)

# Pseudo Labeling
--use_pseudo: Using Pseudo Labeling (default:False)
--pseudo_label_file: file path for Pseudo Labeling (default:'')

# log
--log_steps: print log per n steps (default:50)

# wandb
--use_wandb: if you want to use wandb (default:True)


[File Structure]

์ „์ฒด์ ์ธ File Structure ์ž…๋‹ˆ๋‹ค.

code
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ args.py
โ”œโ”€โ”€ make_custom_data
โ”‚   โ”œโ”€โ”€ make_elapsed.py - time ๊ด€๋ จ feature ์ƒ์„ฑ
โ”‚   โ”œโ”€โ”€ make_fixed_data.py - user ์ •๋‹ต๋ฅ  ๊ธฐ๋ฐ˜์œผ๋กœ valid ์ƒ์„ฑ
โ”‚   โ””โ”€โ”€ make_original_fixed_data.py - shuffleํ•ด์„œ valid ์ƒ์„ฑ
โ”‚
โ”œโ”€โ”€ dkt
โ”‚   โ”œโ”€โ”€ criterion.py
โ”‚   โ”œโ”€โ”€ dataloader.py
โ”‚   โ”œโ”€โ”€ metric.py
โ”‚   โ”œโ”€โ”€ model.py
โ”‚   โ”œโ”€โ”€ optimizer.py
โ”‚   โ”œโ”€โ”€ scheduler.py
โ”‚   โ”œโ”€โ”€ trainer.py
โ”‚   โ””โ”€โ”€ utils.py
โ”œโ”€โ”€ ensemble.py
โ”œโ”€โ”€ inference.py
โ”œโ”€โ”€ requirements.txt - dependencies
โ””โ”€โ”€ train.py



LSTM


  • sequence data๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ LSTM ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

  • ๊ตฌํ˜„

    model.py
    โ”œโ”€โ”€ class LSTM
    โ”‚   โ”œโ”€โ”€ init()
    โ””โ”€โ”€ โ””โ”€โ”€ forward() : return predicts
    
    args.py
    โ”œโ”€โ”€ args.max_seq_len(default : 20)
    โ”œโ”€โ”€ args.n_layers(default : 2)
    โ”œโ”€โ”€ args.n_heads(default : 2)
    โ””โ”€โ”€ args.hidden_dim(default : 64)
    


LSTMATTN


  • LSTM ๋ชจ๋ธ์— Self-Attention์„ ์ถ”๊ฐ€ํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

  • ๊ตฌํ˜„

    model.py
    โ”œโ”€โ”€ class LSTMATTN
    โ”‚   โ”œโ”€โ”€ init()
    โ””โ”€โ”€ โ””โ”€โ”€ forward() : return predicts
    
    args.py
    โ”œโ”€โ”€ args.max_seq_len(default : 20)
    โ”œโ”€โ”€ args.n_layers(default : 2)
    โ”œโ”€โ”€ args.n_heads(default : 2)
    โ””โ”€โ”€ args.hidden_dim(default : 64)
    


BERT


  • Huggingface ์—์„œ BERT ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, pre-trained ๋ชจ๋ธ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— Transformer-encoder ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ๋ชจ๋ธ์—์„œ๋Š” bert_config ์˜ is_decoder ๋ฅผ True ๋กœ ์ฃผ์–ด Transformer-decoder ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ตฌํ˜„

    model.py
    โ”œโ”€โ”€ class Bert
    โ”‚   โ”œโ”€โ”€ init()
    โ””โ”€โ”€ โ””โ”€โ”€ forward() : return predicts
    
    args.py
    โ”œโ”€โ”€ args.max_seq_len(default : 20)
    โ”œโ”€โ”€ args.n_layers(default : 2)
    โ”œโ”€โ”€ args.n_heads(default : 2)
    โ”œโ”€โ”€ args.is_decoder(default : True)
    โ””โ”€โ”€ args.hidden_dim(default : 64)
    


LGBM


  • tabular data์—์„œ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” Machine Learning ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

  • ๊ตฌํ˜„

    model.py
    โ”œโ”€โ”€ class LGBM
    โ”‚   โ”œโ”€โ”€ init()
    โ””โ”€โ”€ โ””โ”€โ”€ fit() : return trained model
    


SAINT


  • Kaggle Riiid AIEd Challenge 2020์˜ Host๊ฐ€ ์ œ์‹œํ•œ solution ์ž…๋‹ˆ๋‹ค.

  • Transformer์™€ ๋น„์Šทํ•œ ๊ตฌ์กฐ์˜ ๋ชจ๋ธ๋กœ Encoder์™€ Decoder๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ์ฝ”๋”๋Š” feature ์ž„๋ฒ ๋”ฉ ์ŠคํŠธ๋ฆผ์— self-attention ๋ ˆ์ด์–ด๋ฅผ ์ ์šฉํ•˜๊ณ  ๋””์ฝ”๋”์—์„œ self-attention ๋ ˆ์ด์–ด์™€ ์ธ์ฝ”๋”-๋””์ฝ”๋” attention ๋ ˆ์ด์–ด๋ฅผ ์‘๋‹ต ์ž„๋ฒ ๋”ฉ๊ณผ ์ธ์ฝ”๋”์˜ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์— ๋ฒˆ๊ฐˆ์•„ ์ ์šฉํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  • Paper Review : [Saint ๋ชจ๋ธ ๋ถ„์„]

  • ๊ตฌํ˜„

    model.py
    โ”œโ”€โ”€ class Saint
    โ”‚   โ”œโ”€โ”€ init()
    โ””โ”€โ”€ โ””โ”€โ”€ forward() : return predicts
    
    args.py
    โ”œโ”€โ”€ args.max_seq_len(default : 20)
    โ”œโ”€โ”€ args.n_layers(default : 2)
    โ”œโ”€โ”€ args.n_heads(default : 2)
    โ””โ”€โ”€ args.hidden_dim(default : 64)
    


LastQuery


  • Kaggle Riiid AIEd Challenge 2020์˜ 1st place solution์ž…๋‹ˆ๋‹ค.

  • transformer encoder์˜ ์ž…๋ ฅ์œผ๋กœ sequence์˜ ๋งˆ์ง€๋ง‰ query๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ด๊ณ , encoder์˜ output์„ LSTM์— ๋„ฃ์–ด ํ•™์Šตํ•˜๋Š” ๋ฐฉ์‹์˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

  • Paper Review : [Last Query Transformer RNN for knowledge tracing ๋ฆฌ๋ทฐ]

  • ๊ตฌํ˜„

    model.py
    โ”œโ”€โ”€ class LastQuery
    โ”‚   โ”œโ”€โ”€ init()
    โ””โ”€โ”€ โ””โ”€โ”€ forward() : return predicts
    
    args.py
    โ”œโ”€โ”€ args.max_seq_len(default : 20)
    โ”œโ”€โ”€ args.n_layers(default : 2)
    โ”œโ”€โ”€ args.n_heads(default : 2)
    โ”œโ”€โ”€ args.hidden_dim(default : 64)
    โ””โ”€โ”€ args.Tfixup(default : False)
    


TABNET


  • tabular data์—์„œ ML๋ชจ๋ธ๋ณด๋‹ค ๋” ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” Deep-learning model์ž…๋‹ˆ๋‹ค.

  • data์—์„œ Sparse instance-wise feature selection์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด์ ์œผ๋กœ ์ค‘์š”ํ•œ feature ์„ ๋ณ„ํ•ด๋‚ธ ํ›„ ํ•™์Šตํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ, feature ์„ ๋ณ„์‹œ non-linearํ•œ processing์„ ์‚ฌ์šฉํ•˜์—ฌ learning capacity๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

  • Sequentialํ•œ multi-step architecture๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ์œผ๋ฉฐ, feature masking์œผ๋กœ Unsupervised ํ•™์Šต๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • Paper Review : [Tabnet ๋…ผ๋ฌธ ๋ฆฌ๋ทฐ]

  • ๊ตฌํ˜„

    model.py
    โ”œโ”€โ”€ class TabNet
    โ”‚   โ”œโ”€โ”€ TabNetPreTrainer
    โ”‚   โ”œโ”€โ”€ TabNetClassifier
    โ”‚   โ”œโ”€โ”€ get_scheduler()
    โ”‚   โ”œโ”€โ”€ get_optimizer()
    โ””โ”€โ”€ โ””โ”€โ”€ forward() : return models
    
    trainer.py
    โ”œโ”€โ”€ tabnet_run(args, train_data, valid_data)
    โ”œโ”€โ”€ get_tabnet_model(args)
    โ””โ”€โ”€ tabnet_inference(args, test_data)
    
    train.py
    โ””โ”€โ”€ tabnet_run()
    
    args.py
    โ”œโ”€โ”€ args.tabnet_pretrain(default : False)
    โ”œโ”€โ”€ args.use_test_to_train(default : False)
    โ”œโ”€โ”€ args.tabnet_scheduler(default:'steplr')
    โ”œโ”€โ”€ args.tabnet_optimizer(default:'adam')
    โ”œโ”€โ”€ args.tabnet_lr(default:2e-2)
    โ”œโ”€โ”€ args.tabnet_batchsize(default:16384)
    โ”œโ”€โ”€ args.tabnet_n_step(default:5)
    โ”œโ”€โ”€ args.tabnet_gamma(default:1.7)
    โ”œโ”€โ”€ args.tabnet_mask_type(default:'saprsemax')
    โ”œโ”€โ”€ args.tabnet_virtual_batchsize(default:256)
    โ””โ”€โ”€ args.tabnet_pretraining_ratio(default:0.8)
    

[Input CSV File]

๋ฐ์ดํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ์ด๋ฉฐ, ํ•œ ํ–‰์€ ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ ๋ฌธํ•ญ์„ ํ’€์—ˆ์„ ๋•Œ์˜ ์ •๋ณด์™€ ๊ทธ ๋ฌธํ•ญ์„ ๋งž์ท„๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ Timestamp ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


  • userID ์‚ฌ์šฉ์ž์˜ ๊ณ ์œ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ์ด 7,442๋ช…์˜ ๊ณ ์œ  ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์œผ๋ฉฐ, train/test์…‹์€ ์ด userID๋ฅผ ๊ธฐ์ค€์œผ๋กœ 90/10์˜ ๋น„์œจ๋กœ ๋‚˜๋ˆ„์–ด์กŒ์Šต๋‹ˆ๋‹ค.
  • assessmentItemID ๋ฌธํ•ญ์˜ ๊ณ ์œ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ์ด 9,454๊ฐœ์˜ ๊ณ ์œ  ๋ฌธํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • testId ์‹œํ—˜์ง€์˜ ๊ณ ์œ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ๋ฌธํ•ญ๊ณผ ์‹œํ—˜์ง€์˜ ๊ด€๊ณ„๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ดํ•ดํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด 1,537๊ฐœ์˜ ๊ณ ์œ ํ•œ ์‹œํ—˜์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • answerCode ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๋ฌธํ•ญ์„ ๋งž์ท„๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ด์ง„ ๋ฐ์ดํ„ฐ์ด๋ฉฐ 0์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๋ฌธํ•ญ์„ ํ‹€๋ฆฐ ๊ฒƒ, 1์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๋ฌธํ•ญ์„ ๋งž์ถ˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • Timestamp ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น๋ฌธํ•ญ์„ ํ’€๊ธฐ ์‹œ์ž‘ํ•œ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.
  • KnowledgeTag ๋ฌธํ•ญ ๋‹น ํ•˜๋‚˜์”ฉ ๋ฐฐ์ •๋˜๋Š” ํƒœ๊ทธ๋กœ, ์ผ์ข…์˜ ์ค‘๋ถ„๋ฅ˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ์ž์ฒด์˜ ์ •๋ณด๋Š” ๋น„์‹๋ณ„ํ™” ๋˜์–ด์žˆ์ง€๋งŒ, ๋ฌธํ•ญ์„ ๊ตฐ์ง‘ํ™”ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 912๊ฐœ์˜ ๊ณ ์œ  ํƒœ๊ทธ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

[Feature]

elapsed: ์œ ์ €๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ์— ์†Œ์š”ํ•œ ์‹œ๊ฐ„

time_bin: ๋ฌธ์ œ๋ฅผ ํ‘ผ ์‹œ๊ฐ„๋Œ€(์•„์นจ, ์ ์‹ฌ, ์ €๋…, ์ƒˆ๋ฒฝ)

classification: ๋Œ€๋ถ„๋ฅ˜(ํ•™๋…„)

paperNum: ์‹œํ—˜์ง€ ๋ฒˆํ˜ธ

problemNum: ๋ฌธ์ œ ๋ฒˆํ˜ธ

user_total_acc: ์œ ์ €์˜ ์ด ์ •๋‹ต๋ฅ 

test_acc: ๊ฐ ์‹œํ—˜์ง€์˜ ํ‰๊ท  ์ •๋‹ต๋ฅ 

assessment_acc: ๊ฐ ๋ฌธ์ œ์˜ ํ‰๊ท  ์ •๋‹ต๋ฅ 

tag_acc: ๊ฐ ํƒœ๊ทธ์˜ ํ‰๊ท  ์ •๋‹ต๋ฅ 

total_used_time: ์œ ์ €๊ฐ€ ํ•˜๋‚˜์˜ ์‹œํ—˜์ง€๋ฅผ ๋‹ค ํ‘ธ๋Š”๋ฐ์— ์†Œ์š”ํ•œ ์‹œ๊ฐ„

past_correct: ์œ ์ €๋ณ„ ๊ณผ๊ฑฐ ๋งž์ถ˜ ๋ฌธ์ œ์˜ ์ˆ˜

past_content_count: ์œ ์ €-๋ฌธ์ œ๋ณ„ ๊ณผ๊ฑฐ์— ๋™์ผ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚œ ํšŸ์ˆ˜

correct_per_hour: ์‹œ๊ฐ„(hours)๋ณ„ ์ •๋‹ต๋ฅ 

same_tag: ๋™์ผ ํƒœ๊ทธ๋ฅผ ์—ฐ์†์œผ๋กœ ํ’€์—ˆ๋Š”์ง€ ์œ ๋ฌด(T/F)

cont_tag: ์—ฐ์†์œผ๋กœ ํ‘ผ ๋™์ผ ํƒœ๊ทธ ๊ฐœ์ˆ˜(0~)

etc...


[Contributors]



[Collaborative Works]

Gitflow ๋ธŒ๋žœ์น˜ ์ „๋žต

โ†’ 92๊ฐœ์˜ Commits, 26๊ฐœ์˜ Pull Requests



Github issues & projects ๋กœ ์ผ์ • ๊ด€๋ฆฌ

โ†’ 28๊ฐœ์˜ Issues



โ†’ Modeling Project ์—์„œ ๊ด€๋ฆฌ



Notion ์‹คํ—˜๋…ธํŠธ๋กœ ์‹คํ—˜ ๊ณต์œ 

โ†’ 39๊ฐœ์˜ ์‹คํ—˜๋…ธํŠธ



Notion ์ œ์ถœ๊ธฐ๋ก์œผ๋กœ ์ œ์ถœ ๋‚ด์—ญ ๊ณต์œ 

โ†’ 155๊ฐœ์˜ ์ œ์ถœ๊ธฐ๋ก



๐Ÿ“ Notion

ํ”ผ์–ด๋“ค์˜ Ground Rule, ์‹คํ—˜๋…ธํŠธ, ํ”ผ์–ด์„ธ์…˜ ๋“ฑ ํ•œ๋‹ฌ ๊ฐ„์˜ ํ–‰๋ณด๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด ๋‹ค์Œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.



[Reference]

Papers

Dataset

  • i-Scream edu Dataset

p4-dkt-no_caffeine_no_gain's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

p4-dkt-no_caffeine_no_gain's Issues

[Week2] ์ฃผ๊ฐ„ ๊ณ„ํš

LGBM - ์ฐฝ์šฐ

  • ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํ”ผ์ณ elapsed ๋“ฑ ๋„ฃ์–ด๋ณด๊ธฐ
  • train_must_exist_leaderboard, filter_option ๋“ฑ ์ˆ˜์ •ํ•ด๋ณด๊ธฐ
  • ๋ชจ๋ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ฐ•์˜ ์ ์šฉ

์ƒˆ ๋ชจ๋ธ

  • Last Query Transformer RNN - ์• ๋‚˜, ์œ ์ง„
  • Riiid ๋””์Šค์ปค์…˜๋ณด๊ณ  ์ƒˆ ๋ชจ๋ธ ์ฐพ์•„๋ณด๊ธฐ (๋งŽ์ด๋Š” ํ•„์š” ์—†์Œ)
  • ์ˆ˜์—…์— ๋‚˜์˜จ๊ฒƒ์ฒ˜๋Ÿผ ๊ณ ์œ  ํ•จ์ˆ˜ ์ถ”๊ฐ€ํ•ด๋ณด๊ธฐ (ELO) (https://www.kaggle.com/stevemju/riiid-simple-elo-rating)
  • Saint ๋ชจ๋ธ

Feature Engineering (5/31 ๊ฐ•์˜ ์ฐธ๊ณ ) - ์žฌ์šฐ

Data Augmentation - ํฌ์„

  • ์ง€๊ธˆ์€ ์œ ์ €id ๋กœ๋งŒ ๋ถ„๋ฆฌํ–ˆ๋Š”๋ฐ, ์‹œํ—˜์ง€๋‚˜ ํƒœ๊ทธ๋ณ„๋กœ๋„ ๊ทธ๋ฃน๋ฐ”์ดํ•ด์„œ ์ฆ๊ฐ•ํ•ด๋ณด์ž.

  • ํŠธ๋ ˆ์ธ๋ฐ์ดํ„ฐ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„ answercode ๋ฅผ -1 ๋กœ ๋ฐ”๊ฟ”์„œ ํ•™์Šตํ•ด๋ณด์ž

  • ํŠธ๋žœ์Šคํฌ๋จธ์“ธ๋•Œ ์ธ์ฝ”๋” ์–ดํ…์…˜ ๋ง๊ณ  ๋””์ฝ”๋” ์–ดํ…์…˜ ์จ๋ณด์ž

  • ์–ดํ…์…˜ ํ•  ๋–„ ์ค‘๊ฐ„์ค‘๊ฐ„์— MLM ์ฒ˜๋Ÿผ answercode ๋ฅผ ๊ฐ€๋ฆฌ๊ณ  ๋งž์ถ”๋Š” ํƒœ์Šคํฌ๋กœ๋„ ํ•ด๋ณผ๊นŒ? -> ์ธ์ฝ”๋” ์–ดํ…์…˜์“ฐ๋Š”๊ฑฐ ์•„๋‹Œ ์ด์ƒ max_seq ๋ฐ”๊ฟ”์ฃผ๋Š”๊ฑฐ๋ž‘ ๋‹ค๋ฅผ๊ฒŒ ์—†์„๋“ฏ

  • test data์˜ predict ๊ฐ’์„ ํ•จ๊ป˜ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•๋„ ๋งŽ์ด ์‚ฌ์šฉ๋จ ( ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ ์ง€๋Š” ๋ชจ๋ฅด์ง€๋งŒ ๋Œ€์ฒด์ ์œผ๋กœ ํ–ฅ์ƒ๋จ)
    image

[Day10] LastQuery

  • [Last Query Transformer RNN for knowledge tracing] ๋…ผ๋ฌธ ๋ฆฌ๋ทฐ
  • LastQuery Post Padding, Pre Padding ์ฝ”๋“œ ๋ฆฌ๋ทฐ
    -> ์˜คํ”ผ์Šค์•„์›Œ์—์„œ ์„ค๋ช…ํ•˜์‹  ๊ฒƒ ๊ฐ™์•„ ์ƒ๋žตํ•˜๊ฒ ์Šด๋‹คใ… 
  • LastQuery Post Padding, PrePadding ์‹คํ—˜ ํ›„ ์„ฑ๋Šฅ ๋น„๊ต
    -> prepadding์ด ์ ์ˆ˜๊ฐ€ ์ข€ ๋” ๋†’์Œ
  • LastQuery transformer encoder์— T-fixup์ ์šฉ

[Last Query Transformer RNN for knowledge tracing] ๋…ผ๋ฌธ์—์„œ ์–ป์€ insight ํ˜„์žฌ ์ฝ”๋“œ์— ์ ์šฉ

  • max_seq_len ๋Š˜๋ ค์„œ ์‹คํ—˜
    -> ์™œ,,๋”,,,๋–จ์–ด์ง€์ง€,,์™œ,,,์™œ,,,,

[Day1] ๋ฒ ์ด์Šค๋ผ์ธ ๋ถ„์„

๋งˆ๊ฐ์ผ

  • 2021.05.25

  • ๋ฐ์ดํ„ฐ ์ž…๋ ฅ๊ตฌ์กฐ ๋ถ„์„

  • ๋ชจ๋ธ๊ตฌ์กฐ ๋ถ„์„

  • ๊ฒฐ๊ณผ ๋ถ„์„ -> ๋ฒ„ํŠธ ์‹คํ—˜์œผ๋กœ ๋Œ€์ฒด

[DAY 10] tabnet ์‚ฌ์šฉํ•˜๊ธฐ

  • tabnet ๋…ผ๋ฌธ์ •๋ฆฌ
  • ์„œ์ผ๋‹˜ feature(์ฝ”๋“œ)์— tabnet ์ ์šฉํ•ด๋ณด๊ธฐ
  • output ํ™•์ธ
  • ๋‹ค์–‘ํ•œ feature๋“ค ์ถ”๊ฐ€ํ•ด๋ณด๊ธฐ
  • baseline์— ์ฝ”๋“œ ์ถ”๊ฐ€ํ•˜๊ธฐ
  • unsupervised ๋ฐฉ์‹ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

linear projections in LastQuery

Hi,

In the LastQuery module you define query, key and value projections:

# Encoder
self.query = nn.Linear(in_features=self.hidden_dim, out_features=self.hidden_dim)
self.key = nn.Linear(in_features=self.hidden_dim, out_features=self.hidden_dim)
self.value = nn.Linear(in_features=self.hidden_dim, out_features=self.hidden_dim)

which you call in the forward method before calling self.attn (nn.MultiheadAttention):

####################### ENCODER #####################
q = self.query(embed)[:, -1:, :].permute(1, 0, 2)
k = self.key(embed).permute(1, 0, 2)
v = self.value(embed).permute(1, 0, 2)
## attention
# last query only
self.mask = self.get_mask(seq_len, mask, batch_size).to(self.device)
out, _ = self.attn(q, k, v, attn_mask=self.mask)

Aren't the projections already included in nn.MultiheadAttention?
Thanks.

[Day3] ๋ฒ ์ด์Šค๋ผ์ธ ์ฝ”๋“œ ์ˆ˜์ •, ๋ฒ„ํŠธ ์ž…๋ ฅ๊ตฌ์กฐ ๋ฐ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€๊ฒฝ

๋ฒ ์ด์Šค๋ผ์ธ ์ฝ”๋“œ ์ˆ˜์ •

  • trainer ์— print(args) ์ถ”๊ฐ€
  • ์ €์žฅ๋˜๋Š” ๋ชจ๋ธ ์ด๋ฆ„ ๋ณ€๊ฒฝ -> bert_model_epoch10.pt
  • validation ํ•จ์ˆ˜์—์„œ val_loss ๊ตฌํ•˜๊ณ  ๋ฆฌํ„ด
  • wandb ์ €์žฅ ์š”์†Œ ๋ณ€๊ฒฝ -> epoch ์‚ญ์ œ, val_loss ์ถ”๊ฐ€
  • inference ํ•จ์ˆ˜์˜ output ๋ชจ๋ธ ์ด๋ฆ„ ๋ณ€๊ฒฝ -> bert_model_epoch10.csv

๋ฒ„ํŠธ ์ž…๋ ฅ๊ตฌ์กฐ ๋ฐ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€๊ฒฝ ์‹คํ—˜

  • hidden_dim = 512, n_layers = 6, n_heads = 8, max_seq_len = 30
  • ์ž…๋ ฅ์— [SEP] ํ† ํฐ ์ถ”๊ฐ€ -> ์•ˆํ•ด๋„๋จ
  • comb_proj ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์—ฐ๊ฒฐ๋งŒ ํ•˜๊ธฐ
  • segment id 0 ๊ณผ 1 ์„ ๋ฒˆ๊ฐˆ์•„ ์‚ฌ์šฉ? -> comb_proj ์จ์„œ ํฐ ๋„์›€์•ˆ๋ ๋“ฏ

[Day5] split data ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•

  • ์œ ์ €์˜ ๋ชจ๋“  ์ธํ„ฐ๋ž™์…˜์„ max_seq_len ์œผ๋กœ ์ž˜๋ผ์„œ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ. dataframe ์„ ๊ฑด๋“œ๋ฆฌ๋Š” ์ž‘์—….

[Day7] LGBM

  • PyCaret โ†’ Python wrapper or scikit-learn wrapper
  • LGBM wandb
  • feature engineering
    • ์žฌ์šฐ๋‹˜ 3 features
    • ์„œ์ผ๋‹˜ features
  • ๊ฐ„๋‹จํ•œ hyperparameter tuning

[Day7] ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๋ฐฉ๋ฒ• ์‚ฌ์šฉ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹คํ—˜

  • ์œ ์ €-์‹œํ—˜์ง€, ์œ ์ €-ํƒœ๊ทธ๋กœ ๊ทธ๋ฃน๋ฐ”์ดํ•ด์„œ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•
  • ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ์‹์œผ๋กœ stride ๋ฅผ ์ค˜์„œ ์ฆ๊ฐ•
  • ํŠธ๋ ˆ์ธ๋ฐ์ดํ„ฐ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„ answercode ๋ฅผ -1 ๋กœ ๋ฐ”๊ฟ”์„œ ํ•™์Šต -> ํ”ผ์ณ๋กœ answerCode ๋Š” ๋“ค์–ด๊ฐ€์ง€ ์•Š์Œ (๊ธฐ๊ฐ)
  • ํŠธ๋žœ์Šคํฌ๋จธ์“ธ๋•Œ ์ธ์ฝ”๋” ์–ดํ…์…˜ ๋ง๊ณ  ๋””์ฝ”๋” ์–ดํ…์…˜ ์‚ฌ์šฉ
  • split_data ๋กœ ์ฆ๊ฐ•ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ valid ์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ฒŒ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ์‹คํ—˜

[Day12] ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•์— valid ๋„ฃ์ง€ ์•Š๊ธฐ

์ฐฝ์šฐ๋‹˜์ด ๋งŒ๋“  ๊ณ ์ •๋œ train, valid ๋กœ ์‹คํ—˜

  • ๊ธฐ๋ณธ LSTM ์— stride 20 ์œผ๋กœ ์‹คํ—˜
  • BERT encoder ์— ๊ดœ์ฐฎ์•˜๋˜ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋กœ stride 20 ์œผ๋กœ ์‹คํ—˜
  • BERT decoder ์— ๊ดœ์ฐฎ์•˜๋˜ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋กœ stride 20 ์œผ๋กœ ์‹คํ—˜
  • ๊ดœ์ฐฎ์€ BERT ์— stride 10 ์œผ๋กœ ์‹คํ—˜
  • Tfixup BERT encoder stride 20 ์‹คํ—˜
  • Tfixup BERT decoder stride 20 ์‹คํ—˜

[Day1] Daily Mission1 ๊ธฐ๋ฐ˜ EDA

๋งˆ๊ฐ์ผ

  • 2021.05.24

  • Daily Mission ์— ๋‚˜์˜จ EDA ๋ฐฉ๋ฒ•๋“ค ์ดํ•ดํ•˜๊ธฐ

  • Daily Mission ๊ณผ์ œ ์ˆ˜ํ–‰

[Day7] Sliding Window ์ ์šฉ

  • sliding window ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•ํ•˜์—ฌ last query transformer rnn ๋ชจ๋ธ์— ์ ์šฉ
  • sliding window ํ˜„์žฌ ์ฝ”๋“œ์— ์ถ”๊ฐ€
  • sliding window๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์€ last query transformer rnn๊ณผ ๋น„๊ต

[Day2][์œ ์ง„] baseline code, git, feature extraction

  • args + model ์ถ”๊ฐ€ ์ฝ”๋“œ PR
  • .gitignore ์ถ”๊ฐ€
  • notion์— ์ œ์ถœ ๊ฒฐ๊ณผ ์ •๋ฆฌ
  • process_batch ํ•จ์ˆ˜ ๋ถ„์„
  • ๋Œ€๋ถ„๋ฅ˜, ์‹œํ—˜์ง€๋ฒˆํ˜ธ, ๋ฌธ์ œ๋ฒˆํ˜ธ feature ์‹คํ—˜๋…ธํŠธ ์ถ”๊ฐ€
  • 3 features๋ฅผ baseline_2 ์‹คํ—˜๊ฒฐ๊ณผ์— ์ ์šฉ์‹œ์ผœ๋ณด๊ธฐ

[Day7] LastQuery์‹คํ—˜

  • LGBM ์‹คํ—˜๊ฒฐ๊ณผ ์ •๋ฆฌ
  • lastquery ํ˜„์žฌ code์— ๋งž๊ฒŒ ๊ณ ์น˜๊ธฐ + ๋ชจ๋“ˆํ™”
  • LastQuery๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ๋Œ๋ฆฌ๊ธฐ
    โ†’ ํ˜„์žฌ๋Š” testID, assessmentItemID, KnowledgeTag, interaction๋งŒ ์‚ฌ์šฉ
  • LastQuery์— elapsed, 3_feature, time_bin๋“ฑ์˜ feature๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ๋Œ๋ฆฌ๊ธฐ
  • positional_embedding์‚ฌ์šฉ
  • ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ํ›„ LastQuery์— ์ ์šฉ

[Day4] Loss ๋ณ€๊ฒฝ

BCELoss๋ณด๋‹ค imbalance(0์ด ๋” ์ ๋‹ค๊ณ  ์ƒ๊ฐ)์— ๋” ํšจ๊ณผ์ ์ธ Loss๊ฐ€ ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • BCELoss ๋Œ€์‹  imbalance ๋ฐ์ดํ„ฐ์— ๋” ์ ํ•ฉํ•œ Loss ์ฐพ๊ธฐ
  • ์ƒˆ๋กœ์šด Loss ์ ์šฉํ•˜๊ณ  ๊ฒฐ๊ณผ ํ™•์ธ

[Day3] userId์™€ KnowledgeTag ์กฐํ•ฉ

ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž์™€ ์‚ฌ์šฉ์ž๊ฐ€ ํ‘ธ๋Š” ๋ฌธ์ œ์˜ ํƒœ๊ทธ๋กœ ์กฐํ•ฉํ•œ ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
- [ ] ํ•™์Šต๋ฐ์ดํ„ฐ๋ฅผ userId-KnowledgeTag๋กœ ์กฐํ•ฉํ•˜์—ฌ ํ•™์Šตํ•˜๋Š” ์ฝ”๋“œ
- [ ] Validation ๊ฒฐ๊ณผ์™€ ์ œ์ถœ ๊ฒฐ๊ณผ ๋น„๊ต

[Day 13] Feature Engineering

๊ฐ•์˜์—์„œ ์ œ๊ณตํ•œ EDA๋ฅผ ์ „๋ถ€ Feature๋กœ ์ถ”๊ฐ€

+ 05/31 Daily Mission ํ™•์ธ

  • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํ‘ผ ๋ฌธํ•ญ์˜ ๊ฐœ์ˆ˜
  • ํ•™์ƒ์˜ ์ •๋‹ต๋ฅ  (์ตœ์ข…)
  • ๋ฌธํ•ญ ๋ณ„ ์ •๋‹ต๋ฅ 
  • ์‹œํ—˜์ง€ ๋ณ„ ์ •๋‹ต๋ฅ 
  • ํƒœ๊ทธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋…ธ์ถœ๋˜์—ˆ๋Š”์ง€ (์ „์ฒด?)
  • ์‹œํ—˜์ง€๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋…ธ์ถœ๋˜์—ˆ๋Š”์ง€ (์ „์ฒด?)
  • ๋น„์Šทํ•œ ๊ฐœ๋…์„ ์—ฐ๋‹ฌ์•„ ํ’€๋ฉด ์„ฑ์ทจ๋„๊ฐ€ ์˜ค๋ฅผ๊นŒ -> ๋น„์Šทํ•œ ๊ฐœ๋…์ด๋ž€? ํƒœ๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์„ ๋•Œ ์—ฐ๋‹ฌ์•„ ํ‘ผ๋‹ค๋Š” ๊ฒƒ์„ ์ •์˜ํ•˜๊ธฐ ์–ด๋ ค์›€
  • ์ •๋‹ต์„ ์ž˜ ๋งž์ถ”๋Š” ์‹œ๊ฐ„๋Œ€ (time_bin)

ํ† ๋ก  ๊ฒŒ์‹œํŒ์˜ LGBM Feature

  • ํ•™์ƒ์˜ ์ •๋‹ต์„ ๋งž์ถ˜ ํšŸ์ˆ˜
  • ํ•™์ƒ์˜ ๋ฌธ์ œ ํ‘ผ ํšŸ์ˆ˜
  • ํ•™์ƒ์˜ ์ •ํ™•๋„

๊ฐœ์ธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ Feature๋“ค

  • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ Knowledge Tag๋ฅผ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ ‘ํ–ˆ๋Š”์ง€
  • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ AssessmentID๋ฅผ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ ‘ํ–ˆ๋Š”์ง€
  • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ TestID๋ฅผ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ ‘ํ–ˆ๋Š”์ง€
  • ์ „์ฒด Knowledge Tag์˜ ์ •๋‹ต๋ฅ 
  • ์ „์ฒด AssessementID์˜ ์ •๋‹ต๋ฅ 
  • ์ „์ฒด TestID์˜ ์ •๋‹ต๋ฅ 
  • ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ์ ‘ํ•œ ์‹œ๊ฐ„๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋ฅผ ์ ‘ํ•œ ์‹œ๊ฐ„ (์ •ํ˜•์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ์ •๋ณด)

[Feature] Add five features

Add five features

  • related to the test (by JAEWOOSUN)

    • classification
    • paperNum
    • problemNum
  • related to time (by changwoomon)

    • elapsed
    • time_bin

LastQuery ํ›„์† ์‹คํ—˜

  • current question elapsed time feature์ถ”๊ฐ€ ํ›„ ์‹คํ—˜
  • elapsed feature๋ฅผ maximum๊ฐ’์„ ๋„˜๋Š” ๊ฐ’์€ maximum์œผ๋กœ ๋ฐ”๊พผ ํ›„ ๋„ฃ์–ด์„œ ์‹คํ—˜
  • max_seq_len ๋Š˜๋ ค์„œ ์‹คํ—˜
  • ์ตœ์  feature ์ˆœ์„œ ์ฐพ๊ธฐ

[Feature] ๋ฒ ์ด์Šค๋ผ์ธ ๊ฐœ์„ 

๋ฒ ์ด์Šค๋ผ์ธ ์ฝ”๋“œ ์ˆ˜์ •

  • trainer ์— print(args) ์ถ”๊ฐ€
  • ํ˜„์žฌ ์—ํฌํฌ๋Š” epoch + 1 ์ด ๊ธฐ์ค€์ธ๋ฐ, wandb ์—์„œ๋‚˜ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ epoch ๋Š” 0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ €์žฅ๋˜๋Š” ๋ชจ๋ธ ์ด๋ฆ„ ๋ณ€๊ฒฝ -> .../models/Baseline9/model_epoch10.pt
    -> --model_name ํŒŒ๋ผ๋ฏธํ„ฐ์— ์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š” 'Baseline9' ๊ณผ ๊ฐ™์€ ๋ชจ๋ธ ์ด๋ฆ„์„ ์ ์–ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.
    python train.py --model bert --model_name MyBERT
  • validation ํ•จ์ˆ˜์—์„œ val_loss ๊ตฌํ•˜๊ณ  ๋ฆฌํ„ด
  • wandb ์ €์žฅ ์š”์†Œ ๋ณ€๊ฒฝ -> epoch ์‚ญ์ œ, val_loss ์ถ”๊ฐ€
  • inference ํ•จ์ˆ˜์—์„œ --model_name ์— ํ•ด๋‹นํ•˜๋Š” ํด๋”์˜ --model_epoch ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์˜ด
  • inference ํ•จ์ˆ˜์˜ output ๋ชจ๋ธ ์ด๋ฆ„ ๋ณ€๊ฒฝ -> bert_model_epoch10.csv
    python inference.py --model bert --model_name MyBERT --model_epoch 4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.