|
|
||
|---|---|---|
| .. | ||
| AutoEncodersPyTorch.ipynb | ||
| AutoencodersTF.ipynb | ||
| README.md | ||
README.md
Autoenkodéry
Při trénování CNN je jedním z problémů potřeba velkého množství označených dat. V případě klasifikace obrázků je nutné rozdělit obrázky do různých tříd, což vyžaduje manuální úsilí.
Pre-lecture quiz
Můžeme však chtít použít surová (neoznačená) data pro trénování CNN extraktorů funkcí, což se nazývá self-supervised learning. Místo štítků použijeme trénovací obrázky jako vstup i výstup sítě. Hlavní myšlenkou autoenkodéru je, že budeme mít enkodér síť, která převede vstupní obrázek do nějakého latentního prostoru (obvykle je to jen vektor menší velikosti), a poté dekodér síť, jejímž cílem bude rekonstruovat původní obrázek.
✅ Autoenkodér je "typ umělé neuronové sítě používané k učení efektivního kódování neoznačených dat."
Protože trénujeme autoenkodér, aby zachytil co nejvíce informací z původního obrázku pro přesnou rekonstrukci, síť se snaží najít nejlepší embedding vstupních obrázků, aby zachytila jejich význam.
Obrázek z blogu Keras
Scénáře použití Autoenkodérů
Ačkoli samotná rekonstrukce původních obrázků nemusí být užitečná, existuje několik scénářů, kde jsou autoenkodéry obzvláště užitečné:
- Snížení dimenze obrázků pro vizualizaci nebo trénování embeddingů obrázků. Autoenkodéry obvykle poskytují lepší výsledky než PCA, protože berou v úvahu prostorovou povahu obrázků a hierarchické funkce.
- Odstraňování šumu, tj. odstranění šumu z obrázku. Protože šum obsahuje mnoho zbytečných informací, autoenkodér nemůže vše vměstnat do relativně malého latentního prostoru, a tak zachytí pouze důležité části obrázku. Při trénování odstraňovačů šumu začínáme s původními obrázky a používáme obrázky s uměle přidaným šumem jako vstup pro autoenkodér.
- Super-rezoluce, zvýšení rozlišení obrázku. Začínáme s obrázky ve vysokém rozlišení a používáme obrázky s nižším rozlišením jako vstup pro autoenkodér.
- Generativní modely. Jakmile autoenkodér vytrénujeme, dekodér může být použit k vytvoření nových objektů na základě náhodných latentních vektorů.
Variabilní Autoenkodéry (VAE)
Tradiční autoenkodéry nějakým způsobem snižují dimenzi vstupních dat a zjišťují důležité vlastnosti vstupních obrázků. Latentní vektory však často nedávají příliš smysl. Jinými slovy, pokud vezmeme dataset MNIST jako příklad, zjistit, které číslice odpovídají různým latentním vektorům, není snadný úkol, protože blízké latentní vektory nemusí nutně odpovídat stejným číslicím.
Na druhou stranu, pro trénování generativních modelů je lepší mít nějaké porozumění latentnímu prostoru. Tato myšlenka nás vede k variabilnímu autoenkodéru (VAE).
VAE je autoenkodér, který se učí předpovídat statistické rozdělení latentních parametrů, tzv. latentní rozdělení. Například můžeme chtít, aby latentní vektory byly normálně rozdělené s nějakým průměrem zmean a standardní odchylkou zsigma (průměr i standardní odchylka jsou vektory nějaké dimenze d). Enkodér ve VAE se učí předpovídat tyto parametry a dekodér poté vezme náhodný vektor z tohoto rozdělení k rekonstrukci objektu.
Shrnutí:
- Ze vstupního vektoru předpovídáme
z_meanaz_log_sigma(místo předpovídání samotné standardní odchylky předpovídáme její logaritmus) - Vzorkujeme vektor
samplez rozdělení N(zmean,exp(zlog_sigma)) - Dekodér se snaží dekódovat původní obrázek pomocí
samplejako vstupního vektoru
Obrázek z tohoto blogového příspěvku od Isaaka Dykemana
Variabilní autoenkodéry používají komplexní ztrátovou funkci, která se skládá ze dvou částí:
- Ztráta rekonstrukce je ztrátová funkce, která ukazuje, jak blízko je rekonstruovaný obrázek cíli (může to být Mean Squared Error, nebo MSE). Je to stejná ztrátová funkce jako u běžných autoenkodérů.
- KL ztráta, která zajišťuje, že rozdělení latentních proměnných zůstává blízko normálnímu rozdělení. Je založena na pojmu Kullback-Leibler divergence - metrice pro odhad podobnosti dvou statistických rozdělení.
Jednou z důležitých výhod VAE je, že umožňují relativně snadno generovat nové obrázky, protože víme, z jakého rozdělení vzorkovat latentní vektory. Například pokud trénujeme VAE s 2D latentním vektorem na MNIST, můžeme poté měnit komponenty latentního vektoru, abychom získali různé číslice:
Obrázek od Dmitry Soshnikov
Pozorujte, jak se obrázky prolínají, když začneme získávat latentní vektory z různých částí prostoru latentních parametrů. Tento prostor můžeme také vizualizovat ve 2D:
Obrázek od Dmitry Soshnikov
✍️ Cvičení: Autoenkodéry
Zjistěte více o autoenkodérech v těchto odpovídajících noteboocích:
Vlastnosti Autoenkodérů
- Specifické pro data - fungují dobře pouze s typem obrázků, na kterých byly trénovány. Například pokud trénujeme síť pro super-rezoluce na květinách, nebude dobře fungovat na portrétech. Je to proto, že síť může vytvořit obrázek ve vyšším rozlišení tím, že vezme jemné detaily z funkcí naučených z trénovacího datasetu.
- Ztrátové - rekonstruovaný obrázek není stejný jako původní obrázek. Povaha ztráty je definována ztrátovou funkcí použitou během trénování.
- Fungují na neoznačených datech
Post-lecture quiz
Závěr
V této lekci jste se naučili o různých typech autoenkodérů dostupných pro vědce v oblasti AI. Naučili jste se, jak je vytvořit a jak je použít k rekonstrukci obrázků. Také jste se naučili o VAE a jak je použít k generování nových obrázků.
🚀 Výzva
V této lekci jste se naučili používat autoenkodéry pro obrázky. Ale mohou být také použity pro hudbu! Podívejte se na projekt Magenta MusicVAE, který používá autoenkodéry k učení rekonstrukce hudby. Udělejte několik experimentů s touto knihovnou a zjistěte, co můžete vytvořit.
Post-lecture quiz
Přehled & Samostudium
Pro referenci si přečtěte více o autoenkodérech v těchto zdrojích:
- Building Autoencoders in Keras
- Blogový příspěvek na NeuroHive
- Variational Autoencoders Explained
- Conditional Variational Autoencoders
Úkol
Na konci tohoto notebooku s TensorFlow najdete 'úkol' - použijte jej jako svůj domácí úkol.
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
