Функція Softmax vs Sigmoid в логістичному класифікаторі?


62

Що визначає вибір функції (Softmax vs Sigmoid) у логістичному класифікаторі?

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


16
Функція softmax - це не що інше, як узагальнення сигмоїди, тому не зовсім зрозуміло, що ви маєте на увазі під «softmax vs. sigmoid».
dsaxton

2
Це справа з сигмоїдою. Коли ми використовуємо сигмоїд, один клас має ймовірність exp(βTx)/(exp(βTx)+1) а інший має ймовірність 1/(exp(βTx)+1) .
dsaxton

3
Плакат Reddit робить відмінність, яку я вважаю неправильною або, принаймні, не має значення. Незалежно від того, чи є один з класів ваговим чи ні, це лише питання зміщення балів, що не впливає на ймовірності.
dsaxton


3
"не зовсім зрозуміло, що ви маєте на увазі під" softmax vs. sigmoid "." " трохи під заголовком, є суть питання - дуже легко пропустити, я знаю. Плюс, це хороша назва направляти запити google, щоб прийти сюди, щоб відповісти, що саме було запропоновано.
michael

Відповіді:


77

Функція сигмовидної використовується для двох класів логістичної регресії, в той час як SoftMax функція використовується для мультіклассіруют логістичної регресії (він же MaxEnt, полиномиальной логістичної регресії, SoftMax регресії, максимальної ентропії по класифікатору).


У двокласовій логістичній регресії прогнозовані ймовірності наступні, використовуючи сигмоїдну функцію:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

У багатокласовій логістичній регресії з класами прогнозовані ймовірності виглядають наступним чином, використовуючи функцію softmax:K

Pr(Yi=k)=eβkXi 0cKeβcXi

Можна помітити, що функція softmax - це розширення сигмоїдної функції до випадку багатокласового, як пояснено нижче. Давайте розглянемо багатокласну логістичну регресію з класами:K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

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


1
Я наївний у цьому, але це я бачу багато часу β = - (β0 − β1) Що може бути поясненням цього? Наскільки мені відомо в сигмоїдах β був би вектором. І вони зазвичай є одним для даного пробігу. Тоді як приходять β0 і β1 на малюнку?
Ішан Бхатт

1
@IshanBhatt цей коментар може допомогти.
Том Хейл

Як не дивно, я все ще можу повернутися до багатокласників за допомогою
сигмоїди

15

Насправді вони рівнозначні, в тому сенсі, що одне може перетворитися на інше.

Припустимо, що ваші дані представлені вектором довільної розмірності, і ви створили для нього двійковий класифікатор, використовуючи афінну трансформацію з наступним софтмаксом:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

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

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

Класифікатори еквівалентні, якщо ймовірності однакові, тому ми повинні накласти:

σ(z)=softmax(z0)

Заміняючи , і їх виразами у вигляді і і робимо кілька прямих алгебраїчним маніпулюванням, ви можете переконатися, що рівність вище виконується, якщо і лише якщо і задано:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@null Добре, якщо ви запитаєте це, то ви не зрозуміли мого пояснення. Дозвольте мені вирішити вашу конкретну проблему: якщо ви скажете мені, що ви подаєте свої дані сигмоїді, то це повинно бути одновимірне число, . Під час подачі його до сигмоїди, ви отримуєте ймовірність того, що опиниться в одному з ваших двох класів, наприклад, : . Тоді ймовірність знаходження у дорівнює: . Тепер давайте замінимо вашу сигмоподію на softmax. (Далі буде). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(Продовження). Для того щоб застосувати софтмакс до проблеми класифікації з двома класами, вам потрібно перетворити ваші одновимірні дані в двовимірний вектор. Тому нам потрібно визначити наші та . Виберемо . Оскільки має задовольняти , маємо , тому . Тепер маємо і . Використовуючи це, ви можете негайно переконатися, що . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

Більше того, будь-яке поєднання і яке задовольняє (тобто ), призведе до точно такого ж результату. Це показує, що у softmax є один зайвий параметр. Хоча це може здатися дурним, воно насправді є цікавою властивістю, оскільки дозволяє нормалізувати параметри , що сприяє чисельній стабільності алгоритму навчання та умовиводу. Але це лише додатковий коментар, не важливо відповідати на ваше запитання :)w0w1w=w0w11=w1w0wi
D ...

Дуже дякую. Зрозумів. У вашому першому коментарі ймовірність ймовірно, повинна бути . Тепер я розумію, яка ідея трансформації. P(C1|x)1σ(x)
null

Радий, що ти це зрозумів;) Так, це помилка друку, очевидно, це повинно бути . Дякуємо, що вказали на це! P(C1|x)=1σ(x)
D ...

8

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

  • Якщо у вас проблема з класифікацією на багато міток = є кілька «правильних відповідей» = виходи НЕ взаємовиключні, тоді використовуйте сигмоїдну функцію на кожному вихідному вихідному продукті незалежно. Сигмоїд дозволить вам мати високу ймовірність для всіх своїх класів, деяких з них або жодного з них. Приклад: класифікація захворювань на рентгенівському знімку грудної клітки. Зображення може містити пневмонію, емфізему та / або рак, або жоден із цих результатів.
  • Якщо у вас є проблема класифікації в багатьох класах = є лише одна «правильна відповідь» = виходи взаємно виключають, тоді використовуйте функцію softmax. Softmax примусить привести, що сума ймовірностей ваших вихідних класів дорівнює одиниці, тому для збільшення ймовірності конкретного класу ваша модель повинна відповідно зменшити ймовірність принаймні одного з інших класів. Приклад: класифікація зображень із набору даних MNIST рукописних цифр. Одне зображення цифри має лише одну справжню ідентичність - зображення не може бути одночасно 7 і 8.

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


-1

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

Так, наприклад, у прикладі цифр MNIST ви можете використовувати softmax або десять сигмоїдів. Насправді це робить Ендрю Нг у своєму курсі ML Coursera. Ви можете перевірити тут , як Andrew Ng використовували 10 сигмоид для мультіклассіруют класифікації (адаптовано з Matlab для пітона мною), і ось моя SoftMax адаптації в пітона.

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

Велика перевага використання декількох двійкових класифікацій (тобто Sigmoids) над однією багатокласовою класифікацією (тобто Softmax) - полягає в тому, що якщо ваша softmax занадто велика (наприклад, якщо ви використовуєте вбудовуване словник розміром словника розміром 10 К або більше, що використовується гаряче слово) ) - це може бути неефективним для його навчання. Що ви можете зробити замість цього, це взяти невелику частину вашого навчального набору і використовувати його для тренування лише невеликої частини сигмоїдів. Це головна ідея негативного відбору проб .


Функції не еквівалентні, тому що мережа softmax обмежена для отримання розподілу ймовірностей по класах як виходу: вектор невід'ємний і дорівнює 1. Одиниці сигмоїдів невід'ємні, але вони можуть підсумовувати будь-яке число між 0 і ; це не допустимий розподіл ймовірностей. Ця відмінність має вирішальне значення для характеристики того, як дві функції відрізняються. CC
Відновіть Моніку

Яке ваше визначення рівнозначного? Моє: ви можете без будь-якої проблеми використовувати або для класифікації в багатьох класах. Крім того, будь-яка багатокласова класифікація, яка використовує softmax, може бути перетворена на бінарні класифікації, що застосовуються проти всіх, що використовують сигмоїди. Чому я повинен дбати про розподіл результатів, підсумовуючи 1?
Девід Рефаелі

Ваші аргументи щодо класифікації на багато міток показують, чому сигмоїд та софтмакс не є рівнозначними. При використанні softmax збільшення ймовірності одного класу зменшує загальну ймовірність усіх інших класів (через суму-до-1). Використовуючи сигмоїд, збільшення ймовірності одного класу не змінює загальну ймовірність інших класів. Це спостереження є причиною того, що сигмоїд правдоподібний для багатозначної класифікації: один приклад може належати до класівСума до 1 також є причиною того, що софтмакс не підходить для класифікації на кілька міток. 0,1,2,,C
Відновіть Моніку

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