Delen via


Regressie neuraal netwerk

Belangrijk

De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.

Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

Hiermee maakt u een regressiemodel met behulp van een neuraal netwerkalgoritme

Categorie: Machine Learning/ Model initialiseren/regressie

Notitie

Van toepassing op: Machine Learning Studio (klassiek)

Vergelijkbare modules voor slepen en neerzetten zijn beschikbaar in Azure Machine Learning designer.

Moduleoverzicht

In dit artikel wordt beschreven hoe u de module Neural Network Regression in Machine Learning Studio (klassiek) gebruikt om een regressiemodel te maken met behulp van een aanpasbaar neuraal netwerkalgoritme.

Hoewel neurale netwerken algemeen bekend staan voor gebruik in deep learning en het modelleren van complexe problemen zoals afbeeldingsherkenning, kunnen ze eenvoudig worden aangepast aan regressieproblemen. Elke klasse statistische modellen kan worden gezien als een neuraal netwerk als ze adaptieve gewichten gebruiken en bij benadering niet-lineaire functies van hun invoer kunnen benaderen. Neurale netwerkregressie is daarom geschikt voor problemen waarbij een meer traditioneel regressiemodel niet geschikt is voor een oplossing.

Neurale netwerk regressie is een leermethode onder supervisie en vereist daarom een gelabelde gegevensset , die een labelkolom bevat. Omdat een regressiemodel een numerieke waarde voorspelt, moet de labelkolom een numeriek gegevenstype zijn.

U kunt het model trainen door het model en de getagde gegevensset op te geven als invoer voor Train Model of Tune Model Hyperparameters. Het getrainde model kan vervolgens worden gebruikt om waarden voor de nieuwe invoervoorbeelden te voorspellen.

Neurale netwerk regressie configureren

Neurale netwerken kunnen uitgebreid worden aangepast. In deze sectie wordt beschreven hoe u een model maakt met behulp van twee methoden:

  • Een neuraal netwerkmodel maken met behulp van de standaardarchitectuur

    Als u de standaardarchitectuur voor neurale netwerken accepteert, gebruikt u het deelvenster Eigenschappen om parameters in te stellen die het gedrag van het neurale netwerk bepalen, zoals het aantal knooppunten in de verborgen laag, leersnelheid en normalisatie.

    Begin hier als u geen verbinding hebt met neurale netwerken. De module ondersteunt veel aanpassingen, evenals het afstemmen van modellen, zonder diepgaande kennis van neurale netwerken.

  • Een aangepaste architectuur voor een neuraal netwerk definiëren

    Gebruik deze optie als u extra verborgen lagen wilt toevoegen of de netwerkarchitectuur, de verbindingen en activeringsfuncties volledig wilt aanpassen.

    Deze optie is het beste als u al enigszins bekend bent met neurale netwerken. U gebruikt de Net#-taal om de netwerkarchitectuur te definiëren.

Een neuraal netwerkmodel maken met behulp van de standaardarchitectuur

  1. Voeg de module Neural Network Regression toe aan uw experiment in Studio (klassiek). U vindt deze module onder Machine Learning, Initialiseren, in de categorie Regressie.

  2. Geef aan hoe u het model wilt trainen door de optie Trainer-modus maken in te stellen.

    • Enkele parameter: kies deze optie als u al weet hoe u het model wilt configureren.

    • Parameterbereik: kies deze optie als u niet zeker bent van de beste parameters. Geef vervolgens een bereik van waarden op en gebruik de module Tune Model Hyperparameters om de combinaties te controleren en de optimale configuratie te vinden.

  3. Selecteer bij Specificatie verborgen laag de optie Volledig verbonden case. Met deze optie maakt u een model met behulp van de standaardarchitectuur van het neurale netwerk, dat voor een neuraal netwerk regressiemodel de volgende kenmerken heeft:

    • Het netwerk heeft precies één verborgen laag.
    • De uitvoerlaag is volledig verbonden met de verborgen laag en de verborgen laag is volledig verbonden met de invoerlaag.
    • Het aantal knooppunten in de verborgen laag kan door de gebruiker worden ingesteld (de standaardwaarde is 100).

    Omdat het aantal knooppunten in de invoerlaag wordt bepaald door het aantal functies in de trainingsgegevens, kan er in een regressiemodel slechts één knooppunt in de uitvoerlaag zijn.

  4. Bij Aantal verborgen knooppunten typt u het aantal verborgen knooppunten. De standaardwaarde is één verborgen laag met 100 knooppunten. (Deze optie is niet beschikbaar als u een aangepaste architectuur definieert met Net#.)

  5. Voor Learning snelheid typt u een waarde die de stap definieert die bij elke iteratie wordt genomen, vóór correctie. Een grotere waarde voor leersnelheid kan ertoe leiden dat het model sneller convergeert, maar het kan lokale minima overschreed.

  6. Geef bij Aantal leer iteraties het maximum aantal keren op dat het algoritme de trainingsgevallen verwerkt.

  7. Voor de initiële lengte van het leergewicht typt u een waarde die de knooppuntgewichten aan het begin van het leerproces bepaalt.

  8. Typ bij The type a value to apply during learning as a weight on nodes from previous iterations ( Een waarde die moet worden toegepast tijdens het leren) als een gewicht op knooppunten uit eerdere iteraties.

  9. Kies voor Het type normalizer een van de volgende methoden om te gebruiken voor functienormalisatie:

    • Normalizer voor binning: Binning maakt groepen van gelijke grootte en normaliseert vervolgens elke waarde in elke groep om te worden gedeeld door het totale aantal groepen.

    • Gaussian normalizer: Gaussiaanse normalisatie schaalt de waarden van elke functie opnieuw naar gemiddelde 0 en afwijking 1. Dit wordt gedaan door het gemiddelde en de variantie van elke functie te berekenen en vervolgens voor elke instantie de gemiddelde waarde af te trekken en te delen door de vierkantswortel van de afwijking (de standaarddeviatie).

    • Min-Max normalizer: Met min-max normalisering wordt elke functie lineair geschaald naar het interval [0,1].

      Het opnieuw schalen naar het interval [0,1] wordt uitgevoerd door de waarden van elke functie te verschuiven zodat de minimale waarde 0 is en vervolgens te delen door de nieuwe maximale waarde (het verschil tussen de oorspronkelijke maximale en minimale waarden).

    • Niet normaliseren: Er wordt geen normalisatie uitgevoerd.

  10. Selecteer de optie Voorbeelden in willekeurige volgorde plaatsen om de volgorde van cases tussen iteraties te wijzigen. Als u deze optie deselecteert, worden cases elke keer dat u het experiment uitvoeren in exact dezelfde volgorde verwerkt.

  11. Voor seed van willekeurige getallen kunt u eventueel een waarde typen die u als seed wilt gebruiken. Het opgeven van een seed-waarde is handig als u herhaalbaarheid wilt garanderen voor alle runs van hetzelfde experiment.

  12. Selecteer de optie Onbekende categorische niveaus toestaan om een groepering voor onbekende waarden te maken. Het model is mogelijk minder nauwkeurig op bekende waarden, maar biedt betere voorspellingen voor nieuwe (onbekende) waarden.

    Als u deze optie uitselecteert, kan het model alleen de waarden in de trainingsgegevens accepteren.

  13. Verbinding maken een trainingsdatset en een van de trainingsmodules:

    Waarschuwing

    Als u een parameterbereik doorgeeft aan Train Model, wordt alleen de eerste waarde in de lijst met parameterbereiken gebruikt.

    Als u één set parameterwaarden doorgeeft aan de module Tune Model Hyperparameters , worden de waarden genegeerd en worden de standaardwaarden voor de learner genegeerd wanneer er een bereik van instellingen voor elke parameter wordt verwacht.

    Als u de optie Parameterbereik selecteert en één waarde voor een parameter ingeeft, wordt die ene waarde die u hebt opgegeven, gebruikt tijdens het opruimen, zelfs als andere parameters binnen een bereik van waarden veranderen.

  14. Voer het experiment uit.

Een aangepaste architectuur definiëren

  1. Voeg de module Neural Network Regression toe aan uw experiment.

  2. Geef aan hoe u het model wilt trainen door de optie Trainer-modus maken in te stellen.

    • Enkele parameter: kies deze optie als u al weet hoe u het model wilt configureren.

    • Parameterbereik: kies deze optie als u niet zeker bent van de beste parameters. Geef vervolgens een bereik van waarden op en gebruik de module Tune Model Hyperparameters om de combinaties te controleren en de optimale configuratie te vinden.

  3. Selecteer in Specificatie verborgen laag de optie Aangepast definitiescript. U moet deze optie kiezen als u een aangepaste neurale netwerkarchitectuur wilt definiëren met behulp van de Net#- taal.

  4. Nadat u de optie Script voor aangepaste definitie hebt geselecteerd, wordt het tekstvak Neurale netwerkdefinitie weergegeven. U kunt net#-script plakken om een aangepaste architectuur voor het neurale netwerk te definiëren, inclusief het aantal verborgen lagen, de verbindingen en geavanceerde opties, zoals het opgeven van de toewijzingen tussen lagen.

  5. Voor Learning snelheid typt u een waarde die de stap definieert die bij elke iteratie wordt genomen, vóór correctie. Een grotere waarde voor leersnelheid kan ertoe leiden dat het model sneller convergeert, maar het kan lokale minima overschreed.

  6. Geef bij Aantal leer iteraties het maximum aantal keren op dat het algoritme de trainingsgevallen verwerkt.

  7. Voor de initiële lengte van het leergewicht typt u een waarde die de knooppuntgewichten aan het begin van het leerproces bepaalt.

  8. Typ bij The type a value to apply during learning as a weight on nodes from previous iterations ( Een waarde die moet worden toegepast tijdens het leren) als een gewicht op knooppunten uit eerdere iteraties.

  9. Kies voor Het type normalizer een van de volgende methoden om te gebruiken voor functienormalisatie:

    • Normalizer voor binning: Binning maakt groepen van gelijke grootte en normaliseert vervolgens elke waarde in elke groep door te delen door het totale aantal groepen.

    • Gaussian normalizer: Gaussiaanse normalisatie schaalt de waarden van elke functie opnieuw naar gemiddelde 0 en afwijking 1. Dit wordt gedaan door het gemiddelde en de variantie van elke functie te berekenen en vervolgens voor elke instantie de gemiddelde waarde af te trekken en te delen door de vierkantswortel van de afwijking (de standaarddeviatie).

    • Min-Max: Met min-max normalisering wordt elke functie lineair geschaald naar het interval [0,1].

      Het opnieuw schalen naar het interval [0,1] wordt uitgevoerd door de waarden van elke functie te verschuiven zodat de minimale waarde 0 is en vervolgens te delen door de nieuwe maximale waarde (het verschil tussen de oorspronkelijke maximale en minimale waarden).

    • Niet normaliseren: Er wordt geen normalisatie uitgevoerd.

  10. Selecteer de optie Voorbeelden in willekeurige volgorde plaatsen om de volgorde van cases tussen iteraties te wijzigen. Als u deze optie deselecteert, worden cases elke keer dat u het experiment uitvoeren in exact dezelfde volgorde verwerkt.

  11. Voor seed van willekeurige getallen kunt u eventueel een waarde typen die u als seed wilt gebruiken. Het opgeven van een seed-waarde is handig als u herhaalbaarheid wilt garanderen voor alle runs van hetzelfde experiment.

  12. Selecteer de optie Onbekende categorische niveaus toestaan om een groepering voor onbekende waarden te maken. Onbekende waarden in de testgegevensset worden aan deze onbekende categorie toegesneden. Met deze optie kan het model iets minder nauwkeurig zijn op bekende waarden, maar betere voorspellingen geven voor nieuwe (onbekende) waarden.

    Als u deze optie uitselecteert, kan het model alleen voorspellingen doen voor de waarden in de trainingsgegevens.

  13. Verbinding maken een trainingsdatset en een van de trainingsmodules:

    Waarschuwing

    Als u een parameterbereik doorgeeft aan Train Model, wordt alleen de eerste waarde in de lijst met parameterbereiken gebruikt.

    Als u één set parameterwaarden doorgeeft aan de module Tune Model Hyperparameters , worden de waarden genegeerd en worden de standaardwaarden voor de learner genegeerd wanneer er een bereik van instellingen voor elke parameter wordt verwacht.

    Als u de optie Parameterbereik selecteert en één waarde voor een parameter ingeeft, wordt die ene waarde die u hebt opgegeven, gedurende de hele wisseling gebruikt, zelfs als andere parameters binnen een bereik van waarden veranderen.

  14. Voer het experiment uit.

Resultaten

Nadat de training is voltooid:

  • Klik met de rechtermuisknop op de uitvoer van Train Model of Tune Model Hyperparameters en selecteer Visualize om een samenvatting te zien van de parameters van het model, samen met de functiegewichten die zijn geleerd van de training en andere parameters van het neurale netwerk.

  • Als u een momentopname van het getrainde model wilt opslaan, klikt u met de rechtermuisknop op de uitvoer van het getrainde model en selecteert u Opslaan als getraind model. Dit model wordt niet bijgewerkt bij opeenvolgende uitvoeringen van hetzelfde experiment.

  • Als u kruisvalidatie wilt uitvoeren voor een gelabelde gegevensset, verbindt u het ongetrainde model met Kruisvalidatiemodel.

Voorbeelden

Voor voorbeelden van hoe dit algoritme wordt gebruikt in experimenten, bekijkt u deze voorbeelden in de Azure AI Gallery:

De experimenten bieden meer hulp bij Net#. De experimenten zijn gerelateerd en maken voortgang van basisconfiguraties naar geavanceerde configuraties:

Technische opmerkingen

Deze sectie bevat implementatiedetails, tips en antwoorden op veelgestelde vragen.

Meer informatie over Net #

In Machine Learning Studio (klassiek) kunt u de architectuur van een neuraal netwerkmodel aanpassen met behulp van de Net#-taal. Aanpassingen die worden ondersteund door de Net#-taal zijn onder andere:

  • Het aantal verborgen lagen en het aantal knooppunten in elke laag opgeven
  • Toewijzingen tussen lagen opgeven
  • Convoluties en bundels voor het delen van gewichten definiëren
  • De activeringsfunctie kiezen

Een neuraal netwerkmodel wordt gedefinieerd door de structuur van de grafiek, die de volgende kenmerken bevat:

  • Het aantal verborgen lagen
  • Het aantal knooppunten in elke verborgen laag
  • Hoe de lagen zijn verbonden
  • Welke activeringsfunctie wordt gebruikt
  • Gewichten op de graafranden

Belangrijk

De algehele structuur van de grafiek, evenals de activeringsfunctie, kan worden opgegeven door de gebruiker. De gewichten op de randen kunnen echter niet worden opgegeven en moeten worden geleerd bij het trainen van het neurale netwerk op de invoergegevens.

Over het algemeen heeft het netwerk de volgende standaardinstellingen:

  • De eerste laag is altijd de invoerlaag.
  • De laatste laag is altijd de uitvoerlaag.
  • Het aantal knooppunten in de uitvoerlaag moet gelijk zijn aan het aantal klassen.

U kunt een aantal tussenliggende lagen definiëren (ook wel verborgen lagen genoemd, omdat ze zijn opgenomen in het model en ze niet rechtstreeks als eindpunten worden blootgesteld).

In de Net#-referentiehandleiding wordt de syntaxis uitgelegd en worden voorbeelden van netwerkdefinities gegeven. Er wordt uitgelegd hoe u Net# kunt gebruiken om verborgen lagen toe te voegen en de manier te definiëren waarop de verschillende lagen met elkaar communiceren.

In het volgende script auto wordt bijvoorbeeld het trefwoord gebruikt, waarmee automatisch het aantal functies voor invoer- en uitvoerlagen wordt ingesteld en de standaardwaarden voor de verborgen laag worden gebruikt.

input Data auto;  
hidden Hidden auto from Data all;  
output Result auto from Hidden all;   

Zie Guide to the Net# Neural Networks Specification Language (Handleiding voor de specificatietaal van net# neurale netwerken) voor aanvullende scriptvoorbeelden.

Tip

Neurale netwerken kunnen rekenkracht kosten vanwege een aantal hyperparameters en de introductie van aangepaste netwerk topologies. Hoewel neurale netwerken in veel gevallen betere resultaten opleveren dan andere algoritmen, kan het verkrijgen van dergelijke resultaten gepaard gaan met een aanzienlijke hoeveelheid ringen (iteraties) over hyperparameters.

Moduleparameters

Name Bereik Type Standaard Beschrijving
Specificatie van verborgen laag Lijst Neurale netwerktopologie Volledig verbonden case De architectuur van de verborgen laag of lagen opgeven
De initiële gewichten in het leertraject >= dubbel. Epsilon Float 0,1 Geef het knooppuntgewicht aan het begin van het leerproces op
Leersnelheid [dubbel. Epsilon;0.01] Float 0.005 De grootte van elke stap in het leerproces opgeven
Het tempo [0.0;1.0] Float 0,0 Geef een gewicht op dat moet worden toegepast tijdens het leren op knooppunten uit eerdere iteraties
Definitie van neuraal netwerk Alle StreamReader Wanneer u Aangepast definitiescript selecteert, typt u een geldige scriptexpressie op elke regel om de lagen, knooppunten en het gedrag van een aangepast neuraal netwerk te definiëren
Het type normalizer Lijst Normalisatiemethode Min-Max normalizer Selecteer het type normalisatie dat moet worden toegepast op leervoorbeelden
Aantal verborgen knooppunten Alle Tekenreeks 100 Typ het aantal knooppunten in de verborgen laag. Voor meerdere verborgen lagen typt u een door komma's gescheiden lijst.
Aantal leer-iteraties >= 1 Geheel getal 100 Het aantal iteraties opgeven tijdens het leren
Voorbeelden in willekeurige volgorde Alle Booleaans true Selecteer deze optie om de volgorde van exemplaren tussen iteraties te wijzigen
Seed van willekeurig getal Alle Geheel getal Geef een numerieke seed op die moet worden gebruikt voor het genereren van willekeurige getallen. Laat leeg om de standaard seed te gebruiken.

Deze parameter is optioneel
Onbekende categorische niveaus toestaan Alle Booleaans true Geef aan of er een extra niveau moet worden gemaakt voor onbekende categorieën. Als de test gegevensset categorieën bevat die niet aanwezig zijn in de trainingsset, worden ze toegewezen aan dit onbekende niveau.

Uitvoerwaarden

Naam Type Description
Niet-getraind model ILearner-interface Een ongetraind regressiemodel

Zie ook

Regressie
Lijst met A-Z-modules