소프트맥스 학습

이전 페이지에서는 추천 시스템을 위해 심층신경망에 소프트맥스 레이어를 통합하는 방법을 설명했습니다. 이 페이지에서는 이 시스템의 학습 데이터를 자세히 살펴봅니다.

학습 데이터

소프트맥스 학습 데이터는 쿼리 특성 \(x\) 및 사용자가 상호작용하는 항목의 벡터 (확률 분포로 표시됨 \(p\))로 구성됩니다. 다음 그림에서는 파란색으로 표시되어 있습니다. 모델의 변수는 여러 레이어의 가중치입니다. 다음 그림에서는 주황색으로 표시됩니다. 일반적으로 모델은 확률적 경사하강법의 모든 변형을 사용하여 학습됩니다.

소프트맥스 심층신경망의 학습을 강조하는 이미지

음성 샘플링

손실 함수는 두 벡터(각각 정답과 모델의 출력)를 비교하므로 코퍼스 크기 \(n\) 가 너무 크면 손실 경사 (단일 쿼리 \(x\))를 계산하는 데 비용이 많이 들 수 있습니다.

양의 항목(정답 벡터에서 활성 상태인 항목)에서만 경사를 계산하도록 시스템을 설정할 수 있습니다. 그러나 시스템이 양의 쌍으로만 학습하는 경우 아래와 같이 모델이 접히는 문제를 겪을 수 있습니다.

폴딩
쿼리를 접은 상태로 보이는 평면 이미지, 쿼리를 나타내는 정사각형 3개, 항목을 나타내는 원 그룹마다 색상이 다르고 쿼리는 동일한 그룹의 항목과만 상호작용합니다. 다음 그림에서 각 색상은 쿼리 및 항목의 다른 카테고리를 나타낸다고 가정합니다. 각 쿼리 (정사각형으로 표시됨)는 대부분 동일한 색상의 항목 (원으로 표현됨)과 상호작용합니다. 예를 들어 YouTube에서 각 카테고리는 다른 언어로 간주합니다. 일반적으로 사용자는 특정 언어 하나의 동영상과 상호작용합니다.

모델은 특정 색상의 쿼리/항목 임베딩을 서로 비교하여 어떻게 배치하는지 (이 색상 내에서 유사성을 올바르게 포착)하는 방법을 학습할 수도 있지만, 우연히 동일한 색상의 임베딩이 동일한 영역에 배치될 수도 있습니다. 접기라고 하는 이 현상은 허위 추천으로 이어질 수 있습니다. 쿼리 시 모델이 다른 그룹의 상품 최고 점수를 잘못 예측할 수 있습니다.

제외 예시는 특정 검색어와 '관련 없음'이라는 라벨이 지정된 항목입니다. 학습 도중 모델의 부정적인 예를 보여주면 여러 그룹의 임베딩이 서로 멀리 푸시되어야 한다는 것을 모델에 알릴 수 있습니다.

경매를 계산하는 데 모든 항목을 사용하거나 (비용이 많이 들 수 있음) 포지티브 항목만 (모델이 접히기 쉬운) 항목을 사용하는 대신 음수 샘플링을 사용할 수 있습니다. 더 정확하게 말하면 다음 항목을 사용하여 근사 경사를 계산합니다.

  • 모든 포함 항목 (타겟 라벨에 표시되는 항목)
  • 제외 항목 샘플(\(j\) \({1, …, n}\))

네거티브를 샘플링하는 방법에는 여러 가지가 있습니다.

  • 균일하게 샘플링할 수 있습니다.
  • 점수가 높은 항목 j에 더 높은 확률을 줄 수 있습니다 \(\psi(x) . V_j\). 직관적으로 이들은 경사에 가장 크게 기여하는 예시입니다. 이 예를 하드 네거티브라고 합니다.

행렬 분해 및 소프트맥스 비교

DNN 모델은 행렬 분해의 많은 제한사항을 해결하지만 일반적으로 학습 및 쿼리 비용이 더 많이 듭니다. 아래 표에는 두 모델 간의 중요한 차이점이 요약되어 있습니다.

행렬 분해 소프트맥스 DNN
쿼리 특성 포함하기 쉽지 않음 포함할 수 있습니다.
콜드 스타트 용어가 아닌 쿼리 또는 항목을 쉽게 처리하지 않습니다. 일부 휴리스틱을 사용할 수 있습니다 (예: 새 쿼리의 경우 유사한 쿼리의 평균 임베딩). 새로운 쿼리를 쉽게 처리합니다.
폴딩 WALS에서 관찰되지 않는 가중치를 조정하여 접기를 쉽게 줄일 수 있습니다. 접는 경향이 있습니다. 음수 샘플링 또는 중력과 같은 기술을 사용해야 합니다.
학습 확장성 매우 큰 코퍼스 (예: 수억 개의 항목)로 쉽게 확장 가능하지만 입력 행렬이 희소한 경우에만 가능합니다. 매우 큰 코퍼스로 확장하기가 더 어렵습니다. 해싱, 네거티브 샘플링 등 일부 기술을 사용할 수 있습니다.
제공 확장성 임베딩 U, V는 정적이며, 후보 세트를 사전 계산하여 저장할 수 있습니다. 항목 임베딩 V는 정적이며 저장할 수 있습니다.

일반적으로 쿼리 임베딩은 쿼리 시간에 계산되어야 하므로 모델 서빙 비용이 더 많이 듭니다.

요약:

  • 행렬 분해는 일반적으로 대규모 코퍼스에 더 적합합니다. 확장하기 쉽고 쿼리 비용이 저렴하며 접기가 발생할 가능성이 낮습니다.
  • DNN 모델은 맞춤설정된 환경설정을 더 잘 포착할 수 있지만 학습하기가 더 어렵고 쿼리 비용이 더 많이 듭니다. DNN 모델은 더 많은 특성을 사용하여 관련성을 더 잘 파악할 수 있으므로 스코어링에 있어 행렬 분해보다 DNN 모델이 더 좋습니다. 또한 일반적으로 사전 필터링된 후보 집합의 관련성을 중요하게 생각하므로 DNN 모델의 경우 일반적으로 접을 수 있습니다.