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

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

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

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

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

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

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

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

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

1. В панели Эксперимента, под Метриками, нажимают Add.

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

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

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

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

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

  • parameters struct с полями от гипертаблицы параметров.

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

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

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

Раздел Hyperparameters задает стратегию (Exhaustive Sweep) и гиперзначения параметров, чтобы использовать для эксперимента. Когда вы запускаете эксперимент, Experiment Manager обучает сеть с помощью каждой комбинации гиперзначений параметров, заданных в гипертаблице параметров. Этот пример использует гиперпараметры InitialLearnRate и Momentum.

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

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

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

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

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

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

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

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

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

Каждая из этих функций использует обучивший сеть, чтобы классифицировать целый набор данных Цифр. Затем функции определяют количество изображений, для которых не соглашаются фактическая метка и предсказанная метка. Например, функциональный 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, чтобы Обучить нейронные сети параллельно.

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

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

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

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

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

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

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

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

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

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

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

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

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

| |

Похожие темы