Sinir ağlarında toplu öğrenme yönteminde ağırlıklar nasıl güncellenir?


15

Birisi bana toplu iş yöntemini kullanarak nasıl bir sinir ağı kurmam gerektiğini söyleyebilir mi?

Toplu modda, eğitim setindeki tüm numuneler için, ağdaki her nöron için hata, delta ve dolayısıyla delta ağırlıklarını hesapladığımızı ve sonra ağırlıkları hemen güncellemek yerine, biriktirdiğimizi ve daha sonra bir sonraki dönemde ağırlıkları güncelliyoruz.

Ben de bir yerde okudum, toplu yöntem çevrimiçi yöntem gibi ama fark sadece bir eğitim kümesindeki tüm örnekleri için hataları toplamı ve sonra ortalamasını almak ve daha sonra tıpkı gibi ağırlıkları güncellemek için kullanmak gerekir çevrimiçi yöntemde (fark sadece ortalama) böyle yapar:

for epoch=1 to numberOfEpochs

   for all i samples in training set

         calculate the errors in output layer
         SumOfErrors += (d[i] - y[i])
   end

   errorAvg = SumOfErrors / number of Samples in training set

   now update the output layer with this error
   update all other previous layers

   go to the next epoch

end
  • Bunlardan hangisi gerçekten doğru toplu iş yöntemi?
  • Birincisi durumunda, tüm delta ağırlıklarını biriktirmek çok sayıda sonuç vermiyor mu?

1
"Doğru" yöntem bağlama bağlıdır. Birçok durumda, ağırlıkların her dönem için sadece bir kez güncellenmesinin stokastik güncellemeden çok daha yavaş bir şekilde birleşeceği ortaya çıkar (her örnekten sonra ağırlıkların güncellenmesi). Genelde toplu güncelleştirme biçimini kullanmak isteyeceğiniz bir fikir birliği ekleyeceğim, ancak dönem başına 1 kattan daha sık.
Tahlor

Yanıtlar:


9

Ortalama veya toplamı kullanmak, aynı güncellemeyi ürettikleri çift öğrenme oranları olması bakımından eşdeğerdir.

Bunu onaylamak için önce güncelleme kuralını hatırlayın:

Δwij=αEwij

μEnnμEnw

Δwij=α(nμ)wij=αnμwij

ΔwΔw


1
Mini toplu degrade inişi aynı toplu degrade inişi mi? Burada kayboldum! değilse, bunlar arasındaki fark nedir? Yanlışsam beni düzelt, Toplu modda, tüm veri kümesinin toplu olarak okunması gerekir, degradeler hesaplanır ve hepsi okunduğunda, bunların ortalaması alınır ve daha sonra parametreler güncellenir, mini toplu olarak, her biri toplu iş okunur, degradeler hesaplanır ve sonra parametreler güncelleştirilir ve bir sonraki mini toplu iş bir dönem bitene kadar okunur.
Rika

1
Genel olarak verilen tanım budur: Her seferinde egzersiz verilerinin bir alt kümesini kullanarak parametreleri güncelleyin. (Mini partilerin yakınsamaya kadar rastgele örneklendiği bazı yöntemler vardır, örn. Parti bir çağda geçilmeyecektir.) Bunun yararlı olup olmadığına bakın .
Sean Easter

0

İki cevap eşdeğerdir. Şahsen toplam yerine ortalama bir hata olarak düşünürdüm. Ancak, degrade inişin öğrenme hızı adı verilen bir parametreye sahip olduğunu ve hatanın degradesinin yalnızca bir bölümünün çıkarıldığını unutmayın. Böylece hatanın toplam ortalama olarak tanımlanıp tanımlanmayacağı öğrenme oranı değiştirilerek telafi edilebilir.


teşekkürler, ama eğer gerçekten aynıysa, neden sadece basit bir değişken olacak hataları toplayabiliyorsak, her bir desen için biriken güncellemeleri koruyarak neden bu kadar çok bellek harcamıyorsunuz?
Rika
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.