광고 랭킹, 왜 '관심사 표현'이 다시 화두일까?

메타가 최근 공개한 Hierarchical Interest Representation(HIR) 은 이름 그대로 "관심사를 계층적으로 표현하는 업스트림 레이어"예요. 광고 랭킹 모델(GEM, Andromeda, Adaptive Ranking Model)이 아무리 잘 튜닝되어 있어도, 그 아래에서 유저와 광고 엔티티를 어떻게 표현(embedding)하느냐가 결국 성능 상한을 결정한다는 문제의식에서 출발합니다.

쉽게 말하면 이런 거예요.

  • 기존: "이 유저는 A 광고를 클릭했다" → 그 신호를 랭킹 모델이 소비
  • HIR: "이 유저는 고양이 사료·친환경 리빙·주말 캠핑 이라는 관심사 프리미티브에 속한다" → 그 표현을 랭킹 모델이 소비

특히 딥퍼널(deep funnel) 영역은 전환까지 도달하는 유저가 극소수라서 신호가 희소(sparse)해요. HIR은 이 희소성을 월드 노하우(LLM 기반 멀티모달 지식) + 그래프 구조 학습으로 메꾸겠다는 접근입니다.

근거자료: Meta Engineering - Exploring Hierarchical Interest Representation

💡 국내 개발 생태계 관점: 국내 광고/커머스 추천 시스템 팀에서도 "유저-아이템 상호작용이 희소할 때 콘텐츠 기반 지식(LLM 임베딩)으로 어떻게 보강할까"는 오래된 숙제예요. HIR은 이 문제를 그래프 + LLM + 자기지도학습 조합으로 푼 레퍼런스 케이스라서, 사내 추천 파이프라인 설계할 때 참고할 만합니다.

Graph visualization of users and ads entities connected by interest primitives in Meta's hierarchical representation layer Technical Structure Concept

아키텍처 뜯어보기: 4개의 축

HIR의 설계는 크게 네 가지 속성으로 요약됩니다.

1. Dimension Reduction (차원 축소)

원본 그래프의 유저-광고 엣지는 매우 희소해요. HIR은 이걸 super-graph로 투영해서, 각 super-node를 "학습된 관심사 프리미티브(latent interest primitive)"로 만듭니다. 결과적으로 희소했던 엣지가 프리미티브 그래프에서는 훨씬 dense해지고, 어휘(vocabulary) 자체가 안정화됩니다.

2. Knowledge Enrichment (지식 보강)

광고주·상품 엔티티에 텍스트·이미지·비디오 멀티모달 피처를 붙이고, LLM 추론 엔진을 통해 인코딩합니다. "유저가 이걸 어떻게 소비했는가"뿐 아니라 **"이게 실제로 무엇인가"**를 함께 표현하는 게 핵심이에요.

3. Unified Relational Representation (통합 관계 표현)

유저·광고·광고주·상품을 하나의 메트릭 공간에 임베딩합니다. 임베딩 연산만으로 primitive-to-primitive, cluster-to-cluster 관계를 계산할 수 있고, 유저와 관심사 프리미티브의 근접도도 구할 수 있어요.

4. Multi-Hierarchical Granularities (다층 계층)

Dense하고 안정적인 관계는 거친(coarse) 상위 추상화로, 희소하고 구체적인 연결은 세밀한(fine) 추상화로 표현합니다. HIR은 여러 계층을 cascade하는 super-graph를 학습해서, 랭킹/개인화/검색 등 다양한 다운스트림에 꽂을 수 있게 설계됐어요.

핵심 컴포넌트: Hierarchical Encoder

트랜스포머 기반 인코더인데, 그래프 구조를 attention bias로 녹여 넣는 게 포인트입니다.

# 개념적 의사코드 (실제 Meta 구현과 다름)
# Bias-aware attention: 그래프 구조 신호를 attention score에 더함
def graph_biased_attention(Q, K, V, node_types, shortest_path_dist):
    # 1) 기본 attention score
    attn = Q @ K.transpose(-2, -1) / (d_k ** 0.5)

    # 2) 그래프 구조 bias 추가
    #    - node-type transition bias (엣지 따라 이동할 때 타입 변화)
    #    - shortest-path distance bias (로컬 연결성)
    bias = node_type_bias(node_types) + spd_bias(shortest_path_dist)
    attn = attn + bias

    # 3) FlexAttention으로 pairwise bias 행렬을 materialize하지 않고 on-the-fly 계산
    #    → 메모리 효율 + 그래프 구조 인지 동시에 확보
    return softmax(attn) @ V

FlexAttention을 쓴 이유가 실무적으로 중요합니다. 그래프 bias를 표준 attention에 그냥 더하면 pairwise bias 행렬을 통째로 메모리에 올려야 해서 memory-efficient attention으로 못 내려가요. FlexAttention은 bias 항을 on-the-fly로 계산해서 이 문제를 피합니다. 가변 길이 서브그래프는 block-masked 시퀀스로 패킹해서 padding 낭비와 cross-graph leakage도 막고요.

학습: Cross-View Distillation + Engagement Prediction

  • Cross-View Distillation: 같은 anchor 노드에 대해 teacher view(넓게)와 student view(좁게)를 샘플링. Student가 teacher와 같은 interest cluster를 예측하도록 학습. Teacher가 더 넓은 그래프를 보니까 더 confident한 타깃을 주는 구조예요.
  • Sinkhorn-Knopp balanced assignment로 single-cluster collapse(자기지도학습의 고질병)를 방지합니다.
  • Engagement Prediction: 두 노드 표현 + 엣지 타입 + 시간이 주어졌을 때 실제 엣지가 존재하는지 예측. 자기지도(view-invariant) + 지도(실제 행동)를 결합해서 범용 스코어링 함수로 만드는 거죠.

온라인 그래프 인프라

  • 학습과 서빙이 동일한 데이터 소스를 씀 → 분포 일치
  • 서브그래프 fetch와 노드 피처 read를 GPU 연산과 파이프라이닝 → 동기 baseline 대비 30x wall-clock speedup
  • Bit-exact reproducibility 유지 → 인프라 마이그레이션/체크포인트 복구가 모델 동작을 조용히 바꾸지 않음
  • 학습/평가 시 cutoff timestamp로 미래 정보 누출 차단, 배치는 시간 청크 내에서만 셔플

토큰화: Bag-of-Meaning (BoM)

연속 임베딩은 랭킹엔 좋지만 inverted-index 검색, 집합 집계, 사람이 읽는 해석에는 부적합해요. 그래서 composite quantization으로 이산화한 BoM 토큰을 만듭니다.

  • 유저 = 관심사를 나타내는 BoM 토큰 집합
  • 광고/광고주 = 그들이 서빙하는 관심사의 BoM 토큰 집합

이러면 retrieval 단계에서 inverted index lookup으로 빠르게 recall할 수 있고, MoE 라우팅(super-interest 카테고리 기반) 같은 특수 아키텍처도 가능해집니다.

Transformer-based hierarchical encoder processing multimodal advertiser content for interest embedding learning Developer Related Image

주의사항과 한계 (비판적 시각)

HIR은 인상적이지만, 그대로 우리 팀에 복붙할 수 있는 물건은 아닙니다.

1. 스케일 전제가 다르다

"billions of interactions"를 end-to-end로 학습한다는 건, 그래프 엔진·GPU 파이프라이닝·bit-exact 재현성까지 인프라가 받쳐준다는 뜻이에요. 중소 규모 팀이 이 아키텍처를 그대로 도입하면 인프라 비용이 모델 성능 이득을 잡아먹습니다.

2. 자기지도학습의 함정

Cross-View Distillation은 teacher view 품질에 성능이 크게 좌우돼요. Sinkhorn-Knopp으로 collapse는 막았지만, 클러스터 개수/온도 하이퍼파라미터에 민감합니다. 실무에서는 클러스터 품질을 별도로 모니터링해야 해요.

3. FlexAttention 의존성

FlexAttention은 특정 하드웨어/커널 조합에 최적화돼 있어요. 다른 스택으로 옮기면 memory-efficient attention + graph bias를 동시에 만족시키기 어려울 수 있습니다.

4. BoM 토큰의 정보 손실

연속 임베딩을 이산화하면 retrieval엔 유리하지만 fine-grained ranking 성능은 떨어질 수 있어요. HIR도 BoM을 retrieval/개인화 보조로 쓰고, 최종 랭킹은 연속 임베딩을 쓰는 하이브리드 구조로 보입니다.

5. 시간 누출 방지의 비용

Cutoff timestamp + 시간 청크 셔플은 정확성을 지키지만, 배치 다양성을 제한합니다. 학습 처리량과 시간적 엄밀함 사이의 트레이드오프를 인지해야 해요.

다음 단계 학습 방향

  • 그래프 트랜스포머: Graphormer, GraphGPS 계열 논문부터 훑어보세요. Bias-aware attention의 원형이 여기 있습니다.
  • 자기지도 학습: DINO, SimCLR, SwAV의 view invariance 개념을 이해하면 Cross-View Distillation이 훨씬 쉽게 읽혀요.
  • FlexAttention: PyTorch 2.5+의 torch.nn.attention.flex_attention 문서를 직접 돌려보세요. 커스텀 bias를 어떻게 register하는지 감이 옵니다.
  • Composite Quantization: Product Quantization(PQ) 계열을 보면 BoM 토큰이 왜 그렇게 생겼는지 이해됩니다.

Large-scale online graph engine serving billions of user-ad interaction edges for deep funnel optimization Programming Illustration

실무 적용을 위한 정리

HIR의 진짜 메시지는 "거대 그래프 + LLM 지식 + 자기지도학습을 결합하면, 희소한 딥퍼널 신호를 안정적인 관심사 표현으로 바꿀 수 있다"입니다. 이 아이디어 자체는 우리 규모에 맞게 축소해서 적용할 수 있어요.

  1. 그래프 스키마 먼저 정리: 유저-아이템-광고주-카테고리를 typed, weighted, time-decayed 그래프로 모델링하세요. 이거 없이는 아무것도 안 됩니다.
  2. 지식 보강은 LLM으로: 상품/광고 크리에이티브를 LLM으로 임베딩해서 sparse interaction을 보강하세요. 최근엔 오픈소스 임베딩 모델로도 충분히 효과 봅니다.
  3. 자기지도 + 지도 결합: view-invariant 목적함수만으로는 실서비스 성능이 안 나와요. 반드시 engagement prediction 같은 지도 목적함수를 함께 걸어야 합니다.
  4. Retrieval용 이산 토큰 별도 관리: 연속 임베딩과 BoM 같은 이산 토큰을 분리해서 운영하세요. 하나로 다 하려다 둘 다 놓칩니다.

함께 보면 좋은 글

결국 HIR은 "표현 계층(representation layer)을 잘 설계하면 다운스트림이 다 좋아진다"는 오래된 진리를, 메타 스케일에서 증명한 사례입니다. 우리도 모델만 키우지 말고 표현을 먼저 손봐야 할 때예요. 😅

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