В современной разработке больших языковых моделей (LLM) данные не возникают из ниоткуда — их необходимо извлекать из живых сервисов, веб-дампов и архивов, подвергая сложной многоступенчатой очистке. В рамках курса Stanford CS336 «Language Modeling from Scratch» эксперты Stanford Online разобрали внутреннюю механику препроцессинга: от классических алгоритмов обработки Big Data до использования современных LLM для фильтрации обучающих выборок.
🧠 Алгоритмы фильтрации: от n-грам до классификаторов 0:55
Основная задача фильтрации — выделить из огромного массива «сырых» данных (например, Common Crawl) качественное подмножество, максимально похожее на целевой эталон (Wikipedia или научные статьи) . Этот процесс должен быть чрезвычайно быстрым: если запуск фильтра будет стоить столько же, сколько обучение модели, в нём теряется смысл .
Для реализации этой задачи выделяют три основных подхода:
- N-gram модели с использованием KenLM. Это классический статистический метод, основанный на подсчёте последовательностей слов. Чаще всего используется сглаживание Кнесера-Нея (Kneser-Ney smoothing) для обработки редких сочетаний . Модель обучается на качественном корпусе (например, Wikipedia) и оценивает перплексию (степень «удивления» модели) для новых текстов. Тексты с аномально высокой перплексией отсеиваются как шум .
- Линейные классификаторы Fasttext. Разработанный в Facebook (Meta) инструмент позволяет проводить классификацию текста почти с линейной скоростью . Вместо использования гигантских матриц весов Fasttext применяет снижение размерности и хэширование n-грам, что позволяет эффективно обрабатывать даже редкие слова, допуская небольшое количество коллизий ради скорости .
- Вероятностная перевыборка (Importance Sampling). Более фундаментальный подход, где вместо простой классификации «хороший/плохой» строится оценка отношения двух распределений: целевого (качественного) и исходного (сырого) . Это позволяет лучше сохранять разнообразие данных, подтягивая распределение сырого корпуса к эталонному .
📊 Кейсы применения: языки, качество и токсичность 23:44
Фильтрация используется не только для удаления «мусора», но и для решения специфических задач подготовки датасета.
Идентификация языка. Модели часто обучаются на английском языке, но в Common Crawl перемешаны сотни наречий. Использование классификатора Fasttext позволяет оставить только нужные языки . Например, в модели Dolma страницы сохранялись только если вероятность английского языка превышала 0.5 . Однако спикер отмечает, что для коротких предложений или диалектов такие классификаторы могут ошибаться .
Фильтрация по качеству. Современные подходы всё чаще используют мощные модели для оценки данных:
- GPT-3 обучала классификатор на данных из проверенных источников против «сырого» веба .
- Llama использовала страницы, на которые ссылается Wikipedia, как позитивные примеры .
- phi-1 (Microsoft) применила инновационный метод: они попросили GPT-4 оценить образовательную ценность 100 тысяч примеров кода на Python . На этих «синтетических» метках был обучен более быстрый классификатор Random Forest, который затем профильтровал миллионы строк кода .
Токсичность и контент NSFW. Для очистки от нежелательного контента часто используются датасеты вроде Jigsaw Toxic Comments . На их основе обучаются быстрые модели Fasttext, которые помечают контент как «токсичный», «оскорбительный» или «непристойный» .
🖇 Дедупликация: борьба с «зеркалами» интернета 36:56
Интернет переполнен дубликатами: лицензии MIT, стандартные условия обслуживания, зеркала сайтов вроде Project Gutenberg копируются тысячи раз . В наборе данных C4 одна и та же фраза о продукте с Amazon встречалась более 61 000 раз .
Дедупликация критически важна по трем причинам:
- Эффективность: нет смысла тратить вычислительные ресурсы на обучение на одних и тех же данных .
- Защита от запоминания (Memorization): модели склонны дословно заучивать тексты, которые встречаются часто, что ведет к рискам нарушения приватности и авторских прав .
- Качество: перекос в сторону часто повторяющихся шаблонов снижает общую обобщающую способность модели.
Для точной дедупликации (Exact Deduplication) на уровне документов или предложений эффективно использовать фильтры Блума (Bloom Filters) . Это компактная битовая структура данных, которая позволяет быстро проверить наличие элемента в наборе. Она может давать ложноположительные срабатывания (сказать, что дубликат есть, хотя его нет), но никогда не ошибается в обратную сторону . Вероятность ошибки можно контролировать, увеличивая количество хэш-функций .
🔍 Поиск неявных дубликатов через MinHash и LSH 58:38
Самая сложная задача — найти «почти дубликаты» (тексты, отличающиеся на запятую или одно слово). Для этого используется мера сходства Жаккара (Jaccard similarity) — отношение пересечения множества слов к их объединению .
Поскольку сравнивать каждый документ с каждым невозможно (это заняло бы квадратичное время), применяется алгоритм MinHash . Его суть в том, что вероятность коллизии хэшей двух документов в точности равна их сходству по Жаккару .
Чтобы сделать процесс ещё более точным, применяется Locality Sensitive Hashing (LSH):
- Хэши разбиваются на «полосы» (bands) .
- Два документа считаются дубликатами, если хотя бы в одной полосе все их хэши совпали .
- Этот метод «сгущает» вероятности: если документы похожи на 99%, они почти гарантированно склеятся. Если похожи менее чем на 50% — они почти гарантированно будут считаться разными .
Например, в некоторых исследованиях используются параметры LSH, позволяющие считать дубликатами тексты, где на 100 слов отличается лишь одно . По мнению лектора, это крайне строгая, но необходимая мера для очистки обучающих корпусов .