Вес нейронной сети слишком велик? - PullRequest
0 голосов
/ 09 марта 2019

Я внедряю нейронную сеть с обратным распространением.Веса инициализируются до (-0,5, 0,5).Однако после первой отправки входных данных, ошибок и распространения обратно весовые коэффициенты увеличиваются примерно до 1000, иногда даже 2000. (между входным слоем и скрытым слоем)

Топология сетисостоит из 3 слоев: 1 входной слой, 1 скрытый слой и 1 выходной слой.Входной слой имеет 95 узлов, скрытый слой имеет 3 узла, а выходной слой имеет 2 узла.Набор обучающих данных содержит 40000 записей, они нормализованы по их z-показателям.

После просмотра таких больших чисел я усомнился в своей реализации, но с другой стороны, при скорости обучения, установленной на 1 при первом распространении, если каждыйвход имеет около (выход * ошибка) = 0,25, что является разумным, тогда изменение веса примерно на 1000 кажется правдоподобным.

В любом случае, веса в нейронной сети предполагаются такими высокими?

Грэкиас

1 Ответ

0 голосов
/ 09 марта 2019

Высокое значение не обязательно плохо.Вес может быть очень высоким или очень низким.Они даже могут быть равны нулю!

Допустим, у вас есть два класса: A & B

Входные данные для классов A обычно всегда около 0.00001.Значения для классов B одинаковы, но некоторые входные значения составляют около 0.001.

Вход для узла: w * x

A) 0.00001 * 1000 = 0.001
B) 0.001 * 1000 = 1

Когда вы подаете выходные данные, подобные A, в сигмоид (ваша функция активации), вы достаточно близко получаете нулевой результат.Сигнал умирает.

Но для выходов типа B, входящих в сигмовидную функцию, вы получаете большее значение (неуверенно, но, вероятно, около 1).Таким образом, сигнал распространяется вперед.

Значения ваших весов зависят от многих вещей:

  • данные
  • решаемая проблема
  • Ваша функция активации выбирает
  • количество нейронов в каждом слое
  • количество слоев
  • значение других весов!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...