Sinir Ağı eğitimi için Backpropagation vs Genetik Algoritma


34

Her yöntemin artılarını ve eksilerini tartışan birkaç makale okudum, bazıları GA'nın en uygun çözümü bulmada herhangi bir gelişme sağlamadığını, diğerleri ise bunun daha etkili olduğunu gösteriyor. Genel olarak literatürde GA'nın tercih edildiği görülmektedir (çoğu insan ihtiyaç duydukları sonuçları elde etmek için bir şekilde değiştirmelerine rağmen), o zaman neden yazılım çözümlerinin çoğunluğu yalnızca geri yayını kullanıyor gibi görünüyor?

Birini ya da diğerini ne zaman kullanacağınıza dair genel bir kural var mı? Belki de NN türüne bağlıdır ya da genellikle diğerlerinden daha iyi performans gösteren bazı son teknoloji ürünü çözümler vardır?

Mümkünse genel cevaplar arıyorum: yani, "NN büyükse, GA daha iyi" veya "GA her zaman daha iyi ancak hesaplamalı performans sorunları var" vb.

Yanıtlar:


23

Bilimsel literatüre dikkatlice bakarsanız, karşıt sonuçlar bulacaksınız. Açıkçası, bazı durumlarda GA (ve daha genel olarak Evrimsel Algoritmalar) optimal bir NN tasarımı bulmanıza yardımcı olabilir , ancak normalde çok fazla sakıncası vardır (algoritma parametrelerinin ayarlanması, hesaplama karmaşıklığı vb.) Ve bunların kullanımı gerçek için uygun değildir. dünya uygulamaları Elbette GA / EA’ların her zaman olduğu bir dizi problem bulabilirsiniz. geri yayılmadan daha iyidir. Optimal bir NN tasarımı bulmanın karmaşık bir multimodal optimizasyon problemi olduğu göz önüne alındığında, GA / EA'lar (geleneksel) algoritmalar ile elde edilen sonuçları iyileştirmeye yardımcı olabilir, örneğin sadece başlangıç ​​ağırlıkları konfigürasyonunu bulmak için GA / EA'ları kullanmak veya geleneksel algoritmalara yardımcı olmak için yerel minimenden kaçış (eğer ilgileniyorsanız, bu konuyla ilgili bir yazı yazdım)

Bu alanda çok çalıştım ve size NN'lere uygulanan GA / EA'lar hakkında birçok bilimsel çalışma olduğunu söyleyebilirim, çünkü bunlar ortaya çıkmakta olan bir araştırma alanıdır (ya da daha iyisidir).


2
Bu da son zamanlarda karşılaştığım bir şey - önce 'iyi' bir çözüm bulun ve sonra onu GA ile daha da geliştirin. Yalnızca
NN'ler

1
Neden karşılıklı olarak dışlandıkları konusunda kafam karıştı. GA'nın yapıyı öğrenmesi gerektiğini düşündüm; Backpropagation sadece ağırlıkları öğrenebilir
pete

8

Sinir ağları ile ilgili temel problemlerden biri aşırı sığdırıcıdır, yani sınırlı bir veri örneğine dayanarak bazı kriterleri en aza indiren bir ağ bulmak için çok uğraşan algoritmalar, o belirli örnek için çok iyi çalışan bir ağ ile sonuçlanacaktır. veri, ancak genellemesi zayıf olacaktır. Bu nedenle sinir ağlarını tasarlamak için GA'ları kullanmaktan, özellikle de ağırlıkları optimize etmekle aynı zamanda mimari optimizasyon yapıyorlarsa, temkinli davranıyorum. Genelde, rastgele başlangıç ​​ağırlık vektörlerinin sayısından (örneğin 20) eğitim ağlarının (düzenli hale getirme ile) ve daha sonra ortaya çıkan tüm ağlardan oluşan bir topluluk oluşturmanın genellikle herhangi bir yaklaşım kadar iyi olduğunu buldum.

Temel olarak optimizasyon, makine öğrenimindeki tüm kötülüklerin kökenidir, ne kadar çok yaparsanız, verilere aşırı uyum sağlama olasılığınız o kadar artar.


Dikran, though GA make natural selection but does not ignore the information as you mentioned, it only ensure if the selected solution solve its problem if not, it find out to know why and upgrade the agorithm which form the basis of it dynamism till the network converge at one or two best solution. hope you get that rignt?

converging to the best solution evaluated over a finite sample of data is exactly what causes over-fitting. To avoid overfitting you want to converge on a solution that is not the best (e.g. early stopping in training neural networks). GAs are no better than any other form of optimisation in fitting neural networks, you need to avoid over-optimising the training criterion.
Dikran Marsupial

5

Whenever you deal with huge amounts of data and you want to solve a supervised learning task with a feed-forward neural network, solutions based on backpropagation are much more feasible. The reason for this is, that for a complex neural network, the number of free parameters is very high. One industry project I am currently working on involves a feed-forward neural network with about 1000 inputs, two hidden layers @ 384 neurons each and 60 outputs. This leads to 1000*384 + 384*384 + 384*60 = 554496 weight parameters which are to be optimized. Using a GA approach here would be terribly slow.


Anladığım kadarıyla GA standart yaklaşımlarla çözülmesi daha zor olan problemleri çözmek için tasarlandı. Tanımladığınız bir durumda tam olarak daha iyi performans göstermeli mi?
sashkello

2
GA'nın hangi yapının ne olduğunu bulmak için kullanılması gerektiğini düşündüm, örneğin kaç tane gizli katman ve nasıl bağlandıklarını. Geriye doğru yayılma sadece ağırlıkları çözebilir
pete

2

Second answer is wrong. Overfitting isn't caused by optimization. Overfitting happens when your model is over-complicated and can fit all the datapoints without learning the actual rule that created them (i.e. just memorizing them, in the extreme case.) There are many ways to prevent overfitting such as choosing simpler models, dropout, dropconnect, weight decay, and just using more data. The goal should be to optimize your network and make it as accurate as possible, taking those constraints into account.

Soruyu cevaplamak için, backprop sözde stokastik optimizasyondan çok daha hızlıdır (genetik algoritmalar ve benzeri). Benim tahminim bunun nedeni, gerçek çıktının ne olması gerektiğinden avantaj sağlamasıdır, ağırlıkları buna göre doğru yönde ayarlar. Stokastik optimizasyonun tamamen rastgele değişiklikleri denediği ve bu bilgiyi görmezden geldiği yerde.

Ancak, daha geniş bir alanı keşfederek, GA'ların yerel optimaslardan kaçınarak uzun vadede muhtemelen daha iyi olacağı, sadece eğitilmesi daha uzun sürecektir.

GA'ların backprop'tan ne kadar yavaş olduklarını merak ediyorum ve eğer birisi hibrit algoritmalar biliyorsa (dağılım arama bunun için ideal gibi görünüyor).


1
Disagree with your first paragraph. Overfitting is prevented mainly via regularization approaches in the training problem. If you start doing meta-optimization --- that is solving lots of training problems (for example tuning kernel parameters, network architectures, ...) -- taking care of overfitting becomes much more difficult and is certainly not implicitly guaranteed anymore.
Marc Claesen

If overfitting were not caused by optimisation, early stopping wouldn't be an effective remedy for overfitting.
Dikran Marsupial

1

imho the difference between GA and backpropagation is that GA is based on random numbers and that backpropagation is based on a static algorithm such as stochastic gradient descent. GA being based on random numbers and add to that mutation means that it would likely avoid being caught in a local minima. But then GA being based on random numbers means that it is fairly likely for 2 different times you run the learning on the same network, it may reach a different conclusion i.e. a different set of weights


Just commenting, we also use random init. for the weights in back-prop. If we use the same seed while initializing, it will lead to the same solution, but if you don't, probably it won't. So, back-prop, too, depends on a random input. When you fix the seed, you'll also have the same result in genetic algorithm since it'll use the same seq. of numbers again.
gunes
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.