Chci probrat některé intuice na vysoké úrovni, které stojí za sítěmi LSTM. Zde je několik otázek, které pomohou prozkoumat aspekty proč:

  • Proč/kdy bychom měli použít LSTM namísto neuronové sítě s dopředným posuvem (FFNN)?
  • Jaké jsou výhody a nevýhody LSTM a jak je porovnat s FFNN?
  • Jak se liší od tradičních rekurentních neuronových sítí (RNN)

Feed Forward Neural Networks (FFNN)

Uvažujme nejprve standardní FFNN s architekturou:K obrazu datové vědy: *Jak asi víte, tato FFNN přijímá tři vstupy, zpracovává je pomocí skryté vrstvy a vytváří dva výstupy. Tuto architekturu můžeme rozšířit o další skryté vrstvy, ale základní koncept stále platí: vstupy přicházejí, jsou zpracovány jedním směrem a na konci jsou výstupem.

Tento koncept je velmi dobře vysvětlen v jiných článcích, takže nebudu zacházet do větších podrobností. Klíčovým poznatkem je:

Hlavní podmínkou, která odlišuje FFNN od rekurentních architektur, je, že vstupy do neuronu musí přicházet z vrstvy před tímto neuronem.

FFNN Wikipedie

Rekurentní neuronové sítě (RNN)

Rekurentní neuronové sítě jsou matematicky dosti podobné modelům FFNN. Jejich hlavní rozdíl spočívá v tom, že již neplatí omezení kladené na FFNN:

Vstupy do neuronu mohou přicházet z jakékoliv jiné vrstvy.

Přehled o použití rekurentních neuronových sítí pro statistické modelování jazyka

Často se setkáte s tím, že tato architektura je často „srolována“ do rekurentní jednotky, jako je např. následující:

Střední článek: Vše, co potřebujete vědět o rekurentních neuronových sítích

„Srolované“ jednotky, které můžete vidět ve schématech architektury, mohou být proto klamavě malé. Když je rozvinete, síť bude často poměrně hluboká!

RNN Wikipedie

Dlouhodobá a krátkodobá paměť (LSTM)

LSTM jsou speciálním typem RNN, které jsou navrženy tak, aby řešily problém mizejícího/explodujícího gradientu.

Když trénujete tradiční RNN, síť často trpí mizejícím/explodujícím gradientem: rozvinutím rekurentní jednotky vznikne velmi hluboká síť! Pokud procházíte algoritmem zpětného šíření pomocí tradiční architektury RNN, budou dřívější vrstvy stále méně významné, jak se budeme šířit sítí. Díky tomu jsou tradiční RNN náchylné k zapomínání informací, zejména dat, která se objevují mnoho časových kroků před aktuálním časem.

Příklad buňky LSTM je znázorněn takto:

Architektura buňky LSTM

Tato struktura je podobná tradiční rozvinuté jednotce RNN, ale klíčovým rozdílem oproti LSTM jsou hradla: vstupní hradlo, výstupní hradlo a zapomínací hradlo. Funkci těchto bran dobře popisují jejich názvy:

  • vstupní brána řídí data, která do buňky vstupují
  • brána zapomínání řídí, do jaké míry data v buňce zůstávají
  • výstupní brána řídí výstup buňky prostřednictvím aktivační funkce

Tento příspěvek na github IO je skvělým úvodem do základů LSTM. Úžasně také vysvětluje intuici, která se skrývá za matematikou LSTM.

LSTM Wikipedia

Vlastnosti a příklad použití RNN

Zpětnovazební smyčky propůjčují rekurentním neuronovým sítím lépe časové úlohy. Čas je zohledněn v jejich architektuře!

Prozkoumejme příklad:

Možná používáte síť k předpovídání dalšího slova ve větě. Řekněme, že máte zadány vstupy:

Hladoví, Alice jede do nejbližšího obchodu nakoupit

Rekurentní neuronová síť by mohla první slovo „hladoví“ zapomenout, zatímco LSTM by ho ideálně propagovala. LSTM by tedy k uhodnutí slova „jídlo“ použila kontext, který předtím slyšela ve větě, zatímco RNN by mohla uhodnout cokoli, co se v obchodě kupuje, zejména vzhledem k dlouhé větě nebo více větám.

Mezipaměťové mechanismy, které tento typ paměti umožňují, dobře vysvětlil @StatsSorceress zde: Zapomenutá vrstva v rekurentní neuronové síti (RNN) –

RNN jsou navrženy tak, aby zvládaly sekvence. To lze využít k analýze videa (sekvence obrázků), psaní/řeči (sekvence slov) atd.

LSTM jsou navrženy tak, aby důležité informace přetrvávaly v čase. RNN často v průběhu času „zapomínají“.

FFNN jsou systémy bez paměti; po zpracování nějakého vstupu zapomenou vše o tomto vstupu. Řekněme, že například natrénujeme FFNN, který přijme 5 slov jako vstupy a předpoví další výstup. Tento model by pak obdržel vstup z výše uvedeného příkladu:

nejbližší obchod, kde se dá nakoupit .

Tím zjevně ztrácíme kontext a dostali bychom špatný výsledek.

Nyní se můžete zeptat, co kdybychom vytvořili FFNN, který by přijímal mnoho vstupů, takže by na svých vstupech obsahoval slovo „hladovění“? Jinými slovy, nemohli bychom zvýšit počet vstupů do FFNN, aby dostatečně reprezentovala předchozí data?“

Odpověď zní ano, ale tato metoda je jednak neefektivní, jednak často nepraktická. Řekněme, že si například potřebujeme zapamatovat kontext o celý odstavec zpět. Potřebovali bychom velmi velkou FFNN! Navíc, jak víme, kolik slov zpět chceme jako kontext? Stačilo by 20? 30? 100? Architektura LSTM tyto problémy zcela odstraňuje tím, že nechává síť spravovat přechodnou paměť. Tento problém se zhoršuje v případě úloh zpracování videa, protože každý snímek bude vyžadovat podstatně více vstupů než úlohy NLP.

Všimněte si však, že jednotky LSTM jsou ze své podstaty výpočetně složitější než jednotky FFNN, takže jejich trénování je často náročnější a trvá déle. Navzdory těmto nevýhodám jejich úspěch v úlohách s časovými daty jednoznačně ospravedlňuje jejich použití oproti FFNN.

Articles

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.