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

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

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

В качестве альтернативы можно найти оптимальные гиперзначения параметров программно путем вызова bayesopt функция. Для получения дополнительной информации смотрите, что Глубокое обучение Использует Байесовую Оптимизацию.

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

Во-первых, откройте пример. Experiment Manager загружает проект с предварительно сконфигурированным экспериментом, который можно смотреть и запустить. Чтобы открыть эксперимент, в панели Браузера Эксперимента, дважды кликают имя эксперимента (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.

Раздел Hyperparameters задает стратегию (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, нажимают Edit. Функция настройки открывается в Редакторе MATLAB®.

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

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

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

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

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

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

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, чтобы Обучить нейронные сети параллельно.

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

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

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

Оцените результаты

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

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

Чтобы выполнить дополнительные расчеты, экспортируйте обучивший сеть в рабочую область. На панели инструментов Experiment Manager нажмите Export. В диалоговом окне введите имя переменной рабочей области для экспортируемой сети. Именем по умолчанию является trainedNetwork.

Используйте экспортируемую сеть в качестве входа к функции помощника testSummary. Эта функция оценивает сеть несколькими способами:

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

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

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

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

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

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

В панели Браузера Эксперимента щелкните правой кнопкой по имени проекта и выберите Close Project. Experiment Manager закрывает все эксперименты и результаты, содержавшиеся в проекте.

Смотрите также

| (Statistics and Machine Learning Toolbox) | (Statistics and Machine Learning Toolbox)

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте