DNC(Deep & Cross Network)는 추천 시스템에서 사용자와 아이템 간의 상호작용을 예측하는 데 사용되는 딥러닝 모델로, 특히 이커머스 데이터에서 사용자 행동을 예측하는 데 유용합니다. DNC는 Cross Network와 Deep Network 두 부분으로 나뉘며, 이 중 Cross Network는 피처 간의 상호작용을 명시적으로 모델링하는 역할을 합니다. 이번 답변에서는 이커머스 데이터를 예시로 들어 Cross Network의 작동 방식을 자세히 설명하겠습니다.
이커머스 데이터에서는 사용자의 나이, 성별, 최근 구매 내역, 아이템의 카테고리, 가격 등 다양한 피처가 있으며, Cross Network는 이러한 피처들 간의 복잡한 상호작용(예: "20대 여성 사용자가 특정 카테고리의 아이템을 구매할 확률")을 학습하는 데 적합합니다.
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)을 사용하여 새로운 출력을 생성함으로써 피처 간의 상호작용을 쌓아갑니다. 층이 깊어질수록 더 높은 차수의 상호작용을 학습할 수 있습니다.
이제 이커머스 데이터를 예시로 Cross Network의 작동 방식을 설명하겠습니다.
사용자의 나이, 성별, 아이템의 카테고리를 피처로 사용한다고 가정합니다. 예를 들어:
이 피처들을 벡터로 표현하면:
[ \mathbf{x}_0 = \begin{bmatrix} 25 \ 0 \ 1 \end{bmatrix} ]
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} ]
이제 수식을 단계별로 계산합니다:
[ \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} ]
[ \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} ]
[ \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} ]
[ \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차 상호작용을 반영한 결과입니다.
이제 (\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} ]
수식을 다시 적용합니다:
[ \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} ]
[ \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} ]
[ \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} ]
[ \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})이며, 이는 더 높은 차수의 상호작용을 반영합니다.
위 예시에서:
이렇게 Cross Network는 층을 거칠수록 피처 간의 고차 상호작용을 명시적으로 모델링하여, 사용자 행동 예측(예: 클릭, 구매 확률)에 유용한 정보를 제공합니다. 이커머스에서는 이러한 상호작용을 통해 개인화된 추천을 제공하거나, 특정 사용자 그룹의 선호도를 파악하는 데 활용할 수 있습니다.
Cross Network는 DNC의 중요한 구성 요소로, 피처 간의 상호작용을 효율적으로 학습하여 추천 시스템의 성능을 향상시킵니다. 이커머스 데이터 예시를 통해 각 층에서 피처가 어떻게 변환되고 상호작용이 쌓이는지 확인할 수 있었습니다. Cross Network는 특히 피처 간 관계가 복잡한 데이터에서 강력한 성능을 발휘하며, 추천 시스템 외에도 다양한 머신러닝 작업에 적용될 수 있습니다.