У класифікаторі softmax навіщо використовувати функцію exp для нормалізації?


30

Навіщо використовувати softmax на відміну від стандартної нормалізації? У області коментарів у верхній відповіді на це питання @Kilian Batzner порушив 2 питання, які також мене дуже бентежать. Здається, ніхто не дає пояснень, крім чисельних переваг.

У мене з’являються причини використання крос-ентропійної втрати, але як це стосується софтмаксу? Ви сказали, що "функцію softmax можна розглядати як намагання мінімізувати перехресну ентропію між прогнозами та істиною". Припустимо, я використовував би стандартну / лінійну нормалізацію, але все-таки використовую крос-ентропійну втрату. Тоді я б також намагався мінімізувати перехресну ентропію. Тож як софтмакс пов'язаний з перехресною ентропією, крім чисельних переваг?

Щодо ймовірнісного погляду: яка мотивація перегляду ймовірностей журналу? Міркування здається трохи схожим на "Ми використовуємо e ^ x у софтмаксі, тому що ми інтерпретуємо х як імовірність журналу". З тими ж міркуваннями, які ми могли б сказати, ми використовуємо e ^ e ^ e ^ x у softmax, тому що ми інтерпретуємо x як log-log-log-імовірності (тут, звичайно, перебільшують). Я отримую чисельні переваги софмаксу, але яка теоретична мотивація його використання?


Він диференційований, призводить до негативних результатів (таких, які були б необхідні для ймовірності, щоб перехресна ентропія могла бути обчислена), і поводиться як функція max, яка доречна в класифікаційній установці. Ласкаво просимо на сайт!
Емре

@Emre Спасибі! Але що означає "поводиться як максимальна функція"? Крім того, якщо у мене є інша функція, яка також диференціюється, монотонна збільшується і призводить до негативних результатів, чи можу я використовувати її для заміни функції exp у формулі?
Ганс

Коли ви нормалізуєтеся за допомогою , найбільший аргумент відображається на 1, а решта відображається на нулі, внаслідок зростання експоненціальної фукції. max
Емре

Відповіді:


37

Це більше, ніж просто числовий. Швидке нагадування про softmax:

P(y=j|x)=exjk=1Kexk

Там , де є вхідний вектор з довжиною , рівній числу класів . Функція softmax має 3 дуже приємні властивості: 1. вона нормалізує ваші дані (виводить правильний розподіл ймовірностей), 2. є диференційованою та 3. використовує згадуваний вами досвід. Кілька важливих моментів:xK

  1. Функція втрати безпосередньо не пов'язана з softmax. Можна використовувати стандартну нормалізацію і все ще використовувати перехресну ентропію.

  2. Функцію "hardmax" (тобто аргмакс) не можна диференціювати. Softmax дає хоча б мінімальну кількість ймовірності для всіх елементів вихідного вектора, і тому добре диференціюється, отже, термін "soft" у softmax.

  3. Тепер я переходжу до вашого питання. в SoftMax є природною експоненційної функцією. Перш ніж нормалізуватись, перетворимо як у графіку :exex

природна експоненціальна функція

Якщо дорівнює 0, то , якщо дорівнює 1, то , а якщо дорівнює 2, то ! Величезний крок! Це називається нелінійним перетворенням наших ненормалізованих оцінок журналу. Цікавою властивістю експоненціальної функції в поєднанні з нормалізацією в софтмаксі є те, що високі показники в стають набагато більш імовірними, ніж низькі.xy=1xy=2.7xy=7x

Приклад . Скажіть , і ваш показник журналу - вектор . Проста функція argmax виводить:K=4x[2,4,2,1]

[0,1,0,0]

Аргмакс - це мета, але вона не є диференційованою, і ми не можемо навчити свою модель з нею :( Проста нормалізація, яка є диференційованою, видає такі ймовірності:

[0.2222,0.4444,0.2222,0.1111]

Це дійсно далеко від аргмаксу! :( Беручи до уваги, що програмне забезпечення Softmax:

[0.1025,0.7573,0.1025,0.0377]

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


3
Чудова інформація. Однак, замість того, щоб використовувати e, що робити з використанням константи сказати 3, або 4? Чи буде результат однаковим?
Чак Ян Чен

7
@CheokYanCheng, так. Але eмає приємнішу похідну;)
vega

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

@vega Вибачте, але я все ще не бачу, як це відповідає на питання: чому б не використовувати e ^ e ^ e ^ e ^ e ^ x з тих самих причин? Поясніть, будь ласка,
Гульзар

@jvalle це не eте, що робить його інтерпретаційним як вірогідність, це факт, що кожен елемент виведення програмного забезпечення обмежений у [0,1], а цілі суми до 1.
vega

2

Окрім пояснення веги,

давайте визначимо загальну софтмакс: де - константа> = 1

P(y=j|x)=ψxjk=1Kψxk
ψ

якщо , то ви досить далеко від argmax, як згадував @vega.ψ=1

Давайте припустимо, , тепер ви досить близькі до аргмаксу, але у вас також є дійсно невеликі числа для негативних значень і великі числа для позитивних. Ці числа легко переповнюють арифметичну межу з поплавковою точкою (наприклад, максимальна межа numpy float64 - ). На додаток до цього, навіть якщо вибір який набагато менший за , фреймворки повинні реалізувати більш стабільну версію softmax (множення як чисельника, так і знаменника на постійну ), оскільки результати стають малими, щоб можна було виразити з такою точністю.ψ=10010308ψ=e100C

Отже, ви хочете вибрати константу, достатньо велику, щоб добре наблизити аргмакс, а також досить малу, щоб виразити ці великі та малі числа в обчисленнях.

І звичайно, також має досить приємну похідну.e


2

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

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

Середня енергія пов'язана з іншими енергіями таким співвідношенням E¯Ek

NE¯=k=1KnkEk.()

При цьому ми бачимо, що загальну кількість зображень можна обчислити як наступну суму

N=k=1Knk.()

Основна ідея принципу максимальної ентропії полягає в тому, що кількість зображень у відповідних класах розподіляється таким чином, щоб число можливих комбінацій для заданого розподілу енергії було максимальним. Простіше кажучи, система не дуже схожа на перехід у стан, у якому ми маємо лише клас вона також не перейде у стан, у якому у нас однакова кількість зображень у кожному класі. Але чому це так? Якби всі зображення були в одному класі, система мала б дуже низьку ентропію. Другий випадок також був би дуже неприродною ситуацією. Більш ймовірно, що у нас буде більше зображень із помірною енергією та менше зображень із дуже високою та дуже низькою енергією.n1

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

(N!n1!,n2!,,nK!)=N!k=1Knk!.

Ми спробуємо максимізувати це число, вважаючи, що у нас є нескінченно багато зображень . Але його максимізація має також обмеження рівності та . Цей тип оптимізації називається обмеженою оптимізацією. Ми можемо вирішити цю проблему аналітично, використовуючи метод множників Лагранжа. Вводимо множники Лагранжа і для обмежень рівності і вводимо функцію Lagrange .N()()βαL(n1,n2,,nk;α,β)

L(n1,n2,,nk;α,β)=N!k=1Knk!+β[k=1KnkEkNE¯]+α[Nk=1Knk]

Як ми припускали, що ми можемо також припустити і використовувати наближення Стірлінга для факторіалуNnk

lnn!=nlnnn+O(lnn).

Зауважте, що це наближення (перші два доданки) є лише асимптотичним, це не означає, що це наближення буде сходитися додля .lnn!n

Часткова похідна функції Лагранжа відносно призведе доnk~

Lnk~=lnnk~1α+βEk~.

Якщо встановити цю часткову похідну до нуля, ми можемо знайти

nk~=exp(βEk~)exp(1+α).()

Якщо ми повернемо це назад у ми можемо отримати()

exp(1+α)=1Nk=1Kexp(βEk).

Якщо ми повернемо це в ми отримаємо щось, що повинно нагадувати нам про функцію softmax()

nk~=exp(βEk~)1Nk=1Kexp(βEk).

Якщо ми визначимо як вірогідність класу по ми отримаємо щось, що насправді схоже на функцію softmaxnk~/NCk~pk~

pk~=exp(βEk~)k=1Kexp(βEk).

Отже, це свідчить про те, що функція softmax - це функція, яка максимізує ентропію в розподілі зображень. З цього моменту має сенс використовувати це як розподіл зображень. Якщо ми встановимо ми точно отримаємо визначення функції softmax для виводу .βEk~=wkTxkth

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