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

Внедрение «модуля прогнозирования потерь» для выбора данных для аннотирования и обучения.

Большая часть набора данных может быть автоматически аннотирована.

Обзор:

Дисбаланс данных

Все данные в реальном времени содержат дисбаланс данных. модель должна хорошо работать на всех этикетках. Ниже приведен пример используемого набора данных.

Решение:

  1. Недостаточная выборка данных: несбалансированное распределение классов будет иметь один или несколько классов с небольшим количеством примеров (классы меньшинства) и один или несколько классов с большим количеством примеров (классы большинства). Он состоит в сокращении данных путем исключения примеров, принадлежащих к мажоритарному классу, с целью выравнивания количества примеров каждого класса. Это уменьшает перекос с 1:100 до распределения классов 1:10 или 1:2.
  2. Вес класса: один из методов устранения дисбаланса в данных — присвоение весов каждой метке, что придает большее значение меткам меньшинства, так что конечным результатом является баланс всех присутствующих меток. Веса классов с использованием балансировки средней частоты вычисляются как w_class = median_freq / freq_class
  3. Увеличение данных: увеличение данных — это метод увеличения разнообразия набора данных без попытки собрать больше реальных данных. Это предотвращает переоснащение модели.

Трансферное обучение

Модуль прогнозирования убытков

  1. Модуль прогнозирования потерь, прикрепленный к целевой модели, прогнозирует значение потерь на основе входных данных без метки.
  2. Все точки данных в немаркированном пуле оцениваются модулем прогнозирования потерь. Точки данных с предсказанными потерями топ-K аннотируются и добавляются в обучающий набор данных.

Активное изучение

Проблема:

  • Какие данные должны быть помечены и обучены?
  • Оцените производительность модели?

Решение:

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

  • Высокая потеря = Высокая ошибка = Высокая вероятность ошибочного прогноза
  • Низкие потери = Низкая ошибка = Высокая вероятность того, что прогноз окажется верным
  • Максимальная точность k всегда будет иметь наименьшую точность (худший случай)
  • Нижняя точность k всегда будет максимальной точностью (в лучшем случае)
  • Выберите лучшие k изображений, чтобы вручную пометить и переобучить

Автоматическая аннотация

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

Подробный процесс

  1. Анализ данных:
  • Понимать распределение и закономерности в наборе данных.
  • Найти поврежденные изображения / метки.
  • Ищите дисбаланс данных и предвзятость.
  • Визуализируйте выбросы и граничные условия.

2. Настройте скелет сквозного обучения/оценки

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

Шаги по использованию активного обучения на немаркированном наборе данных:

  • Первый шаг — вручную пометить очень небольшую подвыборку данных. Это обеспечивает существенное различие между этикетками.
  • Как только имеется небольшое количество размеченных данных, модель необходимо обучить на них. Модель не будет хорошей, но поможет модели получить некоторое представление о том, какие области пространства параметров необходимо пометить дальше.
  • Использование трансферного обучения: было замечено, что на ранних этапах обучения из-за значительно меньшего объема данных количество обучаемых слоев должно быть несколько и замораживать другие слои с предварительно обученными весами. Количество слоев обучаемых слоев увеличивается по мере увеличения обучаемых данных.
  • После того, как модель обучена, модель используется для прогнозирования класса оставшейся непомеченной точки данных. Оценка выбирается для каждой немаркированной точки данных на основе прогноза модели. В нашем случае используется модуль прогнозирования убытков.
  • Точки данных с высокими прогнозируемыми потерями помечаются вручную и используются для переобучения.
  • Этот процесс можно повторять: новую модель можно обучить на новом помеченном наборе данных, который был помечен на основе оценки приоритета. После того, как новая модель была обучена на подмножестве данных, непомеченные точки данных могут быть пропущены через модель, чтобы обновить оценки приоритетов, чтобы продолжить маркировку. Таким образом, можно продолжать оптимизировать стратегию маркировки по мере того, как модели становятся все лучше и лучше.

проверить: http://karpathy.github.io/2019/04/25/recipe/