Dealer.AI
14.4K subscribers
674 photos
46 videos
16 files
705 links
Жоский ИИ Дядя
Твой личный поставщик AI 🦾🤖
Канал о мире интересного AI: GenAI, RecSys, поиск, classic ML, бизнес приклад и ai-meme👾

Для связи @dealer_ai
(реклама и консультации)

Head of ML, AI.
Kaggle: https://www.kaggle.com/andrilko

РКН: 6348592885
Download Telegram
SSA для диалоговых моделей и проблема релевантности и специфичности.

Рассуждения...

Часто в своей рутине приходится производить оценку качества работы диалоговых систем е2е. Для этого мы используем SSA.

Основная идея такого подхода:
1. Собираем диалоги: качеству, содержанию и репрезентации, по отношению к целевому домену, которой мы доверяем.
2. Обстреливаем этими диалогами нашу систему по принципу: мы вам контекст, вы нам ответ.
3. Отправляем результаты работы контекст+ответ в разметку.
4. Для каждого примера оцениваем насколько релевантный и специфичный ответ.

Ответ релевантный, если он разумен/логичен и соответствует контексту/теме диалога. Ответ специфичный, если он не только конгруентен теме общения, но ещё является конкретным, полным, содержательным. Не полными и содержательными являются, к примеру, общие фразы да/нет/не знаю и тп.

При этом, ответ может быть релевантным, но неспецифичным, далее показательный пример:
- Сегодня отличная погода! Самое-то погулять.
- Полностью с Вами согласен.

Или попроще:
- Сегодня отличная погода! Время совершить прогулку.
- Ага.

В обоих случаях, фразы ответы универсальны. Так можно ответить почти на любой пассаж. Поэтому обладают слабой специфичностью или во все не специфичны, но при этом релевантны. Естественно если ответ нерелевантный, то и неспецифичный .

Пример релевантного и специфичного ответа:
- Сегодня отличная погода! Время прогуляться.
- Прекрасная идея, одеваюсь, жду тебя у фонтана через час.

А теперь о проблемах насущных. Сегодня хочу рассказать об паре. Первая, для моделей generative/decoder like, - это проблема потолка релевантности. Известен факт, что генеративные модели имеют трудности с фактологией, галюцинациями и токсичной генерацией. При этом, такие модели зачастую оригинальны в своих ответах, их генерации сложно чаще всего назвать неспецифичными. Это благодаря, конечно, такой штуке как перплексия. Именно она как мера качества генерации, даёт консенсус между длиной и оригинальностью генерации. Кстати я сам делал замеры корреляции специфичности ответа и его длины. Как вы думаете отлична ли она от 0.5?) у меня было 0.66+ ...

Но вернёмся к нашим баранам. Как ранее интересно решали проблемы с релевантностью? Да всё при помощи тех же самых: incontext augmentation, RETRO, RAG и тп и тд. Цель всего одна: помимо промта, разными способами (подмешиванием текста или векторов) из внешних больших источников знаний дать подсказку LLM. Тем самым, модели, как было показано во всех выше перечисленных статьях улучшали показатели SSA. В первую очередь, за счёт решения проблем с фактологией и галюцинациями.

Казалось бы на этом всё. Но...
Пришёл RLHF, о котором уже слышно из каждого котелка. И если задуматься, этот подход тюнинга на малом, но более надёжном датасете с оценками от кожанных мешков, так же способствует разом:

1) улучшению фактологии
2) аккуратному, не токсичному общению
3) снижению галлюцинаций
4) большому разнообразию, ака специфичности.

И для этого, пусть и не просто, но возможно, путём настройки инструкций + RL моделек оценки , решать сразу проблемы улучшения пользовательского опыта и ведения диалога в принципе.
И как было уже отмечено, это не золотая пуля. Естественно грамотный претрейн важен, он решает задачу генерализации знаний. Но RLHF, получается, на дотюне после, не про генерализацию (генерализацию мы как раз пытаемся в процессе не потерять путём KL divergence регуляризации к базовой модели), он, на мой взгляд про улучшение именно решения конечных задач для юзера.
👍43
SSA для диалоговых моделей и проблема релевантности и специфичности. Продолжение.

Проблема вторая. Моя любимая, тк часто работаю с такой системой.
Проблема специфичности в retrieval based диалоговой системе. Вообще зачем оно нам надо? Эта ретривал based система, когда уже есть классные GPT. Ретривал модели, зачастую более безопасны, тк ответы черпают из "мешка фраз", а их пишут или вычитывают с логов эксперты/редакторы. Поэтому всякие модели общения с мошенниками, лучше, строить на таких подходах. Но возникает проблема, что "мешок фраз" конечен и не смотря на высокую релевантность таких фраз, они обладают низкой специфичностью. Конечно, можно заставлять писать редакторов интересные ответы, обладающие нужными свойствами,  но так бесконечно продолжаться не может. Поэтому,  нам нужно улучшить качество retrieval свойств нашей системы так, чтобы она поднимала в топ специфичные, полные, интересные ответы из того что есть. Как это сделать с учётом опыта от генеративок выше:

Способ первый и дорогой - блендер схема. Раз у нас decoder like специфичны, а ретривал релевантны. Давайте возьмём и скрестим эти два опыта. Будем брать кандидатов с обеих моделей, а дальше накинем сверху ещё один алгоритм, который выберет из этого микст пула лучший ответ. Например бустинг. Добавим ему ещё мета информации из моделек аннотаторов и тп.

Вариант второй - применим снова RL. Допустим, у нас нет своей генеративки, нет денег на внешнее АПИ к ChatGPT  и тп. Живём только с того, что можно взять в HF и своей retrieval системой. Тогда мы не робеем. Берём, на ваш взгляд, самый лучший decoder-like чекпоинт с обнимашек. Естественно, в рамках того языка, который у вас. Далее с помощью этой модели  для каждого ответа в вашей базе получаете perplexity score. Далее или юзаете as is на правилах или учите свой прокси  encoder reward на вход фраза на выход перплексия, который будет легче условной GPT на RL PPO. Если вы выбрали proxy reward , то кидаем это в алгоритм, который писал ранее в качестве RL-critic и тюните в тч на оценку интересности фразы ответа, как 1-perplexity.

На этом все. Сумасшедших экспериментов вам.
5🔥3🤯1
Минутка юмора после дождика в четверг.

Спасибо @belozersky
🤡9😁6👍43🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
C++ dev. Vs AI Prompt engineer...
🔥10😁5😢1
Всё, теперь все будут повсеместно гасить google.
🤔4
Лол... Реально? Уже вижу BotGptFather от telegram 👇

UPD. Искал источник, искал. Откуда Ateo взяли это 🤷‍♂

UPD. UPD. Ещё один источник заявил об этом https://t.me/rugram/648
Forwarded from Ateo Breaking
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️В следующем обновлении Telegram будет интегрирован ChatGPT.
🤯82
Если вы хотели пригласить друга встретиться на этих выходных и пропустить по бокальчику, вот вам затравка...

Всем хорошего отдыха
❤‍🔥15👍4😁2
Личный покемон карманный, твой..

UPRISE: Universal Prompt Retrieval для улучшения оценки с нулевым результатом.

Предыстория. В целом я уже говорил, и всё ещё топлю за это, что будущее небольших команд состоит не в том, чтобы повторить успех OpenAI с instruct/chat GPT или GPT-4. А в том, чтобы делать свои прокси модельки которые улучшают выдачу с GPT-like.

В таком случае у вас останется лишь три пути:

1. Улучшить ретривер для in context (не забывайте RAG)
2. Улучшить ретривер для out context (помните о RETRO)
3. Делать прокси маленький декодер, который также может генерить более интересные инструкции ( да да инструктор будет улучшать инструктор) .

При этом, о каждом подходе и их миксте я уже рассуждал тут.
И вот теперь, ребятки из Microsoft выкатили как раз концепцию прокси тюнинга легкого ретривера. Который в zero-shot режиме может апать свои поисковые свойства, которые коррелируют с выхлопом LLM.

Как это происходит?

1. Используем датасет FLAN. Из него берём инструкции для каждой таски и создаём условные шаблоны: p+x, где X описание таски и Р затравка инструкции к ней.

2. Далее учим ретривер на contrastive таске сводить релевантные p и x (шаблоны и описания из одной таски) и разводить нерелевантные.

3. Обстукиваем это end2end об прокси "small" LM класса GPT-Neo-2.7B. Ведь мы уже умеем её запускать в инференс режиме даже на утюге вашей игровой пекарне.

4. При обращении к proxy LM мы закидываем в неё тройки : prompt, input task caption и label of task. Т.е. ретривер по входу таски Xi вытаскивает лучшую для описания таски затравку Pji, к таски знаем лейбл таски Yi и далее отправляет Хi+Рji в LM-ку с конкатенкцией условно через "\n". Сравниваем её Y(Xi+Pji) с реальным Yi.

5. Далее proxy LM возвращает оценку качества каждой таски с учётом такого инпута, а так же мы можем посчитать ошибку. Эта ошибка end2end передаётся в contrastive таску ретривера, заставляя его лучше искать пару к описанию таски.

В качестве базовой модели для ретривера берут модель класса BERT-base и обучают это в режиме bi-encoder. Учат всю эту красоту end2end на протяжении 3 эпох, ориентируясь на конечную точность поиска в этом пайпе.

Важно proxy GPT зафрижена и учится только ретривер!
Вопрос для чего нужна proxy-LM?
Всё просто - она помогает оценить "читаемость" и понимание decoder-like моделями таких шаблонов, а если уж "маленькая" GPT поняла, то и LLM тем более поймёт, что от неё хотят.

Какие плюшки получаем:
1. Быстрый тюн и трансфер знаний на мультитаске для ретривера.

2. Возможность через прокси LM оценивать понимания декодер like моделями таких шаблонов, которые порождает ретривер. Но тратить на это меньше времени и ресурсов, тк обе модели легче чем downstream.

3. Возможность отбросить прокси LM-ку и быть уверенным, что и на LLM наш ретривер не подведёт. По крайней мере, исследования в статье указывают на это.

Статья arxiv, код github
👍123
Схема обучения и инференса
This media is not supported in your browser
VIEW IN TELEGRAM
3
Сравнение с другими ретриверами
Результаты в разных связках retrieval+LLM
👍3
Пользователь @pakhandrin из Twitter написал при помощи ChatGPT приложение Курсор, при этом самостоятельно не придумал ни строчки кода.

За наводку спасибо @belozersky

История: https://twitter.com/pakhandrin/status/1640397012502822938?t=odzklZ3B5z7v7V_poXKEVg&s=19
🔥1032👏1
Forwarded from Ilya Gusev
Привет.

Мы тут экспериментируем с instruct-моделями для русского. Вот их список:

instruct_rugptlarge
rugpt_medium_turbo_instructed
rugpt_large_turbo_instructed
rut5_large_turbo_instructed
mt0_xxl_ru_turbo_alpaca_lora
llama_7b_ru_turbo_alpaca_lora


Последняя - русский аналог Стенфордской Альпаки. Изначально я думал, что это не будет работать из-за того, что в обучении из русского там была только ru-wiki, но кажется я ошибся. Работает приемлемо. Насколько приемлемо будем ещё измерять. В карточке есть ссылка на Колаб, а также Spaces (он будет жить ещё 24 часа).

Код обучения и сборки датасета: https://github.com/IlyaGusev/rulm/tree/master/self_instruct.

Что касается датасета, он увеличился до 30к, там добавилась разметка для 3.5к примеров (спасибо всем разметчикам!), а также колонка с альтернативными ответами от ChatGPT, когда её спрашивают каждое задание по отдельности.

Теперь о деньгах. Суммарно 70$ ушло на ChatGPT API для сборки датасета, и 120$ на вычислительные ресурсы для всех экспериментов. Хотите помочь деньгами?
Ссылка для тех, кто не в России: PayPal
Для тех кто в России: Cloudtips

P.S.: "мы" это @alexkuk, @alexnikolich, @YallenGusev, @chckdskeasfsd, @dno5iq
21👍3
Предвыходное чтиво

Рубрика LLAMA в каждый дом

Тут ребята предлагают возможность тюнить на инструкциях свою ламу за 1 час. А всё благодаря, всеми любимыми адаптерам.

На мой взгляд вполне логичное продолжение темы. Заведи свою Ламу у себя на тапке. Обещают не только быструю адаптацию, но и поддержку мультимодальности (текст, картинки и вот это всё).

Го, го, го тестить!

Всем доброй ночи и пятницы развратницы!
🔥13
👍4
👍6
Тут ребзя нашли курс по RL , говорят совместно с deep mind.

Давайте проходите и пилите свой PPO super pro max pluse RLHF

https://youtube.com/playlist?list=PLqYmG7hTraZDVH599EItlEWsUOsJbAodm
👍8