Hluboké učení

Dokončeno

Poznámka:

Další podrobnosti najdete na kartě Text a obrázky .

Hluboké učení je pokročilá forma strojového učení, která se snaží emulovat způsob, jakým se lidský mozek učí. Klíčem k hlubokému učení je vytvoření umělé neurální sítě , která simuluje elektrochemickou aktivitu v biologických neuronech pomocí matematických funkcí, jak je znázorněno zde.

Biologická neurální síť Umělá neurální síť
Diagram přirozené neurální sítě Diagram umělé neurální sítě
Neurony se aktivují v reakci na elektrochemické podněty. Když je aktivován, signál se předává připojeným neuronům. Každý neuron je funkce, která pracuje se vstupní hodnotou (x) a hmotností (w). Funkce je zabalena do aktivační funkce, která určuje, zda se má předat výstup.

Umělé neurální sítě se skládají z několika vrstev neuronů – v podstatě definující hluboko vnořenou funkci. Tato architektura je důvodem, proč se technika označuje jako hluboké učení a modely vytvořené v ní se často označují jako hluboké neurální sítě (DNN). Hluboké neurální sítě můžete použít pro mnoho druhů problémů strojového učení, včetně regrese a klasifikace, stejně jako specializovanější modely pro zpracování přirozeného jazyka a počítačové zpracování obrazu.

Stejně jako jiné techniky strojového učení probírané v tomto modulu zahrnuje hluboké učení přizpůsobení trénovacích dat funkci, která dokáže předpovědět popisek (y) na základě hodnoty jedné nebo více funkcí (x). Funkce (f(x)) je vnější vrstva vnořené funkce, ve které každá vrstva neurální sítě zapouzdřuje funkce, které pracují s hodnotami x a hmotnosti (w). Algoritmus použitý k trénování modelu zahrnuje iterativní předávání hodnot funkcí (x) v trénovacích datech vpřed prostřednictvím vrstev, aby se vypočítaly výstupní hodnoty pro ŷ, a následné ověření modelu k vyhodnocení, jak dalece se vypočítané hodnoty ŷ liší od známých hodnot y, což kvantifikuje úroveň chyby, nebo ztráty, v modelu. Poté dochází k úpravě vah (w) za účelem snížení ztráty. Vytrénovaný model obsahuje konečné hodnoty hmotnosti, které vedou k nejpřesnějším predikcím.

Příklad – použití hlubokého učení pro klasifikaci

Abychom lépe pochopili, jak funguje model hluboké neurální sítě, pojďme se podívat na příklad, ve kterém se neurální síť používá k definování klasifikačního modelu pro druhy tučňáků.

Diagram neurální sítě používané ke klasifikaci druhů tučňáků

Data vlastností (x) se skládají z několika měření tučňáka. Konkrétně jsou tato měření:

  • Délka tučňákovy faktury.
  • Hloubka tučňákovy faktury.
  • Délka tučňákových flipperů.
  • Tučňák je váhou.

V tomto případě je x vektor čtyř hodnot nebo matematicky x=[x1;x2;x3;x4].

Popisek, který se snažíme předpovědět (y), je druh tučňáků a to, že existují tři možné druhy:

  • Adelie
  • Gentoo
  • Chinstrap

Toto je příklad klasifikačního problému, ve kterém musí model strojového učení předpovědět nejpravděpodobnější třídu, do které patří pozorování. Klasifikační model toho dosahuje predikcí popisku, který se skládá z pravděpodobnosti pro každou třídu. Jinými slovy, y je vektor tří hodnot pravděpodobnosti; jednu pro každou z možných tříd: [P(y=0|x), P(y=1|x), P(y=2|x)].

Proces odvozování predikované třídy tučňáků pomocí této sítě je:

  1. Vektor funkce pro pozorování tučňáků se podává do vstupní vrstvy neurální sítě, která se skládá z neuronu pro každou hodnotu x . V tomto příkladu se jako vstup použije následující vektor x : [37.3, 16.8, 19.2, 30.0]
  2. Funkce pro první vrstvu neuronů vypočítají vážený součet kombinací hodnoty x a w hmotnosti a předají ji aktivační funkci, která určuje, jestli splňuje prahovou hodnotu, která se má předat do další vrstvy.
  3. Každý neuron ve vrstvě je připojený ke všem neuronům v další vrstvě (architektura někdy označovaná jako plně propojená síť), takže výsledky každé vrstvy se předávají přes síť, dokud se nedostanou do výstupní vrstvy.
  4. Výstupní vrstva vytváří vektor hodnot; v tomto případě pomocí softmaxu nebo podobné funkce k výpočtu rozdělení pravděpodobnosti pro tři možné třídy tučňáků. V tomto příkladu je výstupní vektor: [0.2, 0,7, 0,1]
  5. Prvky vektoru představují pravděpodobnosti pro třídy 0, 1 a 2. Druhá hodnota je nejvyšší, takže model předpovídá, že druh tučňáka je 1 (Gentoo).

Jak se neurální síť učí?

Váhy v neurální síti jsou centrální pro výpočet predikovaných hodnot popisků. Během trénování se model učí váhy, které budou mít za následek nejpřesnější předpovědi. Pojďme se podrobněji podívat na proces trénování, abychom pochopili, jak se toto učení provádí.

Diagram neurální sítě, která se trénuje, vyhodnocuje a optimalizuje

  1. Jsou definovány trénovací a ověřovací datové sady a trénovací funkce se předávají do vstupní vrstvy.
  2. Neurony v každé vrstvě sítě aplikují své váhy (které jsou původně přiřazeny náhodně) a nasouvají data prostřednictvím sítě.
  3. Výstupní vrstva vytvoří vektor obsahující počítané hodnoty pro ŷ. Například výstup predikce třídy tučňáků může být [0,3. 0.1. 0.6].
  4. Funkce ztráty se používá k porovnání předpovídané hodnoty ŷ se známými hodnotami y a agreguje rozdíl (který se označuje jako ztráta). Pokud je například známá třída pro případ, která vrátila výstup v předchozím kroku Chinstrap, hodnota y by měla být [0.0, 0.0, 1.0]. Absolutní rozdíl mezi tímto vektorem a vektorem ŷ je [0,3, 0,1, 0,4]. Ve skutečnosti funkce ztráty vypočítá agregační rozptyl pro více případů a shrnuje ji jako jednu hodnotu ztráty .
  5. Vzhledem k tomu, že celá síť je v podstatě jedna velká vnořená funkce, může optimalizační funkce použít rozdílové kalkulus k vyhodnocení vlivu každé váhy v síti na ztrátu a určit, jak je lze upravit (nahoru nebo dolů), aby se snížila celková ztráta. Konkrétní technika optimalizace se může lišit, ale obvykle zahrnuje gradientní sestup, ve kterém je každá váha zvýšena nebo snížena, aby se minimalizovala ztráta.
  6. Změny v hmotnostech se vrátí do vrstev v síti a nahradí dříve použité hodnoty.
  7. Proces se opakuje přes několik iterací (označovaných jako epochy), dokud nedojde k minimalizaci ztráty a model předpovídá přijatelně přesně.

Poznámka:

I když je jednodušší si každý případ v trénovacích datech předávaných přes síť představit po jednom, ve skutečnosti jsou data sdružena do matic a zpracována pomocí lineárních algebraických operací. Z tohoto důvodu se na počítačích s grafickými procesory (GPU) optimalizovanými pro vektorovou a maticovou manipulaci nejlépe provádí trénování neurálních sítí.