Подтвердить что ты не робот

Почему мы должны нормализовать вход для искусственной нейронной сети?

Это принципиальный вопрос, касающийся теории нейронных сетей:

Почему мы должны нормализовать ввод для нейронной сети?

Я понимаю, что иногда, когда, например, входные значения являются не численными, необходимо выполнить определенное преобразование, но когда у нас есть числовой ввод? Почему числа должны быть в определенном интервале?

Что произойдет, если данные не будут нормализованы?

4b9b3361

Ответ 1

Он хорошо объяснил здесь.

Если входные переменные объединены линейно, как в MLP, то это редко крайне необходимо для стандартизации исходных данных, по крайней мере теоретически. причина в том, что любое масштабирование входного вектора может быть эффективно отменено изменяя соответствующие веса и предвзятости, оставляя вас с точным те же результаты, что и раньше. Тем не менее, существует множество практических причины, по которым стандартизация входных данных может ускорить обучение и уменьшить шансы застрять в локальных оптимумах. Кроме того, распад массы и байесовский оценка может быть выполнена более удобно со стандартизованными входами.

Ответ 2

В нейронных сетях хорошая идея - не только нормализовать данные, но и масштабировать их. Это предназначено для более быстрого приближения к глобальным минимумам на поверхности ошибки. См. Следующие фотографии: error surface before and after normalization

error surface before and after scaling

Картинки берутся из курс coursera о нейронных сетях. Автор course - Джеффри Хинтон.

Ответ 3

Некоторые входы в NN могут не иметь "естественного" диапазона значений. Например, среднее значение может быть медленным, но постоянно увеличиваться с течением времени (например, количество записей в базе данных).

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

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

Ответ 4

Глядя на нейронную сеть извне, это просто функция, которая принимает некоторые аргументы и дает результат. Как и со всеми функциями, он имеет домен (т.е. Набор юридических аргументов). Вы должны нормализовать значения, которые вы хотите передать в нейронную сеть, чтобы убедиться, что они находятся в домене. Как и во всех функциях, если аргументы не находятся в домене, результат не гарантируется.

Точное поведение нейронной сети на аргументах вне домена зависит от реализации нейронной сети. Но в целом результат бесполезен, если аргументы не входят в домен.

Ответ 5

Необходимость нормализации необходима, потому что если вы посмотрите, как адаптивный шаг происходит в одном месте в домене функции, и вы просто переносите проблему на эквивалент того же шага, переведенного некоторым большим значением в некоторые направление в домене, то вы получите разные результаты. Это сводится к вопросу адаптации линейной части к точке данных. Сколько стоит кусок, не поворачиваясь и сколько он должен поворачиваться в ответ на эту тренировочную точку? Нет смысла иметь измененную процедуру адаптации в разных частях домена! Поэтому для уменьшения разницы в результатах обучения требуется нормализация. У меня нет этой записи, но вы можете просто взглянуть на математику для простой линейной функции и как ее обучают по одной тренировочной точке в двух разных местах. Возможно, эта проблема была исправлена ​​в некоторых местах, но я не знаком с ними. В ALN проблема была исправлена, и я могу отправить вам документ, если вы напишете wwarmstrong AT shaw.ca

Ответ 6

Я считаю, что ответ зависит от сценария.

Рассмотрим NN (нейронную сеть) как оператор F, так что F (input) = output. В случае, когда это отношение является линейным, так что F (A * input) = A * output, вы можете либо оставить вход/выход ненормализованным в своих необработанных формах, либо нормализовать оба для устранения A. Очевидно, что это допущение о линейности нарушается в задачах классификации или почти в любой задаче, которая выдает вероятность, где F (вход A *) = 1 * output

На практике нормализация позволяет неприемлемым сетям быть пригодными, что имеет решающее значение для экспериментаторов/программистов. Тем не менее, точное влияние нормализации будет зависеть не только от архитектуры сети/алгоритма, но и от статистики, предшествующей вводу и выводу.

Что еще, NN часто реализуется для решения очень сложных проблем в режиме "черного ящика", что означает, что основная проблема может иметь очень плохую статистическую формулировку, затрудняя оценку воздействия нормализации, вызывая техническое преимущество ( становясь пригодным) доминировать над его воздействием на статистику.

В статистическом смысле нормализация устраняет вариации, которая, как полагают, не является причинно-следственной в прогнозировании вывода, с тем, чтобы NN не изучил это изменение как предиктор (NN не видит этого изменения, следовательно, не может его использовать).

Ответ 7

Скрытые слои используются в соответствии со сложностью наших данных. Если у нас есть входные данные, которые являются линейно разделяемыми, нам не нужно использовать скрытый слой, например. ИЛИ, но если у нас есть данные с нелинейно разделяемыми данными, нам нужно использовать скрытый слой, например логический логический элемент ExOR. Количество узлов, взятых на любом уровне, зависит от степени перекрестной проверки нашего вывода.