본문 바로가기

Data Science/추천시스템과 NLP

[추천시스템] 딥러닝과 FM, Deep FM(Factorization Machine)

반응형

이번 포스팅에서는 FM(Factorization Machine)에 딥러닝을 적용한 Deep FM에 대해 알아보려고 한다. FM에 대한 사전지식이 필요하므로 FM에 대해 모른다면 여기를 읽어보고 오자.

 

FM에 딥러닝을 적용했다.


Deep FM은 FM에 딥러닝을 적용했다고 문두에서 소개했지만 구체적으로 말하면 직전 포스팅에서 배운 Wide & Deep Learning 추천시스템과 FM을 결합한 것이라고 할 수 있다. 결국 두 모델의 장점만을 갖고와서 만든 것이 Deep FM이라는 것인데, 두 모델의 장점만 알고 있다면 Deep FM에 대한 이해는 매우 수월할 것이다. 

1. Wide를 FM으로 바꾸면 Deep FM!

직전 포스팅에서 배웠던 Wide & Deep Learning 추천 시스템을 다시 상기시켜보자. Wide, Deep 각각의 구성요소로 구분되어서 각각의 모델을 개별로 운용하고 개별 모델의 예측결과값을 다시 결합해서 최종 예측값을 도출한다고 했던 Wide & Deep Learning이었다. 

 

Wide & Deep Learning 추천 시스템 구조

 

위 구조에서 Wide에 사용되는 모델의 종류를 FM 모델로 바꾼 것이 바로 Deep FM이 된다. 다시 말해, Wide 요소를 FM으로 모델링하고 Deep 구성요소는 기존에 했던 것처럼 딥뉴럴 네트워크로 모델링한다면 그것이 바로 Deep FM이라는 것이다. 그러면 이제 개념도 정립되었으니 Deep FM의 구조를 다시 한번 도식화해서 살펴보자.(참고로 FM에 대해서는 여기에서 소개되었던 적이 있다)

2. Deep FM의 구조

Deep FM의 구조

 

위 그림에서 $field$는 하나의 정보 벡터를 의미한다. 예를 들어 User 정보, item 정보이다. 그러므로 위 구조에 대응시켜보면 User 벡터, item 벡터, 기타 Context 관련 벡터, User-item 간 인터렉션 벡터 등에 대해 One-hot 인코딩시킨 상태이다. 그리고 이 모든 인풋 벡터들을 FM Layer, MLP MF Layer에 각각 넣어준다. 그리고 각 Layer마다 나온 결과값을 결합하여 활성함수를 씌우고 최종 예측값 $\widehat{y}$을 출력시킨다.

 

Sparse Feature에서 Dense Embedding을 만들기 위해 SVD,PCA 같은 행렬 분해 기법을 수행하는데, 이 때 1차원, 2차원의 인터렉션 정보를 활용하게 된다. 이렇게 Dense한 Embedding 벡터들을 FM 모델, MLP MF 모델에 넣으면서 고차원(high-order)의 인터렉션 정보를 활용하게 된다.

 

Deep FM은 위와 같이 인풋 벡터들을 집어넣기만 하면 되기 때문에 Feature Engineering을 하기 위한 노력이 들어가지 않아도 된다. 이전에 배웠던 Wide & Deep Learning 추천 시스템에서는 Wide 구성요소에 Cross-product Feature를 만들기 위한 Feature Engineering 수고가 들어간다고 했었지만 Deep FM에서는 이러한 수고가 필요하지 않다는 점도 기억해두자.

 

반응형