■ 일시 및 장소
2023년 6월 22일 목요일 19:00 ~
■ 아젠다
트위터의 추천 시스템 파헤치기
2023년 4월 5일 오픈소스로 공개된 트위터의 추천 시스템에 대해서 살펴봅니다.
트위터의 개인화/랭킹 후보군을 만들어내는 추천 알고리즘부터, 이를 지탱하는 파이프라인까지 모두 소개합니다.
■ 발표자
카카오스타일 데이터사이언티스트 이명휘
7. Uni
fi
ed User Actions (UUA)
목적
주요내용
adapter raw 데이터들을 UUA에 알맞게 정제 한다.
client Kafka 클라이언트와 관련된 설정
kafka Kafka 커스터마이징 파일
service 배포, 서비스 관련 모듈
⦁ 트위터에서 일어나는 모든 유저 행동 데이터를 (준)실시간으로 수집
⦁ 상품, 머신러닝, 마케팅을 관장하는 팀에서 활용
⦁ Kafka를 통해서 HDFS, GCP Pub/Sub, GCP GCS(Cloud Storage), GCP BigQuery에 활용
⦁ 모든 행동(리트윗, 좋아요, 클릭, 북마크, 비디오뷰 등) 로그가 저장
⦁ Scala로 구현
8. User Signal Service (USS)
목적
주요내용
⦁ 트위터의 유저 행동에 대한 종합적인 데이터를 제공하는 중앙집중식 온라인플랫폼
⦁ implicit data (노출, 클릭) & explicit data (리트윗, 좋아요, 답글) 등을 수집
⦁ UUA보다 일관성(consistency)과 정확성(accuracy)을 높이기 위해 데이터를 정제
⦁ 데이터를 수집할 때 균일한 방식으로 타입(signal)을 수집
⦁ 해당 데이터는 랭킹 및 머신러닝에 활용
⦁ Scala, Thrift로 구현
13. SimClusters
목적
주요내용
⦁ 유저간의 관계 데이터를 통해 임베딩 생성하고 트윗, 토픽 추천 등에 피쳐로 활용
⦁ 유저들의 커뮤니티(Cluster)를 생성
⦁ 팔로우 관계를 이분 그래프(bipartite graph)로 표현 (Follow relationships as a bipartite graph)
⦁ Consumer (팔로우 하는 유저들의 집합)
⦁ Producer (팔로우 되는 유저들의 집합)
14. SimClusters Cont’d
주요내용
⦁ Consumer와 Producer를 m x n 행렬인 A로 표현 (Consumer: u & Producer: v)
⦁ Producer-Producer간의 코사인유사도를 이용한 유사성 그래프를 구현
⦁ Threshold를 지정하여 특정 이하의 유사도를 가진 간선은 삭제
⦁ 유사성 그래프를 이용해 Producer(팔로우된 사람)의 커뮤니티를 형성
15. SimClusters Cont’d
주요내용
⦁ 앞서 계산된 커뮤니티(가입) 점수를 활용해 아래처럼 Producer와 Communities 관계인 “Know for” 행렬 V를 구성
⦁ 행렬 V는 매우 희소(Sparse)
⦁ 트위터 프로덕션 환경에서는 약 145,000개의 커뮤니티가 생성
⦁ Producer와 Communities관계인 V행렬과 Consumer와 Producer관계인 A행렬을 곱하면 Consumer 행렬 U을 구현
⦁ 이는 Consumer의 롱텀 취향을 포착하는데 도움
17. TwHIN (Twitter Heterogeneous Information Network)
목적
주요내용
⦁ 유저와 트윗간의 인터랙션 데이터를 그래프화 시켜 사전학습
⦁ 추천, 광고, 검색 랭킹등에 사용
⦁ TransE HIN (Heterogeneous Information Network)를 Twitter에 맞에 튜닝
⦁ Head node, Relation, Tail node
18. TwHIN Cont’d
주요내용
⦁ 서로 연결된 간선을 고려하여 노드의 특성을 임베딩하는 것이 목표
⦁ 유저 인터랙션(Click, Favorite, Retweet, Reply)들의 관계를 그래프로 변경
19. TwHIN Cont’d
주요내용
⦁ FAISS, HNSW를 이용해서 ANN을 이용해서 후보군을 생성
⦁ Downstream Task에 적용하기 위해서 랭킹 모델은 DNN으로 구성
⦁ 광고 랭킹에 이용 (CTR예측 & pCTR)
⦁ RCE(Relative Cross Entropy)를 매트릭으로 사용하여 평가에 활용
20. TwHIN Cont’d
주요내용
⦁ 분산처리를 위해서 torchrec 패키지의 DDP(Distributed data parallel)를 잘 활용
⦁ 모델의 구현은 간단하나 대부분 소스코드는 분산처리를 위한 파이프라이닝에 초점
⦁ 분산처리로 인해서 윈도우나 맥환경에서 소스코드를 실행시키기 어려운 구조
23. trust-and-safety-models
목적
주요내용
⦁ 어뷰징 및 NSFW 트윗을 탐지하기 위한 모델
⦁ pNSFWMedia : NSFW 이미지가 업로드된 트윗 탐지 (포르노 콘텐츠도 포함)
⦁ pNSFWText : 성적인 내용(텍스트)과 관련된 주제의 트윗 탐지
⦁ pToxicity : 욕설, 폭력 등의 내용 탐지
⦁ pAbuse : 어뷰징 콘텐츠 탐지
27. search-index
목적
주요내용
⦁ 트위터의 검색 시스템(Earlybird)
⦁ 트위터 홈에 노출할 트윗의 랭킹을 산정하기 위한 검색(retrieval information) 구조
⦁ 아파치 루신(Lucene) 기반으로 구성
⦁ In-network(UserID) 기반의 트윗을 서비스
⦁ 수백만건의 tweet 쿼리를 처리하기 위하여 효율적인 인덱싱 시스템 구축(low-latency)
⦁ 특정 유저를 팔로우하면 해당 유저의 tweet을 검색 → Light ranker를 통해 Rerank → Home에 노출
28. search-index Cont’d
주요내용
⦁ tweet 인덱스를 3개의 클러스터로 구성
⦁ 유저 수정사항(UserUpdates Ingester) 및 tweet들이 생성(Tweet Ingester)되면 kafka 토픽으로부터 이를 받아와 Elarlybird에 인덱싱
⦁ FeatureUpdateService는 like, retweets, replies과 카운팅 인덱싱
realtime
cluster
지난 7일의 public tweet을 인덱싱
protected
cluster
모든 protected tweet을 인덱싱
archive
cluster
지난 이틀동안의 모든 tweet을 인덱싱 (아카이빙)
30. cr-mixer
목적
주요내용
⦁ 개인화 알고리즘(Out-of-Network) 후보군 생성기 (Candidate Generator)
⦁ 주 목적은 후보군 생성 속도를 늘리는 것 → 파이프라인을 구성하고, 이를 혼합(mixing)하는 기능
⦁ configurator(구성자), delegator(위임자) 역할을 하여 후보군 생성의 추상화를 제공
⦁ Light ranking layer, Common filtering layer, Version control system 등으로 구성
⦁ Source Signal Extraction → Candidate Generation → Filtering → Ranking
⦁ 특정 유저를 팔로우하면 해당 유저의 tweet을 검색 → Light ranker를 통해 Rerank → Home에 노출
⦁ 디버깅 및 모니터링과 같은 외부도구도 함께 지원
⦁ UserProfileService, RealGraph와 같은 저장소에서 Signal을 추출 → 후보생성 → 결과 캐시
33. light-ranker
목적
주요내용
⦁ Earlybird light-ranker는 유저가 tweet을 클릭할 확률을 예측하는 logistic regression 모델
⦁ heavy ranker의 심플버전
Static Features Realtime Features
tweet이 retweet인지 여부 tweet의 좋아요 수
tweet에 링크 포함 여부 tweet의 답글 수
tweet에 trend keyword 포함 여부 tweet의 retweet 수
tweet이 답글인지 여부 NSFW모델에서 추출된 pToxicity, pBlock score
… …
Tweet Data Search Context Features
User Language tweet의 좋아요 수
UserId 현재 시간
… …
34. heavy-ranker
목적
주요내용
⦁ For You 타임라인에 대한 tweet 순위를 매기는 모델
⦁ light-ranker와 동일하게 유저와 tweet에 대한 0-1 사이의 스코어를 뽑아주게됨
⦁ Feature-Wise Multiplication CTR Ranking(Prediction) Model
42. References
- Feature Component
- Candidate Source Component
- Ranking Component
- Data Component
https://github.com/twitter/the-algorithm/tree/main/uni
fi
ed_user_actions
https://github.com/twitter/the-algorithm/tree/main/user-signal-service
https://github.com/twitter/the-algorithm/tree/main/src/scala/com/twitter/simclusters_v2
https://github.com/twitter/the-algorithm-ml/blob/main/projects/twhin
https://github.com/twitter/the-algorithm/blob/main/trust_and_safety_models
Satuluri, V., Wu, Y., Zheng, X., Qian, Y., Wichers, B., Dai, Q., ... & Lin, J. (2020, August). Simclusters: Community-based representations for heterogeneous
recommendations at twitter. In Proceedings of the 26th ACM SIGKDD international conference on knowledge discovery & data mining (pp. 3183-3193).
El-Kishky, A., Markovich, T., Park, S., Verma, C., Kim, B., Eskander, R., ... & Haghighi, A. (2022, August). Twhin: Embedding the twitter heterogeneous information
network for personalized recommendation. In Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (pp. 2842-2850).
https://github.com/twitter/the-algorithm/blob/main/src/java/com/twitter/search
https://github.com/twitter/the-algorithm/tree/7f90d0ca342b928b479b512ec51ac2c3821f5922/cr-mixer
https://github.com/twitter/the-algorithm/tree/main/src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird
https://github.com/twitter/the-algorithm-ml/blob/main/projects/home/recap
Wang, Z., She, Q., & Zhang, J. (2021). MaskNet: Introducing feature-wise multiplication to CTR ranking models by instance-guided mask. arXiv preprint
arXiv:2102.07619.