Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Функція Втрат | Нейронна Мережа з Нуля
Вступ до нейронних мереж

bookФункція Втрат

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

Однією з найпоширеніших функцій втрат для бінарної класифікації є крос-ентропійна втрата, яка добре працює з моделями, що видають ймовірності.

Виведення крос-ентропійної втрати

Щоб зрозуміти крос-ентропійну втрату, почнемо з принципу максимальної правдоподібності. У задачі бінарної класифікації мета — навчити модель оцінювати ймовірність y^\hat{y} того, що певний вхід належить до класу 1. Фактична мітка yy може бути 0 або 1.

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

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

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Цей вираз означає:

  • Якщо y=1y = 1, тоді P(yx)=y^P(y|x) = \hat{y}, тобто ми прагнемо максимізувати y^\hat{y} (ймовірність, призначену класу 1);
  • Якщо y=0y = 0, тоді P(yx)=1y^P(y|x) = 1 - \hat{y}, тобто ми прагнемо максимізувати 1y^1 - \hat{y} (ймовірність, призначену класу 0).
Note
Примітка

P(yx)P(y|x) означає ймовірність спостереження фактичної мітки класу yy за умови вхідних даних xx.

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

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Оскільки метою є максимізація, визначаємо функцію втрат як від’ємну логарифмічну ймовірність, яку необхідно мінімізувати:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Це функція втрат бінарної крос-ентропії, яка часто використовується для задач класифікації.

Якщо змінна output представляє y^\hat{y} для певного навчального прикладу, а змінна target представляє yy для цього прикладу, цю функцію втрат можна реалізувати наступним чином:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Чому саме ця формула?

Функція втрат крос-ентропії має чітке інтуїтивне пояснення:

  • Якщо y=1y = 1, втрата спрощується до log(y^)-\log(\hat{y}), тобто втрата низька, коли y^\hat{y} близьке до 1, і дуже висока, коли y^\hat{y} близьке до 0;
  • Якщо y=0y = 0, втрата спрощується до log(1y^)-\log(1 - \hat{y}), тобто втрата низька, коли y^\hat{y} близьке до 0, і дуже висока, коли y^\hat{y} близьке до 1.

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

Якщо під час прямого проходження передається кілька прикладів, загальна втрата обчислюється як середнє значення втрат по всіх прикладах:

L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

де NN — кількість навчальних зразків.

question mark

Яке з наведених тверджень найкраще описує призначення функції втрат крос-ентропії у бінарній класифікації?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 4

bookФункція Втрат

Свайпніть щоб показати меню

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

Однією з найпоширеніших функцій втрат для бінарної класифікації є крос-ентропійна втрата, яка добре працює з моделями, що видають ймовірності.

Виведення крос-ентропійної втрати

Щоб зрозуміти крос-ентропійну втрату, почнемо з принципу максимальної правдоподібності. У задачі бінарної класифікації мета — навчити модель оцінювати ймовірність y^\hat{y} того, що певний вхід належить до класу 1. Фактична мітка yy може бути 0 або 1.

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

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

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Цей вираз означає:

  • Якщо y=1y = 1, тоді P(yx)=y^P(y|x) = \hat{y}, тобто ми прагнемо максимізувати y^\hat{y} (ймовірність, призначену класу 1);
  • Якщо y=0y = 0, тоді P(yx)=1y^P(y|x) = 1 - \hat{y}, тобто ми прагнемо максимізувати 1y^1 - \hat{y} (ймовірність, призначену класу 0).
Note
Примітка

P(yx)P(y|x) означає ймовірність спостереження фактичної мітки класу yy за умови вхідних даних xx.

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

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Оскільки метою є максимізація, визначаємо функцію втрат як від’ємну логарифмічну ймовірність, яку необхідно мінімізувати:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Це функція втрат бінарної крос-ентропії, яка часто використовується для задач класифікації.

Якщо змінна output представляє y^\hat{y} для певного навчального прикладу, а змінна target представляє yy для цього прикладу, цю функцію втрат можна реалізувати наступним чином:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Чому саме ця формула?

Функція втрат крос-ентропії має чітке інтуїтивне пояснення:

  • Якщо y=1y = 1, втрата спрощується до log(y^)-\log(\hat{y}), тобто втрата низька, коли y^\hat{y} близьке до 1, і дуже висока, коли y^\hat{y} близьке до 0;
  • Якщо y=0y = 0, втрата спрощується до log(1y^)-\log(1 - \hat{y}), тобто втрата низька, коли y^\hat{y} близьке до 0, і дуже висока, коли y^\hat{y} близьке до 1.

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

Якщо під час прямого проходження передається кілька прикладів, загальна втрата обчислюється як середнє значення втрат по всіх прикладах:

L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

де NN — кількість навчальних зразків.

question mark

Яке з наведених тверджень найкраще описує призначення функції втрат крос-ентропії у бінарній класифікації?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 6
some-alt