Многоуровневая классификация с классовым дисбалансом в Pytorch - PullRequest
3 голосов
/ 02 октября 2019

У меня есть проблема многослойной классификации, которую я пытаюсь решить с помощью CNN в Pytorch. У меня 80 000 учебных примеров и 7900 классов;каждый пример может принадлежать нескольким классам одновременно, среднее число классов в каждом примере составляет 130.

Проблема в том, что мой набор данных очень несбалансирован. Для некоторых классов у меня есть только ~ 900 примеров, что составляет около 1%. Для «перепредставленных» классов у меня ~ 12000 примеров (15%). Когда я тренирую модель, я использую BCEWithLogitsLoss из pytorch с положительным весовым параметром. Я вычисляю веса таким же образом, как описано в документации: количество отрицательных примеров делится на количество положительных.

В результате моя модель переоценивает почти каждый класс ... Более мелкие и основные классы, которые я получаю почтив два раза больше прогнозов, чем настоящих ярлыков. А мой AUPRC всего 0,18. Даже при том, что это намного лучше, чем вообще никакого взвешивания, так как в этом случае модель предсказывает все как ноль.

Итак, мой вопрос, как я могу улучшить производительность? Есть ли что-нибудь еще, что я могу сделать? Я пробовал разные приемы пакетной выборки (чтобы пересмотреть класс меньшинства), но, похоже, они не работают.

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Я бы предложил одну из этих стратегий

Focal Loss

Очень интересный подход к работе с несбалансированными тренировочными данными путем настройки функции потерь был введен в
Цунг-Йи Лин, Прия Гоял, Росс Гиршик, Кайминг Хе и Петр Доллар Фокусная потеря при обнаружении плотных объектов (ICCV 2017).
Они предлагаютмодифицировать двоичную кросс-энтропийную потерю таким образом, чтобы уменьшить потери и градиент легко классифицируемых примеров, в то же время «концентрируя усилия» на примерах, где модель допускает грубые ошибки.

Hard Negative Mining

Еще один популярный подход - это «hard негативная добыча»;то есть распространять градиенты только для части обучающих примеров - «жестких».
см., например:
Абхинав Шривастава, Абхинав Гупта и Росс Гиршик ТренировкаДетекторы объектов на основе регионов с оперативной горной добычей на примере (CVPR 2016)

0 голосов
/ 03 октября 2019

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

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

См. wiki ссылка для получения дополнительной информации.

...