====== Autoenkodéry (Autoencoders) ====== **Autoenkodér** je typ umělé [[it:ai:neural_networks|neuronové sítě]], která se používá pro učení efektivního kódování dat v rámci [[it:ml:unsupervised_learning|učení bez učitele]]. Cílem autoenkodéru je naučit se reprezentaci (kompresi) vstupních dat, obvykle za účelem snížení dimenzionality nebo odstranění šumu. Základní princip spočívá v tom, že síť se snaží na svém výstupu zrekonstruovat přesně to, co dostala na vstupu. ===== 1. Architektura autoenkodéru ===== Autoenkodér se skládá ze tří hlavních částí: ==== A. Enkodér (Encoder) ==== Část sítě, která postupně zmenšuje vrstvy a komprimuje vstupní data do menšího rozměru. Tato část "extrahuje" nejdůležitější rysy dat. ==== B. Bottleneck (Hrdlo / Latentní prostor) ==== Nejužší vrstva sítě. Zde jsou data uložena v nejvíce komprimované podobě (tzv. **latentní reprezentace**). Tato vrstva nutí síť zahodit nepodstatné informace (šum) a ponechat jen to podstatné. ==== C. Dekodér (Decoder) ==== Zrcadlová část k enkodéru. Bere komprimovaná data z hrdla a snaží se z nich rekonstruovat původní vstup v co nejvyšší kvalitě. ===== 2. Jak probíhá učení? ===== Autoenkodér nepotřebuje lidské štítky (labely). Jako "učitel" mu slouží samotný vstup. * **Loss Function (Ztrátová funkce):** Měří rozdíl mezi vstupem ($x$) a rekonstruovaným výstupem ($\hat{x}$). Nejčastěji se používá **MSE (Mean Squared Error)**. * Cílem sítě je minimalizovat tuto chybu rekonstrukce. $$Loss = \|x - \hat{x}\|^2$$ ===== 3. Typy autoenkodéru a jejich využití ===== ==== Denoising Autoencoder (Odšumovací) ==== Do vstupu se záměrně přidá šum (např. náhodné pixely). Síť se trénuje tak, aby na výstupu byl čistý obraz. Tím se učí chápat skutečnou strukturu dat, nikoliv jen kopírovat pixely. ==== Variational Autoencoder (VAE) ==== Pokročilý typ, který místo pevných bodů v latentním prostoru modeluje pravděpodobnostní rozdělení. * **Využití:** Generování nových dat (např. generování lidských tváří, které neexistují). ==== Sparse Autoencoder ==== Vynucuje, aby v hrdle bylo aktivních jen několik málo neuronů zároveň. To pomáhá extrahovat unikátní a silné příznaky. ===== 4. Praktické aplikace ===== * **Redukce dimenzionality:** Modernější a nelineární alternativa k [[it:ml:pca|PCA]]. * **Detekce anomálií:** Síť trénovaná na normálních datech (např. z motoru) bude mít vysokou chybu rekonstrukce u dat, která vykazují poruchu. * **Vybarvování obrázků:** Vstupem je černobílý obrázek, cílem je rekonstruovat barevný. * **Komprese dat:** Efektivní ukládání informací v malém objemu dat. ===== 5. Ukázka v Pythonu (Keras) ===== from keras.layers import Input, Dense from keras.models import Model # Definice rozměrů input_size = 784 # např. 28x28 obrázek code_size = 32 # rozměr komprese (bottleneck) # Enkodér input_img = Input(shape=(input_size,)) encoded = Dense(code_size, activation='relu')(input_img) # Dekodér decoded = Dense(input_size, activation='sigmoid')(encoded) # Sestavení modelu autoencoder = Model(input_img, decoded) autoencoder.compile(optimizer='adam', loss='binary_crossentropy') ---- //Související články:// * [[it:ai:neural_networks|Neuronové sítě]] * [[it:ml:unsupervised_learning|Učení bez učitele]] * [[it:ai:generative_models|Generativní modely (GAN vs VAE)]] //Tagy: {{tag>ai neural_networks autoencoders deep_learning unsupervised_learning}}//