[부스트캠프 AI tech 4기] week 5 회고 📝 - 추천 시스템 심화 & 데이터 시각화(6~7)

반응형

BoostCamp AI tech

 

 

Contents

    1. 강의 내용

    1) RecSys(추천 시스템)

    7️⃣ 딥러닝을 이용한 추천 시스템 2

    7강에서는 GNN(Graph Neural Network)기반의 추천 시스템 개념과 활용 예시(NCGF), 그리고 GNN의 한계와 이를 극복한 GCN(Graph Convolution Network)과 활용 예시(LightGCN) 그리고, RNN(순환 신경망)을 활용한 추천 시스템 GRU4Rec을 배웠습니다. GNN이란 그래프를 활용한 신경망을 의미합니다. 추천 시스템에서 왜 그래프를 활용했을까요? 그래프만의 자료구조 특징 때문입니다. 그래프틑 노드(정점)과 엣지(간선)으로 이루어진 자료구조입니다. 아래 그림을 보면, 기존의 이미지, 텍스트, 정형 데이터는 격자 형태로 표현이 가능했습니다. 하지만, SNS 데이터 등의 관계 중심 데이터는 격자형태로 표현이 안된다는 단점이 있습니다.

    기존의 격자로 표현 가능한 데이터(Uclidean space)와 그래프 데이터(Non-Euclidean space)

     추천 시스템에선 유저와 아이템간의 다양한 관계들이 중요하기 때문에 기존 격자 형태의 데이터 구조가 아닌, 그래프 형태의 데이터 구조가 적합합니다. 그래서 그래프 데이터를 인접 행렬로 변환하여 Neural Network로 학습한 것이 GNN 입니다. 

     GNN의 대표적인 예시로는 NGCF(Neural Graph Collaborative Filtering)이 있습니다. 기존 CF(Collaborative Filtering)에서는 유저와 아이템간의 상호작용을 임베딩 단계에서 접근하지 못했습니다. 이 문제 때문에 추천이 부정확해졌습니다. 이를 처음 극복한 모델이 NGCF입니다. 기본 아이디어는 유저와 아이템간의 상호작용(Collaborative Signal)을 그래프로 표현해 Embedding Layer를 생성하고, 이를 임베딩 전파 레이어(Embedding Propagation Layer)에 넣음으로써 Neural Network의 파라미터로 학습할 수 있게 했다는 점 입니다. 즉, 모델이 유저와 아이템간 상호작용(Collaborative Signal)을 파라미터로 학습할 수 있게 했다는 점이 핵심입니다.

     하지만 GNN에는 그래프의 노드가 많아질 수록 해당 노드와 다른 모든 노드의 관계를 봐야되기 때문에 연산이 기하급수적으로 많아진다는 것과 순서가 중요치 않은데, 입력 노드의 순서가 달라지면 결과가 바뀐다는 한계가 있었습니다. 이 문제를 Convolution 아이디어를 도입하여 해결한 것이 GCN(Graph Convolution Network)입니다. 그래프의 전체를 다 연산하려니 너무 연산량이 많아지니까, 아래 그림처럼 커널을 이용해서 인접한 노드와의 관계만 보는것이 핵심 아이디어 입니다. 

    GCN의 아이디어

    GCN의 특징으로는 인접한 노드하고만 Convolution 연산을 함으로써 local connectivity가 생기고, 커널에 따라 weight를 공유한다는 것과, 네트워크를 깊게 쌓음으로써 인접한 노드외에 좀 더 멀리있는 노드까지 참고할 수 있다는 점입니다. 

     GCN의 핵심적인 부분만 사용하여, NGCF보다 정확하고 가벼운 추천모델인 LightGCN을 보겠습니다. 아래는 NGCF와 LightGCN 모델을 비교한 그림입니다.

    주된 차이점은 LightGCN이 Convolution 연산을 했다는 것과, 마지막에 예측할 때 NGCF는 Concatenation을 했는데, LightGCN은 가중합(weighted sum)을 했다는 점 입니다. 

     마지막으로, 시간에 따른 상관관계를 학습할 수 있는 RNN을 활용한 모델GRU4Rec을 보겠습니다. 이 모델의 핵심은 Session이라는 개념을 통해 시간순서를 고려한다는 점 입니다. Session이란, 유저가 서비스를 이용하는 동안의 행동을 시간순으로 기록한 데이터입니다. 이 모델의 핵심 아이디어는 Session이라는 시퀀스를 GRU 레이어에 입력하여, 다음에 유저가 선택할 확률이 가장 높은 아이템을 추천해준다는 것 입니다. 

    GRU4Rec을 통한 추천 시각화

     

    8️⃣ 맥락 기반 추천시스템(Context-aware Recommendation)

    8강 에서는 아래 4가지를 중점적으로 다룹니다.

    1. 유저 정보(성별, 연령, 관심사 등)와 아이템 정보(브랜드, 카테고리, 출시년도 등)를 모두 활용할 수 있는 컨텍스트 기반 추천(Context-aware Recommendation) 학습
    2. 컨텍스트 기반 추천의 정의와 원리, 대표적인 문제 클릭률(CTR) 예측 문제 소개
    3. 컨텍스트 기반 추천 모델로 FM(Factorization Machine) 계열과 FFM(Field-aware Factorization Machine)을 설명. 특히 차이점 설명
    4. GBM(Gradient Boosting Machine) 계열의 원리와 GBM Tree의 예시를 다룹니다.

     

    9️⃣ DeepCTR

    9강 에서는 아래 5가지를 중점적으로 다룹니다.

    1. CTR 예측 문제를 해결하기 위해 딥러닝을 활용한 모델 4가지를 학습
    2. Wide & Deep : 선형(Wide)와 비선형(Deep)을 합친 모델
    3. DeepFM: Wide&Deep을 FM(Factorization Machine)을 통해 개선한 모델
    4. user behavior feature: 한 명의 유저가 상황에 따라 여러 행동 특성을 보이는 것을 서로 다른 피처로 표현한 것
    5. user behavior feature 기반의 두 모델 DIN(Deep Interest Network)BST(Behavior Sequence Transformer) 학습

     

    🔟 Bandit for Recommendation

    10강 에서는 아래 4가지를 중점적으로 다룹니다.

    1. 추천의 주류 기법으로 분류되진 않으나, 현업에서 많이 활용되는 기법 중 하나인 MAB(Multi-Armed Bandit)에 대해 학습
    2. MAB 문제가 추천 시스템과 어떤 연관성이 있어 현업에 많이 활용되는지
    3. 기본적인 MAB 알고리즘 세 가지(Greedy, Epsilon-Greedy, UCB)를 수식과 함께 학습
    4. 비교적 심화된 MAB 알고리즘 두 가지(Thompson Sampling과 LinUCB) 예제를 통해 학습

     

    2) Data Visualization(데이터 시각화)

    6️⃣ Interactive Visualization (인터랙티브 시각화)

    6강에서는 Plotly Express를 이용해 Scatter, Bar, Line Plot을 인터랙티브하게 만드는 실습을 했습니다.

     

    7️⃣ 주제별 시각화와 사용법

    7강 에서는 아래 2가지를 중점적으로 다룹니다.

    1. 7-1 강: Matplotlib을 커스텀하여 테마나, 배경 등을 수정하는 방법
    2. 7-2 강: Image, Text 비정형 데이터를 시각화 하는 방법

     

    2. 피어 세션

    1) 일반

    추천 시스템의 이론과 실습, 구현 과제까지 진행하며 모르는 부분들을 심도있게 토의했습니다. 제가 이해가 안되는 부분들을 질문하면 다같이 깊게 고민해주시고, 그러면서 정말로 정답에 가까이 근접하다가, 탁하고 명확하게 해결되는 순간들이 존재했습니다. 그럴땐 정말 팀원 분들에게 감사했고, 혼자서는 이런 관점으로 보고, 이해할 수 없는 지점들이 많다는것이 느껴졌습니다.

    2) 코딩테스트 스터디

    코테스터디

    3) 면접 질문 스터디

    이번주 면접 질문 스터디는 Word2Vec에 대해서 진행했습니다. Word2Vec은 문장이 주어졌을 때, 각 단어를 임베딩하는 방법론 입니다. 임베딩이란 문장에서 단어를 벡터로 표현하는 것을 의미합니다. 제가 준비한 주제는 추천 시스템에서 Word2Vec의 SGNS(Skip-Gram with Negative Sampling)를 활용한 Item2Vec의 원리와 활용 예시(Live2Vec)을 발표했습니다. 외에 다른 분들은 Word2Vec의 방법론 3가지 CBOW, Skip-Gram, SGNS를 비교 설명한 발표와 Word2Vec을 실제로 코드를 활용해 예시 코드로 실제 어떻게 돌아가는지 발표, Word2Vec의 수식적 원리에 대한 발표, Word2Vec에서 임베딩 벡터의 크기에 따라 학습이 어떻게 달라지는지에 대한 발표가 있었습니다. 모두 너무 흥미로운 주제들이었고, 열심히 발표하셔서 거의 2시간 가까이 발표가 진행되었습니다. 

    4) 한 주 회고

    회고

    3. 그 외 이벤트들

    1) 마스터클래스

     

    Reference)
    1. 네이버 부스트캠프 Ai tech 4기
    2. 격자 데이터와 그래프 데이터: https://arxiv.org/abs/1812.08434 
    3. GCN의 아이디어: https://www.semanticscholar.org/paper/A-Comprehensive-Survey-on-Graph-Neural-Networks-Wu-Pan/81a4fd3004df0eb05d6c1cef96ad33d5407820df
    4. GRU4Rec을 통한 추천 시각화: https://blog.cloudera.com/session-based-recommender-systems/


    반응형

    댓글

    Designed by JB FACTORY