Alterna · учебный материал
04.5 Как штрафовать неверную уверенность
Если модель дала правильному исходу очень маленькую долю, штраф должен быть большим. Разберём средний штраф и отличие от собственной неопределённости данных.
Что в этом материале
- Неожиданность под неправильной моделью
Содержание и основные понятия
На предыдущей странице: сколько неизвестности осталось.
Если модель дала правильному исходу очень маленькую долю, штраф должен быть большим. Разберём средний штраф и отличие от собственной неопределённости данных.
Модель даёт каждому из4кандидатов вероятность1/4.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Неожиданность под неправильной моделью
Пусть истинное/целевое распределение p, а прогноз модели q на
тех же
категориях. Средний штраф−ln qᵢ взвешиваем частотами p, а не q:
H
(
p
,
q
)
=
−
∑
i
p
i
ln
q
i
,
D
K
L
(
p
∥
q
)
=
∑
i
p
i
ln
p
i
q
i
=
H
(
p
,
q
)
−
H
(
p
)
.
H(p,q)=-\sum_i p_i\ln q_i,\qquad
D_{KL}(p\Vert q)=\sum_i p_i\ln\frac{p_i}{q_i}=H(p,q)-H(p).
H
(
p
,
q
)
=
−
i
∑
p
i
ln
q
i
,
D
K
L
(
p
∥
q
)
=
i
∑
p
i
ln
q
i
p
i
=
H
(
p
,
q
)
−
H
(
p
)
.
При фиксированном p минимизация CE по q эквивалентна минимизации KL. Для нормированных дискретных распределений KL≥0, равенство при p=q. Неотрицательность следует из ln t≤t−1; её нельзя «обеспечивать» модулем ошибочного результата. M04,M07.
Для p=[.5,.25,.25],q=[.25,.5,.25]: H(p)=1.039720771,CE=1.213007566,KL=.173286795=ln2/4. Если q=p, CE не обязана быть0: она равна энтропии target. Для one-hot target категорииj энтропия0 и CE=−ln qⱼ.
Граница.
Если pᵢ>0,qᵢ=0, CE и KL бесконечны: модель запретила возможный целевой исход. Это содержательный математический результат, не NaN. Если pᵢ=0, вклад0 независимо от qᵢ. При p=q с нулевыми координатами KL остаётся0.
Исследовать.
При неизменном p постепенно уменьшайте q одной частой категории до0. Штраф растёт неограниченно. Затем поменяйте p и q местами: KL вообще несимметрична и не является метрикой расстояния. В частности, для[1,0] и[.5,.5] одно направление равно ln2, обратное бесконечно.
from math import log
p,q = [.5,.25,.25],[.25,.5,.25]
ce = -sum(a*log(b) for a,b in zip(p,q) if a>0)
kl = sum(a*log(a/b) for a,b in zip(p,q) if a>0)
assert abs(ce-kl-1.5*log(2))<1e-12
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Сначала измеряется ошибка правильного ответа. Экспонента переводит среднюю ошибку в другой масштаб; качество текста этим не исчерпывается.
Ошибка в масштабе числа вариантов. Как этот вопрос продолжает полученный результат?
Python-примеры главы 04
Академическая база →