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.
- Zie informatie over het verplaatsen machine learning van ML Studio (klassiek) naar Azure Machine Learning.
- Meer informatie over Azure Machine Learning.
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
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.
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.
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#.
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.
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.
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.
Aantal leer-iteraties: geef het maximum aantal keren op dat de trainingsgevallen moeten worden verwerkt met het algoritme.
De initial learning weightsdiameter: Geef de knooppuntgewichten aan het begin van het leerproces op.
Het tempo: Geef een gewicht op dat moet worden toegepast tijdens het leren op knooppunten uit eerdere iteraties.
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.
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.
Seed met willekeurige getallen: typ een waarde die u als seed wilt gebruiken, als u herhaalbaarheid wilt garanderen voor alle runs van hetzelfde experiment.
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.
Verbinding maken een trainingsset en een van de trainingsmodules:
Als u de modus Create train mode instelt op Single Parameter, gebruikt u Train Model.
Als u de modus Create parameters in steltop Parameterbereik, gebruikt u Tune Model Hyperparameters.
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:
- Voorbeeld van deep neurale netwerken (deel A)
- Voorbeeld van deep neurale netwerken (deel B)
- Voorbeeld van deep neurale netwerken (deel C)
- Voorbeeld van deep neurale netwerken (deel D)
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