데이터과학/추천시스템

[추천시스템][paper review][구현] Wide & Deep Learning for Recommender Systems

섭구
반응형

Wide & deep은 2016년 구글이 발표한 논문으로, Memorization과 Generalization을 동시에 잘 수행할 수 있는 추천시스템 모델을 소개하고 있습니다. Wide & deep은 구글 플레이스토어의 추천시스템에 활용되어 매우 효율적이며 효과적인 성능을 보여준 시스템입니다.

 

Memorization, Generalization

우선, 본 논문에서 중점적으로 여기고 있는 Memorization과 Generalization의 정의에 대해 설명드리도록 하겠습니다.

 

1) Memorization

일반적인 regression은 종종 One-hot vector를 사용하여 학습합니다. 

예를 들어 One-hot 상황에서 (User == 정구섭)를 표현하는 Binary feature는 User가 "정구섭" 일때 1의 값을 갖게됩니다.

즉, 모델은 "정구섭"이라는 User 특성의 출현(occurence)를 학습하게 되는 것 입니다.

 

Memorization은 기존의 특성들을 사용하여 새로운 특성을 만들어 학습하는 것을 의미합니다.

일반적으로 간단하게 Memorization은 동시출현(co-occurrence)빈도를 표현하는 Cross-product로 생성이 가능합니다. 

Cross-product Tranformation은 One-hot vector 사이의 AND 연산(cross product)을 통해 동시출현 여부를 의미하는 새로운 Binary feature를 생성할 수 있습니다.

예를 들어, AND(User = 정구섭, Item = 맥북) 이라는 새로운 Memorization 특성은 One-hot 특성간의 Cross-product transformation을 통해 생성이 가능합니다.

생성된 특성은 User가 "정구섭"인 동시에 Item 특성이 "맥북" 일 때 비로소 1의 값을 갖게 될 것입니다.

즉, Memorization은 각각의 특성들의 동시 출현을 바탕으로 새로운 특성을 생성하여 상호작용을 '암기'하는 것 입니다.

 

추천시스템에서 Memorization은 과거의 동시출현이 평가(Rating)에 끼친 영향에 대한 설명력을 제공하며, 매우 Topical하고 상품에 직접적으로 관련된 정보들을 추천하도록 도와줍니다.

하지만 반대로 등장하지 않은 조합에 대한 설명력이 떨어지며, 특성간의 Cross-product transformation이라는 무거운 feature engineering을 필요로 한다는 단점이 존재합니다.

 

2) Generalization

Generalization은 Memorization과 반대로, 새로운 특성 조합에 대한 일반화된 예측을 가능하게 하는 방법입니다.

앞서 리뷰하였던 Matrix Factorization , Factorization Machines 같은 임베딩 기반 모델들은 각각의 특성들을 동일한 차원의 Latent space로 매핑하여 Dense한 벡터로 표현합니다.

새로 표현된 Dense한 특성벡터는 서로 내적이 가능하며, 따라서 별도의 Cross-product transformation을 필요로 하지 않습니다.

무엇보다도 Generalization은 과거에 관측되지 않은 특성의 조합에 대한 일반화된 예측을 제공해 줍니다.

 

따라서 추천시스템에서 Generalization은 추천의 다양성을 증가시키며, 비주류 아이템을 거의 추천하지 않는 Long-tail problem을 극복하도록 도와줄 수 있습니다.

또한 Generalization은 Memorization에 비해 상대적으로 적은 feature engineering을 필요로 합니다.

하지만 실제로 존재할수 없는 관계에 대해서도 과도한 일반화 결과를 내놓을 가능성이 존재합니다.Cross-product가 같은 경우를 존재하지 않는 조합으로 '암기'하는 것과는 대조적입니다.

단적으로 한화와 토트넘의 우승가능성에 대해서도 Generalization 모델은 Memorization 모델보다 높은 가능성을 점칠 것 입니다.

 

이처럼 Generalization과 Memorization은 각자의 장점을 가지고 있습니다.

추천시스템은 일반적인 작업과는 다르게 정확한 정답이 존재하지 않는 문제라고 할 수 있습니다.

따라서 추천시스템에서는 여전히 logistic regression과 같은 Memorization에 특화된 Linear 모델과

Matrix Factorization , Factorization MachinesNCF와 같이 Generalization에 특화된 Embedding based 모델이 모두 사용되고 있습니다.

 

Wide & deep의 가장 큰 Contribution은 Memorization과 Generalization을 동시에 수행할 수 있다는 점 입니다.

따라서 Wide & deep은 과거의 기록으로부터 어느정도 보장되었으며, 다양한 추천 결과를 동시에 제공할 수 있는 추천시스템 모델입니다.

 

1.Wide & deep

 

Model architecture

Wide & deep 모델의 구조에 대하여 알아보겠습니다.

Wide & deep은 Wide part와 Deep part로 나누어져 있으며, 각각 Memorization과 Generalization을 담당하고 있습니다.

1) Wide component

 

Wide & deep 모델의 Wide는 Memorization을 담당하는 generalized linear model을 의미합니다.

$$y= W^Tx+b$$

\(w = [w_1,w_2,...,w_d]\)는 모델의 파라미터 , \(b\)는 bias 입니다.

\(y\)는 feature vector \(x =[x_1,x_2,...,x_d]\)에 대한 예측을 의미합니다.

이 때, Wide는 memorization을 담당하기 때문에 feature set \(x\)는 개별적인 raw 특성과 cross-product transformation으로 생성된 새로운 특성을 함께 포함하고 있습니다.

cross-product feature는 다음의 식으로 구할 수 있습니다.

$$\phi_k(x)= \prod_{i=1}^d x_i^{c_{ki}},\,\,\,\,c_{ki} \in \{0,1\}$$

예를 들어 설명드리겠습니다. 다음의 feature로 구성된 x가 있다고 가정해보겠습니다.

 $$x = [유저, 아이템, 나이]$$

이 때, k번째 cross-product feature \(\phi_k(x)\)는 유저(\(x_1\))와 나이(\(x_3\))의 cross-product를 고려하는 특성입니다.

k번째 cross-product feature에 i번째 특성이 포함되면, 해당 \(c_{ki}\) 값은 1로 세팅됩니다.

$$c_{k유저}=c_{k나이}=1,\, c_{k아이템}=0$$

따라서 \(\phi_k(x)\)는 다음과 같이 계산됩니다.

$$\phi_k(x) = x_{유저}^1x_{아이템}^0x_{나이}^1$$

이는 cross-product feature를 계산하기 위해 선택된 개별 boolean 특성의 곱을 의미합니다.

 

Wide part는 새로운 특성을 기존의 raw특성에 concatenate하여 모델을 학습합니다. 이러한 작업은 generalized linear model 자체에도 비 선형성을 추가해 줍니다.

본 논문에서는 그림과 같이 두가지의 Sparse feature인 User Installed App, Impression App을 사용하여 Cross-product feature를 추가하였습니다.

 

2) deep component

wide & deep 모델의 Deep는 feed-forward neural network로서 모델의 Generalization을 담당합니다.

먼저 categorical feature는 embedding layer를 통해 저차원의 특성으로 변환되며, Continuous feature와 concatenate되어 심층 신경망의 입력이 됩니다. 이 때, 임베딩 층은 랜덤으로 초기화되며 모델 학습과정에서 함께 학습됩니다.

또한 각각의 hidden layer에서는 다음과 같은 일반적인 신경망 연산이 진행됩니다.

$$a^{(l+1)} = f(W^{(l)}a^{(l)} + b^{(l)} )$$

\(l\)번째 층의 \(W^l\)는 weight를, \(b^l\)는 bias를, \(a^l\)는 activation function을 의미하며 본 논문에서는 ReLu를 사용했습니다.

 

Joint Training of Wide & Deep 

WIde & deep 모델은 output layer에서 Wide part와 Deep part의 output을 가중합(weighted sum)합니다.

따라서 모델은 일반적인 logistic regression을 사용하여 동시에 학습(joint training)이 가능합니다.

Wide & deep은 output layer를 통하여 동시에 역전파가 진행됩니다. 따라서 이는 단순한 앙상블과는 다르다고 할 수 있습니다. 

 

Wide part는 FTRL알고리즘이 Optimizer로 사용되었으며, Deep part는 AdaGrad가 사용되었습니다.

 

일반적인 binary classification의 경우 모델의 예측은 최종적으로 다음과 같습니다.

$$p(Y=1|x = \sigma(w^{T}_{wide}[x,\phi(x)]+w^{T}_{deep}a^{(l_{f})}+b)$$

Wide part에는 cross product feature \(\phi(x)\)가 raw feature \(x\)와 concat 되어 \([x,\phi(x)]\)를 이루고 있습니다. 

또한 final activation \(a^{(l_f)}\)를 거친 Deep과 Wide가 더해져 sigmoid 함수 \(\sigma\)를 통해 예측을 진행됨을 알 수 있습니다.

본 논문에서는 Google play 스토어의 앱 다운 확률을 예측하였습니다.

2.results

저자들은 실제 환경에서의 Wide & deep 모델 성능을 검증하기 위하여 구글 플레이 스토어의 실제 데이터를 사용하여 실험을 진행하였습니다.

 

result 1.

첫번째 실험은 추천시스템 사용에 따른 어플 다운로드의 증감을 분석하는 app acquisition gain 평가입니다.

실험은 3주간의 A/B Test로 진행 되었는데, Wide, Deep, Wide & deep 3가지 모델을 각각 전체의 1퍼센트에 해당하는 유저들에게 적용하였습니다.

실험 결과 Wide & deep 모델이 Deep model에 비해 3.9% 더 높은 어플 다운로드 증가율을 보여주었습니다.

 

Offline test set을 통해 얻은 Offline AUC의 경우에도 Wide & deep이 가장 우수한 성능을 보였습니다.

하지만, 온라인 실험에 비해서는 작은 영향을 주었다는 사실을 알 수 있었습니다.

이는 실제 상황에서는 label이 고정되어 있지 않고, 훨씬 더 다양한 경우가 존재하기 때문에 Memorization과 Generalization을 함께 고려하는 Wide & deep 구조가 더 유효한 성능을 보인 것이라고 저자들은 말하고 있습니다.

 

result 2.

두번째 실험은 Service time을 비교한 결과입니다.

Wide & deep은 멀티 스레드 환경에서 더 잘 작동하기 때문에, 실제 상황에 적용하기에 매우 적합한 모델임을 알 수 있습니다.

 

3.구현

Movielens 데이터를 활용하여 Wide & deep 구조에 대한 구현을 진행해 보았습니다.

Tag(Text)에 따른 평점을 고려하여 각각의 Tag에 대한 Sentiment score를 새로운 특성으로 추가하였습니다.

또한 Genre(장르)와 Year(개봉연도)를 활용하여 Cross-product transformation을 진행하였습니다.

Movielens 데이터는 매우 sparse하며 사용할 수 있는 특성이 많지 않기 때문에 좋은 성능을 보이지는 못했습니다. 이점 양해 부탁드립니다.

 

GitHub - supkoon/wide_deep

Contribute to supkoon/wide_deep development by creating an account on GitHub.

github.com

 

마무리

Wide & Deep은 Memorization을 수행하는 Wide part와 Generalization을 수행하는 Deep part가 결합된 추천시스템 모델입니다.

각각 Linear 모델과 embedding-based 모델의 장점을 취합하여 Online, Offline 테스트에서 모두 우수한 성능을 보였습니다.

특히 실제 환경에서의 Serving 능력도 매우 좋은 모델임을 알 수 있었습니다.

구글에서 나온 논문인 만큼 실제 환경에서의 검증을 철저하게 진행하였다는 점이 강점으로 다가왔습니다.

추천시스템을 공부하면서 비슷한 방법론들의 변형이 자주 등장하는 것 같습니다. 서베이를 참고하여 서순을 따라가니 이해가 더 잘되는 것 같아 기분이 좋습니다. 다음 시간에는 DeepFM 모델을 공부해보도록 하겠습니다. 감사합니다. 

반응형