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

반응형

BoostCamp AI tech

 

 

Contents

    1. 대회 진행

    이번 DKT(Deep Knowlege Tracing) 대회는 학생들이 문제를 푼 TimeSeries가 포함된 Sequence 데이터를 받아서, 테스트 데이터에서 학생들이 마지막 문제를 맞혔을지 틀렸을지 예측하는 이진 분류(Binary Classification) 문제입니다. 평가 지표는 AUROC를 사용합니다. 

    저희 조는 대회가 시작하고, 브레인스토밍을 하여 각자 해보고싶은 Task를 정하고, 매일 스크럼을 진행하며 EDA, Feature Engineering, CV Strategy, 모델 구현, 시각화 등 다양한 방향으로 github를 통해 협업하며 진행하고 있습니다.

    깃허브

    매일 스크럼에서 각자 데일리 기록 노션페이지를 통해 스스로 어디서 어려움을 느꼈고, 어떤 방향으로 해결하려고 했으며, 어디서 막혔는지 등을 체계적으로 정리해서 공유함으로써, 각자 따로 하는 게 아니라, 정말 함께한다는 느낌을 받았습니다.

    노션의 데일리 기록

    대회를 진행하다보면, 순위를 보며 약간 집착하고 조급함이 생겼었습니다. 그런데 이 대회는 배우는 것이 목적이니 학습에 몰입하고 올인하자라고 마음을 먹으니 정말 편해지고 재밌어졌습니다. 아직 2주 더 남았으니, 열심히 배우고 몰입하려고합니다.

     

    2. 피어 세션

    1) 일반

    대회를 진행하며 데일리 스크럼을 진행했습니다. 각자 스스로 한일을 노션의 데일리 기록에 작성하고, 트렐로에 진행한 일들을 보여주면서 소통하였습니다. 정말 좋았던 것이 제가 피처 엔지니어링 했던 부분에서 혼자 했다면 절대 발견하지 못할 부분을 날카롭게 말씀 주셔서, 다시 확인해볼 수 있었습니다. 그 외에도, Wandb Sweep을 다루는 방법도 공유를 해주셨고, 다양한 모델과 EDA 등을 발표하며 인사이트를 공유했습니다. 팀으로 함께해서 정말 큰 힘이 되는 것 같습니다.

    Wandb Sweep을 통한 HyperParameter에 따른 성능 시각화

    특히 이번 대회때는 오전 10시~ 오후 7시까지 게더 타운에서 서로 같이 카페에 간 것처럼 해보자고 아이디어를 주셔서 진행해보았습니다. 하다 보니 다들 새벽 2시 ~ 3시까지도 같이 게더 타운에서 공부하셨고, 가끔 질문 있을 때 편하게 얘기하는 게 정말 좋았습니다.

    게더타운

     

    2) 코딩 테스트 스터디

    이번주에는 브루트 포스와 관련된 알고리즘을 풀어와 한 문제씩 발표하고 의견을 나누었습니다. python의 itertools를 활용하는 문제들이 많았습니다. combinations, permutations, product 등을 활용하는 문제들이었습니다.

    브루트포스

     

    3) 면접 질문 스터디

    이번 주 면접 질문 스터디의 주제는 GNN(Graph Neural Network)였습니다. 제 주제는 Message Passing으로 바라본 LightGCN이라는 주제였습니다. 목차는 아래와 같습니다.

    Message Passing으로 바라본 LightGCN

    요약하자면 Message Passing을 GNN에서 Message가 무엇인지(특정 노드를 표현하는 임베딩 벡터)부터 Message Passing이 일어나는 과정부터, NGCF(Neural Graph Collaborative Filtering)에서 LightGCN으로 발전하며 어떤 부분이 개선되었는지 아키텍처와 수식을 비교했습니다. 그로부터 LightGCN의 핵심인 Layer Combination의 원리와 LightGCN의 의의를 발표했습니다. 

     이외에도 GCN과 GAT의 원리GNN 계열 모델들의 종류와 배경, GraphSAGE, Ultra GCN의 원리 등을 발표해 주셨습니다. GNN의 전반적인 컨셉과 세부 모델들이 어떤 원리로 돌아가는지 등에 대한 인사이트를 활발하게 나누어 좋았습니다.

     

    4) 모델 구현 스터디

    이번 주 모델 구현 스터디에선 WDN(Wide & Deep) 모델과 DCN(Deep Cross Network) 모델을 코드 수준에서 깊게 다뤄보았습니다. 

    WDN은 아래처럼 생긴 아키텍쳐입니다. 6~7 주차에 진행했던 책 평점 데이터셋으로 WDN을 적용하는 과정을 다뤄주셨습니다.

    WDN Architecture

    Wide Models를 FeatureLinear라는 클래스로 구현하셨고, Deep Models는 MultiLayerPerceptron 클래스로 구현해주셨습니다. 핵심 적인 코드는 아래와 같습니다.

    WDN 핵심 코드

    다음으로는 Deep Cross Network입니다. 크게 Stacked Structure와 Parallel Structure로 나뉩니다. 핵심은 Cross Net의 작동원리입니다.

    DCN Architecture

    아래 코드의 forward 부분을 보면, 처음 입력으로 들어온 x0를 계속 다음 layer의 입력으로 가져가며, 각 레이어의 결과와 수식으로 합쳐 사용한다는 점입니다.

    DCN 핵심 코드

    이론으로만 알던 아키텍쳐들을 코드 수준에서 데이터의 shape이 어떻게 바뀌는지 같이 보니, 깊게 와닿았습니다.

     

    5) 한 주 회고

    한 주 회고

    3. 그 외 이벤트들

    1) 멘토링

    현재 DKT 대회를 진행하며 생긴 질문들에 대한 답변이 주로 다뤄졌습니다. 저는 CV Strategy 관련된 질문을 했습니다. DKT 대회에서 CV Strategy를 짜고 있었고, Kaggle의 Riiid 대회 2등 하신 분의 Solution 코드에서 CV 전략 부분을 보고 인사이트를 얻어 구현했습니다. 하지만 성능이 좋아지지 않았고, 유저들에 대한 편향이 원인으로 생각되어 근거와 함께 질문드렸습니다. 멘토님도 유저 편향이 원인으로 보인다고 하셨습니다. 덧붙여 결국 어떤 데이터인지 잘 모르기 때문에 CV 전략에 너무 에너지를 쏟기보단, 데이터를 깊게 이해하며 Baseline으로 주어진 CV 셋으로 성능을 올려보는 것을 추천 주셨습니다. 조언을 받아들여 FE(Featrue Engineering)에 에너지를 많이 쏟는 방향으로 갔는데, CV set에 대한 깊은 이해가 생기니 FE가 뭔가 엄청 수월해져서 놀랐습니다. 

     외에도 다른 분은 Transformer 기반 SAKT(Self-Attentive model for Knowledge Tracing) 모델을 구현하며 발생한 문제를 질문하셨고, 다른 분은 Last Query Transformer에서 Query, Key, Value 부분을 어떻게 구현할지 질문을 주셨습니다. 감명 깊었던 질문 중 한나는 Tabnet 활용 관련 질문이었는데, 이번 데이터가 TimeSeries로 Sequential한 데이터이기 때문에, 시간축을 어떤 방식으로 주는지가 핵심이다 라는 답변을 듣고 뭔가 힌트가 되어 정말 좋았습니다.

     

    2) 두런두런 3회차

    변성윤 마스터님의 캠퍼들에 대한 고민에 대해 깊게 답변 주셨고, 직군 선택과 이력서 작성 방법에 대해 인사이트가 담긴 발표를 주셨습니다. 감명 깊었던 부분은 이력서를 작성할 때, 어떻게 역량 기반으로 작성하는지와 읽는 사람이 관심이 가도록 작성하는 포인트를 주는 방법이 있습니다. 역량 기반으로 작성함으로 써, 면접의 과정을 내가 만들어갈 수 있다는 방향성이 특히 좋았습니다. 저번에 삶의 지도를 작성한 것에 이어서 이력서도 피드백해주신다는 게 좋았습니다.

     

    3) 오피스아워

    부캠 1기 수료하시고, 카카오에서 인턴 하신 조교님의 발표가 있었습니다. 소위 네카라쿠배당토라고 하는 기업은 어떻게 준비해야 하는지, 현재 부캠은 어떻게 충실히 할 수 있는지에 대해 다뤄주셨습니다. 특히, 조교님이 현업에서 추천 시스템으로 일하고 있는데, 다시 부캠때로 돌아간다면 이렇게 이렇게 하겠다는 부분들이 구체적이고, 어떤 부분이 후회되는지도 구체적으로 말씀 주셔서 많은 인사이트가 되었고, 공감도 되었습니다.

     

    Reference)
    1. 네이버 부스트 캠프 Ai tech 4기
    2. WDN Architecture : https://paperswithcode.com/method/wide-deep
    3. DCN Architecture : https://arxiv.org/pdf/1708.05123.pdf
    반응형

    댓글

    Designed by JB FACTORY