Poslední aktualizace 6. srpna 2019
- Jak zlepšit výkon kombinací předpovědí z více modelů.
- Overview
- High Variance of Neural Network Models
- Chcete lepší výsledky s hlubokým učením?
- Snížení rozptylu pomocí souboru modelů
- Jak sestavit modely neuronových sítí
- Variantní tréninková data
- Návody na ansámbly
- Různé modely
- Návody na ansámbly
- Různé kombinace
- Návody na ansámbly
- Shrnutí technik ansámblu
- Further Reading
- Books
- Papers
- Articles
- Summary
- Vyvíjejte lepší modely hlubokého učení ještě dnes!“
- Trénujte rychleji, snižte překlepy a soubory
- Zavedení lepšího deep learningu do vašich projektů!“
Jak zlepšit výkon kombinací předpovědí z více modelů.
Neuronové sítě s hlubokým učením jsou nelineární metody.
Nabízejí větší flexibilitu a mohou se škálovat úměrně množství dostupných trénovacích dat. Nevýhodou této flexibility je, že se učí pomocí stochastického trénovacího algoritmu, což znamená, že jsou citlivé na specifika trénovacích dat a při každém trénování mohou najít jinou sadu vah, která následně vede k odlišným předpovědím.
Obecně se tomu říká, že neuronové sítě mají vysoký rozptyl, což může být frustrující, když se snažíte vyvinout konečný model, který chcete použít pro vytváření předpovědí.
Úspěšným přístupem ke snížení rozptylu modelů neuronových sítí je trénování více modelů namísto jednoho modelu a kombinování předpovědí z těchto modelů. Tomuto postupu se říká skupinové učení a nejenže snižuje rozptyl předpovědí, ale také může vést k předpovědím, které jsou lepší než jakýkoli jednotlivý model.
V tomto příspěvku objevíte metody pro hluboké učení neuronových sítí, které snižují rozptyl a zlepšují výkon předpovědí.
Po přečtení tohoto příspěvku budete vědět:
- Modely neuronových sítí jsou nelineární a mají vysoký rozptyl, což může být při přípravě finálního modelu pro tvorbu předpovědí frustrující.
- Ensemble learning kombinuje předpovědi z více modelů neuronových sítí, čímž snižuje rozptyl předpovědí a snižuje chybu generalizace.
- Techniky ansámblového učení lze rozdělit do skupin podle prvků, které se liší, jako jsou trénovací data, model a způsob kombinování předpovědí.
Začněte svůj projekt s mou novou knihou Lepší hluboké učení, která obsahuje návody krok za krokem a zdrojové soubory jazyka Python pro všechny příklady.
Začněme.
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:
- High Variance of Neural Network Models
- Reduce Variance Using an Ensemble of Models
- How to Ensemble Neural Network Models
- 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.
Základním modelem společnosti Google byla hluboká konvoluční neuronová síť, která byla trénována asi šest měsíců pomocí asynchronního stochastického gradientního sestupu na velkém počtu jader.
– Distilling the Knowledge in a Neural Network, 2015.
Po investici tolika času a prostředků není zaručeno, že výsledný model bude mít nízkou chybu zobecnění a bude dobře fungovat na příkladech, které nebyly během trénování viděny.
… trénovat mnoho různých kandidátních sítí a poté vybrat tu nejlepší a zbytek zavrhnout. Takový přístup má dvě nevýhody. Za prvé, veškeré úsilí vynaložené na trénování zbývajících sítí přijde vniveč. Za druhé, síť, která měla nejlepší výkon na validační sadě, nemusí být tou, která má nejlepší výkon na nových testovacích datech.
– Strany 364-365, Neural Networks for Pattern Recognition, 1995.
Modely neuronových sítí jsou nelineární metodou. To znamená, že se mohou učit složité nelineární vztahy v datech. Nevýhodou této flexibility je, že jsou citlivé na počáteční podmínky, a to jak z hlediska počátečních náhodných vah, tak z hlediska statistického šumu v trénovací množině dat.
Tato stochastická povaha učebního algoritmu znamená, že při každém trénování se model neuronové sítě může naučit mírně (nebo dramaticky) odlišnou verzi mapovací funkce ze vstupů na výstupy, která bude mít zase odlišnou výkonnost na trénovací a podržené množině dat.
Jako takovou si můžeme neuronovou síť představit jako metodu, která má nízké zkreslení a vysoký rozptyl. I při trénování na velkých souborech dat, které splňují vysokou odchylku, může být jakákoli odchylka ve finálním modelu, který má sloužit k předpovědím, frustrující.
Chcete lepší výsledky s hlubokým učením?
Zúčastněte se nyní mého bezplatného 7denního e-mailového rychlokurzu (s ukázkovým kódem).
Klikněte pro registraci a získejte také bezplatnou verzi kurzu ve formátu PDF Ebook.
Stáhněte si minikurz ZDARMA
Snížení rozptylu pomocí souboru modelů
Řešením vysokého rozptylu neuronových sítí je trénovat více modelů a kombinovat jejich předpovědi.
Jedná se o kombinaci předpovědí z více dobrých, ale různých modelů.
Dobrý model má dovednosti, což znamená, že jeho předpovědi jsou lepší než náhodné. Důležité je, že modely musí být dobré různými způsoby; musí dělat různé chyby předpovědí.
Důvod, proč průměrování modelů funguje, spočívá v tom, že různé modely obvykle neudělají na testovací množině všechny stejné chyby.
– Strana 256, Deep Learning, 2016.
Kombinace předpovědí z více neuronových sítí přidává zkreslení, které zase vyvažuje rozptyl jediného natrénovaného modelu neuronové sítě. Výsledkem jsou předpovědi, které jsou méně citlivé na specifika tréninkových dat, volbu tréninkového schématu a náhodnost jednoho tréninkového běhu.
Kromě snížení rozptylu předpovědi může soubor také vést k lepším předpovědím než jakýkoli jednotlivý nejlepší model.
… výkonnost výboru může být lepší než výkonnost nejlepší jednotlivé sítě použité izolovaně.
– Strana 365, Neural Networks for Pattern Recognition, 1995.
Tento přístup patří do obecné třídy metod nazývaných „učení souboru“, které popisují metody, jež se snaží co nejlépe využít předpovědi z více modelů připravených pro stejný problém.
Všeobecně učení ansámblu zahrnuje trénování více než jedné sítě na stejném souboru dat, poté se každý z trénovaných modelů použije k předpovědi a poté se předpovědi nějakým způsobem zkombinují, aby se vytvořil konečný výsledek nebo předpověď.
V podstatě je sestavování modelů standardním přístupem v aplikovaném strojovém učení, aby se zajistila co nejstabilnější a nejlepší možná předpověď.
Například Alex Krizhevsky a kol. ve svém slavném článku z roku 2012 s názvem „Imagenet classification with deep convolutional neural networks“, který představil velmi hluboké konvoluční neuronové sítě pro klasifikaci fotografií (tj. AlexNet), použili zprůměrování modelů více dobře fungujících modelů CNN, aby dosáhli v té době nejlepších výsledků. Výkon jednoho modelu byl porovnán s předpověďmi souboru zprůměrovanými ze dvou, pěti a sedmi různých modelů.
Zprůměrování předpovědí pěti podobných CNN dává chybovost 16,4 %. Zprůměrování předpovědí dvou CNN, které byly předtrénovány s výše zmíněnými pěti CNN, dává chybovost 15,3 %.
Seskupování je také přístup, který používají vítězové v soutěžích strojového učení.
Další účinnou technikou pro získání co nejlepších výsledků v úloze je seskupování modelů. Pokud se podíváte na soutěže ve strojovém učení, zejména na Kaggle, uvidíte, že vítězové používají velmi rozsáhlé ansámbly modelů, které nevyhnutelně překonají jakýkoli jednotlivý model, ať už je jakkoli dobrý.
– Strana 264, Deep Learning With Python, 2017.
Jak sestavit modely neuronových sítí
Snad nejstarší a stále nejčastěji používaný přístup k sestavování neuronových sítí se nazývá „výbor sítí“
Soubor sítí se stejnou konfigurací a různými počátečními náhodnými váhami je natrénován na stejné sadě dat. Každý model je pak použit k předpovědi a skutečná předpověď je vypočtena jako průměr předpovědí.
Počet modelů v souboru se často udržuje malý jak z důvodu výpočetních nákladů na trénování modelů, tak z důvodu klesající návratnosti výkonu při přidávání dalších členů souboru. Ansámbly mohou mít jen tři, pět nebo deset natrénovaných modelů.
Oblast učení pomocí ansámblu je dobře prozkoumána a existuje mnoho variací na toto jednoduché téma.
Může být užitečné uvažovat o obměně každého ze tří hlavních prvků metody ansámblu; například:
- Tréninková data:
- Modely souboru:
- Variantní výběr dat použitých k trénování každého modelu v souboru:
- Kombinace:
Podívejme se blíže na jednotlivé prvky postupně.
Variantní tréninková data
Data použitá k tréninku jednotlivých členů souboru lze měnit.
Nejjednodušším přístupem by bylo použít k-násobnou křížovou validaci k odhadu generalizační chyby zvolené konfigurace modelu. Při tomto postupu se trénuje k různých modelů na k různých podmnožinách trénovacích dat. Těchto k modelů lze poté uložit a použít jako členy souboru.
Další populární přístup zahrnuje převzorkování trénovací množiny dat s nahrazením a následné trénování sítě pomocí převzorkované množiny dat. Postup převzorkování znamená, že složení každého trénovacího souboru dat je jiné s možností duplicitních příkladů, což umožňuje, aby model natrénovaný na souboru dat měl mírně odlišné očekávání hustoty vzorků a následně odlišnou chybu zobecnění.
Tento přístup se nazývá bootstrapová agregace nebo zkráceně bagging a byl navržen pro použití s neprořezanými rozhodovacími stromy, které mají vysoký rozptyl a nízké zkreslení. Obvykle se používá velký počet rozhodovacích stromů, například stovky nebo tisíce, vzhledem k tomu, že jejich příprava je rychlá.
… přirozeným způsobem, jak snížit rozptyl, a tedy zvýšit přesnost predikce statistické metody učení, je vzít mnoho trénovacích sad z populace, vytvořit samostatný predikční model pomocí každé trénovací sady a výsledné predikce zprůměrovat. To ovšem není praktické, protože obvykle nemáme přístup k více trénovacím množinám. Místo toho můžeme použít bootstrap, tedy opakovaný odběr vzorků z (jediné) trénovací množiny dat.
– Strany 216-317, An Introduction to Statistical Learning with Applications in R, 2013.
Rovnoměrným přístupem může být použití menší podmnožiny trénovací množiny dat bez regularizace, která umožní rychlejší trénování a určité přetypování.
Snaha o mírně neoptimalizované modely platí pro výběr členů souboru obecněji.
… členové výboru by neměli být jednotlivě vybíráni tak, aby měli optimální kompromis mezi odchylkou a rozptylem, ale měli by mít relativně menší odchylku, protože dodatečný rozptyl lze odstranit průměrováním.
– Strana 366, Neural Networks for Pattern Recognition, 1995.
Jiné přístupy mohou zahrnovat výběr náhodného podprostoru vstupního prostoru, který se přidělí každému modelu, například podmnožiny hyperobjemů ve vstupním prostoru nebo podmnožiny vstupních rysů.
Příklady ansámblů hlubokého učení, které se liší tréninkovými daty, viz:
- Jak vyvinout ansámbl s náhodným rozdělením, křížovým ověřováním a pytlováním pro hluboké učení
Různé modely
Trénování stejného podřízeného modelu na stejných datech s různými počátečními podmínkami povede k různým modelům, což je dáno obtížností problému a stochastickou povahou učebního algoritmu.
To je dáno tím, že optimalizační problém, který se síť snaží vyřešit, je natolik náročný, že existuje mnoho „dobrých“ a „různých“ řešení pro mapování vstupů na výstupy.
Většina algoritmů neuronových sítí dosahuje suboptimálního výkonu právě kvůli existenci ohromného množství suboptimálních lokálních minim. Pokud vezmeme množinu neuronových sítí, které konvergovaly k lokálním minimům, a použijeme průměrování, můžeme zkonstruovat lepší odhad. Jedním ze způsobů, jak tuto skutečnost pochopit, je uvažovat o tom, že obecně sítě, které se dostaly do různých lokálních minim, budou mít špatný výkon v různých oblastech prostoru funkcí, a proto jejich chybové členy nebudou silně korelované.
– Když se sítě neshodnou: Ensemble methods for hybrid neural networks, 1995.
To může vést ke snížení rozptylu, ale nemusí dramaticky zlepšit chybu zobecnění. Chyby, kterých se modely dopouštějí, mohou být stále příliš silně korelované, protože se všechny modely naučily podobné mapovací funkce.
Alternativním přístupem může být změna konfigurace každého modelu souboru, například použití sítí s různou kapacitou (např. počtem vrstev nebo uzlů) nebo modelů vyškolených za různých podmínek (např. rychlost učení nebo regularizace).
Výsledkem může být soubor modelů, které se naučily různorodější soubor mapovacích funkcí a následně mají nižší korelaci svých předpovědí a chyb předpovědí.
Rozdíly v náhodné inicializaci, náhodném výběru minidávek, rozdíly v hyperparametrech nebo různé výsledky nedeterministických implementací neuronových sítí často stačí k tomu, aby různí členové souboru dělali částečně nezávislé chyby.
– Strany 257-258, Deep Learning, 2016.
Takového souboru různě konfigurovaných modelů lze dosáhnout běžným procesem vývoje sítě a ladění jejích hyperparametrů. Každý model by mohl být během tohoto procesu uložen a vybrána podmnožina lepších modelů, ze kterých bude sestaven ansámbl.
Mírně hůře natrénované sítě jsou volným vedlejším produktem většiny ladicích algoritmů; je žádoucí použít takové kopie navíc, i když je jejich výkon výrazně horší než nejlepší nalezený výkon. Lepšího výkonu lze přesto dosáhnout pečlivým plánováním klasifikace souboru pomocí nejlepších dostupných parametrů a trénováním různých kopií na různých podmnožinách dostupné databáze.
– Neural Network Ensembles, 1990.
V případech, kdy trénování jednoho modelu může trvat týdny nebo měsíce, může být další alternativou pravidelné ukládání nejlepšího modelu během procesu trénování, tzv. snapshot nebo checkpoint modely, a následný výběr členů souboru z uložených modelů. To poskytuje výhody více modelů vyškolených na stejných datech, i když shromážděných během jediného tréninkového běhu.
Snapshot Ensembling vytváří soubor přesných a různorodých modelů z jediného tréninkového procesu. Jádrem metody Snapshot Ensembling je optimalizační proces, který navštíví několik lokálních minim, než konverguje ke konečnému řešení. V těchto různých minimech pořizujeme snímky modelů a jejich předpovědi v době testu průměrujeme.
– Snapshot Ensembles:
Variantou ansámblu snímků je uložení modelů z řady epoch, možná identifikovaných na základě přezkoumání křivek učení výkonnosti modelu na trénovacích a validačních datových sadách během trénování. Ansámbly z takových souvislých posloupností modelů se označují jako horizontální ansámbly.
Nejprve se vyberou sítě natrénované pro relativně stabilní rozsah epoch. Předpovědi pravděpodobnosti jednotlivých značek jsou vytvořeny standardními klasifikátory vybrané epochy a poté zprůměrovány.
– Horizontální a vertikální ansámbl s hlubokou reprezentací pro klasifikaci, 2013.
Dalším vylepšením snímkového ansámblu je systematická změna optimalizačního postupu během trénování, která si vynutí různá řešení (tj. sady vah), z nichž nejlepší lze uložit do kontrolních bodů. To může zahrnovat vnášení oscilujícího množství šumu v průběhu tréninkových epoch nebo oscilující rychlost učení během tréninkových epoch. Varianta tohoto přístupu nazvaná Stochastic Gradient Descent with Warm Restarts (SGDR) prokázala rychlejší učení a špičkové výsledky pro standardní úlohy klasifikace fotografií.
Náš SGDR simuluje teplé restarty plánováním rychlosti učení tak, aby bylo dosaženo konkurenceschopných výsledků zhruba dvakrát až čtyřikrát rychleji. S SGDR jsme také dosáhli nových špičkových výsledků, a to hlavně díky použití ještě širších a souborů snímků z trajektorie SGDR.
– SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.
Výhodou velmi hlubokých neuronových sítí je, že mezilehlé skryté vrstvy poskytují naučenou reprezentaci vstupních dat s nízkým rozlišením. Skryté vrstvy mohou přímo výstupovat své vnitřní reprezentace a výstup z jedné nebo více skrytých vrstev z jedné velmi hluboké sítě lze použít jako vstup do nového klasifikačního modelu. To je pravděpodobně nejefektivnější, pokud je hluboký model vycvičen pomocí modelu autoenkodéru. Tento typ souboru se označuje jako vertikální soubor.
Tato metoda sdružuje řadu klasifikátorů, jejichž vstupy jsou reprezentace mezivrstev. Očekává se nižší chybovost, protože tyto funkce se zdají být různorodé.
– Horizontální a vertikální ansámbl s hlubokou reprezentací pro klasifikaci, 2013.
Příklady ansámblů hlubokého učení, které se liší modely, naleznete zde:
- Jak vyvinout ansámbl snímků pro hluboké učení
- Jak vyvinout horizontální hlasovací ansámbl pro hluboké učení
Různé kombinace
Nejjednodušší způsob kombinování předpovědí je výpočet průměru předpovědí členů ansámblu.
Tento postup lze mírně vylepšit pomocí vážení předpovědí z jednotlivých modelů, přičemž váhy jsou optimalizovány pomocí vyčkávací validační datové sady. Tím získáme vážený průměr souboru, který se někdy nazývá míchání modelů.
… můžeme očekávat, že někteří členové výboru budou obvykle poskytovat lepší předpovědi než ostatní členové. Očekávali bychom tedy, že budeme schopni chybu ještě více snížit, pokud některým členům výboru přisoudíme větší váhu než ostatním. Uvažujeme tedy zobecněnou předpověď výboru danou váženou kombinací předpovědí členů …
– Strana 367, Neural Networks for Pattern Recognition, 1995.
Jedním z dalších kroků ve složitosti je použití nového modelu, který se naučí, jak nejlépe kombinovat předpovědi jednotlivých členů souboru.
Model může být jednoduchý lineární model (např. podobně jako vážený průměr), ale může to být i sofistikovaná nelineární metoda, která kromě předpovědí poskytnutých každým členem bere v úvahu i konkrétní vstupní vzorek. Tento obecný přístup učení nového modelu se nazývá stohování modelů neboli stohovaná generalizace.
Stohovaná generalizace funguje tak, že se odvodí zkreslení generalizátoru (generalizátorů) vzhledem k poskytnuté učební množině. Tato dedukce probíhá tak, že se zobecňuje v druhém prostoru, jehož vstupy jsou (například) odhady původních zobecňovačů, když se učí s částí učební množiny a snaží se odhadnout její zbytek, a jehož výstupem je (například) správný odhad. Při použití s jedním generalizátorem je stohovaná generalizace schéma pro odhad (a následnou opravu) chyby generalizátoru, který byl vycvičen na konkrétní učební množině a poté mu byla položena konkrétní otázka.
– Stohovaná generalizace, 1992.
Existují sofistikovanější metody stohování modelů, například boosting, kdy jsou členové souboru přidáváni jeden po druhém za účelem opravy chyb předchozích modelů. Kvůli přidané složitosti se tento přístup u velkých modelů neuronových sítí používá méně často.
Další kombinací, která je trochu jiná, je kombinace vah více neuronových sítí se stejnou strukturou. Váhy více sítí lze zprůměrovat a doufat, že výsledkem bude nový jediný model, který bude mít lepší celkový výkon než kterýkoli původní model. Tento přístup se nazývá průměrování vah modelů.
… naznačuje, že je slibné zprůměrovat tyto body v prostoru vah a použít síť s těmito zprůměrovanými váhami namísto vytvoření souboru zprůměrováním výstupů sítí v prostoru modelů
– Averaging Weights Leads to Wider Optima and Better Generalization, 2018.
Příklady ansámblů hlubokého učení, které se liší kombinacemi, viz:
- Jak vytvořit ansámbl s průměrováním modelů pro hluboké učení
- Jak vytvořit ansámbl s váženým průměrem pro hluboké učení
- Jak vytvořit stohovací ansámbl pro hluboké učení
- Jak vytvořit Polyak-Ruppertův ansámbl pro hluboké učení
Shrnutí technik ansámblu
Shrnutí, 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.
- Skupinové učení kombinuje předpovědi z více modelů neuronových sítí, aby se snížil rozptyl předpovědí a snížila se chyba zobecnění.
- Techniky pro skupinové učení lze rozdělit do skupin podle prvku, který se mění, jako jsou tréninková data, model a způsob kombinace předpovědí.
Máte nějaké otázky?
Pokládejte své otázky v komentářích níže a já se budu snažit odpovědět.
Vyvíjejte lepší modely hlubokého učení ještě dnes!“
Trénujte rychleji, snižte překlepy a soubory
…s pouhými několika řádky kódu Pythonu
Objevte, jak na to, v mé nové elektronické knize:
Better Deep Learning
Nabízí samostudijní návody na témata jako:
rozpad váhy, dávková normalizace, dropout, stohování modelů a mnoho dalšího…
Zavedení lepšího deep learningu do vašich projektů!“
Vynechejte akademickou půdu. Just Results.
See What’s Inside