Backprop и прямой проход в нейронных сетях - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь создать простую нейронную сеть, но сталкиваюсь с некоторыми проблемами.Мой вывод продолжает сходиться к 0,5, когда я использую ReLU, и к 0,7, когда я использую сигмовидную функцию.Пожалуйста, предложите мне:

  1. Есть ли другой способ инициализации весов и смещений?Я инициализирую его случайным образом.

  2. Нужно ли выполнять backprop после каждого прямого прохода, или я должен брать средние ошибки оп и обновлять его в конце эпохи?

  3. Нужно ли использовать смещения во входном слое?

Я новичок в нейронных сетях.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 15 мая 2018

Есть ли другой способ инициализации весов и смещений? Я инициализирую это случайно.

Да, обычно инициализировать веса случайным образом. Однако существуют разные методы выбора дисперсии, например, Инициализация Ксавье, инициализация Хе и т. Д. (См. это обсуждение ).

Это немного по-другому для предубеждений. В отличие от весов, вполне нормально начинать их с нулей. В сетях на основе ReLu обычно используются слегка положительные числа, чтобы убедиться, что большинство активаций положительные, по крайней мере, на начальном этапе, и обратное распространение ошибки. Но случайная инициализация обычно тоже работает.

Нужно ли выполнять backprop после каждого прямого прохода, или я должен брать средние ошибки оп и обновлять его в конце эпохи?

В классическом алгоритме да. Идея состоит в том, чтобы оценивать и обновлять сеть итеративно. Но вы можете выполнять обе операции для мини-пакета, а не для отдельных экземпляров, если это то, что вы описываете, и это работает более эффективно. Но нередко делать несколько проходов вперед перед одним проходом назад, это только замедлит тренировку.

Нужно ли использовать смещения во входном слое?

Смещения появляются в линейном слое вместе с весами. Сами данные передаются на первый уровень без смещения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...