ДЕКЛАРАЦИЯ: Большинство примечаний взяты из книги Майкла Нильсена Улучшение способа обучения нейронных сетей.

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

Каждая эвристика - это не просто (потенциальное) объяснение, это также проблема, которую необходимо изучить и понять более подробно.

Общее руководство

  1. Если данные обучения и тестирования имеют несоответствующее распределение, убедитесь, что ваши данные проверки и тестирования имеют одинаковое распределение.
  2. Имеет ли модель высокую систематическую ошибку (и / или высокую дисперсию) - понятие относительное, это зависит от того, какого рода предвзятость можно ожидать от человека или от базовой модели.
  3. Компромисс между смещением и дисперсией может быть неприменим к глубокому обучению. Более крупная сеть может снизить систематическую ошибку, не внося значительных отклонений, большее количество данных может уменьшить дисперсию без особого ущерба для систематической ошибки.

Первая цель

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

  • Попробуйте разделить исходную проблему на более простую, например вместо того, чтобы классифицировать 10 цифр, попробуйте сначала классифицировать 0 и 1
  • Попробуйте сократить свою сеть до самой простой, которая может дать значимое обучение
  • Увеличьте частоту проверки точности проверки, например каждые 1000 изображений
  • Уменьшите размер проверки. Важно только то, что сеть видит достаточно изображений для реального обучения и получения довольно хорошей приблизительной оценки производительности.
  • Мы можем продолжить, индивидуально настраивая каждый гиперпараметр, постепенно улучшая производительность.
    Например, мы можем сначала найти хорошее значение скорости обучения η, а затем перейдем к поиску хорошего значения для параметра регуляризации (или уменьшения веса) λ. Затем поэкспериментируйте с более сложной архитектурой, скажем, с сетью с 10 скрытыми нейронами. И вы снова повторяете упражнение.

Настройка скорости обучения η

  • Скорость обучения, пожалуй, самый важный гиперпараметр. Если у вас есть время настроить только один гиперпараметр, настройте скорость обучения.
  • График затрат на данные обучения (или точность проверки) в зависимости от эпохи со скоростью обучения в качестве управляющего параметра, т.е. одна кривая на скорость обучения
  • Во-первых, мы оцениваем пороговое значение скорости обучения, при котором стоимость обучающих данных сразу начинает уменьшаться, а не колебаться или увеличиваться (вам может потребоваться больше эпох для каждой скорости обучения)
    Вы можете оценить порядок величины, начиная с η = 0,01. Если стоимость снижается в течение первых нескольких эпох, вам следует последовательно пробовать η = 0,1,1,0,… до тех пор, пока вы не найдете значение для η, при котором стоимость колеблется или увеличивается в течение нескольких первых эпох.
  • Очевидно, что фактическое значение η, которое вы используете, не должно быть больше порогового значения. Фактически, если значение η должно оставаться пригодным для использования в течение многих эпох, вы, вероятно, захотите использовать значение η, которое меньше, скажем, вдвое ниже порогового значения. Такой выбор обычно позволяет вам тренироваться в течение многих эпох, не вызывая слишком большого замедления обучения.
  • Попробуйте динамическую скорость обучения. Используйте более высокую скорость обучения в начале обучения и снижайте ее на более поздних этапах. (Глубокие, большие, простые нейронные сети Excel для распознавания рукописных цифр, Дэн Клаудиу Чиреган, Ули Мейер, Лука Мария Гамбарделла и Юрген Шмидхубер, 2010 г.)

Настройка параметра регуляризации (уменьшение веса) λ

  • Начните без регуляризации (λ = 0,0) и определите значение скорости обучения η, как указано выше. Используя этот выбор η, мы можем затем использовать данные проверки, чтобы выбрать хорошее значение для λ. Начните с проверки λ = 1,0, а затем увеличьте или уменьшите в 10 раз, если необходимо, чтобы улучшить производительность данных проверки.

Настройка размера мини-партии

  • Может быть быстрее использовать каждый раз мини-пакет большего размера, чем просто одну выборку (онлайн-обучение). Но меньший размер пакета позволяет чаще обновлять вес.
  • Поскольку максимальный размер пакета ограничен памятью, мы можем использовать некоторые приемлемые (но не обязательно оптимальные) значения для других гиперпараметров, а затем опробовать несколько различных размеров мини-пакетов (не забудьте соответствующим образом масштабировать скорость обучения). Постройте график зависимости точности проверки от времени (например, реального прошедшего времени, а не эпохи!) И выберите тот размер мини-пакета, который даст вам наиболее быстрое улучшение производительности.

Эпохи обучения тюнингу

  • Мы можем использовать раннюю остановку, чтобы определить количество эпох обучения. Таким образом, нам не нужно настраивать количество эпох. Обратите внимание: возможно, вы не захотите немедленно останавливаться, когда точность упадет, но подождите, когда точность не улучшится в течение некоторого времени, чтобы выйти за пределы плато точности.

Другие параметры / переменные для настройки

  • Используйте разные функции затрат
  • Попробуйте разные методы регуляризации: L1, L2 и т. Д.
  • Инициализировать веса по-другому
  • Примените различные методы стохастического градиентного спуска
    Градиентный спуск на основе импульса или Aadm
  • Попробуйте технику Гессе или оптимизацию Гессе вместо простого использования градиента
  • Попробуйте разные функции активации

Стратегии настройки гиперпараметров

Попробуйте случайные значения гиперпараметров, не используйте сетку

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

Использовать процесс поиска от грубого к точному

Используйте соответствующий масштаб для выбора гиперпараметров

Пример: для поиска скорости обучения от 0,0001 до 1, если вы выбираете значения с использованием случайной формы, 90% ваших значений будут находиться в диапазоне от 0,1 до 1. Так что лучше выбирать значения в логарифмической шкале. Это тот случай, если сеть чувствительна к значениям параметра в узком диапазоне.

Периодически проверяйте гиперпараметры

Ссылка: