Я учусь строить нейронные сети для регрессионных проблем. Он хорошо работает, приближаясь к линейным функциям. Настройка с 1-5-1 единицами с функциями линейной активации в скрытых и выходных слоях делает трюк и результаты быстрыми и надежными. Однако, когда я пытаюсь кормить его простые квадратичные данные (е (х) = х * х) вот что происходит:ANN: Аппроксимирующая нелинейная функция с нейронной сетью
С линейной функцией активации, он пытается соответствовать линейной функции через набор данных
И с функцией TANH она пытается установить кривую TANH через набор данных.
Это заставляет меня верить, что в настоящее время установка по своей сути не может узнать ничего, кроме линейной зависимости, так как она повторяет форму функции активации на графике. Но это может быть неверным, потому что я видел, как другие реализации прекрасно изучают кривые. Поэтому я могу делать что-то неправильно. Просьба представить ваше руководство.
О мой код
Мои веса рандомизированного (-1, 1) входы не нормированы. Набор данных подается в случайном порядке. Изменение скорости обучения или добавление слоев не сильно меняет изображение.
Я создал jsfiddle,
место, чтобы играть с этой функция:
function trainingSample(n) {
return [[n], [n]];
}
Он производит один образец обучения: массив входных векторного массива и целевой вектор массив , В этом примере он производит функцию f(x)=x
. Измените его как [[n], [n*n]]
, и у вас есть квадратичная функция.
Кнопка воспроизведения находится в верхнем правом углу, а также два ввода для ввода этих значений вручную. Если поле цели (справа) остается пустым, вы можете проверить выход сети только с помощью прямого доступа.
Существует также файл конфигурации для сети в коде, где вы можете установить скорость обучения и другие вещи. (Поиск var Config
)
, где вы применяете свои функции активации? – lejlot
В нейронах, на переднем проходе, передавая ему сумму входов. Я проверил данные учебника, передний проход работает хорошо. Очевидно, что проблема заключается в том, что BP –
предоставляет ваш код, в противном случае невозможно помочь, слишком много вещей, которые могут быть неправильными. – lejlot