Dela via


Neural Network med två klasser

Skapar en binär klassificerare med hjälp av en algoritm för neuralt nätverk

Kategori: Machine Learning/initiera modell/klassificering

Anteckning

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

Liknande dra och släpp-moduler är tillgängliga i Azure Machine Learning designer.

Modulöversikt

Den här artikeln beskriver hur du använder modulen Neural Network med två klasser i 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 bara har två värden.

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 till exempel använda den här modellen för neurala nätverk för att förutsäga binära resultat, till exempel om en patient har en viss sjukdom eller om en dator sannolikt kommer att misslyckas inom en angiven tidsperiod.

När du har definierat modellen tränar du den genom att ange en taggad datauppsättning och modellen 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 nya indata.

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 bestående 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 beräknas från föregående lager. En aktiveringsfunktion tillämpas sedan på den viktade summan.

Så här konfigurerar du Two-Class neurala nätverk

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

  2. Ange hur du vill att modellen ska tränas genom att ange alternativet Skapa utbildarläge .

    • 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. Ange sedan ett värdeintervall och använd modulen Justera hyperparametrar för modell för att iterera över kombinationerna och hitta den optimala konfigurationen.

  3. För Specifikation av dolt lager väljer du vilken typ av nätverksarkitektur som ska skapas.

    • Fullständigt anslutet fall: Använder standardarkitekturen för neurala nätverk, som definierats för neurala nätverk med två klasser på följande sätt:

      • Har ett dolt lager.

      • Utdataskiktet är helt anslutet till det dolda skiktet och det dolda skiktet är helt anslutet till indataskiktet.

      • Antalet noder i indatalagret är lika med antalet funktioner i träningsdata.

      • Antalet noder i det dolda lagret anges av användaren. Standardvärdet är 100.

      • Antalet noder är lika med antalet klasser. För ett neuralt nätverk med två klasser innebär det att alla indata måste mappas till en av två noder i utdataskiktet.

    • 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. Med det här alternativet kan du definiera antalet dolda lager, deras anslutningar och mappningar mellan lager.

    När du har valt alternativet för anpassat skript går du till textrutan Definition av neuralt nätverk och skriver eller klistrar in Net#-instruktioner som definierar nätverket. Exempel finns i Guide to the Net# Neural Networks Specification Language (Guide till Net# Neural Networks Specification Language).

  4. Om du inte använder skriptalternativet använder du Antal dolda noder och anger antalet dolda noder. Standardvärdet är ett dolt lager med 100 noder.

  5. För Learning anger du storleken på det steg som ska vidtas 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.

  6. För Antal iterationer av inlärning anger du det maximala antalet gånger som algoritmen ska bearbeta träningsfallen.

  7. För Den inledande inlärningens vikter, anger du nodvikterna i början av inlärningsprocessen.

  8. Ange en vikt som ska användas under inlärningen av noder från tidigare iterationer för the

  9. I Typen av normaliserare väljer du en 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 på varje lagerplats, dividera med det totala antalet lagerplatser.

    • Gaussisk normaliserare: Den gaussiska normaliseraren skalar om värdena för varje funktion så att den 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 av variansen (standardavvikelsen).

    • Min-max normalizer: Min-max normalizer omskalar linjärt varje funktion 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.

  10. Välj alternativet Blanda exempel för att blanda ärenden mellan iterationer. Om du avmarkerar det här alternativet bearbetas ärenden i exakt samma ordning varje gång du kör experimentet.

  11. För Startvärde för slumptal anger du ett värde som ska användas som startvärde.

    Det är praktiskt att ange ett startvärde när du vill säkerställa repeterbarhet mellan körningar av samma experiment. Annars används ett systemklockavärde som startvärde, vilket kan orsaka något olika resultat varje gång du kör experimentet.

  12. Välj alternativet Tillåt okända kategoriska nivåer för att skapa en gruppering för okända värden i tränings- och valideringsuppsättningarna. Modellen kan vara mindre exakt för 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.

  13. Lägg till en taggad datauppsättning i experimentet och anslut 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 Hyperparameters för tune model 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ärdet under hela omfånget, även om andra parametrar ändras över ett värdeintervall.

  14. Kör experimentet.

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 hyperparametrar fö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 Azure AI Gallery. Dessa experiment ä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.

Mer om Net #

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

  • Ange antalet dolda skikt 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 du tränar det neurala nätverket 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 utdatalagret ska vara lika med antalet klasser.

Du kan definiera ett antal mellanliggande lager (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 auto nyckelordet , som anger antalet funktioner automatiskt för indata- och utdatalager och använder standardvärdena för det dolda skiktet.

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

Fler skriptexempel finns i Guide to the Net# Neural Networks Specification Language (Guide till 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 i många fall ger bättre resultat än andra algoritmer kan det innebära att få sådana resultat en hel del avsökning (iterationer) över hyperparametrar.

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ärningstakt [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 Min-Max 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 som utförs under inlärningen
Shuffle-exempel Valfri Boolesk true Välj det här alternativet om du vill ändra ordningen på instanserna mellan inlärnings iterationer
Slumptals seed Valfri Integer Ange ett numeriskt startvärdet som ska användas för generering av slumptal. Lämna det tomt om du vill använda standardvärdet för seed.
Tillåt okända kategoriska nivåer Valfri Boolesk Sant Anger 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 omtränad binär klassificeringsmodell

Se även

Klassificering
Regression för Neural Network
Neural Network med flera klasser
A-Z-modullista