Matrisi çarpanlara ayırma

Matrisi çarpanlara ayırma, basit bir yerleştirme modelidir. Raporda A \(\in R^{m \times n}\)geri bildirim matrisi \(m\) , kullanıcı (veya sorgu) sayısı ile \(n\) öğe sayısı, model şunları öğrenir:

  • Kullanıcı yerleştirme matrisi \(U \in \mathbb R^{m \times d}\), Burada i satırı, i kullanıcısının yerleştirilmiş halidir.
  • Öğe yerleştirme matrisi \(V \in \mathbb R^{n \times d}\), burada j satırı, j öğesi için yerleştirilmiş öğedir.

Yinelenen film örneği kullanılarak matrisi çarpanlara ayırma görseli.

Yerleştirmeler, ürünün \(U V^T\) bir geri bildirim matrisi A’nın iyi bir tahminini verir. Lütfen \((i, j)\) girişi \(U . V^T\) , basit bir şekilde nokta çarpımıdır \(\langle U_i, V_j\rangle\) kullanıcı yerleştirmelerinin \(i\) \(A_{i, j}\)yakınında olmasını istediğiniz öğe \(j\)'yi seçin.

Hedef fonksiyonunu seçme

Sezgisel bir hedef fonksiyon, mesafenin karesidir. Bunu yapmak için tüm gözlemlenen giriş çiftlerinin kareleri toplamını en aza indirin:

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2.\]

Bu hedef fonksiyonda, yalnızca gözlemlenen çiftleri (i, j), diğer bir deyişle, geri bildirim matrisinde sıfır olmayan değerlerden daha yüksek olması gerekir. Ancak, yalnızca yüksek bir değer olması iyi bir fikir değildir; tüm değerleri içeren bir matris, mümkün olduğunca az kayba ve etkili önerilerde bulunamayacak bir model üretmesine yardımcı olur. ve bu kötü bir genelleme yapıyor.

Üç matrisin çizimi: Yalnızca gözlemlenen matris çarpanlarına ayırma, ağırlıklı çarpanlara ayırma ve Tekil Değer Ayrıştırma.

Gözlemlenmeyen değerleri sıfır olarak kabul edebilir ve tüm değerlerin toplamını alabilirsiniz. dahil edilir. Bu, toplamda kare Frobenius \(A\) ve yaklaşık \(U V^T\)arasındaki mesafe:

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2.\]

Bu ikinci dereceden problemi önceki Matrisin Tekil Değer Ayrıştırılması (SVD). Ancak, SVD de mükemmel bir çözüm değil çünkü gerçek uygulamalarda, matris \(A\) çok seyrek olabilir. Mesela Sauce and Spoon'un tablete geçiş süreciyle ilgili belirli bir kullanıcının görüntülediği tüm videolara kıyasla YouTube'daki Çözüm \(UV^T\) (modelin yaklaşık değerine karşılık gelir) büyük olasılıkla sıfıra yakın olur ve bu da kötü performansa neden olur. genelleme performansı.

Öte yandan, Ağırlıklı Matris Çarpanlarına Göre Çarpma işlevi, hedefi ayrıştırarak şu iki toplama böleriz:

  • Gözlemlenen girişlerin toplamı.
  • Gözlemlenmeyen girişlerin üzerindeki toplam (sıfır olarak değerlendirilir).

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2.\]

Burada \(w_0\) ,iki terimi ağırlıklandıran bir hiperparametredir iki tarafın da bir hedefe hükmetmemesini sağlamaktır. Bu hiperparametreyi ayarlamak çok önemlidir.

\[\sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2\]

burada \(w_{i, j}\) , i ve j sorgusu sıklığının bir fonksiyonudur.

Hedef fonksiyonu en aza indirme

Hedef işlevini en aza indirmek için yaygın olarak kullanılan algoritmalardan bazıları şunlardır:

  • Stokastik gradyan iniş (SGD) kayıp fonksiyonlarını en aza indirmek için kullanılan genel bir yöntemdir.

  • Ağırlıklı Alternatif En Küçük Kareler (WALS), bu konuda uzmanlaşmıştır olduğunu varsayalım.

Hedef, U ve V matrislerinin her birinde ikinci derecedendir. (Not: ancak, sorunun ortak bir dışbükey olmadığı anlamına gelir.) WALS başlangıçta yerleştirmeler rastgele düzenlenmeli, ardından sırasıyla:

  • \(V\)için \(U\) düzeltme ve çözme.
  • \(U\)için \(V\) düzeltme ve çözme.

Her aşama tam olarak çözülebilir (doğrusal bir sistem çözümü yoluyla) ve dağıtılabilir. Bu tekniğin uyum sağlaması garanti edilir çünkü her adım kaybın azalması garanti edilmektedir.

SGD ve WALS

SGD ve WALS'ın avantajları ve dezavantajları vardır. İkisinin arasındaki farkları görmek için aşağıdaki bilgileri inceleyin:

SGD

Çok esnek; diğer kayıplar, işlevleri için kullanılabilir.

Paralel hale getirilebilir.

Daha yavaştır. Birbirine çok hızlı yakınlaşmaz.

Gözlemlenmeyen girişlerin işlenmesi daha zordur ( kullanın.

WALS

Yalnızca Loss Square'ler kullanılabilir.

Paralel hale getirilebilir.

SGD'ye göre daha hızlı yakınlaşır.

Gözlemlenmeyen girişlerle ilgili işlemler daha kolaydır.