factograf
UK
Увійти

Softmax

В математиці, функція Softmax, або ж нормована експоненційна функція:198 — це узагальнення логістичної функції, що «стискує» K-вимірний вектор 𝐳 із довільним значеннями компонент до K-вимірного вектора σ(𝐳) з дійсними значеннями компонент в області [0, 1] що в сумі дають одиницю. Функція задається наступним чином:

σ:ℝK→[0,1]K
σ(𝐳)j=ezj∑k=1Kezk    for j = 1, …, K.

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

Інтерпретації

Згладжений arg max

Назва «softmax» вводить в оману — функція не є згладженим максимумом (гладке наближення до функції максимуму), а є скоріше гладким наближенням до функції arg max — аргумента максимального значення функції. Насправді, термін «softmax» також використовується для тісно пов'язаної функції LogSumExp, яка є згладженим максимумом. З цієї причини дехто вважає кращим більш точний термін «softargmax», але термін «softmax» є прийнятим у машинному навчанні. У цьому розділі використовується термін «softargmax», щоб підкреслити цю інтерпретацію.

Теорія ймовірностей

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

Статистична механіка

У статистичній механіці функція Softargmax відома як розподіл Больцмана (або розподіл Гіббса)::7набір індексів 1,…,k — мікростани системи; входи zi — енергії цих станів; знаменник відомий як статистична сума, часто позначається як Z; а коефіцієнт β називається термодинамічна бета, або обернена температура.

Застосування

Функція softmax використовується в різних методах багатокласової класифікації, таких як: мультиноміальна логістична регресія (також відома як softmax регресія):206–209, багатокласовий лінійний дискримінантний аналіз, наївних баєсівих класифікаторах та штучних нейронних мережах. Зокрема, у мультиноміальній логістичній регресії та лінійному дискримінантному аналізі вхідними даними функції є результати K різних лінійних функцій, а прогнозована ймовірність для j-го класу з урахуванням вектора вибірки x і вектора ваги w є:

P(y=j∣𝐱)=e𝐱𝖳𝐰j∑k=1Ke𝐱𝖳𝐰k

Це можна розглядати як композицію K лінійних функцій 𝐱↦𝐱𝖳𝐰1,…,𝐱↦𝐱𝖳𝐰K і функції softmax (де 𝐱𝖳𝐰 позначає внутрішній добуток 𝐱 і 𝐰). Операція еквівалентна застосуванню лінійного оператора, визначеного за допомогою 𝐰 до векторів 𝐱, перетворюючи таким чином вхідний, можливо, багатовимірний, вектор аргументів на вектор у K -вимірному просторі ℝK.

Нейронні мережі

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

Оскільки функція переводить вектор 𝐪 і певний індекс i в дійсне число, то похідна повинна враховувати ще й індекс:

∂∂qkσ(𝐪,i)=σ(𝐪,i)(δik−σ(𝐪,k)).


Цей вираз є симетричним відносно індексів i та k, тому він також може бути виражений як

∂∂qkσ(𝐪,i)=σ(𝐪,k)(δik−σ(𝐪,i)).

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

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

Див. Мультиноміальний logit для ймовірнісної моделі, яка використовує функцію активації softmax.

Навчання з підкріпленням

У сфері навчання з підкріпленням функція softmax може використовуватися для перетворення значень у ймовірності дії. Зазвичай використовується наступна функція:

Pt(a)=exp⁡(qt(a)/τ)∑i=1nexp⁡(qt(i)/τ),

де цінність дії qt(a) відповідає очікуваній винагороді за наступну дію a, а τ називається параметром температури (натяк на статистичну механіку). Для високих температур (τ→∞), всі дії мають майже однакову ймовірність, а чим нижча температура, тим більше очікувана винагорода впливає на ймовірність обирання дії. Для низької температури (τ→0+), ймовірність дії з найбільшою очікуваною винагородою наближається до 1.

Властивості

Геометрично функція softmax відображає векторний простір ℝK на межі (K−1)-вимірного симплекса, зменшуючи розмірність на одиницю (діапазоном значень стає (K−1)-вимірний симплекс в K-вимірному просторі), через лінійне обмеження, що сума елементів вихідного вектору дорівнює 1, що означає, що він лежить на гіперплощині.

По головній діагоналі (x,x,…,x), softmax стає просто рівномірним розподілом, (1/n,…,1/n): рівні ваги дають рівні ймовірності.

Загалом, softmax є інваріантним щодо зсуву на одне й те саме значення в кожній координаті: додавання 𝐜=(c,…,c) до вектору вхідних значень 𝐳 дає σ(𝐳+𝐜)=σ(𝐳), оскільки softmax множить кожен показник на один і той же коефіцієнт, ec (тому що ezi+c=ezi⋅ec), тобто співвідношення не змінюється:

σ(𝐳+𝐜)j=ezj+c∑k=1Kezk+c=ezj⋅ec∑k=1Kezk⋅ec=σ(𝐳)j.

Геометрично, softmax є постійним уздовж діагоналей: це відповідає тому, що вихідне значення softmax не залежить від зсуву вхідних значень. Можна нормалізувати вхідні бали, якщо сума дорівнює нулю (відняти середнє: 𝐜, де c=1n∑zi), тоді softmax відображає гіперплощину точок, сума яких дорівнює нулю, ∑zi=0, до відкритого симплекса додатних значень, сума яких дорівнює 1: ∑σ(𝐳)i=1, аналогічно тому, як експонента відображає 0 на 1, e0=1.

Але softmax не є інваріантним відносно масштабування. Наприклад, σ((0,1))=(1/(1+e),e/(1+e)) але

σ((0,2))=(1/(1+e2),e2/(1+e2)).

Функція softmax — це градієнт функції LogSumExp — згладженого максимуму.

∂∂ziLSE⁡(𝐳)=exp⁡zi∑j=1Kexp⁡zj=σ(𝐳)i, for i=1,…,K,𝐳=(z1,…,zK)∈ℝK,

де функція LogSumExp визначена як LSE⁡(z1,…,zn)=log⁡(exp⁡(z1)+⋯+exp⁡(zn)).

Приклад

Якщо ми візьмемо вектор вхідних значень [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])

Читати далі

20 мовами

Текст із Вікіпедії, CC BY-SA 4.0 · Стаття-джерело