Trenowanie szerokiego & głębokiego modułu polecającego

W tym artykule opisano sposób używania składnika Train Wide & Deep Recommender w projektancie Azure Machine Learning w celu wytrenowania modelu rekomendacji. Ten składnik jest oparty na szerokim & uczeniu głębokim, który jest proponowany przez firmę Google.

Składnik Train Wide & Deep Recommender odczytuje zestaw danych triples user-item-rating i, opcjonalnie, niektóre funkcje użytkownika i elementu. Zwraca wytrenowany moduł rekomendacji wide & deep. Następnie możesz użyć wytrenowanego modelu do generowania przewidywań oceny lub zaleceń przy użyciu składnika Score Wide and Deep Recommender .

Więcej informacji na temat modeli rekomendacji i modułu rekomendacji wide & deep

Głównym celem systemu rekomendacji jest zalecenie co najmniej jednego elementuużytkownikom systemu. Przykładem elementu może być film, restauracja, książka lub piosenka. Użytkownik może być osobą, grupą osób lub inną jednostką z preferencjami elementów.

Istnieją dwa główne podejścia do systemów rekomendacji.

  • Pierwszym z nich jest podejście oparte na zawartości , które korzysta z funkcji zarówno dla użytkowników, jak i elementów. Użytkownicy mogą być opisywani przez właściwości, takie jak wiek i płeć, a elementy mogą być opisywane przez właściwości, takie jak autor i producent. Typowe przykłady systemów rekomendacji opartych na zawartości można znaleźć w witrynach tworzenia dopasowań społecznościowych.
  • Drugie podejście polega na filtrowaniu zespołowym, które używa tylko identyfikatorów użytkowników i elementów oraz uzyskuje niejawne informacje o tych jednostkach z macierzy ocen (rozrzednych) przekazanych przez użytkowników do elementów. Możemy dowiedzieć się więcej o użytkowniku z elementów, które ocenili, oraz od innych użytkowników, którzy ocenili te same elementy.

Moduł rekomendacji Wide & Deep łączy te podejścia przy użyciu wspólnego filtrowania przy użyciu podejścia opartego na zawartości. W związku z tym jest uważany za hybrydowy moduł polecający.

Jak to działa: gdy użytkownik jest stosunkowo nowy w systemie, przewidywania są ulepszane przez wykorzystanie informacji o funkcji użytkownika, w związku z czym dotyczy dobrze znanego problemu "zimnego startu". Jednak po zebraniu wystarczającej liczby ocen od określonego użytkownika można utworzyć w pełni spersonalizowane przewidywania na podstawie ich konkretnych ocen, a nie tylko na ich funkcjach. W związku z tym istnieje płynne przejście od rekomendacji opartych na zawartości do zaleceń opartych na współpracy. Nawet jeśli funkcje użytkownika lub elementu nie są dostępne, moduł rekomendacji Wide & Deep nadal będzie działać w trybie wspólnego filtrowania.

Więcej szczegółów na temat szerokiego modułu & polecającego i podstawowego algorytmu probabilistycznego można znaleźć w odpowiednim dokumencie badawczym: Wide & Deep Edukacja for Recommender Systems.

How to configure Train Wide Deep Recommender (Jak skonfigurować moduł trenowania głębokiego uczenia głębokiego & )

Przygotowywanie danych

Przed podjęciem próby użycia składnika upewnij się, że dane są w oczekiwanym formacie modelu rekomendacji. Wymagany jest zestaw danych szkoleniowych triples user-item-rating, ale można również uwzględnić funkcje użytkownika i funkcje elementów (jeśli są dostępne) w oddzielnych zestawach danych.

Wymagany zestaw danych klasyfikacji elementów użytkownika

Dane wejściowe używane do trenowania muszą zawierać odpowiedni typ danych w poprawnym formacie:

  • Pierwsza kolumna musi zawierać identyfikatory użytkowników.
  • Druga kolumna musi zawierać identyfikatory elementów.
  • Trzecia kolumna zawiera ocenę dla pary user-item. Wartości klasyfikacji muszą być typem liczbowym.

Na przykład typowy zestaw klasyfikacji elementów użytkownika może wyglądać następująco:

UserId Identyfikator filmu Klasyfikacja
1 68646 10
223 31381 10

Zestaw danych funkcji użytkownika (opcjonalnie)

Zestaw danych funkcji użytkownika musi zawierać identyfikatory dla użytkowników i używać tych samych identyfikatorów, które zostały podane w pierwszej kolumnie zestawu danych users-items-ratings. Pozostałe kolumny mogą zawierać dowolną liczbę funkcji opisujących użytkowników.

Na przykład typowy zestaw funkcji użytkownika może wyglądać następująco:

UserId Wiek Płeć Zainteresowania Lokalizacja
1 25 mężczyzna Dramat Europa
223 40 kobieta Romans Azja

Zestaw danych funkcji elementów (opcjonalnie)

Zestaw danych funkcji elementu musi zawierać identyfikatory elementów w pierwszej kolumnie. Pozostałe kolumny mogą zawierać dowolną liczbę cech opisowych dla elementów.

Na przykład typowy zestaw funkcji elementu może wyglądać następująco:

Identyfikator filmu Tytuł Oryginalny język Gatunków Year (Rok)
68646 Ojcze chrzestnym Angielski Dramat 1972
31381 Zniknęły z wiatrem Angielski Historia 1939

Trenowanie modelu

  1. Dodaj składnik Train Wide and Deep Recommender do eksperymentu w projektancie i połącz go z zestawem danych trenowania.

  2. Jeśli masz oddzielny zestaw danych funkcji użytkownika i/lub funkcji elementów, połącz je ze składnikiem Train Wide and Deep Recommender .

    • Zestaw danych funkcji użytkownika: Połączenie zestaw danych opisujący użytkowników do drugiego wejścia.
    • Zestaw danych funkcji elementów: Połączenie zestaw danych opisujący elementy trzeciej danych wejściowych.
  3. Epoka: wskazuje, ile razy algorytm powinien przetwarzać całe dane treningowe.

    Im większa liczba ta, tym bardziej odpowiednia jest szkolenia; jednak trenowanie kosztuje więcej czasu i może spowodować nadmierne dopasowanie.

  4. Rozmiar partii: wpisz liczbę przykładów trenowania używanych w jednym kroku trenowania.

    Ten hiperparametr może wpływać na szybkość trenowania. Większy rozmiar partii prowadzi do mniej czasu epoki kosztu, ale może zwiększyć czas zbieżności. Jeśli partia jest zbyt duża, aby zmieścić procesor GPU/procesor CPU, może zostać zgłoszony błąd pamięci.

  5. Optymalizator szerokiej części: wybierz jeden optymalizator, aby zastosować gradienty do szerokiej części modelu.

  6. Szeroki współczynnik uczenia optymalizatora: wprowadź liczbę z zakresu od 0,0 do 2,0, która definiuje szybkość uczenia szerokiego optymalizatora części.

    Ten hiperparametr określa rozmiar kroku w każdym kroku trenowania podczas przechodzenia w kierunku minimalnej funkcji utraty. Duża szybkość nauki może spowodować przeskok nauki przez minimę, podczas gdy zbyt mały wskaźnik nauki może spowodować problem zbieżności.

  7. Wymiar funkcji krzyżowej: wpisz wymiar, wprowadzając żądane identyfikatory użytkownika i funkcje identyfikatora elementu.

    Narzędzie do rekomendacji Wide & Deep domyślnie wykonuje transformację między produktami za pośrednictwem funkcji identyfikatora użytkownika i identyfikatora elementu. Krzyżowy wynik zostanie skrócony zgodnie z tą liczbą w celu zapewnienia wymiaru.

  8. Optymalizator głębokiej części: wybierz jeden optymalizator, aby zastosować gradienty do głębokiej części modelu.

  9. Szybkość uczenia głębokiego optymalizatora: wprowadź liczbę z zakresu od 0,0 do 2,0, która definiuje szybkość uczenia się optymalizatora części głębokiej.

  10. Wymiar osadzania użytkownika: wpisz liczbę całkowitą, aby określić wymiar osadzania identyfikatora użytkownika.

    Moduł rekomendacji Wide & Deep tworzy osadzanie identyfikatora użytkownika udostępnionego i osadzanie identyfikatora elementu zarówno dla szerokiej, jak i głębokiej części.

  11. Wymiar osadzania elementu: wpisz liczbę całkowitą, aby określić wymiar osadzania identyfikatora elementu.

  12. Wymiar osadzania funkcji kategorycznych: wprowadź liczbę całkowitą, aby określić wymiary osadzania funkcji kategorii.

    W głębokim składniku rekomendacji Wide & Deep wektor osadzania jest uczyć się dla każdej funkcji kategorycznej. Te wektory osadzania mają ten sam wymiar.

  13. Ukryte jednostki: wpisz liczbę ukrytych węzłów składnika głębokiego. Liczba węzłów w każdej warstwie jest oddzielona przecinkami. Na przykład według typu "1000 500 100", należy określić, że składnik głęboki ma trzy warstwy, a pierwsza warstwa do ostatniego ma odpowiednio 1000 węzłów, 500 węzłów i 100 węzłów.

  14. Funkcja aktywacji: wybierz jedną funkcję aktywacji zastosowaną do każdej warstwy. Wartość domyślna to ReLU.

  15. Lista rozwijana: wprowadź liczbę z zakresu od 0,0 do 1,0, aby określić prawdopodobieństwo, że dane wyjściowe zostaną porzucone w każdej warstwie podczas trenowania.

    Dropout to metoda regularyzacji, która zapobiega nadmiernemu dopasowaniu sieci neuronowych. Jedną z typowych decyzji dla tej wartości jest rozpoczęcie od 0,5, co wydaje się być zbliżone do optymalnego dla szerokiego zakresu sieci i zadań.

  16. Normalizacja wsadowa: wybierz tę opcję, aby użyć normalizacji wsadowej po każdej ukrytej warstwie w składniku głębokim.

    Normalizacja wsadowa to technika walki z wewnętrznym problemem zmiany zmiany podczas trenowania sieci. Ogólnie rzecz biorąc, może pomóc zwiększyć szybkość, wydajność i stabilność sieci.

  17. Uruchamianie potoku.

Uwagi techniczne

Wide & Deep wspólnie szkoli szerokie modele liniowe i głębokie sieci neuronowe, aby połączyć mocne strony zapamiętywania i uogólniania. Szeroki składnik akceptuje zestaw nieprzetworzonych funkcji i przekształceń funkcji do zapamiętywania interakcji funkcji. A przy mniejszej inżynierii cech, głęboki składnik uogólnia się do niezauważalnych kombinacji funkcji poprzez niskowymiarowe gęste osadzanie funkcji.

W implementacji modułu rekomendacji Wide & Deep składnik używa domyślnej struktury modelu. Szeroki składnik pobiera osadzanie użytkowników, osadzanie elementów oraz transformację między produktami identyfikatorów użytkowników i identyfikatorów elementów jako danych wejściowych. W przypadku głębokiej części modelu wektor osadzania jest poznawany dla każdej funkcji kategorii. Wraz z innymi wektorami cech liczbowych te wektory są następnie przekazywane do głębokiej sieci neuronowej przekazywania dalej. Szeroka i głęboka część są połączone poprzez podsumowanie ich ostatnich szans dziennika danych wyjściowych jako przewidywania, które ostatecznie idzie do jednej wspólnej funkcji straty na wspólne szkolenie.

Następne kroki

Zobacz zestaw składników dostępnych Azure Machine Learning.