TIL

👀Today I Learn

  • 추천 시스템은 우리가 매일 접하는 플랫폼들—넷플릭스, 유튜브, 스포티파이, 그리고 아마존—의 핵심 기술
  • 전통적인 협업 필터링(Collaborative Filtering), 콘텐츠 기반 필터링(Content-based Filtering) 외에도 최근에는 Graph Neural Networks(GNN)를 활용한 차세대 추천 시스템이 주목받고 있음

GNN(Graph Neural Network)이란?

  • GNN은 그래프 구조 데이터를 처리하기 위해 고안된 신경망
  • 전통적인 신경망이 행렬(예: 이미지, 텍스트 등)을 다룬다면, GNN은 노드(node)와 엣지(edge)로 구성된 그래프(graph) 구조를 다룸

GNN 핵심 개념 요약

  • 노드(Node): 사용자, 아이템 등 추천 시스템의 개체
  • 엣지(Edge): 사용자-아이템 간의 상호작용 (예: 클릭, 좋아요, 구매)
  • 메시지 전달(Message Passing): 노드가 이웃 노드로부터 정보를 전달받아 자신을 업데이트하는 과정


GNN은 추천 시스템에 어떻게 사용될까?

  • 추천 시스템은 유저-아이템(User-Item) 관계를 그래프로 표현하기에 딱 좋은 구조
  • GNN을 이용하면 단순한 상호작용 뿐 아니라 다층적인 연결 정보까지 학습할 수 있음

기본 구조

User1 --- MovieA
  |
User2 --- MovieB
  |
MovieC --- User3
  • 위처럼 유저와 아이템 사이의 bipartite graph (이분 그래프)를 구성하고, GNN을 통해 각 노드의 임베딩을 학습

대표 GNN 추천 모델들

  • GCN (Graph Convolutional Network) 기반: LightGCN
  • GraphSAGE 기반: 효율적인 이웃 샘플링 가능
  • PinSage: Pinterest에서 사용, 그래프와 콘텐츠 정보 모두 반영
  • GAT (Graph Attention Network): 이웃 노드의 중요도에 따라 가중치를 다르게 학습


GNN 추천 시스템 아키텍처 예시

  • 그래프 구성: 유저-아이템 상호작용 로그를 기반으로 그래프 생성
  • 초기 임베딩 정의: 유저, 아이템에 대한 초기 임베딩 정의
  • GNN 레이어 적용: 이웃 노드 정보 수집 및 업데이트
  • 예측(Scoring): 유저와 아이템 임베딩 간 유사도 기반 추천 점수 계산
  • Top-K 추천: 높은 점수를 받은 아이템을 추천 리스트로 출력


GNN 추천 예제 코드 (LightGCN, PyTorch 기반)

import torch
import torch.nn as nn
import torch.nn.functional as F

class LightGCN(nn.Module):
    def __init__(self, num_users, num_items, embedding_dim):
        super(LightGCN, self).__init__()
        self.user_embedding = nn.Embedding(num_users, embedding_dim)
        self.item_embedding = nn.Embedding(num_items, embedding_dim)
    
    def forward(self, edge_index):
        x = torch.cat([self.user_embedding.weight, self.item_embedding.weight])
        # 간단한 GCN message passing (여기선 생략)
        return x
  • 실제 구현에는 adjacency matrix와 여러 propagation step이 포함됩니다.


장점 및 한계점

GNN 기반 추천 시스템의 장점

| 항목 | 장점 | | —- | —- | | 다층 연결 학습 | 유저-아이템 직접 연결뿐 아니라 간접 연결도 학습 가능 | | 유연한 구조 | 다양한 상호작용 유형(클릭, 좋아요 등)을 통합 가능 | | 인사이트 | 그래프 구조 자체에서 유의미한 패턴 발견 가능 |

GNN 추천의 한계점

  • 학습 및 추론 속도 느릴 수 있음 (특히 대규모 그래프일 때)
  • 데이터 전처리 및 그래프 구성의 복잡성
  • 실시간 추천에는 최적화가 필요



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 1문제
  • SQL 코드카타 1문제
  • 발표자료 만들기
  • TIL 작성

회고

 하루종일 발표자료… 너무 힘든 하루였다🥺 내일은 일찍 마무리하고 좀 쉬어야지

댓글남기기