Как нормализовать данные для нейросети

0
22

Как нормализовать данные для нейросети

Похожие новости

Рассмотрим в сравнении методы линейной и нелинейной нормализации. Ниже приведены графики нормализации входной переменной для пределов [–1; 1]. Для нелинейной нормализации с использованием функции гиперболического тангенса принято значение параметра a = 1,0. Следует отметить, что совпадение нормализованного значения в обоих случаях имеет место лишь в точке, соответствующей центру нормализуемого интервала.

Популярной задачей является отрисовка данного изображения в стиле какой-то заданной картины, как на Рисунке [math]4[/math] . Эта задача называется «перенос стиля«. Одно из популярных и достаточно быстрых решений этой задачи использует простые нейронные сети прямого распространения. Это решение имеет недостаток: каждая сеть может переносить лишь один стиль. Если мы хотим научиться переносить [math]N[/math] стилей, то надо обучать [math]N[/math] различных сетей. Однако лишь небольшое количество параметров этих сетей отвечает за индивидуальные особенности стиля. Хотелось бы уметь переиспользовать остальные параметры.

На Рисунке [math]6[/math] изображен график, сравнивающий точно такие же модели, но с использованием сигмоиды в качестве функции активации. Такая конфигурация моделей требует большего времени, чтобы начать обучение. В итоге, модель обучается, но на это потребовалось более [math]45000[/math] итераций, чтобы получить точность более [math]80\%[/math] . При использовании пакетной нормализации получилось достичь точность более [math]90\%[/math] примерно за [math]1000[/math] итераций.

Зачем нужно делать параметры нормализации зависимостью? На практике было выяснено [3] , что иногда нейронные сети, натренированные решать разные задачи из одного класса, имеют схожие веса и достаточно лишь слегка поменять параметры сжатия и сдвига после каждого слоя. Таким образом, добавив условную нормализацию, мы научимся решать сразу несколько задач используя одну сеть.

Пакетная нормализация (англ. batch-normalization) — метод, который позволяет повысить производительность и стабилизировать работу искусственных нейронных сетей. Суть данного метода заключается в том, что некоторым слоям нейронной сети на вход подаются данные, предварительно обработанные и имеющие нулевое математическое ожидание и единичную дисперсию. Впервые данный метод был представлен в [1] .

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

В случае свёрточных сетей, дополнительно необходима нормализация, чтобы удовлетворить свойство свёрточных сетей, что различные элементы в разных местах одной карты признаков (образ операции свёртки, англ. feature map) должны быть нормализованы одинаково. Чтобы этого добиться, нормализация выполняется совместно над всеми значениями в пакете. Пусть [math]B[/math] — множество всех значений в карте признаков по всему пакету и всем точкам в карте признаков. Тогда для пакета размера [math]m[/math] и карты признаков размера [math]p \times q[/math] размер [math]B[/math] равен [math]m’=|B|=m \cdot pq[/math] . Тогда параметры [math]\gamma^[/math] и [math]\beta^[/math] настраиваются для каждой карты признаков отдельно.

ЧИТАТЬ ТАКЖЕ:  Игра где ты должен победить искусственный интеллект

В прямом направлении, как и описано в алгоритме метода, из входа [math]x[/math] вычисляется среднее значение по каждой размерности признакового пространства. Затем полученный вектор средних значение вычитается из каждого элемента обучающей выборки. Далее вычисляется дисперсия, и с помощью нее вычисляется знаменатель для нормализации. Затем полученное значение инвертируется и умножается на разницу входа [math]x[/math] и средних значений. В конце применяются параметры [math]\gamma[/math] и [math]\beta[/math] .

Описание метода

Заметим, что если [math]\beta=\mu_[/math] и [math]\gamma=\sqrt<\sigma_^ + \epsilon>[/math] , то [math]y_[/math] равен [math]x_[/math] , то есть [math]BN_<\gamma, \beta>(\cdot)[/math] является тождественным отображением. Таким образом, использование пакетной нормализации не может привести к снижению точности, поскольку оптимизатор просто может использовать нормализацию как тождественное отображение.

Рисунок [math]2[/math] . Граф вычислений слоя пакетной нормализации алгоритмом обратного распространения ошибки. Слева-направо черными стрелками показана работа алгоритма в прямом направлении. А справа-налево красными стрелками — в обратном направлении, где вычисляется градиент функции потерь. Здесь [math]N=m[/math] и [math]D=d[/math] . Иллюстрация из статьи.

Также существует «золотая середина» между стохастическим градиентным спуском и пакетным градиентным спуском — когда просматривается только некоторое подмножество обучающей выборки фиксированного размера (англ. batch-size). В таком случае такие подмножества принято называть мини-пакетом (англ. mini-batch). Здесь и далее, мини-пакеты будем также называть пакетом.

Нормализация входного слоя нейронной сети обычно выполняется путем масштабирования данных, подаваемых в функции активации. Например, когда есть признаки со значениями от [math]0[/math] до [math]1[/math] и некоторые признаки со значениями от [math]1[/math] до [math]1000[/math] , то их необходимо нормализовать, чтобы ускорить обучение. Нормализацию данных можно выполнить и в скрытых слоях нейронных сетей, что и делает метод пакетной нормализации.

где математическое ожидание и дисперсия считаются по всей обучающей выборке. Такая нормализация входа слоя нейронной сети может изменить представление данных в слое. Чтобы избежать данной проблемы, вводятся два параметра сжатия и сдвига нормализованной величины для каждого [math]x^[/math] : [math]\gamma^[/math] , [math]\beta^[/math] — которые действуют следующим образом:

Приведем пример демонстрирующий работу пакетной нормализации. Рассмотрим задачу распознавания рукописных цифр на известном датасете MNIST [5] . Для решения задачи будет использоваться обычная нейронная сеть с [math]3[/math] скрытыми полносвязными слоями по [math]100[/math] узлов в каждом. Функция активации — ReLU. Выходной слой содержит [math]10[/math] узлов. Размер пакета равен [math]60[/math] . Сравниваются две одинаковые модели, но в первой перед каждым скрытым слоем используется пакетная нормализация, а во второй — нет. Темп обучения равен [math]0.01[/math] . Веса инициализированы значениями с малой дисперсией.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь