본문 바로가기

Data Science/추천시스템과 NLP

[추천시스템] 딥러닝과 추천시스템, Wide & Deep Learning

반응형

이번 포스팅에서는 추천 시스템에 딥러닝을 적용한 또 하나의 모델인 Wide & Deep Learning 추천 시스템에 대해 알아보려고 한다. 저번 포스팅에서 추천 시스템에 딥러닝을 적용한 첫 번째 모델인 Neural CF에 대해 알아보았다. 이번엔 또 다른 모델인 Wide & Deep Learning 추천 시스템에 대해 알아보고 말미에는 Neural CF와 어떤 차이점이 있는지에 대해서도 살펴보자.

 

추천시스템에 딥러닝을 적용한 또 하나의 모델, Wide & Deep Learning 추천 시스템!


이번에 소개할 Wide & Deep Learning 모델은 이름에서도 추측할 수 있다시피 Wide 구성요소와 Deep 구성요소로 구성되어 있다. 먼저 Wide & Deep Learning 모델의 개괄적인 구조는 아래와 같다. 

 

Wide & Deep Learning 모델의 구조

 

이제 각각의 구성요소가 하는 역할이 무엇인지 살펴보자.

1. Wide Component

Wide 구성요소는 우리가 그동안 배워왔던 기존의 추천 시스템 모델들이 하는 역할을 의미한다. 즉, 컨텐츠 기반 추천 시스템이나 협업 필터링 처럼 적재된 historical한 데이터를 가지고 학습을 한다. 그러므로 과거의 데이터들 간의 상관관계를 학습하게 되므로 특정 아이템 또는 유저와 가장 관련이 있는 것들을 찾는 것이 본질적인 목적이다. 추가적으로 이렇게 과거의 데이터 속 안에서만 학습한다는 의미로 Wide는 Exploitation이라고도 한다.(Exploitation, Exploration은 강화학습에서도 등장하는 용어로, 이 용어에 대한 차이는 여기를 참고해보자)

 

그렇다면 Wide Models는 구체적으로 어떤 역할을 할까? 위에도 말했다시피 Wide Models는 딥러닝을 추천시스템에 적용하지 않은 즉, 기존의 추천시스템 모델처럼 선형 함수의 모델들이다. 하지만 과거의 데이터로만 학습하기 때문에 고질적인 과적합 문제를 일으키기도 한다. 그래서 Wide Models에 약간의 정규화 기법을 적용해주어 좀 더 일반화된 모델을 만들기 위해 Cross-product Feature를 사용한다. 이렇게 약간의 모델 일반화를 위한 노력이 가미되므로 Wide Models를 Generalized Linear Models 이라고도 부른다.

 

그렇다면 Cross-product Feature란 무엇일까? Cross-product Feature는 과거의 데이터를 활용해서 새로운 조합 Feature를 만들어서 과거에는 학습해보지 못한 Feature를 생성하는 것이다. 그렇기 때문에 위에서 언급한 것처럼 모델의 일반화에 기여할 수 있다. Cross-product Feature에 대해 더 자세하게 알기 위해서 Wide Models의 인풋, 아웃풋이 어떤 데이터인지 부터 살펴보자.

 

Wide Models의 데이터 형태

 

$x_1$ 부터 $x_n$ 까지는 사이즈가 $n$ 개의 Feature 벡터를 의미한다. 흔히 아는 User에 대한 정보, Item에 대한 정보 등을 Feature 화시킨 벡터이다. 그리고 $x_{n+1}$ 부터 $x_{n+10}$ 까지의 10개 벡터가 바로 Cross-product Feature이다. 마지막으로 예측하려는 값 즉, 종속변수 $y$는 User의 행동 여부를 의미하는 값으로 0 또는 1인 binary 값이다.

 

이제 Cross-product Feature에 대해 알아보자. Cross-product Feature에 대한 수식은 다음과 같다.

 

Cross-product Feature 수식

 

수식의 각 미지수에 대한 정의부터 살펴보자. $k$는 Cross-product Feature 중 몇 번째 Feature인지를 의미한다. 위 데이터 포맷에 대응시켜보자면 $x_{n+1}$ 과 $x_{n+10}$ 사이 중 $k$ 번째인 $x_k$라고 할 수 있겠다. $n$는 Cross-product Feature를 제외한 raw한 Feature Vector 개수를 의미한다. 위 데이터 포맷에 대응시켜보면 $x_1$ 부터 $x_n$ 까지니까 같은 $n$이 되겠다. 그리고 가장 중요하다고 할 수 있는 $c_{ki}$이다. 이에 대해서는 $k$와 $i$ 값에 예시 숫자를 대입해서 설명하는 편이 좋을 것 같다.

 

k, i에 각각 1을 대입시켜보자

 

$k$와 $i$값에 1을 대입했을 때, 설명이 이렇게 된다.

 

"$x_1$번째 Feature가 Cross-product Feature의 1번째 Feature 조건에 모두 부합한다면 $c_{11}$은 1이 되고 아니면 0이 된다." 

 

다시 한 번, 색다른 예시를 들어서 생각해보자. 만약 $x_1$ 번째 Feature가 $\left[ 나이=20, 성별=남자, 모국어=한국어 \right]$ 이라고 해보자. 이 때 Cross-product Feature의 1번째 Feature가 $\left [나이=20, 모국어=영어 \right]$이다. 그렇다면 $c_{11}$의 값은 무엇이 될까? Cross-product Feature에서 나이라는 조건은 부합하지만 모국어 조건에는 부합하지 않기 때문에 0이 된다. 이렇게 Cross-product Feature를 만드는 아이디어는 좋지만 Feature Engineering 하는 노력이 많이 들어간다는 단점이 있다고 한다.

2. Deep Component

다음은 Deep 구성요소이다. Deep 구성요소는 Wide 구성요소의 단점을 극복하기 위해 노력한다. 과거의 데이터로만 학습하는 Wide의 구성요소의 단점은 새로운 조합의 데이터에는 잘 추천(예측)을 하지 못하는 것이다. 그러므로 Deep 구성요소는 과거의 데이터에는 없는 새로운 데이터를 생성하는 Exploration을 하는 것이 목적이다. 그래서 Deep 구성요소는 User, item 간의 high-order 즉, 고차원의 상호작용 정보를 학습한다. 고차원의 상호작용을 학습하기 위해 비선형 활성함수를 적용한 딥뉴럴 네트워크를 사용한다.

 

Deep 구성요소의 모델을 구성하기 위해서는 FM이나 이전에 배웠던 Neural CF(MLP MF)을 사용한다. Sparse한 User, item 벡터의 차원을 축소시켜 Dense한 Embedding 벡터로 변환시킨 후 딥뉴럴 네트워크의 인풋으로 집어넣는다. 이러한 구조는 저번 포스팅에서 배웠기 때문에 굳이 한번 더 소개하지는 않겠다.

3. Wide 와 Deep을 결합하자!

이제 각 구성요소를 알아보았으니 Wide & Deep 구성요소를 결합한 Wide & Deep Learning 모델의 구조를 살펴보자.

 

Wide & Deep Learning 모델의 구조

 

알아두어야 할 점은 Wide, Deep 구성요소 모두 동일한 인풋 데이터로 한다는 것이다. 하지만 Wide는 위에서 배웠다시피 Cross-product Feature를 만듦으로써 Linear한 모델로 추천 시스템을 통해 예측값을 내뱉고 Deep은 딥뉴럴 네트워크를 활용하게 된다. 이렇게 2개의 예측값을 갖고 마지막에 시그모이드 활성함수를 씌워주어 0과 1사이의 확률값으로 변환해준다. 

 

참고로 Wide & Deep Learning 모델은 Wide, Deep 모델의 파라미터를 동시에 최적화시켜주는데, 각 모델 종류에 따라 사용하는 최적화 알고리즘은 다르다고 한다. Wide 모델은 L1 norm 정규화 항을 적용시키는 FTRL을 사용한 반면, Deep 모델은 AdaGrad를 사용한다.

4. Neural CF와 무슨 차이점인가?

Neural CF는 이번에 소개한 Wide & Deep Learning 모델의 Deep 구성요소에 사용되는 모델의 종류 중 하나이다. 그리고 Neural CF를 소개하는 글에서 보면 Generalized MF 와 MLP MF를 결합한 일종의 딥러닝 추천시스템에서 배웠었는데, 이것과 Wide & Deep Learning 모델의 차이점은 약간 존재한다. Generalized MF 와 MLP MF를 결합한 모델의 구조를 다시 살펴보자.

 

Generalized MF 와 MLP MF를 결합한 모델

 

가장 큰 차이점은 Wide & Deep Learning 모델에서는 Cross-product Feature를 사용해 모델 성능 일반화에 좀 더 기여한 것이라고 할 수 있다. 위 그림에서 보다시피 Generalized MF 와 MLP MF를 결합한 모델에서 Generalized MF는 단순히 과거의 데이터를 학습하는 것만 하는 것을 볼 수 있다. 그러므로 Wide & Deep Learning 모델이 모델의 성능 일반화 측면에서는 더 강점을 보일 것 같다는 개인적인 의견이다.

 

반응형