[부스트캠프 AI tech 4기] week 9 회고 📝 - DKT 대회 시작

반응형

BoostCamp AI tech

 

 

Contents

    1. 강의 내용

    이번 주에는 DKT 대회가 시작되며, DKT Task에 대한 이해와 이론 수업, 실습수업과 다양한 실습 코드들이 주어졌습니다. 정말 소화하기 힘들정도로 양이 많아서, 팀원들과 파트를 맡아 각자 공부하고 발표하며 서로 나눠 공부해서 인사이트를 공유하는 방식으로 진행했습니다. 그렇게 했는데도 정말 양이 방대했습니다. 대회 Baseline 코드부터, 경진대회 관련해서 기초적으로 어떻게 대회를 진행해야 하는지, 심화적으로 대회에서 소수점 싸움을 어떤 식으로 진행하는지. 그 안에서 어떻게 인사이트를 얻고 성능에 대한 가설과 검증을 발전시켜 나가는지 등을 심도있게 배웠습니다. 과거 캐글의 DKT 관련 대회 Riiid(뤼이드) 토익 대회나, DSB(Data Science Bowl), MoA(Mochanisms of Action) Prediction 대회 등의 Winner's Solution 들을 이론과 실습 코드 수준에서 까지 다뤄보았습니다. 특히 Transformer를 사용한 솔루션을 깊게 다루었습니다. Multi Layer Transformer에서 Self-Attention 구조를 마지막 레이어에서 Last Block만 사용하여 모델의 시간 복잡도를 획기적으로 줄인 방법론과, Sequence Length와 Embeded Vector의 길이를 조절하여 계산 복잡도를 줄인 방법론이 정말 인상깊었습니다. DKT로 주어진 데이터에 대해서 다양한 Featrue Engineering(FE) 방법론을 배웠습니다. 

     그리고 베이스라인 코드로 주어진, LSTM, LSTM with Attention, Bert를 이용한 Transformer와 Sequence Data에서 Time컬럼의 피처를 엔지니어링 하여, LGBM 같은 Boosting 계열의 모델로 학습과 예측하는 방법을 배웠습니다. 

     

    2. 피어 세션

    1) 일반

    과거 DKT 관련 대회들과, 현재 주어진 대회의 EDA와 Feature Engineering 방법론들, Machine Learning 접근 방법 등의 실습 미션 코드들을 파트를 나누어 서로 공부하고 발표하는 방식으로 진행했습니다. 각자 맡은 부분을 코드 수준에서 깊게 이해하고 발표해주셔서 정말 많이 배웠습니다. 

     

    2) 코딩 테스트 스터디

    이번주에는 기타 그래프이론와 관련된 알고리즘을 풀어와 한 문제씩 발표하고 의견을 나누었습니다.

    기타 그래프이론

    익숙치 않고 어려웠지만, 플로이드 와샬 알고리즘이나 크루스칼 알고리즘을 사용하는 방법을 어느 정도 깊이 다뤘습니다. 

     

    3) 면접 질문 스터디

    이번 주 면접 질문 스터디의 주제는 AutoEncoder(오토인코더)였습니다. 제가 준비한 주제는 이활석님이 발표하신 "오토 인코더의 모든 것"이라는 강의를 요약했습니다. 목차는 아래와 같습니다.

    AutoEncoder

    AutoEncoder의 기초적인 구조와 목적부터 의미 그리고 4가지 키워드를 중심으로 설명했습니다. 가장 핵심 적인 파트는 기존 ML에서 역전파를 통해 Gradient Descent를 하는 방법과 MLE(Maximum Likelihood Estimation)의 유사성입니다. 가능도를 최대화하는 것은 Negative Log Likelihood를 최소화시키는 것입니다. 가우시안 분포에 대해 이를 최소화시키는 것은 MSE(Mean Square Error) 로스를 최소화시키는 역전파와 유사하고, 베르누이 분포에 대해 이를 최소화시키는 것은 CE(Cross-Entropy) 로스를 최소화시키는 역전파와 유사합니다. 외에도, AE를 이용한 이상치 탐지 방법과 사례, AE 임베딩 차원의 크기에 따른 변화, AE의 종류와 역할, AE와 PCA의 차이를 발표해주셨습니다.

     

    4) 모델 구현 스터디

    이번주 부터 부스트 캠프에서 배웠던 모델에 대한 구현 코드를 공부하고 공유하는 스터디를 새로 시작했습니다. 데이터 사이언스 직무로 기업에 지원할 때 과제 형태로 모델 구현 능력을 요구하기 때문에, 그에 대비해서 제가 제안하여 개설한 스터디입니다. 현재 공부량이 매우 많은데도 모두 좋다고 해주셔서 진행하게 되었습니다. 이번 주에 저는 NCF(Neural Collaborative Filtering) 모델에 대해 Input 부터 Output까지 데이터가 어떻게 흘러가며 모델이 데이터를 예측하는지 코드 수준에서 자세히 준비하여 발표했습니다.

    NCF 모델의 구조

    외에도 다른 팀원분이 FM(Factorization Machines)모델과 FFM(Field-aware Factorization Machines) 모델에 대해 코드 수준에서 깊게 발표해주셨습니다.

     

    5) 한 주 회고

    한 주 회고

    3. 그 외 이벤트들

    1) 멘토링

    이 번주부터 Level 2가 진행되며 멘토님이 바뀌었습니다. 간단한 자기소개와 멘토링이 어떻게 진행될 것인지 소개해주셨습니다. 주어진 강의를 멘토님도 같이 듣고, 해당 강의에서 나올만한 면접 질문들을 추려 공유해주신다고 하셨습니다. 정말 감사했습니다. 해당 주제들을 면접 스터디와 연계하여 준비하고, 거기서 생긴 의문들을 멘토님께 질문하여 더 딥하게 파볼 수 있다면 금상첨화가 아닐까란 생각이 들었습니다.

     

    2) 마스터클래스 (DKT Survey 논문 소개 - 이영수 마스터님)

    DKT 강의를 진행해주신 이영수 마스터님이 마스터클래스를 진행해 주셨습니다. 강의를 통해 DKT Task에 대한 이해와 문제 해결방법 그리고 추천 시스템의 관점으로 DKT 문제를 바라보는 것을 얻어가셨으면 좋겠다고 하셨습니다. 특히 강의를 통해 알려주신 GNN(Graph Neural Network)를 대회에 활용해보시길 추천해 주셨습니다. 외에도 DKT 대회의 데이터에 대한 이해와 AUC, ACC 등의 메트릭으로 성능을 평가하지만 이 메트릭이 가지는 단점도 생각해봐야 현업에 도움이 될 거라는 조언도 해주셨습니다. 외에도 강의에서 다루지 않은 굉장히 고난도 기법들 Consistent Refularization이나 Beyond Metric이라는 주제로 메트릭에서 FN, FP로 틀린 데이터들을 모델이 왜 예측하지 못했는지 딥하게 데이터 수준에서 확인하는 방법들을 말씀해 주셨습니다. 마지막으로, 대회와 현업의 차이점을 말씀 주시면서, 대회에서 소수점 싸움하며 익힌 다양한 테크닉들이 현업의 어떤 관점에서 도움이 될 수 있는지 말씀 주셨습니다. 

     

    3) 오피스아워 (DKT Baseline 해설)

    전처리 과정부터, train하고 inference 하는 단계까지 대회의 베이스라인으로 주어진 코드에 대해서 자세히 설명 주셨습니다. 특히 Bert를 이용해 트랜스포머의 Encoder부분을 구현하신 부분에서 Masking이 일어나는 부분과 Padding으로 Sequence의 길이를 맞춰주는 테크닉들을 자세히 설명해주셨습니다. 외에도 Scheduler로 주신 Plateau와 Warmup이 어떤 차이가 있는지, Warmup이 왜 나온 건지(트랜스포머의 Learning Rate를 최적화해서 조절하기 위해)등을 설명해 주셨습니다.

     

    4) 삶의 지도 (역량 기반 이력서의 재료)

    변성윤 마스터님이 이력서를 쓸 때 역량 기반의 이력서를 작성하기 위해선, 스스로 삶에 대해 인사이트가 있어야 한다고 하시며 삶의 지도를 작성해보시길 권장하셨습니다. 삶의 지도에 대해서 모두 세세하게 피드백을 주신다고 하셔서, 그 정성에 정말 감동하였습니다. 그래서 저도 아주 정성스레 삶의 지도를 작성해봤습니다.

    삶의 지도

    노션으로 어린 시절부터 고등학교, 대학교 등을 거쳐  부스트캠프를 하기까지의 삶을 요약해보았습니다. 역량 기반 이력서를 쓰기 위한 재료가 된다는 느낌으로 작성하여, 제가 생각했을 때 인상 깊었던 것과 거기서 내가 느낀 점 등을 굉장히 개인적인 언어로 풀어썼습니다. 
    (노션 링크: https://precious-pigment-0bc.notion.site/212e02b9dc594a45a1d67a27f674c4ac)

     

     

    Reference)
    1. 네이버 부스트 캠프 Ai tech 4기
    2. NCF 모델의 구조: https://leehyejin91.github.io/post-ncf/
    반응형

    댓글

    Designed by JB FACTORY