Home
📌

정보 : How Pinterest Leverages Realtime User Actions in Recommendation to Boost Homefeed Engagement Volume (번역)

Intro

Pinterest에서 Homefeed Engagement를 늘리기 위해 어떤일을 했는지 ML 모델 설계 관점에서 설명
Real-Time User Action Feature를 HomeFeed 추천에 사용함

Background

Homefeed는 User Engagment가 가장 많이 발생하는 공간 중 하나
개인화를 통해 유저가 매력적이라고 느낄만한 Pin을 최상단에 추천해주어야 함
구체적으로는 유저의 관심사와 팔로잉한 보드 등을 근거로 하여 Candidate Pin들을 Retrieval 해오고
많은 Candidate중에서 가장 관련성 높은 Pin을 찾기위해 개인화 Ranker 모델(Pinnability)로 순위를 매김
Pinnability는 SOTA 모델을 사용하는데, 일반적으로 Pre-Trained된 User Embedding을 이용한 구조임
(실제로 Pinterest는 Offline으로 학습된 Pinnerformer를 사용함)

Limitations

PinnerSAGE나 Pinnerformer같은 Pre-Trained User Embedding은 명확한 한계가 존재함
1.
Short-Term Interest 모델링이 부족함
위의 모델들은 Long-Term Interest를 모델링하도록 학습되었음
Real-Time Feature등을 이용해 Short-Term Interest를 모델링 할 수 있어야 함
2.
추천에 반영이 느림
Interaction이 발생한뒤에 Static Feature로 반영될 때 까지 시간이 걸림
Real-Time Signal을 추천에 반영할 수 있다면 과거 Engagement가 적은 유저에 대해서도 고품질 추천이 가능함 (새로운 유저, 오랜만에 들어온유저, 가끔 사용하는 유저, etc..)
눈치챘겠지만, 그 갭을 Real-Time Action을 추천에 포함시킴으로서 해결하려고 함

Features : Real-Time Sequences

사용자 별 최근 상호작용한 100개 Pin을 Embedding+Meta와 함께 Real-Time Feature로 사용함
이를 안정적이고 효율적인 시스템으로 구현하기 위해 각 파트별로 다음과 같은 노력을 하고 있음
ML Side
Ops Side

Modeling: Transformer Encoder

Ranking 모델은 위와같이 구정 되어있음 (User, Pin) Pair를 입력받아 어떤 Action이 일어날지 예측함
Sequence로부터 다양한 Feature(Signal)을 추출해 모델에 입력으로 넣고
Real-Time Feature를 Transformer에 넣은 뒤 모든 Feature를 합쳐 Cross Layer에 넣고
결과물을 MLP에 통과시킴
이때 Transformer는 Encoder만 사용되는 형태임
Real-Time User-Feature는 Pin Embedding, Action-Type, Time-Stamp를 사용함
Sequence Transformer v1
온/오프라인 실험 결과 Candidate Pin Embedding을 미리 Stack해 놓는것이 성능에 영향을 끼치는 것을 발견함
Input Sequence중 하루 이내에 발생한 Action은 무작위로 Mask를 넣어서 Diversity를 어느정도 보장함
이렇게 나온 결과물을 Flatten 해서 다른 Feature와 함께 MLP에 넣어줌
Sequence Transformer v1.1
Transformer의 Encoder 갯수를 늘리고
결과물을 한 개의 Vector로 뽑는대신, 최근 Action 10개 + Max Pooling Vector를 Concat 하도록 함
이를 통해 최신의 Interest의 영향력을 높이고, 차원수도 작게 만듦

Challenges

Challenge 1: Engagement Rate Decay

Online 실험 결과, Real-Time Action을 추천에 반영한 그룹의 Engagement가 점차 감소했음
Real-Time Action 안쓰고 Batch로 모델 재학습하는 것 보다 Engagement가 감소율이 더 컸음
이를 보고 Real-Time Action을 사용하는 모델일 수록 주기적인 재 학습이 필요하다는 가설을 세움
초록색 그래프는 Real-Time Feature를 사용하고 주기적인 재학습을 수행한 모델의 성능 지표이고
빨간색 그래프는 Real-Time Feature없이 주기적인 재학습을 수행한 모델의 성능 지표임
초록색 그래프의 성능 향상폭이 큰 것으로 보아 자신들의 가설이 검증되었다고(?) 봄
따라서 주에 2번 모델을 재학습시켜서 Engagement Rate를 안정적으로 관리중임

Challenge 2: Serving Large Model at Organic Scale

Transformer를 추천에 사용하면서 복잡성이 늘어남
기존 추천시스템의 경우 CPU Cluster에서 작업이 수행되었는데, Transformer넣으면 레이턴시가 20배됨
따라서 Ranking Model을 GPU로 이전시켰고 Latency 적절한 수준으로 관리 가능하게됨

Result & Evaluation

Repin과 Save가 가장 중요한 User Action 중 하나인데, 그 중 Repin의 Volume을 모델 평가 지표로 삼음
Offline Evaluation
다음의 모델을 비교함 : [MeanPooling, CNN, RNN, LSTM, PinOnly Transformer, Transformer v1.0)
Hide, Repin에 대하여 HIT@3을 측정함 (상위 3개 Pin에서 해당 Action이 발생한 비율)
Vanila Transformer만 사용하더라도 다른 모델들 보다 강력한 모습을 보여줌
Transformer v1.0은 압도적인 성능을 보여주는데, 다음과 같은 이유에서 강력한것으로 추정함
User Action Type을 지정해주어서 풍부한 정보 사용가능
Candidate Pin과 User Action Sequence를 조기에 Stack 해놓으면 강력해짐
Random Mask로 다양성을 확보함
Online Evaluation
트래픽의 1.5%에 대해 A/B Test를 수행했을 때 Transformer v1.0이 적용된 그룹의 Repin Volume이 6%정도 상승했음
또 최근 Action이 적었던 User를 “Non-Core” User로 정의하였는데 이들의 Repin Volume은 10% 증가했음
모든 유저에 대하여 Hide Volume은 10% 하락했음
v1.1을 사용한 모델은 v1.0대비해서도 Repin Volume이 크게 상승했음
Production Metric
전체 Production에 배포했을 때 훨씬 큰 이득이 발생한것으로 보였는데 긍정적인 피드백 루프 효과로 보임
User가 추천 반응이 빠른 피드를 보면 Engagement가 늘어나고, 이에따라 더 개인화된 피드를 얻게됨
이 과정에서 Sequence 자체에 더 양질의 정보(Engagement)가 공급되어서 유저가 계속 사용하게 되고
학습 데이터도 그만큼 늘어나서 더 좋은 추천을 제공할 수 있게됨

Conclusion

Homefeed 추천에 Real-Time을 입히면서 더 유저와 관련있는 컨텐츠를 추천해 줄 수 있게 됨
Transformer가 다른 Sequence Model 대비 압도적인 성능을 보여줌
이걸 서비스에 적용하기 위해 여러 챌린지가 있었지만 잘 해결해냄 특히 재학습과 GPU 자원 부분

Future Work

Feature 개선 : 더 많은 Action Type과 Meta Data를 입력으로 넣는걸 구상중임
GPU 서빙 최적화 : 이 프로젝트를 통해 서비스 환경에 GPU 클러스터 처음 구축해봄, 최적화 시도해볼 예정
모델링 : 계속해서 Real-Time Signal을 잘 모델링 할 수 있는 방법을 찾아낼 예정
다른 지면에 적용 : Homefeed말고도 다양한 지면에 Transformer를 적용해 볼 예정