alterna ai
ALTERNA AI / ГЛАВА 04 · 06

04.6 Ошибка в масштабе числа вариантов

На предыдущей странице: как штрафовать неверную уверенность.

Из средней ошибки можно получить показатель, похожий на число равноправных вариантов. Это удобное сравнение моделей, но не оценка истинности их ответа.

Модель даёт каждому из4кандидатов вероятность1/4.

Удобный масштаб средней log-loss

На фиксированной последовательности длиныN модель оценивает вероятность наблюдённого следующего токена при каждом префиксе. Средняя отрицательная log-probability внатах обозначается CE_token. Perplexity определена как её экспонента:

CEtoken=−1N∑t=1Nln⁡q(tt∣t<t),PP=exp⁡(CEtoken).\mathrm{CE}_{token}=-\frac1N\sum_{t=1}^{N}\ln q(t_t\mid t_{<t}),\qquad PP=\exp(\mathrm{CE}_{token}).

Это обратная геометрическая средняя вероятностей правильных токенов. Если для двух наблюдений они равны.5и.25, CE=−(ln.5+ln.25)/2=1.039720771 и PP=√8≈2.828427. Если модель равномерна поk исходам, PP=k. Для log₂ вместоln правильно PP=2^CE_bits, не exp(CE_bits).

Лаборатория показывает exp(H(p,q)) для введённого категориального target p: это ожидаемая perplexity относительно этого p. Она становится оценкой корпуса, если p соответствует эмпирическим частотам нужных событий с согласованным контекстным оцениванием. Нельзя выдавать этот трёхкатегориальный опыт за benchmark настоящей LLM.

Легко ошибиться. Сравнение perplexity моделей с разными tokenizer, корпусами или правилом усреднения напрямую некорректно. Низкая PP не означает истинности ответа, безопасного поведения или умения использовать tools. На маленькой обучающей выборке PP может уменьшаться при ухудшении переноса.

Синтез. Мы получили целевую функцию, differentiable по logits: softmax плюс CE для one-hot target имеет производную q−p. Вывод раскрывается через производную logsumexp: ∂logΣexp(z)/∂zⱼ=qⱼ, затем вычитается target-вклад. Теперь известны и ошибка, и её чувствительность. Осталось выбрать процедуру обновления: оптимизация.

from math import log, exp, sqrt
observed = [.5,.25]
ce = -sum(log(p) for p in observed)/len(observed)
assert abs(exp(ce)-sqrt(8))<1e-12

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Сначала измеряется ошибка правильного ответа. Экспонента переводит среднюю ошибку в другой масштаб; качество текста этим не исчерпывается.

Теперь известны ошибка и её производные. Как выполнить полезное исправление?

Python-примеры главы 04 Академическая база →