RNN'ler: BPTT ne zaman uygulanır ve / veya ağırlıklar güncellenir?


16

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ı?

Yanıtlar:


26

Her zaman adımında bir çıktı üreten tekrarlayan sinir ağlarından (RNN) bahsettiğimizi varsayacağım (çıktı sadece dizinin sonunda mevcutsa, sadece sonunda backprop çalıştırmak mantıklıdır). Bu ayardaki RNN'ler genellikle bir sekansın 'parçaları' üzerinde sırayla çalışan, zaman içinde kesilmiş geri yayılım (BPTT) kullanılarak eğitilir. Prosedür şöyle görünür:

  1. İleri geçiş: Giriş, gizli ve çıkış durumlarını hesaplayarak sonraki zaman adımlarında .k1
  2. Önceki zaman adımlarında toplanan kaybı hesaplayın (aşağıya bakın).
  3. Geriye doğru geçiş: Önceki zaman adımlarında biriken tüm parametrelerdeki kayıp gradyanını hesaplayın (bu, bu zaman adımları için tüm aktivasyonların saklanmasını gerektirir). Patlayan degrade sorununu önlemek için degradeleri kırpın (nadiren olur).k2
  4. Parametreleri güncelleyin (bu, her zaman adımında artımlı olarak değil, yığın başına bir kez oluşur).
  5. Daha uzun bir dizinin birden fazla parçasını işliyorsanız, gizli durumu son kez adımda saklayın (bir sonraki parçanın başlaması için gizli durumu başlatmak için kullanılır). Dizinin sonuna geldiysek, belleği / gizli durumu sıfırlayın ve sonraki dizinin başına (veya yalnızca bir tane varsa aynı dizinin başlangıcına) geçin.
  6. 1. adımdan itibaren tekrarlayın.

Kayıp nasıl toplanır ve bağlıdır . Örneğin, olduğunda, kayıp son zaman adımlarında toplanır , ancak olduğunda prosedür farklıdır (bkz. Williams ve Peng 1990).k1k2k1=k2k1=k2k2>k1

Gradyan hesaplama ve güncellemeler her zaman adımında gerçekleştirilir, çünkü her zaman adımında güncelleme hesaplamaya göre daha ucuzdur. Dizi başına birden çok kez güncelleme (yani dizi uzunluğundan daha az ayarı ) ağırlık güncellemeleri daha sık olduğu için egzersizi hızlandırabilir.k1k1

Geri çoğaltma sadece zaman adımı için gerçekleştirilir, çünkü dizinin başına geri yayılmasından hesaplamalı olarak daha ucuzdur (bu, tüm zaman adımlarının depolanmasını ve tekrar tekrar işlenmesini gerektirir). Bu şekilde hesaplanan gradyanlar, tüm zaman adımlarında hesaplanan 'gerçek' gradyanın bir yaklaştırmasıdır. Ancak, yok olan gradyan problemi nedeniyle, gradyanlar bir dizi zaman adımından sonra sıfıra yaklaşma eğiliminde olacaktır; bu sınırın ötesine yayılması herhangi bir fayda sağlamaz. çok kısa ayarlamak , ağın öğrenebileceği geçici ölçeği sınırlayabilir. Ancak, ağın belleği zaman adımlarıyla sınırlı değildir, çünkü gizli birimler bu sürenin ötesinde bilgi depolayabilir (ör.k2k2k2).

Hesaplama ile ilgili hususların yanı sıra, ve için uygun ayarlar verilerin istatistiklerine bağlıdır (örneğin iyi çıktılar üretmek için ilgili yapıların zamansal ölçeği). Muhtemelen ağın ayrıntılarına da bağlıdırlar. Örneğin, çürüyen gradyan problemini azaltmak için tasarlanmış bir dizi mimari, başlatma hilesi vb. Vardır.k1k2

Seçenek ('frame-wise backprop'), değerini ve ayarını , cümlenin başından geçerli noktaya kadar geçen zaman adımı sayısına karşılık gelir . 2. Seçenek: ( 'cümlesi-bazlı backprop') her iki ayar karşılık gelir ve cümle uzunluğu. Her ikisi de geçerli yaklaşımlardır (yukarıdaki gibi hesaplama / performans hususları ile; # 1, daha uzun sekanslar için oldukça hesaplama yoğun olacaktır). Bu yaklaşımların hiçbiri 'kesilmiş' olarak adlandırılamaz, çünkü geri yayılım tüm sekans üzerinde gerçekleşir. Diğer ve ayarları mümkündür; Aşağıda bazı örnekler vereceğim.k11k2k1k2k1k2

Kesik BPTT'yi tanımlayan referanslar (prosedür, motivasyon, pratik konular):

  • Sutskever (2013) . Tekrarlayan sinir ağları eğitimi.
  • Mikolov (2012) . Yapay Sinir Ağlarına Dayalı İstatistiksel Dil Modelleri.
    • Metin verilerini bir kelime dizisi olarak işlemek için vanilya RNN'lerini kullanarak, değerini 10-20 kelimeye ve ila 5 kelimeye ayarlamayık1k2
    • Her sekans için birden fazla güncelleme yapmak (yani , sekans uzunluğundan daha az ), sekans sonunda güncellenmekten daha iyi sonuç verirk1
    • Öbek başına bir kez güncelleme yapmak artımlı olarak daha iyidir (bu da kararsız olabilir)
  • Williams ve Peng (1990) . Tekrarlanan ağ yörüngelerinin çevrimiçi eğitimi için etkili bir gradyan tabanlı algoritma.
    • Algoritmanın orijinal (?) Teklifi
    • ve ( ve ) seçimini tartışırlar . Sadece .k1k2hhk2k1
    • Not: Diğer referansların 'kesilmiş BPTT' olarak adlandırdığı şeye başvurmak için "BPTT (h; h ')" veya "geliştirilmiş algoritma" ifadesini kullanırlar. özel durumu için 'kesilmiş BPTT' ifadesini kullanırlar .k1=1

Kesilmiş BPTT kullanan diğer örnekler:

  • (Karpatya 2015). Char-RNN.
    • Açıklama ve kod
    • Vanilya RNN işleme metin belgeleri her seferinde bir karakter. Bir sonraki karakteri tahmin etmek için eğitildi. karakter. Ağ, eğlenceli sonuçlarla eğitim belgesi tarzında yeni metin oluşturmak için kullanılır.k1=k2=25
  • Graves (2014) . Tekrarlayan sinir ağları ile diziler oluşturma.
    • Simüle edilmiş Wikipedia makaleleri oluşturma ile ilgili bölüme bakın. Bayt dizisi olarak metin verilerini işleyen LSTM ağı. Bir sonraki baytı tahmin etmek için eğitildi. bayt. LSTM belleği her baytta sıfırlanır .10 , 000k1=k2=10010,000
  • Sak ve diğ. (2014) . Büyük kelime konuşma tanıma için uzun kısa süreli bellek tabanlı tekrarlayan sinir ağı mimarileri.
    • Modifiye LSTM ağları, akustik özelliklerin işleme dizileri. .k1=k2=20
  • Ollivier ve diğ. (2015) . Tekrar takip etmeden çevrimiçi tekrarlanan ağları eğitin.
    • Bu makalenin amacı farklı bir öğrenme algoritması önermekti, ancak bunu kesik BPTT ile karşılaştırdılar. Sembol dizilerini tahmin etmek için vanilya RNN'leri kullanıldı. Burada sadece kullandıklarını söylemek için .k1=k2=15
  • Hochreiter ve Schmidhuber (1997) . Uzun kısa süreli bellek.
    • LSTM'ler için değiştirilmiş bir prosedürü tanımlarlar

Bu olağanüstü bir cevap ve keşke bu forumda önemli bir ödül vermek için ayakta dursaydım. Özellikle daha genel kullanıma karşı iki durumumu bağlamsallaştırmak için k1 ve k2'nin somut tartışması ve bunun sayısal örnekleri özellikle yararlıdır.
Novak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.