knowledge base

Глубокое обучение

Валидация модели классификации изображений

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

В качестве входных данных для функции используются:

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

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

Параметры блока:

  • Метрика. Метрика, которая оценивает работу обученной модели нейронной сети. Применяется к типу данных – изображения.

Выходная информация:

Классификация

Классификация (табличные данные)

Типы решаемых задач: анализ тональности, классификация текста по категориям, распознавание речи и многое другое.

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

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

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

Строится многослойная нейронная сеть, состоящая из слоев:

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

*Сверточными искусственные нейронные сети называются из-за специальной архитектуры, с наличием операций сверки.

Параметры блока:

  • Добавить слой. Задается одно из четырех значений: Dense, Flatten, Conv1D, LSTM.
  • Количество эпох. Параметр, который показывает сколько раз модель подвергается воздействию обучения.
  • Размер мини батча. Количество обучающих примеров за одну итерацию. Под примерами имеются в виду наблюдения – строки в табличных данных.
  • Метрика для обучения. Метрика «Accuracy» (точность) показывает долю правильных ответов алгоритма
  • Алгоритм градиентного спуска. Метод нахождения минимального значения функции потерь. Алгоритмы на выбор: SGD, Adam, и др.
  • Шаг градиентного спуска. Параметр, регулирующий скорость обучения модели. Значения – 0.001 или 0.1.
  • Функция потерь. Функция потерь находится в центре нейронной сети. Она используется для расчета ошибки между реальными и полученными ответами. Главная цель – минимизировать эту ошибку. Или: максимизировать вероятность принадлежности к истинному классу для каждого объекта из тренировочной выборки. Она также может зависеть от таких переменных, как веса и смещения, где смещения – это веса, добавленные к скрытым слоям. Выбирается одна из функций, в зависимости от задачи: бинарная классификация или многоклассовая.
  • Перемешивать выборку перед обучением. Необходимо установить галочку в поле, чтобы случайным образом поменять местами наблюдения, соответствующие строкам в таблице
  • Порог классификации. Для бинарной классификации значение по умолчанию 0.5, для многоклассовой – параметр не заполняется
  • Флаг возврата вероятности при прогнозе. Возвращает вероятность или метки классов для дальнейшего прогноза после обучения модели. Для бинарной классификации может использоваться одно поле с метками 0 и 1, обозначающими принадлежность к тому или иному классу. Для многоклассовой классификации используется несколько полей – каждое поле соответствует отдельному классу (0, 1, 2 и т.д.), и записываются вероятности (от 0 до 1), с которыми наблюдения принадлежат классам
  • Оптимизация гиперпараметров. Нужно активировать галочку в поле, когда выбирается наиболее подходящая степень полинома из нескольких предложенных. А подбирается гиперпараметр так, чтобы получить наилучшее значение метрики.
  • Метрика для оптимизации. Значения на выбор: RMSE, MAE, WMAPE. Эти метрики используются для оценки работы модели регрессии – проверяют точность прогноза и измеряют величину отклонения от фактических значений.
    • MAE (Mean Absolute Error) – метрика измеряет среднюю сумму абсолютной разницы между фактическим значением и прогнозируемым значением.
    • RMSE (Root Mean Squared Error) – это корень от квадрата ошибки. Ее легко интерпретировать, поскольку он имеет те же единицы, что и исходные значения. Также она оперирует меньшими величинами по абсолютному значению, что может быть полезно для вычисления на компьютере.
    • WMAPE (Weighted Mean Absolute Percentage Error) – показатель точности прогнозирования с учетом сдерживающих факторов. Например, вы пытаетесь предсказать убыток, но процент потерь должен быть взвешен с объемом продаж, потому что убыток от огромной продажи требует лучшего прогнозирования.
  • Количество фолдов для оптимизации. Указывается, на сколько равных частей разбивается входной датасет при обучении модели.
Классификация изображений

Алгоритм решения задачи классификации:

  1. Берется тренировочная выборка – набор изображений с известными значениями целевого признака Y. Нейронная сеть должна восстановить зависимость между нецелевыми признаками и целевым.
  2. Задаются основные параметры нейронной сети.
  3. Выписываются выражения для вероятностей принадлежности наблюдения к тому или иному классу (Y = 0, 1, 2, 3, и т.д.).
  4. По тренировочной выборке составляется функция потерь.
  5. Функция потерь L(w) содержит вхождения весов нейронной сети. Относительно этих переменных находится точка минимума функции L(w).
  6. Точка минимума определяет оптимальные веса нейронной сети.
  7. Весам нейронной сети присваиваются найденные оптимальные значения. Пусть изображение A не принадлежит тренировочной выборке. Объект А прогоняется через нейронную сеть и на выходе получаются вероятности – они и являются предсказаниями для объекта A (по максимальной вероятности определяется принадлежность объекта к классу).

Параметры блока:

  • Добавить слой. Основой алгоритмов распознавания изображений являются сверточные нейронные сети. Для их построения используются три главных типа слоев: сверточный слой, слой подвыборки и полносвязный слой. Соответственно пользователь задает одно из трех значений: Conv2D, Flatten, Dense (последний – полносвязный).

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

  • Количество эпох. Параметр, который показывает сколько раз модель подвергается воздействию обучения.
  • Метрика для обучения. Метрика «Accuracy» (точность) показывает долю правильных ответов алгоритма
  • Алгоритм градиентного спуска. Метод нахождения минимального значения функции потерь. Алгоритмы на выбор: SGD, Adam, и др.
  • Шаг градиентного спуска. Параметр, регулирующий скорость обучения модели. Значения – 0.001 или 0.1.
  • Функция потерь. Функция потерь находится в центре нейронной сети. Она используется для расчета ошибки между реальными и полученными ответами. Главная цель – минимизировать эту ошибку. Или: максимизировать вероятность принадлежности к истинному классу для каждого объекта из тренировочной выборки. Она также может зависеть от таких переменных, как веса и смещения, где смещения – это веса, добавленные к скрытым слоям. Выбирается одна из функций, в зависимости от задачи: бинарная классификация или многоклассовая.
  • Порог классификации. Для бинарной классификации значение по умолчанию 0.5, для многоклассовой – параметр не заполняется
  • Выходная информация:
  • График. История обучения (подробнее см. в этом разделе).

Регрессия

Регрессия (табличные данные)

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

Параметры блока:

  • Добавить слой. Задается одно из трех значений: Conv2D, Flatten, LSTM, Dense (последний – полносвязный слой).
  • Количество эпох. Указывается количество эпох для обучения модели. Одна эпоха – весь датасет прошел через нейронную сеть в прямом и обратном направлении только один раз. Так как одна эпоха слишком велика для компьютера, датасет делят на партии – батчи. С увеличением числа эпох, веса нейронной сети изменяются все большее количество раз. Кривая с каждым разом лучше подстраивается под данные, переходя последовательно из плохо обученного состояния в оптимальное. Если вовремя не остановиться, то может произойти переобучение.  
  • Размер мини батча. Общее число тренировочных объектов, представленных в одном батче. Нельзя пропустить через нейронную сеть разом весь датасет. Поэтому делим данные на пакеты, сеты или партии. Итерации – это число батчей, необходимое для завершения одной эпохи.
  • Метрика для обучения. Для регрессии: [‘MAE’, ‘MAPE’, ‘MSE’].
  • Алгоритм градиентного спуска. Алгоритм итеративной оптимизации, используемой в машинном обучении для получения более точного результата. Градиент показывает скорость убывания или возрастания функции. Спуск говорит о том, что мы имеем дело с убыванием. Алгоритм итеративный, процедура проводится несколько раз, чтобы добиться оптимального результата. На каждом шаге результат получается лучше.
  • Шаг градиентного спуска. Скорость обучения модели алгоритмом градиентного спуска.
  • Функция потерь. Функция, которая используется для оптимизации алгоритма машинного обучения. Значение, вычисленное такой функцией, называется ‘потерей’. Потери регрессии рассчитываются путем прямого сравнения выходного и истинного значения. Самая популярная функция для регрессионных моделей – это среднеквадратическая ошибка, MSE. Функция потерь определяет, как именно выходные данные связаны с исходными. По сути вычисляется насколько хорошо работает модель – сравнивается то, что модель прогнозирует, с фактическим значением. Сохраняется функция потерь, которая может эффективно наказывать модель, пока та обучается на тренировочных данных.
  • Перемешать выборку перед обучением. Необходимо установить галочку в поле, чтобы случайным образом поменять местами наблюдения.
  • Оптимизация гиперпараметров. Нужно активировать галочку в поле, когда выбирается наиболее подходящая степень полинома из нескольких предложенных. А подбирается гиперпараметр так, чтобы получить наилучшее значение метрики.
  • Метрика для оптимизации. Значения на выбор: RMSE, MAE, WMAPE. Эти метрики используются для оценки работы модели регрессии – проверяют точность прогноза и измеряют величину отклонения от фактических значений.
    • MAE (Mean Absolute Error) – метрика измеряет среднюю сумму абсолютной разницы между фактическим значением и прогнозируемым значением.
    • RMSE (Root Mean Squared Error) – это корень от квадрата ошибки. Ее легко интерпретировать, поскольку он имеет те же единицы, что и исходные значения. Также она оперирует меньшими величинами по абсолютному значению, что может быть полезно для вычисления на компьютере.
    • WMAPE (Weighted Mean Absolute Percentage Error) – показатель точности прогнозирования с учетом сдерживающих факторов. Например, вы пытаетесь предсказать убыток, но процент потерь должен быть взвешен с объемом продаж, потому что убыток от огромной продажи требует лучшего прогнозирования.
  • Количество фолдов для оптимизации. Указывается, на сколько равных частей разбивается входной датасет при обучении модели.

Обнаружение объектов

YOLOv5

Датасет должен быть разделен на две папки: train (тренировочная выборка) и test (валидационная).  В каждой папке лежат еще две папки: images (изображения) и labels – папка с текстовыми файлами, содержащими метки объектов на этих изображениях в формате YOLO. Для этой функции предварительно выполняется разметка изображений на тренировочной и валидационной выборках. Пользователь с помощью ‘bounding box’ отмечает объекты на изображениях. А алгоритм по точкам объектов находит функцию их обнаружения. На валидационной выборке проверяется точность обученной модели. После запуска функции на выходе получается обученная нейронная сеть, результаты обучения которой сохраняются в БД.

Параметры блока:

  • Размер мини-батча. Указывается количество изображений, которое одновременно подается на вход YOLO. Например, если задать размер 2, за один подход подается два изображения.
  • Количество эпох. Это гиперпараметр, который определяет сколько раз алгоритм обучения будет обрабатывать весь набор обучающих данных. То есть эпоха – одна итерация в процессе обучения, включающая предъявление всех примеров из обучающего множества. Например, для выборки в десять изображений и размера мини-батча два, эпоха равна пяти прохождениям.

Выходная информация

В результате получаются изображения с обозначением детектированных объектов и значениями confidence. Где confidence – число от 0 до 1, характеризующее ‘уверенность’ модели в том, что детектирован объект или детектирован объект определенного класса. Еще один параметр conf-thres позволяет установить пороговое значение для confidence модели. Все объекты, confidence которых ниже этого значения не считаются объектами.

Также отображаются: описание модели, графики обучения модели, матрица ошибок на валидационных данных. Где описание модели содержит информацию об оптимизаторе, тренировочном и валидационном датасетах, а также параметры обучения.