Доброго вам дня, уважаемые Хабражители! В связи с бурным ростом LLM и просто невероятным, прорывными результатами практически ошеломительного качества, всё острее мы погружаемся в вопросы о дальнейшем развитии: «Куда двигаться дальше с точки зрения данных? Где их брать? Какого качества они должны быть? Как их бесшовно встроить в общую канву текущего конвейера? Сколько их вообще надо генерировать?» Всё это порождает массу тревог, размышлений и проводимых тестов.
Поскольку мы уже вплотную подошли к тому, что данных начинает не хватать, надо заниматься их «разведением в домашних условиях». Ещё полгода назад прогноз был более оптимистичным, но стремительное развитии ИИ только «подлило масла в огонь». По факту, сейчас мы имеем ситуацию «взращивания» новой реальности и формирования целого многомерного мира вокруг любой технической задачи, любого формата и любой направленности. Более того, ставится вопрос, как сохранить исходные характеристики сырых данных и не подменить распределения и иные статистические параметры, дабы не уйти в сторону при обучении модели. Особенно это касается узкоспециализированных тем в широком социокультурном контексте. Говоря более общими словами, как генерировать «природные», а не «мусорные» данные? Более того, разгорающаяся ИИ-соперничество между США и Китаем принесёт много сюрпризов, гонка поднимется на новую высоту.
Но обо всём по порядку. По традиции, всех заинтересованных любезно приглашаю под кат. Также приветствуются мнения, обсуждения и свежий взгляд ;)

Поставщики данных
На волне этого всеобщего хайпа возникло множество контор разного формата, толка и направления, предлагающие свои решения по генерированию синтетических данных (синтетики) в самом широком ключе. Беглый взгляд на этот рынок уже сейчас позволяет понять, что ситуация будет усиливаться стремительно, я бы даже сказал скачкообразно. Более того, тенденция эта совершенно ожидаемая и связана она с появлением XAI (Explainable Artificial Intelegence). Кстати, в прошлом году я читал в РАНХиГС подобный курс, в котором основной упор был сделан именно на методе интерпретации результатов и программном подходе к генерированию ответа и принятию решений. Ещё неплохую статью по SMOTE можно почитать здесь.
Почему так происходит на рынке данных? Всё очень просто, фактически мы «движемся» в разных направлениях: чем больше «эволюционируют» нейросети, тем больше мы не доверяем их решениям и данным, которые они используют. А с появлением синтетических данных тенденция будет усиливаться всё больше. Сегодня наиболее ярко представлены следующие компании, торгующие синтетикой:
Gretel AI, Mostly AI, Datavant, Tonic.ai, Infinity AI (генерация синтетических данных с упором на приватность и соблюдение нормативных и законодательных требований);
Synthesis AI, SBX Robotics (беспилотные системы, верификация, AR/VR/XR, мода и стиль, урбанистика, робототехника);
DataGen, Aiforia, Epistemix, MediSyn, vAIsual, Nuvanitic (медицина, биотехнологии, здравоохранение, анализ распространения заболеваний, фармацевтика);
Hazy (инструменты создания синтетических данных для тестирования и разработки);
Sogeti (инжиниринг и облачные данные);
Facteus, Statice, Colossyan, FinCrime Dynamics (финансы, биржи, банкинг, борьба с мошенничеством);
KroopAI, Dedomena, Omniverse™ Replicator, Scale Synthetic, Datagrid, CNAI (наука и исследования);
VAIsual (лицензирование, документооборот).
Как видите, вариантов и градаций решаемых задач уже предостаточно. При этом стили и форматы проверки данных у всех свои.
Мнения и практика
Как у любой продвинутой технологии, при использовании «синтетики» появились как свои адепты, так и противники. При этом с обеих сторон приводят достаточно аргументированные доводы:
При генерировании синтетических данных мы видим на множестве итераций деградацию моделей и ухудшение их поведения. Причём это относится не только к моделям NLP, «болезнь» свойственна любому классу моделей.
Качество синтетических данных может быть обманчиво. Исходя из этого, следует уделять пристальное внимание их характеристикам, особенно при использовании в реальной рабочей среде, и использовать гибридный подход.
Синтетика нужна, так как позволяет расширить границы применимости машинного обучения и смоделировать варианты, в том числе редкие и аномальные, для безопасной «обкатки» технологии, и тем самым проверить модель в «полубоевых» условиях.
Использование конфиденциальных данных там, где они крайне необходимы, сопряжено с риском «утечек». Кстати, про утечки конфиденциальных данных я писал вот тут, тут и тут.
Проблемы с реальными данными: бывает так, что они не масштабируются; ручная разметка невозможна; данные могут быть не программируемы; модель может иметь низкий скор на реальных данных или низкую креативность; при сложных и трудоёмких технологических процессах бывает дешевле и проще сделать «синтетику».
Эрозия разнообразия данных: смещение статистических параметров в данных; предвзятость автоматизированных фильтров; множественное дублирование; быстрое устаревание; унификация и отсутствие разнообразия.
Идеи и решения
Просмотрев достаточно много статей про бенчмарки и метрики при оценке больших языковых моделей, я составил для себя список параметров, на которые обращал бы наибольшее внимание при генерации синтетических данных применительно к LLM:
Лексическое разнообразие словаря. Можно использовать слова, вышедшие из употребления. «Фишка» в том, что язык развивается и всегда «впитывает» в себя лексику других языков. Такой подход позволит сохранить этимологию корней и понять их точный смысл без навязанного временем смысла и подмены понятий. Особенно это проявляется, когда заканчивается корпус слов и начинается переход на смежные темы или темы с одинаковыми понятиями.
Синтаксическая структура. Упор на создание структур предложений разного качества и количества, с различными речевыми оборотами и стилями. Подход призван сделать ответы более «живыми».
Семантическая значимость. Основные моменты связаны с «бесшовным» сохранением структуры текста и плавным переходом смыслов внутри него.
Контекст и тематическая связность. Важно соблюдать тематику повествования и следить за тем, чтобы сгенерированные данные придерживались одной линии и не «уходили» в сторону. Кроме того, нужно следить за балансировкой исходного словаря и преобладанием тем внутри него, а также определять состав по основным темам. Для этого предлагается включить в модель (тот же чат-бот) внутреннюю модель, которая в реальном времени будет классифицировать темы и следить за тем, чтобы данные были сбалансированы.
Шум и ошибки. Ставится задача чтобы научить генеративную модель варьировать степени несоответствия строгим правилам, то есть не всегда следовать чёткой структуре языка, иногда переставлять слова, допускать мелкие ошибки и т. д. Похожую задачу мы решали тут. Сейчас это уже наблюдается, например у ChatGPT, но пока ещё слабо выражено.
Диверсификация текста. Нужно разнообразить стиль, тон и манеру речи. Реальные люди не всегда придерживаются декларативного формата повествования и часто переходят от одного формата к другому, причём зачастую неосознанно.
Использовать предпосылки для генерации текста. То есть предлагается совершенно новый подход: не сразу выдавать пользователю ответ на его запрос, а для начала накидать ему пару вопросов. По их качеству сразу будет примерно понятен вектор. Таким образом, мы отталкиваемся не от модели, а от клиента, делая генерирование более сбалансированным. Здесь можно уточнить у клиента (2-3 вопроса не больше), какие именно данные вызывают трудность и в чём основная причина их генерирования, что хотелось бы дополнительно учесть. То есть мы делаем генерирование более целевым, так как уже на этом этапе оптимизируем количество генераций.
Использовать статистические методы. Метод синтетического контроля, метод событийного анализа, оценка контр-фактического результата, пермутационный тест, апостериорный анализ, синтетический контроль, синтетический метод сравнения разностей, пенализированный синтетический контроль, методы событийного анализа.
Инструменты
Помимо упомянутых выше платформ и больших фреймворков сегодня наиболее популярны GAN (General Adversal Networks), VAE (Variational Auto Encoder) и AR (autoregressive model). Ещё есть производные модели CTGAN, WGAN и WGAN-GP. Совсем недавно «выкатили» неплохой инструмент SmolTalk для обучения языковых моделей с помощью генерирования синтетических данных, его выложили на Huggin Face. Обзор этой модели представлен здесь.
Кроме того, есть достаточно много репозиториев, например, этот: здесь представлены наборы данных, инструменты, методики, блоги. Достаточно неплохой обзор представлен здесь. Также есть целая платформа Synthetic Data Vault для лёгкого обучения синтезированию на табличных данных.
В последующих статьях этого цикла я продолжу тему подбора и тестирования инструментов генерирования данных, чтобы вы представляли границы их применимости в работе. Также есть идея составить граф по сгенерированным данным с последующей оценкой его характеристик и попытками посмотреть, насколько это граф корректен и как он соотносится с графом реальных данных по используемым темам и полученной классификации.
Одна из самых больших проблем заключается в том, что необходимо рассчитать или примерно прикинуть момент, когда модели начнут деградировать. Вы скажете: «Мы видим только рост, уже решаются олимпиадные задачи, придумываются лекарства и доказываются теоремы». Но я считаю, что это ширма, и первые сигналы уже видны. Крайне скоро во главу угла встанет разнородность синтетических данных, а для этого, как я уже упоминал в предыдущих статьях, потребуется новый генератор псевдослучайных чисел. Один из претендентов — квантовые вычисления.