Этот материал посвящён исследованию восстановления текстов из текстовых эмбеддингов.
В последние годы наблюдается стремительное развитие генеративного искусственного интеллекта. Это привело к тому, что многие компании спешат внедрить соответствующие ИИ-инструменты в свои бизнес-процессы. Один из самых распространённых способов это сделать заключается в создании ИИ-систем, которые отвечают на вопросы, имеющие отношение к информации, которую можно найти в некоей базе данных, хранящей документы. Большинство решений этой задачи основано на подходе, называемом «генерация с дополненной выборкой» (Retrieval Augmented Generation, RAG).
Многие в наши дни поступают именно так. В базе данных размещается множество документов, а ИИ даётся возможность находить документы, наилучшим образом соответствующие запросу. Ответ, который генерирует система, основывается на извлечённых из базы данных документах.
Подобные RAG-системы определяют релевантность документов, применяя так называемые «эмбеддинги» — векторные представления документов, формируемые моделью эмбеддингов. Предполагается, что эти эмбеддинги должны, в какой-то степени, отражать сходство запросов и документов. Поэтому векторы поискового запроса и соответствующих ему документов будут располагаться достаточно близко друг к другу в векторном пространстве эмбеддингов.
Распространённость RAG привела к росту популярности векторных баз данных. Это — новый тип баз данных, спроектированных в расчёте на хранение больших объёмов эмбеддингов и на организацию поиска по ним. Стартапы, продукты которых нацелены на облегчение работы RAG через ускорение поиска в пространстве эмбеддингов, получили финансирование в размере сотен миллионов долларов. В основе работы множества новых приложений лежит преобразование текстов в их векторные представления и размещение того, что получилось, в векторных база данных. Причина этого — в высокой эффективности RAG.
Что именно хранится в текстовых эмбеддингах? Единственное требование, касающееся того, какой именно эмбеддинг должен быть назначен неким входным текстовым данным, заключается в семантическом сходстве эмбеддинга и этих данных. Других ограничений, касающихся назначения эмбеддинга, нет. Числа, из которых состоит векторное представление эмбеддинга, могут быть любыми. И эмбеддинги для одних и тех же входных данных могут выглядеть по-разному, что зависит от того, чем именно они инициализированы. Мы можем судить о сходстве одних эмбеддингов с другими, но нам не суждено понять смысл отдельных чисел в эмбеддинге.
Представьте себе, что вы — программист, который создаёт RAG-систему для компании, в которой работает. Вы решаете хранить векторы в векторной базе данных. Вы обращаете внимание на следующее: в базе данных хранятся лишь векторы эмбеддингов, а не сами текстовые данные. База данных заполняется бесконечным количеством строк, содержащих числа, представляющие тексты и выглядящие как результат действия некоего случайного процесса. При этом у базы данных нет шансов хотя бы «взглянуть» на обычные тексты.
Вы знаете, что закодированные тексты имеют какое-то отношение к документам пользователей, которые защищены правилами обеспечения конфиденциальности, принятыми в компании. При этом сами тексты никогда за пределы компании не выходят. Единственное, что вы куда-то отправляете — это векторы эмбеддингов, которые выглядят для вас как наборы случайных чисел.
Что если кто-то взломает базу данных и получит доступ к векторам эмбеддингов? Возникнет ли проблема? Или, если сервис-провайдер решит продать ваши данные рекламодателям — сможет ли он это сделать? Оба сценария предусматривают возможность использования некоего механизма по восстановлению текстов из их эмбеддингов.
Задача восстановления текстов из эмбеддингов — это именно то, чему посвящена наша статья «Text Embeddings Reveal As Much as Text» (EMNLP 2023). Являются ли векторы эмбеддингов безопасным форматом, подходящим для хранения и передачи данных? Проще говоря: можно ли перейти от эмбеддингов к текстам, на основе которых были сгенерированы эти эмбеддинги?
Прежде чем говорить об ответе на этот вопрос, давайте посвятим ещё немного времени размышлениям над ним. Текстовые эмбеддинги — это выходные данные нейронных сетей. А работу нейросетей можно представить в виде операций умножения матриц, связанных нелинейными функциями, через которые проходят данные, подаваемые на входы нейросетей. Вот как традиционные нейросети обрабатывают тексты: строковые входные данные разбиваются на некоторое количество векторов-токенов, которые последовательно подвергаются нелинейным преобразованиям. В выходном слое модели токены сводтся к единственному вектору эмбеддинга.
В сфере обработки сигналов существует концепция неравенства обработки данных, в соответствии с которой функции не могут добавлять информацию к входным данным. Они, пропуская через себя данные, могут либо сохранить тот объём информации, который эти данные несут, либо уменьшить его. Здравый смысл указывает на то, что с ростом глубины слоя нейронной сети растёт и сложность конструируемых им представлений исходных данных. Но, несмотря на это, нейросеть не может добавить к данным какой-либо информации о внешнем мире, которая не поступила до этого на её вход.
Кроме того, нелинейные слои, определённо, уничтожают некоторый объём проходящей через них информации. В современных нейросетях часто используется слой, представленный функцией ReLU. В ходе работы этой функции все отрицательные числа просто превращаются в нули. После того, как в типичной модели эмбеддингов данные пройдут через несколько слоёв с функцией ReLU, нельзя будет говорить о том, что они содержат тот же объём информации, который содержали на входе.
Похожими вопросами о количестве информации задаются и те, кто работает в сфере компьютерного зрения. Несколько работ показали, что глубокие представления (в сущности — эмбеддинги), полученные из моделей для обработки изображений, можно, с некоторой степенью достоверности, использовать для восстановления исходных изображений. Более раннее исследование показало, что изображения можно восстановить из выходных признаков глубоких свёрточных нейронных сетей (Convolutional Neural Network, CNN). Беря высокоуровневое представление признаков из CNN, исследователи смогли преобразовать его в изображение — не такое чёткое и понятное, как исходное, но похожее на него.
С 2016 года процесс преобразования эмбеддингов в изображения шагнул далеко вперёд. Была создана модель, которая выполняет преобразование эмбеддингов в изображения с более высокой точностью. Появились и модели, способные работать в более широком диапазоне условий. Удивительно то, что некоторые работы продемонстрировали возможность восстановления изображений на основе выходных данных классификатора для набора данных ImageNet.
Если преобразование выходов модели во входные данные возможно при работе с представлениями изображений — почему бы ему не работать и для текстов? Рассмотрим экспериментальную задачу по превращению текстовых эмбеддингов в тексты, из которых они были созданы. Ограничим входные текстовые данные 32 токенами (около 25 слов, то есть — предложение вполне приличной длины), и преобразуем их в векторы, представленные 768 числами с плавающей запятой. При использовании чисел с 32 битной точностью размер этих эмбеддингов составит 32 * 768 = 24,576 бит, или около 3 килобайт.
У нас имеется малое количество слов, представленное большим количеством битов. Как думаете — сможем мы идеально восстановить исходный текст на основе эмбеддингов?
Для ответа на этот вопрос нам, в первую очередь, нужно найти показатель для оценки уровня качества полученных результатов. Так можно будет судить о том, насколько хорошо мы решили задачу. Одним из очевидных критериев такой оценки может стать «точное совпадение» — показатель того, как часто преобразование эмбеддингов в текст даёт точно такой же текст, из которого были созданы эти эмбеддинги. Среди исследованных ранее методов преобразования эмбеддингов ни один не выдавал результаты, в точности соответствующие оригиналу. А значит — мы поставили перед собой довольно амбициозную цель. Поэтому, возможно, нам стоит начать с более «вольного» показателя, оценивающего то, насколько результат похож на оригинал. Для этих целей мы воспользуемся оценкой BLEU, которую можно воспринимать как процентный показатель того, насколько восстановленный текст близок к исходному.
После того, как мы нашли критерий для оценки успешности применения нашей системы, поработаем над поиском механизма преобразования эмбеддингов в тексты, результаты работы которого можно оценивать с помощью выбранного критерия. Тут имеет смысл действовать, представив себе преобразование эмбеддингов в текст в виде традиционной задачи машинного обучения. Для её решения можно прибегнуть к наилучшему из известных нам способов: собрать большой набор данных, состоящий из пар эмбеддинг-текст, и обучить модель выводу текста, подавая на её вход эмбеддинг.
В результате мы сделали следующее: создали трансформер, на вход которого подаётся эмбеддинг, и обучили на текстах, используя традиционный подход к обучению языковых моделей. Этот подход позволил нам создать модель, «индекс BLEU» которой составил примерно 30/100. С практической точки зрения это означает, что модель может угадать тему входного текста и выдать несколько слов, не сохраняя их порядок и неправильно выводя некоторые из них. А «индекс точного совпадения» тут близок к нулю. Оказалось, что предлагая модели «перевернуть» вывод другой модели за один прямой проход, мы задаём ей достаточно сложную задачу (сравнимую с другими сложными задачами генерирования текста, такими, как создание текста в виде идеального сонета, или текста, удовлетворяющего множеству условий).
После обучения исходной модели мы заметили кое-что интересное. Ещё один способ оценки качества выходных данных модели заключается в следующем: нужно сгенерировать эмбеддинги для текста, восстановленного из исходных эмбеддингов (мы называем этот текст «гипотезой») и оценить схожесть новых и исходных эмбеддингов. Когда мы сделали это с помощью системы генерирования эмбеддингов нашей модели — мы обнаружили очень высокий показатель косинусного сходства эмбеддингов — в районе 0,97. Это означает, что мы способны сгенерировать текст, близкий к исходному в пространстве эмбеддингов, но не идентичный исходному тексту.
(Отвлечёмся и зададимся вопросом о том, что было бы, если бы это было не так. То есть — если бы модель эмбеддингов назначала бы неправильной «гипотезе» тот же эмбеддинг, что и исходному предложению? Тогда модель теряла бы данные в процессе работы, назначая разные входные данные одним и тем же выходным данным. Если бы это было так, тогда у нас не было бы надежды решить задачу, и не было бы способа узнать о том, какое именно из множества предложений, воспринимаемых моделью как «одинаковые», привело к появлению одного и того же эмбеддинга. На практике же мы, в ходе экспериментов, не сталкивались с подобными коллизиями.)
Наблюдение касательно того, что «гипотезе» назначается эмбеддинг, отличающийся от эмбеддинга исходного предложения, подтолкнул нас к применению «оптимизационного» подхода к преобразованию эмбеддингов в тексты. Имея эмбеддинг исходного текста (того, к которому мы хотим прийти), и текст текущей «гипотезы», мы можем обучить корректирующую модель, нацеленную на то, чтобы выводить нечто такое, что ближе к исходному тексту, чем «гипотеза».
Теперь наша цель ясна: нужно создать систему, которая может принять исходный эмбеддинг, текстовую последовательность «гипотезы» и позицию «гипотезы» в пространстве эмбеддингов, и сгенерировать текст, максимально близкий к исходному. Эта система видится нам как модель, в которой реализована разновидность «выученной оптимизации». Мы, обучая модель, фактически, заставляем её двигаться к цели в пространстве эмбеддингов под воздействием дискретных последовательностей данных. Это — суть метода, который мы назвали Vec2Text.
После проработки некоторых деталей и обучения модели, мы выяснили, что работает она удивительно хорошо! Один прямой проход коррекции повышает «индекс BLEU» с 30 до 50. Одна из сильных сторон этой модели заключается в том, что к ней, совершенно естественным образом, можно обращаться рекурсивно. Передавая ей текущий текст и его эмбеддинг, мы можем провести множество шагов такой оптимизации, итеративно генерируя гипотезы, формируя на их основе новые эмбеддинги, и снова передавая их на вход модели. За 50 шагов, применяя кое-какие специальные приёмы, мы можем точно восстановить 92% последовательности длиной в 32 токена, и выйти на уровень «индекса BLEU» в 97%. (В целом — достижение показателя BLEU в 97 означает, что мы почти идеально восстанавливаем каждое предложение, возможно — лишь с несколькими ошибками, касающимися знаков препинания.)
Тот факт, что текстовые эмбеддинги можно идеально преобразовать в исходный текст, заставляет задаться множеством вопросов. Один из них заключается в следующем. Вектор текстового эмбеддинга содержит фиксированное количество битов. Должна быть некая длина последовательности, при которой информация больше не сможет полностью сохраниться в таком векторе. Даже хотя мы и можем восстановить большую часть текстов, описываемых 32 токенами, некоторые модели эмбеддингов могут работать с документами, описываемыми тысячами токенов. Мы оставляем на будущее анализ взаимоотношений между длиной текстов, размерами эмбеддинга и возможностью восстановить из эмбеддинга исходный текст.
Ещё один открытый вопрос касается возможности создания систем, способных защищать другие системы от преобразования их эмбеддингов в исходные тексты. Можно ли построить модель, которая способна создавать такие эмбеддинги, которые позволят ей нормально работать, но при этом не дадут злоумышленнику раскрыть тексты, на основе которых эти эмбеддинги созданы?
И наконец — нам очень интересно увидеть то, как наш подход может быть применён в других ситуациях. Главный механизм Vec2Text (нечто вроде системы итеративной оптимизации в пространстве эмбеддингов) никак не использует каких-либо особых приёмов работы с текстом. Это — метод, который итеративно раскрывает информацию, содержащуюся в фиксированном наборе любых входных данных, имея доступ к исходной модели в режиме «чёрного ящика». Нам ещё предстоит увидеть то, как эти идеи могут быть применены к эмбеддингам, использующимся в других сферах машинного обучения. То же самое касается и применения этих идей для решения более общих задач.
Чтобы воспользоваться нашими моделями для преобразования текстовых эмбеддингов в текст, или чтобы самим провести эксперименты, подобные нашим, загляните в наш GitHub-репозиторий.
О, а приходите к нам работать? 🤗 💰Мы в wunderfund.io занимаемся высокочастотной алготорговлей с 2014 года. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.
Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь.
Сейчас мы ищем плюсовиков, питонистов, дата-инженеров и мл-рисерчеров.