Нейронна мережа: Для двійкової класифікації використовуйте 1 або 2 вихідних нейрона?


26

Припустимо, я хочу зробити бінарну класифікацію (щось належить до класу A або класу B). Є кілька можливостей зробити це у вихідному шарі нейронної мережі:

  • Використовуйте 1 вихідний вузол. Вихід 0 (<0,5) вважається класом A, а 1 (> = 0,5) вважається класом B (у випадку сигмоїдної)

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

Чи є написані документи, які (також) обговорюють це? Які конкретні ключові слова слід шукати?

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


Я думаю, що ОП пов'язаного питання має хороший момент, різниця лише в тому, що вибір 2 має більшу кількість параметрів, є більш гнучким, але більш схильним до надмірного розміщення.
dontloo

1
У програмі Udacity ML Nanodegree я дізнався, що краще використовувати один вихідний вузол, якщо результат взаємно виключається просто тому, що в мережі менше помилок. Я думаю, що у використанні 2 вихідних вузлів у цьому випадку немає ніяких плюсів, але я не маю наукових підтверджень для цього
CodingYourLife

Відповіді:


25

У другому випадку ви, напевно, пишете про функцію активації програмного забезпечення. Якщо це правда, то сигмоїд - це лише особливий випадок функції softmax. Це легко показати.

у=11+е-х=11+1ех=1ех+1ех=ех1+ех=ехе0+ех

Як ви бачите, сигмоїд - це те саме, що і softmax. Можна подумати, що у вас є два виходи, але один з них має всі ваги, що дорівнюють нулю, і тому його вихід завжди буде дорівнює нулю.

Тож кращим вибором для двійкової класифікації є використання одного вихідного блоку із сигмоїдом замість софтмаксу з двома вихідними одиницями, оскільки він буде оновлюватися швидше.


Коли ви говорите, що одна з них має всі ваги нульові, ви маєте на увазі, що модель навіть не вважала одного з класів під час тренувань? На практиці ми можемо насправді тренувати цей двійковий класифікатор лише з одним класом даних про навчання?
мертвий код

х>0х<0х0

1
Зауважте, що є вироджені рішення форми exp(x+alpha) / (exp(alpha) + exp(x+alpha))- насправді їх нескінченна кількість - всі вони дають той же результат класифікації, що і той, який відмічений з вагами всі 0. Ваги, швидше за все, не тренуються до нуля, але будуть тренуватися, а не вироджуватися з розчином, який має вагу всього 0. Уникайте (безглуздих і марнотратних) вироджених розчинів, використовуючи лише один вихідний нейрон, схоже.
Дан Ніссенбаум

2

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

у=софтмакс(а)1iе-аi×[е-а1,е-а2,...,е-ан]

0уi1 для всіх i
у1+у2+...+ун=1

а

Це цілком справедливо для двох класів, однак також можна використовувати один нейрон (замість двох), враховуючи, що його вихід задовольняє:

0у1 для всіх входів.
ау

сигмовидної(а)σ(а)11+е-а

корисні математичні властивості (диференціювання, обмеження між 0 і 1 і т.д.), обчислювальна ефективність та наявність правильного нахилу таким чином, що оновлення ваг мережі мало б невелику, але вимірювану зміну виводу для оптимізації.

Висновок

Я не впевнений, чи міркування @ itdxer, що показує софтмакс та сигмоїд, є еквівалентними, якщо вони дійсні, але він правильний щодо вибору 1 нейрона на відміну від 2 нейронів для бінарних класифікаторів, оскільки потрібно менше параметрів та обчислень. Мене також критикували за використання двох нейронів для двійкового класифікатора, оскільки "це зайве".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.