Umělá inteligence
Obsah Soubory
markdown

Kohonenovy-mapy.md

7.0 kB 113 řádků Změněno Zobrazit na GitHubu Stáhnout
markdown
# Kohonenovy mapy (SOM) [K-means](Shlukovani#algoritmus-k-means) ti řekne, do kterého shluku bod patří, a víc nic. Když se zeptáš, jestli je shluk 3 podobnější shluku 7 nebo shluku 12, nemá ti co odpovědět - čísla shluků jsou libovolné popisky bez vztahu. Kohonenova mapa tuhle otázku zodpoví, protože **shluky rozmístí do mřížky tak, aby sousedé v mřížce byli podobní i v datech**. Výsledkem není seznam, ale mapa, na které se dá orientovat. Tahle stránka popisuje architekturu a algoritmus učení SOM. Předpokládá to [umělý neuron](Neuron-a-perceptron) a [shlukování](Shlukovani), zejména k-means, protože se na kontrast s ním pořád odkazuje. ## Definice **Self-Organizing Map (T. Kohonen, 1982)** je síť s **učením bez učitele**, která zobrazuje vysokodimenzionální vstupní prostor na nízkodimenzionální - typicky dvourozměrnou - mřížku **se zachováním topologie**. Ta poslední tři slova jsou celý rozdíl proti obyčejnému shlukování. **Zachování topologie znamená, že body blízké ve vstupním prostoru skončí u blízkých neuronů v mřížce.** Odtud plyne, proč se výsledek dá nakreslit a proč se z něj dá něco vyčíst pouhým pohledem. ## Architektura Vstupní vektor `x = (x1, ..., xn)` je připojen **ke každému neuronu** výstupní mřížky. Každý neuron `i` má svůj váhový vektor `wi` **o stejné dimenzi jako vstup**. To je jiná úvaha, než na jakou jsi zvyklý z [MLP](MLP-a-backpropagation). Váhový vektor tady není „síla spojení", ale **bod ve vstupním prostoru** - je to reprezentant, prototyp, těžiště. SOM je vlastně mřížka bodů, která se do dat rozprostře jako síťka. Neurony v mřížce nejsou propojené. Jejich uspořádání do mřížky slouží **jen k definici sousedství**, nic přes ně neteče. ## Algoritmus učení 1. **Inicializace** vah `wi` náhodnými malými hodnotami.2. Pro každý trénovací vzor `x`:   - **(a)** spočítej euklidovskou vzdálenost ke každému neuronu:      ```     Di = Σ (xk − wi,k)²        pro k = 1..n     ```    - **(b)** najdi **vítěze (BMU - Best Matching Unit)** s nejmenší `Di`,   - **(c)** uprav váhy vítěze a jeho okolí `R`:      ```     wi_nové = wi_staré + α (x − wi_staré)     ```      přičemž pro okolí platí míra učení `β < α`.3. Poloměr okolí `R` i rychlosti `α` a `β` se v čase postupně **zmenšují**. ```mermaidflowchart TD    A["vezmi vzor x"] --> B["spočítej vzdálenost ke všem neuronům"]    B --> C["najdi vítěze BMU"]    C --> D["přitáhni vítěze k x rychlostí α"]    D --> E["přitáhni sousedy v okolí R rychlostí β < α"]    E --> F["zmenši R, α, β"]    F --> A``` **Krok (c) je celý trik a je to nejdůležitější věc na téhle stránce.** K-means posune jen vítězný střed. SOM posune **i jeho sousedy v mřížce**, byť slaběji. Tím se sousední neurony táhnou ke stejné oblasti dat - a přesně tak vznikne to zachování topologie. Bez toho posunu okolí by ze SOM bylo k-means s divně organizovanými středy a nic víc. **Proč se `R`, `α` a `β` zmenšují.** Na začátku je okolí velké a rychlost vysoká, takže se celá mřížka hrubě rozprostře a najde tvar dat. Ke konci je okolí malé a rychlost nízká, takže se jednotlivé neurony jen dolaďují. **Je to stejná myšlenka jako [simulované žíhání](Lokalni-prohledavani#simulované-žíhání)** - nejdřív hrubě, pak jemně - a bez ní by se mřížka zamotala do sebe a nikdy nerozmotala. ## Konvergence a aplikace SOM typicky konverguje během **10 000 i více iterací**. To je řádově víc, než potřebuje k-means, a je to daň za tu strukturu navíc. Výstupem je dvourozměrná „mapa", v níž se podobné vstupní vzory shlukují k sobě. Použití: - rozpoznávání řeči a rukou psaného textu,- klastrování dokumentů (**WebSOM**),- analýza obrazových dat, kompresní mapování barev,- segmentace zákazníků, detekce anomálií. **Kompresní mapování barev je nejnázornější příklad.** Vstupem jsou trojice RGB, mřížka je dvourozměrná. SOM se naučí paletu barev, ve které jsou podobné odstíny vedle sebe - takže výsledek se dá nejen použít jako paleta, ale i vytisknout a podívat se na něj. ## Kde SOM přestává platit **Musíš zadat velikost mřížky předem.** Je to tentýž problém jako `k` u [k-means](Shlukovani#jak-zvolit-k), jen ve dvou rozměrech. Mřížka `10×10` znamená sto prototypů, ať je v datech shluků kolik chce. **Mapa se dá špatně interpretovat.** Že jsou dva neurony vedle sebe, ještě neznamená, že je mezi jejich daty malá vzdálenost - mřížka je konečná a někam se to natlačit musí. Řeší se to **U-maticí**, která k mapě dokreslí skutečné vzdálenosti mezi sousedy a udělá z ní čitelnou „krajinu" s hřebeny mezi shluky. **Nezachová vzdálenosti, jen sousednost.** SOM je topologické, ne metrické zobrazení. Když potřebuješ zachovat i vzdálenosti, jdi na MDS nebo t-SNE. **Je pomalá a má hodně parametrů.** Velikost mřížky, počáteční `R`, `α`, `β`, plány jejich zmenšování, počet iterací. U velkých dat je dnes obvykle lepší kombinace PCA nebo t-SNE pro vizualizaci a [DBSCAN](Shlukovani#dbscan) pro shluky. **Dneska se používá spíš vzácně.** Pro vizualizaci vysokodimenzionálních dat vyhrálo t-SNE a UMAP, pro shlukování k-means a DBSCAN. SOM se drží tam, kde je potřeba **současně** shlukovat a mít z toho čitelnou mapu. ## Co se na tom nejčastěji rozbije | Příznak | Kde je problém ||---|---|| Mřížka je zamotaná sama do sebe | příliš rychlé zmenšování `R` - začni s okolím přes půl mřížky || Všechny neurony skončily v jednom bodě | příliš velké `α` nebo příliš dlouho velké okolí || Část neuronů se nikdy nestala vítězem | mřížka je moc velká proti počtu dat, nebo špatná inicializace || Mapa vypadá náhodně | chybí [normalizace vstupů](Metriky-a-vyhodnoceni#základní-typy-dat) || Nejde poznat, kde jsou hranice shluků | potřebuješ U-matici, samotná mapa hranice neukáže | ## Co si odnést **SOM je shlukování se zachováním topologie.** Sousedé v mřížce jsou si podobní i v datech. **Váhový vektor neuronu je bod ve vstupním prostoru**, ne síla spojení. **Posun okolí vítěze je celý trik.** Bez něj je to k-means. **`R`, `α` a `β` se musí zmenšovat** - nejdřív hrubě, pak jemně, jako u žíhání. **Velikost mřížky zadáváš předem** a je to stejné rozhodnutí jako volba `k`. **Zachovává sousednost, ne vzdálenosti.** Na vzdálenosti si dokresli U-matici. ## Kam dál - **[Shlukování](Shlukovani)** - k-means, hierarchické metody a DBSCAN pro srovnání- **[Topologie a učení sítí](Topologie-a-uceni-siti)** - kam SOM patří mezi ostatní sítě- **[Neuron a perceptron](Neuron-a-perceptron)** - Hebbovo pravidlo, ze kterého učení bez učitele vychází- **[Metriky a vyhodnocení](Metriky-a-vyhodnoceni)** - metriky vzdálenosti, na kterých SOM stojí