exponenta event banner

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

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

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

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

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

Сначала откройте пример. Диспетчер экспериментов загружает проект с предварительно настроенным экспериментом, который можно проверить и запустить. Чтобы открыть эксперимент, в панели «Обозреватель экспериментов» дважды щелкните имя эксперимента (BayesOptExperiment).

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

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

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 и позитивно. Гиперпараметр искали и моделировали в логарифмическом масштабе.

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

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

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

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

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

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

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

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

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

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

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

В разделе «Метрики» указаны дополнительные функции, позволяющие оценить результаты эксперимента. Experiment Manager оценивает эти функции каждый раз, когда он заканчивает обучение сети. Чтобы проверить метрическую функцию, выберите имя метрической функции и нажмите кнопку Изменить. Функция метрики открывается в редакторе 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 запускает по одной пробной версии. При наличии Toolbox™ Parallel Computing можно выполнять несколько пробных версий одновременно. Чтобы получить наилучшие результаты, перед запуском эксперимента запустите параллельный пул с таким количеством работников, как GPU. Дополнительные сведения см. в разделе Использование диспетчера экспериментов для обучения сетей параллельной поддержке и поддержке графического процессора по выпуску (панель инструментов параллельных вычислений).

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

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

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

Чтобы определить пробную версию, которая оптимизирует выбранную метрику, Диспетчер экспериментов использует критерий наилучшей точки 'min-observed'. Дополнительные сведения см. в разделах Алгоритм байесовской оптимизации (статистика и инструментарий машинного обучения) и bestPoint (Статистика и инструментарий машинного обучения).

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

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

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

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

  1. На панели инструментов Диспетчера экспериментов щелкните Экспорт (Export).

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

  3. Использовать экспортированную сеть в качестве входных данных для вспомогательной функции 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. На панели Аннотации (Annotations) введите данные наблюдений в текстовое поле.

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

Близкий эксперимент

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

См. также

Приложения

Функции

  • | | (инструментарий для статистики и машинного обучения) | (Панель инструментов для статистики и машинного обучения) | (Набор инструментов для статистики и машинного обучения)

Связанные темы