Neuraal netwerk met twee klassen

Hiermee maakt u een binaire classificatie met behulp van een neuraal netwerkalgoritme

Categorie: Machine Learning/ Model/classificatie initialiseren

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 Neuraal netwerk met twee klassen in Machine Learning Studio (klassiek) gebruikt om een neuraal netwerkmodel te maken dat kan worden gebruikt om een doel te voorspellen dat slechts twee waarden heeft.

Classificatie met neurale netwerken is een leermethode onder supervisie en vereist daarom een gelabelde gegevensset, die een labelkolom bevat. U kunt dit neurale netwerkmodel bijvoorbeeld gebruiken om binaire resultaten te voorspellen, zoals of een patiënt een bepaalde ziekte heeft of dat een computer binnen een opgegeven periode waarschijnlijk zal uitvallen.

Nadat u het model hebt definieert, traint u het door een gelabelde gegevensset en het model op te geven als invoer voor Train Model of Tune Model Hyperparameters. Het getrainde model kan vervolgens worden gebruikt om waarden voor nieuwe invoer 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 semantische diepteniveaus.

De relatie tussen invoer en uitvoer wordt geleerd uit het trainen van het neurale netwerk op de invoergegevens. De richting van de grafiek gaat door 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.

Een neuraal Two-Class configureren

  1. Voeg de module Neuraal netwerk met twee klassen toe aan uw experiment in Studio (klassiek). U vindt deze module onder Machine Learning, Initialiseren, in de categorie Classificatie.

  2. Geef op 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 Verborgen laagspecificatie het type netwerkarchitectuur dat u wilt maken.

    • Volledig verbonden case: maakt als volgt gebruik van de standaardarchitectuur van het neurale netwerk, gedefinieerd voor neurale netwerken van twee klassen:

      • Heeft éé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 invoerlaag is gelijk aan het aantal functies in de trainingsgegevens.

      • Het aantal knooppunten in de verborgen laag wordt ingesteld door de gebruiker. De standaardwaarde is 100.

      • Het aantal knooppunten is gelijk aan het aantal klassen. Voor een neuraal netwerk met twee klassen betekent dit dat alle invoer moet worden verdeeld over een van de twee knooppunten in de uitvoerlaag.

    • Aangepast definitiescript: kies deze optie om een aangepaste neurale netwerkarchitectuur te maken met behulp van de Net#- taal. Met deze optie kunt u het aantal verborgen lagen, de verbindingen en de toewijzingen tussen lagen definiëren.

    Nadat u de aangepaste scriptoptie heeft geselecteerd, typt of plakt u in het tekstvak Definitie van neuraal netwerk Net#-instructies die het netwerk definiëren. Zie Guide to the Net# Neural Networks Specification Language (Engelstalig) voor voorbeelden.

  4. Als u de scriptoptie niet gebruikt, gebruikt u Aantal verborgen knooppunten en typt u het aantal verborgen knooppunten. De standaardwaarde is één verborgen laag met 100 knooppunten.

  5. Voor Learning snelheid definieert u de grootte van de stap 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 iteraties het maximum aantal keren op dat de trainingsgevallen door het algoritme moeten worden verwerkt.

  7. Geef voor De initiële lengte van het leergewicht de knooppuntgewichten aan het begin van het leerproces op.

  8. Geef voor De tijd een gewicht op dat moet worden toegepast tijdens het leren op knooppunten uit eerdere iteraties

  9. Selecteer in Het type normalizer een methode die u wilt gebruiken 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, delend door het totale aantal bins.

    • Gaussian 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 variantie 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.

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

  11. Bij Seed van willekeurig getal typt u een waarde die moet worden gebruikt als de seed.

    Het opgeven van een seed-waarde is handig als u herhaalbaarheid wilt garanderen voor alle runs van hetzelfde experiment. Anders wordt een systeemklokwaarde gebruikt als de seed, wat telkens wanneer u het experiment uit te voeren iets andere resultaten kan veroorzaken.

  12. Selecteer de optie Onbekende categorische niveaus toestaan 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 uitselecteert, kan het model alleen de waarden in de trainingsgegevens accepteren.

  13. Voeg een getagde gegevensset toe aan het experiment en verbind 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 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 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

Zie de Azure AI Gallery voor voorbeelden van hoe dit leeralgoritme wordt Azure AI Gallery. Deze experimenten zijn gerelateerd en beschreven in één document dat wordt uitgevoerd 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 een aanzienlijke hoeveelheid ringen (iteraties) via hyperparameters met zich mee brengen.

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;1.0] Float 0,1 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 leer-iteraties >= 1 Geheel getal 100 Geef het aantal iteraties op dat tijdens het leren is uitgevoerd
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 dit leeg om de standaard seed te gebruiken.
Onbekende categorische niveaus toestaan Alle Boolean-waarde True Aangegeven of er een extra niveau moet worden gemaakt voor onbekende categorieën. Als de testset 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 binair classificatiemodel

Zie ook

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