Борьба с дисбалансом классов с помощью правильной функции потерь: IoU, Dice или Dice 2-класса?
В настоящее время я работаю над диссертацией бакалавра и сталкиваюсь с некоторыми трудностями, пытаясь понять различия в функциях потерь в отношении дисбаланса класса и самого дисбаланса класса.
Я работаю над проблемой сегментации с изменением U-Net ( https://arxiv.org/pdf/1505.04597.pdf).
Мой набор данных содержит 11 классов, один из которых гораздо реже, чем большинство других. Входные данные для моей сети - это np-массив формы (700,512,512,3) для входных rgb-изображений и формы (700,512,512,11) для наземных меток истинности. Каждый из 11 каналов наземной истинности имеет двоичное кодирование (1 для определенного класса присутствует, 0 для его отсутствия). Таким образом, есть одна маска на класс на изображение. В большинстве масок количество единиц намного меньше, чем у нулей.
Сначала относительно дисбаланса класса:
Я не нашел четкого определения термина "дисбаланс классов". На мой взгляд, возможны три интерпретации:
- Из всех 700 входных изображений один класс встречается гораздо реже, чем большинство других.
- В пределах одной маски одного изображения число 0 намного больше, чем число 1
- На всех входных изображениях для одного класса (среднее) число 0 намного больше, чем число 1
Для каждой из этих интерпретаций я могу представить себе проблемы. Что обычно подразумевается, когда речь идет о дисбалансе класса? И как это приведет к проблемам?
Теперь потеря функций. Функции потери, которые я пытаюсь понять:
- Потеря приближения IoU ( http://www.cs.umanitoba.ca/~ywang/papers/isvc16.pdf)
- Потеря кости ( https://arxiv.org/pdf/1707.00478.pdf)
- 2-классная потеря костей ( https://arxiv.org/pdf/1707.03237.pdf)
В своем исследовании я прочитал, что у IoU Loss есть проблемы при столкновении с несбалансированными наборами данных. Я также читал, что Dice Loss работает лучше в этом случае, но я не смог найти объяснения. Это было просто обесценено как "общеизвестное". Я предполагаю, что потеря Костей 2-го класса была бы еще лучше, поскольку она рассматривает бинарную проблему с обеих сторон, несколько компенсируя дисбаланс класса.
Мое предположение, основанное главным образом на примере, который я использовал (см. Ниже):
С IoU ошибочные положительные прогнозы имеют меньшую ошибку по сравнению с ложными отрицательными. Однако вероятность получения ложного положительного прогноза выше для категории с несколькими пикселями, так что сеть может согласиться на ложные отрицания. Потеря игральных костей наказывает ложные отрицательные и ложные положительные результаты меньше, чем потеря IoU, а разница между ошибкой ложного положительного результата и ошибкой отрицательного отрицательного значения меньше для потери игральных костей. Это должно привести к улучшению производительности, потому что дисбаланс в вероятностях компенсируется незначительно. При потере кубиков 2-го класса все ошибки наказываются с обеих сторон, что приводит к меньшей разнице между ложноотрицательными и ложноположительными терминами ошибок.
Это правда? Где я не прав? На данный момент, я действительно смущен и был бы признателен за любые указания. Некоторые источники относительно моих вопросов также очень помогли бы.
И последний вопрос: какая функция потерь была бы наиболее подходящей для моего случая в отношении дисбаланса классов?
Заранее спасибо!
Example with 9 pixels, two 1s, seven 0s:
all correct | 1 false positive | 1 false negative
IoU | 1 | 0.33 | 0.5
Dice | 1 | 0.2 | 0.33
Dice2 | 1 | 0.14 | 0.2