RNN, LSTM ve GRU
Kapı denklemleri ve zaman boyunca geri yayılım.
01Ortak arayüz#
RNN/LSTM/GRU(input_size,hidden_size,num_layers=1,truncate_bptt=0). Girdi [B,T,F], çıktı [B,T,H]; tek yönlü ve batch-first. Ayrı başlangıç/son durum API’si yoktur. Her forward sıfır durumla başlar. Boyutları, pozitif T ve katman sayısını çağıran sağlamalı.
LSTM sequence(32,64,2);auto x=Tensor::zeros({4,20,32});auto y=sequence.forward(x); // [4,20,64]02Tanh RNN#
Giriş ağırlıkları Kaiming, recurrent ağırlıkları orthogonal başlar. Katman başına lN.weight_ih, lN.weight_hh, lN.bias_ih, lN.bias_hh kaydedilir.
03LSTM kapıları#
Düzen i,f,g,o: giriş, unutma, aday, çıkış. Giriş bias’ının forget bloğu 1 başlar. Backward gizli ve hücre gradyanlarını zamanda taşır.
04GRU kapıları#
r ve z sigmoid; n tanh kullanır. Reset kapısı recurrent aday projeksiyonuna bias dahil uygulandıktan sonra giriş projeksiyonuyla toplanır. Ağırlık aktarırken GRU varyantı uyumunu kontrol edin.
05Kesilmiş BPTT#
truncate_bptt=k>0 yalnız son k adımı türetir: t0=max(0,T−k). Önceki giriş konumları sıfır gradyan alır. Geçmiş durum forward’da kullanılır, kesme sınırını türev geçmez. Bu otomatik kayan pencereli eğitim değildir.
06LSTM kapılarının açılımı#
Ağırlık projeksiyonu a_t=W_ih x_t+b_ih+W_hh h_(t−1)+b_hh dört H genişlikli bloğa ayrılır. i/f/o sigmoid, g tanh kullanır. Sigmoid kapılar [0,1] aralığında bilgi geçişini ölçekler; hücrenin toplamsal yolu uzun dönem türevi taşır.
07Hücre ve kapı türevleri#
d c_t, gelecekten gelen hücre türeviyle h_t yolunun katkısının toplamıdır. Hücre gradyanı f_t ile geçmişe taşınır. i, f, o için sigmoid türevi q(1−q), g için 1−g² ile yerel çarpım yapılır; ardından projeksiyonun Linear türevleri hesaplanır.