Träna bred och djuprekommendator

I den här artikeln beskrivs hur du använder komponenten Train Wide &Deep Recommender i Azure Mašinsko učenje designer för att träna en rekommendationsmodell. Den här komponenten baseras på bred och djupinlärning, vilket föreslås av Google.

Komponenten Träna bred och djuprekommendator läser en datamängd med trippelklassificering av användarobjekt och, om du vill, vissa användar- och objektfunktioner. Den returnerar en tränad Wide & Deep-rekommenderare. Du kan sedan använda den tränade modellen för att generera omdömesförutsägelser eller rekommendationer med hjälp av komponenten Poängbredd och Djuprekommendator .

Mer om rekommendationsmodeller och wide &deep-rekommendationer

Huvudsyftet med ett rekommendationssystem är att rekommendera en eller flera objekt till systemets användare . Exempel på ett objekt kan vara en film, restaurang, bok eller sång. En användare kan vara en person, grupp av personer eller en annan entitet med objektinställningar.

Det finns två huvudsakliga metoder för att rekommendera system.

  • Den första är den innehållsbaserade metoden, som använder funktioner för både användare och objekt. Användare kan beskrivas av egenskaper som ålder och kön, och objekt kan beskrivas av egenskaper som författare och tillverkare. Vanliga exempel på innehållsbaserade rekommendationssystem finns på webbplatser för social matchmaking.
  • Den andra metoden är samarbetsfiltrering, som endast använder identifierare för användare och objekt och hämtar implicit information om dessa entiteter från en (gles) matris med klassificeringar som användarna ger objekten. Vi kan lära oss om en användare från de objekt som de har betygsatt och från andra användare som har betygsatt samma objekt.

Wide &Deep-rekommendationen kombinerar dessa metoder med samarbetsfiltrering med en innehållsbaserad metod. Det anses därför vara en hybridrekommendator.

Så här fungerar detta: När en användare är relativt ny i systemet förbättras förutsägelserna genom att använda funktionsinformationen om användaren, vilket åtgärdar det välkända "cold-start"-problemet. Men när du har samlat in tillräckligt många omdömen från en viss användare är det möjligt att göra fullständigt anpassade förutsägelser för dem baserat på deras specifika klassificeringar snarare än enbart deras funktioner. Därför finns det en smidig övergång från innehållsbaserade rekommendationer till rekommendationer baserade på samarbetsfiltrering. Även om användar- eller objektfunktioner inte är tillgängliga fungerar Wide &Deep-rekommenderaren fortfarande i samarbetsfiltreringsläget.

Mer information om den breda och djupa algoritmen och den underliggande probabilistiska algoritmen finns i relevant forskningsdokument: Wide & Deep Learning for Recommender Systems.

Så här konfigurerar du train wide &deep recommender

Förbereda data

Innan du försöker använda komponenten kontrollerar du att dina data är i det förväntade formatet för rekommendationsmodellen. En träningsdatauppsättning med trippelklassificering av användarobjekt krävs, men du kan även inkludera användarfunktioner och objektfunktioner (om de är tillgängliga) i separata datauppsättningar.

Nödvändig datamängd för användar-objekt-klassificeringar

Indata som används för träning måste innehålla rätt typ av data i rätt format:

  • Den första kolumnen måste innehålla användaridentifierare.
  • Den andra kolumnen måste innehålla objektidentifierare.
  • Den tredje kolumnen innehåller klassificeringen för användarobjektparet. Klassificeringsvärdena måste vara numeriska.

En typisk uppsättning användarobjektsklassificeringar kan till exempel se ut så här:

AnvändarID MovieId Klassificering
1 68646 10
223 31381 10

Datauppsättning för användarfunktioner (valfritt)

Datamängden för användarfunktioner måste innehålla identifierare för användare och använda samma identifierare som angavs i den första kolumnen i datauppsättningen users-items-ratings. De återstående kolumnerna kan innehålla valfritt antal funktioner som beskriver användarna.

Till exempel kan en typisk uppsättning användarfunktioner se ut så här:

AnvändarID Ålder Kön Intresse Plats
1 25 man Drama Europa
223 40 kvinna Romans Asien

Datauppsättning för objektfunktioner (valfritt)

Datamängden för objektfunktioner måste innehålla objektidentifierare i den första kolumnen. De återstående kolumnerna kan innehålla valfritt antal beskrivande funktioner för objekten.

Till exempel kan en typisk uppsättning objektfunktioner se ut så här:

MovieId Title Ursprungligt språk Genrer Year
68646 Gudfadern Engelska Drama 1972
31381 Borta med vinden Engelska Historik 1939

Träna modellen

  1. Lägg till komponenten Train Wide och Deep Recommender i experimentet i designern och anslut den till träningsdatauppsättningen.

  2. Om du har en separat datauppsättning med antingen användarfunktioner och/eller objektfunktioner ansluter du dem till komponenten Train Wide och Deep Recommender .

    • Datauppsättning för användarfunktioner: Anslut datauppsättningen som beskriver användarna till den andra inmatningen.
    • Objektfunktioners datauppsättning: Anslut datauppsättningen som beskriver objekt till den tredje inmatningen.
  3. Epoker: anger hur många gånger algoritmen ska bearbeta hela träningsdata.

    Ju högre denna siffra, desto mer tillräcklig utbildning; Utbildning kostar dock mer tid och kan orsaka överanpassning.

  4. Batchstorlek: ange antalet träningsexempel som används i ett träningssteg.

    Den här hyperparametern kan påverka träningshastigheten. En högre batchstorlek leder till en kortare tidskostnad, men kan öka konvergenstiden. Och om batchen är för stor för att passa GPU/CPU kan ett minnesfel uppstå.

  5. Bred deloptimerare: Välj en optimerare för att tillämpa toningar på den stora delen av modellen.

  6. Utbildningstakt för wide optimizer: ange ett tal mellan 0.0 och 2.0 som definierar inlärningshastigheten för wide part optimizer.

    Den här hyperparametern avgör stegstorleken vid varje träningssteg när du går mot ett minimum av förlustfunktion. En stor inlärningstakt kan orsaka inlärningshopp över minima, medan en för liten inlärningstakt kan orsaka konvergensproblem.

  7. Överstrukna funktionsdimensioner: skriv dimensionen genom att ange önskade användar-ID:er och objekt-ID-funktioner.

    Wide &Deep-rekommendationer utför transformering mellan produkter över användar-ID och objekt-ID-funktioner som standard. Det korsade resultatet hashas enligt det här talet för att säkerställa dimensionen.

  8. Djupdelsoptimerare: Välj en optimerare för att tillämpa toningar på den djupa delen av modellen.

  9. Djupoptimerutbildning: Ange ett tal mellan 0.0 och 2.0 som definierar inlärningshastigheten för djupdelsoptimeraren.

  10. Inbäddningsdimension för användare: Ange ett heltal för att ange dimensionen för inbäddning av användar-ID.

    Wide &Deep-rekommenderaren skapar inbäddningar för delat användar-ID och objekt-ID för både stora och djupa delar.

  11. Inbäddningsdimension för objekt: Ange ett heltal för att ange dimensionen för objekt-ID-inbäddning.

  12. Inbäddningsdimension för kategoriska funktioner: Ange ett heltal för att ange dimensionerna för kategoriska inbäddningar av funktioner.

    En inbäddningsvektor lär sig för varje kategorisk funktion i djup komponenten i Wide &Deep-rekommenderare. Och dessa inbäddningsvektorer har samma dimension.

  13. Dolda enheter: ange antalet dolda noder i djupkomponenten. Nodnumret i varje lager avgränsas med kommatecken. Efter typen "1000 500 100" anger du till exempel att den djupa komponenten har tre lager, där det första lagret till det sista har 1 000 noder, 500 noder och 100 noder.

  14. Aktiveringsfunktion: välj en aktiveringsfunktion som tillämpas på varje lager, standardvärdet är ReLU.

  15. Listruta: Ange ett tal mellan 0,0 och 1,0 för att fastställa sannolikheten för att utdata kommer att släppas i varje lager under träningen.

    Avhopp är en regulariseringsmetod för att förhindra att neurala nätverk överanpassas. Ett vanligt beslut för det här värdet är att börja med 0,5, vilket verkar vara nära optimalt för en mängd olika nätverk och uppgifter.

  16. Batchnormalisering: Välj det här alternativet om du vill använda batchnormalisering efter varje dolt lager i den djupa komponenten.

    Batchnormalisering är en teknik för att bekämpa interna covariate shift-problem under nätverksträningen. I allmänhet kan det bidra till att förbättra nätverkens hastighet, prestanda och stabilitet.

  17. Köra pipelinen.

Tekniska anteckningar

Wide &Deep tränar tillsammans breda linjära modeller och djupa neurala nätverk för att kombinera fördelarna med memorering och generalisering. Den breda komponenten accepterar en uppsättning råa funktioner och funktionstransformeringar för att memorera funktionsinteraktioner. Och med mindre funktionsutveckling generaliserar den djupa komponenten till osedda funktionskombinationer genom lågdimensionella kompakta funktionsinbäddningar.

I implementeringen av Wide &Deep-rekommendationer använder komponenten en standardmodellstruktur. Den breda komponenten tar användarinbäddningar, objektinbäddningar och omvandling mellan produkter av användar-ID:t och objekt-ID:t som indata. För den djupa delen av modellen lär sig en inbäddningsvektor för varje kategorisk funktion. Tillsammans med andra numeriska funktionsvektorer matas dessa vektorer sedan in i det djupa framåtriktade neurala nätverket. Den breda delen och den djupa delen kombineras genom att summera deras slutliga utdataloggodds som förutsägelsen, som slutligen går till en gemensam förlustfunktion för gemensam träning.

Nästa steg

Se den uppsättning komponenter som är tillgängliga för Azure Mašinsko učenje.