Это принципиальный вопрос, касающийся теории нейронных сетей:
Почему мы должны нормализовать ввод для нейронной сети?
Я понимаю, что иногда, когда, например, входные значения являются не численными, необходимо выполнить определенное преобразование, но когда у нас есть числовой ввод? Почему числа должны быть в определенном интервале?
Что произойдет, если данные не будут нормализованы?
Ответ 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.
Количество узлов, взятых на любом уровне, зависит от степени перекрестной проверки нашего вывода.