RNN — ketma-ket ma’lumotlarni oldingi holatni saqlagan holda qayta ishlashga mo‘ljallangan neural network architecture’si. To‘liq nomi Recurrent Neural Network. RNN matn, nutq, vaqt qatori, sensor signal va boshqa sequence’larda elementlar tartibini hisobga oladi.
RNN har vaqt qadamida joriy input va oldingi hidden state’dan yangi hidden state hosil qiladi.
Recurrent holat
Soddalashtirilgan model:
h_t = f(x_t, h_(t-1))
Bu yerda:
x_t— joriy input;h_(t-1)— oldingi hidden state;h_t— yangi state.
Bir xil weightlar barcha vaqt qadamlarida qayta ishlatiladi.
Sequence
RNN input ketma-ketligini elementma-element qayta ishlaydi.
Masalan, gap tokenlari:
Men → bugun → ishlayman
Har tokendan keyin state yangilanadi.
Yakuniy yoki barcha state’lar downstream vazifa uchun ishlatilishi mumkin.
Hidden state
Hidden state oldingi sequence haqida ixcham representation saqlaydi.
Nazariy jihatdan u barcha oldingi inputdan ta’sir oladi.
Amalda uzoq masofadagi ma’lumot gradient muammolari sabab yo‘qolishi mumkin.
State o‘lchami model capacity’sini belgilaydi.
Many-to-one
Ko‘p inputdan bitta output:
matn tokenlari
→ sentiment label
Oxirgi hidden state yoki pooled state classifierga uzatiladi.
Document juda uzun bo‘lsa faqat oxirgi state yetarli bo‘lmasligi mumkin.
One-to-many
Bitta inputdan ketma-ket output:
image feature
→ caption tokenlari
Decoder RNN oldingi output va state asosida keyingi tokenni generatsiya qiladi.
Start va end tokenlari sequence chegarasini bildiradi.
Many-to-many
Har input qadamiga output:
Yoki input va output uzunligi turli:
- translation;
- summarization.
Encoder-decoder architecture bu vazifalarni bajarishi mumkin.
Unrolling
RNN training graph vaqt bo‘yicha ochiladi:
t1 → t2 → t3 → ... → tn
Har qadam bir xil parameterlardan foydalanadi.
Backpropagation shu unrolled graph bo‘ylab bajariladi.
Bu Backpropagation Through Time deb ataladi.
BPTT
BPTT loss gradientini oldingi vaqt qadamlariga uzatadi.
Uzun sequence memory va compute sarfini oshiradi.
Truncated BPTT faqat ma’lum qadamgacha gradient uzatadi.
Bu trainingni yengillashtiradi, ammo juda uzoq dependency’ni o‘rganishni cheklashi mumkin.
Vanishing gradient
Gradient ko‘p vaqt qadamidan o‘tganda juda kichrayishi mumkin.
Natijada model uzoq oldingi signalni o‘rgana olmaydi.
Sigmoid yoki tanh derivative va recurrent weightlar bunga ta’sir qiladi.
LSTM va GRU shu muammoni kamaytirishga yaratilgan.
Exploding gradient
Gradient aksincha juda kattalashishi mumkin.
Bu trainingni beqaror qiladi va loss NaNga aylanishi ehtimoli bor.
Gradient clipping maksimal norm yoki qiymatni cheklaydi.
Weight initialization ham muhim.
Bidirectional RNN
Bidirectional RNN sequence’ni ikki yo‘nalishda o‘qiydi:
- chapdan o‘ngga;
- o‘ngdan chapga.
Har token oldingi va keyingi kontekstdan feature oladi.
Offline tagging uchun foydali.
Real-time streamingda kelajak token hali mavjud emas.
Stacked RNN
Bir nechta recurrent layer ustma-ust qo‘yiladi.
Pastki layer local pattern, yuqori layer abstrakt sequence feature o‘rganishi mumkin.
Chuqurlik capacityni oshiradi, ammo trainingni murakkablashtiradi.
Residual va normalization yordam berishi mumkin.
RNN language model
RNN oldingi tokenlar asosida keyingi token probabilitysini beradi.
Training teacher forcing bilan haqiqiy oldingi tokenni input qiladi.
Inference’da model o‘z generatsiya qilgan tokenini keyingi qadamga uzatadi.
Errorlar ketma-ket yig‘ilishi mumkin.
Encoder-decoder
Encoder input sequence’ni state yoki state’lar to‘plamiga aylantiradi.
Decoder shu representation asosida output sequence yaratadi.
Bitta fixed vector bottleneck uzun gaplarda muammo yaratgan.
Attention decoderga barcha encoder state’lariga murojaat qilish imkonini berdi.
Time series
RNN oldingi observationlar orqali keyingi qiymat yoki classni bashorat qilishi mumkin.
Inputga:
kiradi.
Stationarity va data leakage alohida nazorat qilinadi.
Stateful RNN
State batchlar yoki streaming segmentlar orasida saqlanishi mumkin.
Sequence chegarasida state tozalanmasa bir user yoki sample ma’lumoti boshqasiga o‘tishi mumkin.
Stateful inference session identity bilan boshqariladi.
RNN va Transformer
RNN tokenlarni ketma-ket qayta ishlaydi, parallelizatsiya cheklangan.
Transformer self-attention orqali trainingda tokenlarni parallel qayta ishlashi mumkin.
Transformer uzun dependency va scale’da ko‘p vazifalarda RNNni almashtirdi.
RNN kichik streaming model va signal vazifalarida hanuz foydali.
Mask va variable length
Batchdagi sequence’lar turli uzunlikda bo‘lsa padding qo‘shiladi. RNN padding qadamlarini real data sifatida state’ga qo‘shmasligi uchun length yoki mask ishlatiladi. Ayrim framework packed sequence representation beradi. Noto‘g‘ri mask oxirgi hidden state’ni paddingdan keyingi holatga aylantiradi.
Gradient clipping
Exploding gradientda update juda katta bo‘lib trainingni buzadi. Gradient norm ma’lum threshold’dan oshsa scale qilinadi. Clipping sababni to‘liq bartaraf etmaydi, ammo stabilityni yaxshilaydi.
Teacher forcing farqi
Decoder trainingda haqiqiy oldingi tokenni ko‘radi, inference’da esa o‘z xatosiga tayanadi. Bu exposure bias deb ataladigan farqni yaratishi mumkin. Beam search yoki training strategiyasi ta’sirni kamaytirishga intiladi.
State initialization
Initial hidden state nol, learned parameter yoki boshqa encoder outputidan olinishi mumkin. Tanlov vazifaning sequence boshlanish semantikasiga bog‘liq.
Bog‘liq tushunchalar
Recurrent Neural Network, Hidden state, Sequence model, Backpropagation Through Time, Vanishing gradient, Exploding gradient, LSTM, GRU, Bidirectional RNN, Time series