A biológia és az informatika egyik legnagyobb közös területe az idegsejthálózatok kutatása és mesterséges idegsejthálózatok készítése. A mesterséges intelligencia korunk egyik legfontosabb vívmánya, ezért cégünk is komoly hangsúlyt fektet a kutatására.
1. A neurális hálók típusai
Az általunk fejlesztett rendszerben a következő neurális hálózattípusokat különböztetjük meg:
- Neurális háló (Network)
- Általános neurális háló (gráf alapú)
- Réteges neurális háló (tenzor alapú)
- Teljesen kapcsolt neurális háló
- Konvolúciós neurális háló
A gráf alapú általános (visszacsatolt) és a tenzor alapú réteges (egyirányú) neurális hálók felépítésének összehasonlítása:
2. A teljesen kapcsolt neurális háló
Teljesen kapcsolt esetben a háló szomszédos rétegeiben mindegyik neuron össze van kapcsolva a szomszédos réteg minden neuronjával. Ez jó, mert egészen bonyolult feladatokra is képes, viszont nagy az erőforrásigénye.
2.1. A teljesen kapcsolt neurális háló elemei
A háló k db. n dimenziós rétegből (layer) és k-1 db. 2n dimenziós súlytenzorból áll, amely a szomszédos rétegek közötti súlyokat tárolják. A rétegek neuronjainak állapotát n dimenziós tenzorok tárolják:
- L1, ..., Lk: a rétegek neuronjainak állapotát tároló, d1(i), d1(i), .... , dn(i) méretű, n dimenziós tenzorok (i = 1, ..., k)
- W1, ..., Wk-1: a rétegek közötti súlyokat tároló d1(i), d1(i), .... , dn(i), dn+1(i), dn+2(i), .... , d2n(i) méretű, 2n dimenziós tezorok (i = 1, ..., k-1)
A zárójelbe tett szám a réteg sorszámát jelenti.
2.2. A teljesen kapcsolt neurális háló működése
2.2.1. Előreterjesztés
Az előreterjesztés a normál működés, amikor a bemenet alapján a háló kimenetet képez.
Jelmagyarázat:
- Li: i-dik réteg állapot tenzora
- ai: i-dik réteg aktivációs függvénye
- Wi: i-dik réteg súlytenzora
- Bi: i-dik réteg erősítési tényező tenzora
- ⊗: tenzor szorzás
Példa az egy dimenziós esetre, ahol a rétegek állapottenzorai 2 hosszúságú vektorok, a súlytényezők pedig 2x2-es mátrixként vannak ábrázolva:
Az ábra az (i) és az (i+1) réteg közötti kapcsolatot mutatja, hogy hogyan kapjuk meg az egyik réteg értékeiből a másik réteg értékeit.
2.2.2. Hibavisszaterjesztés
A hibavisszaterjesztés folyamata, az elvárt kimenet megtanítása a hálóval.
Általános egyenletrendszer:
Egyenletrendszer a gyakorlatban használt jelöléssel:
Jelmagyarázat:
- L: a hálózat rétegszáma
- W(i): az i sorszámú rétegköz súlytenzora
- W*(i): az i sorszámú rétegköz új súlytenzora a hibavisszaterjesztés után
- B(i): az i sorszámú rétegköz erősítési tényező tenzora
- B*(i): az i sorszámú rétegköz új erősítési tényező tenzora a hibavisszaterjesztés után
- X(i): az i. réteg állapottenzora
- a'(): aktivációs függvény deriváltja
- E: az utolsó réteg hibatenzora (elvárt kimenet - kimenet különbsége)
- r: tanulási intenzitás (skalár, ~ 0.001 - 1.0 közötti érték)
- ⚬: Hadamard-szorzás (azonos méretű tenzorok elemenkénti szorzata)
- ⊗d: tenzor szorzás, amely d dimenziót alakít szorzatösszeggé
- dim(i): az i. réteg dimenziószáma
- *: skalárral történő elemenkénti szorzás
Példa:
A következőkben egy 3 rétegű hálózat példáján keresztül mutatjuk be a hibavisszaterjesztést, amelyben az első (bemeneti) réteg 3 dimenziós (axbxc), a második (rejtett) és a harmadik (kimeneti) réteg pedig 2 dimenziós (dxe illetve fxg).
0. réteg | 1. réteg | 2. réteg | |||||||||||
0. állapot | 1. súly | 1. szorzat | 1. állapot | 2. súly | 2. szorzat | 2. állapot | Hiba | ||||||
Hálózat: | X(0) | - | W(1) | - | Z(1) | X(1) | - | W(2) | - | Z(2) | X(2) | - | E |
Tenzor mérete: | axbxc | dxexaxbxc | dxe | dxe | fxgxdxe | fxg | fxg | fxg | |||||
Tenzor dimenziószáma: | 3 | 5 | 2 | 2 | 4 | 2 | 2 | 2 |
A hibavisszaterjesztés folyamata (a képletek alatt feltüntettük az egyes tagok tenzor méreteit):
1. A 2. réteg deltája (i = L = 2):
δ(2) | = | E |
⚬ |
a'(X(2)) |
fxg | fxg | fxg |
2. A 2. réteg súlyváltozása:
ΔW(2) | = | δ(2) | ⊗0 | X(1) |
fxgxdxe | fxg |
dxe |
3. A 2. réteg új súlytenzora:
W*(2) | = | W(2) | + | ΔW(2) * r |
fxgxdxe | fxgxdxe | fxgxdxe |
4. A 2. réteg új erősítési tényezői:
B*(2) | = | B(2) | + | δ(2) * r |
fxg | fxg | fxg |
5. A 1. réteg deltája:
δ(1) | = | ( | δ(2) | ⊗2 | W*(2) |
) | ⚬ | a'(X(1)) |
dxe | fxg | fxgxdxe | dxe |
6. A 1. réteg súlyváltozása:
ΔW(1) | = | δ(1) | ⊗0 | X(0) |
dxexaxbxc | dxe | axbxc |
7. A 1. réteg új súlytenzora:
W*(1) | = | W(1) | + | ΔW(1) * r |
dxexaxbxc | dxexaxbxc | dxexaxbxc |
8. A 1. réteg új erősítési tényezői:
B*(1) | = | B(1) | + | δ(1) * r |
dxe | dxe | dxe |
3. A konvolúciós neurális háló
A konvolúciós hálóban a rétegek neuronjai a szomszédos rétegbeli párjuk egy kis környezetével van csak összekötve. Ez különösen képfeldolgozási feladatokra alkalmas, mert pont úgy működik mint a kép szűrők. Bonyolultabb feladatokra nem annyira alkalmas, de kicsi az erőforrásigénye.
3.1. A konvolúciós neurális háló elemei
A háló k db. n dimenziós rétegből (layer) és k-1 db. n dimenziós konvolúciós tenzorból áll, amelyek a szomszédos rétegek közötti kapcsolatot jelentik. A rétegek neuronjainak állapotát n dimenziós tenzorok tárolják:
- L1, ..., Lk: a rétegekben található neuronok állapotát tároló, d1(i), d1(i), .... , dn(i) méretű, n dimenziós tenzorok, ahol i = 1, ..., k.
- K1, ..., Kk-1: a rétegek közötti kapcsolatot jelentő konvolúciós (kernel) tezorok, amelyek n dimenziósak és d1(i), d1(i), .... , dn(i) méretűek, ahol i = 1, ..., k-1.
A zárójelbe tett szám a réteg sorszámát jelenti.
3.2. A konvolúciós háló működése
3.2.1. Előreterjesztés
Normál működés, amikor a bemenet alapján a háló kimenetet képez.
Jelmagyarázat:
- Li: i-dik réteg állapot tenzora
- ai: i-dik réteg aktivációs függvénye
- Ki: i-dik réteg kernel tenzora
- Bi: i-dik réteg erősítési tényező tenzora
- ⊙: tenzor konvolúció
Példa az egy dimenziós esetre, ahol a rétegek állapottenzorai és a kernelek 3 hosszúságú vektorok:
Az ábra az 1. és 2. réteg közötti kapcsolatot mutatja, hogy hogyan kapjuk meg az első réteg értékeiből a második réteg értékeit. A zárójelbe tett szám a réteg sorszámát jelenti.
3.2.2. Hibavisszaterjesztés
A hibavisszaterjesztés folyamata, az elvárt kimenet megtanítása a hálóval.
Jelmagyarázat:
- L: a hálózat rétegszáma
- K(i): az i sorszámú rétegköz konvolúciós kernele
- K*R(i): az i sorszámú rétegköz új, hibavisszaterjesztés utáni konvolúciós kernele 180 fokban elforgatva
- b(i): az i sorszámú rétegköz erősítési tényezője
- b*(i): az i sorszámú rétegköz új erősítési tényezője a hibavisszaterjesztés után
- X(i): az i. réteg állapottenzora
- a'(): aktivációs függvény deriváltja
- E: az utolsó réteg hibatenzora (elvárt kimenet - kimenet különbsége)
- r: tanulási intenzitás (skalár, ~ 0.001 - 1.0 közötti érték)
- ⚬: Hadamard-szorzás (azonos méretű tenzorok elemenkénti szorzata)
- ⊙: konvolúció
- ⊙d: részleges konvolúció, amely d sugarú környezetben konvolvál
- size(T): a T tenzor mérete
- ∑(T): a T tenzot elemenkénti összege
- *: skalárral történő elemenkénti szorzás
4. Gráf alapú háló
4.1. A gráf alapú háló működése
4.1.1. Előreterjesztés
Jelmagyarázat:
- sj(k): A j-dik neuron állapota a k-dik iterációban
- a(): aktivációs függvény
- ωij: az i-dik és j-dik neuron közötti súlytényező
- bj: a j-dik neuron erősítési tényezője
4.1.2. Hibavisszaterjesztés
Jelmagyarázat:
- si(k): A i-dik neuron állapota a k-dik iterációban
- a'(): az aktivációs függvény deriváltja
- ωij(k): az i-dik és j-dik neuron közötti súlytényező a k-dik iterációban
- bi(k): az i-dik neuron erősítési tényezője a k-dik iterációban
- δi(k): az i-dik neuron deltája a k-dik iterációban