Usando el módulo cerebral de Gekko, ¿cómo determino cuántas capas y qué tipo de capa usar para resolver un problema de aprendizaje profundo?

9

Estoy aprendiendo a usar el módulo cerebral de Gekko para aplicaciones de aprendizaje profundo.

He estado configurando una red neuronal para aprender la función numpy.cos () y luego producir resultados similares.

Me pongo bien cuando los límites de mi entrenamiento son:

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

Pero el modelo se desmorona cuando intento extender los límites a:

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

¿Qué necesito cambiar en mi red neuronal para aumentar la flexibilidad de mi modelo para que funcione para otros límites?

Este es mi código:

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

Estos son resultados para 2pi:

ingrese la descripción de la imagen aquí

Estos son resultados para 3pi:

ingrese la descripción de la imagen aquí

José
fuente

Respuestas:

6

Obtengo el siguiente resultado si aumento los nodos a 5 b.layer(tanh=5)

Probablemente hay múltiples respuestas a esta pregunta, aunque. Tal vez aumentando el número de capas o cambiando la función de activación. Siempre puedes usar diferentes solucionadores, también. Encontrar la mejor arquitectura de red es un problema de optimización en sí mismo. Algunas personas han tratado de resolverlo con algoritmos genéticos, por ejemplo:

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

ingrese la descripción de la imagen aquí

reyPanda
fuente
2

Los modelos basados ​​en datos (caja negra) tienen inherentemente problemas de "sobreajuste" y "falta de ajuste". Si le da demasiados grados de libertad a su modelo, encajará perfectamente en su conjunto de datos "Entrenamiento", mientras que no encajará tan bien con el conjunto de datos "Validación".

Lo mismo para el tipo de modelos Neural Net. Cuantas más capas proporcione, más fácil resultará el modelo en el "Sobreajuste".

Hay varias formas de evitar el "sobreajuste".

En general, puede equilibrar los "errores de modelo" entre el "Conjunto de entrenamiento" y el "Conjunto de validación", dejando de aumentar las capas en el punto en que el Error de validación comienza a aumentar mientras el error de entrenamiento sigue disminuyendo, o viceversa.

Parque Junho
fuente