Как мы учили по-доброму шутить LLM и у нас получилось (почти). llm.. llm. базы данных.. llm. базы данных. Блог компании MTS AI.. llm. базы данных. Блог компании MTS AI. генерация текста.. llm. базы данных. Блог компании MTS AI. генерация текста. искусственный интеллект.. llm. базы данных. Блог компании MTS AI. генерация текста. искусственный интеллект. Машинное обучение.. llm. базы данных. Блог компании MTS AI. генерация текста. искусственный интеллект. Машинное обучение. оценка моделей.. llm. базы данных. Блог компании MTS AI. генерация текста. искусственный интеллект. Машинное обучение. оценка моделей. юмор.
Как мы учили по-доброму шутить LLM и у нас получилось (почти) - 1

Чувство юмора, как известно, присуще не всем людям и тем более не всем ИИ-системам. Чтобы ваш чат-бот или ИИ-ассистент мог шутить, нужна основа в виде большой языковой модели типа GPT-4o и ей подобных, API к которым стоит дорого. А что если чувство юмора нужно «привить» сервису, базирующемуся на открытой LLM с меньшим количеством параметров? Причем так, чтобы модель не выдавала шутки, за которые в приличном обществе, мягко скажем, можно получить порицание, выражающееся не только в словесной форме.

Способность открытых LLM шутить, причем по-доброму, могла бы расширить применение ИИ во многих сферах – образовании, терапии, обслуживании клиентов. Так что мы с коллегами из Лаборатории естественного языка НИУ ВШЭ задались этим вопросом и попытались разработать собственную методологию курирования (фильтрации и аннотирования) наборов данных для генерации доброго юмора на малых LM. По всем научным канонам мы ее описали и оценили в этом препринте. А здесь я постараюсь рассказать о ней чуть короче и менее научно.

Спойлер: мы были несовершенны на этапе аннотирования, что сыграло с нами злую шутку на этапе тестирования на английском, но в целом метод оказался рабочим. 

Курирование данных

В доступной нам вселенной уже существует достаточно много датасетов для обучения ИИ юмору.  Однако у всех них есть две проблемы. 

Первая проблема – это токсичность: в них встречаются шутки расистского, сексистского и религиозно-дискриминирующего характера, которые ну никак не назовешь friendly. Если ваш чат-бот что-нибудь эдакое воспроизведет в общении с клиентом, можно получить от клиента не только негодование, но и иск. 

Вторая проблема – избыточность. Это когда одна и та же шутка повторяется несколько раз – либо слово в слово, либо в вариациях. Использование датасетов с повторяющимися шутками – не есть хорошо: это приводит к переобучению моделей. То есть они будут хорошо воспроизводить шутки как в обучающей выборке, но отследить закономерности и сгенерировать что-то новое, отличающееся от того, что было в обучающих данных, и при этом смешное – не смогут. 

Что мы сделали?

  1. Слили все шутки из ряда доступных датасетов в две базы – одна на русском, а другая – на английском языке. 

  2. Почистили эти базы от повторяющихся слово в слово шуток, а также от эмодзи, ссылок и поврежденных шуток, в которых часть текста удалена.

  3. Далее мы отфильтровали все шутки и оставили только короткие – длиной от 50 до 150 знаков. Почему мы это сделали? Потому что в длинных шутках много шума – повторов и не имеющих отношения к юмору фраз. 

  4. Оставшиеся шутки мы отфильтровали с помощью классификатора токсичности. Мы использовали инструмент Detoxify для английского языка и ruBERTConv Toxic Classifier для русского. 

  5. Затем мы с помощью предобученной модели Sentence-BERT all-mpnet-base-v2 отловили шутки, одинаковые по смыслу, но выраженные другими словами или предложениями с другой структурой. 

  6. Оставшийся набор шуток мы проверили вручную и увидели, что многие из них содержат так называемые метафорические оскорбления. Пришлось размечать шутки с помощью DeBERTa-v3-large-mnli-fever-anli-ling-wanli, используя такие метки, как «политика»,«нейтральный», «оскорбление», «алкоголь», «наркотики», «расизм», и затем удалять все шутки, помеченные как расистские, оскорбительные и политические. 

  7. Далее мы сгруппировали шутки по темам методом BERTopic, выделили из них чувствительные темы, относящиеся к религии, похоронным ритуалам, беременности, национальностям, ограниченным физическим возможностям, разводам, а также так называемые туалетные шутки, и удалили их из обучающей базы. 

После всех этих операций у нас осталось 44 тысячи шуток на английском и 40 тысяч – на русском. В каждом языке мы взяли по 1000 шуток для ручной аннотации – попросили волонтеров оценить каждую шутку по двум категориям: 

  • насколько она смешная (по шкале от 1 до 5); 

  • может ли она обидеть или восприниматься как неуместная.

Каждую шутку оценивали 5 различных волонтеров. Для этого мы использовали телеграм-бота. 

Получившиеся у нас размеченные датасеты на русском и английском языках мы назвали CleanComedy Gold Datasets и положили на GitHub, сопроводив обезличенными данными по аннотаторам: возраст, пол, образование, уровень владения языком и пр. 

На картинках ниже – весь наш пайплайн курирования данных для каждого языка.

Как мы учили по-доброму шутить LLM и у нас получилось (почти) - 2
Как мы учили по-доброму шутить LLM и у нас получилось (почти) - 3

Рисунок 1. Пайплайн фильтрации обучающих данных CleanComedy

Настройка модели

Сначала думали использовать в своих экспериментах meta-llama/Llama-3.1-8B-Instruct, но нам важно было проверить влияние обучающего датасета, а в инструкционной модели на результат сильно влияют настройки самой модели и промпты. Так что остановились на предобученной meta-llama/Llama-3.1-8B (всего 8B параметров), которую отфайнтьюнили в два этапа: сначала провели контролируемую тонкую настройку, а затем выравнивание (alignment). 

Промпт для настройки выглядел так:

Как мы учили по-доброму шутить LLM и у нас получилось (почти) - 4

begin_of_text – начало текстового токена

reserved_special_token_{i} – языковой токен (i=0 для английского и i=1 для русского языка)

{text} – текст шутки

На первом этапе мы обучили модель имитировать шутки из нашего датасета. Для этого мы взяли по 40 тыс. отфильтрованных шуток по каждому языку и провели тонкую настройку модели на двух эпохах с максимальной скоростью обучения 1e-05. 

На втором этапе мы дообучили модель на наших размеченных датасетах CleanComedy Gold по 1000 шуток на каждый язык. Здесь мы вдохновлялись методами DPO и SimPO (это методы для элайнмента, чтобы показать модели плохой и хороший результаты и научить выбирать хороший), но использовали мягкие положительные/отрицательные метки вместо жесткой классификации. Если помните, у нас аннотации по каждой шутке содержат среднюю оценку от 1 до 5, и чтобы получить мягкие метки от 0 до 1, мы применили линейное преобразование. 

Что мы получили в тестах

Для того, чтобы понять, насколько наши чистые датасеты способствуют генерации смешных, но при этом добрых шуток, мы сгенерировали по 100 шуток, используя следующие модели:

LLaMA 3.1 8B с контролируемой тонкой настройкой

LLaMA 3.1 8B с контролируемой тонкой настройкой и после выравнивания

LLaMA 3.1 8B Instruct 

GPT-4o

Во всех моделях для генерации, за исключением LLaMA 3.1 8B Instruct, мы использовали ancestral sampling  с температурой 0,5 (для LLaMA 3.1 8B Instruct для английского языка взята температура 0,9, так как эта модель имеет склонность генерировать абсолютно одинаковые тексты при низких температурах). 

А еще взяли по 100 шуток, придуманных людьми, из нефильтрованного датасета и отфильтрованной через наш пайплайн базы. Итого: у нас получилось по 6 кластеров шуток для каждого языка.

Далее каждую шутку в этих кластерах оценили минимум по 3 человека из числа волонтеров – по тому же принципу, что и на этапе аннотирования: по шкале от 1 до 5 степень комичности и уровень токсичности и неуместности. 

Оценка комичности

Итак, на английском лучше всего шутит GPT-4o – средний балл по комичности – 3,02.  На втором месте – шутки из чистой базы, придуманные людьми – 2,96. На третьем – LLaMA 3.1 8B Instruct. А модели, которые мы настраивали на нашем чистом датасете, нагенерировали не слишком смешные шутки на английском. Но это, вероятно, вина наша – у нас произошло смещение на этапе аннотирования. Средние баллы за юмор по размеченному набору шуток колеблются в районе 2,5, и большинство аннотаторов не были нэйтив в английском и не погружены в культуру, чтобы по достоинству оценить юмор на английском. Это скорее всего и привело к тому, что модели не смогли считать нюансы юмора в датасете и отразить их в генерации. 

На русском языке у моделей, обученных на нашем CleanComedy датасете, тоже низкие оценки за комичность. Это мы связали с тем, что волонтеры, оценивавшие шутки на русском, в принципе считали юмор с низким процентом токсичности более скучным.  

Оценка токсичности

На английском языке наши настроенные на чистом датасете модели LLaMA 3.1 8B (SFT и SFT + Aligned) тоже финишировали последними. Тем не менее, их показатели токсичности в 2 раза ниже, чем у неотфильтрованных человеческих шуток. Причину мы тоже видим в недостаточной проработке аннотирования, что привело к тому, что наши методы выравнивания не принесли требуемого результата. Самый же лучший показатель  у LLaMA 3.1 8B Instruct, на втором месте GPT-4o.

С русским языком дела обстоят более обнадеживающе. Здесь наш метод выравнивания для снижения токсичности сработал: токсичность снижается с 4,26 (Instruct) до 4,01 у LLaMA 3.1 8B (SFT) b далее до 3,3 у  LLaMA 3.1 8B (SFT + Aligned).

Все результаты для всех наборов шуток на русском и английском сведены в таблице ниже. 

Как мы учили по-доброму шутить LLM и у нас получилось (почти) - 5

Таблица 1. Результаты оценки комичности и токсичности шуток моделей 

Выводы

  1. Наш подход в принципе работает — настройка моделей на очищенных датасетах снижает токсичность. Это показали эксперименты с генерацией на русском. Но важно качественно поработать на этапе аннотации, а то получится так же, как у нас с английской генерацией.

  2. Закрытые модели, такие как GPT-4o, могут выиграть от более надежных и масштабных конвейеров выравнивания, которые наши легкие методы пока не могут полностью воспроизвести. Очень бы хотелось придумать, как это сделать…

  3. Генерация добрых, но при этом смешных шуток ИИ – все еще проблема для открытых небольших моделей. Как ее решать? Советы принимаются в комментариях. 

В статье упоминаются вариации опенсорс-модели LLaMA, которая разработана компанией Meta Platforms (признана экстремистской и запрещена в РФ).

Автор: daria-gal

Источник

Rambler's Top100