Softmax

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

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

σ:K[0,1]K
σ(𝐳)j=ezjk=1Kezk    for j = 1, …, K.

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

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

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

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

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

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

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

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

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

Функція softmax використовується в різних Шаблон:Нп, таких як: Шаблон:Нп (також відома як softmax регресія)[4]Шаблон:Rp[5], багатокласовий лінійний дискримінантний аналіз, наївних баєсівих класифікаторах та штучних нейронних мережах.[2] Зокрема, у мультиноміальній логістичній регресії та лінійному дискримінантному аналізі вхідними даними функції є результати Шаблон:Mvar різних лінійних функцій, а прогнозована ймовірність для Шаблон:Mvar-го класу з урахуванням вектора вибірки Шаблон:Math і вектора ваги Шаблон:Math є:

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

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

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

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

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

qkσ(q,i)=σ(q,i)(δikσ(q,k)).


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

qkσ(q,i)=σ(q,k)(δikσ(q,i)).

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

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

Див. Шаблон:Нп для ймовірнісної моделі, яка використовує функцію активації softmax.

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

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

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

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

Властивості

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

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

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

σ(𝐳+𝐜)j=ezj+ck=1Kezk+c=ezjeck=1Kezkec=σ(𝐳)j.

Геометрично, softmax є постійним уздовж діагоналей: це відповідає тому, що вихідне значення softmax не залежить від зсуву вхідних значень. Можна нормалізувати вхідні бали, якщо сума дорівнює нулю (відняти середнє: 𝐜, де c=1nzi), тоді 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 — це градієнт функції Шаблон:Нп — згладженого максимуму.

ziLSE(𝐳)=expzij=1Kexpzj=σ(𝐳)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])

Примітки

Шаблон:Reflist

Шаблон:Перекласти

Шаблон:Диференційовні обчислення