recurrent neural network (tsz. recurrent neural networks)
A Recurrent Neural Network (röviden: RNN, magyarul: rekurrens neurális hálózat) egy speciális neurális hálózattípus, amelyet idősorok, szöveg, beszéd, és más szekvenciális adatok feldolgozására terveztek. A hagyományos mély neurális hálózatokkal ellentétben az RNN-ek memóriával rendelkeznek – képesek megőrizni az előző lépések információit, így időben összefüggő adatokon tanulni.
A klasszikus neurális hálók (pl. perceptronok, CNN-ek) minden bemenetet függetlennek kezelnek. Ez problémát okoz olyan feladatoknál, ahol a bemenetek sorrendje fontos:
Például egy mondat értelme más lehet attól függően, milyen szavak állnak előtte. Az RNN célja, hogy megőrizze a kontextust azáltal, hogy „emlékszik” a korábbi bemeneti elemekre.
Az RNN-ek ismétlődő struktúrával rendelkeznek. Egy adott pillanatban nemcsak az aktuális bemenetet (x_t
), hanem a korábbi állapotot (h_{t-1}
) is figyelembe veszik. Így az aktuális kimenet és állapot együttesen a következőképpen számítható:
h_t = f(Wx_t + Uh_{t-1} + b) y_t = g(Vh_t + c)
Itt:
x_t
: aktuális bemenet,h_t
: rejtett állapot (emlékezet),y_t
: kimenet,W
, U
, V
: súlymátrixok,f()
: aktivációs függvény (pl. tanh vagy ReLU).
Tegyük fel, hogy egy RNN-t betanítunk arra, hogy felismerje, tartalmaz-e egy szöveg egy bizonyos kulcsszót. A bemenet karakterenként jön: H
, e
, l
, l
, o
. Az RNN minden egyes karaktert egyesével dolgoz fel, és a korábbi karakterek alapján fokozatosan építi fel a megértését.
Az LSTM egy speciális RNN, amely kapukkal (gates) szabályozza, hogy az információ hogyan áramlik az időlépések között. Képes hosszú távú függőségeket is megtartani, így gyakran használják gépi fordításban, chatbotoknál, stb.
A három fő kapu:
A GRU egyszerűsített változata az LSTM-nek – kevesebb kaput használ, gyorsabban tanul, és gyakran hasonló pontosságot ér el. Két fő komponense:
from keras.models import Sequential
from keras.layers import SimpleRNN, Dense
model = Sequential()
model.add(SimpleRNN(50, input_shape=(10, 1))) # 10 lépés hosszú sorozat, 1 feature per lépés
model.add(Dense(1)) # Egy kimenet
model.compile(optimizer='adam', loss='mse')
t-1 t t+1 Input -->-->-->-->... | | | v v v | | | ... ... ...
Az h_t
mindig az előző állapot h_{t-1}
és az aktuális bemenet x_t
alapján készül el, így a hálózat emlékezik.
A rekurrens neurális hálók (RNN-ek) kulcsfontosságúak olyan gépi tanulási problémák megoldásában, ahol a sorrendiség számít. Alapvető építőkövei a beszédfelismerő rendszereknek, fordító motoroknak, chatbotoknak, és időbeli előrejelző algoritmusoknak. Bár egyszerű formájukban korlátozottak, az LSTM és GRU architektúrák révén megbízhatóan kezelnek összetett, hosszú távú függőségeket is.