카테고리 없음

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

난 지민 2023. 9. 17. 21:56

 

딥러닝 기반 추천 시스템

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개 프로젝트로 끝내는 추천시스템 구현 강의