GPU, ускорители и инфраструктура LLM

Кросс-энтропия

Определение

Кросс-энтропия — функция, усредняющая отрицательные логарифмы предсказанных вероятностей с весами из целевого распределения. Для одной правильной цели она равна −ln p, где p — вероятность, назначенная ей моделью.

Также ищут: cross-entropy · cross entropy · перекрёстная энтропия

Зачем это знать

Средняя потеря зависит не только от предсказаний, но и от того, какие цели учтены. Проверка сдвига и знаменателя помогает обнаружить ошибку расчёта до сравнения моделей.

Связи из словаря

Карта понятия

Доказательная часть

Что подтверждено

  1. В PyTorch 2.9 для целей, заданных индексами классов, при weight=None, label_smoothing=0 и reduction=mean CrossEntropyLoss усредняет −ln p по учитываемым целям. Здесь p — вероятность правильного класса; −ln p называют отрицательной логарифмической вероятностью (NLL).

    Граница применимости: PyTorch 2.9: цели заданы индексами классов, без весов классов и сглаживания. Для распределений в качестве целей и дополнительных компонентов потерь расчёт определяют отдельно.

  2. В 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 копирует входные идентификаторы в метки, но не сдвигает их.

    Граница применимости: Только показанный путь GPT2LMHeadModel и DataCollatorForLanguageModeling в Transformers 4.44.2; для другой модели или версии проверьте реализацию.

  3. В учебном примере после сдвига остаются шесть целевых меток: три учитываются, а три исключены значением −100. Если сумма отрицательных логарифмических вероятностей (NLL) учитываемых целей равна 6 и цели имеют одинаковый вес, среднее равно 6/3=2. Исключённые метки не входят в знаменатель.

    Граница применимости: Учебная арифметика для CrossEntropyLoss: цели заданы индексами классов, weight=None, label_smoothing=0, reduction=mean; учитываются три цели. Это не измерение модели.

  4. CrossEntropyLoss принимает логиты — исходные оценки классов до преобразования в вероятности — и вычисляет логарифмы нормированных вероятностей через log-softmax. Если подать вместо логитов вероятности после softmax, функция обработает их как исходные оценки; это не эквивалентная замена логитов. NLLLoss принимает уже логарифмы вероятностей.

    Граница применимости: PyTorch 2.9 API для CrossEntropyLoss и NLLLoss; другие функции потерь могут задавать иной входной контракт.

  5. В GPT2LMHeadModel из Transformers 4.44.2 attention_mask управляет видимостью позиций во внимании. Чтобы исключить цель из CrossEntropyLoss, её метке задают значение ignore_index. Одна маска внимания не заменяет исключение целевой метки.

    Граница применимости: GPT2LMHeadModel Transformers 4.44.2 при переданных labels; вывод не переносится на другие модели или настройки обучения без проверки реализации.

Перед спецификацией

Что проверить

  1. Уточните вход функции потерь: логиты — исходные оценки классов до преобразования в вероятности — или уже логарифмы вероятностей.
  2. Проверьте соответствие выходной позиции целевому токену после сдвига.
  3. Посчитайте цели после сдвига и исключения меток. Если их нет, средняя потеря не определена; не делите на ноль.
Открытые основания

Первоисточники

  • Документация3
  • Официальная документация
    CrossEntropyLoss PyTorch Contributors · PyTorch 2.9; indexed targets, ignore_index, weight and reduction semantics · проверено

    Общая формула использована для определения кросс-энтропии. Примеры средней NLL по токенам ограничены индексными целями, weight=None, label_smoothing=0 и reduction=mean. Функция принимает логиты; иные веса и цели требуют другого расчёта.

    Утверждения: 01 · 03 · 04 · 05

  • Официальная документация
    Transformers v4.44.2: GPT-2 model implementation Hugging Face · Transformers v4.44.2; GPT2LMHeadModel.forward, lines 1308–1348 · проверено

    Код v4.44.2 прочитан локально, не исполнен. Утверждение о сдвиге ограничено GPT2LMHeadModel этой версии: исключаются вектор логитов последней позиции и первая целевая метка, затем вызывается CrossEntropyLoss.

    Утверждения: 02 · 03 · 05

  • Официальная документация
    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.

    Утверждения: 02

Подтвердите действие