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

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

  • Протестируйте предсказание эффективности обученной сети.

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

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

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

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

Задайте метрические функции

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

1. На панели Эксперимент в разделе Метрики нажмите Добавить.

2. В диалоговом окне Add metric введите имя метрической функции и нажмите OK. Если вы вводите имя функции, которая уже существует в проекте, Experiment Manager добавляет ее в эксперимент. В противном случае Experiment Manager создаёт функцию, заданную шаблоном по умолчанию.

3. Выберите имя метрической функции и нажмите Edit. Метрическая функция откроется в MATLAB ® Editor.

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

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

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

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

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

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

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

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

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

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) и значения гиперзначений параметров для использования в эксперименте. Когда вы запускаете эксперимент, Experiment Manager обучает сеть с помощью каждой комбинации значений гиперзначений параметров, заданных в таблице гиперпараметра. Этот пример использует гиперпараметры InitialLearnRate и Momentum.

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

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

  • Load Training Data задает хранилища изображений, содержащие данные обучения и валидации. Этот пример загружает изображения из набора данных Digits. Дополнительные сведения об этом наборе данных см. в разделе Наборы данных изображений.

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

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

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

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

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

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

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

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

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

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

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

  1. Укажите столбец OneAsSevens.

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Приложения

Функции

Похожие темы