Wide & Deep Recommender trainen

In dit artikel wordt beschreven hoe u het onderdeel Train Wide & Deep Recommender in Azure Machine Learning Designer gebruikt om een aanbevelingsmodel te trainen. Dit onderdeel is gebaseerd op Wide & Deep Learning, dat door Google wordt voorgesteld.

Het onderdeel Train Wide & Deep Recommender leest een gegevensset met drievoudige classificatie van gebruikersitems en, optioneel, sommige functies voor gebruikers en items. Het retourneert een getrainde Wide & Deep-aanbeveling. Vervolgens kunt u het getrainde model gebruiken om classificatievoorspellingen of aanbevelingen te genereren met behulp van het onderdeel Score Wide en Deep Recommender .

Meer informatie over aanbevelingsmodellen en de Wide & Deep-aanbevelingsfunctie

Het belangrijkste doel van een aanbevelingssysteem is het aanbevelen van een of meer items aan gebruikers van het systeem. Voorbeelden van een item kunnen een film, restaurant, boek of nummer zijn. Een gebruiker kan een persoon, groep personen of een andere entiteit met itemvoorkeuren zijn.

Er zijn twee belangrijkste benaderingen voor het aanbevelen van systemen.

  • De eerste is de op inhoud gebaseerde benadering, die gebruikmaakt van functies voor zowel gebruikers als items. Gebruikers kunnen worden beschreven door eigenschappen zoals leeftijd en geslacht en items kunnen worden beschreven door eigenschappen zoals auteur en fabrikant. Typische voorbeelden van aanbevelingssystemen op basis van inhoud vindt u op sites voor sociale matchmaking.
  • De tweede benadering is het filteren op samenwerking, waarbij alleen id's van de gebruikers en de items worden gebruikt en impliciete informatie over deze entiteiten wordt verkregen uit een (sparse) matrix met beoordelingen die de gebruikers aan de items hebben gegeven. We kunnen meer informatie krijgen over een gebruiker van de items die ze hebben beoordeeld en van andere gebruikers die dezelfde items hebben beoordeeld.

De Wide & Deep-aanbeveling combineert deze benaderingen, waarbij gebruik wordt gemaakt van gezamenlijke filtering met een op inhoud gebaseerde benadering. Daarom wordt het beschouwd als een hybride aanbevelingsfunctie.

Hoe dit werkt: wanneer een gebruiker relatief nieuw is in het systeem, worden voorspellingen verbeterd door gebruik te maken van de functie-informatie over de gebruiker, waardoor het bekende 'cold-start'-probleem wordt aangepakt. Wanneer u echter een voldoende aantal beoordelingen van een bepaalde gebruiker hebt verzameld, is het mogelijk om volledig gepersonaliseerde voorspellingen voor hen te doen op basis van hun specifieke beoordelingen in plaats van alleen hun functies. Daarom is er een soepele overgang van aanbevelingen op basis van inhoud tot aanbevelingen op basis van gezamenlijke filtering. Zelfs als gebruikers- of itemfuncties niet beschikbaar zijn, werkt wide & deep recommender nog steeds in de samenwerkingsfiltermodus.

Meer informatie over de Wide & Deep-aanbevelingsfunctie en het onderliggende probabilistische algoritme vindt u in het relevante onderzoeksdocument: Wide & Deep Learning for Recommender Systems.

Train Wide & Deep Recommender configureren

Gegevens voorbereiden

Voordat u het onderdeel probeert te gebruiken, moet u ervoor zorgen dat uw gegevens de verwachte indeling hebben voor het aanbevelingsmodel. Er is een trainingsgegevensset met drievoudige gebruikersitems vereist, maar u kunt ook gebruikersfuncties en itemfuncties (indien beschikbaar) opnemen in afzonderlijke gegevenssets.

Vereiste gegevensset met gebruikersitemclassificaties

De invoergegevens die voor de training worden gebruikt, moeten het juiste gegevenstype in de juiste indeling bevatten:

  • De eerste kolom moet gebruikers-id's bevatten.
  • De tweede kolom moet item-id's bevatten.
  • De derde kolom bevat de classificatie voor het paar gebruikersitems. Classificatiewaarden moeten een numeriek type zijn.

Een typische set gebruikersitembeoordelingen kan er bijvoorbeeld als volgt uitzien:

Gebruikers-id MovieId Beoordeling
1 68646 10
223 31381 10

Gegevensset met gebruikersfuncties (optioneel)

De gegevensset met gebruikersfuncties moet id's voor gebruikers bevatten en dezelfde id's gebruiken die zijn opgegeven in de eerste kolom van de gegevensset gebruikers-items. De resterende kolommen kunnen een willekeurig aantal functies bevatten waarin de gebruikers worden beschreven.

Een typische set gebruikersfuncties kan er bijvoorbeeld als volgt uitzien:

Gebruikers-id Leeftijd Geslacht Interesse Locatie
1 25 man Drama Europa
223 40 vrouwelijk Romantiek Azië

Gegevensset met itemfuncties (optioneel)

De gegevensset met itemfuncties moet item-id's bevatten in de eerste kolom. De resterende kolommen kunnen een willekeurig aantal beschrijvende functies voor de items bevatten.

Een typische set itemfuncties kan er bijvoorbeeld als volgt uitzien:

MovieId Titel Oorspronkelijke taal Genres Jaar
68646 De godfather Engels Drama 1972
31381 Gone with the Wind Engels Historie 1939

Het model trainen

  1. Voeg het onderdeel Train Wide and Deep Recommender toe aan uw experiment in de ontwerpfunctie en verbind het met de trainingsgegevensset.

  2. Als u een afzonderlijke gegevensset hebt met gebruikersfuncties en/of itemfuncties, verbindt u deze met het onderdeel Train Wide en Deep Recommender .

    • Gegevensset met gebruikersfuncties: Verbinding maken de gegevensset die gebruikers beschrijft voor de tweede invoer.
    • Itemfunctiesgegevensset: Verbinding maken de gegevensset die items beschrijft voor de derde invoer.
  3. Epochs: geef aan hoe vaak het algoritme de hele trainingsgegevens moet verwerken.

    Hoe hoger dit aantal, hoe adequater de training; Training kost echter meer tijd en kan overfitting veroorzaken.

  4. Batchgrootte: typ het aantal trainingsvoorbeelden dat in één trainingsstap wordt gebruikt.

    Deze hyperparameter kan de trainingssnelheid beïnvloeden. Een hogere batchgrootte leidt tot een kortere tijdsduur, maar kan de convergentietijd verhogen. En als batch te groot is om gpu/CPU aan te passen, kan er een geheugenfout optreden.

  5. Optimalisatiefunctie voor brede onderdelen: selecteer één optimalisatieprogramma om kleurovergangen toe te passen op het brede deel van het model.

  6. Wide optimizer learning rate: voer een getal in tussen 0,0 en 2.0 waarmee het leerpercentage van de optimalisatiefunctie voor brede onderdelen wordt gedefinieerd.

    Deze hyperparameter bepaalt de stapgrootte bij elke trainingsstap terwijl deze naar een minimum van verliesfunctie gaat. Een groot leerpercentage kan leiden tot een leersprong over de minima, terwijl een te klein leerpercentage convergentieprobleem kan veroorzaken.

  7. Gekruiste functiedimensie: typ de dimensie door de gewenste gebruikers-id's en item-id-functies in te voeren.

    De Wide &Deep-aanbeveling voert standaard functies voor cross-producttransformatie uit via gebruikers-id- en item-id-functies. Het gekruiste resultaat wordt gehasht volgens dit getal om de dimensie te garanderen.

  8. Deep Part Optimizer: selecteer één optimizer om kleurovergangen toe te passen op het diepe deel van het model.

  9. Deep Optimizer Learning Rate: voer een getal in tussen 0,0 en 2.0 waarmee de leersnelheid van deep part optimizer wordt gedefinieerd.

  10. Dimensie voor insluiten van gebruiker: typ een geheel getal om de dimensie van insluiten van gebruikers-id's op te geven.

    De Wide & Deep-aanbeveling maakt de gedeelde gebruikers-id-insluitingen en item-id's voor zowel breed als diep deel.

  11. Dimensie item insluiten: typ een geheel getal om de dimensie van item-id's insluiten op te geven.

  12. Categorische functies insluitdimensie: voer een geheel getal in om de dimensies van categorische functie-insluitingen op te geven.

    In een deep component van Wide & Deep recommender wordt een insluitvector geleerd voor elke categorische functie. En deze insluitvectors delen dezelfde dimensie.

  13. Verborgen eenheden: typ het aantal verborgen knooppunten van een diep onderdeel. Het knooppuntnummer in elke laag wordt gescheiden door komma's. Als u bijvoorbeeld '1000.500.100' typt, geeft u op dat het diepe onderdeel drie lagen heeft, waarbij de eerste laag tot het laatste respectievelijk 1000 knooppunten, 500 knooppunten en 100 knooppunten bevat.

  14. Activeringsfunctie: selecteer één activeringsfunctie die op elke laag wordt toegepast, de standaardwaarde is ReLU.

  15. Vervolgkeuzelijst: voer tijdens de training een getal tussen 0,0 en 1,0 in om de waarschijnlijkheid te bepalen dat de uitvoer in elke laag wordt verwijderd.

    Dropout is een regularisatiemethode om te voorkomen dat neurale netwerken overfitting krijgen. Een veelvoorkomende beslissing voor deze waarde is om te beginnen met 0,5, die bijna optimaal lijkt te zijn voor een breed scala aan netwerken en taken.

  16. Batchnormalisatie: selecteer deze optie om batchnormalisatie te gebruiken na elke verborgen laag in het diepe onderdeel.

    Batchnormalisatie is een techniek voor het bestrijden van interne covariate shift-problemen tijdens de training van netwerken. Over het algemeen kan het helpen om de snelheid, prestaties en stabiliteit van de netwerken te verbeteren.

  17. Voer de pijplijn uit.

Technische notities

De Wide & Deep traint gezamenlijk brede lineaire modellen en diepe neurale netwerken om de sterke punten van memorisatie en generalisatie te combineren. Het brede onderdeel accepteert een set onbewerkte functies en functietransformaties om interacties met functies te onthouden. En met minder functie-engineering generaliseert het diepe onderdeel tot ongeziene functiecombinaties via laagdimensionale dichte functie-insluitingen.

Bij de implementatie van Wide & Deep recommender maakt het onderdeel gebruik van een standaardmodelstructuur. Het brede onderdeel maakt gebruik van insluitingen van gebruikers, iteminsluitingen en de transformatie van gebruikers-id's en item-id's voor meerdere producten als invoer. Voor het diepe deel van het model wordt voor elke categorische functie een insluitvector geleerd. Samen met andere numerieke functievectoren worden deze vectoren vervolgens ingevoerd in het deep feed-forward neurale netwerk. Het brede en diepe deel worden gecombineerd door de uiteindelijke kansen voor uitvoerlogboeken samen te vatten als de voorspelling, die uiteindelijk gaat naar één gemeenschappelijke verliesfunctie voor gezamenlijke training.

Volgende stappen

Bekijk de set onderdelen die beschikbaar zijn voor Azure Machine Learning.