A mindennapi élet hemzseg az olyan problémáktól, amelyekben a feldolgozandó információ nem állandó minden időpillanatra nézve, hanem az idővel változik. Ilyen a kommunikációnk, amelyben minden időpillanatban más hanghullámok alkotják a mondandónkat, vagy éppen az esti film megnézése is, ahol a képek sorozata alkotja az izgalmas történéseket. Ezen információk feldolgozása fontos a mesterséges intelligencia területén, azonban hagyományos háló architektúrával a felhasználhatóságuk korlátozott. Bejegyzésünkben a különböző problémákat, és az azokra hozott megoldásokat mutatjuk be. Célunk, hogy a SEQ2SEQ architektúrákat, valamint az Attention mechanizmust részletezzük, és a világhálón található, mindenki által máshogyan hivatkozott rendszereket egésszé formáljuk.
9-12 perc, előtanulmány feltételezett: RNN struktúra ismerete, LSTM réteg ismerete
Olyan problémák esetén, ahol a bemeneti/kimeneti információ bizonyos adatok sorozata (írott szöveg, beszéd, videó, nyelvek közötti fordítás), ott a hagyományos Fully Connected (FC) neurális háló helyett Recurrent (RNN) neurális háló használatos. Ennek okai, hogy a teljes információ sorozat nem mindig áll rendelkezésre teljes egészébe (amely meggátolja a feldolgozást), továbbá hogy a hagyományos FC nem általánosít tulajdonságokra nézve. A „kék” szó előfordulása egy mondatban a legtöbb esetben színjellemző, azonban egy FC háló esetén ezt minden pozícióra nézve újra kell tanítani, ezzel csökkentve a modell hatékonyságát, és növelve az ugyanazon pontosság eléréséhez szükséges számítási kapacitás igényét.
Egy hagyományos RNN struktúra jól használható many to one/one to many problémák esetén (például egy szöveg klasszifikálása hangulat szerint), illetve olyan many to many problémák esetén, ahol a bemeneti adatsorozat egyező hosszúságú a kimeneti adatsorozattal. Az ábrán rózsaszín jelöli a bemeneti adatsorozatot, a világoskék pedig a kimeneti adatsorozatot.
SEQ2SEQ
Many to many problémák esetén (különböző hosszúságú be és kimenet) SEQ2SEQ struktúrát kell alkalmaznunk: A bemeneti adatsorozatot egy enkóder neurális háló segítségével tömörítjük egy vektorrá, majd ezt átadva egy dekóder neurális hálónak előállítjuk a kívánt kimeneti adatsorozatot. Tipikusan ilyen alkalmazás a nyelvek közötti fordítás: az enkóder felelős az angol mondat értelmezéséért, dekóder pedig a német mondat előállításáért. A SEQ2SEQ architektúrák az enkóder által az utolsó időpillanatban előállított státusz vektort használják az információk átadására. Ezt a vektort kontextus vektornak nevezik.
Két módon lehet alapvetően átadni az enkóder kontextus vektorát a dekódernek. Ezek rövid ismeretetése:
- A kontextus vektor a dekóder neurális háló bemenetére kerül minden időpillanatban, statikusan. Ebben az esetben a dekóder neurális háló kezdeti belső állapotváltozóit véletlenszerűen inicializáljuk. Ez a módszer kevésbé elterjedt.
- A kontextus vektort a dekóder háló kezdeti belső állapotává tesszük (init), és a predikció esetén a bemenetekre a dekóder előző időpillanatban becsült kimenetét tesszük (az első időpillanat kivételével, ahová speciális start karaktert helyezünk). Az ilyen hálót úgy tanítjuk, hogy a cél sorozat egy időpillanattal eltolt változatát adjuk a dekóder háló bemenetére (start objektummal kezdve). Ezt a szakirodalom teacher forcing-nak nevezi. A teacher forcing tanítás problémája lehet a prediktálás során megjelenő bizonytalan kimenetek megjelenése a bemeneten. Erre megoldás a scheduled sampling, ami tanítás közben véletlenszerűen váltogatja a dekóder bemenetén a valós adatot (teacher forcing), és az előző pillanatban saját maga által prediktált adatot.
A hosszú mondatok feldolgozása SEQ2SEQ architektúrával kettős problémába ütközik. Az egyik, a SEQ2SEQ struktúrát felépítő RNN rétegből adódik: a gradiensek és ezzel együtt az információk eltűnése. Ezt meg lehet oldani a SEQ2SEQ struktúra LSTM rétegekkel való felépítésével (RNN helyett, ahogyan a 3. ábra mutatja). Ekkor a rövid és hosszú távú memória segít a fontos információkat eljuttatni a mondat elejéről a mondat végén található kontextus vektorba. A második problémát a SEQ2SEQ architektúrája, tehát a fix hosszúságú (a legfelső LSTM réteg egységeinek/unit megfelelő dimenziójú) kontextus vektor okozza. Az enkódernek egy unit darabszámú vektor áll rendelkezésre átadni az egész mondatra vonatkozó információt. Ez hosszú mondatok esetén nehézkes, továbbá belátható, hogy a hagyományos emberi fordítás sem így működik. A korlátot az okozza, hogy a nagyon hasonló szavak esetén a fix hosszúságú interfész miatt nehéz különbséget kódolni az átadandó információba, és így árnyalatnyi információk vesznek el, amelyek a minőségi fordítás alapvető feltételei. Erre a problémára fejlesztették ki az Attention mechanizmust.
ATTENTION
A két népszerű Attention mechanizmus a Bahdanau attention [4], illetve a Loung attention [5]. Újításuk, hogy a modellek nem korlátozzák az enkóder/dekóder interfészt az enkóder kontextus vektorára. A fordítás közben lehetőséget nyújtanak arra, hogy az összes időpillanatban keletkező enkóder kimenet értékét számításba lehessen venni, ne csak az utolsót. Ezt egy úgynevezett Attention kontextus vektor segítségével teszik (nem egyezik meg a hagyományos SEQ2SEQ kontextus vektorral, hiszen az csak az utolsó enkóder státusz). Ez a vektor a bemeneti információk (szavak, betűk, képek, hangok) enkódolásaiból számítódik. Az emberek is pont ilyen módon döntenek, illetve értenek. Olvasás közben a mondat egy részét vizsgáljuk, a látási folyamat során csupán egy adott objektumra fókuszálunk. Ezt a vektort többféleképpen létrehozhatjuk.
Az Attention kontextus vektor számítása során a bemeneti adatok enkódolását vesszük figyelembe. Aszerint, hogy az összeset, vagy csak annak egy meghatározott részét, úgy beszélhetünk globális, illetve lokális Attention-ről. Aszerint, hogy ezekből a kiválasztott enkódolásokból hogyan képezzük az Attention kontextus vektort, úgy beszélhetünk Soft, illetve Hard Attention-ről.
SOFT ATTENTION:
A számítás módja a Soft Attention esetén a különböző időpillanathoz tartozó enkódolások súlyozása, majd pedig összegzése. A súlyozás különféle technikák szerint történhet (például hagyományos FC hálóval számítható, Softmax aktivációval, az előző státusz, illetve az adott bemeneti enkódolás alapján). Ekkor a súlyok összege 1 a Softmax aktiváció miatt, tehát valószínűségi eloszlást számítunk az egyes bemeneti enkódolásokhoz tartozóan. A súlyokat ezután összeszorozzuk az összetartozó enkódolásokkal, az így kapott súlyozott enkódolásokat összeadjuk, amelyet Attention kontextus vektornak nevezünk.
HARD ATTENTION:
Hard Attention esetén a valószínűségi eloszlást nem egy súlyozott összeg kialakítására, hanem egy mintavételi gyakoriságot szabályozó tényezőként használjuk fel. Ekkor az Attention kontextus vektor a Monte Carlo módszer szerint mintavételezett enkódolások közül kerül ki. Ez a módszer nem minden esetben differenciálható (Reinforcment Learningel számítható), így a Soft Attention megközelítés elterjedtebb az Attention modellek esetén.
A kontextus vektort ezután különféle módon adhatjuk hozzá egy LSTM hálóhoz, amelyek közül a következőekben példákat láthatunk. A megnevezéseket egységesítettem a referenciaképzés céljából.
EGYSZERŰSÍTETT ATTENTION, KIZÁRÓLAG KONTEXTUS VEKTOR A BEMENETEN
GLOBÁLIS, SOFT, FC SÚLYOZÁSÚ ATTENTION
Az Attention kontextus vektor a dekóder bemenetére kerül, kizárólagos bemenetként. Ez a modell hasonlít az I. SEQ2SEQ struktúrára, annyi különbséggel, hogy itt a kontextusvektor nem statikus, hanem a minden időpillanatban újrakalkulált Attention segítségével. A súlyozás kialakításához a dekóder előző státuszát (hidden state) és az összes bemeneti enkóder értéket használjuk fel egy FC háló segítségével.
EGYSZERŰSÍTETT ATTENTION, NYELVI MODELL-EL KOMBINÁLVA
GLOBÁLIS, SOFT, TETSZŐLEGES SÚLYOZÁSÚ ATTENTION
Ebben a modellben az Attention kontextus vektor mellett, az előző időpillanatban prediktált kimenetet is a dekóder LSTM háló bemenetére adjuk (az ábrán látható „comment” szó). Az f függvény a súlyok képzésére szolgál.
LUONG FÉLE ATTENTION
SOFT, GLOBÁLIS, DOT SÚLYOZÁSÚ ATTENTION
E modell esetén a kimenetet nem a megszokott LSTM dekóder kimenete adja, hanem egy ún. Attention vektorból számítjuk egy FC háló segítségével. Az Attention vektor az Attention kontextus vektor, illetve a dekóder kimenetének konkatenációja.
Az Attention kontextus vektor előállításához szükséges súlyozás kialakításánál az adott időpillanatbeli dekóder státuszt használjuk fel (figyeljük meg a különbséget, az előző modellekben az előző pillanatbeli státuszt használtuk fel), továbbá az összes bemeneti enkóder értéket. A dekóder LSTM bemenetét itt az előző időpillanatbeli Attention kontextus vektor, illetve az előző időpillanatbeli, prediktált szó képzi. Ebben a modellben az Attention mechanizmus a bemenetre és a kimenete is hat.
BAHDANAU FÉLE ATTENTION
SOFT, GLOBÁLIS, FC SÚLYOZÁSÚ ATTENTION
A legelőször ismerté vált modell. A kontextusvektor számítása egy FC háló segítségével történik, az előző időpillanatbeli dekóder státusz, illetve a bemeneti enkódolások segítségével. A különbség az egyszerűsített Attention mechanizmusokhoz képest, hogy itt az Attention kontextus vektor minden időpillanatban az előző dekóder státusszal konkatenálva adja a kezdeti státuszát az LSTM dekóder rétegnek. A dekóder minden időpillanatban (a nyelvi modellekhez hasonlóan) az előző időpillanatbeli dekóder által becsült kimenetet kapja.
Az egyes modellek összehasonlítására a következő bejegyzésben félregépelést javító neurális hálókat építünk, és azokon mutatjuk be az egyes modellek által, az adott problémán elért pontosságot.
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.
FORRÁSOK
[1] https://docs.microsoft.com/hu-hu/azure/machine-learning/desktop-workbench/scenario-tdsp-biomedical-recognition
[2] https://towardsdatascience.com/recurrent-neural-networks-and-lstm-4b601dd822a5
[3] https://www.semanticscholar.org/paper/Sequence-to-Sequence-Prediction-of-Vehicle-via-LSTM-Park-Kim/9bebd98cd01752df4aae7e4969063267ad542fc4
[4] Thang Luong et al. Effective approaches to attention-based neural machine translation. 2015
[5] Dzmitry Bahdanau et al. Neural Machine Translation by Jointly Learning to Align and Translate, 2014
[6] https://www.cnblogs.com/hezhiyao/p/8747019.html
[7] https://guillaumegenthial.github.io/sequence-to-sequence.html
[8] https://i.stack.imgur.com/I0Wyv.png
[9] http://cnyah.com/2017/08/01/attention-variants/