Dela via


Regression för Neural Network

Viktigt

Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.

Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.

Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.

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

Kategori: Machine Learning/initiera modell/regression

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

I den här artikeln beskrivs hur du använder modulen Neural Network Regression i Machine Learning Studio (klassisk) för att skapa en regressionsmodell med hjälp av en anpassningsbar algoritm för neurala nätverk.

Även om neurala nätverk är allmänt kända för användning inom djupinlärning och modellering av komplexa problem som bildigenkänning, är de enkelt anpassade till regressionsproblem. Alla klasser av statistiska modeller kan kallas neurala nätverk om de använder anpassningsbara vikter och kan göra en ungefärlig uppskattning av icke-linjära funktioner för sina indata. Därför passar regression för neuralt nätverk bra för problem där en mer traditionell regressionsmodell inte passar en lösning.

Regression av 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. Eftersom en regressionsmodell förutsäger ett numeriskt värde måste etikettkolumnen vara en numerisk datatyp.

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.

Så här konfigurerar du regression för neurala nätverk

Neurala nätverk kan anpassas i stor utsträckning. I det här avsnittet beskrivs hur du skapar en modell med två metoder:

  • Skapa en modell för neuralt nätverk med standardarkitekturen

    Om du accepterar standardarkitekturen för neurala nätverk använder du fönstret Egenskaper för att ange parametrar som styr beteendet för det neurala nätverket, till exempel antalet noder i det dolda lagret, inlärningstakt och normalisering.

    Börja här om du inte har börjat med neurala nätverk. Modulen stöder många anpassningar, samt modelljustering, utan djupgående kunskap om neurala nätverk.

  • Definiera en anpassad arkitektur för ett neuralt nätverk

    Använd det här alternativet om du vill lägga till extra dolda lager eller helt anpassa nätverksarkitekturen, dess anslutningar och aktiveringsfunktioner.

    Det här alternativet är bäst om du redan är ganska bekant med neurala nätverk. Du använder net#-språket för att definiera nätverksarkitekturen.

Skapa en modell för neuralt nätverk med standardarkitekturen

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

  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. I Specifikation för dolt lager väljer du Fullständigt anslutet ärende. Det här alternativet skapar en modell med standardarkitekturen för neurala nätverk, som för en regressionsmodell för neurala nätverk har följande attribut:

    • Nätverket har exakt ett dolt lager.
    • Utdataskiktet är helt anslutet till det dolda skiktet och det dolda skiktet är helt anslutet till indataskiktet.
    • Antalet noder i det dolda lagret kan anges av användaren (standardvärdet är 100).

    Eftersom antalet noder i indatalagret bestäms av antalet funktioner i träningsdata kan det i en regressionsmodell bara finnas en nod i utdataskiktet.

  4. I Antal dolda noder anger du antalet dolda noder. Standardvärdet är ett dolt lager med 100 noder. (Det här alternativet är inte tillgängligt om du definierar en anpassad arkitektur med net#.)

  5. För Learning anger du ett värde som definierar 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 bearbetar träningsfallen.

  7. För den inledande inlärningens vikter, anger du ett värde som avgör nodvikterna i början av inlärningsprocessen.

  8. Skriv ett värde som ska användas under inlärningen som en vikt på noder från tidigare iterationer.

  9. För Typ av normaliserare väljer du någon av följande metoder för funktions normalisering:

    • Binerings normaliserare: Binering skapar grupper med samma storlek och normaliserar sedan varje värde i varje grupp som ska divideras med det totala antalet grupper.

    • Gaussisk normaliserare: Gaussisk normalisering 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 och sedan subtrahera medelvärdet för varje instans och dividera med kvadratroten för variansen (standardavvikelsen).

    • Min-Max-normalizer: Min-max normalisering 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 ändra ordningen på ä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 kan du välja att ange 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.

  12. Välj alternativet Tillåt okända kategoriska nivåer för att skapa en gruppering för okända värden. 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. Anslut en träningsdatset och en av utbildningsmodulerna:

    Varning

    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ärde som du angav under hela omfånget, även om andra parametrar ändras över ett värdeintervall.

  14. Kör experimentet.

Definiera en anpassad arkitektur

  1. Lägg till modulen Neural Network Regression i experimentet.

  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. I Specifikation för dolt lager väljer du Anpassat definitionsskript. Du måste välja det här alternativet om du vill definiera en anpassad arkitektur för neurala nätverk med hjälp av Net#- språket.

  4. När du har valt alternativet Anpassat definitionsskript visas textrutan Definition för neuralt nätverk. Du kan klistra in Net#-skript för att definiera en anpassad arkitektur för det neurala nätverket, inklusive antalet dolda lager, deras anslutningar och avancerade alternativ som att ange mappningar mellan lager.

  5. För Learning anger du ett värde som definierar 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 bearbetar träningsfallen.

  7. För den inledande inlärningens vikter, anger du ett värde som avgör nodvikterna i början av inlärningsprocessen.

  8. Skriv ett värde som ska användas under inlärningen som en vikt på noder från tidigare iterationer.

  9. För Typ av normaliserare väljer du någon av följande metoder för funktions normalisering:

    • Binerings normaliserare: Binering skapar grupper med samma storlek och normaliserar sedan varje värde i varje grupp genom att dividera med det totala antalet grupper.

    • Gaussisk normaliserare: Gaussisk normalisering 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 och sedan subtrahera medelvärdet för varje instans och dividera med kvadratroten för variansen (standardavvikelsen).

    • Min-Max: Min-max normalisering 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 ändra ordningen på ä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 kan du välja att ange 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.

  12. Välj alternativet Tillåt okända kategoriska nivåer för att skapa en gruppering för okända värden. Alla okända värden i testdatauppsättningen mappas till den här okända kategorin. Det här alternativet kan göra modellen något mindre exakt på kända värden, men ge bättre förutsägelser för nya (okända) värden.

    Om du avmarkerar det här alternativet kan modellen endast göra förutsägelser för de värden som finns i träningsdata.

  13. Anslut en träningsdatset och en av utbildningsmodulerna:

    Varning

    Om du skickar ett parameterintervall till Train Model (Träna modell) används bara det första värdet i listan över 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 ignoreras 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 kommer det enskilda värde som du har angett att användas 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 algoritmen används i experiment finns i följande exempel i Azure AI Gallery:

Experimenten ger mer hjälp på Net#. Experimenten är relaterade och 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 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 (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 auto , 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;   

Ytterligare 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 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 neurala nätverk Fullständigt anslutet ärende Ange arkitekturen för det dolda skiktet eller lagren
Den inledande inlärningens vikter,meter >=double. Epsilon Float 0.1 Ange nodvikterna i början av inlärningsprocessen
Inlärningstakt [double. Epsilon;0.01] Float 0.005 Ange storleken på varje steg i inlärningsprocessen
The the [0.0;1.0] Float 0.0 Ange en vikt som ska användas vid inlärning av 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 användas för inlärningsexempel
Antal dolda noder Valfri Sträng 100 Ange antalet noder i det dolda lagret. För flera dolda lager skriver du en kommaavgränsad lista.
Antal iterationer för inlärning >= 1 Integer 100 Ange antalet iterationer 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
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.

Den här parametern är valfri
Tillåt okända kategoriska nivåer Valfri Boolesk true 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 tränad regressionsmodell

Se även

Regression
A-Z-modullista