Настройка гиперпараметров эксперимента с помощью байесовской оптимизации

Этот пример показывает, как использовать байесовскую оптимизацию в Experiment Manager, чтобы найти оптимальные сетевые гиперпараметры и опции обучения для сверточных нейронных сетей. Байесовская оптимизация предоставляет альтернативную стратегию для протаскивания гиперпараметров в эксперименте. Вы задаете область значений значений для каждого гиперпараметра и выбираете метрику для оптимизации, и Experiment Manager ищет комбинацию гиперпараметров, которая оптимизирует выбранную метрику. Для байесовской оптимизации требуются Statistics and Machine Learning Toolbox™.

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

Также можно программно найти оптимальные значения гиперзначений параметров, вызвав bayesopt функция. Для получения дополнительной информации см. «Глубокое обучение с использованием байесовской оптимизации».

Открытый эксперимент

Сначала откройте пример. Experiment Manager загружает проект с помощью предварительно сконфигурированного эксперимента, который можно просмотреть и запустить. Чтобы открыть эксперимент, в панели Experiment Browser дважды кликните имя эксперимента (BayesOptExperiment).

Встроенные обучающие эксперименты состоят из описания, таблицы гиперпараметров, функции настройки и набора метрических функций для оценки результатов эксперимента. Эксперименты, которые используют байесовскую оптимизацию, включают дополнительные опции для ограничения длительности эксперимента. Для получения дополнительной информации см. раздел «Настройка встроенного обучающего эксперимента».

Поле Description содержит текстовое описание эксперимента. В данном примере описанием является:

Find optimal hyperparameters and training options for convolutional neural network.
Hyperparamters determine the network section depth, initial learning rate,
stochastic gradient descent momentum, and L2 regularization strength.

Раздел «Гиперпараметров» задает стратегию (Bayesian Optimization) и опции гиперпараметра для использования в эксперименте. Для каждого гиперпараметра задайте следующие опции:

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

  • Тип - Выбор real (гиперпараметр реального значения), integer (гиперпараметр с целым числом), или categorical (категориальный гиперпараметр).

  • Преобразование - Выбор none (без преобразования) или log (логарифмическое преобразование). Для log, гиперпараметр должен быть real или integer и положительный. Гиперпараметр ищется и моделируется на логарифмической шкале.

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

  • SectionDepth - Этот параметр управляет глубиной сети. Общее количество слоев в сети 9*SectionDepth+7. В функции настройки эксперимента количество сверточных фильтров в каждом слое пропорционально 1/sqrt(SectionDepth)таким образом, количество параметров и необходимый объем расчетов для каждой итерации примерно одинаковы для различных глубин сечения.

  • InitialLearnRate - Лучшая скорость обучения может зависеть от ваших данных, а также от сети, которую вы обучаете.

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

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

В разделе Опций оптимизации Байеса можно задать длительность эксперимента, введя максимальное время (в секундах) и максимальное количество испытаний для запуска. Чтобы наилучшим образом использовать степень байесовской оптимизации, вы должны выполнить не менее 30 вычислений целевой функции.

Функция Setup настраивает обучающие данные, сетевую архитектуру и опции обучения для эксперимента. Чтобы просмотреть функцию настройки, в разделе Setup Function, нажмите Edit. Функция настройки откроется в MATLAB ® Editor.

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

  • Загрузка обучающих данных загружает и извлекает изображения и метки из CIFAR-10 набора данных. Набор данных составляет около 175 МБ. В зависимости от вашего подключения к Интернету процесс загрузки может занять некоторое время. Для обучающих данных в этом примере создается augmentedImageDatastore путем применения случайных перемещений и горизонтальных отражений. Увеличение количества данных помогает предотвратить сверхподбор кривой сети и запоминание точных деталей обучающих изображений. Чтобы включить валидацию сети, в примере используются 5000 изображений без увеличения. Дополнительные сведения об этом наборе данных см. в разделе Наборы данных изображений.

  • Define Network Architecture определяет архитектуру сверточной нейронной сети для классификации глубокого обучения. В этом примере сеть для обучения имеет три секции, каждый с SectionDepth идентичные сверточные слои. Каждый сверточный слой сопровождается слоем нормализации партии . и слоем ReLU. Сверточные слои добавили заполнение так, чтобы их пространственный выходной размер всегда совпадал с размером входа. Между сечениями максимальное объединение слоев понижает пространственные размерности в два раза. Чтобы гарантировать, что количество расчетов, требуемых в каждом сверточном слое, примерно одинаковое, количество фильтров увеличивается в два раза от одной секции к следующей. Количество фильтров в каждом сверточном слое пропорционально 1/sqrt(SectionDepth), так что сети различной глубины имеют примерно одинаковое количество параметров и требуют примерно одинакового количества расчета на итерацию.

  • Задайте опции обучения задает trainingOptions объект для эксперимента с использованием значений для опций обучения 'InitialLearnRate', 'Momentum', и 'L2Regularization' сгенерирован байесовским алгоритмом оптимизации. Пример обучает сеть для фиксированного количества эпох, проверяя один раз в эпоху и снижая скорость обучения в 10 раз в течение последних эпох, чтобы уменьшить шум обновлений параметра и позволить параметрам сети установиться ближе к минимуму функции потерь.

Раздел Metrics задает дополнительные функции, которые оценивают результаты эксперимента. Experiment Manager оценивает эти функции каждый раз, когда завершает обучение сети. Чтобы просмотреть метрическую функцию, выберите имя метрической функции и нажмите Edit. Метрическая функция открывается в РЕДАКТОРА MATLAB.

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

function metricOutput = ErrorRate(trialInfo)
datadir = tempdir;
[~,~,XTest,YTest] = loadCIFARData(datadir);
idx = randperm(numel(YTest),5000);
XTest = XTest(:,:,:,idx);
YTest = YTest(idx);
YPredicted = classify(trialInfo.trainedNetwork,XTest);
metricOutput = 1 - mean(YPredicted == YTest);
end

Поля Optimize и Direction указывают метрику, которую использует алгоритм оптимизации Байеса в качестве целевой функции. Для этого эксперимента Experiment Manager стремится минимизировать значение ErrorRate метрический.

Запуск эксперимента

Когда вы запускаете эксперимент, Experiment Manager ищет лучшую комбинацию гиперпараметров относительно выбранной метрики. Каждое испытание в эксперименте использует новую комбинацию значений гиперзначений параметров на основе результатов предыдущих испытаний. По умолчанию Experiment Manager запускает по одной пробной версии за раз. Если у вас есть Parallel Computing Toolbox™, можно запустить несколько испытаний одновременно. Для достижения наилучших результатов, прежде чем вы запустите свой эксперимент, запустите параллельный пул с таким количеством работников, как графические процессоры. Для получения дополнительной информации смотрите Использование Experiment Manager для обучения сетей в параллельных и графический процессор поддержке по Релизу (Parallel Computing Toolbox).

  • Чтобы запустить по одной пробной версии эксперимента за раз, на панели инструментов Experiment Manager нажмите кнопку Запустить.

  • Чтобы запустить несколько испытаний одновременно, щелкните Использовать Параллель (Use Parallel) и затем Запуск. Если текущий параллельный пул отсутствует, Experiment Manager запускает его с помощью профиля кластера по умолчанию. Затем Experiment Manager выполняет несколько одновременных испытаний, в зависимости от количества доступных параллельных работников.

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

Чтобы определить пробную версию, которая оптимизирует выбранную метрику, Experiment Manager использует лучший критерий точки 'min-observed'. Для получения дополнительной информации см. Bayesian Optimization Algorithm (Statistics and Machine Learning Toolbox) и bestPoint (Statistics and Machine Learning Toolbox).

Оценка результатов

Чтобы протестировать лучшее испытание в вашем эксперименте, сначала выберите строку в таблице результатов с самой низкой частотой ошибок.

Чтобы отобразить матрицу неточностей для выбранной пробной версии, нажмите Confusion Matrix.

Чтобы выполнить дополнительные расчеты, экспортируйте обученную сеть в рабочую область.

  1. На панели инструментов Experiment Manager нажмите кнопку Экспорт.

  2. В диалоговом окне введите имя переменной рабочей области для экспортированной сети. Имя по умолчанию trainedNetwork.

  3. Используйте экспортированную сеть как вход в функцию helper testSummary. Для образца в Командном Окне MATLAB введите:

testSummary(trainedNetwork)

Эта функция оценивает сеть несколькими способами:

  • Он предсказывает метки всего тестового набора и вычисляет ошибку тестирования. Поскольку Experiment Manager определяет лучшую сеть, не подвергая сеть воздействию всего тестового набора, ошибка тестирования может быть выше, чем значение пользовательской метрики ErrorRate.

  • Он вычисляет стандартную ошибку (testErrorSE) и приблизительно 95% доверительный интервал (testError95CI) частоты обобщения ошибки путем обработки классификации каждого изображения в тестовом наборе как независимого события с определенной вероятностью успеха. Используя это предположение, количество неправильно классифицированных изображений следует биномиальному распределению. Этот метод часто называют методом Вальда.

  • Он отображает некоторые тестовые изображения вместе с их предсказанными классами и вероятностями этих классов.

Функция отображает сводные данные этих статистических данных в Командном окне MATLAB.

******************************************
Test error rate: 0.1801
Standard error: 0.0038
95% confidence interval: [0.1726, 0.1876]
******************************************

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

  1. В таблице результатов щелкните правой кнопкой мыши камеру ErrorRate лучшей пробы.

  2. Выберите «Добавить аннотацию».

  3. На панели аннотации введите свои наблюдения в текстовое поле.

Для получения дополнительной информации см. Раздел «Сортировка, фильтрация и аннотация результатов эксперимента».

Закройте эксперимент

На панели браузера экспериментов щелкните правой кнопкой мыши имя проекта и выберите «Закрыть проект». Experiment Manager закрывает все эксперименты и результаты, содержащиеся в проекте.

См. также

Приложения

Функции

Похожие темы