Sequential Recommender System에 필요한 지식들 모음

이신행·2025년 1월 22일
0

최근 추천 시스템에서 대세가 되고 있는 Sequential Recommender System에 대한 기본 개념들을 담아봤습니다. 해당 모델들에 대한 자세한 리뷰는 천천히…

조금씩 채워나가는 느낌이라, 계속 수정 예정입니다.

What is Sequential Recommender System?

  • 사용자의 이전 행동 순서를 분석해, 다음에 선호할 아이템을 예측하는 추천 시스템
  • 전통적인 추천 시스템(Collaborative Filtering, Content-based Filtering 등)과 다르게, 사용자의 시계열 데이터 or 행동의 순서를 활용해 사용자의 관심사와 선호도의 변화를 모델링함
  • Sequence Data : 시간이나 순서에 따라 발생하는 데이터를 통합해서 Sequence Data라고 함.
  • 사용자의 행동 데이터의 시간적 흐름순서를 고려하여 더 개인화되고 맥락에 맞는 추천을 제공하는 Next Item Production
  • 현재 존재하는 Sequential Recommender System 예시
    • Self-Attentive Sequential Recommendation (SASRec)
    • BERT4Rec
    • Neural Attentive Session-Based Recommendation (NARM)
  • 카카오, 유튜브 등 다양한 웹 매체에서 추천 시스템의 주요 모델로 사용중.
    • 카카오의 경우는 BERT4Rec 사용

Why appear?

  1. 기존 추천 시스템의 한계
  • 기존의 Collaborative Filtering, Content-Based Recommendation은 사용자의 행동, 데이터를 변하지 않는 것이라고 간주함. → 특정 시점에서의 선호도, 트렌드를 반영하지 못함. (사용자의 관심도는 계속해서 변함)
  • 기존 추천 시스템의 경우, 시간적 순서나 행동의 흐름을 고려하지 않는 문제 존재 → 최근의 행동이 더 중요한 경우, 이를 반영하지 못함.
  • 사용자의 선호도를 단일 데이터 스냅샷으로 추출해 추천에 활용함. → 과거에는 좋아하지만, 현재에는 선호하지 않는 항목이 추천될수도 있는 문제 존재

→ 기존의 추천 시스템들은 추천의 퀄리티에 대한 이슈가 존재했음.

  1. 사용자 행동의 Dynamic한 특성을 반영할 수 있어야 함
  • 시간에 따른 관심사 변화를 반영하는 것이 필요
  • 사용자는 특정 행동에서 일정한 패턴을 보이는데, 이러한 패턴을 학습해야 맥락에 맞는 추천이 이어질 수 있음
    • ex) 오전에는 축구 관련 영상을 보는데, 저녁에는 게임 관련 영상을 보는 사람을 기준으로, 저녁 시간에 추천을 할 때 게임 관련 영상을 추천할 수 있어야 함
  1. 기술의 발전
  • 딥러닝 기반 기술의 등장으로, 시간적 순서를 학습하는 것에 있어 제약이 없어짐.
  1. 개인화의 필요성
  • 즉각적이고 맥락에 맞는, 사용자 개개인에 특화된 추천이 필요함
  • 추천의 실시간성과 정확성이 충분히 반영되어야 함

History of Recommender System

  1. Markov Chain base Models
  • 사용자의 이전 상태에 기반한 다음 행동 예측
  • 복잡한 순서 패턴이 존재한다면, 이를 모델링하는 것에 한계가 있음.
  1. RNN 계열의 Neural Network Model
  • 순차 데이터 처리에 중심, 오랜 기간의 데이터를 학습할 수 있음
  • 많은 데이터(긴 시퀀스)에서 기울기 소실 문제가 발생할 수 있음.
  1. Transformer 기반 모델
  • Self-Attention Mechanism을 활용해 병렬 처리가 가능하며, 장기 의존성 문제를 해결한 모델
  • SASRec: Self-Attention을 기반으로 한 대표적인 순차적 추천 모델
  • BERT4Rec: BERT 구조를 활용하여 양방향 추천을 가능하게 한 모델
  1. 강화 학습 기반 모델
  • 사용자의 행동을 상태로 보고, 행동과 보상 간의 관계를 학습하여 최적의 추천을 생성.

Representation Learning

  • 원본 데이터에서 유의미한 정보를 추출하고, 이 정보를 새로운 형태의 표현으로 변환하는 과정
  • 사람의 직관이나 간섭 없이 데이터로부터 기계가 어떻게 데이터가 표현될 수 있는지를 학습함
  • 고차원 데이터를 더 간결한 저차원 공간에 표현해 데이터의 구조적 또는 내재적 특성 반영
  • 이미지를 예시로 든다면, 객체를 인식하는 문제에서 표현 학습은 이미지의 원시 픽셀 값에서 유용한 특징(예: 모서리, 질감, 색상 등)을 자동으로 학습하여, 이를 바탕으로 객체를 인식하는 데 필요한 정보를 추출한다.
  • 쉽게 말하면, Self-Supervised Learning의 한 종류이다!!

Contrastive Learning

  • Self-Supervised Learning 방식 중 하나
  • 유사한 데이터는 저차원 공간에서 가깝게, 동시에 다른 데이터는 서로 멀리 떨어지도록 하는 학습 방법
  • 유사한 양수 쌍 또는 샘플들의 표현 사이의 거리를 최소화하고, 다른 음수쌍 또는 샘플의 표현 거리를 최대화해 특징을 추출 학습하는 방법
  • 특정 예측을 위한 Classification이 아닌, 표현 자체가 의미가 있는지 확인하는 방법이라고 할 수 있음 → 주석이나 레이블이 없어도, 데이터에 대해 많은 것을 학습하도록 모델을 훈련시킬 수 있음.

Contrastive Learning의 작동 방법

레이블이 지정되지 않은 데이터셋에서 Contrastive loss를 최소화하는 인코더 파라미터를 찾는 것으로 수행된다.

데이터 샘플들 간의 유사성, 차이를 학습해 표현을 효과적으로 학습하는 Self-Supervised Learning의 종류임을 알아야 한다.

비슷한 데이터 샘플(positive pair)은 서로 가깝게, 다른 데이터 샘플(negative pair)은 멀게 위치하도록 임베딩 공간을 학습시키는 것을 진행한다.
(여기서는 이미지를 위주로 설명하지만, 시계열 데이터 등 역시 같은 원리로 작동됩니다.)

  1. 데이터셋의 각 데이터에 대해 서로 다른 Augmentation을 적용해 Positive pair을 생성 (Data Augmentation)

    • 이때, 두 이미지는 본질적으로 동일한 이미지의 다른 버전이기에, 두 이미지가 유사하다는 것을 학습하는 것이 목표입니다.
  2. 임베딩 생성

    • 데이터 변환 후, 모델을 통해 임베딩 벡터 생성
    • 임베딩의 경우 동일한 공간에서 비교 가능
  3. Positive/Negative Pair 비교:

  • Positive pair는 임베딩 공간에서 더 가깝게, Negative pair는 더 멀게 학습
  • 이 과정에서 입력 쌍에 대해 유사도를 라벨로 Discrimination model 학습을 진행한다.
  1. 손실 함수 최적화:
    • Contrastive Loss or InfoNCE Loss 둘 중 하나로 Positive pair, Negative pair 간의 관계를 학습
      • Contrastive Loss

        L=1Ni=1N(yiDi2+(1yi)max(0,mDi)2)\mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} \left( y_{i} \cdot D_{i}^{2} + (1 - y_{i}) \cdot \max(0, m - D_{i})^{2} \right)
      • NN : 배치 크기

      • yi0,1y_i \in 0,1 : 샘플 쌍 ii가 positive pair인 경우 1, negative pair인 경우 0

      • DiD_i : 두 샘플 간의 거리, Euclidian 사용

        Di=zizi+D_{i} = \|\mathbf{z}_i - \mathbf{z}_i^+\|
        • zi,zi+\mathbf{z}_i , \mathbf{z}_i^+ : 샘플 i,ii, i의 positive pair 임베딩
      • mm : 마진, Negative pair의 경우, DiD_imm 이상이 되도록 유도

      • Di2D_i^2 : positive pair에서 거리를 최소화하기 위한 제곱 거리

      • InfoNCE Loss

        LInfoNCE=1Ni=1Nlogexp(sim(zi,zi+)/τ)j=12Nexp(sim(zi,zj)/τ)\mathcal{L}_{\text{InfoNCE}} = - \frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp(\text{sim}(\mathbf{z}_i, \mathbf{z}_i^+) / \tau)}{\sum_{j=1}^{2N} \exp(\text{sim}(\mathbf{z}_i, \mathbf{z}_j) / \tau)}
      • NN : 배치 크기

      • ziz_i : 샘플 ii의 임베딩 벡터

      • zi+z_i^+ : 샘플 ii의 Positive Pair

      • sim(zi,zj)\text{sim}(z_i, z_j) : 벡터 간 유사도, Cosine Similarity 사용

        sim(zi,zj)=zizjzizj\text{sim}(\mathbf{z}_i, \mathbf{z}_j) = \frac{\mathbf{z}_i \cdot \mathbf{z}_j}{\|\mathbf{z}_i\| \|\mathbf{z}_j\|}
      • τ\tau : 온도 스케일링 파라미터

        • Softmax의 스케일을 조정해 Positive pair, Negative pair 간의 구별을 얼마나 강조할지 결정
        • 작을수록 민감함
  2. 임베딩 공간 구축:
    • 학습이 완료되면 임베딩 공간에서 유사한 데이터가 군집화됨

주요 평가 지표

참조

https://www.blossominkyung.com/deeplearning/contrastive-learning

https://hidemasa.tistory.com/226

https://medium.com/@hugmanskj/표현학습-representation-learning-개요-ea8d6252ea83

https://profleeedudata9591.tistory.com/79

profile
AI 개발자에서 이제는 대학원생

0개의 댓글