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

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

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

РКН: 6348592885
Download Telegram
Channel created
Совсем недавно студенты в одном из чатиков известного канала по DL спросили:

- Дядя, а вам не тесно в *моё место работы* ?
- Конечно тесно, - ответил дядя ...
... и создал таки свой канал.

Тут автор будет говорить о всяком вокруг data science, что ему мило и любимо: анализе текстов aka NLP, поиске, соревнованиях, об RL, меньше о CV.

Как говорится. Поехали.

UPD. Немного о себе:

ML lead NLP команды Нейронные сети в SaluteDevices, мы отвечаем за понимание естественного языка (NLU) и retrieval based dialogue system. На созданных мной и моей командой моделях говорят 2 ассистента Салют: Сбер и Афина.

Автор моделей ru_sbert_large, ru_sbert_large_multitask, а также первой открытой ru_ bert_reward модели. Kaggle competitions master, призёр и победитель хакатонов по Data science. Читаю лекции, веду мастер классы по NLP, ML и выступаю на конференциях.
6👍2
Первым делом, расскажу о своём любимом information retrieval для NLP. Так уж вышло, что волею судьбы, мне выпала честь развивать retrieval based dialogue system в одной крупной финансовой компании. И поэтому хайп, который творится вокруг chatGPT, докатился до меня весьма своеобразно. А именно, я стал думать как подобные механики использовать для улучшения retrieval свойств векторов нашей системы для ведения диалога. И конечно, во-первых, выдумал свой RL-critic подход для векторов (об этом думаю в след.раз), а во-вторых, докатился до статьи InstructOR, код.

Идея: Один эмбеддер, несколько таск.
У нас есть к примеру 3 задачи :
Question Answering, Information Retrieval, Toxic classification.

Мы хотим к запросу Х для каждой таски Yi, дать доп.инструкцию X'i (по сути мы даём больше информации /контекста). Далее, мы выдвигаем гипотезу, что в зависимости от доп инструкции состояние энкодера для каждой задачи будет зависеть от (X, X'i). Следовательно, гипотетически, мы повышаем поисковое разнообразие, сообщаем доп свойства и вообще точнее ищем или предсказываем метки. Окей, вроде, понятно. Как сообщить такие свойства?

Для начала, нужно правильно написать инструкции для каждого примера каждой таски. А именно иметь следующие блоки из шаблона:
1) Домен. В инструкции должно быть указание доменной информации. К примеру, вы рассматриваете задачу рубрикации статей, вам нужно указать тематики (да домен может быть не один).
2)Тип текста: тут пишем о том, инъекцию какого типа мы делаем. Сообщение, запрос, уточнение, извлекаемый текст и тд.
3) Задача. Указываем цель. Классификация намерения, сентимент или же поиск информации, ответ на вопрос.

При этом, читаю статью заметил, что для каждой задачи приведен пример только одной инструкции, которая её характеризует. См. Таблицу ниже. На самом деле, я думаю, их может быть на каждую задачу гораздо больше. И тут админ уже потирает руки над парой интересных идей, как это проапгрейдить. Привет статье. ;)

Вопрос с данными решили. Теперь нужно на уровне архитектуры заложить для пар запрос + инструкция/контекст нужное поведение. Для этого авторы работы приводят классический подход на основе metric/contrastive learning. Всё как я люблю:
1) Берём пары (X, X'i) в каждой задаче.
2) Отбираем из них парафразы и инструкции которые должны вести к одному результату : классу, ответу на запрос или документу и тп.
3) Проводим обучение dssm, которая сводит векторные представления ведущие к одному результату и разводят обратные. Для этого используют в качестве цели entropy_loss в котором в качестве оценки уверенности ставится cosine similarity между релевантными/противоположными парами запрос+инструкция.

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

Модели в основе: имхо любой энкодер, но тут T5-encoder в стиле GTR (тюн энкодера на dssm). При этом модель T5 предобучена изначально на web корпусе.
С вариациями моделей в разных размерах уже можно для EN языка ознакомиться в HF

Тренируют, как обычно разное и большое. Есть энкодеры от 330m до 1.3b параметров (привет, ChatGPT reward model) . Всё можно опять же посмотреть на обнимашках.

Обещают ап по трём сетам:
- MTEB ( 56 разнообразных сетов как BEIR, STS, etc.)
- BilBoard (сет для замера на оценки качества генерации ответа, но тут нет генератора, но и ответы ретривала они умеют мерить)
- Retrieval promt (как понял оценивает качества извлечения/поиска)

Естественно таблицы с метриками прилагаются.
👍12🔥1
Концепт архитектура
Метрики на 3 сетах
Качество GTR vs InstructGTR
Пример инструкций
После прочтения статьи об InstructOR остаётся закономерный вопрос. А как всё это дело масштабировать? Ведь в самой статье написано, что нам нужны инструкции как к запросу так и к документу ответу (за исключением задач классификации). Никаких сил нашим дорогим, в прямом и переносном смысле, разметчикам не хватит- это же вопрос времени и средств. Дорого, долго.

Что же делать?
А теперь представьте. Мы будем использовать инструктора для улучшения инструктора ...

Прелюдия. У нас есть преднаписанные инструкции, а могут быть инструкции которые на самом деле лежат в истории поисковых запросов или даже внутри диалогов.
Например, в диалогах ассистента можно встретить: просьбу быть "помягче", или "может сменим тему"? Чем не инструкция?

Решение.
Поэтому берём обучаем ретривер, который выкидывает ответ,но по контексту диалога + задаче находит инструкцию. Далее уже кидаем инструкцию вместе с последней фразой диалога в GTR и ищем ответ. Вуаля. У нас контекстуальное общение. Почему контекстное? Да потому, что наша фраза инструкция выбрана ретривером в соответствии с контекстом и в рамках него же даёт команду/указание по тому, как нам вести диалог далее.

Можно естественно заменить систему retrieval на GPT, как все теперь любят. И у нас будет условный RAG инструктор. Можно наоборот заменить ретривер на маленькую GPT, которая будет брать промт/контекст и генерить инструкцию. Далее кормить её GTR и он будет лучше искать необходимые ответы/документы/информацию.

Всем спокойной ночи и пятницы развратницы.
👍5
😁5
Борьба за фактологическую достоверность или как взять GPT за RAGа.

Постом выше упомянул вскользь RAG, а на самом деле, хоть штука уже и старая (первые работы аж 2020-2021 гг.), но интересная. А сейчас вообще retrieval augmented generation получает свой ренессанс на фоне LLM, особенно ChatGPT. При этом последняя упомянутая ChatGPT всё ещё имеет проблемы с тем, что порой очень хорошо врёт. Ну просто красиво. Если Вы не эксперт её ответы, имея фактологическую ошибку, на первый взгляд и не вызовут у Вас сомнений в том, что всё достоверно. Поэтому ИМХО этот год будет не только гонкой LLM+RLHF (кстати этой концепции ещё больше лет , первые статьи аж 2017 г. ) , но и годом борьбы за "правду" в их генерациях.

Вот тут-то к нам и выходит на помощь RAG. В чем суть? Если в кратце, это подход при котором промт/запрос/инструкция прогоняется через зафриженый ретривер и получает в качестве доп. контекста выдачу из внешней базы документов, достоверность которой надежна (например системы QA/KGQA). Далее эта выдача конкатенируется с промтом и поступает в генератор. Наш декодер получая эту информацию на вход параллельно , что очень важно, выдаёт нам для каждой пары промт+документ распределения вероятности слов. А вот тут внимание! Далее самая красота. Для каждой пары мы имеем свои распределения и чтобы в итоге выдать кумулятивно итоговую вероятность генерации токена мы делаем финт. Используем старую добрую маргинализацию вероятностей. Да да, дядечка Байес с его теоремой и тут постарался!

Выглядит это до жути красиво:
Пусть у нас есть вероятность генерации P(Yi/x, z, Y1;i-1) , где Yi текущий токен кандидат при том, что x -промт, z- выдача ретривера, Y1;i-1 предыдущий контекст слов генерации (что уже сгенерировано на момент i). А P(z/x) у нас вероятность получить от ретривера на запрос x документ z. В таком случае обновлённая каждого токена вероятность P(yi/x) есть сумма P(z/x)*P(yi/x, z, y1;i-1) для всех z. Естественно далее берём argmax[P(yi/x)] и получаем уже перевзвешенный с учётом доп контекста ответ. Так для каждого этапа генерации. Авторы пишут, что это легко встраивается в beam search.

Всё понятно, кроме P(z/x). Откуда эти вероятности взять если у нас на выходе есть только эмбеддинги запроса и ответа ретривера? А тут к нам приходит на помощь любимый softmax от DotProd(embX, embZ).

Ещё хинт! При этом, оказывается, что для того чтобы мы могли учитывать перплексию в генераторе для улучшения ретривера включают e2e схему. Во время обучения мы размораживаем башню отвечающую за кодирование запроса, но не трогаем эмбеддер документа. Для этого используется не один общий енкодер (в их случае BERT-base), а берут bi-encoder схему на двух независимых. Такая схема позволяет не пересчитывать каждую итерацию обучения индекс документов и использовать условный FAISS и тп на лету.

В итоге мы получаем благодаря е2е схеме прокидывания градиентов в эмбеддинг запроса, что наш генератор корректирует положение эмбеддинга промта/запроса в пространстве поиска. Тем самым улучшая качество генерации и не трогая фактологию опорных документов.

По ссылке на HF в посте оч красивая гифка об этом всем процессе, как всегда лаконично и информативно (надеюсь удастся загрузить сюда). Ну и разумеется статья на arxiv.
🔥9
Forwarded from эйай ньюз
Откуда AI хайп и почему именно сейчас?
И немного баек от меня.

Я начал заниматься Deep Learning в 2015 году, когда переехал в Германию. Даже тогда, когда уже прошло 3 года после появления культовой архитектуры AlexNet, еще не все из научного мира купили идею нейронных сетей. В нашей научной группе CompVis (где зародился Stable Diffusion) проф был из тех, кто еще не полностью поверил в силу Deep Learning, и и поэтому первые 3-4 месяца я большую часть своего времени провел за работой с SVM (Support Vector Machine)

Но, с первых дней я понемногу начал поглядывать и на нейросети вместе со своими постдоком. TensorFlow тогда еще не было, а правил бал Caffe из Berkeley AI Research – ужасно неудобный фреймворк, где сеть нужно было определять в protobuf файле из набора заготовленных слоев. Ни о каком autograd и речи не шло. В 2016 на NeurIPS вышла моя статья CliqueCNN про self-supervised learning, и она была первой статьей по нейросетям из нашей научной группы.

В общем, я к тому, что Deep Learning с нами уже довольно давно (ну, или не так давно, смотря как посмотреть), и трансформеры, то на чем строятся все современные языковые модели, изобрели в далеком 2017 году, но дикий хайп пошел только в 2023. Я за хайпом никогда не шел, и когда начинал PhD, о нейросетях не кричала каждая собака в твиттере. В 2019 году мне показалось: “Ну, вот сейчас пик популярности AI и Deep Learning, смотри как StyleGAN завирусился”. Но это был мой пузырь, и высокая популярность нейросеток тогда была только внутри научного мира. Появилась куча AI программ и толпы студентов пошли изучать такие sexу предметы, как Machine Learning и Data Science. Это было только начало.

Ну а теперь, в 2023, я вообще в шоке от того, что происходит. Все как будто с цепи сорвались с этим ChatGPT и китайскими клонами. Мне за последние две недели 4 раза предлагали дать интервью в разные онлайн издания по поводу AI. Забавно наблюдать FOMO не только у людей, но и у крупных технологических компаний, которые готовы рисковать репутацией, лишь бы запрыгнуть в хайп-трейн. Самое смешное, так это то из-за чего этот хайп формируется. По сути технология за ChatGPT не является прорывной, никакой AGI изобретен не был. Все что произошло — так это, OpenAI смогли красиво обернуть свою модель (за это им стоит отдать должное) и дать потрогать ее массе обывателей, далеким от технологий. Вот тут люди, которые не понимают как это все работает, очнулись и иcпытали катарсис. Про AI стали говорить из каждого утюга, гуру учат зарабатывать с помощью ChatGPT, а VC закричали “возьмите наши бабки”. Ведь, то что ты не понимаешь тебе кажется магией, и для многих ChatGPT действительно выглядит как что-то из будущего. Да, инструмент оказался полезный, и уже может автоматизировать некоторую рутинную работу с текстом и кодом. Но магического там мало – линейная алгебра, бро. И до того как чат-боты перестанут нести пургу с уверенным лицом и действительно поймут, как устроен наш мир, пройдет еще несколько лет (предсказание сугубо оптимистическое и неконкретное).

Так что, друзья, давайте лучше будем разбираться в технологиях, а не бежать за хайпом. Для этого мы тут и собрались.

@ai_newz
👍6
Раз уж AI всё ещё на хайпе;) У нас всё ещё есть возможность оседлать новую волну в NLP. Поэтому, если Вам интересна эта тема или Вы хотите к ней приобщиться, вот Вам воскресняя подборка выступлений моих хороших знакомых и меня конечно же.

1. Лекция о том, как строят при помощи NLP голосовых ассистентов: продуктовый, retrieval, generative подход.
2. Выступление на DataFest2022 NLP секция про KNN LM (кстати всё ещё очень актуальный подход). Часть 1, часть 2. Автор @seeyouall.
3. Наше последнее в 2022 году представление об современном retrieval и как в нём помогает RL-critic.
4. Рассказ об ChatGPT от AIRI @anvarki. Спасибо за приглашение, Анвар ;)

Всем продуктивного вечера)
👍82