이전 섹션에서는 행렬 분해를 사용하여 임베딩을 학습합니다. 행렬 분해의 몇 가지 제한사항은 다음과 같습니다.
- 부차 특성(즉, 부차 특성(예: 부차 특성) 사용의 어려움) 검색어 ID/항목 ID). 따라서 모델은 학습 세트에 있는 사용자 또는 항목입니다.
- 추천의 관련성. 앞서 말씀드린 것처럼 Colab 모든 사람에게 추천되는 경향이 있습니다. 특히 내적을 유사성 척도로 사용합니다. 광고 단위를 구체적으로 사용자 관심분야
행렬의 이러한 한계를 해결할 수 있는 심층신경망 (DNN) 모델 분해합니다. 쿼리 특성과 항목 특성을 쉽게 통합할 수 있는 DNN (네트워크 입력 레이어의 유연성 덕분에) 사용자의 구체적인 관심분야를 파악하여 추천을 제공합니다
추천용 소프트맥스 DNN
가능한 DNN 모델 중 하나는 softmax입니다. 이는 문제를 다음과 같은 멀티클래스 예측 문제로 처리합니다.
- 사용자 쿼리가 입력됩니다.
- 출력은 다음과 같은 크기의 확률 벡터입니다. 상호작용 확률을 나타내는 코퍼스 항목 각 항목마다 예를 들어 사용자가 특정 동영상을 클릭하거나 YouTube 동영상
입력
DNN에 대한 입력에는 다음이 포함될 수 있습니다.
- 밀집 특성 (예: 시청 시간 및 마지막 시청 이후 시간)
- 희소 기능 (예: 시청 기록 및 국가)
행렬 분해 접근 방식과 달리 선택할 수 있습니다. 입력 벡터를 x로 표시하겠습니다.
모델 아키텍처
모델 아키텍처는 모델의 복잡성과 표현력을 결정합니다. 히든 레이어와 비선형 활성화 함수 (예: ReLU)를 추가하여 모델이 데이터에서 더 복잡한 관계를 캡처할 수 있습니다. 하지만 또한 매개변수 수를 늘리면 대개 모델을 학습시키고 배포하는 서빙 비용이 더 많이 듭니다 디코더에서 가장 최근에 숨겨진 레이어 기준: \(\psi (x) \in \mathbb R^d\)
소프트맥스 출력: 예측 확률 분포
모델이 소프트맥스를 통해 마지막 레이어 \(\psi (x)\)의 출력을 매핑합니다. 확률 분포 \(\hat p = h(\psi(x) V^T)\)에 레이어를 추가합니다. 여기서,
- \(h : \mathbb R^n \to \mathbb R^n\) 는 소프트맥스 함수입니다. 제공: \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)
- \(V \in \mathbb R^{n \times d}\) 는 다음 요소의 가중치 행렬입니다. 소프트맥스 레이어도 있습니다.
점수 벡터를 매핑하는 소프트맥스 레이어 \(y \in \mathbb R^n\) 경우에 따라 로지트) 확률 분포입니다.
손실 함수
마지막으로 다음을 비교하는 손실 함수를 정의합니다.
- \(\hat p\): 소프트맥스 레이어의 출력 (확률 분포)
- \(p\): 사용자가 보유한 항목을 나타내는 정답 상호작용 (예: 사용자가 클릭하거나 시청한 YouTube 동영상) 이는 정규화된 멀티-핫 분포( 확률 벡터입니다.
예를 들어 교차 엔트로피 손실을 사용하여 두 개의 확률 분포가 있습니다.
소프트맥스 임베딩
항목 확률 \(j\) 은 다음과 같이 구합니다. \(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\), 여기서 \(Z\) 는 \(j\)에 종속되지 않는 정규화 상수입니다.
즉, \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\) 따라서 항목의 로그 확률은 \(j\) (가산 상수까지) 2차원 벡터의 내적을 \(d\) 쿼리 및 항목 임베딩으로 사용할 수 있습니다.
- \(\psi(x) \in \mathbb R^d\) 는 마지막 히든 레이어의 출력입니다. 이를 쿼리 \(x\)의 임베딩이라고 합니다.
- \(V_j \in \mathbb R^d\) 는 마지막 히든 레이어를 출력 j에 연결하는 가중치 벡터입니다. 이를 항목 \(j\)임베딩이라고 합니다.
DNN 및 행렬 분해
소프트맥스 모델과 행렬 분해 모델에서 모두 시스템은 임베딩 벡터 하나를 학습하여 \(V_j\) 항목당 \(j\)입니다. 일명 항목 임베딩 행렬 \(V \in \mathbb R^{n \times d}\) 행렬 분해는 이제 소프트맥스 레이어의 가중치 행렬입니다.
하지만 쿼리 임베딩은 다릅니다. 학습하는 대신 \(U_i\) 쿼리당 \(i\)1개의 임베딩이 있으면 시스템은 쿼리 특성에서 \(x\) 임베딩으로 \(\psi(x) \in \mathbb R^d\) 따라서 이 DNN 모델을 행렬의 일반화로 생각할 수 있습니다. 쿼리 측을 비선형 함수로 대체하는 분해 함수 \(\psi(\cdot)\)를 사용합니다.
아이템 기능을 사용할 수 있나요?
항목 측에도 같은 아이디어를 적용할 수 있나요? 즉, 머신러닝 모델을 임베딩 1개를 생성할 수 있다면 모델이 임베딩을 매핑한 비선형 함수를 항목 특성을 임베딩에 추가해야 할까요? 예. 그렇게 하려면 2개의 탑을 사용합니다. 두 개의 신경망으로 구성된 신경망
- 한 개의 신경망은 쿼리 특성을 매핑합니다. \(x_{\text{query}}\) : 임베딩 쿼리 \(\psi(x_{\text{query}}) \in \mathbb R^d\)
- 한 개의 신경망은 항목 특성을 매핑합니다. \(x_{\text{item}}\) 항목 퍼가기 \(\phi(x_{\text{item}}) \in \mathbb R^d\)
모델의 출력값은 \(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\) 이 모델은 더 이상 소프트맥스 모델이 아닙니다. 새로운 모델은 한 쌍당 값 1개 \((x_{\text{query}}, x_{\text{item}})\) 확률 벡터를 사용합니다 \(x_{\text{query}}\).