Eu implementei uma rede neural (usando CUDA) com 2 camadas. (2 neurônios por camada). Estou tentando fazê-lo aprender duas funções polinomiais quadráticas simples usando a retropropagação .
Mas, em vez de convergir, é divergente (a saída está se tornando infinita)
Aqui estão mais alguns detalhes sobre o que eu tentei:
- Eu havia definido os pesos iniciais como 0, mas, como estava divergente, randomizei os pesos iniciais (Faixa: -0,5 a 0,5)
- Li que uma rede neural pode divergir se a taxa de aprendizado for muito alta, então reduzi a taxa de aprendizado para 0,000001
- As duas funções que estou tentando obter são: 3 * i + 7 * j + 9 e j * j + i * i + 24 (estou dando a camada iej como entrada)
- Eu o havia implementado como uma única camada anteriormente e isso poderia aproximar as funções polinomiais melhor do que está fazendo agora
- Estou pensando em implementar o impulso nesta rede, mas não tenho certeza se isso ajudaria a aprender
- Estou usando uma função de ativação linear (como no no)
- Há oscilação no início, mas a saída começa a divergir no momento em que qualquer um dos pesos se torna maior que 1
Eu verifiquei e verifiquei novamente meu código, mas não parece haver nenhum tipo de problema com ele.
Então, aqui está a minha pergunta: o que está acontecendo de errado aqui?
Qualquer ponteiro será apreciado.