본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day38] DeepCTR 9-2 : DIN & BST

DIN : Deep Interest Network

User behavior feature : 유저가 과거에 행동했던 기록

User behavior feature를 input feature로 사용해서 좀 더 정확한 CTR을 예측한다. 

Alibaba에서 발표한 모델이다.

 

등장 배경

더 많은 유저의 정보를 모델에서 사용하고 싶다는 needs에서 출발

DIN가 나오기 전까지는 DeepFM과 같은 딥러닝 기반 모델들은 임베딩 이후 MLP를 통과시키는 패러다임을 따랐었다. sparse feature은 임베딩+concatenate을 걸쳐 full connected layer의 입력으로 사용했었다. 이 방식은 사용자의 다양한 관심사를 반영할 수 없다. 기존에 소비한 아이템의 리스트를 user behavior feature로 만들어서 사용자의 관심사를 반영하고, 예측 대상 아이템과 과거에 소비한 아이템 사이의 관련성을 학습할 수 있도록 설계되었다.

 

User Profile features처럼 기존에 사용하던 one-hot encoding feature도 사용하고, user behavior feature가 추가적으로 사용되었다. user behavior feature는 multi-hot 으로 encoding되어 있는데, 소비했던 아이템이 n개가 될 수 있고 이를 표현하기 위해서는 multi-hot encoding방식이 필요하다. 

 

모델 구성

  1. Embedding Layer
    각 sparse feature를 임베딩하는 layer
  2. Local Activation Layer
    본 모델의 핵심적인 부분
    user behavior feature와 아이템의 관련성을 학습하게 되는 layer이다.
    1. Local Activation Unit
      사진에서는 Activation Unit에 해당한다. 
      CTR로 예측하려고 하는 후보 광고와 과거 user behaviors와의 관련성을 학습하게 된다.
      (예측 아이템, 과거에 소비했던 아이템)을 쌍을 지어서 계산해서 activation unit에 넣으면 쌍의 embedding이 하나의 linear한 scalar값으로 출력된다. 이 값을 activation weight라고 한다.
      activation weight는 해당 쌍이 얼마나 연관이 있는 지를 말하는 것이고 높을수록 연관성이 높다는 것이다. 연관성이 높기 때문에 과거 정보를 더 많이 사용하겠다는 의미가 된다.

      user behaviors의 n개의 embedding이 weight가 곱해지고 나서는 sum pooling을 한다. sum pooling은 전체 embedding을 다 더하는 것이다. 그래서 차원이 늘어나지 않고 같은 차원으로 유지가 된다. 

      sum pooling을 통해 더해진 모든 embedding값과 user behavior feature 외의 one-hot encoding feature들은 activation unit을 거치지 않고 곧바로 sum pooling 된 값들과 concat되어 MLP layer의 input으로 들어간다.

      transformer의 attention보다 간단하지만 그와 비슷한 매커니즘이다. target item과 target item과 연관있는 아이템 n개 중에 연관도가 높은 item에는 weight를 많이 주어서 신호를 더 많이 전달하는 원리이다.
  3. Fully-connected Layer
    Feed forward neural network로 이루어져 있는 MLP layer
    최종 클릭여부 0 or 1을 output layer에서 예측하게 된다.

Deep Interest Network for Click-Through Rate Prediction

모델 성능

Deep Interest Network for Click-Through Rate Prediction

Logistic regression, wide& deep 등의 모델들보다 DIN이 높은 AUC성능을 보이고 있다. 맨 밑의 Dice는 이 DIN 논문에서 새롭게 제시한 activation function 이다.

 


BST : Behavior Sequence Transformer

CTR+Transformer

Alibaba에서 발표한 모델

DIN에서는 user behavior feature를 사용했지만 BST에선느 behavior feature의 sequence까지 모델링해서 어떤 순서로 유저가 행동했을 때 다음에 노출될 CTR이 얼마일지를 좀 더 정확하게 예측한다.

 

CTR 예측 데이터와 NLP 번역 데이터 간 공통점

  • sparse feature가 대부분이다
  • low-order feature interaction과 high-order feature interaction이 모두 존재해서 비선형적인 관계를 모델이 캡쳐해야한다.
  • 문장의 순서도 중요하고 사용자의 아이템 소비 순서(sequence)도 중요하다. 
    ex) 휴대폰 구매 -> 휴대폰 케이스 구매

그래서 NLP 분야에서 강력한 성능을 보이는 transformer를 CTR예측에도 적용해 본 것이다. 

 

Transformer

transformer에 대한 설명은 

 

[Day15] DL Basic 8. Sequential Models - Transformer

Trimmed sequence 길이가 다른 data Omitted sequence 중간이 없는 data Permuted sequence 밀리거나 순서가 바뀐 data 들로 인해서 sequential modeling이 어렵다. 이를 해결하고자 한 것이 Transformer이다. Tra..

chae52.tistory.com

 

이나 ↓아래의 접은 글에 담아두었다.

더보기

Attention Mechanism

: 입력 값의 어떤 부분에 attention할 지를 찾는 원리
Transformer에서 가장 중요한 개념

 

key-value 쌍이 주어지고 알고자하는 query가 있을 때 query와 key의 연관성(유사도) (=$similarity(Q,K)$)을 가중치로 해서, 그 가중치를 value와 곱해서 가중합으로 계산한다.

 

$$Attention(Q, K, V) = Value\,of\, Q = similarity(Q,K) \times V$$

 

attention을 사용하면 입력, 출력의 길이를 고려하지 않아도 단어간의 의존성을 자연스럽게 파악할 수 있다. 이는 번역NLP에서 직관적으로 표현된다.

 

그래서 예시로 NLP에서 Attention mechanism이 어떻게 작동하는지 살펴보자

 

  • Query
    it = 주어진 단어
  • Keys
    The, animal, didn ...~ tire, d까지 = 전체단어

주어진 단어에 대해서 전체 단어와 얼마나 관계가 있는지를 가중치를 구해서 높을수록 진한 색으로 표시했다. 가중치가 높을수록 key가 가지고 있는 value를 더 많이 참고해서 query에 대한 표현을 계산할 수 있다.

 

Scale Dot-product Attention

transformer의 attention 연산은 scale dot product를 사용한다. 

 

$$Attention (Q,K,V) = softmax(\frac{ QK^T }{\sqrt(d_{k})})V$$

  • $QK^{T}$
    Query와 Key vector 내적
  • $d_k$
    key의 차원
  • $ softmax(\frac{ QK^T }{\sqrt(d_{k})})$
    각 query와 key의 유사도 

scale-dot product attention은 self-attention에 해당된다. self attention 이란 query,key,value를 모두 공유한다는 뜻이다. 즉, 모두 같은 도메인에 속하는 attention이라는 뜻이다. 똑같은 입력값에 대해서 서로 다른 파라미터가 곱해져서 Q,K,V를 구성한다.

 

Multi-head Attention

Scale Dot-product attention을 병렬적으로 확장

차원이 큰 하나의 attentiond르 수행하는 것 보다는 여러 개의 scale dot product attention을 병렬적으로 처리하는 것이 더 효과적이다. 

 

Attention is All You Need

$$MultiHead(Q,K,V) = Concat(head_1, \dotsb, head_h)W_0$$

$$where \, head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)$$

 

$head_1$가 하나의 scale dot-product attention이 된다. 각각의 head가 서로 다른 데이터의 특징을 표현하기를 기대한다.

 

Transformer의 전체 구조

 

Attention is All You Need

빨간부분이 encoder 파란 부분이 decoder로 이루어져 있다. encoder과 decoder은 각각 6개의 동일한 레이어를 쌓아서 사용하고 있다. 

 

순서에 대한 정보를 제공하기 위해서 sin,cos를 사용해 positional encoding을 한다. multi-head attention이 일어난 이후에 residual connection(=Add)과 layer normalization(=Norm)을 사용한다.


BST의 전체 구조

Behavior sequence transformer for e-commerce recommendation in Alibaba

그 동안의 CTR모델들과 가장 다른 점은 입력인 user behavior sequence를 그대로 입력으로 사용하는 부분이다. 과거에 유저가 소비했던 아이템 집합이 아닌 그 sequence까지 이 모델이 표현해서 target item 에 대한 CTR을 더 정확하게 구현한다.

사진의 왼쪽 밑에 있는 other feature은 context-feature나 user feature같이 원래 CTR예측 모델에서 사용하던 feature들은 embedding이후에 바로 반영된다.

 

sequence feature는 예측하고자 하는 target item과 같이 묶여서 전체 리스트가 transformer의 input으로 들어가게 된다. Trasnforemr layer를 보면 원래 transformer의 decoder는 사용하지 않고 encoder만 사용해서 전체 sequence를 적절히 표현한다.

 

Transformer Encoder Layer

$$Attention (Q,K,V) = softmax(\frac{ QK^T }{\sqrt(d_{k})})V$$

$$Q=EW^Q, \;\; K=EW^K, \;\; V=EW^V$$

 

기존의 transformer 식과 동일하다.

  • $E$
    Embedding matrix
  • $W^Q, W^K, W^V$
    query에 해당하는 weight matrix

이렇게 scale dot-product attention(=self attention)을 수행하고

 

self attention 부분이 하나하나 head가 되어서 multi head attention 을 수행한다.

$$head_i = Attention(EW^Q, EW^K, EW^V)$$

$$S=MultiHead(E) = Concat(head_1, \dotsb, head_h)W_H$$

 

 

$$F=FFN(S)$$

$$S'=LayerNorm(S+Dropout(MH(S))$$

$$F=LayerNorm(S' + Dropout(LeakyReLU(S'W^{(1)} +b^{(1)}) W^{(2)}) +b^{(2)} ))$$

Feed forward network의 activation function으로 leakyReLU를 사용헀다. 또한 기존 transformer와는 다르게 dropout 을 사용헀다. 

 

위의 과정이 하나의 encoding layer가 이루어진  과정이고 i번만큼 계속쌓아서 n개만큼 쌓는다. 원래의 transformer는 이것을 6번 쌓은 것이다.

$$S^{(i+1)} = MH(F^{(i)})$$

$$F^{(i+1)} = FFN(S^{(i+1)})$$

 

BST vs DIN 

BST DIN
transformer layer local activation layer
user behavior sequence user behavior feature

BST vs Transformer

BST Transformer
dropout, leakyReLU x
encoder block 1~4개(1개가 best) encoder block 6개
아이템을 소비한 시간에 따른
custom positional encoding
sin,cos을 이용한 positional encoding

현재 아이템을 예측하려고 하는 시간과 과거에 그 아이템을 소비했던 시간의 차를 이용해서 positional encoding한다.

transformer의 핵심적인 구조는 유지하면서 다양한 task에 맞게 변형과 응용이 이루어졌다.

 

모델 성능

b=1, b=2처럼 블록을 점점 쌓을수록 오히려 성능이 감소한다. CTR예측 task의 sequence는 NLP sequence보다는 덜 복잡하기 때문으로 보인다. WDL는 wide&deep learing이고 WDL(+Seq)는 WDL에 sequence data를 추가한 것이다. transformer는 CTR 예측 문제에서도 SOTA의 성능을 보이고 있다!