Нейронная сеть: для двоичной классификации использовать 1 или 2 выходных нейрона?

27

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

  • Используйте 1 выходной узел. Выход 0 (<0.5) считается классом A, а 1 (> = 0.5) считается классом B (в случае сигмовидной кишки)

  • Используйте 2 выходных узла. Входные данные принадлежат классу узла с наибольшим значением / вероятностью (argmax).

Есть ли какие-либо документы, которые (также) обсуждают это? Какие конкретные ключевые слова для поиска?

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

Роберт
источник
Я думаю, что ОП связанного вопроса имеет хорошую точку зрения, единственное отличие состоит в том, что вариант 2 имеет большее количество параметров, является более гибким, но более склонным к перегонке.
dontloo
1
В нано-степени Udacity ML я узнал, что лучше использовать один выходной узел, если результат является взаимоисключающим просто потому, что в сети меньше ошибок, которые он может совершить. Я думаю, что в этом случае нет плюсов в использовании двух выходных узлов, но у меня нет научных доказательств этого
CodingYourLife

Ответы:

26

Во втором случае вы, вероятно, пишете о функции активации softmax. Если это правда, то сигмовидная кишка - это просто особый случай функции softmax. Это легко показать.

y=11+ex=11+1ex=1ex+1ex=ex1+ex=exe0+ex

Как вы можете видеть, сигмоид - это то же самое, что и softmax. Вы можете думать, что у вас есть два выхода, но один из них имеет все веса, равные нулю, и поэтому его выход всегда будет равен нулю.

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

itdxer
источник
Когда вы говорите, что у одного из них все веса равны нулю, вы имеете в виду, что модель даже не учитывала один из классов во время тренировки? На практике, можем ли мы на самом деле обучить этот двоичный классификатор только с одним классом обучающих данных?
Deadcode
Это больше похоже на то, что порог (предел) фиксируется во время обучения и занятий. Так что вы знаете, что если то это положительный класс, а если x < 0, то это отрицательный класс. С softmax вы можете узнать другой порог и иметь разные границы. RE весит со всеми нулями, я имел в виду, что сигмоид такой же, как softmax с 2 выходами для случая, когда у вас есть два выходных нейтрона и один из выходов x, а другой всегда 0x>0x<0x0 независимо от того, какой был вход. Это может быть только тогда, когда для второго вывода у нас все веса равны нулю. Я надеюсь, что это помогает.
itdxer
1
Обратите внимание, что существуют вырожденные решения вида exp(x+alpha) / (exp(alpha) + exp(x+alpha)) - на самом деле их бесконечное число - все они дают тот же результат классификации, что и тот, который отмечен с весами все 0. Веса, скорее всего, не будут равны нулю, но вместо этого будут вырожденными. с решением, которое имеет вес всех 0. Избегайте (бессмысленных и расточительных) вырожденных решений, используя только один выходной нейрон, кажется.
Дан Ниссенбаум
3

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

y=softmax(a)1ieai×[ea1,ea2,...,ean]

0yi1 for all i
y1+y2+...+yn=1

a

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

0y1 for all inputs.
ay

sigmoid(a)σ(a)11+ea

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

Вывод

Я не уверен, что рассуждения @ itdxer, которые показывают softmax и sigmoid, эквивалентны, если они действительны, но он прав в выборе 1 нейрона в отличие от 2 нейронов для двоичных классификаторов, так как требуется меньше параметров и вычислений. Меня также критиковали за использование двух нейронов для бинарного классификатора, так как «это лишнее».

Miladiouss
источник