- BrainTools - https://www.braintools.ru -
Пару месяцев назад я публиковал отчет об эксперименте по созданию языковой модели на базе модульной архитектуры с ядром на латентных представлениях. Данная статья является отчетом о новых аспектах этого эксперимента. Поэтому для тех, кто не в теме, совсем коротко: классические авторегрессивные LLM оперируют токенами, условно говоря думают на токенном уровне. В модульной архитектуре отдельно выделяется языковой интерфейс в виде энкодера и декодера, а само «думающее» ядро работает уже не с токенами напрямую, а с их сжатыми латентными представлениями. Кому интересно, вот ссылка на статью с предыдущим экспериментом: https://habr.com/ru/articles/985496/ [1]
Но в ходе экспериментов быстро выяснилась одна важная деталь…
В классической авторегрессивной LLM выходной слой задает распределение вероятностей следующего токена по словарю. Иными словами, модель в явном виде хранит набор возможных продолжений генерации и их вероятности. Если говорить проще, то для одного и того же входа обычно существует не один «правильный» ответ, а много допустимых вариантов. Если вам сказали «Привет!», ответить можно по-разному, и многие варианты будут уместны. И показатель температуры для модели в этом смысле не создает новые варианты из воздуха, а лишь по-разному позволяет выбирать из уже выученного распределения.
В данной модульной архитектуре все сложнее. Ядро работает уже в непрерывном латентном пространстве и должно выдать единственный следующий латент, который потом будет развернут обратно в текст. Получается, что один компактный вектор вынужден в сжатом виде нести в себе сразу целый набор возможных продолжений. А значит, модель просто вынуждена усреднять альтернативы – формировать некий «средний по больнице» вариант ответа. И это плохо. Очень плохо. Страдает выразительность, сглаживаются интонации, пропадает характер подачи. Да и обучение [2] от этого не выигрывает, потому что часть тонких различий модель начинает попросту замыливать и игнорировать. Что с этим делать?
Логика [3] здесь напрашивается сама собой. Если в обучающих данных у нас есть конкретный вариант ответа, то вместе со смыслом он несет еще и стилистическую особенность, а нередко и отпечаток личности того, кто этот ответ сформулировал. Значит, если дать модели отдельную подсказку о стиле, она должна отвечать лучше и разнообразнее. А если довести эту мысль до конца, то мы вообще приходим к очень соблазнительной идее: попробовать построить что-то вроде эмбеддинга личности – компактного вектора, в котором зашита манера говорить, спорить, объяснять, сомневаться, убеждать. Для этого пришлось придумать и осуществить отдельный эксперимент – обучить модель, которая строит компактное латентное представление стиля целевого текста, но при этом не кодирует его семантику, то есть не подсказывает, что именно нужно отвечать. После этого это представление через cross-attention может быть добавлено в основную модель. Иными словами, на каждом шаге модель получает информацию не только «что понять», но и «в какой манере говорить».
И если во время обучения стиль извлекается из целевого ответа, то уже в режиме инференса такое латентное представление можно формировать отдельно, задавая тот стиль ответа, который мы хотим получить. Проще говоря, если раньше у нас была по сути одна ручка регулировки в виде температуры, то теперь появляется целый режиссерский пульт с набором отдельных настроек.
Но тут возникает закономерный вопрос. А что именно кодирует такой латент? Не превращается ли он просто в удобный «черный ящик», который вроде помогает, но что внутри – непонятно. Или действительно удалось наткнуться на нечто похожее на заготовку личности модели? И вот здесь началась, пожалуй, самая интересная часть эксперимента.
Если вдуматься, стиль текста – это не одна отдельная ручка. Это целый набор привычек. Кто-то пишет коротко и лаконично, кто-то разворачивает мысль длинными измышлениями. Кто-то формулирует осторожно, с оговорками, а кто-то звучит уверенно и категорично. Кто-то постоянно объясняет по шагам, а кто-то говорит свободно, почти разговорно. И самое важное: такие особенности у человека обычно повторяются, даже когда он говорит на разные темы.
Была выдвинута гипотеза, что такие характеристики присущи человеку и их отпечаток можно найти во всех его текстах, все зависимости от темы и формы.
Именно это я и решил проверить в новом эксперименте. Для обучения были взяты тексты реальных пользователей и модель обучалась выделять из них компактный латентный вектор, который описывает не смысл сказанного, а саму манеру говорить. Если совсем прямо, то это была попытка приближения к эмбеддингу личности – пусть грубому, неполному, но уже достаточно содержательному, чтобы по нему можно было отличать не только стиль текста, но и стоящий за ним человеческий профиль. Проще говоря, модель должна была отвечать не на вопрос «о чем этот текст?», а на вопрос «как этот человек обычно пишет?».
При этом было важно не скатиться в простое распознавание автора. Задача состояла не в том, чтобы сделать «детектор пользователя», который запоминает конкретных людей, а в том, чтобы получить гладкое пространство признаков, где рядом оказываются тексты людей с похожей манерой речи. И, судя по результатам, именно это и получилось.
Дальше – самое интересное. Когда начал смотреть на получившееся пространство, оказалось, что оно действительно не сводится к одной ручке «более креативно – менее креативно». В нем начали проявляться куда более содержательные оси. Отдельные направления стали соответствовать формальности, уверенности, структуре изложения, краткости, эмоциональному тону, лексической манере. Более того, в тексте начали проступать и более «человеческие» признаки: возрастные особенности, профессиональные следы, даже слабые маркеры пола. То есть получился уже не просто style embedding в узком смысле слова, а нечто гораздо ближе к каркасу личности, выраженной через текст.
Нет, речь конечно не идет не о том, что модель по одному комментарию может определить паспортные данные человека. Речь о том, что текст почти всегда несет в себе статистический отпечаток автора: словарь, ритм фраз, тип аргументации, склонность к сухому или, наоборот, эмоциональному стилю, привычку объяснять или приказывать, выбирать технические формулировки или разговорные. По отдельности такие сигналы слабы, но вместе они складываются в довольно устойчивый профиль.
Именно поэтому по массиву признаков, извлеченных из текстов человека можно не «узнать правду о нем», а оценить вероятные характеристики. Например, модель может уловить, что автор пишет скорее как технарь, чем как менеджер. Что его стиль ближе к спокойному и формальному, чем к живому и разговорному. Что он чаще строит ответы пошагово, а не импровизирует. Что он звучит уверенно или, наоборот, осторожно. Это не жесткие ярлыки, а вероятностный портрет, собранный по следам, которые человек сам оставляет в тексте и которые, несомненно, отражают стиль его мышления [4] и некоторые личностные характеристики.
Для проверки модели был подготовлен отдельный набор диагностик и синтетический бенчмарк, где можно было по одному менять конкретные стилевые факторы и смотреть, замечает ли их латент. И результат оказался очень обнадеживающим: модель не просто «что-то чувствовала», а действительно начала раскладывать стиль на отдельные управляемые компоненты. На тестовом наборе из ~2000 примеров для ряда признаков разделение получилось уже вполне уверенным.
По сути, это и есть самый интересный вывод эксперимента. Латент можно использовать не только как сжатое представление текста, но и как компактный носитель стилистики. А стилистика – это уже не просто «красивость» или «тон общения». Это отпечаток личности в самом широком смысле: опыта [5], профессии, возраста, привычек мышления, манеры спорить, объяснять и реагировать [6]. Если угодно, именно здесь и начинается то, что можно назвать зарождением личности языковой модели: сначала как набора устойчивых стилевых координат, а потом как управляемого внутреннего профиля.
Если упростить до предела, то получается любопытная картина. Семантика отвечает на вопрос «что сказать», а стилистический латент – на вопрос «каким человеком это будет сказано». И как только эти две вещи удается хотя бы частично разделить, у модели появляется совсем другой уровень управляемости. Фактически мы начинаем работать не просто с генерацией ответа, а с прообразом внутреннего персонажа, который этот ответ произносит.
Раньше мы в основном могли крутить температуру и надеяться, что ответ получится «поживее» или «поинтереснее», искать баланс между креативностью и галлюцинациями. Теперь становится возможным работать тоньше. Можно задать более уверенный стиль, более мягкий, более структурный, более разговорный. Можно приблизить ответ к условно «инженерному» или «объясняющему» тону, а можно попробовать извлечь стиль из текстов конкретного автора и использовать его как ориентир, не копируя содержание его сообщений.
И это, на мой взгляд, и есть главный практический смысл этого эксперимента. Мы получаем возможность перейти от модели, которая просто выдает следующее вероятное продолжение, к системе, где можно отдельно управлять содержанием и отдельно – манерой его подачи. И если с содержанием еще предстоит много работы, то со стилем уже видно: латентное пространство действительно умеет хранить гораздо больше, чем казалось в начале. Не просто шум, не просто средний вектор, а вполне содержательный отпечаток того, как человек говорит и кем он, вероятно, является. А значит, идея «эмбеддинга личности» перестает быть красивой метафорой и начинает превращаться в рабочую инженерную гипотезу.
Если говорить о практических результатах, то лучше всего модель разделяет такие вещи:
формальность против разговорности. Один полюс – сухие, аккуратные, почти «деловые» формулировки. Другой – свободная живая речь, короткие фразы, разговорные обороты;
уверенность против осторожности. В одном случае текст звучит как уверенное утверждение. В другом – как мягкая гипотеза с оговорками вроде “мне кажется”, “возможно”, “я бы предположил”;
структурность против спонтанности. Одни ответы строятся по шагам, с явной логикой и разбиением мысли. Другие выглядят как свободный поток рассуждений;
«инженерная» против гуманитарной подачи. Это скорее про сам способ изложения: через термины, причинно-следственные связи и точные формулировки или через образы, общие рассуждения и более свободный язык;
эмоциональная окраска. Модель достаточно уверенно различает нейтральную, сухую подачу и более вовлеченную, теплую или, наоборот, резкую манеру.
Если добавить немного цифр, картина становится еще интереснее. В «чистых» парных контрастах, где меняется в основном один фактор, модель показывает очень сильные результаты: формальность против разговорности различается с balanced accuracy = 0.93, уверенность против неуверенности – 0.94, эмпатичная против холодной подачи – 0.93, настроение вроде спокойного и тревожного тона – 0.85, а структура текста, например свободное изложение против пошагового – 0.92. Это как раз тот случай, когда видно, что отдельные стилевые оси модель уже выделяет очень уверенно.
Если же смотреть на более жесткий режим, где сразу перемешано много факторов, метрики ожидаемо ниже, но картина все равно остается содержательной. Лучше всего там держатся лексическая манера (balanced accuracy = 0.85), semantic bias (0.84), а также часть социальных и поведенческих маркеров вроде возраста (0.72), эмпатии (0.73) и структуры (0.70).



Интересно и то, что более «социальные» признаки тоже начинают проступать. Не идеально, но заметно лучше случайного угадывания. По совокупности текстов модель уже может уловить возрастные особенности речи, слабые маркеры пола и часть профессиональных следов. То есть не «определить человека», а именно восстановить вероятный профиль по его речевым привычкам. Например, возраст на изолированном тесте различается с balanced accuracy = 0.87, маркеры пола – около 0.75, а профессиональные следы в чистых срезах видны на уровне около 0.70. При этом в общем многоклассовом режиме профессиональный фактор пока заметно более запутан, так что здесь я бы говорил скорее о первых устойчивых сигналах, чем о надежном распознавании профессии. Но это я списываю на специфичность датасета – в нем есть определенные перекосы с которыми нужно поработать.


Есть и еще один важный результат: эти оси не только находятся, но и довольно хорошо комбинируются между собой. В бенчмарке среднее совпадение между предсказанной и реальной композицией стилевых сдвигов дошло до cos = 0.97. Проще говоря, если мы отдельно научились двигаться в сторону более формального, более уверенного и более технического ответа, то такие сдвиги можно сочетать, и модель в целом сохраняет ожидаемое направление.
Еще один приятный момент: максимальная корреляция отдельной оси с длиной ответа в бенчмарке остается умеренной, около 0.33. Но полностью эта примесь пока не исчезла: остаточный length bias все еще заметен, так что пространство уже работает с содержательными стилевыми признаками, но еще не идеально очищено от простых поверхностных факторов. Хотя с другой стороны фактор длины ответа тоже можно рассматривать как стилистический — некоторые ведь любят поговорить)
Подводя итоги проведенного эксперимента могу уверенно заявить: стиль в латенте действительно живет. Причем это не одна абстрактная координата «пишет красиво или некрасиво», а довольно богатый набор признаков, часть из которых напрямую связана с личностью автора. А значит, этим пространством можно уже пользоваться: для управления генерацией, для поиска похожих манер речи и для извлечения вероятных характеристик человека по его текстам. И, возможно, именно с таких на первый взгляд скромных стилевых векторов и начинается то, что однажды можно будет всерьез назвать личностью языковой модели.
Конечно эксперимент будет продолжаться — необходимо расширить датасет, повысить репрезентативность выборки. Отчасти ряд неуверенных результатов объясняется именно этим. Также необходимо увеличить покрытие бенчмарка – далеко не все оси латентного пространства идентифицированы. И, конечно, впереди самое главное — эксперименты по использованию этой модели в составе модульной архитектуры для улучшения качества ядра и управление стилем его мышления.
Эксперимент продолжается!
Автор: aka352
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/27164
URLs in this post:
[1] https://habr.com/ru/articles/985496/: https://habr.com/ru/articles/985496/
[2] обучение: http://www.braintools.ru/article/5125
[3] Логика: http://www.braintools.ru/article/7640
[4] мышления: http://www.braintools.ru/thinking
[5] опыта: http://www.braintools.ru/article/6952
[6] реагировать: http://www.braintools.ru/article/1549
[7] Источник: https://habr.com/ru/articles/1010550/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1010550
Нажмите здесь для печати.