Abstract
Sequential Model
•
웹사이트에서의 유저 Action을 Sequence로 보고, 다음 Action을 예측하는식의 모델링이다.
•
개인화 추천에서 강력한 모습을 보인다.
•
Production에서 사용하려면 준비요건이 많다. (Streaming Pipeline, Mutable Data for Embedding)
PinnerFormer
•
직후의 Action을 대신 미래에 발생할 Action들(Long-Term Future)을 예측하는 방식으로 모델링한다.
•
이를 구현하기 위해 Dense All Action Loss 를 제시했다.
•
User Representation이 Long-Term Futre를 예측할 수 있으므로 Batch로 인프라를 구성할 수 있다.
Introduction
User Embedding
•
User Embedding을 통해 추천의 질을 높이는 방법이 대세이다.
•
Ranking, Candidate Generation 같은 DownStream Task에서 사용하면 강력한 개인화가 가능하다.
•
대부분 User의 Action을 이용해 Embedding을 만들어 내는데, 이는 본질적으로 Sequence다.
•
따라서 User Action Sequence를 이용해 미래의 Engagement를 예측하는 모델을 많이 사용한다.
Deploy Challenges
•
Sequence 모델은 두 가지 방식으로 나눌 수 있다.
•
첫 번째는 Stateless 모델로 User가 Action을 할 때 마다 Embedding을 연산하는 방식이다.
•
두 번째는 Stateful 모델로 Streaming Pipeline을 통해 Embedding을 얻어내는 방식이다.
•
Stateless의 경우 연산 비용이 크고, Stateful의 경우 Streaming Infra를 구축해야 한다.
PinnerFormer
•
실제 Pinterest에 배포중인 모델로, 기존 연구처럼 User의 과거 Action을 이용해 Embedding을 배운다.
•
다른점은 Dense All Action Loss 라는 새로운 Loss, Objective를 사용한다는 점인데,
•
이 Loss 통해 Embedding이 Next-Action 뿐만아니라, Long-Term Interest를 투영하도록 모델링 된다.
•
Embedding이 Long-Term Interest를 투영하고 있으므로, Batch 세팅이 가능해진다.
Desing Choices
Single vs Multi Embedding for Single User
•
저자들의 직전 Work인 PinnerSage에선 명시적으로 Multiple Embedding을 사용했다.
•
유용하긴 한데, DownStream Model에서 Multiple Embedding을 사용하는건 큰 부담임
•
우리도 PinnerSage 결과물 가중평균 해서 DownStream Task에 사용함
•
PinnerFormer는 여러 Feature에서 쉽게 쓸 수 있도록 만들고 싶기에 Single Embedding을 채택함
Real-time vs Offline Inference
•
기존 Sequential User Modeling 연구는 (Near)Real-time으로 동작하는 것에 집중했음
•
위에서 말했다시피, 프로덕션에서 쓰려면 연산 비용 문제와 Infra문제를 해결해야 한다.
•
Offline으로 대체할 수 있다면, 연산 비용과 Infra 관련해서 품이 훨씬 덜 든다.
•
PinnerFormer는 Daily Batch 모델임에도 불구하고, Ranker A/B Task에서 더 좋은 성능을 보인다.
PinnerFormer
PinnerFormer는 2021년 봄에 Pinterest에 실제로 배포되었으며 아래는 디테일에 대한 설명임.
•
는 Pin의 Corpus를 의미함. 각각은 PinSAGE로 추출된 Embedding을 갖고 있음.
•
는 User의 집합임. 각 User는 발생한 시간 오름차순으로 정렬된 Action Sequence 를 갖고있음
◦
긍정적인 Action만 Sequence로 사용함, 다 쓰진 않고 최근 개의 Action들을 끊어서 사용함.
•
PinnerFormer는 → 로 가는 함수 를 만드는게 목표임. 동시에 → 로 가는 도 학습시킴
Primary Objecitve
•
다음 Action을 예측하는 것을 넘어, 14일 이후에 발생할 Action까지 예측하는 것이 목표
•
구체적으로는 14일 이내 긍정적인 Action이 발생할 확률이 높은 Item일수록
•
User와 가깝게 임베딩하는 방법을 배우는 것
(Range가 14일인 이유는 계산의 편의성 떄문이며, 14일 정도면 관심사를 충분히 반영한다고 가정한다)
Feature Encoding
•
각 Action은 Item에 대응되는 PinSAGE Embedding과, Metadata Feature가 존재함.
•
Categorical Feature(Type, Surface)는 Embedding Table 만들어서 사용 Duration은 Log씌워서 사용
•
TimeStamp는 (1)마지막 Action으로 부터 얼마나 지났는지 (2)Action간의 Term은 얼마나 되는지를 추출해서 사용(Time2vec을 사용했다고 함)
•
위의 Feature들 Single Vector로 Concat해서 Transformer에 입력으로 넣음
Model Architecture
•
Transformer 사용했으며, PreNorm Residual Connections, Layer Norm Before Each Block함
•
Learnable Positional Encoder → Transformer → Small MLP → L2 Normalize 구조
•
후보 Pin에 대해서는 MLP → L2 Normalize를 이용해 Projection했음
Negative Sampling & Loss
Negative Selection
•
Negative Sample의 Source로 In-Batch와 Random Negative가 있음
•
In-Batch는 Batch안의 다른 Positive Sample을 Negative로 사용하는것, 효율적이지만 빈도 문제 있음
•
Random은 Uniform하게 Negative Pin을 가져오는건데, 너무 쉬워서 학습이 안될 수도 있음
•
우리는 각각의 장점을 가져오기 위해 두개를 Merge해서 하나의 Pool로 만들어 사용함
Loss Function
•
logQ Correction Sampled Softmax가 가장 잘 동작하는것을 찾아냈다.
•
각 Logit에 대하여, Batch에서 등장할 확률을 보정해주는 Loss임
Next Item Prediction
SASRec
•
Sequence Modeling을 하는 가장 직관적이고 Naive한 방법은
•
시점까지 Sequence가 주어졌을때 시점의 Action을 예측하는 Next Item Prediction이다.
•
SASRec은 이를 확장시켜, 모든 Step에서 다음 Item을 예측하도록 했다.
All Action Prediction
•
PinnerFormer는 장기적인 관심사를 고려해야하므로 일 이내의 Action까지 예측하도록 학습해야한다.
•
구체적으로는 일 이내 발생한 Action중 32개를 샘플링하고 Positive Action을 예측하도록 학습한다.
Dense All Action Prediction
•
미래의 Action을 예측하기 위해 마지막 Embedding만 사용하지 않고, Sequence 내의 임베딩을 사용한다.
•
Random하게 Sequence내에서 Embedding을 샘플링해서 예측에 사용하는데
•
과거 혹은 현재 데이터만 사용가능할 수 있도록 Casual Masking을 입혀서 Transformer에 넣는다.
Model Serving
•
Offline-Batch로 Inference 했으며 Daily, Incremental Workflow 형태로 설계했다.
•
지난 하루동안 Action이 발생했던 사용자에 대해서만 User Embedding을 Inference하고
•
과거 Embedding이 있다면 Merge해서 Online Feature Store에 올린다. (Merge?)
•
Pin Embedding은 가벼운 MLP이므로 매일 새로 Inference해 ANN Index를 갱신키긴다.
Experiments
Offline Evaluation
•
Rec@10을 Metric으로 사용했다. ANN Pool은 랜덤한 Pin 100만개를 사용했다.
•
학습 데이터의 마지막 날짜로부터 2주뒤 까지를 Evalutation Pool로 설정했다.
•
학습 때 등장한 적 없는 User를 사용했다.
•
까지의 데이터로 Embedding을 만든뒤 이후 +14일 까지 상호작용한 모든 Pin을 찾아내는지를 확인했다.
•
User와 Pin사이의 거리는 각각의 임베딩간 L2거리로 측정했다.
PS : PinnerSAGE
Batch 작업으로 바꿔도 성능 하락폭이 낮다.
Ranker의 User Feature를 대체하자 체류 Metric이 올라갔다.
Ranker의 User Feature를 대체하자 CTR이 급격히 상승했다.
Conclusion
•
Pinnerformer는 User의 Long-Term 관심사를 Capture하는 Sequence Model이다.
•
PinSAGE를 Backbone으로 사용해 Transformer로 모델링 했다.
•
시점부터 이후 일 동안의 Positive Engagement를 예측하도록 학습된다.
•
Task덕분에 User의 장기적인 관심사를 Embedding에 녹여낼 수 있으며, Offline Inference도 가능하다.