SlideShare a Scribd company logo
Kakaostyle ੉‫ൃݺ‬
Twitter
Recommender
System
Algorithm & Pipeline
3. Feature Component
4. Candidate Source Component
1. Intro
5. Ranking Component
6. Tweet Mixing & Filtering Component
7. Kakaostyle Recommender System
2. Data Component
Intro
- Research
- Technology
- Business
Intro
63조
Pipeline
Data Component
> >
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로 구현
User Signal Service (USS)
목적
주요내용
⦁ 트위터의 유저 행동에 대한 종합적인 데이터를 제공하는 중앙집중식 온라인플랫폼
⦁ implicit data (노출, 클릭) & explicit data (리트윗, 좋아요, 답글) 등을 수집
⦁ UUA보다 일관성(consistency)과 정확성(accuracy)을 높이기 위해 데이터를 정제
⦁ 데이터를 수집할 때 균일한 방식으로 타입(signal)을 수집
⦁ 해당 데이터는 랭킹 및 머신러닝에 활용
⦁ Scala, Thrift로 구현
User Signal Service (USS) Cont’d
주요 소스코드
Feature Component
>
Feature Component
[0.21, 0.53, 0.75, 0.22…]
[0.31, 0.43, 0.11, 0.26…]
[0.43, 0.53, 0.32, 0.87…]
[0.75, 0.22, 0.54, 0.52…]
User1
User2
User3
User4
[0.61, 0.51, 0.33, 0.22…]
[0.11, 0.48, 0.52, 0.44…]
[0.53, 0.63, 0.67, 0.12…]
[0.85, 0.14, 0.97, 0.72…]
Product1
Product2
Product3
Product4
Dimension
Dimension
Feature Component
SimClusters
목적
주요내용
⦁ 유저간의 관계 데이터를 통해 임베딩 생성하고 트윗, 토픽 추천 등에 피쳐로 활용
⦁ 유저들의 커뮤니티(Cluster)를 생성
⦁ 팔로우 관계를 이분 그래프(bipartite graph)로 표현 (Follow relationships as a bipartite graph)
⦁ Consumer (팔로우 하는 유저들의 집합)
⦁ Producer (팔로우 되는 유저들의 집합)
SimClusters Cont’d
주요내용
⦁ Consumer와 Producer를 m x n 행렬인 A로 표현 (Consumer: u & Producer: v)
⦁ Producer-Producer간의 코사인유사도를 이용한 유사성 그래프를 구현
⦁ Threshold를 지정하여 특정 이하의 유사도를 가진 간선은 삭제
⦁ 유사성 그래프를 이용해 Producer(팔로우된 사람)의 커뮤니티를 형성
SimClusters Cont’d
주요내용
⦁ 앞서 계산된 커뮤니티(가입) 점수를 활용해 아래처럼 Producer와 Communities 관계인 “Know for” 행렬 V를 구성
⦁ 행렬 V는 매우 희소(Sparse)
⦁ 트위터 프로덕션 환경에서는 약 145,000개의 커뮤니티가 생성
⦁ Producer와 Communities관계인 V행렬과 Consumer와 Producer관계인 A행렬을 곱하면 Consumer 행렬 U을 구현
⦁ 이는 Consumer의 롱텀 취향을 포착하는데 도움
SimClusters Cont’d
TwHIN (Twitter Heterogeneous Information Network)
목적
주요내용
⦁ 유저와 트윗간의 인터랙션 데이터를 그래프화 시켜 사전학습
⦁ 추천, 광고, 검색 랭킹등에 사용
⦁ TransE HIN (Heterogeneous Information Network)를 Twitter에 맞에 튜닝
⦁ Head node, Relation, Tail node
TwHIN Cont’d
주요내용
⦁ 서로 연결된 간선을 고려하여 노드의 특성을 임베딩하는 것이 목표
⦁ 유저 인터랙션(Click, Favorite, Retweet, Reply)들의 관계를 그래프로 변경
TwHIN Cont’d
주요내용
⦁ FAISS, HNSW를 이용해서 ANN을 이용해서 후보군을 생성
⦁ Downstream Task에 적용하기 위해서 랭킹 모델은 DNN으로 구성
⦁ 광고 랭킹에 이용 (CTR예측 & pCTR)
⦁ RCE(Relative Cross Entropy)를 매트릭으로 사용하여 평가에 활용
TwHIN Cont’d
주요내용
⦁ 분산처리를 위해서 torchrec 패키지의 DDP(Distributed data parallel)를 잘 활용
⦁ 모델의 구현은 간단하나 대부분 소스코드는 분산처리를 위한 파이프라이닝에 초점
⦁ 분산처리로 인해서 윈도우나 맥환경에서 소스코드를 실행시키기 어려운 구조
TwHIN Cont’d
주요 소스코드
TwHIN Cont’d
trust-and-safety-models
목적
주요내용
⦁ 어뷰징 및 NSFW 트윗을 탐지하기 위한 모델
⦁ pNSFWMedia : NSFW 이미지가 업로드된 트윗 탐지 (포르노 콘텐츠도 포함)
⦁ pNSFWText : 성적인 내용(텍스트)과 관련된 주제의 트윗 탐지
⦁ pToxicity : 욕설, 폭력 등의 내용 탐지
⦁ pAbuse : 어뷰징 콘텐츠 탐지
trust-and-safety-models Cont’d
주요 소스코드
pNSFWMedia pNSFWText
trust-and-safety-models Cont’d
주요 소스코드
pToxicity pAbuse
Candidate Source Component
>
search-index
목적
주요내용
⦁ 트위터의 검색 시스템(Earlybird)
⦁ 트위터 홈에 노출할 트윗의 랭킹을 산정하기 위한 검색(retrieval information) 구조
⦁ 아파치 루신(Lucene) 기반으로 구성
⦁ In-network(UserID) 기반의 트윗을 서비스
⦁ 수백만건의 tweet 쿼리를 처리하기 위하여 효율적인 인덱싱 시스템 구축(low-latency)
⦁ 특정 유저를 팔로우하면 해당 유저의 tweet을 검색 → Light ranker를 통해 Rerank → Home에 노출
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을 인덱싱 (아카이빙)
search-index Cont’d
주요내용
⦁ 검색 및 For you탭에 노출
⦁ 트윗 추천의 50%는 search-index(Light ranker) 컴포넌트를 통해서 서비스
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을 추출 → 후보생성 → 결과 캐시
cr-mixer Cont’d
소스코드
Ranking Component
>
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 현재 시간
… …
heavy-ranker
목적
주요내용
⦁ For You 타임라인에 대한 tweet 순위를 매기는 모델
⦁ light-ranker와 동일하게 유저와 tweet에 대한 0-1 사이의 스코어를 뽑아주게됨
⦁ Feature-Wise Multiplication CTR Ranking(Prediction) Model
heavy-ranker Cont’d
주요내용
heavy-ranker Cont’d
소스코드
heavy-ranker Cont’d
‫ו‬՛੼
⦁ 글로벌 IT 기업의 추천시스템의 겉핥기 체험
⦁ 추천시스템 관련된 구조에 대한 고찰 (컴포넌트, 함수명, 디렉토리명 등)
⦁ 알고리즘도 중요하지만 라지 스케일에서 작동 가능한 병렬처리 기술
⦁ 산학협력을 잘 활용
Kakaostyle Recommender System
Kakaostyle Recommender System
Kakaostyle Recommender System
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.

More Related Content

What's hot (20)

PDF
Redis
DaeMyung Kang
 
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon
 
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
Hyojun Jeon
 
PDF
Scalability, Availability & Stability Patterns
Jonas Bonér
 
PPTX
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
Jae Young Park
 
PPTX
대용량 로그분석 Bigquery로 간단히 사용하기
Jaikwang Lee
 
PDF
[236] 카카오의데이터파이프라인 윤도영
NAVER D2
 
PDF
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
AWSKRUG - AWS한국사용자모임
 
PPTX
Caching solutions with Redis
George Platon
 
PPTX
로그 기깔나게 잘 디자인하는 법
Jeongsang Baek
 
PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
PDF
천만 사용자를 위한 AWS 클라우드 아키텍처 진화하기::이창수::AWS Summit Seoul 2018
Amazon Web Services Korea
 
KEY
Introduction to memcached
Jurriaan Persyn
 
PDF
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
AWSKRUG - AWS한국사용자모임
 
PDF
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
PDF
MySQL GTID 시작하기
I Goo Lee
 
PDF
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
AWSKRUG - AWS한국사용자모임
 
PPTX
AWS Interview Questions Part - 2 | AWS Interview Questions And Answers Part -...
Simplilearn
 
PPTX
Introduction to Apache Kafka
Jeff Holoman
 
PDF
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
NAVER D2
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
Hyojun Jeon
 
Scalability, Availability & Stability Patterns
Jonas Bonér
 
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
Jae Young Park
 
대용량 로그분석 Bigquery로 간단히 사용하기
Jaikwang Lee
 
[236] 카카오의데이터파이프라인 윤도영
NAVER D2
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
AWSKRUG - AWS한국사용자모임
 
Caching solutions with Redis
George Platon
 
로그 기깔나게 잘 디자인하는 법
Jeongsang Baek
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
천만 사용자를 위한 AWS 클라우드 아키텍처 진화하기::이창수::AWS Summit Seoul 2018
Amazon Web Services Korea
 
Introduction to memcached
Jurriaan Persyn
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
AWSKRUG - AWS한국사용자모임
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
MySQL GTID 시작하기
I Goo Lee
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
AWSKRUG - AWS한국사용자모임
 
AWS Interview Questions Part - 2 | AWS Interview Questions And Answers Part -...
Simplilearn
 
Introduction to Apache Kafka
Jeff Holoman
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
NAVER D2
 

Similar to 트위터의 추천 시스템 파헤치기 (20)

PPT
Node xl korean_twitter
Han Woo PARK
 
PDF
[4차]페이스북 알고리즘 분석(151106)
고려대학교 정보기술경영학회 : ITS
 
PDF
Recommendation System History
Tae Young Lee
 
PPTX
추천 시스템 개요 (1)-draft
hyunsung lee
 
PDF
Machine Learning Foundations (a case study approach) 강의 정리
SANG WON PARK
 
PPTX
트윗 서치엔진
Webometrics Class
 
PDF
인공지능추천시스템 airs개발기_모델링과시스템
NAVER D2
 
PDF
온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법

Sun-young Kim
 
PPTX
빅데이터를 활용한 소셜 큐레이션과 로컬 서비스 플랫폼 에트리_특강_자문
JM code group
 
PDF
Recommendatioin system basic
Soo-Kyung Choi
 
PPTX
페이스북,트위터기능 (1)
현 나
 
PDF
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
흥배 최
 
PDF
알쓸신잡, 머신러닝&추천시스템
youngick
 
PPTX
웹의 진화와 지식 구조화 Ver 1 1
Konkuk University
 
PDF
Let's Tweet!
kevin lee
 
PDF
Node xl 빅데이터분석(29july2014)방송기자연합회
Han Woo PARK
 
PPTX
데이터과학 입문 8장
Jinpil Chung
 
PDF
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [#인스타툰 팀] : 해시태그 기반 인스타툰 추천 챗봇
BOAZ Bigdata
 
PDF
검색엔진에 적용된 ChatGPT
Tae Young Lee
 
PDF
Algorithm Experience Design
Seoul National University
 
Node xl korean_twitter
Han Woo PARK
 
[4차]페이스북 알고리즘 분석(151106)
고려대학교 정보기술경영학회 : ITS
 
Recommendation System History
Tae Young Lee
 
추천 시스템 개요 (1)-draft
hyunsung lee
 
Machine Learning Foundations (a case study approach) 강의 정리
SANG WON PARK
 
트윗 서치엔진
Webometrics Class
 
인공지능추천시스템 airs개발기_모델링과시스템
NAVER D2
 
온라인 커뮤니티 상의 게시글에 대해
 Louvain method와 클러스터링 기법을 적용한
 내부 커뮤니티 성향 탐지 기법

Sun-young Kim
 
빅데이터를 활용한 소셜 큐레이션과 로컬 서비스 플랫폼 에트리_특강_자문
JM code group
 
Recommendatioin system basic
Soo-Kyung Choi
 
페이스북,트위터기능 (1)
현 나
 
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
흥배 최
 
알쓸신잡, 머신러닝&추천시스템
youngick
 
웹의 진화와 지식 구조화 Ver 1 1
Konkuk University
 
Let's Tweet!
kevin lee
 
Node xl 빅데이터분석(29july2014)방송기자연합회
Han Woo PARK
 
데이터과학 입문 8장
Jinpil Chung
 
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [#인스타툰 팀] : 해시태그 기반 인스타툰 추천 챗봇
BOAZ Bigdata
 
검색엔진에 적용된 ChatGPT
Tae Young Lee
 
Algorithm Experience Design
Seoul National University
 
Ad

More from Yan So (9)

PDF
AWSKRUG 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
Yan So
 
PDF
AWS Retail & CPG Day - Yan So
Yan So
 
PDF
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경
Yan So
 
PDF
데이터가 흐르는 팀 만들기 - 정원희
Yan So
 
PDF
Brightics Studio 발표자료 AWSKRUG 염성욱
Yan So
 
PDF
전혀 새로운 방법의 데이터 탐색 - 김민수 (Tableau)
Yan So
 
PDF
[AWSKRUG] 데이터 얼마까지 알아보셨어요?
Yan So
 
PDF
MWC Shanghai 2018 톺아보기
Yan So
 
PDF
R과 Sagemaker를 활용한 딥러닝 어플리케이션 만들기
Yan So
 
AWSKRUG 데이터 엔지니어가 실무에서 맞닥뜨리는 문제들
Yan So
 
AWS Retail & CPG Day - Yan So
Yan So
 
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경
Yan So
 
데이터가 흐르는 팀 만들기 - 정원희
Yan So
 
Brightics Studio 발표자료 AWSKRUG 염성욱
Yan So
 
전혀 새로운 방법의 데이터 탐색 - 김민수 (Tableau)
Yan So
 
[AWSKRUG] 데이터 얼마까지 알아보셨어요?
Yan So
 
MWC Shanghai 2018 톺아보기
Yan So
 
R과 Sagemaker를 활용한 딥러닝 어플리케이션 만들기
Yan So
 
Ad

트위터의 추천 시스템 파헤치기

  • 2. 3. Feature Component 4. Candidate Source Component 1. Intro 5. Ranking Component 6. Tweet Mixing & Filtering Component 7. Kakaostyle Recommender System 2. Data Component
  • 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로 구현
  • 9. User Signal Service (USS) Cont’d 주요 소스코드
  • 11. Feature Component [0.21, 0.53, 0.75, 0.22…] [0.31, 0.43, 0.11, 0.26…] [0.43, 0.53, 0.32, 0.87…] [0.75, 0.22, 0.54, 0.52…] User1 User2 User3 User4 [0.61, 0.51, 0.33, 0.22…] [0.11, 0.48, 0.52, 0.44…] [0.53, 0.63, 0.67, 0.12…] [0.85, 0.14, 0.97, 0.72…] Product1 Product2 Product3 Product4 Dimension Dimension
  • 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을 인덱싱 (아카이빙)
  • 29. search-index Cont’d 주요내용 ⦁ 검색 및 For you탭에 노출 ⦁ 트윗 추천의 50%는 search-index(Light ranker) 컴포넌트를 통해서 서비스
  • 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
  • 38. ‫ו‬՛੼ ⦁ 글로벌 IT 기업의 추천시스템의 겉핥기 체험 ⦁ 추천시스템 관련된 구조에 대한 고찰 (컴포넌트, 함수명, 디렉토리명 등) ⦁ 알고리즘도 중요하지만 라지 스케일에서 작동 가능한 병렬처리 기술 ⦁ 산학협력을 잘 활용
  • 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.