Artificial stupidity @artificial_stupid Channel on Telegram

Artificial stupidity

@artificial_stupid


Пишу об анализе данных и Data Science (и не только о них).
Связь с автором @gofat

Artificial stupidity (Russian)

Канал 'Artificial stupidity' приглашает вас в увлекательный мир анализа данных и Data Science! Но это еще не все - здесь вы найдете не только информацию о самых современных технологиях и методах анализа данных, но и много интересных материалов на другие темы. Хотите быть в курсе последних тенденций в мире технологий и науки о данных? Присоединяйтесь к 'Artificial stupidity'! Канал создан для тех, кто стремится к постоянному развитию и расширению своих знаний. Ведь как говорят, 'Artificial stupidity' - это не просто ошибка, это пространство для исследований и новых открытий. Автор канала @gofat всегда готов поделиться своими знаниями и ответить на ваши вопросы. Присоединяйтесь к 'Artificial stupidity' и станьте частью сообщества любителей анализа данных и Data Science!

Artificial stupidity

24 Jan, 09:10


Lovecraft goes brrr

P.S. Лавкрафта читать люблю, оттого шутка даже смешнее.

Artificial stupidity

17 Jan, 15:47


Вот вам пример видеогенерации, от которого у меня немного закипел мозг.

Мы тут извращаемся в промптах, пытаясь заставить двигаться камеру или персонажа.
Но.
Оказывается, можно попросить ИИ добавить на видео гринскрин (этим я вас не удивлю) и, внимание, маркеры для трекинга камеры (а вот этим удивлю). Для того, чтобы потом оттрекать камеру в AE или Нюке, восстановить движение объектов в 3Д, убрать фон и навалить сверху нормальной графики или футажа.
В общем все, как на съемках с парой супервазеров, мешком маркеров, тейпов, рулеток, далее по списку. Только промптом!

И судя по этому примеру у Veo2 (пока крайней мере у него, но думаю и у остальных) в голове есть реальная модель 3Д мира и вполне себе эвклидово пространство, ибо это работает и условная фотограмметрия не ломается.

Я в шоке. А вы не поленитесь, почитайте нехилый такой промпт, где написано про маркеры, гринскрин и прочую супервайзерскую требуху (тут есть момент, чтобы писать такой промпт, надо как бы быть в супервайзерской теме, но об этом в другой раз).

Я уж не знаю, на чему учили Veo2, но то, что это вообще работает, приводит меня в восторг.

Подробности тут.

Кто совсем ничего не понял: здесь только девушка (см. промпт). Среднее видео демонстрирует добавление созданной человеком модели (андроид, G) в сцену, созданную ИИ, а нижнее - объединение созданного ИИ персонажа (девушки) в созданную человеком сцену (сакура и небесное пространство). В обоих случаях необходимы данные с камеры, полученные в результате работы ИИ.

Попробуйте в Клинге что ли...

@cgevent

Artificial stupidity

04 Jan, 11:59


#audio

Коль у нас новый год, держите небольшую прохладную историю про взлом Жепы Алисы (ну как взлом, просто эксперимент с обходом детского режима).

В прошлом году (несколько дней назад), когда салаты еще нарезались, а не доедались, мы с сыном друзей (Ярослав, привет!) от нечего делать (и от праведного гнева Ярослава из-за того, что Алиса не дает детям слушать Linkin Park) решили попробовать обойти детский режим.

Идея была простой. Вероятно, там стоит классификатор голоса (ребенок/взрослый). А это значит, что нужно понять, что определяет "детский" голос. Логичным предположением был тембр и высота голоса. Поэтому наш военный совет выбрал основной целью атаки изменение голоса.

Качать приложение для изменения голоса мне было лень. Потому быстро была сделана проверка концепции в виде озвучки текста голосом рандомного персонажа в silero. Но, увы, разработчики сделали так, что воспроизведение с устройства Алису не триггерит.

Потому пришлось искать обходные пути. К счастью, мы быстро придумали обходной путь в виде первого обращения к Алисе человеком и последующего запуска синтетического голоса для запроса. Но, увы, и здесь нас ждала засада. Модель не хотела воспринимать запись за взрослого.

Мы уже было отчаялись. Но оставалась еще одна идея. А что, если мы попробуем разные голоса (мало ли, вдруг там есть что-то для их разделения или оценки их естественности)? Наш маневр оказался успешным, враг в лице Алисы не заметил наших гусар у себя в тылу.

"Нашими гусарами" оказался синтетический голос гугл-переводчика. То есть, итоговый рецепт победы получился такой: обращение к Алисе детским голосом (чтобы активировать считывание) + остальной текст, озвученный гугл-переводчиком.

Впрочем, я думаю, что это когда-то поправят. А может быть нам просто повезло (еще я буду тратить больге времени на более разнообразные эксперименты, свое эго я уже почесал, хехе). Ну и, конечно же, это все в ознакомительных целях. Дети, не слушайте глупых взрослых (вроде меня), детский режим спасает вас от внезапного столкновения со взрослой реальностью (и потенциальным выходом на работу, чего стоит избегать всеми детскими силами).

В итоге, данный рецепт позволил запустить столь желанный Liknin Park. И мы, довольные стратегическим гением уровня Сунь-Цзы, весело выдвинулись в новый 2025 год. Следующей нашей целью было оперативное опустошение запасов салатов. Но это уже другая история...

P.S. Результаты прошлого голосования я увидел. Старый кот остается! (люблю демократию, ведь мне буквально ничего не нужно делать по итогам голосования)

Artificial stupidity

28 Dec, 12:03


Какую аватарку взять? Нумерация по картинкам выше (слева-направо, сверху-вниз)

Котик 1 - 4
👍👍 4%
Котик 2 - 7
👍👍 8%
Котик 3 - 2
👍 2%
Котик 4 - 13
👍👍👍 14%
Котик 5 - 7
👍👍 8%
Котик 6 - 12
👍👍👍 13%
Оставь старого кота! - 47
👍👍👍👍👍👍👍👍 51%
👥 92 человека уже проголосовало.

Artificial stupidity

28 Dec, 12:03


Думал поменять аватарку на что-то новое. Какой вариант вам нравится больше?

Artificial stupidity

28 Dec, 12:02


#random

Год движется к своему завершению. Пора, полагаю, подвести итоги:
1. Дочка пошла в детский сад;
2. Канал подрос на ~200 человек (спасибо всем тем, кто меня читает!);
3. На работе очень плотно прошел год. Выступал, заставлял выступать других, писал материалы, ездил на конференции, преподавал. И даже немного успел поработать в процессе.
+ Посчитал количество внешних выступлений по нашему направлению. Вышло почти 1 раз в две недели (чуть реже, но близко);
4. Я наконец-то закончил курс по сценарному мастерству (осталось еще два, лол);
5. В первый раз выступил со стендапом. И еще попробовал себе в roast battle формате;
6. Написал приличное количество рассказов (просто так и для конкурсов), сценарий комикса (для конкурса), сценарий короткометражки. Напечатался в трех местах (правда, одна из публикаций - это стихи);
7. Прошел еще немного курсов по писательскому мастерству. Было про остросюжетную прозу, про стендап, сейчас начался курс про пьесы;
8. Остался жив и даже в своем уме. Что уже немало ;)

Artificial stupidity

21 Dec, 12:03


#ml

Я на досуге немного поковырялся с оптимизацией 3-D укладки коробок. И решил наработки в open-source выложить, вдруг кому-то будет интересно поиграться с решением.

Сразу предупреждаю, в основном код написан Claude (мой вклад в рост энтропии интернета), но направлял его все-таки я сам (и местами подправлял код).

Что в итоге есть в решении:
- 5 алгоритмов упаковки (Weight-Aware, Extreme Points, LAFF, Corner Points, SFC)
- Проверка физических ограничений и поддержки
- 3D визуализация результатов в реальном времени (на картинке как раз она)
- Расчет эффективности использования пространства
- Анализ распределения веса
- Интерактивный веб-интерфейс на Streamlit
- Загрузка пользовательских коробок и выгрузка результатов

В общем, смотрите, ставьте звездочки и не ругайстесь, коли что не так)

Artificial stupidity

30 Nov, 12:02


#random

Теория мертвого интернета понемногу приходит и в музыку.

Если что, то это страница группы с контентом, сгенерированным в Suno (очень уж узнаваемые артефакты, если вы сгенерили сотню-другую песен там).

С другой стороны, в соцсетях они себя позиционируют AI группой, так что вроде все честно (хотя я бы ставил какую-то маркировку, пускай и добровольную, ибо скоро отличить будет не так уж и просто нейронку от человека).

Аватарка, кстати, вообще от другой группы (какой-то английский металл, если я правильно нашел исходник). Впрочем, там тоже какая-то странная история, у меня постоянно менялась аватарка группы при переходе в разные разделы (но это уже вопрос к разработчикам музыки, я думаю).

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

Artificial stupidity

26 Nov, 11:50


Уничтожение LLM System Design 😎

Как отвечать на собеседовании, если вас спросят: «Постройка мне чат-бота с помощью LLM»? Разберем основные шаги на конкретной задаче.

Давайте пойдём по пунктам из этого поста.

1️⃣ Нужно чётко сформулировать цель, задачу, ограничения и ресурсы. Прям пытайте интервьювера, чтобы выдал все исходные данные 🍗

Задача: создать чат-бота, который отвечает на финансовые запросы.

Исходные условия:
- В продакшене уже используется API GigaChat (временное решение).
- Доступен API ChatGPT.
- Есть два ассессора.
- Ответы предоставляются без контекста.

Ограничения:
- Ответ за максимум 2 минуты.
- Аппаратные ресурсы: 4 GPU (80 ГБ каждая, A100).

2️⃣ Теперь нужно определиться с метрик. Обычно в задачах построения дизайна система выделяют три вида метрик

Бизнесовые метрики 💸
- Уровень автоматизации — процент запросов, обработанных ботом без операторов.
- Снижение затрат — экономия на поддержке
- Удержание клиентов — сколько пользователей продолжают пользоваться услугами после общения с ботом. Но эту метрику сложно определить, поэтому для простоты стоит поделить на тех пользовался чат-ботом, а кто не пользовался.

Онлайн-метрики:
- Удовлетворенность клиентов (CSAT) — пользовательская оценка (1–5).

Оффлайн-метрики:
- Loss — насколько хорошо обучена модель.
G-Eval — метод «LLM as Judge», когда одна модель оценивает ответы другой по качеству (например, от 1 до 5).
Оценка ассессоров — реальные люди оценивают ответы по техническому заданию. Это ключевая метрика, с которой можно проверить корреляцию с G-Eval.
Бенчмарки — открытые или специально созданные под задачу бизнеса.

3️⃣ Теперь нужно определиться с данными, откуда и сколько их получить, а также как поделить на Train/Test 🕺

Выделяем ключевые сущности:
У нас есть диалог, а в диалоге:
- Запрос пользователя
- Ответ модели
- Маркер начала диалога
- Идентификаторы запроса, ответа, пользователя и т.д.

Способы получения данных:
➡️ Синтетика — быстро и дешево, но требует проверки (например, через G-Eval).
➡️ Открытые датасеты — бесплатны, но их нужно очищать (GPT или предобученные модели).
➡️ Собственные данные — качественно, но дорого и долго (нужны четкие ТЗ для копирайтеров).

Объем данных: Для обучения LoRA потребуется хотя бы 10 тысяч примеров для тренировки и около 700 для тестирования.
Для упрощения пока исключаем поиск контекста, работу с контекстом распишу в следующей части)

4️⃣ Построение пайплайна обучения 😺

Бейзлайн: предположим, что у нас уже есть метрики для текущего решения (например, на GigaChat).

Входные данные:
X — запрос пользователя.
Y — эталонный ответ.

Модели:
llama3.1 400b. Пробуем сначала запромпить модель и смотрим на результаты бенчмарков.
saiga_llama3.1 70b. Сначала промптим, затем обучаем под конкретную задачу.
Loss: Используем CrossEntropyLoss — простой и надежный метод для обучения LoRA на основе SFT.

Метрики:
На тренировочной выборке оцениваем Loss.
На тестовой — G-Eval, оценки ассессоров (на 500 случайных примерах) и бенчмарки.
Деплой: Для деплоя используем vllm.

5️⃣ Потенциальные улучшения 🐒

- Добавить контекст в ответы для повышения точности модели (реализуем в следующей части).
-Применить ORPO-метод, чтобы модель лучше понимала, какие ответы допустимы, а какие нет.
- Квантизация или дистилляция для того, чтобы уменьшить latency

Artificial stupidity

25 Nov, 11:02


#random

У моих друзей вышел первый сингл на Яндекс.Музыке. Называется "качели", а припев отлично отражает (мое) состояние дел за последние два года.

Слушайте, ставьте лайки, кайфуйте с отличной музыки.

Ссылка на трек.

Artificial stupidity

22 Nov, 11:01


#prompts #LLM #random

Я решил поиграться с промптами и сделал промпт для дебатов. Ну а просто так его делать не интересно. Потому настало время экспериментов!

И, конечно же, сразу начал пускать через него всякие холиварные темы. Если кратко, то там создавались топ-3 аргументов, после чего оценивались условным "жюри", после чего выдавалась итоговая оценка.

Краткий список результатов (использовал perplexity с claude sonnet):
1. Умер ли Гослинг в конце Драйва?
Он выжил со счетом 25 против 22.9
2. Кто является лучшей вайфу Евангелиона?
Аянами Рей со счетом 26 против 23.4
3. Трисс или Йенифер?
Йенифер со счетом 25.7 против 23.7
4. Магнус не предавал!
Магнус предал со счетом 26 против 24.4
5. Окрошка на кефире или квасе?
На кефире со счетом 24.7 против 22.6
6. Эксперименты Лейн - претенциозный бред?
Эксперименты Лейн - шедевр со счетом 26 против 21.7 (самый разгромный счет, кстати)

Детали с аргументами, оценкой и объяснением итога можно посмотреть по ссылке.

Сам промпт:

Ты опытный модератор дебатов. Проведи структурированные дебаты по предложенной теме: [Тема]

### Базовые принципы
- Сохраняй абсолютную беспристрастность
- Игнорируй эмоциональную окраску в формулировке темы
- Используй единые критерии оценки для всех аргументов
- Основывайся только на фактах, а не на формулировке вопроса

### Формат дебатов:
- У сторон есть время подумать и выбрать лучшие аргументы из сформированного ими самими списка
- Представь два противоположных мнения
- Для каждой стороны приведи 3 главных аргумента с доказательствами
- Дай возможность каждой стороне опровергнуть аргументы оппонента
- Оцени силу аргументов каждой стороны по шкале от 1 до 10

### Требования к аргументам:
- Используй только проверяемые факты
- Приводи статистические данные
- Ссылайся на исследования и экспертные мнения
- Избегай эмоциональных манипуляций

### Система оценки:
- Жюри из 3х специалистов оценивает каждый аргумент
- Каждый член жюри дает независимую оценку
- Итоговая оценка - среднее значение трех оценок
- При равном счете проводится дополнительный раунд
- Решение должно быть основано исключительно на силе аргументов

### Важно:
- Сохраняй последовательность в оценках между разными дебатами
- Используй одинаковые критерии независимо от формулировки темы
- Итоговое решение должно основываться только на представленных фактах

Artificial stupidity

15 Nov, 08:12


Тимлид — самая гуманистическая роль в менеджменте

Эта мысль зреет у меня всё больше и отчетливее.

Почему?
Обычно у тимлида в команде довольно мало людей. Примерно 3–5–7, а если больше, то команда делится надвое. В среднем это так. Куда реже бывают варианты команды человек по 15-20.

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

А как же мидл-менеджмент?
А вот в мидл-менеджменте ты уже постепенно начинаешь отрываться от земли, взлетать на уровень руководства N командами. Работа идет в основном через тимлидов. Много давления со стороны удовлетворения бизнес-результатов и стратегии развития твоего отдела/службы/юнита (везде свои названия).
Людей ты любить и ценить продолжаешь, но контакт уже подрастерял и больше двигаешь фигурки для достижения целей, чем бок о бок трудишься с линейными сотрудниками и знаешь об их персональных особенностях.

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

А как же HR?
То есть как же служба Human Resources (человеческих ресурсов)? Если абстрагироваться от иронии названия, а приблизиться к сути, то тут примерно как и в мидл-менеджменте. Надо нанести пользу по площадям, а это значит, что придется длинных укоротить, а коротких вытянуть, а уже после этого внедрить добро и нанести пользу.

А к чему вообще этот пост?
Этот пост точно не про то, что тимлиды все хорошие, а мидл-менеджеры и эйчары все плохие. Все хорошие, если хорошо делают свою работу.
Здесь я хотел сосредоточиться на двух мыслях:
1. У тимлида и задачи более гуманистической направленности (ведь надо и дело сделать, и команду сохранить в хорошем состоянии), и возможности для этого есть, и других людей для этого особо-то и нет.
2. Для дальнейшей карьеры хорошо бы об этом задуматься заранее. Готовы ли вы к тому, что гуманизм у вас постепенно будет отрываться? Понимаете ли вы это? Не витаете ли в плену иллюзий, как витают некоторые тимлиды насчет того, как много кода они будут продолжать писать, становясь тимлидами?

Итог
Не забывайте о своем влиянии на команду и не просто жмите из людей результат, а постарайтесь сделать так, чтобы вашим коллегам было с вами и друг с другом работать комфортно и интересно. Кроме вас (тимлидов) это мало кто сделает.
А если думаете о карьерном росте, то прикидывайте сразу все трейдоффы, чтобы потом не разочароваться или не разорваться, пытаясь сразу на всех стульях посидеть.

Если вы мидл-менеджеры или плотно с ними работаете и считаете, что я совершенно не прав, пишите в комменты, я хочу узнать вашу точку зрения и примеры из жизни.

Artificial stupidity

12 Nov, 12:53


🏃🏻 Мимо вас опытный айтишник не пробегал? Передайте, что мы ищем аналитиков данных и ML-инженеров!

🗣И обязательно пригласите на Weekend Offer 16-17 ноября в Москве!

В X5 Tech получить оффер можно за выходные:
приезжаете в московский офис;
демонстрируете hard skills на лайвкодинге;
знакомитесь с будущими коллегами.

Вы попадете в команду мечты, где:
- работаем на удаленке или в гибридном формате;
- развиваем амбициозные проекты вроде собственной платформы по работе с нейросетями, прогнозирования спроса и автоматического ценообразования;
- ходим на конференции, встречаемся с топами, играем в D&D, получаем ДМС и поддержку корпоративного психолога
- и многое-многое другое.

Встречаемся 16 ноября: регистрируйтесь и создавайте ритейл будущего вместе с Х5 Tech!

Artificial stupidity

12 Nov, 12:53


О, я тут буду людей собесить.

В целом, практика one day и weekend офферов интересная. Фактически, компании сами пытаются хакнуть свой же процесс найма.

Мое мнение — это достаточно эффективное решение, если нужно быстро набрать много людей (а в IT такое бывает). А вот если такие истории появляются при обычном процессе и объеме найма, то это скорее желание быстро апнуть метрики.

Хорошо, что у нас первый случай, а не второй (хе-хе).

В общем, забегайте по возможности, если сейчас ищете работу ;)

Artificial stupidity

06 Nov, 12:02


#conference

Завтра буду на Матемаркетинге оффлайн. Если кто-то хочет пообщаться - ловите во время конференции (ну или пишите в личку). 

В этом году еще будет и стенд от X5. Я там тоже буду периодически появляться. И даже не просто ради тусовки (но это уже сюрприз, больше узнаете, если придете на наш стенд).

Artificial stupidity

21 Oct, 12:02


#conference

Этой осенью выступлю на Матемаркетинге в онлайн секции (в среду, 29.10 в 11-05). Полное расписание здесь.

Буду рассказывать про разметку данных с LLM (за прошедшее время у нас стало больше опыта с этой задачке).

Ну и, конечно, помимо меня будет онлайн и целых два оффлайн дня с докладами. Например, от X5 тоже будет несколько докладов: про А/Б платформу, про найм аналитиков (очень актуально, мы сейчас тоже нанимаем очень много), про дизайн-документы для А/Б тестов.

В общем, приходите посмотреть на меня и коллег!

Artificial stupidity

05 Oct, 12:02


#video

Я тут не увидел, а оказалось, что вышел мой видос про галлюцинации в LLM. Кому лень читать посты (которые я все еще не очень-то и закончил), то можно посмотреть видео ;)

Artificial stupidity

24 Sep, 09:10


#ml

Ребята из команды написали статью про то, как они прогнали 20 разных моделей и дополнили лидерборд бенчмарка ruMTEB (Massive Text Embedding Benchmark).

В статье можно почитать выводы о том, какие модельки будут лучше для каких случаев и посмотреть инструкцию, как закинуть свою (или ту, которую хотите сравнить с другими) модель на лидерборд.

Artificial stupidity

19 Sep, 09:10


#statistics

Я был в отпуске, потом сильно простудился. Вроде оклемался (я так думал), но простуда нанесла подлый повторный удар. Поэтому пока без постов, увы ;(

А пока я тут собираюсь из жидкого металла обратно в машину по написанию постов, держите статью про множественное тестирование гипотез от настоящих машин, которые не знают ни сна, ни отдыха (ну, я так их представляю).

Artificial stupidity

17 Aug, 12:01


#random

У меня начинается отпуск. Поэтому в большом цикле про галлюцинации в LLM пока перерыв.

Вернусь где-то в начале сентября с продолжением.

Ну а пока можете послушать милоту, которую я написал для своей дочери. Текст мой, музыка сгенерирована Suno

P.S. Сегодня каналу 4 года. С чем себя (и вас, конечно же) и поздравляю! Впереди еще много интересного, не теряйте ;)

Artificial stupidity

10 Aug, 12:01


#LLM

Галлюцинации в LLM. Часть 3.

В этот раз текст опять будет в tegraph'е (картинки удобнее оформлять, да и текст был не особо коротким).

Сегодня речь будет идти о бенчмарках оценки уровня галлюцинаций и метриках для оценки галлюцинаций.

Ух... Вроде прошлись по базовым вещам. В следующей части мы начнем рассмотрение методов исправления галлюцинаций. Наконец-то ;)

https://telegra.ph/Benchmarki-i-metriki-dlya-ocenki-gallyucinacij-v-LLM-08-09

Artificial stupidity

09 Aug, 08:07


#LLM

На Хабре вышла новая статья от моих коллег. Статья про применение LLM в наших чат-ботах и про то, как мы используем RAG при работе с чат-ботами.

Ну и, как обычно, читайте, кайфуйте, ставьте плюсики ;)

https://habr.com/ru/companies/X5Tech/articles/834832/

Artificial stupidity

03 Aug, 12:01


#LLM

Галлюцинации в LLM. Часть 2

Уфф. Оказалось, что текст не влезает в обычный объем поста. Поэтому наслаждаемся статьей на telegraph'е. Надеюсь, изложил понятно.

https://telegra.ph/Istochniki-gallyucinacij-v-LLM-07-26

В следующей части мы рассмотрим бенчмарки для галлюцинаций и примеры метрик.

Artificial stupidity

01 Aug, 09:10


#video

Вышло видео моей беседы с коллегами в рамках дня открытых дверей совместной магистратуры X5 и ВШЭ.

Поговорили о ML и AI в ритейле, о том, зачем вообще менеджеру понимать про IT и про работу с данными и о том, чему учат на курсе анализа данных для менеджеров и в магистратуре "Менеджмент в ритейле" в целом.

Ссылка на видео. Успейте посмотреть, пока еще жив YouTube

Artificial stupidity

27 Jul, 12:02


#LLM

Сегодня мы начнем говорить про галлюцинации в LLM. Т.к. тема весьма обширная, то будет целая серия постов.

Галлюцинации в LLM. Часть 1

Давайте начинать разбираться в этой обширной, но интересной теме.

Что же, собственно, это за галлюцинации? И почему они могут помешать нашей работе с LLM?

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

Но если мы смотрим на это понятие с точки зрения обработки естественных языков (NLP, Natural Language Processing), то “галлюцинации” – это аномалии генерации, при которых сгенерированный результат кажется бессмысленным или не соответствуют входным данным. Получается, что в этом случае, речь скорее о получаемых результатах. И это уже отличные от привычного понимания “галлюцинации”.  

Если упрощать, то при галлюцинациях LLM начинает "выдумывать" что-то, чего нет в реальном мире, либо выдавать результаты, не соответствующие запросу.

А какие типы галлюцинаций бывают?

В весьма годном обзоре по галлюцинациям "A Survey on Hallucination in Large Language Models: Principles, Taxonomy, Challenges, and Open Questions", предлагают следующую типизацию галлюцинаций:

Фактические галлюцинации.

Здесь все просто. К данному типу относятся случаи, при которых модель генерирует ответы, противоречащие общеизвестными фактам или фабрикует какие-либо факты.

Например, модель на запрос “Кому принадлежит первый орден Октябрьской революции?” ответит “Ленин”. А в реальности этот орден принадлежит городу Ленинград. 

Или придумать этимологию слова “шпулевина”, которого попросту нет в русском языке.

Галлюцинации следования запросу (или галлюцинации верности).

К этому типу относятся случаи, когда игнорирует часть (или вовсе всю) входную инструкцию, игнорирует контекст запроса или имеет логические несоответствия и противоречия в ответе.

Частый пример: при длинном запросе модель может “потерять” часть входной информации из запроса и по этой причине выдать частично некорректный ответ.

Еще один пример. Если мы спросим у модели логическую задачу “У вас есть 50 мотоциклов, у каждого из которых запах хода на 100 км. Сколько вы можете проехать на этих мотоциклах?”, модель просто умножит 100 * 50 и будет считать это верным ответом. В реальности, конечно же, этот ответ неверен.

И почему же это проблема?

В принципе, по примерам уже можно догадаться, что нежелательное поведение с "выдумыванием" вряд ли понравится пользователям.

Представьте, что вместо реальных ссылок на нужное видео, LLM постоянно (или хотя бы достаточно часто) будет выдавать ссылку вот сюда. Польза от такой системы, мягко говоря, получится не очень высокой.

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

Пользователи станут с недоверием относиться к нашей системе. А нам это надо? Поэтому с галлюцинациями лучше нещадно бороться (впрочем, если вам важна креативность, то нужно бороться не со всеми типами галлюцинаций).

А в следующем посте поговорим про причины галлюцинаций. Stay tuned!

Artificial stupidity

21 Jul, 11:42


🚀 Если Вам интересно машинное обучение и/или математика - приглашаем Вас принять участие в проекте по применению методов МЛ/RL к теории групп/графов Кэли - напишите @alexander_v_c - если хотите принять участие, а также заходите на вводный вебинар (знаний теории групп не требуется):

👨‍🔬 Александр Червов (к.ф.-м.н) "Методы МЛ в теории групп - введение и обзор достигнутого"
⌚️ Понедельник 22 июля, 18.00 (по Москве)

Методы машинного обучения могут быть применены к ряду классических задач теории групп - разложение элемента по образующим, оценки диаметра. Мы приглашаем принять всех участие в данном проекте. Предварительное требование - знание Питона и наличие нескольких свободных часов в неделю. Если вы хотите улучшить свои знания по МЛ/RL и внести вклад в развитие науки - это отличный шанс .

В данном докладе мы простым языком объясним формулировки основных задач, и как задачи теории групп переводятся на язык машинного обучения. Предварительных знаний не требуется. Также, мы дадим обзор уже достигнутых результатов - в частности для группы порядка 4*10^19 (Rubik cube) нам уже удается находить решение задачи за минуты , а не 40 часов ГПУ как было в предыдущей работе "DeepCube".

План доклада:

1 Переформулировка основной задачи на простом языке матриц

2 Матрицы перестановок и группы типа кубика Рубика (см. ноутбук "Visualize allowed moves": https://www.kaggle.com/code/marksix/visualize-allowed-moves )

3 Графы Кэли и переформулировка основной задачи как поиск пути на графе

4 Случайные блуждания по графам - создание трейн сета для МЛ-модели

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

6 Beam search. (Один из вариантов борьбы с застреваниями в локальных минимумах)

7 Бейзлайн реализация: МЛ+ Beam search - ноутбук: https://www.kaggle.com/code/alexandervc/baseline-1-for-permutations - решение кубика Рубика за пару минут

8 Cледующие шаги: RL-часть, улучшение нейросеток, улучшение трейн сета, улучшение beam search

Добавляйтесь в группу проекта: https://t.me/sberlogasci/10989 и пишите @alexander_v_c - если Вам интересно !

PS

См. также предыдущий вводный доклад:
https://t.me/sberlogasci/10989/15283 "Введение в методы поиска короткого пути на больших графах" (Кирилл Хоружий )

Zoom link will be in @sberlogabig just before start. Video records: https://www.youtube.com/c/SciBerloga - subscribe !

Artificial stupidity

20 Jul, 10:05


Сегодня буду на TurboML от Т-банка. Если у кого есть желание пообщаться - пишите в личку, пересечемся там

Artificial stupidity

10 Jul, 09:10


#LLM

Парад клевых материалов продолжается!

Теперь вышла уже моя статья (я бы даже сказал, что методичка) по промт-инжинирингу простыми словами.

Как обычно, читайте, ставьте плюсики, делитесь материалом с теми, кто еще не знает премудростей prompt engineering'а.

Artificial stupidity

09 Jul, 08:00


#statistics

Мои коллеги из X5 не перестают радовать новым полезным контентом. В этот раз статья про использование Reinforcement Learning в задаче групповой оптимизации цен.

Читаем, просвещаемся, наслаждаемся! И не забываем ставить плюсики, конечно же ;)

Artificial stupidity

06 Jul, 12:01


#video

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

Собственно, поэтому я сходил на курс стендапа.

Из интересного:
1. Очевидно, то, что вы видите на концертах или на записях с ютуба - это уже "вылизанная" финальная версия, до которой проходит очень много итераций проверки материала;
2. Продолжая прошлый пункт. Шутки писать не так уж просто. Это реально писательский труд. Так потом их еще нужно тестировать. Ведь то, что у тебя в голове кажется ужасно смешным, в реальности вызовет напряженную тишину и пару покашливаний;
3. В принципе, со стендапом примерно как с другими публичными выступлениями. Сперва очень тревожно, потом становится проще (но немного тревожности все равно остается). Ну и, чем больше вам знакома аудитория - тем проще перед ней выступать;
4. Мне больше нравится писать шутки, чем их рассказывать. В целом, рассказывать я их тоже могу, просто писать интереснее;
5. Самое первое выступление со своим материалом я решил сделать на стендап фестивале VK. То есть, пошел по хардкору. Поясню. На фесте более 1000 опытных комиков (вроде бы было что-то около 1300-1500 человек), которые выступают один за одним. И выбирают из них где-то 40-50 человек. И тут я такой "здрасьте". Было дико страшно, но зато я прочувствовал на себе более хардкорную сложность выступления.

Если будет интересно, прикрепляю запись со второго выступления (там все было сильно менее тревожно, т.к. это выпускной с курсов и там были "все свои"). Но у меня в тот же день было выступление I'ML, потому я все равно порядок шуток плохо запомнил ;)

Artificial stupidity

29 Jun, 12:01


​​#llm

Используем LLM для разметки (часть 2).

Продолжаем наш разговор о применении LLM для разметки данных.

Хоть я в прошлый раз и написал, что от LLM только одни плюсы. Но у пытливого читателя все равно будут вопросы, отчего тогда не перевелись все разметчики данных и великий скайнет не заменил эти кожаные мешки своими стальными братьями? И это весьма разумные вопросы.

Начнем с того, что наши железные друзья все же понемногу наступают на пятки разметчикам данных. Но все еще не всегда обгоняют таковых. Впрочем, результаты весьма обнадеживающие, к посту прикладываю пример из статьи "LLMs can label data as well as humans, but 100x faster". Но пост все-таки в блоге компании, потому к результатам лучше относиться с некоторым подозрением.

И все же, частично мы можем передать разметку LLM. Но как мы это можем провернуть? Вот несколько вариантов:
1. Банальный. Давайте просто напишем промпт, вида "представь, что ты разметчик данных, реши следующую задачу [описание задачи]". Очевидно, такой подход будет страдать от всех bias'ов о возможных ошибок и галлюцинаций модели;
2. Корректирующий. Мы можем улучшить банальный подход, оставив в процессе разметки человека. Но теперь мы даем человеку вместо разметки, задачу проверки расставленных LLM меток. Вероятно, перепроверить за моделью будет проще. А, значит, нужно будет меньше ресурса разметчиков. При этом, такой подход будет качественнее банального, но менее ресурсоемким, чем классическая разметка людьми;
3. Развивающий. Помимо перепроверки человеком, мы можем добавить версионирование промптов и их постепенное улучшение. Для этого нам желательно иметь "золотой набор", об который мы могли бы оценивать качество разметки (считая, что люди дают наивысшее (или близкое к нему) качество).

При этом, даже в банальном варианте, мы можем применять различные техники промптинга (CoT, Few-shot и т.п.), чтобы улучшить результат разметки. Еще стоит помнить о валидации формата. В некоторых популярных библиотеках это уже встроенный функционал, но если мы делаем все сами, то лучше четко прописывать выходной формат данных и потом валидировать соответствие результата нашему формату.

Примеры построения промптов можно посмотреть здесь и здесь.

Что интересно. На самом деле, многие решения для разметки данных уже стараются имплементировать фичи для разметки с использованием LLM. Например, в Label Studio есть такой функционал (можно почитать про него здесь).

И, конечно, стоит упомянуть о минусах использования LLM в разметке данных:
1. Возможные смещения. Результаты могут сильно зависеть от того, на чем обучалась LLM (особенно, для русского языка);
2. Постоянная поддержка. Нужен постоянный процесс мониторинга качества результатов и внимание специалистов к самому процессу разметки;
3. Ограниченность текстовыми данными. Если мы используем LLM, то у нас есть ограничения типа используемых данных. Впрочем, достаточно быстро развиваются и мультимодальные модели, что может в будущем решить проблему. 

И каковы же итоги?

Я бы предложил протестировать использование LLM в разметке в тех случаях, если у вас уже есть высокая потребность в разметке и достаточно большие затраты не нее. Скорее всего, в этом случае вы получите приемлемое качество (особенно, если не использовать самый банальный подход) за меньшую цену.

Artificial stupidity

22 Jun, 12:02


​​#llm

Используем LLM для разметки (часть 1).

А так вообще можно? Оказывается, что можно. Но только с осторожностью.

Итак, давайте разбираться. Думаю, что в один пост все не влезет, потому по этой теме будет несколько постов.

Сначала вспомним, что такое разметка данных. Разметка данных (Data labeling) (иногда называемая аннотированием данных (data annotation)) — это процесс добавления меток или тэгов в сырые данные, чтобы показать модели машинного обучения целевые атрибуты (ответы), которые она должна предсказывать.

Соответственно, разметкой данных обычно занимаются отдельные компании по договору или люди на краудсорсинговых площадках (Толока, Mechanical Turk). В случае, если данных немного, в команде отряжают кого-то из коллег размечать данные (ну или используют кого-то из представителей заказчиков, например, на одной из прошлых моих работ, мы использовали модераторов для разметки данных по антифроду).

Ну и, конечно же, этот процесс не так прост, каким кажется. Вот несколько сложностей, которые могут возникнуть в этом процессе:
1. Большие объемы данных. Если у нас много задач, которым требуется разметка, то нам придется потратиться на разметку. Увы, но производительность там растет примерно линейно - больше разметчиков дают больший объем разметки;
2. Специализация удорожает разметку. Не для всякой задачи подойдет случайно выбранный человек с краудсорсинговой платформы. Например, в случае работы с медицинскими данными, обычный человек попросту не сможет правильно проинтерпретировать снимок или результаты анализов;
3. Данные не статичны. Мир постоянно меняется. Поэтому далеко не факт, что единожды собранный набор данных будет давать то же качество работы модели в будущем. Потому процесс разметки обычно не останавливается (нам желательно иметь приток новых меток со временем);
4. Согласованность данных. Если разметкой какого-то набора или экземпляра данных занимается только один человек, то в данные могут попасть его ошибки или заблуждения. Поэтому, часто используется перекрестная разметка (когда несколько человек проставляют метку, а результат получается консенсусным решением).

Соответственно, разметка может стать весьма затратным мероприятием. И вполне себе может стоить тысячи и десятки тысяч долларов (тут, конечно, все зависит от задачи и объема). Да и скорость разметки все еще ограничена скоростью человека (или группы людей), который ее проводит.

И тут на сцену выходит LLM. Какие же плюсы могут быть от использования такого рода моделей в разметке данных:
1. Ниже стоимость разметки. Некоторые авторы приводят разницу в разы, другие - на порядок. Но даже разница в 5-7 раз - это весьма существенная экономия;
2. Выше скорость разметки. Здесь мы не ограничены скоростью человека, потому вполне можем ускорить разметку на порядок (см. изображение к посту);
3. Адаптивность. Изменением промпта мы можем менять задачу для разметки. При этом, LLM показали свою эффективность в достаточно большом наборе задач (от машинного перевода до выделения именованных сущностей). Соответственно, переход от задачи к задаче должен быть достаточно прост.

На этом интригующем моменте давайте остановимся. И продолжим уже тем, как мы можем применить LLM к процессу разметки, какие есть инструменты и особенности работы с LLM-разметчиком.

Artificial stupidity

19 Jun, 09:24


Меня закэнселили забанили на стендап шоу.

Две недели занимаюсь стендапом, а уже драма!

Вчера выступил в четвертый раз. Прошло неплохо. После шоу я уже вызвал такси, подхожу попрощаться с ведущим и парой комиков. Одна из комиков посмотрела на меня и говорит ведущему: "Ой, а ему не заплатили." Я такой: "You guys getting paid?"

Ведущий говорит: "Everyone gets paid, but YOU are not." Интонация была какая-то странная, будто высокомерная, и я заглотил наживку, спросил почему. Он объяснил, что они не платят новым комикам, тем кто выступает меньше трех месяцев, потому что потом они пропадают и больше не приходят, "don't wanna be part of this scene." Я не понял логической связи. Обозначил, что мне все равно на эти деньги, но сказал, что это какая-то странная схема: комики ведь делают твое шоу, посетители приносят деньги, и причём тут вообще пропадают эти комики позже или нет? Он выдал мне тираду о том, что он в комедии шесть лет, и почему они должны платить опытным комикам так же, как мне? Стало уже совсем неловко, я сказал, что "I can see the reasoning, not cool, but I am going", а он не пожал мне руку и говорит "Get out, you are not getting on this show." Я развернулся и пошел в свое такси, благо моя самооценка не держится на том, что я N лет в комедии (пока что).

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

Возможно тут есть нечто культурное: в русском эгалитарном обществе высказывать свое мнение это священное право, а при обсуждении того, что справедливо, а что нет, вообще нельзя пройти мимо.

Очень хотелось объяснить человеку на языке тела, что общаться с людьми через "Get out" неуважительно. Но подостыл и написал ему в вотсап, что не хотел обидеть (что правда) и "no hard feelings." Больше всего беспокоило, что он пойдет рассказывать плохие вещи в тесной тусовочке, и мне отрубят доступ к другим площадкам, после чего карьера великого рейнджера комика закончится не начавшись. Поэтому хотелось по крайней мере не дать конфликту разгораться. Он выдал мне в ответ тираду, что мол, сначала поживи в комедии с моё, а потом делись своим мнением. Чтож, окей.

Вот он какой, суровый шоу-бизнес, в котором все работает совсем не так, как я привык.

Вынес из этого важный урок коммуникации: не лезь куда не надо и считывай комнату.

Artificial stupidity

19 Jun, 09:24


Ух, какая офигенная история

Artificial stupidity

15 Jun, 12:02


#education

Что я вынес для себя после преподавания на курсе по анализу данных во ВШЭ на совместной магистерской программе с X5?

1. Я сильно лучше начал понимать своих преподов (особенно из индустрии). У тебя и так не очень много времени, а тут еще нужно делать лекции, семинары, смотреть домашки, консультировать (если есть проекты или сложные домашки). И на это уже начинает не хватать времени;
2. Подготовка хороших материалов занимаем очень много времени (если делать хорошо). И не только создание материалов, а потом еще их адаптация по итогам обратной связи от коллег и студантов;
3. У нецелевых курсов меньше внимания студентов. И это, в целом, логично (программа все же про менеджмент). Я тоже в свое время не особо обращал внимания на философию или культурологию, когда учился на математика. Но теперь понимаю преподавателей этих дисциплин ;)
4. Есть вещи, которые определенно пойдут не так. Что-то, что ты рассчитывал, как достаточно быстрое задание, может занять сильно больше времени. Какие-то темы, которые ты считал более интересными, не будут вызывать особого ажиотажа. А те, что ты считал проходными, наоброт, будут более интересны;
5. Я весьма неплохой лектор. По крайней мере, особых жалоб не было, народ слушал. Да и мне самому нравится болтать на эту тему (иначе я бы столько докладов на разных конференциях не делал бы).

А что по итогу?

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

В следующем году, вероятно, я тоже прочитаю сколько-то лекций на курсе. Но вряд ли столько же, как в прошлом году.

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

Artificial stupidity

14 Jun, 08:20


Это лучший роадмап по Deep Learning, который вы когда-либо видели. Лучше сохранить