Neural Network med flera klasser

Skapar en klassificeringsmodell med flera klasser med hjälp av en algoritm för neuralt nätverk

Kategori: Machine Learning/initiera modell/klassificering

Anteckning

Gäller för: Machine Learning Studio (klassisk)

Det här innehållet gäller endast Studio (klassisk). Liknande dra-och släpp moduler har lagts till i Azure Machine Learning designer. Mer information i den här artikeln är att jämföra de två versionerna.

Modulöversikt

Den här artikeln beskriver hur du använder modulen Neural Network med multiklass i Azure Machine Learning Studio (klassisk) för att skapa en modell för neuralt nätverk som kan användas för att förutsäga ett mål som har flera värden.

Neurala nätverk av den här typen kan till exempel användas i komplexa uppgifter för datorseende, till exempel taligenkänning eller bokstavsigenkänning, dokumentklassificering och mönsterigenkänning.

Klassificering med neurala nätverk är en metod för övervakad inlärning och kräver därför en taggad datamängd som innehåller en etikettkolumn.

Du kan träna modellen genom att tillhandahålla modellen och den taggade datauppsättningen som indata för att träna modellen eller finjustera modellens hyperparametrar. Den tränade modellen kan sedan användas för att förutsäga värden för de nya indataexempel.

Mer om neurala nätverk

Ett neuralt nätverk är en uppsättning sammankopplade lager. Indata är det första skiktet och är anslutna till ett utdataskikt med ett acykliskt diagram som består av viktade kanter och noder.

Mellan indata- och utdataskikten kan du infoga flera dolda lager. De flesta förutsägande uppgifter kan enkelt utföras med bara ett eller några få dolda lager. Den senaste forskningen har dock visat att djupa neurala nätverk (DNN) med många lager kan vara mycket effektiva i komplexa uppgifter som bild- eller taligenkänning. De efterföljande lagren används för att modellera ökande nivåer av semantiskt djup.

Relationen mellan indata och utdata lärs in från träning av det neurala nätverket på indata. Grafens riktning fortsätter från indata genom det dolda skiktet och till utdataskiktet. Alla noder i ett lager ansluts med de viktade kanterna till noderna i nästa lager.

För att beräkna nätverkets utdata för en viss indata beräknas ett värde på varje nod i de dolda lagren och i utdataskiktet. Värdet anges genom att den viktade summan av värdena för noderna från föregående lager beräknas. En aktiveringsfunktion tillämpas sedan på den viktade summan.

Så här konfigurerar du neurala nätverk med flera klasser

  1. Lägg till modulen MultiClass Neural Network i experimentet i Studio (klassisk). Du hittar den här modulen under Machine Learning, Initiera, i kategorin Klassificering.

  2. Skapa utbildarläge: Använd det här alternativet för att ange hur du vill att modellen ska tränas:

    • Enskild parameter: Välj det här alternativet om du redan vet hur du vill konfigurera modellen.

    • Parameterintervall: Välj det här alternativet om du inte är säker på de bästa parametrarna och vill använda en parametersökning. Sedan anger du ett värdeintervall och använder modulen Tune Model Hyperparameters för att iterera över kombinationerna och hitta den optimala konfigurationen.

  3. Specifikation för dolt lager: Välj vilken typ av nätverksarkitektur som ska skapas.

    • Fullständigt anslutet ärende: Välj det här alternativet om du vill skapa en modell med standardarkitekturen för neurala nätverk. För modeller med neurala nätverk med flera klasser är standardvärdena följande:

      • Ett dolt skikt
      • Utdataskiktet är helt anslutet till det dolda skiktet.
      • Det dolda lagret är helt anslutet till indataskiktet.
      • Antalet noder i indatalagret bestäms av antalet funktioner i träningsdata.
      • Antalet noder i det dolda lagret kan anges av användaren. Standardvärdet är 100.
      • Antalet noder i utdataskiktet beror på antalet klasser.
    • Anpassat definitionsskript. Välj det här alternativet om du vill skapa en anpassad arkitektur för neurala nätverk med hjälp av Net#-språket. Du kan definiera antalet dolda lager, deras anslutningar och avancerade alternativ, till exempel att ange mappningar mellan lager. En introduktion till Net# finns i Mer om Net# senare i det här avsnittet.

  4. Definition för neuralt nätverk: Om du valde alternativet för anpassad arkitektur använder du textrutan för att skriva eller klistra in instruktioner som skrivits på Net#-språket. Ytterligare skriptexempel finns i Guide to the Net# Neural Networks Specification Language.

  5. Antal dolda noder: Med det här alternativet kan du anpassa antalet dolda noder i standardarkitekturen. Ange antalet dolda noder. Standardvärdet är ett dolt lager med 100 noder.

  6. Inlärningstakten: Definiera storleken på det steg som tas vid varje iteration, före korrigeringen. Ett större värde för inlärningstakt kan göra att modellen konvergerar snabbare, men den kan köra över lokalt minima.

  7. Antal iterationer av inlärning: Ange det maximala antalet gånger som algoritmen ska bearbeta träningsfallen.

  8. Den inledande inlärningens vikter: Ange nodvikterna i början av inlärningsprocessen.

  9. The kg: Ange en vikt som ska tillämpas under inlärningen till noder från tidigare iterationer.

  10. Typ av normaliserare: Välj den metod som ska användas för funktions normalisering. Följande normaliseringsmetoder stöds:

    • Binerings normaliserare: Binerings normaliseraren skapar lagerplatser med samma storlek och normaliserar sedan varje värde i varje lagerplats genom att dividera med det totala antalet lagerplatser.

    • Gaussisk normaliserare: Den gaussiska normaliseraren skalar om värdena för varje funktion så att de har medelvärdet 0 och varians 1. Detta görs genom att beräkna medelvärdet och variansen för varje funktion. För varje instans subtraheras medelvärdet och resultatet divideras med kvadratroten för variansen (standardavvikelsen).

    • Min-max normalizer: Min-max-normaliseraren skalar om varje funktion linjärt till intervallet [0,1].

      Omskalning till intervallet [0,1] görs genom att flytta värdena för varje funktion så att det minimala värdet är 0 och sedan dividera med det nya maxvärdet (vilket är skillnaden mellan det ursprungliga högsta och det minsta värdet).

    • Normalisera inte: Ingen normalisering utförs.

  11. Blanda exempel: Välj det här alternativet om du vill blanda ärenden mellan iterationer.

    Om du avmarkerar det här alternativet bearbetas ärenden i exakt samma ordning varje gång du kör experimentet.

  12. Startvärde för slumptal: Ange ett värde som ska användas som startvärde om du vill säkerställa repeterbarhet mellan körningar av samma experiment.

  13. Tillåt okända kategoriska nivåer: Välj det här alternativet om du vill skapa en gruppering för okända värden i tränings- och valideringsuppsättningarna. Modellen kan vara mindre exakt vad gäller kända värden, men ger bättre förutsägelser för nya (okända) värden.

    Om du avmarkerar det här alternativet kan modellen bara acceptera de värden som finns i träningsdata.

  14. Anslut en datauppsättning för träning och en av träningsmodulerna:

    Anteckning

    Om du skickar ett parameterintervall till Train Model(Träna modell) används bara det första värdet i listan med parameterintervall.

    Om du skickar en enda uppsättning parametervärden till modulen Tune Model Hyperparameters ignoreras värdena och standardvärdena för learner används när ett antal inställningar för varje parameter förväntas.

    Om du väljer alternativet Parameterintervall och anger ett enda värde för en parameter används det enskilda värde som du angav under hela omfånget, även om andra parametrar ändras över ett värdeintervall.

Resultat

När träningen är klar:

  • Om du vill se en sammanfattning av modellens parametrar, tillsammans med de funktionsvikter som lärts in från träningen och andra parametrar i det neurala nätverket, högerklickar du på utdata från Träningsmodell eller Finjustera hyperparametrarför modell och väljer Visualisera.

  • Om du vill spara en ögonblicksbild av den tränade modellen högerklickar du på utdata för den tränade modellen och väljer Spara som tränad modell. Den här modellen uppdateras inte på efterföljande körningar av samma experiment.

  • Om du vill utföra korsvalidering mot en etiketterad datauppsättning ansluter du den tränade modellen till korsvalideringsmodellen.

Exempel

Exempel på hur den här inlärningsalgoritmen används finns i dessa exempelexperiment i Azure AI Gallery. Experimenten är relaterade och beskrivs i ett enda dokument som går från grundläggande till avancerade konfigurationer:

Teknisk information

Det här avsnittet innehåller implementeringsinformation, tips och svar på vanliga frågor.

Anpassa det neurala nätverket med hjälp av skript

I Azure Machine Learning Studio (klassisk) kan du anpassa arkitekturen för en modell för neuralt nätverk med hjälp av Net#-språket. Anpassningar som stöds av Net#-språket är:

  • Ange antalet dolda lager och antalet noder i varje lager
  • Ange mappningar mellan lager
  • Definiera konvolutioner och viktdelningspaket
  • Välja aktiveringsfunktion

En modell för neuralt nätverk definieras av strukturen i diagrammet, som innehåller följande attribut:

  • Antalet dolda lager
  • Antalet noder i varje dolt lager
  • Hur lagren är anslutna
  • Vilken aktiveringsfunktion används
  • Vikter på grafens kanter

Viktigt

Grafens övergripande struktur, samt aktiveringsfunktionen, kan anges av användaren. Vikterna på kanterna kan dock inte anges och måste läras in när det neurala nätverket tränas på indata.

I allmänhet har nätverket följande standardinställningar:

  • Det första lagret är alltid indataskiktet.
  • Det sista lagret är alltid utdataskiktet.
  • Antalet noder i utdataskiktet ska vara lika med antalet klasser.

Du kan definiera hur många mellanliggande lager som helst: de kallas ibland dolda lager, eftersom de finns i modellen och de inte exponeras direkt som slutpunkter.

Referensguiden för Net# förklarar syntaxen och innehåller exempel på nätverksdefinitioner. Den förklarar hur du kan använda Net# för att lägga till dolda lager och definiera hur de olika lagren interagerar med varandra.

Följande skript använder till exempel nyckelordet , som anger antalet funktioner automatiskt för indata- och utdataskikt och använder standardvärdena auto för det dolda skiktet.

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

Ytterligare skriptexempel finns i Guide to the Net# Neural Networks Specification Language.

Tips

Neurala nätverk kan vara beräkningsmässigt dyra på grund av ett antal hyperparametrar och införandet av anpassade nätverks topologier. Även om neurala nätverk ofta ger bättre resultat än andra algoritmer kan det innebära en hel del avsökning (iterationer) över hyperparametrar att få sådana resultat.

Modulparametrar

Name Intervall Typ Standardvärde Description
Specifikation för dolt lager Lista Topologi för neuralt nätverk Fullständigt anslutet ärende Ange arkitekturen för det dolda skiktet eller lagren
Den inledande inlärningens vikter >=double. Epsilon Float 0.1 Ange nodvikterna i början av inlärningsprocessen
Inlärningstakten [double. Epsilon;1.0] Float 0.1 Ange storleken på varje steg i inlärningsprocessen
The 10 [0.0;1.0] Float 0.0 Ange en vikt som ska tillämpas under inlärningen till noder från tidigare iterationer
Definition av neuralt nätverk Valfri StreamReader När du väljer Anpassat definitionsskript skriver du ett giltigt skriptuttryck på varje rad för att definiera lager, noder och beteende för ett anpassat neuralt nätverk
Typ av normaliserare Lista Normaliseringsmetod Minsta tillåtna normaliserare Välj vilken typ av normalisering som ska tillämpas på inlärningsexempel
Antal iterationer för inlärning >=1 Integer 100 Ange antalet iterationer under inlärningen
Blanda exempel Valfri Boolesk Sant Välj det här alternativet om du vill ändra ordningen på instanserna mellan inlärnings-iterationer
Startnummer för slumptal Valfri Integer Ange ett numeriskt startvärdet som ska användas för generering av slumptal. Lämna tomt om du vill använda standardvärdet för seed.
Tillåt okända kategoriska nivåer Valfri Boolesk Sant Ange om ytterligare en nivå ska skapas för okända kategorier. Om testdatamängden innehåller kategorier som inte finns i träningsdatamängden mappas de till den här okända nivån.

Utdata

Namn Typ Description
Ej tränad modell ILearner-gränssnitt En otränad klassificeringsmodell med flera klasser

Se även

Klassificering
Neural Network med två klasser
Regression av neurala nätverk
A-Z-modullista