Функція Втрат
Під час навчання нейронної мережі необхідно мати спосіб оцінити, наскільки добре працює наша модель. Для цього використовується функція втрат, яка кількісно визначає різницю між передбаченими вихідними значеннями та фактичними цільовими значеннями. Мета навчання — мінімізувати цю втрату, роблячи наші передбачення якомога ближчими до реальних значень.
Однією з найпоширеніших функцій втрат для бінарної класифікації є крос-ентропійна втрата, яка добре працює з моделями, що видають ймовірності.
Виведення крос-ентропійної втрати
Щоб зрозуміти крос-ентропійну втрату, почнемо з принципу максимальної правдоподібності. У задачі бінарної класифікації мета — навчити модель оцінювати ймовірність y^ того, що певний вхід належить до класу 1. Фактична мітка y може бути 0 або 1.
Хороша модель повинна максимізувати ймовірність правильного передбачення всіх навчальних прикладів. Це означає, що ми хочемо максимізувати функцію правдоподібності, яка відображає ймовірність спостереження даних за передбаченнями моделі.
Для одного навчального прикладу, за умови незалежності, правдоподібність можна записати так:
P(y∣x)=y^y(1−y^)1−yЦей вираз означає:
- Якщо y=1, тоді P(y∣x)=y^, тобто ми прагнемо максимізувати y^ (ймовірність, призначену класу 1);
- Якщо y=0, тоді P(y∣x)=1−y^, тобто ми прагнемо максимізувати 1−y^ (ймовірність, призначену класу 0).
P(y∣x) означає ймовірність спостереження фактичної мітки класу y за умови вхідних даних x.
Для спрощення оптимізації використовують логарифмічну ймовірність замість самої ймовірності (оскільки логарифми перетворюють добутки на суми, що спрощує диференціювання):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Оскільки метою є максимізація, визначаємо функцію втрат як від’ємну логарифмічну ймовірність, яку необхідно мінімізувати:
L=−(ylog(y^)+(1−y)log(1−y^))Це функція втрат бінарної крос-ентропії, яка часто використовується для задач класифікації.
Якщо змінна output
представляє y^ для певного навчального прикладу, а змінна target
представляє y для цього прикладу, цю функцію втрат можна реалізувати наступним чином:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Чому саме ця формула?
Функція втрат крос-ентропії має чітке інтуїтивне пояснення:
- Якщо y=1, втрата спрощується до −log(y^), тобто втрата низька, коли y^ близьке до 1, і дуже висока, коли y^ близьке до 0;
- Якщо y=0, втрата спрощується до −log(1−y^), тобто втрата низька, коли y^ близьке до 0, і дуже висока, коли y^ близьке до 1.
Оскільки логарифми стають дуже від’ємними при наближенні аргументу до нуля, неправильні передбачення сильно штрафуються, що стимулює модель робити впевнені та правильні передбачення.
Якщо під час прямого проходження передається кілька прикладів, загальна втрата обчислюється як середнє значення втрат по всіх прикладах:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))де N — кількість навчальних зразків.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 4
Функція Втрат
Свайпніть щоб показати меню
Під час навчання нейронної мережі необхідно мати спосіб оцінити, наскільки добре працює наша модель. Для цього використовується функція втрат, яка кількісно визначає різницю між передбаченими вихідними значеннями та фактичними цільовими значеннями. Мета навчання — мінімізувати цю втрату, роблячи наші передбачення якомога ближчими до реальних значень.
Однією з найпоширеніших функцій втрат для бінарної класифікації є крос-ентропійна втрата, яка добре працює з моделями, що видають ймовірності.
Виведення крос-ентропійної втрати
Щоб зрозуміти крос-ентропійну втрату, почнемо з принципу максимальної правдоподібності. У задачі бінарної класифікації мета — навчити модель оцінювати ймовірність y^ того, що певний вхід належить до класу 1. Фактична мітка y може бути 0 або 1.
Хороша модель повинна максимізувати ймовірність правильного передбачення всіх навчальних прикладів. Це означає, що ми хочемо максимізувати функцію правдоподібності, яка відображає ймовірність спостереження даних за передбаченнями моделі.
Для одного навчального прикладу, за умови незалежності, правдоподібність можна записати так:
P(y∣x)=y^y(1−y^)1−yЦей вираз означає:
- Якщо y=1, тоді P(y∣x)=y^, тобто ми прагнемо максимізувати y^ (ймовірність, призначену класу 1);
- Якщо y=0, тоді P(y∣x)=1−y^, тобто ми прагнемо максимізувати 1−y^ (ймовірність, призначену класу 0).
P(y∣x) означає ймовірність спостереження фактичної мітки класу y за умови вхідних даних x.
Для спрощення оптимізації використовують логарифмічну ймовірність замість самої ймовірності (оскільки логарифми перетворюють добутки на суми, що спрощує диференціювання):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Оскільки метою є максимізація, визначаємо функцію втрат як від’ємну логарифмічну ймовірність, яку необхідно мінімізувати:
L=−(ylog(y^)+(1−y)log(1−y^))Це функція втрат бінарної крос-ентропії, яка часто використовується для задач класифікації.
Якщо змінна output
представляє y^ для певного навчального прикладу, а змінна target
представляє y для цього прикладу, цю функцію втрат можна реалізувати наступним чином:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Чому саме ця формула?
Функція втрат крос-ентропії має чітке інтуїтивне пояснення:
- Якщо y=1, втрата спрощується до −log(y^), тобто втрата низька, коли y^ близьке до 1, і дуже висока, коли y^ близьке до 0;
- Якщо y=0, втрата спрощується до −log(1−y^), тобто втрата низька, коли y^ близьке до 0, і дуже висока, коли y^ близьке до 1.
Оскільки логарифми стають дуже від’ємними при наближенні аргументу до нуля, неправильні передбачення сильно штрафуються, що стимулює модель робити впевнені та правильні передбачення.
Якщо під час прямого проходження передається кілька прикладів, загальна втрата обчислюється як середнє значення втрат по всіх прикладах:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))де N — кількість навчальних зразків.
Дякуємо за ваш відгук!