Strojové učení

Editovat
Note

Strojové učení a rozpoznávání vzorů: problém klasifikace a regrese, shluková analýza, učení s učitelem a bez učitele. Vícevrstvé neuronové sítě, vícevrstvé perceptrony, ztrátové funkce, zpětná propagace. Hopfieldova síť, konvoluční sítě, rekurentní sítě, samo-organizující mapy.

PV021

Tip
Velkou část zpracování téhle otázky jsem ukradl sám sobě.

Strojové učení a rozpoznávání vzorů

Machine learning / strojové učení

Oblast informatiky zabývající se konstrukcí systémů, které nemají svoji funkcionalitu explicitně naprogramovanou, ale naučí se ji až na základě vstupních dat. [2] [1]

Používá se např. pro:

  • filtrování spamu v emailech,

  • rozpoznávání řeči, rukopisu, tváří, zvuků, atd.,

  • klasifikaci textů,

  • herní strategie,

  • analýzu trhu,

  • autonomní řízení vozidel.

Rozpoznávání vzorů / pattern recognition

Problém automatizovaného rozpoznávání vzorů v datech (např. číslic v obrázku). Příklady jsou klasifikace, regrese a shluková analýza. [6]

Klasifikace

Problém identifikace kategorie, do které patří vstupní data. Výstupem klasifikace je buď jedna konkrétní kategorie nebo vektor popisující s jakou pravděpodobností vstup do každé kategorie patří. [3]

Regrese

Problém odhadu hodnoty nějaké proměnné na základě znalosti jiných proměnných. Výstupem regrese je obvykle reálné číslo. [4]

Například při lineární regresi se snažíme data napasovat na přímku — najít její offset a směrnici. Při logistické regresi chceme to samé ale místo přímky máme logistic sigmoid. A tak dále. [1]

Shluková analýza / cluster analysis

Vicedimenzionální problém rozdělení vstupních dat do skupin (shluků) tak, aby data v jednom shluku byla podobnější sobě než datům v jiných shlucích. [5]

Souvisejícím problémem je vyjádření toho, že jsou si data v nějakém smyslu podobná.

Supervised learning / učení s učitelem

Síť se učí na základě množiny trénovacích vstupů ve formátu (vstup, výstup). Supervised learning algoritmy se snaží síť modifikovat tak, aby vracela výstupy co možná nejpodobnější těm trénovacím. [1]

Unsupervised learning / učení bez učitele

Síť dostává jen vstupy. Cílem je získat o vstupní množině dat nějakou užitečnou informaci, třeba kde jsou shluky. [1]

Neuronové sítě

Neural network / neuronová síť

Neuronová síť je množina propojených neuronů, jejíž chování je zakódováno do spojení mezi neurony. Je primitivním modelem biologických neuronových sítí.

Typ neuronové sítě je dán její architekturou (způsobem zapojení), aktivitou (transformací vstupů na výstupy) a učením (metodou změny vah při trénování).

Architektura

Neuron může být input, output nebo hidden. Může být dokonce input i output najednou. Hidden je, právě když není input ani output.

Síť být cyklická — recurrent — nebo acyklická — feed-forward.

Stav sítě

Vektor výstupů všech neuronů sítě (nejen output).

Stavový prostor sítě

Množina všech možných stavů sítě.

Vstup sítě

Vektor reálných čísel (prvek ), kde je počet vstupů.

Vstupní prostor sítě

Množina všech vstupů sítě.

Iniciální stav

Input neuronům je za výstup () dán vektor vstupů (). Všem ostatním neuronům je výstup () nastaven na 0.

Výstup sítě

Vektor výstupů () output neuronů. Výstup se v průběhu výpočtu může měnit.

Výpočet

Typicky po diskrétních krocích:

  1. Zvolí se množina neuronů (vybrané podle pravidla daného architekturou).

  2. Zvoleným neuronům je nastaven výstup — prostě se vyhodnotí aktivační funkce.

  3. Vrať se ke kroku 1.

    Výpočet je konečný, pokud se stav sítě dále nemění po konečném množství opakování postupu výše.

Konfigurace

Vektor hodnot všech vah.

Vahový prostor

Množina všech konfigurací.

Iniciální konfigurace

Počáteční hodnoty vah (než začne trénování).

Multilayer perceptron (MLP) / vícevrstvé neuronové sítě

Perceptron — jeden neuron
  • Hrubá matematická aproximace biologického neuronu.

  • Binární klasifikátor — rozlišuje jestli vstup patří nebo nepatří do nějaké jedné kategorie.[1]

  • Linerání klasifikátor — jeho funkce kombinuje vstupy lineárně.

szp06 perceptron
  •  — inputy

  •  — váhy

  •  — vnitřní potenciál

  •  — výstup

  •  — aktivační funkce udávající výstup

  • bias — udává "jak těžké" je pro neuron se aktivovat (čím vyšší číslo, tím těžší je pro neuron vydat nenulový výstup)

  •  — pro snažší implementaci se závádí dodatečný vstup, který má vždy hodnotu 1 a váhu rovnu -bias

Note
Vnitřní potenciál funguje jako nadrovina (čára při 2D, rovina při 3D, nepředstavitelný mostrum ve vyšších dimenzí), která rozděluje prostor vstupů na část, kde je a kde .
Multilayer perceptron (MLP)

MLP je feed-forward (neobsahuje cykly) architektura NN, kde platí:

  • Neurony rozděleny do vrstev — jedné vstupní, jedné výstupní a libovolného počtu skrytých vrstev uprostřed.

  • Vrstvy jsou dense — každý neuron v -té vrstvě je napojen na každý neuron v -ní vrstvě.

szp06 mlp

Kde:

  •  — množina input neuronů

  •  — množina output neuronů

  •  — množina všech neuronů

  • Neurony mají indexy , , …​

  •  — vnitřní potenciál neuronu po skončení výpočtu

  •  — výstup neuronu po skončení výpočtu

  •  — hodnota formálního jednotkového vstupu (kvůli biasům)

  •  — váha spojení z neuronu do neuronu (dst ← src)

  •  — bias — váha z formální jednotky do neuronu

  •  — množina neuronů , jenž mají spojení do (j ← i)

  •  — množina neuronů , do nichž vede spojení z (j → i)

Aktivita

Pravidlo pro výběr neuronů při výpočtu

V i-tému kroku vezmi i-tou vrstvu.

Vnitřní potenciál neuronu

Aktivační funkce neuronu

(třeba logistic sigmoid)

Stav nevstupního neuronu

resp.

Logistic sigmoid

Většina aktivačních funkcí vychází s funkce sigmoid. (Jsou sigmoidní, vypadají trochu jako písmeno S). Přidávají do výpočtu nelinearitu, která je potřeba, aby NN mohla modelovat libovolné funkce. Zároveň je podobná klasickému thresholdu, ale je "vyhlazená".

kde je steepness parametr, který určuje, jak rychle sigmoid roste.

szp06 sigmoid

Trénink

Important
Pro likelihood viz otázka Statistika.

Neuronka je model, kde váhy neuronů jsou parametry. Při učení neuronek je naším cílem maximalizovat likelihood, jakožto míru toho, že naše síť sedí na "naměřená data", training set . Tomuhle přístupu se říká maximum likelihood principle.

Training set

je množina samplů, kde jsou vstupní vektory a jejich očekáváné výstupy.

Ztrátové funkce / loss function / error function

Popisuje způsob, jakým je při tréninku výstup z NN porovnán s očekáváným výstupem.

Její volba závisí na tom, co NN modeluje. Např. volíme:

  • mean squared error (MSE) — pro regresi,

  • (categorical) cross-entropy — pro (multi-class) klasifikaci.

Gradient descent

Algoritmus počítající, jak se mají vahy neuronů upravit, aby se zmenšila ztráta. Vychází z gradientu ztrátové funkce.

Stochastic Gradient Descent (SGD)

Sample nebereš po jednom ale po malých randomizovaných várkách — minibatchích , a váhy upravuješ až po zpracování minibatche.

Backpropagation / zpětná propagace

Technika, kdy se v průběhu gradient descent ztráta způsobená konkrétním neuronem dedukuje na zákládě jeho příspěvku k výsledku. Algoritmus tak postupuje od output vrstvy směrem k input vrstvě.

Learning rate

Hyperparametr ovlivňující rychlost učení. Může záviset na iteraci , pak je to funkce .

Příklad 1. Gradient descent v MLP

Za předpokladu, že je squared error, pak:

Warning
V případě, že není squared error, následující výpočet neplatí.
Algoritmus pro výpočet
  1. Inicializuj .

  2. forward pass — vyhodnoť NN pro sample (t.j. pro všechny )

  3. backward pass — od konce pro každou vrstvu spočítej

    1. pokud , pak

    2. pokud , a je v -té vrstvě, pak

  4. weight update — pro všechna spočítej

  5. obsahuje výslednou hodnotu

Konvoluční sítě

Neuronové sítě uzpůsobené ke zpracování obrazu. Místo násobení matic používají alespoň v jedné vrstvě konvoluci. Konvoluční sítě mají dva nové typy vrstev: konvoluční a pooling, ale jinak se od klasických MLP moc neliší. Aktivace a trénink zůstavají v podstatě stejné. [9]

Important
Pro konvoluci viz otázka Zpracování rastrového obrazu.
szp06 cnn
Obrázek 1. Typical CNN by Aphex34
Konvoluční vrstva
  • Každý neuron je napojen jen na malý receptive field neuronů o vrstvu níže, který se posouvá o daný stride.

  • Výstup z neuronu v konvoluční vrstvě je dán konvolucí jeho receptive field s váhami a přičtením biasu.

  • Všechny neurony v konvoluční vrstvě sdílí stejné váhy a biasy dané velikostí receptive field, což jim umožňuje naučit se nějaký vzor o velikosti receptive field — říkáme, že taková vrstva je feature mapa.

  • Vzorů se chceme zpravidla naučit více, máme vícero vzájemně nezávislých feature map napojených na stejnou vstupní vrstvu.

Pooling vrstva

Nemají váhy. Slouží ke snížení počtu parametrů. Každý neuron počítá nějakou jednoduchou funkci na svém receptive field:

  • max-pooling: maximum,

  • L2-pooling: square root of sum of squares,

  • average-pooling: mean.

Backpropagation

Algoritmus je potřeba trochu poupravit, aby podporovat konvoluční a pooling vrstvy.

U konvolučních vrstev nestačí pro každou váhu spočítat , protože pro každou váhu existuje víc než jeden výstup . Tedy:

kde je množina spojení (dvojic neuronů) sdílících váhu .

Pokud a je max-pooling, pak a platí:

Rekurentní sítě

Neuronové sítě, jejichž architektura obsahuje cykly. Tedy výstup v jednom bodě v čase sítě přispívá k výstup v budoucnosti. Jinými slovy, je to neuronka s pamětí. Recurrent neural networks (RNN) konkrétně jsou MLP minimálně rozšířené tak, aby měly paměť. [10]

Important
Výhody
  • Umí zpracovat vstupy s variabilní, předem neznámou délkou.

  • Velikost modelu (množiny vah) je fixní nezávisle na velikosti vstupu.

  • Váhy se sdílí mezi vstupy (např. slova ve větě), což umožňuje naučit se nějaký kontext.

Warning
Nevýhody
  • Trénování je složitější, protože se vyskytuje zpětná vazba.

  • Výpočetně náročnější.

  • Gradient může explodovat (exploding) nebo zaniknout (diminishing).

szp06 rnn
Notace

V čase :

  • je vstupní vektor předávaný vstupním neuronům,

  • je vektor hodnot skrytých neuronů,

  • je výstupní vektor neuronů,

  • je váha mezi inputem a hiddenem ,

  • je váha mezi hiddenem a hiddenem ,

  • je váha mezi hiddenem a outputem .

Aktivita
  • Na počátku je výstup neuronky vynulován. Paměť je tedy prázdná.

  • RNN zpracovává sekvenci vstupů délky .

  • Pro každý prvek , síť vyprodukuje výstup z hidden neuronů:

  • Pro výstup pak:

Trénink

Trénovací set je množina dvojic — (vstupní sekvence, výstupní sekvence).

Note
Ano, to znamená, že je první prvek -ho prvku v -té vstupní sekvenci.

Squared error samplu :

Gradient descent je podobný. Na začátku jsou všechny váhy inicalizovány poblíž 0 a pak iterativně přepočítávány:

Za předpokladu squared error je backpropagation:

Tip
Pokud , pak gradient buď vybouchne nebo se ztratí.
Long Short-Term Memory (LSTM)

LSTM řeší problém s vanishing a exploding gradientem, kterým RNN. V RNN je typicky . V LSTM obsahuje jeden hidden neuron vlastně čtyři "podvrstvy", které mimo jiné umožňují část paměti zapomenout:

szp06 lstm