Настройка многоклассовой классификации

Вопрос или проблема

1) Какие функции активации и потерь являются подходящими для задачи многоклассовой классификации?

Так ли это:

  • До 2 классов $\rightarrow$ Бинарная классификация $\rightarrow$ Активация: Сигмоида $\rightarrow$ Потеря: binary_crossentropy
  • От 3 классов $\rightarrow$ Многоклассовая классификация $\rightarrow$ Активация: Softmax $\rightarrow$ Потеря: categorical_crossentropy

Если да, то…

  • ‘Собаки и кошки’ это бинарная классификация, но ‘собаки, кошки и лошади’ это многоклассовая классификация?

  • Если у нас 2 класса, то мы не можем выводить диапазоны вероятностей для результатов предсказания?

2) Так ли это, что для многоклассовой классификации последний плотный слой должен иметь количество узлов, равное количеству классов?

В следующем примере два класса (собаки и кошки), и последний плотный слой имеет один узел (почему не 2 узла?). Если у нас 3 или 10 классов, то последний узел должен иметь 3 или 10 узлов?

введите описание изображения здесь

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

Более того, в слое есть один узел, потому что вы делаете бинарную классификацию. Другими словами, когда значение последнего узла низкое или ниже порога, класс равен 0, а если иначе (значение последнего узла высокое или выше порога) — 1.

И да, если классов больше, вам нужно столько же узлов в последнем плотном слое. Вы также можете использовать 2 узла, когда у вас только два класса в ваших данных и предсказываете тот, у которого самый высокий балл/вывод.

Причина проста: когда у вас есть функция сигмоида, она даст вам число в диапазоне [0,1], которое можно подать в кросс-энтропию для получения потерь. Таким образом, для бинарной классификации с сигмоидой одной функции достаточно.

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

Вы можете не использовать Softmax.
Вы должны полагаться на множественные логистические регрессии.
Например, предположим, что ваши примеры – это изображения, содержащие ровно один предмет – фрукт. Softmax может определить вероятность того, что этот один предмет является грушей, апельсином, яблоком и так далее. Если ваши примеры – это изображения, содержащие всевозможные вещи – миски с различными фруктами – тогда вам нужно будет использовать множественные логистические регрессии вместо этого.

Ответ или решение

Конфигурация много-классовой классификации

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

1) Активации и функции потерь для много-классовой классификации

Для задач классификации в зависимости от количества классов используются следующие активации и функции потерь:

  • Бинарная классификация (до 2 классов):

    • Активация: Sigmoid
    • Функция потерь: binary_crossentropy
    • В этом случае выходная нейронная сеть содержит один узел (нейрон), возвращающий значение в диапазоне [0, 1]. Если значение выше порога (например, 0.5), мы можем интерпретировать это как класс 1, иначе как класс 0.
  • Много-классовая классификация (от 3 классов):

    • Активация: Softmax
    • Функция потерь: categorical_crossentropy
    • Softmax позволяет нам получать вероятностные оценки для каждого класса, обеспечивая что сумма вероятностей всех классов будет равна 1. Это делает Softmax подходящей для задач, где каждый пример принадлежит только одному классу.

Таким образом, для примера с "собаками и кошками" мы имеем дело с бинарной классификацией, в то время как "собаки, кошки и лошади" — это много-классовая классификация. Важно отметить, что при бинарной классификации, даже имея только 2 класса, мы можем выдавать вероятности для предсказаний, поскольку сеть будет предсказывать вероятность принадлежности к классу 1 (второй класс будет отсчитываться из контекста).

2) Число нейронов в выходном слое

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

  • Для бинарной классификации:

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

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

На практике, в примере с "собаками и кошками", возможно использовать один нейрон, потому что задача может быть адаптирована к бинарной классификации (например, 1 для собаки, 0 для кошки). Однако использование двух нейронов (по одному для каждого класса) не является ошибкой и может быть предпочтительным в зависимости от контекста задачи.

Интересные аспекты использования Softmax vs Sigmoid

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...