[패스트캠퍼스 - 30개 프로젝트로 끝내는 추천시스템 구현 강의 Chapter03. 딥러닝 기반 추천시스템]

딥러닝 기반 추천 시스템
CF 기반 딥러닝 모델
NCF (Neural Collaborative Filtering)
선형 모델인 MF 말고 비선형 MLP를 쓰자
GMF(Generalized Matrix Factorization)와 MLP를 결합함으로써 유저-아이템 상호작용의 선형적/비선형적 패턴을 모두 잡아냄.
MF 선형 모델로서의 한계점
Implicit Setting : 0이라고 싫다는 것이 아니며, 1이라고 좋다는 의미가 아님
implicit한 matrix가 있을 때 선형 기반인 MF 모델은 표현에 더 큰 제약을 가짐
NCF-MLP로 만들어낸 MF 모델
CF를 뉴럴넷으로 구현
입력의 형태는 유저와 아이템에 대한 one-hot 벡터로 이후 k 차원으로 맵핑하는 레이어를 통과함
binary corss-entropy loss (log loss)가 사용되어 implicit feedback의 확률적인 특성을 반영함.
NeuMF - MLP와 GMF의 결합
GMF는 MF의 내적 부분을 element-wise 곱 연산과 비선형 활성함수(시그모이드)로 대체하여 기존의 MF를 일반화함.
GMF는 비선형을 잡아내는 게 어렵다는 약간의 한계점이 있고, 반면 MLP는 선형 상호작용을 잡아내는 데 효율적이지 않을 수 있다는 단점
이 두 모델을 조합하여 서로의 장단점을 상호 보완
Auto Encoder
입력을 그대로 복원하는 비지도 학습 차원 축소 모델
Encoder와 Decoder로 구성되어 MSE를 계산함으로써 입력을 잘 복원해내도록 학습됨
AutoRec - Auto Encoder로 latent factor 학습하기
Auto Encoder의 구조를 통해 CF를 모델링
중간의 Hidden Layer에서 Latent Factor를 학습하고 이를 복원해냄으로써 유저의 unrated rating을 추론함
AutoEncoder와 수식의 차이는 관찰된 평점만의 기여도를 계산하는 부분
ConvMF - MF와 CNN의 만남, 컨텐츠 기반
MF 모델에 CNN 모듈을 결합하여 텍스트 피처를 반영할 수 있도록 구성한 모델
텍스트 임베딩 매트릭스를 컨볼루션하여 문서의 latent vector를 생성, 이를 MF 파트의 최적화 과정에 결합
FM 기반 딥러닝 모델
Wide는 기억을, Deep은 일반화를
Wide part (Memorization) : 특정 아이템 혹은 피처의 빈번한 co-occurrence를 학습
Deep part (Generalization) : 피처와 임베딩 정보를 통해 일반화된 패턴을 포착
- Dense Embedding : sparse한 고차원의 카테고리 피처들이 저차원의 실수로 구성된 dense 벡터로 변환됨
-> 이 임베딩이 다수의 Feed Forward Layer에 통과되어 최종 출력이 생성됨
Wide & Deep 전체 구조
두 출력 값이 위 식과 같이 결합되어 sigmoid 층을 통과하고, 최종 출력이 결정됨
Joint Training을 통해 가중치가 두 부분에 동시에 역전파됨
추천 시스템 플로우
1) 실시간 쿼리 생성, 시스템을 통해 노출/로그 생성
2) 후보 생성 로직 포함
3) 장기적으로 로그 정보를 수집해 모델을 업데이트
모델 파이프라인
1) 데이터 생성 : 로그 데이터로부터 학습셋과 vocabulary 생성
2) 모델 학습 : 생성된 학습 데이터와 정의된 모델로 학습 수행, warm-starting 적용으로 시스템 부하를 최소화
3) 모델 서빙 : 병렬화와 미니 배치 병렬 처리로 10ms 단위의 속도 내에 처리 가능
성능 평가
추천 성능 측면에서와 마찬가지로 서빙 속도에서도 유의미한 향상
wide < deep < wide & deep
DeepFM (Deep Factorization Machine)
FM 모델에 뉴럴넷을 적용함으로써 선형, 비선형 패턴 모두 잡아낼 수 있도록 고안된 모델
하나의 입력으로 통합된 아키텍처를 사용함으로써 효율성과 성능 모두 확보한 딥러닝 추천 모델의 베이스라인
피처 조합 학습 : N-th Order Interaction
CTR prediction 문제에서 유저의 행동에 숨겨진 피처의 암묵적인 상호작용을 잡아내는 것이 중요
first order interaction은 피처의 선형적인 결합으로 표현 가능
second, third order interaction은 각각 2, 3개 피처의 상호작용을 의미함
고차와 저차 feature interaction을 포착하는 것이 중요
입력 데이터의 형태
CTR prediction 구성에서 x 피처는 row 별로 유저-아이템 pair 정보를 포함하는 m개의 필드 데이터 포함
y는 클릭 여부를 나타내는 레이블
x의 필드는 보통 one-hot으로 나타내며 연속형 변수의 경우 그자체로 쓰기도 하고 이산화해주기도 함
FM -> low order feature interaction
DNN -> high order feature interaction
선형 피처 인터랙션 및 2차 피처 인터랙션을 잡아냄
임베딩 벡터를 사용함으로써 sparse한 피처 인터랙션도 잘 잡아낼 수 있음
전체 결합
FM 컴포넌트, DNN 컴포넌트를 결합해 하나의 sigmoid 출력을 만들어냄
이 출력 값이 CTR prediction의 결과로 유저가 아이템을 클릭할 확률을 의미함
FM을 DNN으로 일반화
DeepFM 마찬가지로 FM모델에 DNN을 적용한 방법론
Bi-Interaction Pooling을 적용해 high order feature interaction을 잡아냄
시퀀스 기반 추천 모델
1. GRU4REC
GRU(Gated Recurrent Unit)는 LSTM과 비슷한 RNN의 variant로 LSTM에 비해 단순한 구성을 가짐
LSTM과 달리 Cell State가 없고 Forget Gate가 없다는 차이점이 존재함
성능 상 큰 차이가 없음, LSTM 대비 연산 효율성
과거의 기록 시퀀스가 주어졌을 때 다음 item을 예측하는 태스크
시간의 흐름에 따라 동적으로 변하는 유저의 preference를 포착함
입력 데이터셋 구성의 일반화
순서 : 1번 time step에서는 2번 time step의 token을 예측
위의 문자 쌍은 해당 입력이 주어졌을 때 맞추고자하는 출력 쌍을 의미
입력 길이 맞춰주기
시퀀스 길이 너무 길 경우 : 최근 n개로 잘라줌
시퀀스 길이 너무 짧을 경우 : n개 전에 zero-padding
Look-up Embedding Matrix로부터 시퀀스 기반 item matrix 생성
GRU 레이어 쌓기
1-of-N 인코딩을 사용해 아이템을 레이어에 입력
다중의 GRU 레이어를 쌓고, 입력 값을 중간마다 연결
세션 병렬 미니 배치
자연어 처리에서 사용한 미니배치 구성 방식을 그대로 적용할 수 없음
한 세션이 끝나면 뒤에 새로운 세션을 붙여 해당 세션의 다음 토큰을 예측할 수 있도록 미니배치 구성
2. SASREC
Transformer의 디코더 파트의 구조를 적용한 next-item prediction model
GRU4REC의 단점을 극복
- 순차적 계산 : GRU는 병렬 처리 불가, 긴 시퀀스 연산 시 시간 소요 증가
- Long Term 정보 반영 어려움
Transformer - Recap
seq2seq task를 위한 모델로 인코더와 디코더로 구성됨
SASREC에서는 Masked Self-Attention 블록을 사용한 구조 도입
Positional Encoding
Tranformer와 마찬가지로 self-attention에 위치 정보를 반영하기 위해 Positional Encoding 적용
여기서는 learnable Parameter로 sequence length n에 맞게 학습
시퀀스 -> Q, K, V
Point-Wise Feed Forward Network
3. BERT4REC
Masked Language Model을 적용한 양방향 모델
Transformer의 인코더 및 디코더 파트 구조를 활용
Masked Language Model 구조를 차용, 양방향의 정보를 활용해 학습
Multi Head Attention을 사용
BERT?
Masked Language Model의 하나로 Bidirectional Transformer Encoder block으로 구성됨
문장의 가운데를 뚫어놓고 이를 맞추는 방식으로 학습
Bi-directional 학습
Masked Token 주변의 단어로부터 양방향 정보를 활용해 예측, 학습
test 과정에서는 마지막 Token만 masking함으로써 성능 측정
SASREC과 BERT4REC 차이
single Head Attention <-> Multi Head Attention
Last Item Masking <-> Randomly Masking
출처 : 패스트캠퍼스 - 30개 프로젝트로 끝내는 추천시스템 구현 강의