1

я в настоящее время пытается придумать с новой структурой для CLDNN (Сверточное, LSTM, Deep Neural Network)Оптимизировать гиперпараметры для глубокой сети

Так же, как любой другой сети, я имею трудное время оптимизации гипер- параметры.

Я хотел бы попробовать поиск сетки и случайный поиск, чтобы получить оптимальный набор гиперпараметров, но я не совсем понимаю некоторые вещи.

  1. Если я запускаю моделирование сети с временным набором гиперпараметров, как измерить «Совершенство» гиперпараметров? Я думал о записи стоимости и точности обучения после N числа эпох для каждого моделирования.

  2. Поскольку каждая симуляция занимает относительно много времени (для моей сети требуется около 70 секунд для обучения в течение одной эпохи), существует ли более быстрый способ проверить «доброту» гиперпараметров без фактического прохождения полного обучения?

  3. Есть ли общий совет/советы по оптимизации гиперпараметров?

ответ

1
  1. Так в основном - для того, чтобы измерить производительность в различных гиперпараметрах - лучшая практика для смоделировать процесс подготовки окончательного классификатора на тренировочные данных для каждой установки параметров - а затем сравните результаты с уважения к мерам, которые вы хотите сделать с гипероптимизацией.
  2. Если вы изменили процесс обучения (например, установив фиксированную скорость эпох во время фазы гипероптимизации, а затем установив другую в окончательном обучении), вы не должны ожидать, что результат, полученный на нескольких этапах тестирования, будет обобщен. По-моему, это может нанести вред вашему процессу оптимизации, особенно для того, чтобы некоторые настройки гиперпараметров нуждались в большем количестве времени, чтобы фактически получить хорошие результаты (например, когда вы устанавливаете действительно высокий уровень отсева), а сокращение времени тренировки при выборе наилучшего значения может привести к созданию гиперпараметров, которые дают лучший результат на более ранней стадии обучения более благоприятный.
  3. Надлежащая практика ?:
    • выбрать random search, не поиск сетки. Обычно ваша обучающая сеть менее чувствительна к некоторым параметрам, поэтому полный поиск сетки - это потеря времени,
    • Если вы хотите попробовать более сложные методы, вы можете попробовать более сложные методы, например. bayessian hyperoptimization,
    • используйте перекрестное подтверждение или запустите свою сеть с заданной настройкой гиперпараметра несколько раз. Это связано с тем, что нейронные сети могут быть чувствительны к стартовым весам - поэтому данные оценки могут не хорошо обобщаться,
    • распараллеливать процесс обучения. Попробуйте запустить процесс обучения, например. на разных машинах, а затем просто объединить результаты.
+0

Благодарим за подробный ответ! Я предполагаю, что нет ярлыка вокруг гипероптимизации? Возможно, мне придется запустить оптимизацию на целую неделю. –

Смежные вопросы