DNC와 Cross Network 개요

HanJu Han·2025년 2월 24일
0

추천 시스템

목록 보기
46/49

DNC(Deep & Cross Network)는 추천 시스템에서 사용자와 아이템 간의 상호작용을 예측하는 데 사용되는 딥러닝 모델로, 특히 이커머스 데이터에서 사용자 행동을 예측하는 데 유용합니다. DNC는 Cross NetworkDeep Network 두 부분으로 나뉘며, 이 중 Cross Network는 피처 간의 상호작용을 명시적으로 모델링하는 역할을 합니다. 이번 답변에서는 이커머스 데이터를 예시로 들어 Cross Network의 작동 방식을 자세히 설명하겠습니다.


1. DNC와 Cross Network 개요

  • DNC(Deep & Cross Network): 추천 시스템에서 사용자와 아이템의 상호작용(예: 클릭, 구매)을 예측하는 모델입니다. Cross Network와 Deep Network를 결합하여 피처 간의 상호작용과 비선형 관계를 학습합니다.
  • Cross Network: 피처 간의 상호작용을 명시적으로 모델링합니다. 여러 층을 거치면서 피처 간의 고차 상호작용을 점진적으로 학습합니다.
  • Deep Network: 피처의 비선형적인 관계를 학습하는 데 사용됩니다.

이커머스 데이터에서는 사용자의 나이, 성별, 최근 구매 내역, 아이템의 카테고리, 가격 등 다양한 피처가 있으며, Cross Network는 이러한 피처들 간의 복잡한 상호작용(예: "20대 여성 사용자가 특정 카테고리의 아이템을 구매할 확률")을 학습하는 데 적합합니다.


2. Cross Network의 수식

Cross Network는 여러 층으로 구성되며, 각 층은 다음과 같은 수식으로 표현됩니다:

[ \mathbf{x}_{l+1} = \mathbf{x}_0 \odot (\mathbf{w}_l \cdot \mathbf{x}_l + \mathbf{b}_l) + \mathbf{x}_l ]

여기서:

  • (\mathbf{x}_0): 초기 입력 피처 벡터
  • (\mathbf{x}_l): (l)번째 층의 출력
  • (\mathbf{w}_l): (l)번째 층의 가중치 행렬
  • (\mathbf{b}_l): (l)번째 층의 편향 벡터
  • (\odot): 요소별 곱셈

이 수식은 각 층에서 초기 입력 (\mathbf{x}_0)와 현재 층의 출력 (\mathbf{x}_l)을 사용하여 새로운 출력을 생성함으로써 피처 간의 상호작용을 쌓아갑니다. 층이 깊어질수록 더 높은 차수의 상호작용을 학습할 수 있습니다.


3. 이커머스 데이터 예시

이제 이커머스 데이터를 예시로 Cross Network의 작동 방식을 설명하겠습니다.

3.1. 피처 설정

사용자의 나이, 성별, 아이템의 카테고리를 피처로 사용한다고 가정합니다. 예를 들어:

  • 나이: 25세
  • 성별: 여성 (0으로 인코딩)
  • 아이템 카테고리: 의류 (1로 인코딩)

이 피처들을 벡터로 표현하면:

[ \mathbf{x}_0 = \begin{bmatrix} 25 \ 0 \ 1 \end{bmatrix} ]

3.2. Cross Network의 첫 번째 층 계산

Cross Network의 첫 번째 층에서 가중치 (\mathbf{w}_0)와 편향 (\mathbf{b}_0)을 다음과 같이 설정합니다:

[ \mathbf{w}_0 = \begin{bmatrix} 0.5 & 0.2 & 0.1 \ 0.3 & 0.4 & 0.2 \ 0.1 & 0.3 & 0.5 \end{bmatrix}, \quad \mathbf{b}_0 = \begin{bmatrix} 0.1 \ 0.2 \ 0.3 \end{bmatrix} ]

이제 수식을 단계별로 계산합니다:

  1. (\mathbf{w}_0 \cdot \mathbf{x}_0) 계산:

[ \mathbf{w}_0 \cdot \mathbf{x}_0 = \begin{bmatrix} 0.5 & 0.2 & 0.1 \ 0.3 & 0.4 & 0.2 \ 0.1 & 0.3 & 0.5 \end{bmatrix} \begin{bmatrix} 25 \ 0 \ 1 \end{bmatrix} = \begin{bmatrix} (0.5 \times 25) + (0.2 \times 0) + (0.1 \times 1) \ (0.3 \times 25) + (0.4 \times 0) + (0.2 \times 1) \ (0.1 \times 25) + (0.3 \times 0) + (0.5 \times 1) \end{bmatrix} = \begin{bmatrix} 12.5 + 0 + 0.1 \ 7.5 + 0 + 0.2 \ 2.5 + 0 + 0.5 \end{bmatrix} = \begin{bmatrix} 12.6 \ 7.7 \ 3.0 \end{bmatrix} ]

  1. 편향 (\mathbf{b}_0) 추가:

[ \mathbf{w}_0 \cdot \mathbf{x}_0 + \mathbf{b}_0 = \begin{bmatrix} 12.6 \ 7.7 \ 3.0 \end{bmatrix} + \begin{bmatrix} 0.1 \ 0.2 \ 0.3 \end{bmatrix} = \begin{bmatrix} 12.7 \ 7.9 \ 3.3 \end{bmatrix} ]

  1. (\mathbf{x}_0)와 요소별 곱셈:

[ \mathbf{x}_0 \odot (\mathbf{w}_0 \cdot \mathbf{x}_0 + \mathbf{b}_0) = \begin{bmatrix} 25 \ 0 \ 1 \end{bmatrix} \odot \begin{bmatrix} 12.7 \ 7.9 \ 3.3 \end{bmatrix} = \begin{bmatrix} 25 \times 12.7 \ 0 \times 7.9 \ 1 \times 3.3 \end{bmatrix} = \begin{bmatrix} 317.5 \ 0 \ 3.3 \end{bmatrix} ]

  1. (\mathbf{x}_0) 더하기:

[ \mathbf{x}_1 = \begin{bmatrix} 317.5 \ 0 \ 3.3 \end{bmatrix} + \begin{bmatrix} 25 \ 0 \ 1 \end{bmatrix} = \begin{bmatrix} 342.5 \ 0 \ 4.3 \end{bmatrix} ]

따라서 첫 번째 층의 출력은 (\mathbf{x}_1 = \begin{bmatrix} 342.5 \ 0 \ 4.3 \end{bmatrix})입니다. 이 출력은 나이, 성별, 아이템 카테고리 간의 2차 상호작용을 반영한 결과입니다.

3.3. Cross Network의 두 번째 층 계산

이제 (\mathbf{x}_1)을 입력으로 사용해 두 번째 층의 출력을 계산합니다. 가중치 (\mathbf{w}_1)과 편향 (\mathbf{b}_1)을 다음과 같이 설정합니다:

[ \mathbf{w}_1 = \begin{bmatrix} 0.4 & 0.1 & 0.2 \ 0.2 & 0.3 & 0.1 \ 0.3 & 0.2 & 0.4 \end{bmatrix}, \quad \mathbf{b}_1 = \begin{bmatrix} 0.2 \ 0.1 \ 0.4 \end{bmatrix} ]

수식을 다시 적용합니다:

  1. (\mathbf{w}_1 \cdot \mathbf{x}_1) 계산:

[ \mathbf{w}_1 \cdot \mathbf{x}_1 = \begin{bmatrix} 0.4 & 0.1 & 0.2 \ 0.2 & 0.3 & 0.1 \ 0.3 & 0.2 & 0.4 \end{bmatrix} \begin{bmatrix} 342.5 \ 0 \ 4.3 \end{bmatrix} = \begin{bmatrix} (0.4 \times 342.5) + (0.1 \times 0) + (0.2 \times 4.3) \ (0.2 \times 342.5) + (0.3 \times 0) + (0.1 \times 4.3) \ (0.3 \times 342.5) + (0.2 \times 0) + (0.4 \times 4.3) \end{bmatrix} = \begin{bmatrix} 137.0 + 0 + 0.86 \ 68.5 + 0 + 0.43 \ 102.75 + 0 + 1.72 \end{bmatrix} = \begin{bmatrix} 137.86 \ 68.93 \ 104.47 \end{bmatrix} ]

  1. 편향 (\mathbf{b}_1) 추가:

[ \mathbf{w}_1 \cdot \mathbf{x}_1 + \mathbf{b}_1 = \begin{bmatrix} 137.86 \ 68.93 \ 104.47 \end{bmatrix} + \begin{bmatrix} 0.2 \ 0.1 \ 0.4 \end{bmatrix} = \begin{bmatrix} 138.06 \ 69.03 \ 104.87 \end{bmatrix} ]

  1. (\mathbf{x}_0)와 요소별 곱셈:

[ \mathbf{x}_0 \odot (\mathbf{w}_1 \cdot \mathbf{x}_1 + \mathbf{b}_1) = \begin{bmatrix} 25 \ 0 \ 1 \end{bmatrix} \odot \begin{bmatrix} 138.06 \ 69.03 \ 104.87 \end{bmatrix} = \begin{bmatrix} 25 \times 138.06 \ 0 \times 69.03 \ 1 \times 104.87 \end{bmatrix} = \begin{bmatrix} 3451.5 \ 0 \ 104.87 \end{bmatrix} ]

  1. (\mathbf{x}_1) 더하기:

[ \mathbf{x}_2 = \begin{bmatrix} 3451.5 \ 0 \ 104.87 \end{bmatrix} + \begin{bmatrix} 342.5 \ 0 \ 4.3 \end{bmatrix} = \begin{bmatrix} 3794.0 \ 0 \ 109.17 \end{bmatrix} ]

두 번째 층의 출력은 (\mathbf{x}_2 = \begin{bmatrix} 3794.0 \ 0 \ 109.17 \end{bmatrix})이며, 이는 더 높은 차수의 상호작용을 반영합니다.


4. Cross Network의 의미

위 예시에서:

  • Layer 1은 나이, 성별, 아이템 카테고리 간의 2차 상호작용을 학습했습니다. 예를 들어, 나이와 성별의 조합이 아이템 카테고리에 미치는 영향을 반영합니다.
  • Layer 2는 3차 상호작용을 학습하여, 나이, 성별, 아이템 카테고리 간의 더 복잡한 관계를 포착합니다.

이렇게 Cross Network는 층을 거칠수록 피처 간의 고차 상호작용을 명시적으로 모델링하여, 사용자 행동 예측(예: 클릭, 구매 확률)에 유용한 정보를 제공합니다. 이커머스에서는 이러한 상호작용을 통해 개인화된 추천을 제공하거나, 특정 사용자 그룹의 선호도를 파악하는 데 활용할 수 있습니다.


5. 결론

Cross Network는 DNC의 중요한 구성 요소로, 피처 간의 상호작용을 효율적으로 학습하여 추천 시스템의 성능을 향상시킵니다. 이커머스 데이터 예시를 통해 각 층에서 피처가 어떻게 변환되고 상호작용이 쌓이는지 확인할 수 있었습니다. Cross Network는 특히 피처 간 관계가 복잡한 데이터에서 강력한 성능을 발휘하며, 추천 시스템 외에도 다양한 머신러닝 작업에 적용될 수 있습니다.

profile
시리즈를 기반으로 작성하였습니다.

0개의 댓글