He implementado una red neuronal (usando CUDA) con 2 capas. (2 neuronas por capa). Estoy tratando de hacer que aprenda 2 funciones polinómicas cuadráticas simples usando la propagación hacia atrás .
Pero en lugar de converger, es divergente (la salida se está convirtiendo en infinito)
Aquí hay más detalles sobre lo que he probado:
- Había establecido los pesos iniciales en 0, pero como era divergente, aleatoricé los pesos iniciales (Rango: -0.5 a 0.5)
- Leí que una red neuronal podría divergir si la tasa de aprendizaje es demasiado alta, así que reduje la tasa de aprendizaje a 0.000001
- Las dos funciones que estoy tratando de agregar son: 3 * i + 7 * j + 9 y j * j + i * i + 24 (estoy dando la capa i y j como entrada)
- Lo había implementado como una sola capa anteriormente y eso podría aproximar las funciones polinómicas mejor de lo que lo está haciendo ahora
- Estoy pensando en implementar el impulso en esta red, pero no estoy seguro de que pueda ayudarlo a aprender
- Estoy usando una función de activación lineal (como en no)
- Hay una oscilación al principio, pero la salida comienza a divergir en el momento en que cualquiera de los pesos se vuelve mayor que 1
He comprobado y vuelto a comprobar mi código, pero no parece haber ningún tipo de problema con él.
Así que aquí está mi pregunta: ¿qué está mal aquí?
Cualquier puntero será apreciado.