A neurális hálózatok a mesterséges intelligencia és a gépi tanulás alkalmazásának egyik legnépszerűbb eszközei manapság. Az elmúlt 10 évben több olyan speciális struktúra szerinti csoportosítást fedeztek fel, mely csoportok egy típusú probléma megoldásában a leghatékonyabbak.

Az előző cikkben bemutattam a mesterséges neurális hálózatok mögött rejlő intuíciót és biológiai rendszerből vont párhuzamokat. Már tudjuk milyen elemekből épül fel és milyen kapcsolatok találhatóak az elemek között, illetve melyek a legfőbb hasznosítási területek.

Ebben a részben szeretném bemutatni, az 5 legtöbbet használt hálózati elrendezést, illetve hogy milyen probléma megoldása során vethetők be a mindennapi életben.

Perceptron

Nem szabad elfelejteni, hogy a neurális hálózatok számítási alapköve a perceptron, a neuron matematikai modellje. A bementi értékek súlyozásra kerülnek, majd összeadjuk őket és legvégül egy aktivációs függvény segítségével határozzunk meg, hogyan alakul a kimenetünk.

A neuron matematikai modellje.
A neuron matematikai modellje.

Ezt a rendszert előrecsatolt neurális hálózatnak is nevezik (feed forward neural network), mivel az információ balról jobbra halad a neuronokon keresztül. Ismert bementekre, adott kimenetek alapján képesek vagyunk a bementi értékek súlyozásának változtatásával a rendszer hibáját minimalizálni (back-propagation). Függetlenül attól, hány réteg neuron található a rendszerünkben, a neurális hálózatok mindig a ki és bemenetek közötti kapcsolatot szimulálják.

Egyszerű és mély tanuló neurális hálózatok topológiai összehasonlítása.

Egyszerű és mély tanuló neurális hálózatok topológiai összehasonlítása. Forrás: Medium.

Az előrecsatolt neurális hálózatok gyakorlati használata kevés esetre szűkül, főleg csoportosítási és regressziós előrejelzés feladatok megoldására használhatjuk. Amikor az előrejelzéstől eltérő feladatokat szeretnénk megoldani, más felépítésű hálózatok alkalmazása válik szükségessé.

Konvolúciós neurális hálózatok

Ezek a hálózatok nagymértékben különböznek a többitől, mivel elsősorban képfeldolgozási funkciókkal rendelkeznek. Emellett képesek más jellegű bementet (videó, hang stb.) is értelmezni. A tipikus felhasználás során egy kép adatait (pixel szinten) küldjük keresztül a hálózaton és kép által tárolt információ alapján történő osztályozás a végső célunk.

A konvolúciós neurális hálózat (convolutional neural network – CNN) a bemenetként megadott adatot nem egészében értelmezni, hanem részleteit szkenneli le. Abban az esetben, ha egy 1 000 x 1 000 pixel felbontású képet adunk meg bementként, nem a leghatékonyabb egy 1 000 000 (1 000 x 1 000) neuronból álló réteget használni a pixel szintű értelmezés során. Helyette inkább egy 100 x 100 képpont méretű szűrőt használunk, amelyen keresztül részleteiben áramlik az adat a hálózaton.

A konvolúciós neurális hálózatok által használt szűrő egység működése.
A konvolúciós neurális hálózatok által használt szűrő egység működése. Forrás.

A CNN hálózatokat két fő részre lehet osztani: jellemzők felderítése és osztályozás. A jellemzők felderítése során a kép egységein átlagolásokat (konvolúció) és összevonást, tömörítést végzünk, mely lépések segítenek speciális jellemzők felderítésében.

Például, ha egy macskát ábrázoló képet adunk meg a rendszer bemenetének, a jellemzők felderítése során a képpontok tömörítése megadja a képet jellemző formákat (fül, száj, lábak).

A kiderített jellemzők alapján a megfelelően paraméterezett és tanított osztályozó rész képes a jellemzők összességét vizsgálni és ezáltal a képen szereplő teljes képet értelmezni és osztályozni.

A konvolúciós neurális hálózatok tanításához előre feliratozott adatfáljok szükségesek. A rendszert jellemző hiperparaméterek (azon paraméterek, amelyek a struktúrát adják meg) kiválasztása jelenti a legnehezebb feladatot: neurális hálózat felépítése, azaz hány réteget használunk, illetve melyik rétegbe hány neuron kerüljön, egyes rétegekben használt aktivációs függvény, illetve a használt szűrő mérete és felépítése.

A konvolúciós neurális hálózat működésének bemutatása.
A konvolúciós neurális hálózat működésének bemutatása.

Egyik legelső gyakorlati alkalmazásuk a MNIST adatbázisban található, kézzel írt számjegyeket tartalmazó rendszer értelmezése, valamint a képek alapján a számjegyek felismerése volt. Az alábbi linken bárki ki tudja próbálni, hogyan ismeri fel a kézzel írt számjegyeket egy konvolúciós neurális hálózat, valamint hogyan működik a képpont szintű felderítés és az osztályozás.

Visszacsatolt neurális hálózatok

Az előrecsatolt neurális hálózatok nem rendelkeznek memóriával, azaz nem képesek a múltban történt eseményekre emlékezni. Ettől természetesen kivételt képez a tanítási folyamat, melynek során a neuronok súlyértékének beállítása történik.

A visszacsatolt neurális hálózatok (recurrent neural network – RNN) esetében az információ egy hurkon keresztül halad át, így amikor a neuron egy kimenetet ad meg, képes a korábbi bemenetekre adott választ figyelembe venni.

Képzeljük el, hogy egy előrecsatolt hálózat bemeneteként a “neuron” szót adjuk meg és rendszer karakterről-karakterre dolgozza fel az információt. Amikor az “r” bemenetre adott kimenetet számolja ki, már nem képes a korábban feldolgozott betűket figyelembe venni. Így, ha egy összetett objektum jelentését kívánjuk meghatározni, mindenképpen szükségünk van a részegységek és a köztük lévő kapcsolat figyelembevételére.

Visszacsatolt neurális hálózat értelmezése. x(t) bementi, h(t) kimeneti érték.
Visszacsatolt neurális hálózat értelmezése. x(t) bementi, h(t) kimeneti érték. Forrás.

A visszacsatolt neurális hálózat neuronja két bemenettel rendelkeznek: adott “t” időpillanatban a rendszeren keresztül haladó és a “t-1″, “t-2″ stb. korábbi értékek.

Gradiens probléma

Neurális hálózatok esetén a gradiens (bemenet szerinti parciális derivált) mutatja meg, hogy a bemenet minimális megváltozása esetén, milyen mértékben változik meg a kimenet. A gradiensre, mint a bemenet és kimenet közötti kapcsolatot jellemző függvény meredekségre is lehet gondolni.

Ha egy rendszer (hálózat felépítés és adatok) “nagy” gradienssel rendelkezik, a modell gyorsan tud a megadott adatok alapján tanulni, mivel kis eltérésű bemenetek hatására is megismeri a kimenetek változását. Ha a gradiens értéke kicsi vagy nullára csökken, a tanulási folyamat megáll.

A RNN hálózatok alkalmazása során két féle probléma merülhet fel: a túlfutó (exploding gradient) és az eltűnő gradiens (vanishing gradient) esete. Előbbi során az algoritmus túlzottan nagy jelentőséget tulajdonít a neurális hálózatban található súlyoknak, így nem képes megfelelő átmetet képezni a bemenet változtatásával. Ezáltal lehetetlenné teszi a hálózatnak megadott feladat megoldását. Eltűnő gradiens esetében, a gradiens értékünk viszont túlzottan alacsony, így a tanítási folyamat rendkívül sok időt és erőforrást vesz igénybe.

LSTM hálózatok

Az eltűnő gradiens probléma megoldására találták ki a hosszú-rövidtávú memóriával rendelkező hálózatokat (Long Short-Term Memory – LSTM). Az LSTM rendszer része a memóriafunkció, ami hasonlóan a számítógépek memóriájához, képes olvasni és írni a saját memóriájában. Ez lehetővé teszi, hogy a visszacsatolt neurális hálózat hosszú időn keresztül emlékezzen a korábban megadott bemenetekre.

A rendszer memóriája tulajdonképpen egy kapus cellaként jelenik meg, a kapu dönti el, hogy tárolja vagy törölje a cellában található adatokat, az információhoz rendelt fontosság alapján. Egy LSMT egységben jellemzően 3 kapu található. A bemeneti kapu határozza meg, hogy éppen érkező információt belépteti e a folyamatba, a törlő kapu törli, ha nem tartja a hálózat releváns adatnak, illetve a kimeneti kapu a kimenetre hatással lévő matematikai műveletet hajt végre.

Visszacsatolt neurális hálózat alkalmazási lehetősége: képek automata feliratozása. Forrás.

A visszacsatolt neurális hálózatokat többféle probléma megoldására lehet használni: audiovizuális anyagok szöveg szerinti értelmezése, képek automatikus feliratozása, gépi fordítás (magyar szavak sorozatából angol szavak szorzata), dokumentum osztályozás.

Autoencoder (AE)

Az autoencoder-ek a neurális hálózatok egy speciális fajtái. A bemeneti adatot az enkódolást végző terület egy tömörített reprezentációban tárolja el. Ezután a dekódoló rész a reprezentáció alapján generálja a kimetet. Ha az autoencoder-ek egyetlen célja a bemenet lemásolása lenne a kimeneti oldalra, kérdezhetnénk, hogy mi hasznuk van valójában?

Autoencoder egyszerűsített működési mechanizmusa, a bemenet és a kimenetek ábrázolása mellett.
Autoencoder egyszerűsített működési mechanizmusa, a bemenet és a kimenetek ábrázolása mellett. Forrás.

A valóságban viszont az autoencoder bemenet kimenetté történő másolása során végzett tanítás alatt a reprezentáció számunkra hasznos tulajdonságokat vesz fel. Azáltal, hogy a tömörített reprezentáció kisebb méretre korlátozzuk a megadott bemenethez képest, arra kényszerítjük az enkódolást végző területet, hogy a bemeneti adat legfontosabb jellemzőit tanulja meg.

A megtanult, fontos jellemzők alapján képes ezután a dekódoló rész a bementhez hasonló kimenetet generálni. Napjainkban az autoencoder-eket legtöbb esetben az adatokban található zaj és a dimenziók csökkentésére használják. Megfelelő strukturális korlátok megadásával megtanulnak olyan jellemzőket is, melyeket más módszerrel (pl. PCA – principal component analysis, főkomponens analízis) nem tudunk kideríteni.

Az autoencoder-ek maguktól tanulnak az adatokból, azaz nincs szükség új vagy speciális feldolgozási struktúra megalkotásához, hogy egy típusú bementi adatból, hatékony leképzéseket hajtsanak végre.

Autoencoder gyakorlati hasznosítása: szürkeárnyalatos képek színessé tétele. Forrás

A gyakorlatban használni lehet őket kép hiányzó részleteinek megfejtéséhez, szürkeárnyalatos képek színessé változtatásához vagy életlen képek élessé tételében.

GAN hálózatok

A GAN hálózatok talán az egyik legérdekesebb neurális hálózatok közé sorolt rendszer. Gyakorlatban megcáfolta azt a kijelentést, mi szerint egy számítógép vagy mesterséges intelligencia nem lehet kreatív.

A GAN-ok (Generative Adversarial Network) általában két különböző részegységből állnak: egy előrecsatolt és egy konvolúciós neurális hálózat alkotja őket. Az előrecsatolt hálózat feladata a tartalom generálása (generatív hálózat), míg a konvolúciós felelős a tartalom felismeréséért (diszkriminatív hálózat). A felismerő terület felelős azért, hogy megállapítsa, egy tartalom mesterségesen lett létrehozva vagy valódi e.

GAN hálózatok működésének egyszerűsített ábrája.
GAN hálózatok működésének egyszerűsített ábrája. Forrás

A generátor feladata – egy véletlen zaj mellett – a valósághoz minél jobban hasonlító adat generálása, melyet a diszkriminátor vizsgál meg és dönti el, hogy valódi vagy sem. A generatív hálózat gyakorlatilag a hamisítók egy csoportja, akik hamis pénzt nyomtatnak, a diszkriminatív hálózat pedig a rendőrség, akik próbálják felismerni a hamis pénzeket.

Mivel a két hálózatot váltott optimalizációval tanítják be, így a folyamat végén a generatív rendszer által generált adatok nem különböznek a valóságtól.

A gyakorlati alkalmazás lehetőségi végtelenek. A GAN hálózatok képesek mindent lemásolni, vagy egy változási modellt egyedi esetekre alkalmazni. Tegyük fel, hogy van egy adatbázisunk, ahol ugyanazokról az emberekről vannak fényképeink, melyek az életük különbőz időpontjaiban készültek (10 évesen, 20 évesen stb.).

Ha ezt az adathalmazt felhasználva megtanítunk egy GAN hálózatot, és elegendően sok adattal rendelkezünk, képesek leszünk bámely személy, bármely életszakaszában készített fényképe alapján megmondani, hogyan nézett ki 10 évvel ezelőtt és hogyan fog kinézni 20 év múlva.

Az öregedés modellezése GAN hálózatok segítségével (age-cGAN).
Az öregedés modellezése GAN hálózatok segítségével (age-cGAN). Forrás, Publikáció

Például divatszakma is rengeteget profitálhat a GAN hálózatokból: nem lesz szükséges többé egy modellnek a ruhakollekció összes darabját felpróbálni és fényképet készíteni, hanem a modell, a póz és a ruhadarabok információi alapján, egy tanított GAN hálózat képes az össze kombináció automatikus generálására.

Megadott póz alapján történő kép generálás. Forrás

Összefoglalás

Azt gondolom, a neurális hálózat a valaha feltalált egyik legszebb programozási technika, szemléletmód. A hagyományos programozási megközelítéssel ellentétben, nem az ember határozza meg a feladat megoldásához szükséges apró, pontos lépéseket, hanem a rendszer, a biztosított megfigyelési adatokból tanul és keres megoldást a problémára.

Napjainkban a mély neurális hálózatok kiemelkedő teljesítményt nyújtanak a gépi látás, beszédfelismerés és nyelvfeldolgozás témakörökben, de mint a cikkből is látszik, számos olyan további terület van, ahol adatok alapján lehet az üzleti döntéshozatalt vagy a problémamegoldást támogatni.

Felhasznált források

https://medium.com/cracking-the-data-science-interview/a-gentle-introduction-to-neural-networks-for-machine-learning-d5f3f8987786
https://medium.freecodecamp.org/an-intuitive-guide-to-convolutional-neural-networks-260c2de0a050
https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2
https://ertedmar.hu/cikkek/konvolucio
https://towardsdatascience.com/recurrent-neural-networks-and-lstm-4b601dd822a5
http://colah.github.io/posts/2015-08-Understanding-LSTMs/