Home [BoostCamp AI Tech / Level 2 - DKT] Day67 - Sequence Modelling
Post
Cancel

[BoostCamp AI Tech / Level 2 - DKT] Day67 - Sequence Modelling

DKT : Sequence Modelling


Sequence Modelling

  • Sequence Modelling이란 단순한 tabular 데이터를 활용하는 것이 아닌 1개의 행이 어떤 유저나 요소의 시간적 데이터의 일부인 sequence data를 적용하는 모델
  • sequence data를 tabular 형태로 전환해서 feature engineering과 같은 방식을 통해 학습하는 경우도 많음
  • 하지만 이 과정에서 aggregation을 진행하다보니 누락되는 정보가 많이 발생함
  • 이를 해결하고자 sequnce data를 그대로 사용하는 방식을 사용하는 sequence modelling을 사용
  • 하지만 tabular에서도 데이터 누락을 최소화 하는 방식으로 진행할 수 있음

Train/Valid Data split

  • validation loss를 계산하기 위해 train-valid split을 진행해야 함
  • 이 과정에서 어떤 기준으로 분할하는가가 중요함
  • 학습과정에서 test data leakage가 발생한다면 test 성능이 좋게 나오지만 실제 서비스에서 좋지 않은 성능이 나올 수도 있음
  • DKT의 경우 행을 기준으로 나누는 일반적인 split과 다르게 user별로 묶고 user를 기준으로 split을 진행해야함
    • DKT같은 정보는 새로운 유저에 좋은 효과를 보이는가?가 핵심 목적이기 때문

Sequential Approach

Sequential Model

  • One-to-One : 종가예측과 같은 1개의 sequential을 통해 예측
  • One-to-Many : 1개의 사진을 넣으면 사진에 걸맞는 설명을 보내주는 모델
  • Many-to-One : DKT처럼 sequence data를 넣어주면 1/0과 같은 classification이나 종가 예측같은 일정 기간의 정보를 주면 regression 정답을 도출하는 모델
  • Many-to-Many : 일반적인 NLP에서 자주 사용하는 모델
  • Seq2Seq : n개의 입력으로 k개의 출력의 형태로 변환해주는 모델, 일반적으로 번역기에 많이 사용

Sequential feeding

  • sequential 모델에 데이터를 피딩하는 경우 여러가지 방식을 쓸 수 있음
  • 기본적으로 seqeunce length에 데이터를 맞춰야 함
    • sequential data는 상황에 따라 그 길이가 다른 경우가 있는데, 이 경우 그 길이들을 잘 맞춰줘야 함
  • 데이터를 feeding하는 경우 모든 데이터가 numeric이고 continuos면 단순히 LSTM에 input_size(feature 개수), hidden_size를 결정해주면 됨
  • 만약 연속형과 범주형이 혼합된 데이터라면 범주형 데이터는 embedding을 해야함
    • LSTM에 들어가는 input은 continuous feature + embedding size의 형태로 처리하는 경우가 많음

Embedding

  • pytorch는 nn.Embedding을 사용하면 특정 값을 embedding size의 lookup table에 임베딩할 수 있음
  • nn.Embedding(category_range, embedding_dim)을 사용하면 됨
  • embedding layer로 학습을 통해 loss를 가장 최적화 시켜주는 방향으로 embedding 값을 조정함
This post is licensed under CC BY 4.0 by the author.

[BoostCamp AI Tech / P Stage 3] Day66 - Project Day 6

[BoostCamp AI Tech / Final] Day76 - 프로젝트 개요

Comments powered by Disqus.