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

Один документ создаёт тысячи примеров

После токенизации документ (x1,,xn)(x_1,\ldots,x_n) порождает цели

pθ(xt+1x1,,xt),t=1,,n1.p_\theta(x_{t+1}\mid x_1,\ldots,x_t), \qquad t=1,\ldots,n-1.

Loss:

L(θ)=t=1n1logpθ(xt+1xt).\mathcal L(\theta)= -\sum_{t=1}^{n-1}\log p_\theta(x_{t+1}\mid x_{\le t}).

Человеку не нужно подписывать каждый токен. Это self-supervised learning: структура входа сама создаёт target. Но «автоматически» не значит «нейтрально». Если корпус на 40% состоит из кода, то 40% токенных обновлений примерно идут из кода, с поправкой на длину и batching.

Следующий токен заставляет модель учить орфографию, синтаксис, факты и шаблоны рассуждений только настолько, насколько они помогают сжатию текста. Она не получает отдельной цели «говорить правду».

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Токены документа, causal mask и target следующего токена
Рис. 78.1. Документ становится сдвинутой таблицей целей

Верхняя строка — входные токены, нижняя сдвинута на одну позицию и содержит targets. Треугольная сетка показывает доступный контекст. Красным отмечен ошибочный вариант, где target виден во входе той же позиции.

От сырого веба к обучающей смеси

Типичный pipeline:

  1. получить snapshot страниц;
  2. извлечь основной текст;
  3. определить язык и тип документа;
  4. удалить спам, навигацию и машинный мусор;
  5. дедуплицировать;
  6. оценить качество;
  7. исключить чувствительные данные;
  8. смешать источники с заданными весами;
  9. токенизировать и упаковать последовательности.

Каждый фильтр меняет распределение. Классификатор «качественного текста», обученный на энциклопедиях, будет предпочитать их стиль и вычищать разговорную речь. Фильтр токсичности может непропорционально удалить документы, обсуждающие дискриминацию.

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

Веб содержит зеркала, цитаты, шаблоны и копии. Если один текст повторён тысячу раз, loss присваивает ему тысячу весов. Exact dedup удаляет полные совпадения, near-duplicate методы сравнивают shingles или MinHash.

Документ представим множеством kk-грамм S(D)S(D). Jaccard similarity:

J(D1,D2)=S(D1)S(D2)S(D1)S(D2).J(D_1,D_2)= \frac{|S(D_1)\cap S(D_2)|} {|S(D_1)\cup S(D_2)|}.

Высокий порог оставляет слегка изменённые копии; низкий может удалить независимые новости об одном событии. Дедупликация внутри train уменьшает memorization, а между train и benchmark защищает оценку.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Поток документов через язык качество дедупликацию и итоговую смесь
Рис. 78.2. Фильтры меняют карту корпуса

Ширина потоков равна числу токенов. После каждого фильтра показано, какие жанры теряются. Отдельная ветвь near-duplicates объединяет зеркала; справа исходные доли сопоставлены с итоговыми весами training mixture.

Смесь как оптимизационный выбор

Пусть источник jj содержит DjD_j токенов, но сэмплируется с вероятностью wjw_j. Большой веб-источник можно downsample, небольшой качественный — повторять. Тогда эффективное число эпох различается:

EjwjDtrainDj.E_j\approx\frac{w_jD_{\mathrm{train}}}{D_j}.

Многократный проход по малому источнику повышает memorization. Нулевой вес лишает модель навыка. Подбор смеси — многокритериальная задача: общий loss, код, математика, языки, безопасность.

Mixture ablation требует обучить несколько малых proxy-моделей на разных весах. Перенос лучшей смеси на большой масштаб — гипотеза, не теорема.

Лаборатория смеси

Код, диалог, статьи и цена повторов

Загружается живая иллюстрация…

Изменяйте доли четырёх источников и смотрите на loss по отдельным validation-наборам. Среднее может улучшаться, пока один домен резко деградирует. Затем включите дубликаты и наблюдайте, как training loss падает быстрее, а отложенный почти не меняется.

Проверьте «малый качественный источник»: при умеренном повторе он помогает целевому домену, при чрезмерном модель начинает воспроизводить фразы. Найдите точку перелома, а не универсальный процент.

Фильтрация персональных и опасных данных

Веб может содержать телефоны, адреса, медицинские сведения и секреты репозиториев. Regex ловит очевидные шаблоны, named entity recognition — часть имён, специальные scanners — ключи API. Ни один фильтр не идеален.

Нужно документировать:

  • происхождение и лицензию;
  • дату snapshot;
  • правила исключения;
  • долю удалённого;
  • механизм запроса на удаление;
  • тесты memorization;
  • ограничения downstream-использования.

Обработка персональных данных зависит от юрисдикции; техническая доступность страницы не равна разрешению на обучение. Это вопрос governance, не только preprocessing.

Утечка benchmark

Если вопросы теста или их пересказы были в train, высокая accuracy не измеряет перенос. N-gram overlap обнаруживает буквальные совпадения, embedding search — близкие перефразы, но ни один метод не доказывает отсутствие утечки.

Дата отсечения помогает для будущих событий. Dynamic benchmarks создают новые задачи после обучения. Можно проверять perturbations: менять имена и числа, сохраняя структуру. Запомненный ответ ломается, навык должен сохраниться.

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

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Accuracy модели на оригинальных и переформулированных задачах при разной доле загрязнения train
Рис. 78.3. Утечка поднимает метрику без нового навыка

По горизонтали доля benchmark-документов или близких копий в train. Синяя линия — исходные вопросы, зелёная — новые числовые варианты той же структуры. Разрыв растёт с загрязнением и служит диагностикой memorization.

Transfer и fine-tuning

Предобученный трансформер создаёт универсальные представления и вероятностную модель текста. Fine-tuning меняет параметры на меньшем наборе инструкций или целевой области. Retrieval добавляет внешние документы без переписывания всех знаний.

Transfer работает, когда признаки предобучения полезны дальше. Domain shift остаётся: модель, видевшая научные статьи, не обязательно умеет безопасно отвечать как врач. Fine-tuning малым корпусом может вызвать catastrophic forgetting; смешивание replay-данных и малый learning rate снижают риск.

FineWeb как объект аудита

FineWeb — открытая очищенная коллекция веб-текста с описанным pipeline. Для школьного проекта достаточно небольшой опубликованной выборки. Не скачивайте терабайты: возьмите, например, 10 000 документов и исследуйте языки, длины, домены, повторы и PII-подобные шаблоны.

Соберите model card корпуса: не маркетинговое описание, а таблицу измерений и неизвестностей. Сравните до и после одного собственного фильтра. Если фильтр увеличил «среднее качество», покажите, чьи тексты он удалил.

Мини-исследование: фильтр как классификатор культуры

Возьмите по 500 документов из энциклопедии, форумов, поэзии, инструкций и школьных сочинений. Пропустите их через один quality score или обучите простой classifier отличать энциклопедию от случайного веба. Для каждого жанра постройте распределение score и долю, прошедшую общий порог.

Теперь вручную разметьте 100 пограничных документов по двум независимым критериям: читаемость и ценность для обучения. Они не обязаны совпасть. Разговорный текст может быть грамматически неровным и содержательно богатым; безупречный SEO-текст — пустым.

Проведите threshold sweep и покажите не только общий retained tokens, но и genre recall. Порог выбирает состав будущей модели. Этот опыт связывает corpus filtering с ошибками классификации: false positive и false negative здесь означают включённый мусор и потерянный голос.

Мини-исследование: near-duplicate через границу

Создайте семейства одного документа: исходник, версия с другим заголовком, переставленными абзацами, переводом и кратким пересказом. Сравните exact hash, shingle Jaccard и embedding similarity. Ни один метод не найдёт все семейства без ложных совпадений.

Затем намеренно разделите версии между train/test и обучите маленькую language model или retrieval baseline. Метрика вырастет сильнее на буквальных копиях, слабее на пересказах. Опубликуйте contamination curve. Так правило split превращается из формальности в количественный источник оптимизма.

Добавьте временную ось. Для каждой страницы сохраните дату публикации и дату snapshot. Текст, обновлённый после benchmark, может включать его ответы, хотя исходный URL старый. Dedup по URL этого не видит. Versioned content требует hash конкретного содержимого и времени.

Для десяти найденных совпадений проведите ручную классификацию: независимый общий источник, буквальная утечка, шаблон или случайная короткая фраза. Автоматический overlap служит сигналом аудита, а не готовым приговором.

Корпус становится поведением

Self-supervised objective масштабирует разметку, но не снимает ответственность за данные. Extraction, фильтрация, дедупликация и mixture определяют, какие ошибки модель будет считать дорогими. Benchmark contamination превращает оценку в память. Корпус нужно читать как экспериментальную установку с измеримыми потерями на каждом этапе.

Задачи