LLM활용한 추천시스템 코드를 보다보니 CTR 모델들에 대해 제대로 모르고 있는 듯하여
이참에 정리를 해보려 한다. 사실 각각의 게시물로 쓰려고 했는데, 서로 비교하는 데에는
한 게시물로 정리하는 것이 나을 것 같아 정리해본다.
CTR(Click Through Rate)는 영어 그대로 클릭할지 안할지 예측하는 Task이다.
광고나 이커머스 쇼핑에서 CTR을 잘 예측해야 알맞게 추천할 수 있다.
1. DIN
- 기존 CTR모델들은 embedding&MLP 방식으로 진행함. 즉, vector를 저차원으로 임베딩한 뒤 MLP에 넣음
→ 고정된 길이의 vector이니 정보손실 일어남. 다양한 선호도 파악 어려움
- 기존 다른 RNN기반의 모델들은 데이터사이가 거리가 멀어질수록 연관관계가 줄어들어 데이터를 적절하게 활용할 수 없음.
- RNN+attention기반으로 유저 행동의 변화를 예측
- 한계점 : Sequential 행동들간의 연관성 파악 어려움.
- 모델구조
1) Embedding Layer : User Profile Features를 input으로 저차원의 벡터로 변환
2) Local Activation Layer : Candidate item와 User behaviors간의 연관성 계산.
3) MLP Layer : Embedding Layer, Activation Layer, Context Features를 concat하고 Flatten한 뒤 MLP에 넣음
최종적으로 item선호도 계산.
2. DIEN(Deep Interest Evolution Netweork)
- 이전 CTR모델들은 interaction에만 집중
- DIEN은 유저들의 변화하는 interest에 집중함
- 방법론
1) 각 학습단계마다 auxiliary loss를 활용해서 유저의 latent interest 포착
2) 유저의 관심사가 변하는 현상에 집중하기 위해 interset evolving layer제안
3) GRU의 update gate에 attention을 적용하는 AUGRU알고리즘 활용
→ 유저의 변화하는 흥미를 더 잘 파악
- 왜 개발했나?
1) 기존 RNN기반 모델의 loss는 모든 hidden state를 거친다음에 적용되는데, 이건 유저의 모든 행동을
연속적으로 동일하게 다룬다는 문제가 있음(중요도 파악X, 비연속성 고려X)
2) 각 hidden layer에 대한 loss를 적용하는 방법이 필요함 → auxiliary loss
- 모델 구조
1) Embedding Layer
: User profile, User Behavior, Ad(Target), Context를 one-hot encoding vector로 바꿈
→ e차원 벡터로 embedding (embedding vector는 모두 concat)
2) output : CTR binary classification(click or not)
: 마지막 output은 그래서 이 user가 target을 누를거냐 아니냐로 나온다.(0/1)
3) Interest extract layer - GRU with auxiliary loss & negative sampling
: Sequence정보를 학습하기위해 GRU모델 선택.
- Auxiliary loss란?
파란부분과 같이 중간에 Auxiliary Loss를 적용하는 방식.
RNN을 사용하는 모델은 Sequence길이가 길어지면, 제대로 각 단계에서의 행동이 반영이 안되므로
중간 hidden state의 auxiliary gradient를 계산하고 loss를 적용함.(Training할때만 적용)
- Negative Sampling은 다른 방법론에서도 많이 나오듯이 이 유저가 클릭한 상품외에 상품 벡터도 가져와서
이 상품에 대한 output은 0이 나오도록 학습하는 방법이다.
4) Interest evolving layer : Attention & GRU
: 고객의 interest는 다양하고 계속 변함(갑자기 어떤날은 뜬금없는 것에 흥미를 느낄수도..)
→ 마지막 선택 당시에 가장 연관있는 걸 줘야함(attention)
→ 전체 Interest의 진화 트렌드에 따라 예측가능(GRU-sequential)
- Attention
: 타겟 상품에 대한 embedding vector가 key로 들어가서 dot product
→ 현재 시점(t)에서의 유저 행동 h(t)와 Target Ad사이의 연관도를 파악.
밀접한 관계가 있을 수록 attention score가 크게 나옴.
- GRU
1) 기본 GRU
u : update gate(t시점의 정보를 얼마나 반영할지)
r : reset gate(지난 정보를 얼마나 버릴지)
h~ : 과거의 데이터를 얼마나 사용할 것인지
h : u를 weight로 해서 과거 데이터랑 직전시점 데이터랑 weighted sum
2) AUGRU
: GRU에 attention 결합
u대신에 a(attention score)를 적용해서 weight로 활용. 즉, 현재(t)시점의 h값이 중요하다면 weight를 강하게 줌.
3. DCN(Deep & Cross Network)
- 보통 모델에서 사용되는 feature는 sparse&large이므로 효과적인 feature를 조합하여 의미있는 feature를 찾는건 exhaustive search를 요구하며 비효율적이다.(의미없는 interaction도 학습함)
- DCN은 implicit한 모델은 explicit하게 표현하여 interaction 학습
- 구조 : Deep network와 Cross network로 이루어져 있음. 같은 input을 공유하며 마지막에 두 output을 쌓아서(stack)해서 예측 확률 계산.
- Cross Network
x0xlT를 통해 interaction 계산 → w(가중치)를 곱하고 bias를 더해줌 → residual connecion인 xl을 더해줌.
- Deep Network : 전형적인 feed-forwrad neural network로 linear&actionvation function 조합.
2탄에는 DeepFM, xDeepFM, AutoInt, FiBiNet, FiGNN에 대해 알아볼 예정.
참고
https://katenam32.tistory.com/9
https://huidea.tistory.com/284
https://velog.io/@kida/DCN-DeepCross-Network
댓글