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