NALU

NALU

Az önvezető autókat vezeti, de gondot okoz neki az összeadás. Mire gondoltam? A válasz meglepő lehet, de a neurális hálóra. Erre a látszólag triviális problémára nyújt megoldást a DeepMind új architektúrája, a NALU.

A neurális hálók elképesztően bonyolult logikai kapcsolatokat képesek visszafejteni a számukra mutatott példák alapján, azonban nehezen általánosítanak, ami komoly fejtörést okoz a kutatók számára. Képzeljük el a szituációt: a matematika dolgozatra készülünk. Két lehetőségünk van: vagy bemagoljuk az órán kidolgozott feladatok megoldásmenetét, bízva abban, hogy a tanár nem talál ki új feladatot, vagy megértjük a feladat logikáját. A módszerek közötti különbség egészen addig nem szembetűnő, ameddig a dolgozatban olyan példák szerepelnek, amelyeket láttunk már ezelőtt. De mi van akkor, ha ez nem így van?

A neurális hálók hagyományos aktivációkkal nehezen általánosítanak, inkább az első módszerhez hasonlóan tanulnak. Ezt a legegyszerűbben úgy lehet tetten érni, hogyha az egyszerű y=x függvényt próbáljuk rekonstruálni a hálóval. Ennek első lépéseként előállítjuk a tanító példákat egy bizonyos tartományon.

A tanítási tartományban tökéletes eredménnyel képes ezt a függvényt reprezentálni a háló, azonban a tanítási tartományon kívül elbukik a helyes értékek megítélésében. Miért van ez?

A kép az extrapoláció hibáját szemlélteti egy hagyományos FC struktúrán, különböző aktivációk szerint. [1]

A nemlineáris aktivációk miatt. Ezek nélkül nem tudnánk a fennálló bonyolult kapcsolatokat modellezni, azonban korlátoz minket az egyszerű matematikai műveletek kiterjesztésében. Minél jobban nem lineáris az aktiváció, annál inkább nő a kiterjesztés hibája. Így egy RELU aktiváció kis hibával, míg egy Sigmoid aktiváció jelentősebb hibával extrapolál.

RELU aktiváció (balra) [2], Sigmoid aktiváció (jobbra) [3]

Erre a kardinális problémára nyújt megoldást a DeepMind napokban megjelent publikációja, melynek címe: Neural Arithmetic Logic Units.

NAC

NAC modul, változónevekkel ábrázolva. [1]

Az általuk bemutatott architektúra alapja a NAC egység, amely egy egyszerű modul. Feladata az összeadás, illetve a kivonás a bemenetek között (lineáris kombináció, skálázás nélkül). Ezt úgy éri el, hogy a súlyokat jelképező W mátrix kizárólag -1,0-1 értéket vehet föl. A súlyozást NEM KÖVETI aktiváció és eltolás, így az tetszőleges mélységig használható torzítás nélkül, amely lehetővé teszi az értékkészleten kívüli extrapolálást.

NAC modul egyenletei [1]

A súlyfüggvényt elő lehet állítani a fentebb leírt diszkrét értékek hozzárendelése által is, azonban ekkor a módszer nem lenne differenciálható. W előállítására ezért az ábrán található képlet szolgál, amely garantálja, hogy a súlyok a -1,0,1 értékek kis hibájú közelítései legyenek. További könnyedség így, hogy a W^, M^ paramétereket lehet a hagyományos módszerekkel inicializálni, optimalizálni.

Az igény azonban továbbra is fenn áll bonyolultabb függvények megvalósítására, mint például a szorzás, osztás, hatványozás. Mit lehet ilyenkor tenni? A log térben történő összeadás, kivonás az azonosságok ismeretében könnyedén kitalálható, hogy szorzásnak, illetve osztásnak felel meg. Ha tehát megtartjuk a NAC esetén kreált súlyfüggvényt, és a bemenetek logaritmusára alkalmazzuk őket, akkor azt egy exponenciális függvény segítségével szorzássá/osztássá alakíthatjuk.

A log térben történő összeadás kifejtése.

Az epszilon a log(0) numerikus problémái elkerülése érdekében adódik hozzá az argumentumhoz.

NALU

NALU modul, változónevekkel ábrázolva. [1]

Rendelkezésünkre áll tehát két NAC struktúra (lilával jelölve), amelyekkel elvégezhetjük az elemi matematikai műveleteket. Pontosan ezek alkotják a NALU architektúrát, kiegészítve egy Sigmoid kapuval. Ez a Sigmoid kapu (narancssárgával jelölve) lehetővé teszi a model számára, hogy eldöntse, hogy éppen melyik műveletet szeretné végrehajtani a bemeneteken.Ez a NALU architektúra kiváló az elemi műveletek előállításában, illetve extrapolálásában a tanítás során látott tartományon kívül is, így megoldva a generalizálási problémát. A NALU modul beilleszthető bármilyen meglévő architektúrába egyszerűen.

NALU kapuzott kimenete. [1]

A publikációban számos problémára való alkalmazás eredményei láthatóak (arra bíztatok mindenkit, hogy olvassa végig a tanulmányt), és nem meglepő módon az eddig elért legjobb eredményeket sikerült felülmúlnia. Ilyen probléma többek között az MNIST számjegyek sorozatának számlálása (melyik számjegyből hány érkezett), illetve a sorban érkező számjegyek összeadása. A hálók minden esetben 10 hosszúságú sorozaton lettek tanítva.

A két problémára való tanítás eredménye, a különböző aktivációk, és tartományok szerint. [1]

Az eredmények jól szemléltetik, hogy mind a tanítási tartományon belül, mind az azon kívül nagyságrendekkel alacsonyabb hibával képes teljesíteni az új architektúra. Jól teljesít még a modell betűvel kiírt számok számjegyekké alakításában, továbbá RL ágensek numerikus problémáinak a megoldásában is.

Természetesen nem minden feladatra megfelelő a NALU, azonban bemutat egy újfajta modellezési stratégiát, amely segítséget nyújthat numerikus függvényeket hozzáadni egy meglévő modellhez.

Biztosak vagyunk abban, hogy az Ön vállalkozásában is vannak mesterséges intelligenciával automatizálható munkafolyamatok: amennyiben szeretné élvezni a mesterséges intelligencia használatával járó előnyöket, úgy jelentkezzen ingyenes, személyes konzultációnkra elérhetőségeink valamelyikén.

HIVATKOZÁSOK

[1] Neural Arithmetic Logic Units. arXiv: 1808.00508v1 [cs.NE]. arxiv.org/abs/1807.09882

[2] https://mlnotebook.github.io/post/transfer-functions/

[3] https://medium.com/@kanchansarkar/relu-not-a-differentiable-function-why-used-in-gradient-based-optimization-7fef3a4cecec

Close Menu