Доброго вам дня, уважаемые Хабражители! В связи с бурным ростом 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 для лёгкого обучения синтезированию на табличных данных.
В последующих статьях этого цикла я продолжу тему подбора и тестирования инструментов генерирования данных, чтобы вы представляли границы их применимости в работе. Также есть идея составить граф по сгенерированным данным с последующей оценкой его характеристик и попытками посмотреть, насколько это граф корректен и как он соотносится с графом реальных данных по используемым темам и полученной классификации.
Одна из самых больших проблем заключается в том, что необходимо рассчитать или примерно прикинуть момент, когда модели начнут деградировать. Вы скажете: «Мы видим только рост, уже решаются олимпиадные задачи, придумываются лекарства и доказываются теоремы». Но я считаю, что это ширма, и первые сигналы уже видны. Крайне скоро во главу угла встанет разнородность синтетических данных, а для этого, как я уже упоминал в предыдущих статьях, потребуется новый генератор псевдослучайных чисел. Один из претендентов — квантовые вычисления.
Автор: Sber