Úvod do neuronových sítí#

Motivace - fungování mozku, propojení množství neuronů, aktivace $y$ (aktivační potenciál)

$$ y = f(\sum_{i=1}^{N}{w_i x_i + b}) $$

Neuron

Perceptron#

Demo: https://playground.tensorflow.org/

Základní architektura neuronové sítě. Skládá se z několika vrstev neuronů - vstup, výstup + skryté vrstvy:

V sousedních dvou vrstvách je každý neuron z jedné vrstvy propojen s každým z druhé vrstvy.

Perceptron

Trénování jednoduchého perceptronu:

Perceptron

Trénování hlubokých neuronových sítí:

  • Pomocí optimalizačních metod + Zpětné šíření změny (Backpropagation) skrz neuronovou síť:

    • Metoda stochastického nejvetšího spádu

    • Adam, …

  • Učení s učitelem vs bez učitele

Backpropagation

Chyba na výstupu se dá vizualizovat jako křivka/funkce, u které hledáme minimum - model se dopustí nejmenší chyby.

Backpropagation

Důležité parametry pro trénování neuronových sítí:

  • learning rate - rychlost učení, “síla” opravy chyby na výstupu při backpropagaci

  • batch training - současné vyhodnocení výstupu pro více vstupů najednou, urychlení trénování

  • epochy - kolikrát model “viděl” všechna data, často je potřeba několik epoch pro získání přesného modelu

  • aktivační funkce - lineární vs nelineární: sigmoid, tanh, ReLU

Aktivační funkce

Problém učení pro hluboké sítě:

  • problém s explodujícími a mizejícími gradienty - čím je neuronová síť hlubší, tím náročnější je trénování a pomalejší šíření změn zpět od výstupu

Pokročilé techniky pro efektivní trénování hlubokých neuronových sítí:

  • dropout vrstva - při průchodu neuronovou sítí se ve zvolené vrstvě dočasně vypne zvolená část neuronů; umožnuje lépe prozkoumávat terén celkové chyby a zefektivnit učení

  • batch normalisation

Konvoluční neuronové sítě#

Demo: https://cs.stanford.edu/people/karpathy/convnetjs/demo/mnist.html

Motivace:

  • Vylepšení perceptronu

  • Zahrnutí základní vlastnosti obrázků přímo do architektury modelu - nezávislost posunutí objektu v obrázku (pořád stejný obraz)

Konvoluční síť

Již poměrně hluboké sítě - potřeba aplikovat pokročilé techniky trénování.

Parametry konvoluční sítě:

  • velikost okna (kernel size)

  • počet kanálů (channels) - určuje, kolik vlastností se v dané vstvě z obrázku extrahuje

  • max-pooling - speciální mezivrstva, která redukuje množství informace - průměrování okolních pixelů

One-hot-encoding#

  • Label encoding: “red” = 1, “blue” = 2, “green” = 3

  • one-hot encoding: “red” = (1,0,0), “blue” = (0,1,0), “green” = (0,0,1)

Pokud se data dělí do jasně odlišných a nezávislých tříd, je one-hot kódování výhodné (potřeba) a může významě zlepšit efektivitu neuronového sítě!

Specialita:

  • Metody word2vec - pokročilé metody kódování slov na vektorovou reprezentaci

Rekurentní neuronové sítě#

Motivace - sekvenční data, obsahující závislosti mezi sousedními prvky

Příklady - časově závislé sekvence, text

Příklad změny významu v textu:

  • The cat chased the mouse.

  • The mouse chased the cat.

Mění se délka sekvence - problém pro konvenční (feed-forward) NN architektury.

Problém s variabilní délkou sekvence pro MLP.

Potřeba zakódovat informaci o pořadí slov (tokenů) přímo v architektuře neuronové sítě.

Rekurentní NN:#

  • umožňují zpracovat vstup ve správném pořadí

  • ukládájí informaci o předcházejících vstupech

  • umožňují vkládat vstup různých délek

  • nekteré vstupy/výstupy můžou chybět - překlad řeči, klasifikace, atd..

  • Turing complete = umožňují simulovat libovolný algoritmus! (při poskytnutí dostatku dat..)

  • Backpropagation through time - RNN se učí opakovanou backpropagací v čase

Rekurentní neuronová síť

Dvě možnosti pro text:

  • word-level RNN - jako token/prvek volíme slovo

  • character-level RNN - jako token/prvek volíme znak

Word Embedding:#

  • první vrstva přenáší (kóduje) slovo/token do vnitřní reprezentace RNN

  • po sobě jdoucí slova jsou zakódovany aktivací skrytých neuronů

One-hot encoding:#

  • umožnuje reprezentovat slova/tokeny jako pravděpodobnosti

  • natrénovanou RNN lze škálovat - ovlivnit “jak moc si vymýšlí” nebo jak moc se řídí tím, co se naučila

  • softmax aktivační funkce na výstupu

Softmax

Teplota - škálování výstupu#

  • zavedení “teploty” a pokročilejšího výběru znaku z pravděpodobností na výstupu

  • snadný trik - modifikace softmax aktivační funkce přidání parametru $T$

Softmax

Pokročilé rekurentní NN:#

  • problém s explodujícími a mizejícími gradienty - čím je neuronová síť hlubší, tím náročnější je trénování a šíření sekvenční informace

  • dvě řešení:

    • LSTM - Long Short-Term Memory

    • GRU - Gated Recurrent Unit

LSTM#

Jednoduché RNN si efektivně pamatují informaci pouze pro krátké řetězce (short-memory). LSTM architektura je vytvořená tak, aby prodloužila tuto “krátkou pamět” a umožnila efektivní učení vzájemných i pro dlouhé řetezce slov/tokenů. Je to dosaženo přidáním dalšího long-term skrytého stavu $c_t$ spolu s mechanismem pomalého zapomínání a přidávání nové informace.

lstm

GRU#

Podobná architektura jako LSTM, ale jiný mechanismus dlouhodobé paměti.

gru

ChatGPT a jiní chatboti#

TODO: stručný uvod/okenko do teorie chatbotu

Zdroje#

Aggarwal - Neural Networks and Deep Learning

https://eclass.upatras.gr/modules/document/file.php/EE935/%CE%97%CE%BB%CE%B5%CE%BA%CF%84%CF%81%CE%BF%CE%BD%CE%B9%CE%BA%CE%AC%20%CE%92%CE%B9%CE%B2%CE%BB%CE%AF%CE%B1/2018_Book_NeuralNetworksAndDeepLearning.pdf

Kam dál?#

https://cs.stanford.edu/people/karpathy/convnetjs/