exponenta event banner

Оценка экспериментов глубокого обучения с помощью метрических функций

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

  • Проверьте производительность прогнозирования обученной сети.

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

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

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

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

Определение метрических функций

Добавьте метрическую функцию к встроенному обучающему эксперименту.

1. На панели Эксперимент (Experiment) в разделе Метрики (Metrics) щелкните Добавить (Add).

2. В диалоговом окне «Добавить метрику» введите имя метрической функции и нажмите кнопку «ОК». Если ввести имя функции, которая уже существует в проекте, Диспетчер экспериментов добавит ее в эксперимент. В противном случае Диспетчер экспериментов создает функцию, определенную шаблоном по умолчанию.

3. Выберите имя метрической функции и нажмите кнопку Изменить. Функция метрики открывается в редакторе MATLAB ®.

Вход в метрическую функцию представляет собой структуру с тремя полями:

  • trainedNetwork является SeriesNetwork объект или DAGNetwork объект, возвращенный trainNetwork функция. Дополнительные сведения см. в разделе net.

  • trainingInfo - структура, содержащая информацию об обучении, возвращенную trainNetwork функция. Дополнительные сведения см. в разделе info.

  • parameters - структура с полями из таблицы гиперпараметров.

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

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

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

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

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

Classification of digits, evaluating results by using metric functions:
- OnesAsSevens returns the percentage of 1s misclassified as 7s.
- SevensAsOnes returns the percentage of 7s misclassified as 1s.

Раздел «Гиперпараметры» определяет стратегию (Exhaustive Sweep) и значения гиперпараметров для использования в эксперименте. При выполнении эксперимента Диспетчер экспериментов обучает сеть с использованием каждой комбинации значений гиперпараметров, указанных в таблице гиперпараметров. В этом примере используются гиперпараметры InitialLearnRate и Momentum.

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

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

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

  • Define Network Architecture определяет архитектуру сверточной нейронной сети для классификации глубокого обучения. В этом примере используется сеть классификации по умолчанию, предоставляемая шаблоном функции настройки.

  • Задание параметров обучения определяет trainingOptions объект для эксперимента. В примере загружаются значения параметров обучения. 'InitialLearnRate' и 'Momentum' из таблицы гиперпараметров.

В разделе «Метрики» указаны дополнительные функции, позволяющие оценить результаты эксперимента. Experiment Manager оценивает эти функции каждый раз, когда он заканчивает обучение сети. Чтобы проверить метрическую функцию, выберите имя метрической функции и нажмите кнопку Изменить. Функция метрики открывается в редакторе MATLAB.

Этот пример включает две метрические функции.

  • OnesAsSevens возвращает процент изображений числового значения, которое обучаемая сеть неправильно классифицирует как семерку.

  • SevensAsOnes возвращает процент изображений с цифрой семь, которые обучаемая сеть неправильно классифицирует как единицы.

Каждая из этих функций использует обученную сеть для классификации всего набора данных Digits. Затем функции определяют количество изображений, для которых фактическая метка и предсказанная метка не совпадают. Например, функция OnesAsSevens вычисляет количество изображений с фактической меткой '1' и прогнозируемая метка '7'.

function metricOutput = SevensAsOnes(trialInfo)
actualValue = '7';
predValue = '1';
net = trialInfo.trainedNetwork;
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ...
    'nndemos','nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');
YActual = imds.Labels;
YPred = classify(net,imds);
K = sum(YActual == actualValue & YPred == predValue);
N = sum(YActual == actualValue);
metricOutput = 100*K/N;
end

Аналогично, функция SevensAsOnes вычисляет количество изображений с фактической меткой '7' и прогнозируемая метка '1'.

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

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

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

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

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

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

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

  1. Укажите на колонку OnesAsSevens.

  2. Щелкните значок треугольника.

  3. Выберите Сортировка в порядке возрастания.

Аналогично, найдите пробную версию с наименьшим числом неправильно классифицированных семерок, открыв раскрывающееся меню для столбца SevensAsOnes и выбрав Сортировать в порядке возрастания.

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

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

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

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

  3. На панели Аннотации (Annotations) введите данные наблюдений в текстовое поле.

  4. Повторите предыдущие шаги для ячейки SevensAsOnes.

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

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

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

См. также

Приложения

Функции

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