Bir yerleştirme modeliniz olduğunu varsayalım. Bir kullanıcıya hangi öğeleri önereceğinize nasıl karar verirsiniz?
Sunum sırasında, bir sorgu verildiğinde aşağıdakilerden birini yaparak başlarsınız:
- Matris faktörleştirme modelinde sorgu (veya kullanıcı) yerleştirme statik olarak bilinir ve sistem bunu kullanıcı yerleştirme matrisinden kolayca arayabilir.
- DNN modeli için sistem, ağı özellik vektöründe çalıştırarak \(x\) \(\psi(x)\)sorgu yerleştirmeyi yayın zamanında hesaplar \(x\).
\(q\)sorgusunu yerleştirdikten sonra, yerleştirme alanına\(V_j\) yakın \(q\) yerleştirilmiş öğeleri arayın. Bu, en yakın komşu problemidir. Örneğin, benzerlik puanına göre ilk bin öğeyi döndürebilirsiniz \(s(q, V_j)\).
İlgili öğe önerilerinde benzer bir yaklaşım kullanabilirsiniz. Örneğin, kullanıcı bir YouTube videosu izlerken sistem önce söz konusu öğenin yerleştirilmesini arayabilir, ardından yerleştirme alanında yakın olan diğer öğelerin yerleştirilmelerini\(V_j\) arayabilir.
Büyük ölçekli alma
Sistem, yerleştirme alanındaki en yakın komşuları hesaplamak için her potansiyel adayı kapsamlı bir şekilde puanlayabilir. Kapsamlı puanlama, çok büyük korpuslar için pahalı olabilir ancak daha verimli hale getirmek amacıyla aşağıdaki stratejilerden birini kullanabilirsiniz:
- Sorgu yerleştirme statik olarak biliniyorsa sistem, her sorgu için en iyi adayların listesini önceden hesaplayıp saklayarak kapsamlı puanlamayı çevrimdışı olarak gerçekleştirebilir. Bu, ilgili öğe önerisi için yaygın bir uygulamadır.
- Yaklaşık en yakın komşuları kullanın. Google, GitHub'da ScaNN (Scalable Nearest Neighbors) adlı açık kaynak bir araç sağlar. Bu araç, geniş ölçekte verimli vektör benzerliği araması yapar.