🎬 Rekomendator wideo — faktoryzacja macierzy na żywo
Obserwuj, jak rekomendator oparty na filtrowaniu kolaboratywnym uczy się ukrytych czynników użytkowników i filmów poprzez prawdziwą faktoryzację macierzy metodą spadku gradientu, zbiegając do spersonalizowanych rankingów w miarę napływu ocen.
O rekomendatorze wideo
Prawdziwe platformy wideo rekomendują treści milionom użytkowników, nigdy nie czytając transkrypcji ani tagów pojedynczego filmu — polegają na filtrowaniu kolaboratywnym: wzorcu tego, kto co ocenił lub obejrzał. Ta symulacja buduje prawdziwą, działającą wersję tego pomysłu. Syntetyczna społeczność 24 użytkowników ocenia syntetyczny katalog 32 filmów w ośmiu ukrytych gatunkach, tworząc rzadką macierz ocen, w której około 80-85% komórek jest pustych. Model faktoryzacji macierzy — z tej samej rodziny algorytmów (Funk-SVD, SVD++), która wygrała Netflix Prize — jest inicjalizowany małymi losowymi wektorami ukrytymi dla każdego użytkownika i każdego filmu, a następnie trenowany prawdziwym stochastycznym spadkiem gradientu: każda epoka tasuje zaobserwowane oceny, oblicza bieżący błąd predykcji dla każdej z nich i lekko przesuwa odpowiedni wektor użytkownika, wektor filmu oraz wyrazy obciążenia, by zmniejszyć ten błąd kwadratowy, z karą L2 zniechęcającą do przeuczenia.
Górny wykres rzutuje bieżące K-wymiarowe wektory czynników na ich dwie główne składowe (obliczane prawdziwą iteracją potęgową na kowariancji czynników, co klatkę), dzięki czemu można obserwować, jak użytkownicy i tematycznie podobne filmy dryfują ku sobie wyłącznie na podstawie wzorców ocen — modelowi nigdy nie podaje się etykiety gatunku. Dolny wykres śledzi prawdziwe RMSE treningu epoka po epoce. Dostosuj wymiarowość ukrytą, współczynnik uczenia i siłę regularyzacji, by zobaczyć ich wpływ na szybkość zbieżności i błąd końcowy, wprowadź strumieniowo nowe oceny, by zasymulować żywą platformę, i wybierz dowolnego użytkownika, by zobaczyć aktualizującą się na żywo listę top-N rekomendowanych filmów w miarę kontynuacji treningu.
Najczęściej zadawane pytania
Czym jest faktoryzacja macierzy w kontekście systemów rekomendacyjnych?
Faktoryzacja macierzy traktuje macierz ocen użytkownik-przedmiot jako (przeważnie pustą) i przybliża ją jako iloczyn dwóch znacznie mniejszych macierzy: macierzy czynników użytkownika U i macierzy czynników przedmiotu V, gdzie każdy wiersz to krótki wektor liczb ukrytych. Przewidywana ocena dla użytkownika u i filmu i to iloczyn skalarny ich dwóch wektorów, plus wyrazy obciążenia użytkownika i przedmiotu oraz globalna średnia. Ponieważ wektory czynników są współdzielone dla wszystkich ocen danego użytkownika, model potrafi generalizować na filmy, których użytkownik nigdy nie ocenił, co jest całym sensem filtrowania kolaboratywnego: nie są wymagane żadne tagi treści ani metadane, tylko wzorzec tego, kto co ocenił.
Jak dokładnie działa tu pętla treningowa stochastycznego spadku gradientu?
W każdej epoce lista zaobserwowanych trójek (użytkownik, film, ocena) jest tasowana i odwiedzana po jednej. Dla każdej trójki model oblicza swoją bieżącą przewidywaną ocenę, wyznacza błąd (wartość rzeczywista minus przewidywana) i lekko przesuwa wektor użytkownika, wektor przedmiotu oraz oba wyrazy obciążenia o mały krok w kierunku zmniejszającym ten pojedynczy błąd, skalowany współczynnikiem uczenia. Wyraz regularyzacji L2 jednocześnie kurczy każdy czynnik w stronę zera, by zwalczać przeuczenie na użytkownikach lub filmach z bardzo małą liczbą ocen. Powtarzanie tego przez wiele epok to prawdziwy stochastyczny spadek gradientu typu mini-batch-jeden na rzeczywistej funkcji straty błędu kwadratowego, używanej przez klasyczne algorytmy takie jak Funk-SVD i rodzina SVD++, która wygrała Netflix Prize.
Czemu punkty użytkowników i filmów poruszają się na wykresie przestrzeni czynników?
Wykres rozrzutu to bieżąca projekcja na dwie główne składowe (obliczana prawdziwą iteracją potęgową na kowariancji bieżących wektorów czynników) rzeczywistych K-wymiarowych wektorów aktualizowanych przez spadek gradientu. W miarę jak trening zmniejsza błąd rekonstrukcji, użytkownicy oceniający podobnie podobne filmy są przyciągani ku sobie w przestrzeni czynników, a filmy lubiane przez podobne grupy użytkowników również są przyciągane ku sobie — mimo że modelowi nigdy nie podano żadnych etykiet gatunku. Kolory na kwadratach filmów pokazują prawdziwy (ukryty) gatunek wyłącznie po to, byś mógł wizualnie zweryfikować, że model odkrył naprawdę podobne skupienia wyłącznie na podstawie ocen.
Co mówi nam krzywa RMSE treningu i czemu osiąga plateau?
Pierwiastek błędu średniokwadratowego (RMSE) jest przeliczany w każdej epoce dla każdej zaobserwowanej oceny przy użyciu właśnie zaktualizowanych czynników, więc krzywa jest bezpośrednią, uczciwą miarą tego, jak dobrze model aktualnie odtwarza dane, które faktycznie widział. Na początku szybko opada, gdy spadek gradientu koryguje losowo zainicjalizowane czynniki, a następnie się spłaszcza, gdy model zbliża się do najlepszego dopasowania, na jakie pozwala wybrana wymiarowość ukryta i siła regularyzacji. Zwiększenie wymiaru ukrytego K zazwyczaj pozwala RMSE spaść dalej (więcej pojemności do reprezentowania gustu), podczas gdy zwiększenie regularyzacji λ zamienia wyższe RMSE treningu na czynniki mniej podatne na przeuczenie rzadkich, zaszumionych ocen.
Jak strumieniowanie nowej oceny zmienia rekomendacje?
Kliknięcie „Strumień oceny” natychmiast dodaje jedną świeżo wygenerowaną obserwację (użytkownik, film, ocena) do rzadkiego zbioru treningowego, naśladując prawdziwą platformę, gdzie nowe oceny napływają nieprzerwanie. Nie resetuje to modelu: kolejne epoki SGD uwzględnią ten nowy dowód obok wszystkich starych ocen, lekko przesuwając odpowiednie wektory użytkownika i filmu oraz, w ciągu kolejnych kilku epok, zmieniając listę top-N przewidywań tego użytkownika, a także przewidywania wszystkich innych dla tego filmu, ponieważ własny wektor czynnika filmu się przesunął.
Czym jest problem zimnego startu i jak ilustruje go ta symulacja?
Problem zimnego startu to trudność w wystawianiu dobrych rekomendacji dla użytkownika lub przedmiotu z małą liczbą lub brakiem zaobserwowanych ocen, ponieważ filtrowanie kolaboratywne ma wtedy prawie żaden sygnał, z którego mogłoby się nauczyć sensownego wektora czynnika. W tej symulacji rzadkość rzędu 80-85% (większość komórek użytkownik-film bez oceny) oznacza, że niektórzy użytkownicy i filmy zaczynają z bardzo małą liczbą zaobserwowanych ocen, więc ich wektory czynników pozostają blisko swojej małej losowej inicjalizacji, a ich wyraz obciążenia dominuje predykcję; dopiero gdy napływa więcej ocen dla tego użytkownika lub filmu, ich pozycja na wykresie przestrzeni czynników znacząco się przesuwa, a ich predykcje się precyzują.
Jak to się ma do prawdziwych produkcyjnych systemów rekomendacyjnych?
Systemy produkcyjne w serwisach takich jak Netflix, YouTube i Spotify wykorzystują tę samą podstawową ideę — wyuczone czynniki ukryte trenowane optymalizacją opartą na gradiencie na sprzężeniu zwrotnym niejawnym lub jawnym — ale w znacznie większej skali (setki milionów użytkowników i przedmiotów), często łączoną z głębokimi enkoderami neuronowymi, informacjami pobocznymi (czas oglądania, urządzenie, pora dnia), przybliżonym wyszukiwaniem najbliższych sąsiadów przy serwowaniu oraz oddzielnymi etapami ponownego rankingu. Ta symulacja dokładnie odtwarza matematyczny rdzeń — rzadkie oceny, czynniki ukryte, prawdziwy SGD błędu kwadratowego z regularyzacją L2 — z małym syntetycznym zbiorem danych, dzięki czemu cały proces uczenia, od losowej inicjalizacji do zbieżności, można obserwować w czasie rzeczywistym.
Rzadka macierz ocen 24 użytkowników × 32 filmy jest faktoryzowana na wektory ukryte dla każdego użytkownika i filmu, trenowane epoka po epoce prawdziwym stochastycznym spadkiem gradientu na błędzie rekonstrukcji kwadratowej plus regularyzacja L2; żywa PCA metodą iteracji potęgowej rzutuje wyuczone czynniki na 2D, a drugi wykres śledzi prawdziwe RMSE treningu w miarę zbieżności.
3D · renderer Three.js / WebGL · cel 60 FPS · działa w całości w przeglądarce, bez instalacji