Neuraal netwerk met meerdere klassen

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 classificatiemodel met meerdere klassen met behulp van een neuraal netwerkalgoritme

Categorie: Machine Learning/Model/classificatie initialiseren

Notitie

Van toepassing op: Machine Learning Studio (klassiek)

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

Moduleoverzicht

In dit artikel wordt beschreven hoe u de module Multiclass Neural Network in Machine Learning Studio (klassiek) gebruikt om een neuraal netwerkmodel te maken dat kan worden gebruikt om een doel met meerdere waarden te voorspellen.

Neurale netwerken van dit type kunnen bijvoorbeeld worden gebruikt in complexe Computer Vision-taken, zoals cijfer- of letterherkenning, documentclassificatie en patroonherkenning.

Classificatie met neurale netwerken is een leermethode onder supervisie en vereist daarom een gelabelde gegevensset die een labelkolom bevat.

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.

Meer informatie over neurale netwerken

Een neuraal netwerk is een set onderling verbonden lagen. De invoer is de eerste laag en is verbonden met een uitvoerlaag door een acyclische graaf die bestaat uit gewogen randen en knooppunten.

Tussen de invoer- en uitvoerlagen kunt u meerdere verborgen lagen invoegen. De meeste voorspellende taken kunnen eenvoudig worden uitgevoerd met slechts één of enkele verborgen lagen. Recent onderzoek heeft echter aangetoond dat Deep Neural Networks (DNN) met veel lagen zeer effectief kunnen zijn bij complexe taken, zoals afbeeldings- of spraakherkenning. De opeenvolgende lagen worden gebruikt voor het modelleren van toenemende niveaus van semantische diepte.

De relatie tussen invoer en uitvoer wordt geleerd uit het trainen van het neurale netwerk op de invoergegevens. De richting van de grafiek gaat verder van de invoer via de verborgen laag en naar de uitvoerlaag. Alle knooppunten in een laag zijn via de gewogen randen verbonden met knooppunten in de volgende laag.

Voor het berekenen van de uitvoer van het netwerk voor een bepaalde invoer wordt een waarde berekend op elk knooppunt in de verborgen lagen en in de uitvoerlaag. De waarde wordt ingesteld door de gewogen som van de waarden van de knooppunten uit de vorige laag te berekenen. Een activeringsfunctie wordt vervolgens toegepast op die gewogen som.

Neuraal netwerk met meerdere klasses configureren

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

  2. De modus Train maken: Gebruik deze optie om op te geven hoe u het model wilt trainen:

    • Eén 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 en een parameter-opsruiming wilt gebruiken. Vervolgens geeft u een bereik van waarden op en gebruikt u de module Tune Model Hyperparameters om de combinaties te controleren en de optimale configuratie te vinden.

  3. Specificatie van verborgen laag: selecteer het type netwerkarchitectuur dat u wilt maken.

    • Volledig verbonden case: selecteer deze optie om een model te maken met behulp van de standaardarchitectuur van het neurale netwerk. Voor neurale netwerkmodellen met meerdere klasses zijn de standaardwaarden als volgt:

      • Eén verborgen laag
      • De uitvoerlaag is volledig verbonden met de verborgen laag.
      • De verborgen laag is volledig verbonden met de invoerlaag.
      • Het aantal knooppunten in de invoerlaag wordt bepaald door het aantal functies in de trainingsgegevens.
      • Het aantal knooppunten in de verborgen laag kan door de gebruiker worden ingesteld. De standaardwaarde is 100.
      • Het aantal knooppunten in de uitvoerlaag is afhankelijk van het aantal klassen.
    • Aangepast definitiescript. Kies deze optie om een aangepaste architectuur voor een neuraal netwerk te maken met behulp van de Net#-taal. U kunt het aantal verborgen lagen, de verbindingen en geavanceerde opties definiëren, zoals het opgeven van de toewijzingen tussen lagen. Zie Meer informatie over Net # verder in dit onderwerp voor een inleiding tot Net#.

  4. Definitie van neuraal netwerk: als u de optie aangepaste architectuur hebt geselecteerd, gebruikt u het tekstvak om instructies in te typen of plakken die zijn geschreven in de Net#-taal. Zie Guide to the Net# Neural Networks Specification Language (Engelstalig) voor aanvullende scriptvoorbeelden.

  5. Aantal verborgen knooppunten: met deze optie kunt u het aantal verborgen knooppunten in de standaardarchitectuur aanpassen. Typ het aantal verborgen knooppunten. De standaardwaarde is één verborgen laag met 100 knooppunten.

  6. De leersnelheid: Definieer de grootte van de stap die bij elke iteratie wordt genomen, vóór correctie. Een grotere waarde voor de leersnelheid kan ertoe leiden dat het model sneller convergeert, maar het kan lokale minima overschreed.

  7. Aantal leer-iteraties: geef het maximum aantal keren op dat de trainingsgevallen moeten worden verwerkt met het algoritme.

  8. De initial learning weightsdiameter: Geef de knooppuntgewichten aan het begin van het leerproces op.

  9. Het tempo: Geef een gewicht op dat moet worden toegepast tijdens het leren op knooppunten uit eerdere iteraties.

  10. Het type normalizer: selecteer de methode die moet worden gebruikt voor functienormalisatie. De volgende normalisatiemethoden worden ondersteund:

    • Normalizer voor binning: de binning-normalizer maakt bins van gelijke grootte en normaliseert vervolgens elke waarde in elke bin door te delen door het totale aantal bins.

    • Gaussiaanse normalizer: de Gaussiaanse normalizer schaalt de waarden van elke functie opnieuw naar gemiddelde 0 en afwijking 1. Dit wordt gedaan door het gemiddelde en de afwijking van elke functie te berekenen. Voor elke instantie wordt de gemiddelde waarde afgetrokken en wordt het resultaat gedeeld door de vierkantswortel van de afwijking (de standaarddeviatie).

    • Min-max normalizer: de normalizer min-max wordt 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.

  11. Voorbeelden in willekeurige volgorde: selecteer deze optie om cases tussen iteraties te shufflen.

    Als u deze optie deselecteert, worden cases elke keer dat u het experiment uitvoeren in exact dezelfde volgorde verwerkt.

  12. Seed met willekeurige getallen: typ een waarde die u als seed wilt gebruiken, als u herhaalbaarheid wilt garanderen voor alle runs van hetzelfde experiment.

  13. Onbekende categorische niveaus toestaan: selecteer deze optie om een groepering te maken voor onbekende waarden in de trainings- en validatiesets. Het model is mogelijk minder nauwkeurig op bekende waarden, maar biedt betere voorspellingen voor nieuwe (onbekende) waarden.

    Als u deze optie deselecteert, kan het model alleen de waarden accepteren die zijn opgenomen in de trainingsgegevens.

  14. Verbinding maken een trainingsset en een van de trainingsmodules:

    Notitie

    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 gebruikt 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, overal in het bereik gebruikt, zelfs als andere parameters worden gewijzigd binnen een bereik van waarden.

Resultaten

Nadat de training is voltooid:

  • Als u een samenvatting wilt zien van de parameters van het model, samen met de functiegewichten die zijn geleerd van de training en andere parameters van het neurale netwerk, klikt u met de rechtermuisknop op de uitvoer van Train Model of Tune Model Hyperparameters en selecteert u Visualize.

  • 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 niet-getrainde model met Kruisvalidatiemodel.

Voorbeelden

Zie deze voorbeeldexperimenten in de Azure AI Gallery voor voorbeelden van hoe dit leeralgoritme wordt Azure AI Gallery. De experimenten zijn gerelateerd en beschreven in één document dat van basisconfiguraties naar geavanceerde configuraties gaat:

Technische opmerkingen

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

Het neurale netwerk aanpassen met behulp van een script

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 gewicht 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: deze worden ook wel verborgen lagen genoemd, omdat ze zijn opgenomen in het model en ze niet rechtstreeks als eindpunten worden blootgesteld.

In de Net#-referentiegids 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 het aantal functies automatisch wordt ingesteld voor invoer- en uitvoerlagen 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 (Engelstalig) 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 vegen (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 initial learning weightsdiameter >= dubbel. Epsilon Float 0,1 Geef het knooppuntgewicht aan het begin van het leerproces op
De leersnelheid [dubbel. Epsilon;1.0] Float 0,1 De grootte van elke stap in het leerproces opgeven
Het aantal [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 op elke regel een geldige scriptexpressie om de lagen, knooppunten en het gedrag van een aangepast neuraal netwerk te definiëren
Het type normalizer Lijst Normalisatiemethode Minimum-maximum normalizer Selecteer het type normalisatie dat moet worden toegepast op leervoorbeelden
Aantal leer-iteraties >= 1 Geheel getal 100 Het aantal iteraties opgeven tijdens het leren
Voorbeelden in willekeurige volgorde Alle Boolean-waarde 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.
Onbekende categorische niveaus toestaan Alle Boolean-waarde 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 deze toegewezen aan dit onbekende niveau.

Uitvoer

Naam Type Description
Niet-getraind model ILearner-interface Een ongetraind classificatiemodel met meerdere klassen

Zie ook

Classificatie
Neuraal netwerk met twee klassen
Regressie neuraal netwerk
Lijst met A-Z-modules