Пояснення перехресної ентропії


35

Припустимо, я будую НН для класифікації. Останній шар - щільний шар з активацією softmax. У мене є п'ять різних класів для класифікації. Припустимо, для єдиного прикладу тренувань true labelє [1 0 0 0 0]прогнози, поки це буде [0.1 0.5 0.1 0.1 0.2]. Як би я обчислив перехресну втрату ентропії для цього прикладу?

Відповіді:


50

Хрест ентропії формула приймає в двох розподілів, p(x) , дійсний розподіл, і q(x) , за оцінками , розподілу, визначених над дискретної змінної x і задається

H(p,q)=xp(x)log(q(x))

Для нейронної мережі обчислення не залежить від наступного:

  • Який шар був використаний.

  • Який тип активації був використаний - хоча багато активацій не будуть сумісні з обчисленням, оскільки їхні результати не інтерпретуються як ймовірності (тобто їхні результати негативні, більше 1, або не дорівнюють 1). Softmax часто використовується для багатокласової класифікації, оскільки гарантує добре функціонування розподілу ймовірностей.

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

L=ylog(y^)

де добуток векторної крапки.

Ваш приклад землі істина y дають всі ймовірності першої величину, а інші значення рівні нуль, так що ми можемо їх ігнорувати, і просто використовувати термін відповідності з ваших оцінок уy^

L=(1×log(0.1)+0×log(0.5)+...)

L=log(0.1)2.303

Важливий момент із коментарів

Це означає, що втрата була б однаковою, незалежно від того, якщо прогнози становлять [0.1,0.5,0.1,0.1,0.2] або [0.1,0.6,0.1,0.1,0.1] ?

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

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

J=1N(i=1Nyilog(y^i))

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


1
Гаразд. Це означає, що втрата була б однаковою, незалежно від того, якщо прогнози [0,1 0,5 0,1 0,1 0,2] чи [0,1 0,6 0,1 0,1 0,1]?
Найн

@Nain: Це правильно для вашого прикладу. Перехресна ентропія втрати не залежить від того, якими є значення неправильних ймовірностей класу.
Ніл Слейтер

8

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


3
Чи можете ви розробити це належним прикладом?
Найн

@Lucas Adams, чи можете ви навести приклад?
корякінп

Похідна від EACH y_i (softmax вихід) wrt EACH logit z (або сам параметр w) залежить від КОЖНОГО y_i. medium.com/@aerinykim/…
Аарон

2

Подивимося, як поводиться градієнт втрати ... У нас є крос-ентропія як функція втрат, яку задає

H(p,q)=i=1np(xi)log(q(xi))=(p(x1)log(q(x1))++p(xn)log(q(xn))

Ідучи звідси .., ми б хотіли знати похідну відносно деяких : xi Оскільки всі інші умови скасовуються через диференціацію. Ми можемо зробити це рівняння на крок далі до

xiH(p,q)=xip(xi)log(q(xi)).
xiH(p,q)=p(xi)1q(xi)q(xi)xi.

p(xi)

Мені цікаво, як програмні пакети мають справу з передбачуваним значенням 0, тоді як справжнє значення було більше нуля ... Оскільки в цьому випадку ми ділимо на нуль.


Я думаю, що ви хочете, щоб взяти похідний параметр wrt, а не wrt x_i.
Аарон

1

Почнемо з розуміння ентропії в теорії інформації: Припустимо, ви хочете повідомити рядок алфавітів "aaaaaaaa". Ви можете легко зробити це як 8 * "a". Тепер візьміть ще один рядок "jteikfqa". Чи існує стислий спосіб передачі цього рядка? Нема там. Можна сказати, що ентропія 2-го рядка більше, оскільки для передачі її нам потрібно більше "бітів" інформації.

log2(n)log2(1/8)

i=1818log2(18)=3

У «крос» -ентропії, як випливає з назви, ми зупинимося на кількості бітів, необхідних для пояснення різниці у двох різних розподілах ймовірностей. Найкращий сценарій полягає в тому, що обидва розподіли однакові, і в цьому випадку потрібно найменша кількість бітів, тобто проста ентропія. Математично,

H(y,y^)=iyiloge(y^i)

y^y

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


0

Я не згоден з Лукасом. Наведені вище значення - це вже ймовірності. Зауважте, що початковий пост вказував на те, що значення активували програмне забезпечення softmax.

Помилка поповнюється лише на "гарячому" класі, і ймовірність Q (i) не змінюється, якщо ймовірності в інших класах зміщуються між собою.


2
Лукас правильний. У архітектурі, описаній ОП, тоді градієнт у всіх логітах (на відміну від виходів) не дорівнює нулю, оскільки функція softmax з'єднує їх усіх. Отже помилка [градієнт] класу "гарячого" поширюється на всі вихідні нейрони.
Ніл Слейтер

+1 для Ніла та Лукаса
Аарон

-1

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

piyi

Інший акуратний опис на сайті gombru.github.io/2018/05/23/cross_entropy_loss .

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


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