Gekko'nun beyin modülünü kullanarak, derin bir öğrenme problemini çözmek için kaç katmanı ve ne tür katmanı kullanacağımı nasıl belirlerim?


9

Derin öğrenme uygulamaları için Gekko'nun beyin modülünü kullanmayı öğreniyorum.

Numpy.cos () işlevini öğrenmek ve daha sonra benzer sonuçlar üretmek için bir sinir ağı kuruyorum.

Antrenmanımın sınırları şu olduğunda iyi uyuyorum:

x = np.linspace(0,2*np.pi,100)

Ancak, sınırları genişletmeye çalıştığımda model parçalanıyor:

x = np.linspace(0,3*np.pi,100)

Diğer sınırlar için çalışabilmesi için modelimin esnekliğini artırmak için sinir ağımda ne değiştirmem gerekiyor?

Bu benim kodum:

from gekko import brain
import numpy as np
import matplotlib.pyplot as plt

#Set up neural network 
b = brain.Brain()
b.input_layer(1)
b.layer(linear=2)
b.layer(tanh=2)
b.layer(linear=2)
b.output_layer(1)

#Train neural network
x = np.linspace(0,2*np.pi,100)
y = np.cos(x)
b.learn(x,y)

#Calculate using trained nueral network
xp = np.linspace(-2*np.pi,4*np.pi,100)
yp = b.think(xp)

#Plot results
plt.figure()
plt.plot(x,y,'bo')
plt.plot(xp,yp[0],'r-')
plt.show()

Bunlar 2pi sonuçları:

resim açıklamasını buraya girin

Bunlar 3pi sonuçları:

resim açıklamasını buraya girin

Yanıtlar:


6

Düğümleri 5'e çıkarırsam aşağıdaki sonucu elde ederim b.layer(tanh=5)

Bu sorunun muhtemelen birden fazla cevabı vardır, tho. Belki katman sayısını artırmak veya etkinleştirme işlevini değiştirmek. Her zaman farklı çözücüler de kullanabilirsiniz. En iyi ağ mimarisini bulmak kendi başına bir optimizasyon problemidir. Bazı insanlar bunu genetik algoritmalarla anlamaya çalıştı, örneğin:

https://arxiv.org/pdf/1808.03818.pdf

resim açıklamasını buraya girin


2

Veriye dayalı (Kara kutu) modellerin doğasında "Aşırı Donatım" ve "Yetersiz Donatım" sorunları vardır. Modelinizde çok fazla serbestlik derecesi verirseniz, "Eğitim" veri kümenize mükemmel şekilde uyurken "Doğrulama" veri kümesine tam olarak uymayacaktır.

Neural Net tipi modeller için aynıdır. Ne kadar çok katman verirseniz, model "Overfitting" ile o kadar kolay sonuçlanır.

"Aşırı takılmayı" önlemenin birkaç yolu vardır.

Genel olarak, "Eğitim seti" ve "Doğrulama seti" arasındaki "model hataları" arasında denge kurabilir, eğitim hatası azalmaya devam ederken Doğrulama Hatasının artmaya başladığı noktadaki katmanları artırmayı durdurabilir veya tersini yapabilirsiniz.

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.