Así que estoy tratando de enseñarme a mí mismo las redes neuronales (para aplicaciones de regresión, no para clasificar imágenes de gatos).
Mis primeros experimentos fueron entrenar una red para implementar un filtro FIR y una Transformada Discreta de Fourier (entrenamiento en señales "antes" y "después"), ya que ambas son operaciones lineales que pueden ser implementadas por una sola capa sin función de activación. Ambos funcionaron bien.
Entonces, quería ver si podía agregar un abs()
y hacer que aprendiera un espectro de amplitud. Primero pensé en cuántos nodos necesitaría en la capa oculta, y me di cuenta de que 3 ReLU son suficientes para una aproximación cruda abs(x+jy) = sqrt(x² + y²)
, por lo que probé esa operación por sí sola en números complejos solitarios (2 entradas → 3 nodos ReLU capa oculta → 1 salida). Ocasionalmente funciona:
Pero la mayoría de las veces que lo intento, se atasca en un mínimo local y no encuentra la forma correcta:
He probado todos los optimizadores y variantes de ReLU en Keras, pero no hacen mucha diferencia. ¿Hay algo más que pueda hacer para que redes simples como esta converjan de manera confiable? ¿O simplemente estoy abordando esto con la actitud equivocada, y se supone que debes arrojar más nodos de los necesarios al problema y si la mitad de ellos muere, no se considera un gran problema?