Wie bestimme ich mithilfe des Gehirnmoduls von Gekko, wie viele Ebenen und welche Art von Ebene zur Lösung eines Deep-Learning-Problems verwendet werden sollen?

9

Ich lerne, Gekkos Gehirnmodul für Deep-Learning-Anwendungen zu verwenden.

Ich habe ein neuronales Netzwerk eingerichtet, um die Funktion numpy.cos () zu lernen und dann ähnliche Ergebnisse zu erzielen.

Ich bekomme eine gute Passform, wenn die Grenzen meines Trainings sind:

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

Aber das Modell fällt auseinander, wenn ich versuche, die Grenzen zu erweitern auf:

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

Was muss ich in meinem neuronalen Netzwerk ändern, um die Flexibilität meines Modells zu erhöhen, damit es für andere Grenzen funktioniert?

Das ist mein Code:

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()

Dies sind Ergebnisse zu 2pi:

Geben Sie hier die Bildbeschreibung ein

Dies sind Ergebnisse zu 3pi:

Geben Sie hier die Bildbeschreibung ein

Joseph
quelle

Antworten:

6

Ich erhalte das folgende Ergebnis, wenn ich die Knoten auf 5 erhöhe b.layer(tanh=5)

Es gibt wahrscheinlich mehrere Antworten auf diese Frage. Erhöhen Sie möglicherweise die Anzahl der Ebenen oder ändern Sie die Aktivierungsfunktion. Sie können auch immer verschiedene Löser verwenden. Das Finden der besten Netzwerkarchitektur ist ein eigenes Optimierungsproblem. Einige Leute haben versucht, es mit genetischen Algorithmen herauszufinden, zum Beispiel:

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

Geben Sie hier die Bildbeschreibung ein

reyPanda
quelle
2

Datengesteuerte (Black-Box) Modelle haben von Natur aus Probleme mit "Überanpassung" und "Unteranpassung". Wenn Sie Ihrem Modell zu viele Freiheitsgrade geben, passt es perfekt in Ihren "Trainings" -Datensatz, während es nicht so gut in den "Validierungs" -Datensatz passt.

Gleiches gilt für Modelle vom Typ Neural Net. Je mehr Ebenen Sie angeben, desto einfacher führt das Modell zur "Überanpassung".

Es gibt verschiedene Möglichkeiten, um "Überanpassung" zu vermeiden.

Im Allgemeinen können Sie die "Modellfehler" zwischen "Trainingssatz" und "Validierungssatz" ausgleichen und die Vergrößerung der Ebenen an dem Punkt stoppen, an dem der Validierungsfehler zuzunehmen beginnt, während der Trainingsfehler weiter abnimmt, oder umgekehrt.

Junho Park
quelle