Практикум по цели обучения и оценке
Как сравнивать потери и перплексию
Разберите два отчёта об оценке языковой модели: проверьте сдвиг целей и знаменатель, пересчитайте перплексию и решите, что результат позволяет сравнить.
Что вы сможете сделать
- Объяснять цель предсказания следующего токена и проверять соответствие выходной позиции целевой метке.
- Различать исходные оценки классов, маску внимания и метки, исключённые из потерь.
- Вычислять среднюю отрицательную логарифмическую вероятность и перплексию по учитываемым целям.
- Проверять условия сравнения перплексии и отделять её от фактической точности ответа.
- Проверять независимость теста от обучения и отличать найденное пересечение от доказанного запоминания.
Поставьте два отчёта рядом
Сравнение имеет смысл, только если отчёты оценивают одни и те же цели по одному протоколу.
В задаче предсказания следующего токена вероятность последовательности — произведение вероятностей токенов при предыдущем контексте. Повышению этого произведения соответствует минимизация отрицательной суммы логарифмов вероятностей.
Проверить тезис: Обучение модели 12
Отрицательная логарифмическая вероятность (NLL) одной цели равна −ln p, где p — назначенная ей вероятность. Перед расчётом определите целевые позиции и контекст, доступный при каждом предсказании.
Проверить тезис: Обучение модели 12 · Самовнимание 02 · Кросс-энтропия 01
Синтетический пример оценки двух фиксированных вариантов, не потерь обучения разных запусков: один и тот же текст, токенизатор, контекст и протокол оценки; одинаковые четыре цели после сдвига, пять исключённых меток, натуральные логарифмы и равный вес целей. У A сумма отрицательных логарифмов вероятностей (NLL)=6, среднее 6/4=1,5; у B сумма=8, среднее 8/4=2. Ошибочный отчёт делит потери B на все девять позиций и получает 8/9≈0,89, поэтому объявляет B лучше. При правильном знаменателе эта победа исчезает: на этом наборе средняя NLL A ниже.
Проверьте сдвиг и знаменатель
Сначала найдите цели после сдвига, затем исключите метки и посчитайте знаменатель.
Логиты — исходные оценки возможных токенов до преобразования в вероятности. В GPT2LMHeadModel Transformers 4.44.2 при input_ids=labels=[A,B,C] в потери входят пары A→B и B→C. Модель исключает выход последней позиции и первую целевую метку. Чтобы включить C→D тем же способом, передайте [A,B,C,D] как вход и как labels: D автоматически не добавляется. DataCollatorForLanguageModeling при mlm=False копирует входные идентификаторы в метки, но не сдвигает их. Повторный сдвиг при подготовке меток нарушит пары.
Проверить тезис: Кросс-энтропия 02
Причинная маска закрывает будущие позиции. Вместе со сдвигом это означает: выход A предсказывает B, не видя B. Маска ограничивает контекст внимания, но не определяет, какие цели входят в среднюю потерю.
Проверьте расчёт потерь
Логиты, маска внимания и целевые метки отвечают за разные части расчёта.
CrossEntropyLoss PyTorch 2.9 принимает логиты и целевые индексы. Без весов классов и сглаживания, при reduction=mean, она усредняет −ln p правильного класса по учитываемым целям.
CrossEntropyLoss сама получает логарифмы вероятностей из логитов. Готовые вероятности вместо логитов меняют расчёт. NLLLoss, напротив, принимает уже логарифмы вероятностей.
Проверить тезис: Кросс-энтропия 04
В рассмотренном GPT2LMHeadModel attention_mask задаёт видимость позиций. Цель исключается из CrossEntropyLoss по значению ignore_index в её метке; маска внимания не заменяет это значение.
Проверить тезис: Кросс-энтропия 05
Сумма NLL равна 6 для трёх целей с одинаковым весом: среднее 6/3=2. Ещё три исключённые метки не увеличивают знаменатель.
Проверить тезис: Кросс-энтропия 03
Пересчитайте перплексию
Перплексия переводит среднюю NLL в другую шкалу, сохраняя зависимость от протокола оценки.
Для обычной средней NLL с натуральными логарифмами и одинаковым весом целей перплексия равна exp(NLL). Нельзя автоматически брать экспоненту любой величины, названной «потерей».
Проверить тезис: Перплексия языковой модели 01
Для двух целей с одинаковым весом и вероятностями 1/2 и 1/8 средняя NLL равна (ln 2+ln 8)/2=ln 4. Перплексия равна 4.
Проверить тезис: Перплексия языковой модели 02
Учебный пример для GPT2LMHeadModel Transformers 4.44.2: 12 токенов, длина окна 8, шаг 4. Метки копируют вход; −100 исключает повторные цели. В первом окне сдвиг оставляет 7 целей. Во втором первые 4 метки уже исключены: сдвиг удаляет исключённую метку, остаются 4 цели. При условных средних NLL 1 и 3 общая NLL=(7×1+4×3)/11=19/11; простое среднее окон 2 неверно.
Проверить тезис: Перплексия языковой модели 03 06 · Кросс-энтропия 02
Для сравнения зафиксируйте текст и токенизатор: другое разбиение строки меняет целевые единицы, по которым считается перплексия.
Проверить тезис: Перплексия языковой модели 04
Запишите длину и шаг окон, правила обработки специальных токенов, заполнителей и масок. Так можно восстановить доступный контекст и набор целей.
Проверить тезис: Перплексия языковой модели 05
Каждую цель учитывайте один раз. Число целей определяйте после сдвига и исключения меток, а не по длине окна. Окна без целей пропускайте до расчёта среднего. При нулевом общем числе целей средняя NLL и перплексия не определены.
Проверить тезис: Перплексия языковой модели 06
Меньшая перплексия не подтверждает истинность отдельного ответа. Для этого отдельно сверяют утверждения с источниками; метрика токенных вероятностей такой проверки не выполняет.
Проверить тезис: Перплексия языковой модели 07
Проверьте пересечения с обучающими данными
Правильный расчёт метрики ещё не показывает, что тест независим от обучения.
Если задания или их варианты попали в обучение, результат может отражать знакомство с тестом. Но совпавший исходный текст — ещё не найденная пара вопрос/ответ: сначала установите, что именно встретилось в корпусе.
Учебный пример: обе модели решали одни и те же 12 заданий. У A 10 верных ответов, у B — 9. Точный поиск в доступном обучающем корпусе A отметил четыре задания; на них у A 4 верных ответа, у B — 3. На остальных восьми у обеих по 6 верных ответов. Полная оценка: A — 10/12≈83,3%, B — 9/12=75%; после исключения одной и той же четвёрки у обеих 6/8=75%. Причина исходного различия не установлена. Пример вымышленный; состав обучения B неизвестен.
Запишите правило поиска: длину цепочек слов, обработку регистра и пунктуации. Поиск одинаковых цепочек может пропустить перефразирование или перевод. Ноль найденных совпадений — результат проверки доступного корпуса этим методом.
Редакторская рекомендация: сохраните обе оценки и списки заданий до и после исключения совпадений. Для сравнения моделей используйте один и тот же оставшийся набор. Укажите, какая часть обучающих данных недоступна для проверки.
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Источники курса
Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.
- Первичная публикация
Improving Language Understanding by Generative Pre-Training
Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever; OpenAI · 2018; §§3.1–3.2, equations 1–5; §4.1 Model specifications; PDF pp. 3, 5
§3.1, формулы 1–2 описывают авторегрессионную цель обучения. §3.2 относится к конкретному дообучению на размеченных данных; его нельзя переносить на все современные схемы дообучения. 26.10.2026 сверён §4.1: GPT-1 использует decoder-only Transformer с masked self-attention.
Открыть первоисточник - Первичная публикация
Attention Is All You Need
Ashish Vaswani и соавторы · arXiv:1706.03762v5, 6 декабря 2017; §§3.1–3.5
Прочитаны §§2, 3.1–3.2.3 и 4 (15.10.2026); 26.10.2026 дополнительно сверены §§3.3 и 3.5 для position-wise FFN и позиционного кодирования. Формулы и маска сверены с публикационным PDF NeurIPS 2017, с. 3–5.
Открыть первоисточник - Официальная документация
CrossEntropyLoss
PyTorch Contributors · PyTorch 2.9; indexed targets, ignore_index, weight and reduction semantics
Общая формула использована для определения кросс-энтропии. Примеры средней NLL по токенам ограничены индексными целями, weight=None, label_smoothing=0 и reduction=mean. Функция принимает логиты; иные веса и цели требуют другого расчёта.
Открыть первоисточник - Официальная документация
Transformers v4.44.2: GPT-2 model implementation
Hugging Face · Transformers v4.44.2; GPT2LMHeadModel.forward, lines 1308–1348
Код v4.44.2 прочитан локально, не исполнен. Утверждение о сдвиге ограничено GPT2LMHeadModel этой версии: исключаются вектор логитов последней позиции и первая целевая метка, затем вызывается CrossEntropyLoss.
Открыть первоисточник - Официальная документация
Transformers v4.44.2: data collators
Hugging Face · Transformers v4.44.2; DataCollatorForLanguageModeling, lines 803–825
При mlm=False DataCollatorForLanguageModeling копирует input_ids в labels, а метки с pad_token_id заменяет на −100. Сдвиг выполняет модель. Если заполнителю и концу последовательности назначен один ID, метки исключаются по этому ID.
Открыть первоисточник - Официальная документация
Perplexity of fixed-length models
Hugging Face · Transformers 4.44.2; Perplexity; Calculating PPL with fixed-length models
Прочитаны определение, токенизация, ограничения контекста и рецепт окон. Именно v4.44.2 усредняет средние окон с одинаковым весом, а комментарий trg_len−1 неверен для перекрытия, когда первая метка уже исключена. Эти части рецепта не используются как точный расчёт NLL по токенам.
Открыть первоисточник - Первичная публикация
Rethinking Benchmark and Contamination for Language Models with Rephrased Samples
Shuo Yang et al., UC Berkeley / Shanghai Jiao Tong University · arXiv:2311.04850v2, 11.11.2023; sections 2, 5.1–5.2, tables 5–6
В исследованных MMLU и HumanEval показан пропуск перефразировок при поиске совпадающих цепочек слов. Эти результаты не устанавливают частоту пропусков для других моделей и наборов данных.
Открыть первоисточник - Первичная публикация
Language Models are Few-Shot Learners
OpenAI · arXiv:2005.14165v4, 22.07.2020; section 4 and Appendix C
Раздел 4 различает исходный контекст и пару вопрос/ответ; приложение C описывает поиск совпадений. Удаление найденных примеров меняет состав оценки. Это исследование GPT-3, не проверка современных моделей.
Открыть первоисточник