Trénovat širokoúhlý a hluboký doporučovač

Tento článek popisuje, jak pomocí komponenty Train Wide &Deep Recommender v návrháři azure Machine Učení trénovat model doporučení. Tato komponenta je založená na širokém a hlubokém učení, které navrhuje Google.

Komponenta Train Wide &Deep Recommender čte datovou sadu trojité hodnocení uživatelských položek a volitelně některé funkce uživatelů a položek. Vrátí vytrénovaný doporučovač Wide &Deep. Potom můžete pomocí natrénovaného modelu generovat předpovědi hodnocení nebo doporučení pomocí komponenty Score Wide a Deep Recommender .

Další informace omodelch

Hlavním cílem systému doporučení je doporučit uživatelům systému jednu nebo více položek. Příkladem položky může být film, restaurace, kniha nebo skladba. Uživatel může být osoba, skupina osob nebo jiná entita s předvolbami položek.

Existují dva hlavní přístupy k doporučovacím systémům.

  • První je přístup založený na obsahu, který využívá funkce pro uživatele i položky. Uživatelé mohou být popsáni vlastnostmi, jako je věk a pohlaví, a položky mohou být popsány vlastnostmi, jako je autor a výrobce. Typické příklady systémů doporučení založených na obsahu najdete na webech pro tvorbu shody na sociálních sítích.
  • Druhým přístupem je filtrování založené na spolupráci, které používá pouze identifikátory uživatelů a položek a získává implicitní informace o těchto entitách z (řídké) matice hodnocení udělené uživateli k položkám. O uživateli můžeme zjistit informace o položkách, které ohodnotil, a od jiných uživatelů, kteří ohodnotili stejné položky.

Doporučovací nástroj Wide &Deep kombinuje tyto přístupy pomocí filtrování na základě spolupráce s přístupem založeným na obsahu. Proto se považuje za hybridní doporučovač.

Jak to funguje: Když je uživatel relativně nový v systému, jsou předpovědi vylepšeny pomocí informací o funkcích o uživateli, čímž se řeší známý problém "cold-start". Jakmile ale získáte dostatečný počet hodnocení od konkrétního uživatele, můžete pro ně vytvořit plně přizpůsobené předpovědi na základě jejich konkrétních hodnocení, a ne na samotných funkcích. Proto existuje hladký přechod z doporučení založených na obsahu na doporučení na základě filtrování na základě spolupráce. I když funkce uživatelů nebo položek nejsou k dispozici, nástroj Wide &Deep recommender bude i nadále fungovat v režimu filtrování pro spolupráci.

Další podrobnosti o doporučovači Wide &Deep a základní pravděpodobnostní algoritmus najdete v příslušném výzkumném dokumentu: Wide &Deep Učení for Recommender Systems.

Postup konfigurace nástroje Train Wide &Deep Recommender

Příprava dat

Než se pokusíte použít komponentu, ujistěte se, že jsou vaše data v očekávaném formátu modelu doporučení. Vyžaduje se trénovací datová sada trojitých hodnocení položek uživatele, ale v samostatných datových sadách můžete také zahrnout uživatelské funkce a funkce položek (pokud jsou k dispozici).

Požadovaná datová sada hodnocení položek uživatele

Vstupní data použitá pro trénování musí obsahovat správný typ dat ve správném formátu:

  • První sloupec musí obsahovat identifikátory uživatele.
  • Druhý sloupec musí obsahovat identifikátory položek.
  • Třetí sloupec obsahuje hodnocení pro dvojici položek uživatele. Hodnoty hodnocení musí být číselného typu.

Například typická sada hodnocení položek uživatele může vypadat takto:

ID uživatele Id filmu Rating
0 68646 10
223 31381 10

Datová sada funkcí uživatele (volitelné)

Datová sada uživatelských funkcí musí obsahovat identifikátory pro uživatele a používat stejné identifikátory, které byly poskytnuty v prvním sloupci datové sady hodnocení uživatelů-items-ratings. Zbývající sloupce můžou obsahovat libovolný počet funkcí, které popisují uživatele.

Například typická sada uživatelských funkcí může vypadat takto:

ID uživatele Věk Pohlaví Zájmy Umístění
0 25 male (muž) Drama Evropě
223 40 female (žena) Romance Asie

Datová sada funkcí položek (volitelné)

Datová sada funkcí položky musí obsahovat identifikátory položek v prvním sloupci. Zbývající sloupce můžou obsahovat libovolný počet popisných vlastností položek.

Například typická sada funkcí položek může vypadat takto:

Id filmu Nadpis Původní jazyk Žánry Year
68646 The Godfather Angličtina Drama 1972
31381 Gone with the Wind Angličtina Historie 1939

Trénování modelu

  1. Přidejte komponentu Train Wide and Deep Recommender do experimentu v návrháři a připojte ji k trénovací datové sadě.

  2. Pokud máte samostatnou datovou sadu funkcí uživatele nebo funkcí položek, připojte je ke komponentě Train Wide and Deep Recommender .

    • Datová sada funkcí uživatele: Připojení datovou sadu, která popisuje uživatele druhého vstupu.
    • Datová sada funkcí položky: Připojení datovou sadu, která popisuje položky třetího vstupu.
  3. Epochy: udává, kolikrát by algoritmus měl zpracovávat celá trénovací data.

    Čím vyšší je toto číslo, tím vhodnější je trénování; trénování však stojí více času a může způsobit přeurčení.

  4. Velikost dávky: Zadejte počet trénovacích příkladů využívaných v jednom kroku trénování.

    Tento hyperparametr může ovlivnit rychlost trénování. Vyšší velikost dávky vede k kratší časové době, ale může zvýšit konvergenci času. A pokud je dávka příliš velká, aby odpovídala GPU nebo procesoru, může dojít k chybě paměti.

  5. Optimalizátor širokých částí: Vyberte jeden optimalizátor, který použije přechody na širokou část modelu.

  6. Široká rychlost učení optimalizátoru: zadejte číslo v rozsahu 0,0 až 2.0, které definuje rychlost učení širokého optimalizátoru částí.

    Tento hyperparametr určuje velikost kroku v každém trénovacím kroku při přechodu k minimální ztrátové funkci. Velká rychlost učení může způsobit skok učení přes minima, zatímco příliš malá rychlost učení může způsobit problém konvergence.

  7. Dimenze křížové funkce: Zadejte dimenzi zadáním požadovaných ID uživatelů a funkcí ID položky.

    Doporučovací nástroj Wide &Deep ve výchozím nastavení provádí transformaci mezi produkty u funkcí ID uživatele a ID položky. Křížový výsledek bude hashován podle tohoto čísla, aby se zajistila dimenze.

  8. Optimalizátor hlubokých částí: Vyberte jeden optimalizátor, který použije přechody na hlubokou část modelu.

  9. Rychlost hlubokého učení optimalizátoru: zadejte číslo od 0,0 do 2.0, které definuje rychlost učení hloubkového optimalizátoru částí.

  10. Dimenze vkládání uživatele: Zadejte celé číslo, které určuje dimenzi vkládání ID uživatele.

    Doporučovací modul Wide &Deep vytvoří vložené ID sdíleného uživatele a vkládání ID položky pro širokou i hlubokou část.

  11. Dimenze vložení položky: Zadejte celé číslo, které určuje dimenzi vkládání ID položky.

  12. Kategorické funkce vkládání dimenzí: Zadejte celé číslo, které určuje dimenze vkládání kategorických funkcí.

    V hluboké komponentě wide &deep recommender se pro každou kategorickou funkci učí vektor vkládání. A tyto vložené vektory sdílejí stejnou dimenzi.

  13. Skryté jednotky: zadejte počet skrytých uzlů hluboké komponenty. Číslo uzlů v každé vrstvě je oddělené čárkami. Pokud například zadáte "1000 500 100", zadáte hloubkovou komponentu se třemi vrstvami, přičemž první vrstva na poslední má 1000 uzlů, 500 uzlů a 100 uzlů.

  14. Aktivační funkce: Vyberte jednu aktivační funkci použitou na každou vrstvu, výchozí hodnota je ReLU.

  15. Rozevírací seznam: Zadejte číslo od 0,0 do 1,0, abyste zjistili pravděpodobnost, že se výstupy během trénování zahodí.

    Vyřazení je metoda regularizace, která brání přeurčení neurálních sítí. Jedním z běžných rozhodnutí pro tuto hodnotu je začít s hodnotou 0,5, která se zdá být blízko optimální pro širokou škálu sítí a úkolů.

  16. Normalizace dávky: Tuto možnost vyberte, pokud chcete použít normalizaci dávek po každé skryté vrstvě v hluboké komponentě.

    Dávkové normalizace je technika pro boj s interním kovariantním problémem posunu během trénování sítí. Obecně může pomoct zlepšit rychlost, výkon a stabilitu sítí.

  17. Spusťte kanál.

Technické poznámky

Wide &Deep společně trénuje široké lineární modely a hluboké neurální sítě ke kombinování silných stránek memorizace a generalizace. Široká komponenta přijímá sadu nezpracovaných funkcí a transformací funkcí k zapamatování interakcí s funkcemi. Díky menšímu inženýrství funkcí se hloubková komponenta zobecní na nezobrazené kombinace funkcí prostřednictvím vkládání s nízkou hustotou.

Při implementaci doporučovače Wide &Deep používá komponenta výchozí strukturu modelu. Široká komponenta přebírá vkládání uživatelů, vkládání položek a transformaci ID uživatelů a ID položek mezi produkty jako vstup. Pro hlubokou část modelu se pro každou kategorickou funkci učí vektor vkládání. Společně s dalšími vektory číselných funkcí se tyto vektory pak předávají do neurální sítě s hloubkovým předáváním. Široká část a hloubková část se zkombinují tak, že sečtou své konečné pravděpodobnosti výstupního protokolu jako předpověď, která nakonec přejde na jednu společnou ztrátovou funkci pro společné trénování.

Další kroky

Podívejte se na sadu komponent dostupných Učení Azure Machine.