Dropout

Продолжаем изучение методов повышения сходимости нейронных сетей. Рассмотрим технологию Dropout.

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

Для борьбы со сложной совместной адаптацией признаков, в июле 2012 года группа ученных из университета Торонто в работе Improving neural networks by preventing co-adaptation of feature detectors предложила случайным образом исключать часть нейронов в процессе обучения. Снижение количества признаков при обучении повышает значимость каждого, а постоянное изменение количественного и качественного состава признаков снижает риск их совместной адаптации. Такой метод получил название Dropout.

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

В то же время в процессе эксплуатации нейронной сети оцениваются все признаки и нейроны. Тем самым мы получаем максимально точную и независимую оценку текущего состояния изучаемой среды.

Авторы решения в своей статье указывают на возможность использования метода и для повышения качества предварительно обученных моделей.

Модель реализации Dropout для перцептрона с 2-мя скытыми слоями

Модель реализации Dropout для перцептрона с двумя скрытыми слоями

Описывая предложенное решение с точки зрения математики, можно сказать, что каждый отдельный нейрон выкидывается из процесса с некой заданной вероятностью P. Получается, нейрон будет участвовать в процессе обучения нейронной сети с вероятностью q=1–P.

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

Однако исключение анализируемых признаков несомненно ведет к снижению суммы на входе функции активация нейрона. Для компенсации этого эффекта умножим значение каждого признака на коэффициент 1/q. Легко заметить, что данный коэффициент будет увеличивать значения, так как вероятность q всегда будет в диапазоне от 0 до 1.

где:

  • Di — элементы вектора результатов Dropout;
  • q — вероятность использования нейрона в процессе обучения;
  • mi — элемент вектора маскирования;
  • xi — элементы вектора входной последовательности.

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

В процессе эксплуатации нейронной сети вектор маскирования заполняется единицами, что позволяет значениям беспрепятственно передаваться в обоих направлениях.

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