Нормализация и стандартизация данных в нейронных сетях


40

Я пытаюсь предсказать результат сложной системы, используя нейронные сети (ИНС). Исходные (зависимые) значения находятся в диапазоне от 0 до 10000. Разные входные переменные имеют разные диапазоны. Все переменные имеют примерно нормальное распределение.

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

Другим вариантом является использование z-показателя. В этом случае у меня нет крайней проблемы с данными; однако я ограничен линейной функцией активации на выходе.

Каковы другие принятые методы нормализации, которые используются с ANN? Я пытался искать отзывы на эту тему, но не нашел ничего полезного.


Иногда используется нормализация Z-показателей, но у меня странное чувство, что это может быть другое название ответа Байера?
osknows

То же самое, за исключением отбеливающей части.
Bayerj

1
Если вы прогнозируете значение (как вы есть), а не вероятность (т.е. регрессия, а не классификация), вы всегда должны использовать функцию линейного вывода.
seanv507

Ранг-Гаусс Майкл Ярер . Это ранг, тогда сделайте это гауссовским.
user3226167

Ответы:


32

Стандартный подход заключается в том, чтобы масштабировать входные данные так, чтобы они имели среднее значение 0 и дисперсию 1. Также очень помогает линейная декорреляция / отбеливание / pca.

Если вы заинтересованы в хитростях этой профессии, я могу порекомендовать вам эффективную бумагу для обратного пропуска LeCun.


1
Конечно, никогда не следует пытаться слепо нормализовать данные, если данные не соответствуют (одному) нормальному распределению. stats.stackexchange.com/a/816/4581
user4581

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

Я довольно смущен. Эта ссылка ( machinelearningmastery.com/… ) говорит о том, что стандартизация полезна, когда используемый вами алгоритм делает предположения о том, что ваши данные имеют гауссово распределение (не в случае NN). В противном случае он говорит, что вы должны использовать нормализацию. Может ли кто-нибудь просветить меня?
ihebiheb

21

1- Мин-макс нормализация сохраняет исходное распределение баллов за исключением коэффициента масштабирования и преобразует все баллы в общий диапазон [0, 1]. Однако этот метод не является надежным (т. Е. Метод очень чувствителен к выбросам.

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

3- Медиана и MAD: Медиана и медиана абсолютного отклонения (MAD) нечувствительны к выбросам и точкам в крайних хвостах распределения. поэтому это надежно. Однако этот метод не сохраняет входное распределение и не преобразует оценки в общий числовой диапазон.

4-оценки тана: оценки тана, представленные Hampel et al. надежны и высокоэффективны. Нормализация дается

оценки Тан где µGH и σGH - это оценки среднего и стандартного отклонения, соответственно, истинного распределения баллов, как это дано оценщиками Hampel.

Поэтому я рекомендую tanh-оценки.

ссылка https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt


Мне трудно найти информацию об этой оценке Тан. Может кто-нибудь пролить некоторый свет на это?
Бен Огорек

Наконец нашел документ, который хорошо описывает характеристики оценки Тан для нормализации: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . Они не кажутся жизнеспособными в качестве варианта нормализации общего назначения. «[Оценки Таня] гораздо сложнее вычислить, по сравнению с адаптивными z-показателями ... Конечные точки для трех различных интервалов от среднего значения распределения должны быть определены специальным образом. Эти параметры могут быть трудными определить экспериментально, и, если он выбран неправильно, ограничить эффективность оценки tanh. "
Бен Огорек

8

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

Существует отличный ресурс usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html.

В простых сроках приводятся некоторые проблемы и соображения, когда нужно нормализовать / стандартизировать / изменить масштаб данных. Поскольку он рассматривает предмет с точки зрения машинного обучения, и поскольку ваш вопрос касается ML, он может иметь некоторое отношение.


Вы должны написать основные пункты каждой ссылки здесь, так что никакой дополнительной «навигации» не требуется
leoschet

2

Вы могли бы сделать

  • нормализация min-max (нормализуйте входы / цели, чтобы они попадали в диапазон [−1,1]), или
  • нормализация среднего стандартного отклонения (нормализовать входные / целевые значения, чтобы получить нулевое среднее и единичную дисперсию / стандартное отклонение)

1

Если вы работаете python, sklearnесть метод для этого, использующий различные методы в своем preprocessingмодуле (плюс отличная функция конвейера, с примером в их документах):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)

0

Ну, [0,1] это стандартный подход. Для нейронных сетей лучше всего работает в диапазоне 0-1. Минимальное-максимальное масштабирование (или нормализация) - подход, которому нужно следовать.

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

Формула MinMax - (xi - min(x)) / (max(x) - min(x)) или можно использоватьsklearn.preprocessing.MinMaxScaler


-1

«Принято» - это то, что работает лучше для вас - тогда вы принимаете это.

По моему опыту, подгонка распределения из семейства распределений Джонсона к каждой из непрерывных функций работает хорошо, потому что распределения очень гибкие и могут преобразовать большинство одномодальных функций в стандартные нормальные распределения. Это также поможет с мультимодальными функциями, но суть в том, что они обычно помещают функции в наиболее желательную форму (стандартные данные с гауссовским распределением идеальны для работы - они совместимы, а иногда и оптимальны для большинства доступен статистический метод / метод ML).

http://qualityamerica.com/LSS-Knowledge-Center/statisticalinference/johnson_distributions.php

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.