기록하는삶

[추천 시스템/RecSys] 딥러닝을 활용한 추천 모델 DeepFM, DIN, BST 본문

AI/추천시스템(RecSys)

[추천 시스템/RecSys] 딥러닝을 활용한 추천 모델 DeepFM, DIN, BST

mingchin 2022. 3. 17. 00:32
728x90
반응형

딥러닝에 대한 연구가 발전함에 따라 추천 시스템에 딥러닝을 활용하는 것 역시 활발히 연구되고 있다. 이 글에서는 그 중 CTR 예측에 주로 활용되는 DeepFM, DIN, BST에 대해 간단히 정리해본다.

 

1) DeepFM(2017)

과거의 데이터를 기억하고 학습하는 Memorization과 이를 통해 새로운 혹은 적은 데이터를 가진 대상에 대해 아이템과 특성 조합을 만드는 Generalization을 각각 Wide 파트와 Deep 파트로 나누어 잘 수행할 수 있도록 설계했던 Wide&Deep과 그 구조를 유사하게 하되, wide component가 feature engineering(cross-product transformation)을 필요로 한다는 단점을 극복하고자 FM으로 대체한 모델이다. 따라서 FM에 적용하는 k차원의 임베딩을 DNN의 input으로 그대로 활용하는 것이 특징이며, wide component인 FM을 통해 order-2-interaction(선형적 관계성, 2개의 feature간의 관계)을, deep component인 DNN을 통해 보다 고차원의 interaction(비선형적 관계성, 3개 이상의 feauture간의 관계)을 학습하고자 하였다.

모델은 위와 같이 wide component(왼쪽)와 deep component(오른쪽)의 결합이며, FM layer의 경우 지난 글에서 정리한 FM 모델과 동일하고 DNN의 경우 활성화 함수로 Relu를 사용한 단순 MLP 구조다.

 

2) DIN(Deep Interest Network_2018)

DeepFM을 포함한 기존의 딥러닝 추천 모델들을 저차원의 임베딩 벡터를 DNN의 input으로 활용하는 구조를 가졌기 때문에, 아무리 MLP 구조로 비선형 관계성을 학습하고자 한다 하더라도 애초에 sparse feature들이 가지고 있는 정보가 임베딩 과정에서 손실된다는 한계는 동일하다. 이러한 한계를 사용자가 기존에 소비한 아이템의 리스트인 User Behavior Feature를 만들어, 예측 대상 아이템와 과거에 소비한 아이템 사이의 관련성을 학습하도록 하여 극복하고자 했던 모델이 DIN이다. 이때 User Behavior Feature는 과거에 소비한 아이템이 여러 개일 수 있으므로, multi-hot-encoding으로 표현한다.

구조는 위와 같은데, DIN의 핵심인 Local Activation Layer의 원리는 Transformer의 attention 매커니즘과 유사하다. CTR을 예측하고자 하는 상품과 과거에 소비한 User Behavior Feature가 모두 input으로 활용되는데, 이때 과거에 소비한 N개의 상품과 예측하고자 하는 상품 사이의 관계성을 Activation Unit을 통해 weight로 표현한다. 그렇게 구한 weight를 곱한 각 N개의 feature들을 sum pooling을 통해 FC layer의 input으로 활용한다. attention 매커니즘처럼 현재 예측하고자 하는 상품과 과거의 소비한 상품이 관련성이 높을수록 더 큰 weight를 가지게 될 것이다.

3) BST(Behavior Sequence Transformer_2017)

DIN은 User Behavior Feature를 Activation Unit을 통해 학습함으로써 과거 구매 목록을 CTR 예측에 사용했다. 여기서 나아가 과거 구매 목록의 시간적 순서를 모델이 반영할 수 있도록 Transformer의 encoder 구조를 가져다 사용한 것이 BST다. 

구조는 DIN과 거의 유사하나, Local Activation Layer 대신 Transformer Layer(Transformer의 encoder)를 사용했고, User Behavior Feature를 multi-hot-encoding된 vector로 표현한 DIN과 달리 구매 순서를 반영한 User Behavior Sequence을 input으로 활용한 것이 그 특징이다. 

Transformer Layer의 Multi-head Attention 구조 자체는 동일하나, Dropout이 사용되고 activation function으로 LeakyRelu를 사용했다는 점에서 차이가 있다. 또한 Transformer가 6겹의 encoder block을 활용했던 것과 달리, BST는 1 ~ 4겹의 encoder block을 실험하였으나 1개의 block을 활용했을 때 가장 좋은 성능을 보였다고 한다. 또한 예측 시점의 시각과 과거 특정 상품을 구매했던 시각의 차를 이용해 positional encoding을 하여 구매 순서를 유의미하게 학습할 수 있도록 하였다. 요약하면 아래와 같다.

 

[BST vs Transformer]

① Dropout과 LeakyRelu의 사용

② 1 ~ 4겹의 encoder block(1개일 때 최고 성능)

③ 과거 특정 상품을 구매한 시점으로부터 흐른 시간을 positional encoding으로 반영

728x90
반응형