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를 적용해 볼 예정