Então, eu estou tentando me ensinar redes neurais (para aplicações de regressão, não classificando imagens de gatos).
Minhas primeiras experiências foram treinando uma rede para implementar um filtro FIR e uma Transformada Discreta de Fourier (treinamento em sinais "antes" e "depois"), pois essas são operações lineares que podem ser implementadas por uma única camada sem função de ativação. Ambos funcionaram bem.
Então, eu queria ver se eu poderia adicionar um abs()
e fazê-lo aprender um espectro de amplitude. Primeiro, pensei em quantos nós precisaria na camada oculta e percebi que 3 ReLUs são suficientes para uma aproximação grosseira de abs(x+jy) = sqrt(x² + y²)
, então testei essa operação sozinha em números complexos isolados (2 entradas → 3 nós ReLU na camada oculta → 1 resultado). Ocasionalmente, funciona:
Mas na maioria das vezes que eu experimento, ele fica preso no mínimo local e falha em encontrar a forma correta:
Eu tentei todos os otimizadores e variantes ReLU no Keras, mas eles não fazem muita diferença. Há algo mais que eu possa fazer para fazer com que redes simples como essa convergam de maneira confiável? Ou estou apenas abordando isso com a atitude errada, e você deve apenas lançar muito mais nós do que o necessário no problema e se metade deles morrer, não será considerado um grande problema?