Dropout

В продолжение разговора о повышении сходимости моделей предлагаю рассмотреть метод Dropout.

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

Dropout

Dropout

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

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

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

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

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

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

где:

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

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

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

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