Értsd meg, hogyan d; egy LSTM és d; egy GRU diagramokban - Mesterséges gondolat
A visszatérő ideghálózatokat (RNN) széles körben használják a mesterséges intelligenciában, amikor a időbeli fogalom beavatkozik az adatokba (néha "rejtve", mint a szövegelemzésben).
De utóbbiak belső felépítésükben szenvednek olyan korlátozásoktól, amelyek sok helyzetben működésképtelenné teszik őket. Ezután az LSTM és a GRU sejtek lépnek közbe, amelyek teljesítménye csak megegyezik a komplexitásukkal !
Próbáljuk meg, ennek az útmutatónak köszönhetően, egy egyszerű, mély és illusztrált hogyan működnek.
A visszatérő ideghálózatok (RNN) problémája
Hogyan működik az RNN ?
A visszatérő idegháló (RNN) egy ideghálózat, amelyet széles körben használnak a mély tanulásban. Nagyban hasonlít a mesterséges neurális hálózathoz (rövidítve ANN-ként), tanácsos ismerni az utóbbit, hogy teljes mértékben megértsük az RNN magyarázatait.
Azok számára, akik nem ismerik az ANN működését, íme egy rövid összefoglaló:
- A bemeneti adatok a hálózat bemeneti rétegéhez érkeznek. Az adatok például vektor formájában vannak (0,7, 0,4, 0,9), és a vektor egyes koordinátái egy sárga neuronhoz kerülnek
- Ezután a 3 érték rétegenként halad előre a hálózatban (1. kék, majd 2. kék, majd narancssárga, ami a kimenet). Állítólag a kék rétegek rejtettek, a narancs pedig a kimeneti réteg.
- A továbblépéshez az egyes idegsejtek között van egy vonal, amely összeköti őket: ez a vonal egy súlynak nevezett értékhez kapcsolódik (például 0,3 az 1. sárga neuron és az 1. kék között), amely súlyozni fogja a bejövő értéket (azaz 0,7 * 0,3 = az új kék neuronba érkező új érték).
- Minden bejövő (és súlyozott) értéket hozzáadunk egy idegsejt bemenetéhez, majd egy bizonyos funkciót alkalmazunk az eredményre, amely kimeneti értéket ad az egyes idegsejtekhez
- Ezeket az értékeket ezután továbbterjesztik a következő rétegbe és így tovább.

Itt van egy RNN diagramja. Az ANN-tól eltérően (és ez az egyetlen különbség) minden kék neuronon van egy hurok (a hálózati diagram alapján fejlesztve):
- van egy t adatunk (3 érték, minden sárga neuronhoz egy), amely a hálózatba érkezik
- ezeket terjesztik a hálózatban, mint egy ANN-ban
- azzal a különbséggel, hogy minden kék idegsejt az előző idegsejtek súlyozott kimenetének vételén túl megkapja azt az értéket is, amely a t-1 adatból származott.
- az egyes kék idegsejtek kimeneti értékét megtartják, és a t + 1 adatokhoz használják
Tehát van egy 1 iteráció memóriája kék idegsejtekhez.
Itt van egy animáltabb felvétel az RNN-ekről, most, hogy megvan a fő ötlet. Kezdjük egy RNN használatával, hogy elemezzük a "Tegnap este hamburgert ettem és néhányat" szavakat, és megjósoljuk a következő szót ("krumpli").
Először minden szó vektorokká alakul. Például a „tegnap” (0,1, 0,5, 1) lesz: ez az átalakítás elengedhetetlen adat-előkészítési lépés. Ezután minden vektort felváltva küldünk az RNN-re, az alábbiakban látható zöld négyzet formájában (amely a sejtjét, azaz egy neuront ábrázolja).
A "Tegnap este ettem egy hamburgert, és néhány" kifejezést vektorokká alakítják, majd az RNN-be táplálják (hitel: Michaël Nguyen)
Az RNN-ben küldött egyes szavak közé az előző szó \ (h_t \) nevű kimenete kerül bemenetként az új szóval. Ezt a kimenetet "rejtett állapotnak" hívják
Az aktuális szó vektorát, amelyet megjegyeztek (x_t \), és az előző szó kimenetét (amely szintén vektor), megjegyezzük, hogy \ (h_ \), végről-végre helyezzük, majd átadjuk a matematikai függvénynek. tanh ”Mielőtt az új kimeneté lesz, megjegyezzük \ (h_t \)
Az ideghálózatokban nagyon gyakori az "aktivációs funkciók" használata az idegsejtek kimenetén. Például a szemközti tanh olyan függvény, amely egy értéket (például 300) átalakít - 1 és 1 közötti új értékre (lásd görbe). Az ilyen funkció előnye, hogy megakadályozza az idegsejtek kimenetének túl nagy méretűvé válását, mivel ehhez több számítási időre és számítógépes memóriára lenne szükség ...
Tanulási és memóriaprobléma
Ami a perceptront illeti, az RNN a gradiens disszipációjának problémájától szenved. Az mit jelent ?
A „tanuláshoz” egy RNN a gradiens ereszkedés idegsejtjei közötti súly frissítése érdekében. Ez a következő képleten alapul:
\ (w: = w - \ alfa \ cdot F_w \)
- \ (w \) a hálózat súlya
- \ (\ alpha \) a hálózat tanulási sebessége
- \ (F_w \) a hálózat színátmenete a súlyhoz viszonyítva \ (w \)
Probléma: a súlyok jobbról balra frissülnek. Balra haladva a \ (\ alpha \ cdot F_w \) szorzat válik nagyon kicsi és az idegsejtek első rétegeinek súlya alig változik! Így ezek a rétegek semmit sem tanulnak ...
Ezért az RNN könnyen elfelejtheti a kissé régi adatokat (vagy szavakat, amelyek meglehetősen messze vannak a szöveg jelenlegi szavától) a tanulási szakaszban: rövid az emléke.
A jobb architektúra felé: az LSTM és a GRU
Ha egy RNN sejtje (neuronja) végső soron nagyon egyszerű (két vektort összefűzünk, majd tanh-t alkalmazunk rájuk), akkor ez először nem az LSTM és a GRU esetében van.
Az LSTM-eket és a GRU-kat módszerként hozták létre a rövid és hosszú távú memória hatékony kezelésére a kapurendszereiken keresztül. Ha sok változat létezik, az eredeti (itt bemutatott) változatokat még mindig nagyon széles körben használják a legjobb mélytanulási modellekben az automatikus természetes nyelv feldolgozásához, amely a beszédfelismeréshez/szintézishez, de a szöveggeneráláshoz vagy a piackutatáshoz is kapcsolódik ...