전통문화대전망 - 전통 미덕 - 추천 시스템의 순위 기술
추천 시스템의 순위 기술
산업 응용 분야에서 추천 시스템은 일반적으로 회상과 순위라는 두 부분으로 나눌 수 있습니다.
회상 단계는 이전 기사에서 언급된 다양한 추천 알고리즘에 해당합니다. 예를 들어, 데이터에 따르면 Spotify는 호평을 받는 Discover Weekly 재생 목록을 생성하기 위해 다음을 포함하여 최소 세 가지 알고리즘을 사용합니다.
이러한 각 알고리즘은 고유한 특성을 가지고 있습니다. 오디오 분석은 분명히 콜드 스타트 문제를 해결하는 데 사용될 수 있으며 음악 리뷰의 NLP 처리는 각각 독립적으로 실행되고 자체 결과를 제공할 수 있습니다. 독립성이 있으므로 알고리즘 수를 늘리거나 줄일 수 있으며 각 알고리즘은 독립적으로 반복적으로 변경할 수 있습니다.
이 프로세스는 수천만 개의 항목에서 수백, 수천 개의 후보 세트를 필터링한 다음 정렬 단계에서 각 사용자별로 30곡을 선택합니다. 이러한 정렬은 함수로 이해될 수 있는데, 입력은 사용자, 아이템, 환경이고 출력은 0~1 사이의 점수로 가장 높은 점수를 받은 노래를 가져옵니다. 이 프로세스를 흔히 CTR 추정이라고 합니다.
이 기사에서는 이 "함수"의 일반적인 형태와 기본 작동에 대해 설명합니다.
가장 간단한 것은 일반화된 선형 모델인 로지스틱 회귀입니다.
[3, 1]과 같은 특정 사용자의 사용자 초상화(벡터)를 가져와 [4, 0]과 같은 특정 항목의 항목 초상화와 결합합니다. 컨텍스트 [0, 1, 1]을 나타내는 벡터는 [3, 1, 4, 0, 0, 1, 1]을 가져옵니다. 사용자가 항목과 접촉한 경우 레이블은 1입니다. 긍정적인 샘플이며 사용자는 "건너뛸" 수 있습니다. "인기가 있지만 사용자에게 연락되지 않은 항목이나 항목은 부정적인 샘플로 사용되며 라벨은 0이며 다음 방정식이 적합합니다.
x 가중치의 각 요소에 해당하는 위 벡터는 절편입니다. 손실 함수는 다음과 같습니다.
여기서 는 샘플의 label0 또는 1이고 모델에서 예측한 0과 1 사이의 숫자입니다.
모델 훈련을 완료하기 위해 훈련 샘플에 맞게 이 손실 함수를 줄임으로써 모델은 채점을 완료하기 위한 새로운 데이터를 예측하는 데 사용됩니다. 교육 과정은 sklearn의 LogisticRegression을 참조하여 쉽게 완료할 수 있습니다.
기존 LR은 대량의 데이터를 오프라인으로 일괄 처리할 수만 있고 대규모 온라인 데이터 흐름을 효과적으로 처리할 수 없습니다. 모델 업데이트는 하루 이상 걸릴 수 있는데 이는 시기적절하지 않습니다. 2013년에 Google은 온라인 로지스틱 회귀 알고리즘인 Follow The Regularized Leader(FTRL)을 제안했습니다. 이 방법은 다양한 시스템 엔지니어링 최적화와 결합하여 로지스틱 회귀의 목적 함수를 수정하므로 모델의 매개변수가 각 온라인 데이터 포인트에서 동적으로 업데이트될 수 있습니다.
인터넷에서 libftrl-python과 같은 FTRL의 다양한 오픈 소스 구현을 찾을 수 있습니다.
FM과 FFM은 각각 Factorization Machine과 Field-aware Factorization Machine의 약어입니다.
일반화된 선형 모델인 LR은 특징 벡터와 레이블 간의 비선형 관계를 처리하는 데 어려움을 겪습니다. 이때 특징 조합이 필요합니다. 예를 들어 선형 모델을 사용하여 다양한 대략적인 직사각형 모양의 면적을 예측할 수 있습니다. 당연히 이때는 좋은 모델을 학습할 수 없습니다. 새로운 기능이 추가되어 좋은 결과를 얻을 수 있습니다.
실제 응용에서는 특징 벡터의 차원이 매우 높아 위의 예처럼 의미 있는 조합을 직접적으로 보기는 어렵습니다. 모든 특징 조합을 쌍으로 고려하면 선형 회귀 방정식은 다음과 같습니다. :
원래 특성의 가중치 외에도 각 특성 조합에 해당하는 가중치도 학습해야 합니다. 그러나 매개변수 학습에는 합이 0이 아닌 많은 수의 샘플이 필요합니다. 원-핫 인코딩과 같은 이유로 인해 희소성으로 인해 이러한 요구 사항을 달성할 수 없으며, 훈련 샘플이 부족하면 부정확성이 발생하여 모델 품질에 영향을 미칩니다.
해결책은 행렬 분해를 사용하는 것입니다. 추천 시스템에서는 user_item_matrix를 분해하여 사용자와 아이템이 스스로를 나타내는 저차원 벡터를 학습합니다. 그러면 여기의 상황은 이것과 비교될 수 있는데, 특징 조합의 모든 가중치는 (i * i) 형태의 행렬로 표현된다. 그러면 이의 i번째 행과 j번째 열의 값이 된다. 이 고차원 행렬은 분해를 통해 내적을 통해 얻을 수 있는 각 특징의 가중치에 대한 암시적 벡터를 얻을 수 있습니다. 이때 선형 방정식은 다음과 같습니다.
위 모델을 인수분해 기계라고 하며, 몇 가지 수학적 변환 및 처리를 거친 후 모델을 보다 효율적인 모델로 훈련하고 예측할 수 있습니다.
FM을 기반으로 누군가 Field-aware Factorization Machine을 제안했습니다.
예를 들어 사용자의 국가, country.uk 및 country.us 등을 나타내는 특징 벡터에는 200개 이상의 차원이 있으며, 이러한 200개 이상의 특징은 필드에 속하는 것으로 간주될 수 있다는 점입니다. 특징에 대한 잠재 벡터를 학습하려면 각 필드는 다음과 같아야 합니다. 해당 잠재 벡터가 학습되었습니다. 특징 조합 가중치는 필드에 대한 잠재 벡터에 필드에 대한 잠재 벡터를 곱하여 얻습니다.
이 방법이 더 효과적이며 예측 시간 복잡도가 증가합니다. 사용할 수 있는 오픈 소스 라이브러리 libffm의 구현이 있습니다.
광고 CTR 추정에 대한 Facebook의 접근 방식은 GBDT(Gradient Boosting Decision Tree) 및 LR 솔루션을 사용하는 것입니다.
원래 LR용으로 의도된 특징 벡터를 GBDT를 통해 필터링하고 결합하여 새로운 특징 벡터를 생성한 다음 이를 LR로 보내는 아이디어입니다. 그림에 표시된 대로:
통합 모델로서 GBDT는 여러 의사결정 트리를 사용하며 각 트리는 이전 트리의 잔차를 피팅하여 좋은 피팅 효과를 얻습니다. 샘플이 트리에 입력되면 각 노드의 조건에 따라 특정 리프 노드로 내려가며 이 노드의 값은 1로 설정되고 나머지는 0으로 설정됩니다. 예를 들어, 3개의 결정 트리가 훈련에 사용됩니다. 각 결정 트리에는 5개의 리프 노드가 있습니다. 샘플이 각 트리의 왼쪽에서 오른쪽으로 1, 2, 3번째 노드에 있으면 3개의 원-핫이 획득됩니다. 는 [1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0]이며 변환된 특징 벡터로 함께 이어집니다. 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0]을 LR 모델에 입력하여 점수를 구합니다.
이 모델은 Facebook의 광고 효과를 크게 향상시켰습니다. 출판된 논문에서는 GBDT 및 LR의 업데이트 빈도, 비율 연습 등을 포함한 다양한 엔지니어링 관행과 세부 사항도 논의되었습니다. 참조. GBDT를 구현하려면 오픈 소스 XGBoost 패키지를 사용할 수 있습니다.
Google은 Wide & Deep이라는 딥 와이드 모델을 사용하여 Google Play에서 앱을 추천합니다. 아래와 같이:
넓은 부분은 원래 기능을 기반으로 일부 기능 조합을 추가하는 일반화된 선형 모델입니다. 깊은 부분은 일부 희소한 모델에 대해 저차원 모델을 학습할 수 있는 피드포워드 신경망입니다. 특징의 밀집된 벡터에 Wide와 Deep의 정보를 추가하고 Sigmond를 사용하여 다음과 같이 표현되는 함수를 예측합니다.
Sigmond 함수는 Wide 부분의 가중치입니다. 는 Wide 부분의 결합된 특성을 나타내며 Deep입니다. 네트워크의 마지막 레이어의 출력은 선형 모델의 편향입니다.
공동 훈련을 위해 두 모델을 함께 배치합니다(각 모델을 별도로 훈련한 후 결과를 병합해야 하는 통합 훈련과는 다름). 서로의 단점(특성 추출의 어려움 및 해석 가능성 부족)을 보완합니다. ). 이 모델은 순수 Wide 모델에 비해 Google Play의 온라인 수익이 3.9% 증가했습니다. 구현을 위해서는 tensorflow/models 프로젝트를 참조하세요.