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 регуляризации к базовой модели), он, на мой взгляд про улучшение именно решения конечных задач для юзера.
Рассуждения...
Часто в своей рутине приходится производить оценку качества работы диалоговых систем е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 регуляризации к базовой модели), он, на мой взгляд про улучшение именно решения конечных задач для юзера.
research.google
Towards a Conversational Agent that Can Chat About…Anything
Posted by Daniel Adiwardana, Senior Research Engineer, and Thang Luong, Senior Research Scientist, Google Research, Brain Team Modern conversatio...
👍4❤3
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.
На этом все. Сумасшедших экспериментов вам.
Проблема вторая. Моя любимая, тк часто работаю с такой системой.
Проблема специфичности в 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.
На этом все. Сумасшедших экспериментов вам.
huggingface.co
Perplexity of fixed-length models
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
❤5🔥3🤯1
Соседи говорят, что на PS5 кластер для топчеков.
TF-monkeys тем временем....
Юзают steamdeck
https://www.reddit.com/r/SteamDeck/comments/t6ve8b/tensorflow_deep_learning_on_the_steam_deck/
TF-monkeys тем временем....
Юзают steamdeck
https://www.reddit.com/r/SteamDeck/comments/t6ve8b/tensorflow_deep_learning_on_the_steam_deck/
Reddit
From the SteamDeck community on Reddit: Tensorflow (Deep Learning) on the steam deck!!
Explore this post and more from the SteamDeck community
This media is not supported in your browser
VIEW IN TELEGRAM
C++ dev. Vs AI Prompt engineer...
🔥10😁5😢1
Лол... Реально? Уже вижу BotGptFather от telegram 👇
UPD. Искал источник, искал. Откуда Ateo взяли это 🤷♂
UPD. UPD. Ещё один источник заявил об этом https://t.me/rugram/648
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.
🤯8❤2
Dealer.AI
Лол... Реально? Уже вижу BotGptFather от telegram 👇 UPD. Искал источник, искал. Откуда Ateo взяли это 🤷♂ UPD. UPD. Ещё один источник заявил об этом https://t.me/rugram/648
Telegram
Ateo Breaking
Telegram не планирует интеграцию с ChatGPT
В последние дни в СМИ распространяется информация о том, что в следующую версию Telegram интегрируют чат-бот ChatGPT.
Источник, близкий к Telegram, опроверг слухи о том, что разработчики планируют интегрировать…
В последние дни в СМИ распространяется информация о том, что в следующую версию Telegram интегрируют чат-бот ChatGPT.
Источник, близкий к Telegram, опроверг слухи о том, что разработчики планируют интегрировать…
Личный покемон карманный, твой..
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
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
Telegram
Dealer.AI
После прочтения статьи об InstructOR остаётся закономерный вопрос. А как всё это дело масштабировать? Ведь в самой статье написано, что нам нужны инструкции как к запросу так и к документу ответу (за исключением задач классификации). Никаких сил нашим дорогим…
👍12❤3
Пользователь @pakhandrin из Twitter написал при помощи ChatGPT приложение Курсор, при этом самостоятельно не придумал ни строчки кода.
За наводку спасибо @belozersky
История: https://twitter.com/pakhandrin/status/1640397012502822938?t=odzklZ3B5z7v7V_poXKEVg&s=19
За наводку спасибо @belozersky
История: https://twitter.com/pakhandrin/status/1640397012502822938?t=odzklZ3B5z7v7V_poXKEVg&s=19
🔥10❤3⚡2👏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
Мы тут экспериментируем с 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 час. А всё благодаря, всеми любимыми адаптерам.
На мой взгляд вполне логичное продолжение темы. Заведи свою Ламу у себя на тапке. Обещают не только быструю адаптацию, но и поддержку мультимодальности (текст, картинки и вот это всё).
Го, го, го тестить!
Всем доброй ночи и пятницы развратницы!
Рубрика LLAMA в каждый дом
Тут ребята предлагают возможность тюнить на инструкциях свою ламу за 1 час. А всё благодаря, всеми любимыми адаптерам.
На мой взгляд вполне логичное продолжение темы. Заведи свою Ламу у себя на тапке. Обещают не только быструю адаптацию, но и поддержку мультимодальности (текст, картинки и вот это всё).
Го, го, го тестить!
Всем доброй ночи и пятницы развратницы!
GitHub
GitHub - ZrrSkywalker/LLaMA-Adapter: Fine-tuning LLaMA to follow Instructions within 1 Hour and 1.2M Parameters
Fine-tuning LLaMA to follow Instructions within 1 Hour and 1.2M Parameters - ZrrSkywalker/LLaMA-Adapter
🔥13
Тут ребзя нашли курс по RL , говорят совместно с deep mind.
Давайте проходите и пилите свой PPO super pro max pluse RLHF
https://youtube.com/playlist?list=PLqYmG7hTraZDVH599EItlEWsUOsJbAodm
Давайте проходите и пилите свой PPO super pro max pluse RLHF
https://youtube.com/playlist?list=PLqYmG7hTraZDVH599EItlEWsUOsJbAodm
👍8