Я реализовал нейронную сеть (с использованием CUDA) с двумя слоями. (2 нейрона на слой). Я пытаюсь заставить его изучить 2 простые квадратичные полиномиальные функции, используя обратное распространение.
Но вместо того, чтобы сходится, он расходится (выход становится бесконечным)
Вот еще некоторые подробности о том, что я пробовал:
- Я установил начальные веса равными 0, но, поскольку они расходились, я рандомизировал начальные веса.
- Я читал, что нейронная сеть может расходиться, если скорость обучения слишком высока, поэтому я уменьшил скорость обучения до 0,000001.
- Я пытаюсь добавить две функции:
3 * i + 7 * j+9
иj*j + i*i + 24
(я даю слойi
иj
в качестве входных данных) - Ранее я реализовал его как один слой, и это могло бы лучше аппроксимировать полиномиальные функции.
- Я думаю о внедрении импульса в эту сеть, но я не уверен, что это поможет ей научиться
- Я использую линейную (как нет) функцию активации
- В начале есть колебания, но выход начинает расходиться в тот момент, когда любой из весов становится больше 1.
Я проверил и перепроверил свой код, но, похоже, с ним нет никаких проблем.
Итак, вот мой вопрос: что здесь происходит не так?
Любой указатель будет оценен.