Az LSTM hálózatok mögötti néhány magas szintű intuíciót szeretnék megvitatni. Íme néhány kérdés a miért szempontok feltárásához:

  • Miért/mikor használnánk LSTM-et egy feed forward neurális hálózattal (FFNN) szemben?
  • Melyek az LSTM-ek előnyei és hátrányai, és hogyan viszonyulnak az FFNN-hez?
  • Miben különböznek a hagyományos rekurrens neurális hálózatoktól (RNN)?

Feed forward neurális hálózatok (FFNN)

Először nézzünk meg egy standard FFNN architektúrát:Az adattudományi kép: *Counting No. of Parameters in Deep Learning Models by Hand*

Amint azt valószínűleg tudjuk, ez az FFNN három bemenetet fogad, azokat a rejtett réteg segítségével feldolgozza, és két kimenetet állít elő. Ezt az architektúrát kibővíthetjük több rejtett réteg beépítésével, de az alapkoncepció továbbra is érvényes: bemenetek érkeznek, egy irányban feldolgozzuk őket, és a végén kiadjuk őket.

Ezt a koncepciót más cikkek nagyon jól elmagyarázzák, ezért nem megyek bele sokkal részletesebben. A legfontosabb tanulság:

Az FFNN-t a rekurrens architektúráktól elsősorban az különbözteti meg, hogy egy neuron bemeneteinek a neuron előtti rétegből kell származniuk.

FFNN Wikipedia

Rekurrens neurális hálózatok (RNN)

A rekurrens neurális hálózatok matematikailag nagyon hasonlóak az FFNN modellekhez. Fő különbségük, hogy az FFNN-re vonatkozó korlátozás már nem érvényesül:

A neuron bemenete bármelyik másik rétegből származhat.

A survey on the application of recurrent neural networks to statistical language modeling

Az architektúrát gyakran látjuk “összetekerve” egy rekurrens egységbe, mint például a következő:

Média szócikk: Minden, amit a rekurrens neurális hálózatokról tudni kell

Az architektúra-diagramokon látható “hengerelt” egységek ezért megtévesztően kicsik lehetnek. Ha kitekerjük őket, a hálózat gyakran elég mély lesz!

RNN Wikipedia

Long-Short Term Memory (LSTM)

A LSTM-ek az RNN-ek egy speciális típusa, amelyet az eltűnő/explodáló gradiens problémájának kezelésére terveztek.

A hagyományos RNN-ek edzésekor a hálózat gyakran szenved az eltűnő/explodáló gradiensektől: egy rekurrens egység kitekerése nagyon mély hálózatot eredményez! Ha a backpropagation algoritmuson a hagyományos RNN architektúrákat használva haladunk végig, a korábbi rétegek egyre kevésbé lesznek jelentősek, ahogy haladunk a hálózaton keresztül. Emiatt a hagyományos RNN-ek hajlamosak az információ elfelejtésére, különösen olyan adatok esetében, amelyek sok időlépéssel az aktuális időpont előtt jelennek meg.

Egy LSTM-cella példája a következőképpen van ábrázolva:

LSTM-cella architektúra

Ez a szerkezet hasonló a hagyományos RNN feltekert egységéhez, de a legfontosabb különbség az LSTM-hez képest a kapuk: bemeneti kapu, kimeneti kapu és felejtési kapu. Ezeknek a kapuknak a funkcióját jól leírja a nevük:

  • bemeneti kapu vezérli a cellába belépő adatokat
  • felejtési kapu vezérli, hogy az adatok milyen mértékben maradnak a cellán belül
  • kimeneti kapu vezérli a cella kimenetét az aktivációs függvényen keresztül

Ez a github IO bejegyzés egy remek bevezetés az LSTM-ek alapjaiba. Az LSTM matematikája mögötti intuíciót is elképesztően jól elmagyarázza.

LSTM Wikipedia

Az RNN tulajdonságai és egy példahasználati eset

A visszacsatolási hurkok a rekurrens neurális hálózatokat jobban alkalmassá teszik az időbeli kihívásokra. Az időt figyelembe veszik az architektúrájukban!

Vizsgáljunk meg egy példát:

Talán egy hálózatot használ egy mondat következő szavának előrejelzésére. Tegyük fel, hogy a következő bemeneteket kapjuk:

Éhezik, Alice a legközelebbi boltba hajt, hogy megvegye

Egy rekurrens neurális hálózat esetleg elfelejtené az első szót, hogy “éhezik”, míg egy LSTM ideális esetben propagálná azt. Egy LSTM tehát a mondatban korábban hallott kontextust használná az “élelmiszer” kitalálásához, míg egy RNN bármit kitalálhat, amit egy boltban vásárolnak, különösen egy hosszú mondat vagy több mondat esetén.

Az ilyen típusú memóriát lehetővé tevő kapuzási mechanizmusokat @StatsSorcerceress itt jól elmagyarázza: Forget Layer in a Recurrent Neural Network (RNN) –

A RNN-ket arra tervezték, hogy szekvenciákat kezeljenek. Ez használható videó (képsorozatok), írás/beszéd (szavak sorozata) stb. elemzésére.

A LSTM-eket úgy tervezték, hogy a fontos információk idővel megmaradjanak. Az RNN-ek gyakran “felejtenek” az idő múlásával.

AFFNN-ek memória nélküli rendszerek; bizonyos bemenet feldolgozása után mindent elfelejtenek arról a bemenetről. Tegyük fel például, hogy betanítunk egy FFNN-t, amely 5 szót fogad el bemenetként, és megjósolja a következő kimenetet. Ez a modell ezután megkapná a fenti példa bemenetét:

a legközelebbi bolt, ahol vásárolni lehet .

Ez egyértelműen elveszíti a kontextust, és rossz eredményt kapnánk.

Most, kérdezhetnénk, mi lenne, ha készítenénk egy olyan FFNN-t, amely sok bemenetet fogad el úgy, hogy a bemenetei között szerepeljen az “éhezik” szó? Más szóval, nem tudnánk-e növelni a bemenetek számát egy FFNN-hez, hogy kellőképpen reprezentálja az előzetes adatokat?

A válasz igen, de ez a módszer nem hatékony és gyakran nem is praktikus. Tegyük fel például, hogy egy egész bekezdéssel korábbi kontextusra kell emlékeznünk. Nagyon nagy FFNN-re lenne szükségünk! Ráadásul honnan tudjuk, hogy hány szóval visszamenőleg akarjuk a kontextust? Elég lenne 20? 30? 100? Az LSTM architektúra teljesen kiküszöböli ezeket a problémákat azzal, hogy a hálózat egy átmeneti memóriát kezel. Ezt a problémát súlyosbítják a videófeldolgozási kihívások, mivel minden egyes képkocka lényegesen több bemenetet igényel, mint az NLP-feladatok.

Megjegyzendő azonban, hogy az LSTM-egységek eleve számítási szempontból bonyolultabbak, mint egy FFNN egységei, így a betanításuk gyakran nehezebb és több időt vesz igénybe. E hátrányok ellenére az időbeli adatokkal kapcsolatos kihívásokban elért sikerük egyértelműen indokolja alkalmazásukat az FFNN-nel szemben.

Articles

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.