Интересное что-то
522 subscribers
2.72K photos
253 videos
140 files
4.53K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from Knowledge Accumulator
Конкретный автоэнкодер [2019] и его улучшение [2024]

Итак, обычно в автоэнкодерах мы решаем задачу сжатия изначального вектора фичей в пространство маленькой размерности. Мы обучаем энкодер q(z|x) и декодер p(x|z) таким образом, чтобы у нас получалось восстановить изначальный вектор x из вектора скрытых переменных z.

Конкретный автоэнкодер ставит задачу более интересным образом - вместо перевода вектора фичей в скрытое пространство мы хотим выбрать список фичей в x, который и будет этим самым вектором скрытых переменных.

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

Слово "конкретный" в названии - "concrete" - на самом деле сокращение от Continuous Discrete - это параллельное изобретение того самого Gumbel Softmax трюка, который я описывал в позапрошлом посте.

Единственным параметром энкодера является матрица KxN - размерность скрытого вектора на кол-во фичей. В каждой строке у нас находится обучаемый вектор "логитов" для каждой фичи, к которому мы применяем Gumbel Softmax и получаем soft one-hot вектор-маску для всех фичей, которую затем скалярно умножаем на исходный вектор фичей - получая таким образом дифференцируемую аппроксимацию выбора одной фичи из всего списка.

Делая это независимо K раз, мы выбираем K фичей, которые и становятся выходом энкодера. В базовой статье про конкретный автоэнкодер иллюстрация на MNIST демонстрируют способность такой схемы обучиться игнорировать пиксели по краям и при этом задействовать по 1 пикселю из всех остальных частей картинки, никогда не беря соседние. Эксперименты на других датасетах там тоже есть.

Indirectly Parameterized CAE - улучшение данного подхода. Я с CAE не развлекался, но утверждается, что у базовой модели есть проблемы со стабильностью обучения, а также она почему-то всё же дублирует фичи по несколько раз, что, вроде как, тоже связано с этой нестабильностью.

Один простой трюк очень сильно улучшает ситуацию. Вместо обучаемой матрицы KxN используется Indirect Parameterization - эта матрица вычисляется как функция от 3 обучаемых штук: умножения матрицы KxN на матрицу NxN и прибавления вектора размера N к каждой строке результата.

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

Главный вопрос - а нахрена вообще всё это нужно?

Внезапно эта идея имеет отличное практическое применение в нейросетях, а именно для проведения Feature Selection! В ситуации, когда обучать сеть супердорого и вы можете позволить это делать единичное число раз, а фичей у вас тысячи, использование Конкретного Энкодера в самом начале модели позволяет обучить Selection K фичей из N напрямую. При этом, если качество модели совпадает с качеством изначальной модели, можно смело выкидывать из прода целых N-K фичей.

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

@knowledge_accumulator
Forwarded from Data Blog
Привет, друзья! Сегодня кратко-пост
про небольшое удивительное чтение с множеством ссылок.

Рассмотрим обученную модель машинного или глубокого обучения. Как её отучить от чего-либо?

Что делать, если модель

1. гендерно или социально предвзята? [1, 2, 3]
2. отдаёт вредоносные ответы;
3. содержит данные, защищенные авторским правом или личные данные;
4. галлюцинирует

Можно ли заставить её забыть изученное? Можно и сложно.

Model (от истоков machine) unlearning (MU) — актуальная задача для больших моделей, восставшая от проблем машинного обучения. Восставшая — потому что, если рассматривать агрегаторы статей, проблема отучения редко упоминалась, чаще всего рядом с SVM, в 2000-2015 и сделала скачок с 2018 года рядом с глубокими моделями.

Что интересно, термин «механистическая интерпретируемость» тоже сперва был рядом с ML моделью SVM. Нестареющая классика!

Подходы в MU глобально разделены на 3 группы:

1. Model-Agnostic Methods (независимые от модели)
2. Model-Intrinsic Methods (встроенные в процесс обучения модели)
3. Data-Driven Methods (основанные на изменении данных)

Key Idea из методов: заставить модель забыть что-то — это больше чем про полное переобучение (потому что это чаще будет дорого). Если посмотреть на подходы «очень сверху», то мы можем:

1. Применять обучение с подкреплением (проводить хитрый файн-тюнинг);
2. Выполнять градиентный подъем по примерам под забывание (проводить хитрый файн-тюнинг);
3. Модифицировать пространство обучения (менять данные, чтобы проводить хитрый файн-тюнинг или обучение)
4. Использовать различные методы файн-тюнинга (LoRA, KL-divergence based etc) (снова проводить хитрый файн-тюнинг)
5. Накладывать условие на изменение параметров модели для конкретных примеров (проводить хитрое обучение/дообучение (снова файн-тюнинг));
6. Находить параметры, отвечающие за конкретное поведение и занулять их (не однозначный, но валидный к жизни метод, так как также важно показать, что зануление не вызвало других нежелательных поведенческих изменений)

Быть может, я не докопала до идей глубже (и если вы знаете что-то — welcome в комментарии!), но отучение преимущественно построено на генерации гипотез о том, как дообучить модель или же как устранить нежелательное поведение точечно (если говорить о "выключении" активаций).

Ещё интересно, что хотя статьи 1-3 также сосредоточены на устранении точечных признаков/паттернов поведения, термин "unlearning" в них явно не упоминается. Это может усложнять, как мне кажется, будущие обзоры и поиск литературы — необходимо генерировать и анализировать смежные ключи. Будьте всегда внимательны)

Пара полезных ссылок про Unlearning:

1. Глубокая детализация подходов для MU здесь.
2. Репозиторий, собирающий статьи по MU

Такой мини-обзор, друзья! Само наличие класса исследований про unlearning просто вдохновляет — чем больше модели, тем будто бы больше задач нам нужно решать.

Бесконечная область, выходит :)

Отличного вам вечера,
Ваш Дата автор!
Несогласие и кризис

В сегодняшнем посте объединены два тимлидских материала, к которому я приложил руку и голову.

1. Три тимлида заходят в бар и не соглашаются. В этом выпуске мы рассмотрели что делать, когда в команде кто-то с чем-то не согласен (например, постоянно не согласен с тобой). Когда это нормально, когда не очень, а когда это откровенный саботаж. Не обошлось без выходов раз на раз, рептилоидов и серийных хейтеров на работе!
https://t.me/teamleadsBar/75

2. Кризис — это проблема или возможность? Дебаты, на, казалось бы, однозначную, но на самом деле нет, тему. Там мы с Настей Абрашитовой постарались раскрыть все плюсы и минусы кризисных и спокойных времен для руководителя. А в конце еще и поучительное напутствие подвели, обязательно досматривайте до конца, рефлексируйте, прикидывайте на себя.
https://www.youtube.com/watch?v=tY2C5zRe-EM
Как улучшили ML-продукт, взглянув на данные по-новому

Почитал интересный пост про то как команда разрабатывала ML-систему для снижения числа негативных отзывов в сервисе заказов поездок.

Первая версия снизила жалобы всего на 1% вместо необходимых 4,5%. После доработки — 3%, но этого всё ещё было недостаточно.

В итоге помог новый взгляд на данные. Выяснилось что 20% водителей создают 80% поездок и жалоб.

Фокус на этих водителях позволил снизить затраты и достичь цели.

Вывод: Иногда дело не в модели, а в том, на какие данные мы смотрим.

Заметка
Финальные результаты Enterprise RAG Challenge

- Team Leaderboard - оценивает команды (берется лучшее решение каждой команды)
- SotA Leaderboard - оценивает все эксперименты, которые прислали команды вместе с заполненным опросником.

Колонки:
- Hours - сколько часов прошло между публикацией вопросов и генерацией ответов командой
- R - Retrieval Score. Max: 100
- G - Generation Score. Max: 100
- Score - Final score (R/3+G). Max: 133
- AI - команды использовали наш AI Research (мой курс, работа в TimeToAct или комьюнити 🤗)
- Lcl - использовались модели, которые можно запустить локально

Картинки в оригинале лежат тут: https://abdullin.com/erc/. Позже я туда добавлю ссылки на все отчеты и посты участников, сделаю расширенные таблицы на основе опросников (с фильтрациями)

Спасибо всем за участие - было очень круто! У нас вместе уже получилось продвинуть вперед SotA по построению RAG систем с LLM под капотом. Первые инсайты я опубликовал раньше, но основной анализ еще впереди.

Ваш, @llm_under_hood 🤗
800+ SQL Server Interview Questions and Answers .pdf
1 MB
🖥 Полезнейший сборник из 800+ вопросов по SQL, которые часто задают на собеседованиях.

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

Сборник отлично подходит для тех, кто хочет прокачать свои навыки работы с SQL, освежить знания и проверить свои знания.

GitHub

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 GPU Puzzles

Набор интерактивных упражнений («паззлов») для обучения программированию под GPU с использованием CUDA.

Это целая серия задач, где требуется написать небольшие CUDA-ядра (ядра GPU), реализующие операции вроде сложения с константой (map), поэлементного суммирования (zip), работы с блоками и потоками, свёртки, матричного умножения и других параллельных алгоритмов.

Основная цель репозитория – дать начинающим возможность непосредственно попрактиковаться в программировании под GPU, без необходимости погружаться в сложную документацию.

Для удобства рекомендуется запускать задания в Google Colab с включённым режимом GPU.

Репозиторий лицензирован по MIT, имеет высокую популярность (более 10 тыс звёзд) и является частью серии обучающих проектов (наряду с Tensor Puzzles, Autodiff Puzzles, Triton Puzzles и другими).

А здесь реализация задач на C++

Github
Colab

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Второй признак рабочего аргумента

Это продолжение заметки про три признака рабочего аргумента. Что такое аргумент и первый признак «Подходит под тему дискуссии» разобрали в прошлой заметке.



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

Почему такое может случиться? Об этом мы и поговорим сегодня и в среду.


Признак рабочего аргумента №2: аргумент сформулирован на языке выгод для второй стороны


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

Обычно наиболее эффективны аргументы, которые касаются финансовых, экономических и других выгод для оппонента.


Например


Тезис:

Мы оценим эту задачу так же, как остальные новые задачи, и после 2 апреля вернусь к тебе с более точным ответом.



Пример аргумента, который сформулирован на языке выгод для собеседника, ценящего цифры:

«Чтобы стабильно добиваться поставленных KPI, мы строго придерживаемся процесса оценки всех новых задач. Это также позволяет нам расставлять приоритеты осознанно, учитывать загрузку, риски и взаимосвязи между задачами. В итоге мы релизим фичи быстрее и качественнее. До прошлого года этого процесса не было, мы укладывались в сроки всего в 20% задач, а теперь, с этим процессом, в 60%».



Аргумент не на языке выгод для собеседника, ценящего цифры:

Если мы возьмём эту задачу в обход процесса, это может демотивировать команду. Ребята видят, что мы работаем по чётким правилам, и рассчитывают на справедливое распределение задач. Если одна задача проходит вне очереди, то другие начнут задаваться вопросом: почему именно эта, а не их приоритеты? Это может подорвать доверие к процессу и снизить мотивацию. Поэтому важно, чтобы мы оценивали задачи одинаково для всех — это поддерживает командный дух и продуктивность.



Если аргумент сформулирован не на языке выгод дня собеседника, то чаще всего в ответ звучит что-то такое:

— если собеседник с развитыми коммуникационными навыками: «да, я понимаю, это тоже важно, но %его ценность% в данном случае важнее.»

— если собеседник без прокаченных коммуникационных навыков: «И чо?»


___

В среду будет тёмная сторона этого метода. А пока поделитесь мнением что думаете о втором признаке аргумента? Это работает? Используете его в работе?