Metoder för ensembleinlärning för neurala nätverk för djupinlärning

Tweet Share Share Share

Sist uppdaterad den 6 augusti 2019

Hur man förbättrar prestandan genom att kombinera förutsägelser från flera modeller.

De neurala nätverken för djupinlärning är icke-linjära metoder.

De erbjuder ökad flexibilitet och kan skalas i proportion till den tillgängliga mängden träningsdata. En nackdel med denna flexibilitet är att de lär sig via en stokastisk träningsalgoritm, vilket innebär att de är känsliga för träningsdatans särdrag och kan hitta en annan uppsättning vikter varje gång de tränas, vilket i sin tur ger olika förutsägelser.

I allmänhet kallas detta för att neurala nätverk har en hög varians och det kan vara frustrerande när man försöker utveckla en slutgiltig modell som ska användas för att göra förutsägelser.

En framgångsrik metod för att minska variansen hos neurala nätverksmodeller är att träna flera modeller i stället för en enda modell och att kombinera förutsägelserna från dessa modeller. Detta kallas ensembleinlärning och minskar inte bara variansen i förutsägelserna utan kan också resultera i förutsägelser som är bättre än någon enskild modell.

I det här inlägget kommer du att upptäcka metoder för neurala nätverk för djupinlärning för att minska variansen och förbättra förutsägelseprestandan.

När du har läst det här inlägget vet du:

  • Neurala nätverksmodeller är icke-linjära och har en hög varians, vilket kan vara frustrerande när man förbereder en slutlig modell för att göra förutsägelser.
  • Ensemble learning kombinerar förutsägelserna från flera neurala nätverksmodeller för att minska förutsägelsernas varians och minska generaliseringsfel.
  • Tekniker för ensembleinlärning kan grupperas efter det element som varieras, t.ex. träningsdata, modellen och hur förutsägelser kombineras.

Kicka igång ditt projekt med min nya bok Bättre djupinlärning, som innehåller handledningar steg för steg och Python-källkodsfilerna för alla exempel.

Vi kan sätta igång.

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks
Photo by University of San Francisco’s Performing Arts, some rights reserved.

Overview

This tutorial is divided into four parts; they are:

  1. High Variance of Neural Network Models
  2. Reduce Variance Using an Ensemble of Models
  3. How to Ensemble Neural Network Models
  4. Summary of Ensemble Techniques

High Variance of Neural Network Models

Training deep neural networks can be very computationally expensive.

Very deep networks trained on millions of examples may take days, weeks, and sometimes months to train.

Googles basmodell var ett djupt konvolutionellt neuralt nätverk som hade tränats i cirka sex månader med hjälp av asynkron stokastisk gradientnedgång på ett stort antal kärnor.

– Distilling the Knowledge in a Neural Network, 2015.

Efter investeringen av så mycket tid och resurser finns det ingen garanti för att den slutliga modellen kommer att ha ett lågt generaliseringsfel och prestera bra på exempel som inte setts under träningen.

… träna många olika kandidatnätverk och sedan välja ut det bästa och kassera resten. Det finns två nackdelar med ett sådant tillvägagångssätt. För det första är all den ansträngning som krävs för att träna de återstående nätverken bortkastad. För det andra kanske det nätverk som hade bäst prestanda på valideringsuppsättningen inte är det som har bäst prestanda på nya testdata.

– Sidorna 364-365, Neural Networks for Pattern Recognition, 1995.

Neurala nätverksmodeller är en icke-linjär metod. Detta innebär att de kan lära sig komplexa icke-linjära förhållanden i data. En nackdel med denna flexibilitet är att de är känsliga för startförhållanden, både när det gäller de initiala slumpmässiga vikterna och när det gäller det statistiska bruset i träningsdatamängden.

Denna stokastiska karaktär hos inlärningsalgoritmen innebär att varje gång en modell av ett neuralt nätverk tränas kan den lära sig en något (eller dramatiskt) annorlunda version av kartläggningsfunktionen från ingångar till utgångar, som i sin tur kommer att ha olika prestanda på träningsdatasetet och holdout-dataset.

Som sådan kan vi tänka oss ett neuralt nätverk som en metod som har en låg bias och hög varians. Även om man tränar på stora datamängder för att uppfylla den höga variansen kan det vara frustrerande att ha någon varians i en slutlig modell som är avsedd att användas för att göra förutsägelser.

Vill du ha bättre resultat med djupinlärning?

Du får ta del av min kostnadsfria 7-dagars snabbkurs via e-post nu (med exempelkod).

Klicka för att anmäla dig och få en kostnadsfri PDF-version av kursen i form av en e-bok.

Ladda ner din GRATIS minikurs

Reducera variansen med hjälp av ett ensemble av modeller

En lösning på den höga variansen hos neurala nätverk är att träna flera modeller och kombinera deras förutsägelser.

Idén är att kombinera förutsägelserna från flera bra men olika modeller.

En bra modell har skicklighet, vilket innebär att dess förutsägelser är bättre än slumpmässiga tillfälligheter. Viktigt är att modellerna måste vara bra på olika sätt; de måste göra olika prognosfel.

Anledningen till att modellmedelvärdeberäkning fungerar är att olika modeller vanligtvis inte gör alla samma fel på testuppsättningen.

– Sidan 256, Deep Learning, 2016.

Kombinera förutsägelserna från flera neurala nätverk lägger till en bias som i sin tur motverkar variansen hos en enda tränad modell av ett neuralt nätverk. Resultatet är förutsägelser som är mindre känsliga för specifika träningsdata, val av träningsschema och serendipitet i en enskild träningskörning.

Förutom att minska variansen i förutsägelsen kan ensemblen också resultera i bättre förutsägelser än någon enskild bästa modell.

…en kommittés prestanda kan vara bättre än prestandan hos det bästa enskilda nätverket som används isolerat.

– Sidan 365, Neural Networks for Pattern Recognition, 1995.

Detta tillvägagångssätt tillhör en allmän klass av metoder som kallas ”ensembleinlärning” och som beskriver metoder som försöker utnyttja förutsägelserna från flera modeller som utarbetats för samma problem på bästa sätt.

Generellt sett innebär ensembleinlärning att man tränar mer än ett nätverk på samma dataset och sedan använder var och en av de tränade modellerna för att göra en förutsägelse innan man kombinerar förutsägelserna på något sätt för att få fram ett slutresultat eller en förutsägelse.

Faktiskt sett är ensembleinlärning av modeller en standardmetod inom tillämpad maskininlärning för att se till att den mest stabila och bästa möjliga förutsägelsen görs.

Till exempel använde Alex Krizhevsky, et al. i sin berömda artikel från 2012 med titeln ”Imagenet classification with deep convolutional neural networks” som introducerade mycket djupa konvolutionella neurala nätverk för fotoklassificering (dvs. AlexNet) modellmedelvärdeberäkning av flera välfungerande CNN-modeller för att uppnå de bästa resultaten vid den tidpunkten. Prestanda för en modell jämfördes med ensembleprediktioner som medelvärde för två, fem och sju olika modeller.

Medelvärdesberäkning av prediktionerna från fem liknande CNN:er ger en felprocent på 16,4 %. Genomsnittet av förutsägelserna från två CNN:er som förtränats med de tidigare nämnda fem CNN:erna ger en felprocent på 15,3 %.

Ensembling är också det tillvägagångssätt som används av vinnarna i tävlingar om maskininlärning.

En annan kraftfull teknik för att få bästa möjliga resultat på en uppgift är modellensemblering. Om du tittar på tävlingar i maskininlärning, särskilt på Kaggle, kommer du att se att vinnarna använder mycket stora ensembler av modeller som oundvikligen slår varje enskild modell, oavsett hur bra den är.

– Sida 264, Deep Learning With Python, 2017.

Hur man sätter ihop neurala nätverksmodeller

Den kanske äldsta och fortfarande mest använda ensembleringsmetoden för neurala nätverk kallas för en ”kommitté av nätverk.”

En samling nätverk med samma konfiguration och olika initiala slumpmässiga vikter tränas på samma dataset. Varje modell används sedan för att göra en förutsägelse och den faktiska förutsägelsen beräknas som ett genomsnitt av förutsägelserna.

Antalet modeller i ensemblen hålls ofta lågt, både på grund av den beräkningskostnad som det innebär att träna modellerna och på grund av den minskande avkastningen i prestanda när man lägger till fler ensemblemedlemmar. Ensembler kan vara så små som tre, fem eller tio tränade modeller.

Fältet för ensembleinlärning är välstuderat och det finns många variationer på detta enkla tema.

Det kan vara till hjälp att tänka på att variera var och en av de tre huvuddelarna i ensemblemetoden, till exempel:

  • Träningsdata: Variera valet av data som används för att träna varje modell i ensemblen.
  • Ensemblemodeller:
  • Kombinationer: Variera valet av de modeller som används i ensemblen.
  • Kombinationer: Variera valet av de modeller som används i ensemblen:

Låt oss titta närmare på varje element i tur och ordning.

Varierande träningsdata

Data som används för att träna varje medlem i ensemblen kan varieras.

Det enklaste tillvägagångssättet skulle vara att använda k-fold korsvalidering för att skatta generaliseringsfelet för den valda modellkonfigurationen. I detta förfarande tränas k olika modeller på k olika delmängder av träningsdata. Dessa k modeller kan sedan sparas och användas som medlemmar i en ensemble.

Ett annat populärt tillvägagångssätt innebär att träningsdatasetetet provtas på nytt med ersättning och att man sedan tränar ett nätverk med hjälp av det provtagna datasetet. Återprovtagningsförfarandet innebär att sammansättningen av varje träningsdataset är annorlunda med möjlighet till duplicerade exempel vilket gör att den modell som tränas på datasetetet kan ha en något annorlunda förväntan på tätheten hos proverna, och i sin tur olika generaliseringsfel.

Detta tillvägagångssätt kallas bootstrap-aggregation, eller förkortat bagging, och utformades för att användas med obearbetade beslutsträd som har hög varians och låg bias. Vanligtvis används ett stort antal beslutsträd, t.ex. hundratals eller tusentals, med tanke på att de är snabba att förbereda.

… ett naturligt sätt att minska variansen och därmed öka prediktionsnoggrannheten hos en statistisk inlärningsmetod är att ta många träningsuppsättningar från populationen, bygga en separat prediktionsmodell med hjälp av varje träningsuppsättning och göra ett genomsnitt av de resulterande prediktionerna. Detta är naturligtvis inte praktiskt genomförbart eftersom vi i allmänhet inte har tillgång till flera träningsuppsättningar. I stället kan vi bootstrappa, genom att ta upprepade prov från den (enda) träningsdatamängden.

– Sidorna 216-317, An Introduction to Statistical Learning with Applications in R, 2013.

En likvärdig metod skulle kunna vara att använda en mindre delmängd av träningsdatamängden utan reglering för att möjliggöra snabbare träning och viss överanpassning.

Önskan om något underoptimerade modeller gäller för valet av ensemblemedlemmar mer generellt.

… medlemmarna i gruppen bör inte individuellt väljas så att de har en optimal avvägning mellan bias och varians, utan de bör ha en relativt mindre bias, eftersom den extra variansen kan avlägsnas genom medelvärdesbildning.

– Sidan 366, Neural Networks for Pattern Recognition, 1995.

Andra tillvägagångssätt kan innebära att man väljer ett slumpmässigt delutrymme av inmatningsutrymmet att tilldela varje modell, t.ex. en delmängd av hypervolymen i inmatningsutrymmet eller en delmängd av inmatningsfunktioner.

Ensemble Tutorials

För exempel på ensembler för djupinlärning som varierar träningsdata se:

  • Hur man utvecklar en ensemble med slumpmässig uppdelning, korsvalidering och bagging för djupinlärning

Varierande modeller

Träning av samma underbegränsade modell på samma data med olika utgångsförhållanden kommer att resultera i olika modeller med tanke på problemets svårighet och inlärningsalgoritmens stokastiska natur.

Detta beror på att det optimeringsproblem som nätverket försöker lösa är så utmanande att det finns många ”bra” och ”olika” lösningar för att mappa input till output.

De flesta neurala nätverksalgoritmer uppnår suboptimala prestanda specifikt på grund av att det finns ett överväldigande antal suboptimala lokala minima. Om vi tar en uppsättning neurala nätverk som har konvergerat mot lokala minima och tillämpar medelvärdesberäkning kan vi konstruera en förbättrad uppskattning. Ett sätt att förstå detta faktum är att tänka på att nätverk som har hamnat i olika lokala minima generellt sett kommer att prestera dåligt i olika regioner av egenskapsutrymmet och därmed kommer deras feltermer inte att vara starkt korrelerade.

– När nätverken är oeniga: Ensemble methods for hybrid neural networks, 1995.

Detta kan resultera i en minskad varians, men kanske inte dramatiskt förbättra generaliseringsfelet. De fel som modellerna gör kan fortfarande vara alltför starkt korrelerade eftersom modellerna alla har lärt sig liknande mappningsfunktioner.

Ett alternativt tillvägagångssätt kan vara att variera konfigurationen av varje ensemblemodell, t.ex. genom att använda nätverk med olika kapacitet (t.ex. antal lager eller noder) eller modeller som tränats under olika förhållanden (t.ex. inlärningshastighet eller reglering).

Resultatet kan bli en ensemble av modeller som har lärt sig en mer heterogen samling av mappningsfunktioner och som i sin tur har en lägre korrelation i sina förutsägelser och förutsägelsefel.

Differenser i slumpmässig initialisering, slumpmässigt urval av minibatcher, skillnader i hyperparametrar eller olika utfall av icke-deterministiska implementeringar av neurala nätverk är ofta tillräckliga för att olika medlemmar i ensemblen ska göra delvis oberoende fel.

– Sidorna 257-258, Deep Learning, 2016.

En sådan ensemble av olika konfigurerade modeller kan åstadkommas genom den normala processen att utveckla nätverket och ställa in dess hyperparametrar. Varje modell skulle kunna sparas under denna process och en delmängd av bättre modeller väljas ut för att utgöra ensemblen.

Lätt sämre tränade nätverk är en gratis biprodukt av de flesta avstämningsalgoritmerna; det är önskvärt att använda sådana extra kopior även om deras prestanda är betydligt sämre än den bästa prestanda som hittats. Bättre prestanda kan ändå uppnås genom noggrann planering av en ensembleklassificering genom att använda de bästa tillgängliga parametrarna och träna olika kopior på olika delmängder av den tillgängliga databasen.

– Neural Network Ensembles, 1990.

I de fall där det kan ta veckor eller månader att träna en enskild modell kan ett annat alternativ vara att med jämna mellanrum spara den bästa modellen under träningsprocessen, så kallade ögonblicksbilds- eller kontrollpunktsmodeller, och sedan välja ensemblemedlemmar bland de sparade modellerna. Detta ger fördelarna med att ha flera modeller som tränas på samma data, även om de samlas in under en enda träningskörning.

Snapshot Ensembling producerar en ensemble av exakta och olika modeller från en enda träningsprocess. Kärnan i Snapshot Ensembling är en optimeringsprocess som besöker flera lokala minima innan den konvergerar till en slutlig lösning. Vi tar ögonblicksbilder av modellerna vid dessa olika minima och tar ett genomsnitt av deras förutsägelser vid testtillfället.

– Snapshot Ensembles:

En variant på snapshot-ensemblen är att spara modeller från en rad olika epoker, som kanske identifieras genom att granska inlärningskurvorna för modellens prestanda på tränings- och valideringsdatamängderna under träningen. Ensembler från sådana sammanhängande sekvenser av modeller kallas horisontella ensembler.

Först väljs nätverk som tränats för ett relativt stabilt intervall av epoker. Prediktionerna av sannolikheten för varje etikett produceras av standardklassificerare den valda epoken, och sedan medelvärdesbildas.

– Horisontell och vertikal ensemble med djup representation för klassificering, 2013.

En ytterligare förbättring av ögonblicksensemblen är att systematiskt variera optimeringsproceduren under träningen för att tvinga fram olika lösningar (dvs. uppsättningar av vikter), varav de bästa kan sparas i checkpoints. Detta kan innebära att en oscillerande mängd brus injiceras under träningsepokerna eller att inlärningshastigheten oscillerar under träningsepokerna. En variant av detta tillvägagångssätt som kallas Stochastic Gradient Descent with Warm Restarts (SGDR) visade snabbare inlärning och toppmoderna resultat för standarduppgifter för fotoklassificering.

Vår SGDR simulerar varma omstarter genom att schemalägga inlärningshastigheten för att uppnå konkurrenskraftiga resultat ungefär två till fyra gånger snabbare. Vi uppnådde också nya toppmoderna resultat med SGDR, främst genom att använda ännu bredare och ensembler av ögonblicksbilder från SGDR:s bana.

– SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.

En fördel med mycket djupa neurala nätverk är att de mellanliggande dolda lagren ger en inlärd representation av de lågupplösta indata. De dolda lagren kan ge ut sina interna representationer direkt, och resultatet från ett eller flera dolda lager från ett mycket djupt nätverk kan användas som indata till en ny klassificeringsmodell. Detta är kanske mest effektivt när den djupa modellen tränas med hjälp av en autoencodermodell. Denna typ av ensemble kallas vertikal ensemble.

Denna metod sätter ihop en serie klassificerare vars indata är representationen av mellanliggande lager. En lägre felprocent förväntas eftersom dessa funktioner verkar olika.

– Horisontell och vertikal ensemble med djup representation för klassificering, 2013.

Ensemble Tutorials

För exempel på ensembler för djupinlärning som varierar modeller se:

  • Hur man utvecklar en snapshot ensemble för djupinlärning
  • Hur man utvecklar en horisontell röstningsensemble för djupinlärning

Varierande kombinationer

Det enklaste sättet att kombinera förutsägelserna är att beräkna medelvärdet av förutsägelserna från ensemblemedlemmarna.

Detta kan förbättras något genom att vikta förutsägelserna från varje modell, där vikterna optimeras med hjälp av ett hold-out valideringsdataset. Detta ger en vägd genomsnittlig ensemble som ibland kallas modellblandning.

… vi kan förvänta oss att vissa medlemmar i kommittén vanligtvis kommer att göra bättre förutsägelser än andra medlemmar. Vi skulle därför förvänta oss att kunna minska felet ytterligare om vi ger större vikt åt vissa kommittémedlemmar än åt andra. Vi betraktar alltså en generaliserad kommittéprognos som ges av en viktad kombination av medlemmarnas prognoser …

– Sida 367, Neural Networks for Pattern Recognition, 1995.

Ett ytterligare steg i komplexitet innebär att man använder en ny modell för att lära sig hur man på bästa sätt kan kombinera prognoserna från varje ensemblemedlem.

Modellen kan vara en enkel linjär modell (t.ex. ungefär som det viktade medelvärdet), men kan också vara en sofistikerad icke-linjär metod som också tar hänsyn till det specifika inmatningsprovet utöver de förutsägelser som varje medlem ger. Detta allmänna tillvägagångssätt för att lära sig en ny modell kallas modellstapling eller staplad generalisering.

Staplad generalisering fungerar genom att man härleder generalisatörens eller generalisatörernas fördomar i förhållande till en tillhandahållen inlärningsuppsättning. Denna avledning sker genom generalisering i ett andra utrymme vars ingångsvärden är (t.ex.) de ursprungliga generaliserarnas gissningar när de lär sig en del av inlärningsmängden och försöker gissa resten av den, och vars utgångsvärden är (t.ex.) den korrekta gissningen. När den används med en enda generaliserare är staplad generalisering ett system för att uppskatta (och sedan korrigera för) felet hos en generaliserare som har tränats med en viss inlärningsuppsättning och sedan fått en viss fråga.

– Staplad generalisering, 1992.

Det finns mer sofistikerade metoder för staplad generalisering av modeller, t.ex. boosting där ensemblemedlemmar läggs till en efter en för att korrigera misstag från tidigare modeller. Den extra komplexiteten gör att detta tillvägagångssätt används mindre ofta med stora neurala nätverksmodeller.

En annan kombination som är lite annorlunda är att kombinera vikterna från flera neurala nätverk med samma struktur. Vikterna från flera nätverk kan medelvärdesberäknas, för att förhoppningsvis resultera i en ny enskild modell som har bättre övergripande prestanda än någon av de ursprungliga modellerna. Detta tillvägagångssätt kallas modellviktsmedelvärdering.

… tyder på att det är lovande att medelvärdesberäkna dessa punkter i viktrummet och använda ett nätverk med dessa medelvärdesberäknade vikter, i stället för att bilda en ensemble genom att medelvärdesberäkna utgångarna från nätverken i modellutrymmet

– Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

Ensemble Tutorials

För exempel på djupinlärningsensembler som varierar kombinationer se:

  • Hur man utvecklar en ensemble med modellmedelvärde för djupinlärning
  • Hur man utvecklar en ensemble med viktat medelvärde för djupinlärning
  • Hur man utvecklar en staplingsensemble för djupinlärning
  • Hur man skapar en Polyak-Ruppert-ensemble för djupinlärning

Sammanfattning av ensembletekniker

I sammanfattning, we can list some of the more common and interesting ensemble methods for neural networks organized by each element of the method that can be varied, as follows:

  • Varying Training Data
    • k-fold Cross-Validation Ensemble
    • Bootstrap Aggregation (bagging) Ensemble
    • Random Training Subset Ensemble
  • Varying Models
    • Multiple Training Run Ensemble
    • Hyperparameter Tuning Ensemble
    • Snapshot Ensemble
    • Horizontal Epochs Ensemble
    • Vertical Representational Ensemble
  • Varying Combinations
    • Model Averaging Ensemble
    • Weighted Average Ensemble
    • Stacked Generalization (stacking) Ensemble
    • Boosting Ensemble
    • Model Weight Averaging Ensemble

There is no single best ensemble method; perhaps experiment with a few approaches or let the constraints of your project guide you.

Further Reading

This section provides more resources on the topic if you are looking to go deeper.

Books

  • Section 9.6 Committees of networks, Neural Networks for Pattern Recognition, 1995.
  • Section 7.11 Bagging and Other Ensemble Methods, Deep Learning, 2016.
  • Section 7.3.3 Model ensembling, Deep Learning With Python, 2017.
  • Section 8.2 Bagging, Random Forests, Boosting, An Introduction to Statistical Learning with Applications in R, 2013.

Papers

  • Neural Network Ensembles, 1990.
  • Neural Network Ensembles, Cross Validation, and Active Learning, 1994.
  • When networks disagree: Ensemble methods for hybrid neural networks, 1995.
  • Snapshot Ensembles: Train 1, get M for free, 2017.
  • SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.
  • Horizontal and vertical ensemble with deep representation for classification, 2013.
  • Stacked generalization, 1992.
  • Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

Articles

  • Ensemble learning, Wikipedia.
  • Bootstrap aggregating, Wikipedia.
  • Boosting (machine learning), Wikipedia.

Summary

In this post, you discovered ensemble methods for deep learning neural networks to reduce variance and improve prediction performance.

Specifically, you learned:

  • Neural network models are nonlinear and have a high variance, which can be frustrating when preparing a final model for making predictions.
  • Ensemblelärning kombinerar förutsägelserna från flera neurala nätverksmodeller för att minska variansen i förutsägelserna och minska generaliseringsfelet.
  • Tekniker för ensemblelärning kan grupperas efter det element som varieras, t.ex. träningsdata, modellen och hur förutsägelserna kombineras.

Har du några frågor?
Skala dina frågor i kommentarerna nedan så ska jag göra mitt bästa för att svara.

Utveckla bättre modeller för djupinlärning idag!

Bättre djupinlärning

Träna snabbare, minska överflöd och ensembler

…med bara några få rader pythonkod

Upptäck hur i min nya Ebook:
Better Deep Learning

Den innehåller självstudierutorier om ämnen som:
viktsförfall, normalisering av partier, bortfall, stapling av modeller och mycket mer…

Bring bättre djupinlärning till dina projekt!

Skippa det akademiska. Just Results.

See What’s Inside

Tweet Share Share

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *