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