Loading AI tools
З Вікіпедії, вільної енциклопедії
В математиці, функція Softmax, або ж нормована експоненційна функція[1] — це узагальнення логістичної функції, що «стискує» K-вимірний вектор із довільним значеннями компонент до K-вимірного вектора з дійсними значеннями компонент в області [0, 1] що в сумі дають одиницю. Функція задається наступним чином:
В теорії ймовірності, результат софтмакс-функції може використовуватись для того щоб представити категорійний розподіл, тобто розподіл ймовірності при K різних можливих варіантах. Функція софтмакс використовується в різних методах багатокласової класифікації[en], таких, як наприклад мультиноміальна логістична регресія[en] (також відома як софтмакс-регресія)[1], багатокласовий лінійний розділювальний аналіз, наївний баєсів класифікатор, і штучні нейронні мережі.[2]
Назва «softmax» вводить в оману — функція не є згладженим максимумом (гладке наближення до функції максимуму), а є скоріше гладким наближенням до функції arg max — аргумента максимального значення функції. Насправді, термін «softmax» також використовується для тісно пов'язаної функції LogSumExp[en], яка є згладженим максимумом. З цієї причини дехто вважає кращим більш точний термін «softargmax», але термін «softmax» є прийнятим у машинному навчанні.[3] У цьому розділі використовується термін «softargmax», щоб підкреслити цю інтерпретацію.
У теорії ймовірностей значення функції softargmax можна використовувати для представлення категорійного розподілу, тобто розподілу ймовірностей для K різних можливих результатів.
У статистичній механіці функція Softargmax відома як розподіл Больцмана (або розподіл Гіббса):[4] набір індексів — мікростани системи; входи — енергії цих станів; знаменник відомий як статистична сума, часто позначається як Z ; а коефіцієнт β називається термодинамічна бета, або обернена температура.
Функція softmax використовується в різних методах багатокласової класифікації[en], таких як: мультиноміальна логістична регресія[en] (також відома як softmax регресія)[5][6], багатокласовий лінійний дискримінантний аналіз, наївних баєсівих класифікаторах та штучних нейронних мережах.[2] Зокрема, у мультиноміальній логістичній регресії та лінійному дискримінантному аналізі вхідними даними функції є результати K різних лінійних функцій, а прогнозована ймовірність для j-го класу з урахуванням вектора вибірки x і вектора ваги w є:
Це можна розглядати як композицію K лінійних функцій і функції softmax (де позначає внутрішній добуток і ). Операція еквівалентна застосуванню лінійного оператора, визначеного за допомогою до векторів , перетворюючи таким чином вхідний, можливо, багатовимірний, вектор аргументів на вектор у K -вимірному просторі .
Функція softmax часто використовується в останньому шарі класифікаторів на основі нейронних мереж. Такі мережі зазвичай навчаються за допомогою перехресної ентропії, що дає нелінійний варіант поліноміальної логістичної регресії.
Оскільки функція переводить вектор і певний індекс в дійсне число, то похідна повинна враховувати ще й індекс:
Цей вираз є симетричним відносно індексів та , тому він також може бути виражений як
Тут для простоти використовується символ Кронекера (похідна від сигмоїдної функції виражається через саму функцію).
Якщо функція масштабується за допомогою параметра , то ці вирази потрібно помножити на .
Див. Мультиноміальний logit[en] для ймовірнісної моделі, яка використовує функцію активації softmax.
У сфері навчання з підкріпленням функція softmax може використовуватися для перетворення значень у ймовірності дії. Зазвичай використовується наступна функція:[7]
де цінність дії відповідає очікуваній винагороді за наступну дію , а називається параметром температури (натяк на статистичну механіку). Для високих температур (), всі дії мають майже однакову ймовірність, а чим нижча температура, тим більше очікувана винагорода впливає на ймовірність обирання дії. Для низької температури (), ймовірність дії з найбільшою очікуваною винагородою наближається до 1.
Геометрично функція softmax відображає векторний простір на межі -вимірного симплекса, зменшуючи розмірність на одиницю (діапазоном значень стає -вимірний симплекс в -вимірному просторі), через лінійне обмеження, що сума елементів вихідного вектору дорівнює 1, що означає, що він лежить на гіперплощині.
По головній діагоналі softmax стає просто рівномірним розподілом, : рівні ваги дають рівні ймовірності.
Загалом, softmax є інваріантним щодо зсуву на одне й те саме значення в кожній координаті: додавання до вектору вхідних значень дає , оскільки softmax множить кожен показник на один і той же коефіцієнт, (тому що ), тобто співвідношення не змінюється:
Геометрично, softmax є постійним уздовж діагоналей: це відповідає тому, що вихідне значення softmax не залежить від зсуву вхідних значень. Можна нормалізувати вхідні бали, якщо сума дорівнює нулю (відняти середнє: , де ), тоді softmax відображає гіперплощину точок, сума яких дорівнює нулю, , до відкритого симплекса додатних значень, сума яких дорівнює 1: , аналогічно тому, як експонента відображає 0 на 1, .
Але softmax не є інваріантним відносно масштабування. Наприклад, але
Функція softmax — це градієнт функції LogSumExp[en] — згладженого максимуму.
де функція LogSumExp визначена як .
Якщо ми візьмемо вектор вхідних значень [1, 2, 3, 4, 1, 2, 3], то softmax цього вектору буде дорівнювати [0,024, 0,064, 0,175, 0,475, 0,024, 0,064, 0,175]. Результат застосування функції має найбільшу вагу там, де «4» у векторі вхідних даних. Це і є найчастішою метою застосування функції — відокремлення найбільших значень і придушення значень, що значно нижчі за максимальне. Але варто зауважити: softmax не є інваріантним відносно масштабування, тому якби вхідні дані були [0,1, 0,2, 0,3, 0,4, 0,1, 0,2, 0,3] (сума чого становить 1,6), softmax став би [0,125, 0,138, 0,153, 0,169, 0,153 0,125, 0,138, 0,153]. Це показує, що для значень від 0 до 1 softmax фактично деакцентує максимальне значення (зверніть увагу, що 0,169 не тільки менше 0,475, це також менше, ніж початкове відношення 0,4/1,6=0,25).
Коду мовою Python для обчислення для цього прикладу:
>>> import numpy as np
>>> a = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
>>> np.exp(a) / np.sum(np.exp(a))
array([0.02364054, 0.06426166, 0.1746813, 0.474833, 0.02364054,
0.06426166, 0.1746813])
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.