콜드 스타트, 추천 시스템의 영원한 숙제

넷플릭스 같은 구독 기반 스트리밍 서비스에서 추천 시스템의 성능은 사용자 경험을 좌우하는 핵심 요소입니다. 그런데 모든 추천 시스템이 직면하는 난제가 하나 있습니다. 바로 콜드 스타트(Cold-Start) 문제입니다.

새로운 영화나 시리즈가 공개되면, 그 콘텐츠에 대한 시청 이력이 전혀 없습니다. 기존의 개인화 모델은 '사용자가 어떤 콘텐츠를 봤는가'라는 행동 데이터에 의존하는데, 데이터가 쌓이기 전까지는 인기순이나 장르 같은 일반적인 기준으로만 추천할 수밖에 없죠. 이는 사용자의 개인 취향을 전혀 반영하지 못하는 한계를 가집니다.

넷플릭스는 이 문제를 해결하기 위해 **멀티모달 임베딩(Multimodal Embedding)**이라는 근본적인 해결책을 선택했습니다. 모델이 콘텐츠의 ID만 보는 것이 아니라, 이미지와 영상, 음성, 텍스트 등 콘텐츠의 실제 내용을 '이해'할 수 있게 만든 것이죠. 이번 글에서는 넷플릭스 기술 블로그에 공개된 MAPS(Multimodal Asset Personalization at Scale) 시스템을 분석하고, 이것이 국내 개발 생태계에 주는 시사점을 함께 살펴보겠습니다.

Netflix MAPS system using multimodal embeddings to understand artwork and video content Software Concept Art

핵심 전략: 모델이 콘텐츠를 '보고', '듣게' 하라

1. 아트워크 개인화: CLIP 임베딩의 도입

넷플릭스는 각 타이틀에 대해 다양한 아트워크를 제작합니다. 사용자 취향에 맞는 이미지를 보여주기 위해서인데, 문제는 새 타이틀의 경우 아트워크별 클릭 데이터가 없다는 점이었습니다.

이를 해결하기 위해 CLIP(Contrastive Language-Image Pre-training) 모델을 도입했습니다. CLIP은 이미지와 텍스트를 동일한 임베딩 공간에 매핑하는 모델로, 이미지의 시각적 특징을 768차원 벡터로 변환합니다.

# CLIP 임베딩을 활용한 아트워크 표현 (개념 예시)
import torch
import clip

# 모델 로드
model, preprocess = clip.load("ViT-B/32", device="cuda")

# 아트워크 이미지 전처리 및 임베딩 생성
def get_artwork_embedding(image_path):
    image = preprocess(Image.open(image_path)).unsqueeze(0).to("cuda")
    with torch.no_grad():
        # 768차원 이미지 임베딩 추출
        image_features = model.encode_image(image)
    return image_features.cpu().numpy()

# 기존 학습된 ID 임베딩과 결합
# asset_representation = concat([id_embedding, clip_embedding])
# 이렇게 함으로써 모델은 이미지의 실제 내용을 이해

이 방식의 핵심 장점은 새로운 아트워크가 생성되는 즉시 CLIP 임베딩을 얻을 수 있다는 점입니다. 과거에는 ID 기반으로 학습된 모델이 새로운 이미지를 볼 때 "이건 처음 보는 ID인데?"라고 처리했다면, 이제는 비슷한 시각적 특징을 가진 기존 아트워크의 데이터를 즉시 활용할 수 있습니다.

2. 모델 통합: 5개에서 1개로

CLIP 임베딩의 또 다른 놀라운 특성은 크롭(Crop)과 리사이즈(Resize)에 불변(invariant) 하다는 것입니다. 동일한 장면을 다양한 비율로 자른 이미지들은 거의 동일한 벡터로 매핑됩니다.

이 특성을 활용해 넷플릭스는 캔버스(빌보드, 세로형 박스, 가로형 패널 등)별로 따로 학습하던 5개의 모델을 하나의 통합 모델로 합쳤습니다. 이제 한 캔버스에서 학습된 사용자 선호도가 데이터가 부족한 다른 캔버스에도 즉시 전이됩니다.

3. 비디오 미리보기: MediaFM으로 오디오까지 이해

비디오 미리보기는 정적 이미지보다 훨씬 복잡합니다. 움직임, 편집 속도, 음악, 대사 등이 모두 매력에 영향을 주기 때문이죠. 넷플릭스는 8000만 개의 샷(Shot)으로 학습된 자체 멀티모달 기반 모델 MediaFM을 사용합니다.

  • 시각(Visual): SeqCLIP (프레임 기반 CLIP)
  • 오디오(Audio): 사전 학습된 음성/오디오 임베딩 모델
  • 텍스트(Text): 대규모 텍스트 모델로 인코딩된 자막

세 가지 신호를 각 샷마다 융합해 하나의 임베딩으로 만들고, 이를 기존 개인화 모델에 통합했습니다. 실험 결과, MediaFM이 SeqCLIP(시각만 사용)보다 더 높은 성능을 보였고, 이는 오디오와 텍스트 정보가 추천 품질에 실질적인 기여를 한다는 것을 증명합니다.

Data flow diagram showing CLIP and MediaFM embeddings feeding into personalization models Developer Related Image

검색 의도 반영과 비용 효율적인 검증 전략

쿼리 인지 아트워크 랭킹

검색 페이지에서는 사용자의 명시적 의도가 중요합니다. 특정 배우를 검색한다면, 일반적인 취향과 다르더라도 그 배우가 나온 아트워크를 보여주는 것이 맞습니다.

CLIP이 텍스트와 이미지를 동일한 공간에 매핑한다는 점을 활용해, 쿼리와 아트워크 간의 **코사인 유사도(Cosine Similarity)**를 개인화 점수에 결합합니다.

# 쿼리-아트워크 정렬 점수 (개념 예시)
import numpy as np

def query_aware_score(personalization_score, query_emb, artwork_emb, alpha=0.3):
    # 쿼리와 아트워크 간의 유사도 계산
    alignment = np.dot(query_emb, artwork_emb) / (
        np.linalg.norm(query_emb) * np.linalg.norm(artwork_emb)
    )
    # 개인화 점수와 결합
    return (1 - alpha) * personalization_score + alpha * alignment

# alpha 값은 A/B 테스트로 최적화

이 방식은 추가 모델 학습 없이 추론 시간에 유사도 계산만 추가하면 되므로 매우 효율적입니다.

임베딩 선택을 위한 저비용 프록시 태스크

모든 새 임베딩에 대해 전체 파이프라인을 돌리는 것은 비용이 큽니다. 넷플릭스는 이를 위해 **선형 프로브(Linear Probe)**라는 간단한 사전 검증 단계를 도입했습니다.

  1. 탐색 데이터에서 편향이 제거된 인기 우승 아트워크를 식별
  2. 해당 아트워크의 임베딩만으로 이 우승자를 예측할 수 있는지 선형 분류기로 테스트
  3. 임베딩이 인기 요인을 잘 포착한다면, 선형 분류기의 성능이 랜덤보다 높게 나옴

이 간단한 테스트를 통해 전체 실험 전에 유망한 후보를 선별할 수 있습니다.

Developer analyzing Netflix recommendation system architecture and embedding store Development Concept Image

국내 생태계 적용 맥락과 한계, 그리고 다음 단계

국내 개발 생태계에서의 적용 맥락

넷플릭스의 접근법은 국내 OTT, 커머스, 콘텐츠 플랫폼에도 시사하는 바가 큽니다. 특히 신규 콘텐츠가 지속적으로 추가되는 환경에서 콜드 스타트 문제를 해결하는 것은 매우 중요합니다.

국내 SI나 스타트업 환경에서는 대규모 파운데이션 모델(MediaFM 같은)을 자체 구축하기는 어렵지만, 사전 학습된 오픈소스 모델(CLIP, ImageBind 등)을 활용하는 것부터 시작할 수 있습니다. 또한, 넷플릭스처럼 처음부터 완벽한 A/B 테스트 인프라를 갖추기보다는, 오프라인 메트릭(IPS 등)과 온라인 실험을 점진적으로 도입하는 것이 현실적입니다.

기술의 한계 및 주의사항

  • 임베딩의 해석 가능성: CLIP이나 MediaFM이 왜 특정 이미지를 선호하는지에 대한 명확한 근거를 제공하지 않습니다. 이는 규제나 감사 관점에서 문제가 될 수 있습니다.
  • 도메인 적응 비용: 사전 학습된 모델은 범용 데이터로 학습되었기 때문에, 특정 도메인(예: 한국 드라마, 예능)의 시각적 특징을 완벽히 반영하지 못할 수 있습니다. 파인튜닝이 필요할 수 있습니다.
  • 인프라 복잡성: 임베딩 스토어를 구축하고, 학습/추론 시점의 임베딩 일관성을 유지하는 것은 상당한 엔지니어링 리소스를 요구합니다.

다음 단계 학습 방향

  • 멀티모달 모델 이해: CLIP, ImageBind, CoCa 등 멀티모달 모델의 구조와 학습 방식을 학습하세요.
  • 임베딩 서빙 아키텍처: 벡터 데이터베이스(FAISS, Milvus)와 임베딩 스토어 구축 패턴을 공부하세요.
  • 추천 시스템 평가: IPS와 같은 편향 보정 오프라인 평가 방법과 A/B 테스트 설계를 심화 학습하세요.

함께 보면 좋은 글

본 콘텐츠는 신뢰할 수 있는 출처를 바탕으로 AI 도구를 활용하여 초안이 작성되었으며, 편집자의 검토를 거쳐 발행되었습니다. 전문가의 조언을 대체하지 않습니다.