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

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

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

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

Виведення функції крос-ентропії

Щоб зрозуміти крос-ентропію, почнемо з принципу максимальної правдоподібності. У задачі бінарної класифікації мета — навчити модель оцінювати ймовірність 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Функція Втрат

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

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

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

Виведення функції крос-ентропії

Щоб зрозуміти крос-ентропію, почнемо з принципу максимальної правдоподібності. У задачі бінарної класифікації мета — навчити модель оцінювати ймовірність 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