비선형 변수 변환을 활용 선형모델은 sparse 변수를 사용하는 분류와 회귀 문제에서 많이 사용된다. wide set of cross-product feature transformations을 사용한 Memorization(기억)은 효율적이고 해석가능하다. 반면에 generalization은 피쳐 엔지니어링이 필요하다.
deep neural networks은 적은 피처 엔지니어링 과정을 가지고도 sparse 변수를 저차원 embedding 시켜 변수간의 보이지 않는 조합을 generalization(일반화)하는데 유용하다. 하지만 과도한 일반화가 되어 user-item interaction이 sparse할 때 관련이 거의 없는 item을 추천할 수 있다.
본 논문에서는 추천시스템에서 memorization과 generalization의 장점을 결합하기 위해서 wide linear model과 deep neural network를 결합적으로 학습시키는 Wide & Deep learning을 제시한다.
본 논문은 Google Play에서 시스템을 구축하고 평가했다. 데이터 셋은 10억명의 활성 유저와 100만 개의 앱이다. 실험 결과 Wide&Deep은 wide나 deep 만을 사용한 모델에 비해서 앱 가입에 유의한 증가가 있었다.
추천시스템은 입력 퀴리는 유저정보이고 출력은 랭킹된 아이템 리스트인 search ranking system으로 볼 수 있다. 추천은 퀴리가 주어졌을 때, 데이터베이스에서 관련된 아이템을 찾고 클릭이나 구매 횟수와 같은 특정 objectives에 따라 아이템의 순위를 매기는 태스크이다.
추천시스템에서 Memorization와 Generalization 모두를 달성하는 것은 어려운 문제이다. Memorization은 변수간의 동시발생(co-occurrence)를 학습하고 historical data에서 상관관계를 추출하는 것이다. 반면에 Generalization은 상관관계의 이행성(Transitivity)와 한번도 발생하지 않았거나 드물게 발생한 변수의 조합을 탐색한다. Memorization 기반의 추천시스템은 유저가 이미 행했던 액션과 더 직접적인 관련이 있다. Generalization 기반의 추천시스템은 추천되는 아이템의 다양성을 개선한다. 본 논문에서는 Google Play Store의 추천에 집중하고 있지만 접근방법은 일반적인 추천시스템에 적용가능하다.
산업계의 많은 온라인 추천시스템과 랭킹 시스템은 로지스틱회귀와 같은 선형모델을 사용했다. 선형모델은 간단하고 해석가능하기 때문이다. 모델은 원핫인코딩을 적용한 이진화된 변수를 사용해 자주 학습되었다. 예를 들어 이진화된 변수 “user_installed_app=netflix”는 유저가 넷플릭스를 설치했다면 1의 값을 갖는다.
Memorization을 위해 cross-product transformation은 동시발생 변수가 어떤 상관관계가 있는지 설명할 수 있다. 예를 들어 AND(user_installed_app = netfilx, impression_app=pandora)는 유저가 넷플릭스를 설치하고 판도라를 봤을 때 1의 값을 갖는다. 하지만 일반화를 위해서는 덜 구체적인 변수(예를 들어 AND(user_installed_category=video, impression_category=music))를 추가하는 과정이 필요하다. 또한 cross-product tansformation은 학습 데이터에 없는 변수 쌍에 대해서는 일반화할 수 없다는 한계가 있다.
factorization machines 또는 deep neural network와 같은 Embedding - based Model은 low-dimensional dense embedding vector를 사용해 이전에 보지 못한 아이템 변수 쌍에 대해서도 generalization을 할 수 있다. 하지만 희소한 아이템은 학습하기가 어렵다. 예를 들어 niche item은 대부분의 다른 item과 interatction이 없을 것이지만 dense embedding이 모든 아이템 쌍에 0이 아닌 예측값을 줘 과도한 일반화가 되어서 관련이 없는 추천을 할 수 있다.
Wide & Deep learning은 임베딩 그리고 변수의 변형을 활용한 선형모델을 결합하여 희소한 입력에 대해서 일반화할 수 있는 추천 모델이다.
유저 정보에 대한 퀴리가 입력되면 유저가 클릭하거나 구매할 수 있는 앱의 리스트 출력한다. 이러한 유저 행동 데이터는 학습데이터로 데이터 베이스에 기록된다. retrieval system에서 몇개의 가장 적합한 앱 리스트로 후보군을 줄이고 ranking system에서 모든 아이템의 점수를 기반으로 순위를 부여한다.
이때 점수를 계산하는 방법은 주로 P(y|x), x변수가 주어졌을 때, 유저의 행동 라벨 y의 확률이다. x변수는 국가, 언어와 같은 유저변수와 시간, 요일, 버전 등 상황변수 그리고 앱 관련 통계와 같은 변수 모두를 포함한다. 이 논문에서는 ranking 모델에 초점을 둔다.
wide component는 위 그림의 가장 왼쪽에 해당하는 선형 모델이다.
y : 예측값
b : bias
x = [x_1, x_2, … , x_d]
w = [w_1, w_2, … , w_d]
여기 변수 셋은 원본 변수(raw features)와 변환된 변수(transformed features) 모두 포함한다. 가장 중요한 변환은 cross-product transformation이다.
예를 들어 AND(gender = female, language=en)는 오직 성별이 여자이고 언어가 영어일때만 1의 값을 갖는다. 이 변환은 이진변수(binary features)간의 상호작용을 찾아내고 선형모델에 비선형성을 추가한다.
deep component는 위 그림의 가장 오른쪽에 해당하는 feed-forward neural network이다. sparse한 범주형 변수에 대해서는 dense한 저차원의 임베딩 벡터로 변환한다. 이러한 저차원의 dense 임베딩 벡터으로 변환된 범주형 변수는 연속형 변수와 a로 concat 되어 hidden layer에 입력된다.
각 hidden layer는 다음과 같다. l은 layer, f는 activation function(ReLU), W는 weight matrix, b는 bias를 의미한다.
예측값은 wide component와 deep componeent의 log odds값을 가중치를 줘서 합한다. wide & deep model은 독립적으로 각각의 모델은 학습하고 추론할 때 결합하는 앙상블 모델과는 다르게 학습할 때부터 결합하며 학습하는 joint training을 사용한다. wide와 deep의 모델을 동시에 mini-batch stochastic optimization을 사용해 backpropagation하여 학습한다. 논문에 따르면, wide 모델에서는, optimizer로 online learing 방식인 Follow-the-regularized-leader(FTRL) 알고리즘을, deep 모델에서는 Adagrad를 사용했다.
모델의 예측은 다음과 같다.
Y : binary class label
σ() : sigmoid function
Memorization과 generalization은 추천시스템에서 중요하다. Wide linear model은 희소한 변수(sparse feature)의 상호작용을 cross-product features transformation을 사용해 효과적으로 기억할 수 있고 deep neural network는 이전에 나타나지 않은 변수의 상호작용을 low dimensional embedding을 사용해 일반화할 수 있다. 따라서 본 논문에서는 두가지 모델의 장점을 결합하기 위해서 Wide & Deep learning 구조를 제시했다. Google Play에 추천시스템을 적용해 평가했다. 온라인 실험 결과 Wide & Deep model은 앱 구매에서 유의한 개선을 이루어냈다.
댓글 영역