Networks/논문 리뷰

[논문리뷰] DeepFM: A Factorization-Machine based Neural Network for CTR Prediction 리뷰 및 프로젝트

코딩하는 Español되기 2024. 11. 15. 08:00

저희 팀의 파이널 주제는 "LLM 활용 대화형 상품 추천 시스템"입니다.

이러한 주제에 맞춰서 뮤지컬, 전시회를 추천해 주는 시스템을 개발하고자 합니다.

개발에 앞서 추천 모델에 관하여 Deepfm 모델을 추천을 받았는데요.

오늘 글에서는 이 모델에 대한 논문 리뷰와 분석을 적어보고자 합니다.


1. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction 리뷰

2. 적용해 볼 과제


 

리뷰할 논문:"DeepFM: A Factorization-Machine based Neural Network for CTR Prediction"

 

클릭률(CTR, Click-Through Rate)은 추천 시스템에서 매우 중요

    ● So, 여러 추천 시스템에서 CTR을 높이는 것을 목표로 삼음

    ● + 추정되는 CTR에 의해 아이템 랭킹을 알고 사용자에게 추천이 가능

 

○ 사용자 클릭 이면의 Implicit Feature Interaction을 통해 학습하는 것이 CTR 예측에서 중요

    ● Why? 사용자 이면의 Feature Interaction은 매우 복잡하기 때문

    ● 저 차원과 고차원 상호작용 모두 중요 → 핵심 문제: Feature Interaction을 효과적으로 모델링하는 것

 

○ Factorization Machines(FM)

    ● 쌍별 Feature Interaction을 Feature 간의 잠재 벡터의 내적으로 모델링 → 좋은 결과를 나타냄

    ● Deep Neural Network 역시 복잡한 Feature Interaction을 학습할 수 있는 잠재력을 지님

 

○ DeepFM 논문은

    ● Feature Engineering 없이

    종단 간 방식으로

    모든 차원의 Feature Interaction을 학습할 수 있는 학습 모델을 제안

 

○ DeepFM

    ● FM 모델: 저 차원의 Feature Interaction 모델화

        - 2차원 특성 상호작용을 학습 → 단순 관계 포착 → 특성 쌍들이 어떻게 상호작용하는지 자동 학습 → 모델에 반영

    ● DNN: 고차원 Feature Interaction 모델화

       - 복잡한 상호작용을 포착(다층 신경망 구조를 통해 더 복잡하고 비선형적 특성 관계 모델이 학습)

    ● Feature Engineering 없이 End-to-End 학습

       - 특성 상호작용을 별도로 정의하지 않고도 학습할 수 있는 구조를 갖추게 됨

       - So, DeepFM 모델은 End-to-End 방식으로 데이터 입력에서 출력까지 모든 과정을 학습

          & 추가적인 Feature Engineering이 필요하지 않게 됨

    ● Wide 파트와 Deep 파트는 같은 Input과 임배딩 벡터를 공유 → 효율적이게 훈련 가능

    ● 본 연구는 DeepFM를 사용해 CTR 예측을 위한 기존 모델보다 개선된 점을 보여줌

 

1. Proposed Approach

○ n개의 인스턴스를 가진 학습 데이터셋 (X, y)가 있다고 가정

    ● X : 사용자 - 아이템 한 쌍을 표현하는 m개의 필드 데이터 레코드(범주형과 연속형 변수가 포함 가능)

        - 범주형 변수: 원-핫인코딩 벡터로 표현 → (x, y)로 표현 가능 대개 x는 고차원이고 매우 희소함

    ● y ∈ {0, 1} : 사용자 클릭을 가리키는 라벨

y={1,if a user clicked the item0,otherwise

 

1-2 DeepFM

w_i : i 번째 feature에 대한 스칼라 값(1차원의 중요도 측정)

V_i : 잠재 벡터(다른 features과의 상호작용 영향 측정)

    ● FM Componenet V_i  → 2차원 Feature Interaciton 모델화

    ● Deep Componenet V_i → 고차원 Feature Interaction 모델화

○ w_i, V_i를 포함하는 모든 파라미터들과 W^{(l)}, b^{(l)}를 포함하는 네트워크 파라미터들은 아래 통합 예측 모델에서 함께 훈련됨

y^=sigmoid(yFM+yDNN)

 

1-2-1 FM Componenet

각 Feature 잠재 벡터의 내적으로 쌍으로(2차원) Feature Interaction을 모델화

○ IF 데이터셋 희소 → 훨씬 더 효과적으로 2차원 Feature Interaction 포착 가능

    ● 즉, FM은 데이터가 희소해도 학습된 임베딩을 통해 관찰되지 않은 특성 쌍의 관계를 추론 가능

    ● e.g. IF 특정 사용자와 콘텐츠 조합에 대한 직접적인 데이터가 없음

              But 비슷한 사용자나 콘텐츠에 대한 정보를 통해 학습된 임베딩을 이용

              Then 희소한 데이터에서도 예측 가능

○ FM은 잠재 벡터로 내적 So, Feature Interaction에 훨씬 더 효율적 & 유연

○ FM output: Addition Unit과 Inner Product Unit의 합으로 아래와 같이 표현

    ● Addition Unit < w, x> : 1차원 Features 중요도 반영

    ● Inner Product Unit: 2차원 Feature Interactions의 영향을 나타냄

yFM=<w,x>+ji=1dj2=j1+1d<Vi,Vj>xj1xj2

 

 

1-2-2 Deep Component

○ 고차원 Feature Interactions를 학습하기 위한 Feed-forward Neural Network

데이터 레코드(벡터)는 NN에 입력

○ But CTR 예측을 위한 Raw Feature Input 벡터매우 희소, 고차원, 범주+연속형, 필드로 그룹화

    ● So, Input vector를 Embedding Layer로 압축 → 저차원의 Dense한 실수 벡터로 가공해야 함

    ● IF 안함? 과도한 훈련과정을 가지게 됨

○ Deep Component의 Embedding Layer의 특징

    ● Input 값(Field Vector)의 길이는 서로 다를 수 있음

    ● But Embedding 크기 = k로 동일

    ● FM 모델에서 Latent Feature Vector(V)

        - Input값(Field Vector)를 Embedding Vector로 압축하는 데 사용

        - 학습되는 네트워크 가중치로의 역할

 

○ Embedding Layer의 Output

a(0)=[e1,e2,...,em]

    ● e_i : i 번째 필드 임베딩 → 임베딩을 통해 차원 축소된 실수 벡터로 변환

    ● m : 필드 수

    ● a^{(0)}: DNN의 첫 번째 입력으로 공급 → 이후 각 층을 거쳐 고차원 상호작용을 학습

 

○ Forward Process(DNN의 은닉층을 거쳐 전달되는 흐름을 설명)

a(l+1)=σ(W(l)a(l)+b(l))

    ● l : 레이어 깊이

    ● sigma: 활성 함수(ReLU나 Sigmoid 같은 비선형 함수를 사용해 각 층에서 복잡한 패턴을 학습하도록)

    ● a^{(l)}, W^{(l)}, b^{(l)}: Output, 모델 가중치, l 번째 층의 편향

 

○ Dense한 실수 Feature 벡터 형성되면 CTR 예측을 위해 Sigmoid 함수로 표현

yDNN=σ(W|H|+1aH+b|H|+1)... |H| = 은닉층 수

○ FM Componenet와 Deep Component는 같은 Feature Embedding을 공유한다는 측면에서 아래의 이점

    ● Raw Feature에서 저차원 & 고차원 Feature Interaction 모두 학습

    ● 전문적인 Feature Engineering 불필요

 

2. RelationShip with the Other NNs

○ 기존 연구들과 본 논문이 제안하는 Deepfm을 비교 분석하면 다음과 같은 결과를 볼 수 있음

○ FNN(Feed-Forward Neural Network)

    ● FM을 사전 초기화하는 모델

    ● 한계

        1) Embedding 파라미터는 FM의 영향을 받을 수 있음

        2) 사전 훈련단계에서 도입된 오버헤드로 효율성 저하

    ● DeepFM의 경우

        1) 사전 훈련 불필요

        2) 저차원 및 고차원 모두 Feature Interaction 학습

○ PNN

    ● 고차원 Feature Interaction을 포착하기 위해 Embedding 계층과 첫 은닉 계층 사이에 Product 계층 추가 모델

    ● Product 동작에 따라: IPNN(내적) , OPNN(외적),  PNN(내외적)으로 구분

    ● 계산 효율을 위해 내적(뉴런 제거) & 외적(차원압축) 모두 근사 계산

    ● 한계

        1) 벡터 외적에서 정보 손실 多

        2) PNN의 내적은 계산 복잡도 高

        3) 저차원 Feature Interaction 무시됨

    ● DeepFM의 경우

        - Product 계층의 Output이 오직 뉴런 1개만 있는 최종 출력 계층에만 연결 

 

3. Experiments

3-1 Experiment Setup

○ Dataset

    ● Criteo DataSet: 4천5백 개의 사용자 클릭 레코드 데이터셋

        - 13개 연속형 특성 + 26개 범주형 특성

    ● Company Dataset: 회사 앱스토어의 게임 센터에서 7일 연속 사용자 클릭 기록

 

3-2 Performance Evaluation(유효성 & 효율성 비교)

○ FNN의 사전 훈련 효율 낮음

○ IPNN과 PNN 속도가 GPU 상에서 높음 But 내적 계산 비용 多

○ DeepFM이 CPU와 GPU 상에서 가장 효율적

○ Effectiveness Comparison: DeepFM 모델이 기존 모델들보다 우수하다


이렇게 리뷰가 끝났고 저희가 적용할 모델에 대하여 알아보겠습니다.

[적용할 과제]

사용자 Input: 좋아하는 배우, 좋아하는 장르

추천 Output: 유사한 뮤지컬 추천

사용 모델: Deepfm

필요 데이터

    ● 뮤지컬 제목, 출연 배우, 장르, 기타 특성(공연장, 가격, 시간 등)

y값(타깃값): 예매량

y값을 사용할 때
    ● 목표: 입력 특성(좋아하는 배우, 장르)을 바탕으로 예매량이 높은 뮤지컬을 추천
    ● 계산 과정
        - 배우, 장르, 시작, 종료일 등 특성들을 입력받아 예매량과의 관계 학습
        - 특정 배우와 장르를 선호하는 사용자가 예매할 확률이 높은 뮤지컬 예측
    ● 출력값: 예매량(연속값) So, 회귀 모델

y값을 예매량이 아닌 다른 대안으로 할 수 있는 것
○ 예매확률 | 인기지수
    ● e.g. 기간 7일, 좌석 10,000개, 총 예매량 65,000개
        → 예매 확률 = 65,000/ 70,000
○ 예매량: 모든 사용자에게 동일한 가중치로 계산
○ 예매 확률: 특정 배우, 장르에 대해 더 높은 예매 확률을 가지는 뮤지컬 추천에 효과적일 수 있음

예매 확률 계산
○ 예매확률 = 예매량 / 전체 좌석수
○ 인기 지수 = 예매량의 상대적 랭킹
○ DeepFM 모델이 예매 확률(인기 지수)을 타깃값으로 학습
   → 특정 배우, 장르가 반영된 뮤지컬 중 예매 확률이 높은 항목 추천
○ 모델 유형
    ● IF 예매 확률이 연속값: 회귀
    ● IF 예매 확률을 특정 범위로 구간화: 분류 모델

○ FM 컴포넌트와 Deep 컴포넌트

    ● FM 컴포넌트: 명시적으로 1차/2차 상호작용 모델링 & 계산 간단

        a) 1차 상호작용: 각 특성의 독립적인 영향 모델링

        b) 2차 상호작용: 특성 쌍 간의 상호작용을 모델링

    ● Deep 컴포넌트

        a) 여러 층의 비선형 변환을 통해 고차원의 복잡한 상호작용을 암시적으로 학습

예시를 통한 차이
○ FM 컴포넌트(특성들 간의 쌍별 상호작용)
    ● 사용자 나이(20대)와 선호 장르(로맨스)의 상호작용
    ● 공연시간(저녁)과 요일(금요일)의 상호작용
    ● FM 컴포넌트에서의 결론 예시:
        a) "20대 관객이 로맨스 뮤지컬을 선호"
        b) "금요일 저녁 공연이 인기가 많다"
○ Deep 컴포넌트(고차원적 상호작용)
    ● 사용자 나이(20대), 선호장르(로맨스), 공연시간(저녁), 요일(금요일), 배우 인지도(높음)의 복합적 상호작용  
    ● 여러 층의 신경망을 통해 비선형적 패턴 학습 → 특성들 간의 복잡한 관계 포착 가능
    ● Deep 컴포넌트에서의 결론 예시
        a) "20대 여성이 금요일 저녁에 유명 배우가 출연하는 로맨스 뮤지컬은 선호하지만, 티켓 가격이 일정 수준을 넘으면 선호도가 급격히 떨어진다"
FM은 2차원적(두 특성 간) 상호작용을 찾고, Deep은 다차원적 상호작용을 찾는다
FM은 선형적 상호작용을 찾고, Deep은 비선형적 상호작용을 찾는다.
FM에서 두 개의 특성 사이의 관계를 학습하는 것이 2차 상호작용
각 특성 쌍의 영향력이 독립적으로 더해지게 됨

 

○ y값(예매량을 사용할 때 각 컴포넌트 계산 방식)

    ● FM 컴포넌트

        a) 1차 상호작용: 각 특성이 예매량에 미치는 직접적인 영향 학습

        b) 2차 상호작용: 특성 쌍이 예매량에 미치는 영향 학습(e.g. 특정 배우와 장르 조합이 예매량에 미치는 영향)

    ● Deep 컴포넌트

        a) 입력 특성들의 복잡한 비선형 관계가 예매량에 미치는 영향 학습

        b) 여러 특성들의 고차원적인 상호작용이 예매량에 어떤 영향을 미치는지 포착

 

[추천 과정]

[요약]

1. 입력 데이터(DeepFM 모델의 입력으로 들어갈 데이터)
사용자 선호 정보(Input): 배우, 장르
뮤지컬 정보: 배우, 장르, 가격, 시작, 종료일 등
※ 배우, 장르 같은 카테고리형 특성 → 임베딩 → 벡터로 변환

2. 특성 임베딩
배우/장르 임베딩: 각 배우/장르는 고유한 임베딩 벡터로 변환
뮤지컬의 다른 특성: 임베딩 → 밀집 벡터로 변환

3. FM Part와 DNN part로 분리
FM 컴포넌트: 배우-장르 등의 2차원 상호작용 모델링
DNN 컴포넌트: 여러 특성이 상호작용하는 복잡한 패턴 학습
                            (배우와 장르가 다른 특성들과 어떤 관계를 가지는 지 포착)

4. 임베딩 벡터 합성 및 네트워크 입력
○ FM Input: 임베딩 벡터들이 내적을 통해 2차원 상호작용 계산
    ● e.g. '배우 A'와 '장르 B'가 얼마나 연관성 있는지 나타내는 값 생성
○ DNN Input: 배우, 장르와 같은 특성들이 다른 특성들과 어떻게 복잡하게 결합되어 있는지 학습

5. FM 및 DNN 네트워크 계산
○ FM 계산: 배우, 장르 2차원 상호작용 학습(단순 패턴, 연관성 포착)
○ DNN :예측 점수 계산 → 배우, 장르가 여러 특성과 복잡한 상호작용하는 방식 반영

6. 결론(출력)
FM과 DNN의 예측 점수가 합쳐져 예매 확률 계산 → 사용자에게 추천 점수로 나타남 → 높은 점수 뮤지컬을 추천

1. 데이터 전처리

    ● 범주형: 원-핫 인코딩 변환

    ● 연속형: 정규화

2. DeepFM 모델 학습

2-1 FM 컴포넌트

○ 1차 상호작용

    ● Input: 각 특성의 원-핫 인코딩 | 수치값(의미: 각 특성(배우, 장르 등)이 뮤지컬 선호도에 미치는 독립적 영향)

    ● Output: 스칼라 값(의미: 모든 특성의 독립적인 영향의 합산 점수)

    ● 유의미한 데이터:

            1) 각 특성의 가중치(w_j): 특성의 개별적 중요도

            2) 가장 큰 가중치를 가진 특성: 예측에 가장 큰 영향을 미치는 단일 특성

    ● 계산과정

y1차=w0+i=1nwixi

 

○ 2차 상호작용

    ● Input: 각 특성의 임베딩 벡터(의미: 특성 간 상호작용)

    ● Output: 스칼라 값(의미: 모든 특성 쌍 상호작용의 합산 점수)

    ● 유의미한 데이터  

          1) 특성 쌍의 상호작용 강도: 특정 배우- 특정 장르 조합이 얼마나 선호되는가

          2) 가장 강한 상호작용을 보이는 특성 쌍: 예측에 가장 큰 영향을 미치는 특성 조합:    

    ● 계산 과정

y2차=i=1nj=i+1nvi,vjxixj

 

2-2 Deep 컴포넌트

○ Input: 모든 특성의 임베딩 벡터를 연결한 벡터(의미: 모든 특성의 복잡한 상호작용)

○ Output: 스칼라 값(의미: 고차원적인 패턴을 고려한 선호도 점수)

○ 유의미한 데이터

    ● 활성화된 뉴런: 어떤 고수준 패턴 | 특성 조합이 중요한지 파악

    ● 가중치 행렬: 어떤 특성 조합이 최종 예측에 큰 영향을 미치는지 분석

○ 계산 과정

    ● 첫 번째 은닉층

a(1)=ReLU(W(1)x+b(1))

    ● 두 번째 은닉층

a(2)=ReLU(W(2)a(1)+b(2))

    ● 출력층

ydeep=W(3)a(2)+b(3)

3. 최종 출력 계산

○ Input: FM 컴포넌트와 Deep 컴포넌트의 출력(의미: 각 컴포넌트에서 계산된 선호도 점수)

○ Output: 0과 1 사이의 출력값(의미: 사용자가 해당 뮤지컬을 선호할 확률)

○ 계산 과정

yfinal=σ(y1차+y2차+ydeep)

4. 유사도 계산 및 추천 리스트 생성

○ 사용자 입력(좋아하는 배우, 장르) 기반으로 모든 뮤지컬에 대해 선호도 확률 계산

○ 선호도확률이 높은 순 뮤지컬 정렬

○ 상위 N개의 뮤지컬을 추천 리스트로 제공

5. 결론(+ 주요 인사이트)

개별 특성 중요도: 어떤 배우나 장르가 사용자의 선호도에 가장 큰 영향을 미치는지

특성 간 상호작용: 어떤 배우와 장르 조합이 특히 선호되는지

복잡한 패턴: 어떤 특성이 복합적으로 작용해 나타나는 선호도 패턴

추천의 다양성: FM과 Deep컴포넌트 결합으로 단순한 특성 매칭뿐 아닌 복잡한 패턴도 고려한 추천 가능