Ben (diğerleri arasında) Graves 'foneme sınıflandırma 2005 makalesi üzerinden etiketleme RNNs üst düzey uygulama anlamaya çalışıyorum .
Sorunu özetlemek gerekirse: Tek cümlelerin (giriş) ses dosyalarından ve (çıktı) uzman etiketli başlangıç zamanlarından, durma zamanlarından ve tek tek telefon seslerinin etiketlerinden (sessizlik gibi birkaç "özel" telefonemden oluşan büyük bir eğitim setimiz var, böylece her bir ses dosyasındaki her örnek bir fonetik sembolüyle etiketlenir.)
Kağıdın itme, gizli katmandaki LSTM bellek hücreleri ile bir RNN bu soruna uygulamaktır. (Karşılaştırma olarak çeşitli varyantları ve diğer teknikleri uygular. Şimdilik işleri basit tutmak için SADECE tek yönlü LSTM ile ilgileniyorum.)
Ağın mimarisini anladığımı düşünüyorum: Ses dosyalarının standart olarak işlenmiş, ses dosyalarının 10 ms pencerelerine karşılık gelen bir giriş katmanı; LSTM hücrelerinin gizli bir katmanı ve olası tüm 61 telefon sembolünün tek bir sıcak kodlu çıkış katmanı.
LSTM birimlerinden ileri ve geri geçişin (karmaşık ama anlaşılır) denklemlerini anladığımı düşünüyorum. Bunlar sadece kalkülüs ve zincir kuralıdır.
Anlamadığım şey, bu makaleyi ve benzerlerini birkaç kez okuduktan sonra, tam olarak geri yayılım algoritmasını ne zaman uygulayacağımız ve nöronlardaki çeşitli ağırlıkları tam olarak ne zaman güncelleyeceğinizdir.
İki makul yöntem vardır:
1) Frame-wise backprop ve güncelleme
Load a sentence.
Divide into frames/timesteps.
For each frame:
- Apply forward step
- Determine error function
- Apply backpropagation to this frame's error
- Update weights accordingly
At end of sentence, reset memory
load another sentence and continue.
veya,
2) Cümle bilge backprop ve güncelleme:
Load a sentence.
Divide into frames/timesteps.
For each frame:
- Apply forward step
- Determine error function
At end of sentence:
- Apply backprop to average of sentence error function
- Update weights accordingly
- Reset memory
Load another sentence and continue.
Bunun Graves kağıdını sivri (ve kişisel olarak alakalı) bir örnek olarak kullanarak RNN eğitimi hakkında genel bir soru olduğuna dikkat edin: RNN'leri sekanslar üzerinde eğitirken, her zaman aralığında backprop uygulanır mı? Ağırlıklar her zaman aralığında ayarlanıyor mu? Ya da, ileri beslemeli mimariler üzerinde toplu eğitim için gevşek bir benzetmede, backprop ve ağırlık güncellemeleri uygulanmadan önce hatalar belirli bir sıra üzerinde toplanır ve ortalanır mı?
Yoksa düşündüğümden daha mı kafam karıştı?