///
Search
Duplicate
🌑

Recommending What Video to Watch Next: A Multitask Ranking System - 2019

Created
2021/07/04 06:47
발표일자
2021/01/25
발표자
주윤상
Tags
Recommendation
MultitaskLearning
RankingSystem
✅main
포스팅 종류
논문리뷰
제목에서 확인할 수 있듯 multitask learning을 이용한 Ranking 시스템에 관련된 내용이 주내용이다

Abstract

많은 ranking objective 즉 ranking에서 여러가지 문제를 한번에 풀고싶은 문제와 selection bias를 제거하는 문제를 풀기위한 구조를 고안했다
multi objective는 MMoE 구조를 사용하여 풀었고 selection bias는 Wide&Deep 모델을 차용하여 해결하였다

연관 논문 간략 설명

Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts(MMOE)

Abstract

recommendation분야 DNN에서도 multitask learning을 많이 사용하고 있습니다
하지만 이런 multitask learning이 모든 task에서 잘 동작하지는 않는다(Bert 기반으로 multitask를 풀때 마지막 head는 특정 task에 맞춰서 layer를 구성해줘야 하는 것과 같은 내용 GPT의 경우 많은 양의 데이터를 language model fewshot learning으로 이 문제를 풀려고 하고 있음)
이런 multitask learning에서 잘 동작할 수 있는 MMoE 구조를 만들었고 이 내용을 설명하려는 논문입니다

Introduction

기존의 multitask learning은 task의 특성과 data 분포를 측정해서 문제를 풀려고 했습니다
하지만 production에서 보면 모든 task들의 data 분포와 특성을 측정하는건 사실상 불가능 합니다
사람의 튜닝이 불필요하게 동작하는 여러가지 기술들도 나와있지만 이건 추가적인 parameter들이 많이 들어간다 이미 큰 parameter를 갖고있는 recommendation에 추가적인 resource는 부담입니다
위 그림 (b)부터 moe의 구조입니다 여러개의 feed forward network expert를 두고, gate layer에서 특정 task에 필요한 expert의 결과값을 조합해서 사용하는 구조입니다
(b)와 (c)의 가장 큰 차이점은 gate의 수이며 (c)는 task 수만큼 gate를 두는 구조입니다
적절한 expert를 선택하는 과정은 trainable parameter를 두어서 학습되는 구조입니다
word token 사이의 가중치를 학습시키는 attention과 비슷한 느낌을 받았습니다

Related work

Multi-task learning in DNNs

shared bottom layer의 구조 자체는 여러 task를 같은 bottom layer로 학습하기 때문에 overfit은 잘 되지 않지만 task별 성능은 좋지 않다고 설명합니다
task specific하게 task마다 모델 구조를 바꾸는 방법론(task별 tensor factorization 하는 방법)도 있지만 이전에 설명했듯 추가적인 parameter들이 들어가서 비효율적 입니다

Ensemble of Subnets & Mixture of Experts

DNN에서 ensemble방식은 효과적이라는것이 입증이 되었다
각 layer에 multiple layer와 submodule을 갖고 task당 적절한 layer를 찾는 PathNet이라는 구조에서 영감을 받아 이 논문을 작성하였다고 합니다

Multi-task Learning Applications

여러 task에서 bottom layer를 공유하는 경우 데이터가 적은 task는 이익 취할 수 있습니다. 예를들어 다국어 번역에서 학습데이터가 적은 언어의 번역의 경우 많은 데이터의 언어에서 학습된 distribution 덕분에 성능이 더 좋게 나올 수 있다
우리도 이런 구조를 착안해서 recommendation 시스템에 multi-task learning을 적용해보겠다라는 내용

Preliminary

Shared-bottom Multi-task Model

위 그림 (a)의 구조 multi-task learning에서 개선점과 비교하기위한 baseline model로 사용된다
f(x)는 shared의 output h는 k번째 task를 풀기위한 tower layer이다

Synthetic Data Generation

multitask learning은 data에 있는 task간의 연관도에 따라 성능이 좌우된다
이런 연관도간에 성능이 좌우되는지 검증하기위해 Synthetic data를 만들어서 loss를 측정
아래와 같은 로직으로 synthetic data를 만들었다고 함 task별로 연관도가 떨어지는 데이터를 생성
결과는 가설대로 correlation이 1인 값이 loss가 더 빨리 수렴되고, MMoE가 다른 구조에 비해 수렴이 빠르게 됩니다

Modeling Approaches

Original moe model은 아래와 같다
MMoE의 핵심 아이디어는 이 gate network을 task의 수만큼 둔 것 입니다 OMoE가 기존 moe MMoE를 보면 성능이 더 좋은걸 확인할 수 있습니다
MMoE의 objective function

Wide & Deep Learning for Recommender Systems

Abstract

추천에서 중요한 개념인 Memorization과 Generalization의 개념으로 논문을 시작합니다
Memorization
User의 행동을 잘 기억해서 유저가 행동한 것 기반으로 추천을 해주는 것
user 행동을 cross-product feature transformations를 하면 간단하게 얻을 수 있음
Memorization만 잘하면 유저의 행동 이외의 item들은 추천해주지 못한다
Generalization
유저의 행동 기반으로 좀 더 generalize한 추천을 해주는 방식
DNN 이전에는 많은 feature engineering을 하여 문제를 해결했지만 현재는 embedding layer + DNN으로 많이 사용하고 있다
너무 Generalization된 추천 모델은 뜬금없는 추천결과를 보여줄 수 있다
Google Playstore에서 이 구조를 적용했고 좋은 성능을 냈다고 합니다

Introduction

앱구매에서 Memorization은 AND(user_installed_app=netflix, impression_app=pandora”)
Generalization은 AND(user_installed_category=video, impression_category=music) 와 같다는 예시를 들음
Embedding + DNN 모델은 generalize에는 도움이 되지만 특정 선호가 강한 유저에 추천에는 뜬금포 추천이 될 수 있다
그래서 아래와 같이 memorization을 담당하는 WIDE Model과 generaization을 담당하는 Depp Model을 합친 Wide & Depp Model을 제안한다

The Wide Component

WIDE Model에서 중요한건 corss-product transformation을 input값에 적용하는 것 이다

The Deep Component

Deep component는 Random init된 Embedding layer 위에 Hidden layer를 쌓고 activation function은 Relu를 썼다고한다 Embedding의 dimension은 10이나 100을 사용했다고한다

Joint Training of Wide & Deep Model

Joint training과 ensemble의 차이에대해 설명한다 ensemble은 각각 따로 학습하고 inference에만 조합하여 사용하지만 Joint training은 학습부터 weight을 공유하면서 학습을 한다
model size도 ensemble은 각각 따로 모델들을 구축해야하는데 joint의 경우 wide영역은 deep에 부족한 부분을 채워주는 것만 추가되기때문에 모델사이즈가 작아진다 corss-product transformation만 추가되면 되기 때문
최종 objective function은 아래와 같다 wide cross product transformation의 output과 deep 마지막 layer의 output을 합쳐 sigmoid에 넣어서 나오는 값으로 item의 추천여부를 확인

System Implementaion

Model Training

보면 categorical features를 통과하는 embedding layer들이 각각 있다 이건 32-dim으로 설정했다
deep 부분은 continuous features와 categorical embedding output값을 concat해서 ~1200dim으로 구성되고 3개의 Relu FC layer를 거친다
wide 부분은 Cross Product Transformation만 거치는데 input으로는 user 가 설치한 app과 관심 app을 input으로 넣는다 wide 부분은 Memorization 역할을 하므로 유저 activity값을 넣는다
5000억 학습데이터로 학습했음
매번 새로운 데이터를 scratch로 학습하는건 불가능하므로 이전 모델의 embedding 값과 linear model의 weight값을 가져와서 학습했다고 함 추가 데이터만 학습한 것 같다

Model Serving

candidate의 목록을 rank에 다 넣으면 10ms 언더의 inference time 제약을 맞추기 힘들어서 candidate 목록을 작은 batch로 쪼개서 parallel하게 모델을 inference하는 구조를 가져갔다고 한다

Introduction

large-scale recommendation system의 구조는 2가지로 되어있는데 candidate generation과 ranking이다 이 논문은 ranking에 집중하여 쓰여짐
candidate generation은 보통 matrix factorization과 neural model로 되어있다고함 2016년 논문의 candidate generation part가 deep neural net 기반의 matrix factorization 기법이었다
production recommendation system을 설계할때 아래와 같은 내용이 challenge point이다
여러가지 objective를 풀수있는 모델을 만들어야하는데 동시에 여러가지 objective를 판단하는 모델을 만들기 어렵다 Ex) 유저가 "rating을 높게 주고" 친구랑 "공유할 만한" video를 추천하고 싶다
selection bias를 제거할 수 있는 모델을 만들어야 한다 유저는 추천이 되서 video를 클릭한 것이고 자신이 좋아서 클릭한게 아닐 수 있다 --> 학습데이터에는 이런 bias가 있기때문
multiple objective들을 2가지 group으로 만들었음
engagement objective (유저가 video를 시청하는 것을 예측하는 objective들의 그룹)
satisfaction objective (유저가 video를 평가하는 것을 예측하는 objective들의 그룹)
multiple objective를 효과적으로 학습할 수 있도록 MMoE구조를 사용함
selection bias를 제거하기위해 Wide&Deep model을 사용해 아래 그림 왼쪽을 보면 shallow tower부분이 있다 Wide model대로 selection bias를 feature의 큰 변환없이 마지막으로 올리는 것을 확인할 수 있음

Related Work

Industrial Recommendation Systems

DL model은 train data의 양에 따라 성능이 좌우되는데 explicit feedback train data는 모으는데 비용이 많이 들어서 모으기 힘들다 그래서 implicit feedback을 학습데이터로 사용한다(이내용은 모든 논문에 항상 나오는 얘기)
Candidate generation과 ranking에서 기존에 연구 사례들을 설명하는 부분이다
결론은 자신들의 접근방법과 모델구조가 salability와 성능 향상을 이뤄냈다고 말한다
추천쪽은 특히 inference time이 중요하기때문에 기존 DL과는 다른 구조를 가져가는 것 같다

Multi-objective Learning for Recommendation Systems

user가 클릭하고 rating하고 commenting하는 등 여러가지 행동들이 있지만 이 행동기반으로 유저의 선호하는 item을 추천하는건 어렵다(user가 video를 클릭했지만 1점을 주기위해 클릭했을 수 있다)
그래서 각 행동들을 분리하여 선호여부를 판단하는 multitask learning 방식을 도입하였음
기존의 multi-objective recommendation은 sharing model parameter들이 묶여있어서 추가적인 feature를 확장하기 어려운 구조라고 한다
NLP, Vision에서 multitask learning은 이미 많이 사용되고 있지만 ranking system에는 맞는 구조가 아니고 일부 network block만 채용해서 사용하고 있다

Understanding and Modeling Biases in Training Data

학습데이터 자체가 Youtube가 추천한 User log 기반이라 selective bias가 들어있다 이걸 해결해야한다
추천된 data의 position 기반으로 position bias를 해결하는 방법론들이 있었다
bias를 제거하는 방법론으로는 position값으로 학습하고 inference할때는 position값을 의미 없는 고정값으로 inference하여 predict하는 방법이 있고
regularizer로 bias를 학습시 해당 weight을 penalty하는 방식인 IPS가 있는데 유투브나 Twitter같은 소셜미디어에서는 사용자의 관심이 매우 자주 변하고 이 방법은 자주 학습이 필요한 방법이므로 IPS는 사용하지 않았다고 한다

Problem Description

production의 large-scale video recommendation system은 아래 2가지의 문제를 해결해야 한다
Multimodal Feature space
추천시스템은 다른 시스템과 다르게 다양한 feature들이 학습데이터에 들어간다 Ex) thumbnail image, text, audio 등등
이런 multimodal feature들을 잘 학습시킬 수 있어야한다
Scalability
수백억건의 학습데이터를 빠르게 학습하고 serving해야한다는 얘기

Candidate Generation

2016년 유투브 모델과 비슷한 구조를 가져갔다고 한다

Model Architecture

MMoE를 이용해서 multitask learning + Wide & Deep으로 selection bias 제거하는 구조로 SOTA 달성했다고함

System Overview

2가지 type의 user feedback으로 시스템을 학습했다
engagement behavior(click and watch)
satisfaction behavior(likes and dismissals)
2가지 type의 feedback 기반으로 binary classification or regression 문제로 여러개의 objective를 설계하여 문제를 해결했다
각각의 objective를 feature로 보고 point-wise 방식으로 ranking을 했다고 한다
pair-wise나 list-wise에 비해 속도가 빠른 point-wise방식으로 사용했음

Ranking Objectives

각 type의 user feedback을 선호를 찾을 수 있는 binary classification이나 regression 문제로 해결하는 objective들을 정리하였고 그 objective들을 2가지 그룹으로 묶었다
engagement objectives
유저가 click이나 watch를 하는 여부를 푸는 binary classification
영상을 얼마나 오래 봤는지를 예측하는 regression
satisfaction objectives
like를 누를지 여부를 푸는 binary classification
rating 예측을 하는 regression 문제
binary classification은 cross entropy loss, regression은 MSE loss로 학습하면 된다
이런식으로 여러개의 objective들의 결과값을 모아서 최종 score를 내는 구조이다

Modeling Task Relations and Conflicts with Multi-gate Mixture-of-Experts

Modeling and Removing Position and Selection Biases

위에 설명했듯 학습데이터에는 selection bias가 들어가 있다
그래서 모델을 2가지 부분으로 fatorize하였음
Deep : user utility component
Wide : bias component
Wide에 position bias에 관련된 학습데이터를 넣어서 학습을 진행
serving time에는 position 정보에 의미없는 고정된 값을 넣어서 예측을 하게 하여 position에 관련된 selection bias를 제거하는 구조를 가져갔다

Experiment Result

expert를 선택하는 gate에 softmax를 사용하면 특정 expert에 치우치는 문제가 발생한다 이걸 해결하기 위해 dropout, softmax output normalize를 하여 사용했다
위의 그래프는 추천되는 position에 따른 CTR인데 wide 부분에서 position별로 학습되는 position bias를 아래 그래프에서 보면 position이 앞에 있을수록 position bias가 높을 것을 확인 할 수 있음
adversarial loss = position에 연관된 값들을 penalize하는 방식

Discussion

Neural Network Model Architecture for Recommendation and Ranking
많은 추천 연구가 transformer 기반, CNN에 특정 도메인에 사용되는 모델구조를 그대로 사용하고 있지만 아래와 같은 이유때문에 특정 domain에는 잘 맞지 않았다고 합니다
Multimodal feature spaces
Youtube ranking system의 학습데이터 사용하고 있는 data는 text뿐만 아니라 image등 다양한 feature들이 들어갑니다
Scalability and multiple ranking objectives
multiple objective가 필요한데 대부분의 모델은 1가지 type의 정보를 cature하는게 목적이 맞춰져 있다 여러 모델을 사용하면 되지만 복잡한 모델을 여러개 사용하면 scalability가 떨어짐
Noisy and locally sparse training data
학습 데이터는 유저 데이터는 굉장히 sparse해서 기존 모델들에 사용되는 embedding 학습의 최적화가 쉽지 않다고 합니다
Distributed training with mini-batch stochastic gradient descent
기존의 domain에서 사용되는 모델들은 대부분 대규모 신경망 모델인데 Youtube의 경우 학습해야 할 데이터가 방대해서 분산훈련을 하기가 힘든 문제가 있다
Tradeoff between Effectiveness and Efficiency
inference time이 느려지면 user experience가 나빠지므로 복잡한 모델 구조는 지양했다는 내용입니다
Biases in Training Data
position bias 이외에도 예측하기 힘든 bias들이 있는데 이런 부분을 자동으로 파악하고 학습하는 방법은 아직 해결해야하는 문제라고 합니다
Evaluation Challenge
대부분의 학습 데이터를 user의 implicit feedback을 사용했다. 실제 서비를 하다보면 offline metric과 online metric이 일치 않는 현상이 많이 발생하기때문에 좀 더 가벼운 모델을 선호한다고 합니다 —> 모델을 가볍게 만들어서 implicit feedback을 빠르게 적용하려는 의도같습니다