English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

гость
1 / ?
назад к урокам

Насколько должна удивляться модель?

Конвейер потерь: Логиты до кросс-энтропии


От логитов к вероятностям

После 12 трансформерных блоков ANDREA-120M производит вектор из vocab_size чисел на позицию токена: логиты. Для ANDREA-120M vocab_size = 8449, так что каждая позиция выводит 8449 логитов. Логиты — ненормализованные оценки; некоторые положительные, некоторые отрицательные, без ограничения на сумму в 1.


Softmax преобразует логиты в распределение вероятностей:


p_i = exp(logit_i) / sum_j exp(logit_j)

После softmax все 8449 чисел находятся между 0 и 1 и в сумме дают 1. Модель присваивает вероятность каждому возможному следующему токену.


Функция потерь Кросс-Энтропии

Обучение требует функции потерь: числа, которое измеряет, насколько неверным был прогноз модели для заданного правильного ответа. Кросс-энтропия работает для моделирования языка:


loss_t = -log(p_correct_token_t)

Возьмите предсказанную моделью вероятность для фактического следующего токена (того, что в обучающих данных). Возьмите отрицательный логарифм этой вероятности. Это потеря для одной позиции.


Почему отрицательный логарифм

Три свойства делают -log(p) естественной функцией потерь:


- -log(1) = 0: Когда модель предсказывает правильный токен с 100% уверенностью, потеря равна нулю.

- -log(0) = ∞: Когда модель присваивает нулевую вероятность правильному токену, потеря бесконечна. (На практике softmax никогда не выводит точно 0; потеря остаётся конечной, но большой.)

- Монотонная: По мере увеличения предсказанной вероятности для правильного токена потеря плавно уменьшается.


Более высокая уверенность в правильном ответе = меньшие потери. Цель обучения проста: максимизировать предсказанную вероятность для фактического следующего токена.


Потери на последовательность

ANDREA обучается на последовательностях длиной 1024 (окно контекста). Каждая последовательность производит 1024 предсказания следующего токена. Потери последовательности усредняются по всем позициям:


sequence_loss = mean(-log(p_correct_t)) для t в 0..1023

Затем потери по последовательности усредняются по батчу (ANDREA-120M использует batch_size = 8). Одно скалярное число на шаг обучения. Именно это число отображается на кривой потерь.

Вычисление потерь для одной позиции

На одной позиции обучения ANDREA-120M выдает вероятности softmax 0.4 для фактического следующего токена (остальные 0.6 распределены по другим токенам). Вычислите кросс-энтропийную потерю для этой единственной позиции. Покажите формулу и арифметику. Затем в одном предложении укажите, представляет ли это уверенное или неуверенное предсказание.

Перплексия = exp(loss)

Более дружелюбная шкала

Значения лосса вроде 2.0 или 3.43 не сразу передают, на что способен модель. Перплексия переводит лосс на более интуитивную шкалу:


perplexity = exp(loss)

Perplexity отвечает на чистый вопрос: из скольки равновероятных токенов модель эффективно выбирает? Perplexity равный 7 означает, что модель ведет себя так, будто выбирает из 7 правдоподобных следующих токенов на каждой позиции. Perplexity равный 1 означает идеальное предсказание.


Распространенные пары Loss-Perplexity


LossPerplexityКак это ощущается
0.01.0Идеальное предсказание
1.02.7Выбор среди ~3 правдоподобных токенов
2.07.4Финальная территория SMMA для ANDREA-12M
3.020.1Разумный текст, но с неопределённостью
3.4330.9Минимум ANDREA-120M v1 (до полировки)
5.0148Раннее обучение, изучение распределения словаря
9.048449Базовый уровень случайного выбора для словаря ANDREA-120M

Perplexity ставит значения лосса в контекст: лосс 2.0 означает, что модель эффективно выбирает из ~7 токенов, а не из 8449.


Базовый уровень случайного выбора

Модель, которая ничего не знает и угадывает равномерно, присваивает вероятность 1/V каждому токену, где V = vocab_size:


p_uniform = 1 / V
loss      = -log(1/V) = log(V)

Для ANDREA-120M с V = 8449:


loss_uniform = ln(8449) ≈ 9.04

Для ANDREA-12M с V = 2305:


loss_uniform = ln(2305) ≈ 7.74

Любая потеря выше этой базовой линии означает, что модель работает хуже, чем случайный выбор. Любая потеря ниже неё означает, что модель чему-то научилась: она концентрирует массу вероятности на меньшем подмножестве токенов, чем равномерное распределение.

Чтение значения потери

ANDREA-120M v1 достигла минимума EMA-потери 3.43 на шаге 110K (до коллапса). Вычислите: (a) перплексию при потере 3.43; (b) во сколько раз лучше базовой линии случайного выбора (ln(8449) ≈ 9.04) это значение потери, выраженное как соотношение перплексий. Покажите вычисления.

Сглаживание шума на уровне шагов

Сырые потери шумные

Потери на шаг колеблются. Бандит ANDREA выбирает разный источник каждые 7-42 шага; некоторые источники (определения из словаря) дают лёгкие потери; другие (абзацы из Гутенберга) дают более тяжёлые потери. Построение сырых потерь шага против номера шага даёт хаотичное рассеивание.


Сглаженное модифицированное скользящее среднее (SMMA) подавляет шум и выявляет тренд. Прокси обучения ANDREA вычисляет SMMA как:


SMMA[0]  = loss[0]
SMMA[t]  = (SMMA[t-1] * (N-1) + loss[t]) / N

При N = 100 (стандартное окно сглаживания ANDREA) каждое новое значение SMMA смешивает 99% предыдущего SMMA с 1% новой потери шага. Резкие всплески поглощаются; устойчивые сдвиги проявляются постепенно.


Почему не просто усреднение?

Простое скользящее среднее по последним 100 шагам требует хранения 100 значений потерь. SMMA хранит одно значение (бегущее среднее) и одну константу (размер окна). Экономия памяти, вычислительно тривиально и достаточно гладко для чтения кривой.


Разные веса сглаживания отвечают на разные вопросы:


- N = 10: отслеживает краткосрочные изменения; полезно во время фазовых переходов

- N = 100: значение по умолчанию для ANDREA; отслеживает среднесрочный прогресс

- N = 1000: только долгосрочный тренд; полезно в конце обучения


Что отслеживает ANDREA

Каждые 100 шагов прокси обучения записывает loss.json с текущим SMMA, сырой потерей, номером шага и разбивкой по источникам. Панель управления на training.ai.unturf.com/dashboard опрашивает этот файл каждые 10 секунд. Внешние зрители видят прогресс в реальном времени; панель управления только для чтения.

Реальная кривая ANDREA-12M

Рецепт, который достиг SMMA 2.0


ШагиСредняя потеряПримечания
0--2.5K4.50Случайная инициализация, раннее обучение
2.5K--5K3.88Быстрое снижение через фазу структуры
5K--10K3.30Приближение к границе когерентности
10K--20K2.80Бандит находит оптимальный микс
20K--25K2.40Плато — дефицит данных
25K--30K2.50Введены данные Hermes + перезапуск LR
30K--35K2.35Hermes интегрирован, новые минимумы
35K--40K2.10Фокус на 4-х руках, крутой спуск
40K--43.6K2.00Территория знаний, SMMA ниже 2.0

Выделяются три фазы:


1. Крутой ранний спуск (0-10K). Loss падает с 4.50 до 3.30, поскольку модель изучает распределение словаря и базовую структуру ходов. Базовая линия случайного шанса ln(2305) ≈ 7.74 находится высоко над этой кривой; модель быстро концентрирует массу вероятности, как только эмбеддинги стабилизируются.


2. Плато (20K-25K). Loss застревает на 2.40. Бандит исчерпал запас на текущей смеси источников. Данные Hermes добавляются на шаге 25K, плюс перезапуск LR, сломали плато.


3. Финальное снижение (35K-43.6K). Учебный план сужен с 16 источников до 4 (hermes3-general + dictionary + gutenberg + chat). Более крутое снижение потерь, чем у полного arm bandit. Финальный SMMA: 2.0.


ANDREA-120M v1: Предупреждающая кривая

Тот же расчёт словаря: ln(8449) ≈ 9.04. ANDREA-120M v1 достиг SMMA 3.43 на шаге 110K (его минимум), затем разошёлся:


ШагиEMA LossТренд
26K--40K4.29Сходящаяся
70K--85K3.60Лучшая область
85K--110K3.43Минимум
110K--125K3.54Расходящаяся
140K--155K4.05Расходящаяся
155K--165K4.54Коллапс

Численно разумные значения потерь на протяжении всего (3.43 значительно ниже случайного базового уровня 9.04). Но сэмплы были коллапсом повторений: Budy Budy Budy Budy. Потери рассказали обманчивую историю; аудиты сэмплов — нет.


Раннее остановка с гейтингом coherentности в v2 (активность 78) добавила параллельный сигнал: разнообразие биграмм, разнообразие триграмм, наличие английских слов, разнообразие символов. Когда все четыре оценки остаются ниже 30 в течение 5 последовательных выборок, обучение автоматически останавливается. Этот сигнал поймал бы v1 на шаге 132K, сэкономив 3,8 дня вычислений.

Что рассказывает каждая фаза

Глядя на кривую потерь ANDREA-12M (4.50 → 3.30 → плато 2.40 → финал 2.00), укажите, какая фаза показывает обучение модели распределению словаря, какая фаза указывает, что бандиту не хватило пространства для смешанных источников, и какая фаза отражает фокус на суженном учебном плане. Одно предложение на фазу, ссылаясь на конкретные диапазоны шагов.

Урок 120M v1

Два независимых сигнала

ANDREA-120M v1 достиг SMMA 3.43 на шаге 110K. Численно: в 273 раза лучше случайного шанса (перплексия 31 против размера словаря 8449). Выглядит отлично на кривой.


Пример на шаге 110K::


''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '

Потери и связность — независимые сигналы. Низкие потери означают, что модель эффективно концентрирует массу вероятностей. Связность означает, что модель генерирует текст, который могут читать люди. Первое не подразумевает второе.


Почему существует разрыв

Модель может снижать потери за счёт:


1. Изучения реальных языковых паттернов (хорошо): согласование подлежащего и сказуемого, распространённые фразы, фактические ассоциации.

2. Запоминание структурных артефактов (плохо): высокочастотные повторяющиеся паттерны, особенности конкретного датасета, вырожденные аттракторы.


Оба снижают loss. Первый производит сэмплы, которые нравятся людям. Второй производит Budy Budy Budy Budy. Цель обучения сама по себе не может их различить.


ANDREA-120M v3 Polish: Где Loss & Coherence Встретились

После полировки v3 (шаг 112K и далее) ANDREA-120M производит:


Шаг 112,584, loss 0.30, ppl 1::


> [extinction prompt]
< чёрная паучиха монтано жива, ка롤инская попугайчик вымер.

Оба факта верны. Ка롤инский попугайчик объявлен вымершим в 1939 году; чёрная паучиха-обезьяна монтано существует. Низкие потери (0.30) И coherent фактическое вспоминание.


Шаг 112,500, loss 1.94, ppl 7::


> Как найти устаревшие пакеты в проекте Python?
< Используйте pip list --outdated names, чтобы увидеть список пакетов pip...

Более высокий loss (1.94 → ppl 7), но правильный инструмент emerges из обучающих данных. Плавность формулировок всё ещё развивается на 56% этапе обучения.


Дисциплина двух сигналов

Современные конвейеры обучения отслеживают ОБОИ:


- Кривая потерь. Говорит вам, учится ли модель чему-то количественно.

- Аудит выборки. Говорит вам, полезно ли то, что модель выучила.


v2 добавил coherence-gated early stopping (activity 78). v3 polish был perturbation учебного плана, вызванный аудитом выборки, а не значениями потерь. Потери сами по себе необходимы, но никогда не достаточны.

Диагностика гипотетического запуска

Новый тренировочный запуск показывает снижение SMMA loss с 8.0 → 3.5 → 2.8 за 100K шагов. Аудиты выборок на шаге 100K показывают: разнообразие биграмм 12 (низкое), разнообразие триграмм 8 (низкое), наличие английских слов 18 (высокое), разнообразие символов 7 (высокое). Что, вероятно, делает модель? Продолжать обучение, остановить или изменить курс? Обоснуйте ответ в 3-4 предложениях.