Forwarded from Технозаметки Малышева
Каталог каталогов по ML и ИИ.
1. Мини-проекты по машинному обучению с Python
Небольшие проекты для понимания основных концепций. Создание моделей машинного обучения с Scikit-learn для регрессии и классификации.
2. Анализ данных и библиотека проектов машинного обучения
Учебные материалы, код и наборы данных для проектов анализа данных и машинного обучения.
3. Идеи для проектов машинного обучения
Идеи проектов: машинное обучение, НЛП, компьютерное зрение, рекомендательные системы.
4. 500+ проектов машинного обучения и ИИ с кодом
500+ реальных проектов: машинное обучение, глубокое обучение, компьютерное зрение, НЛП.
5. Проекты генеративного ИИ
Современные проекты и сервисы генеративного ИИ. Инструменты для генерации текста, изображений, аудио, видео.
6. Инструменты и проекты LangChain
Инструменты и проекты с фреймворком LangChain для приложений на основе больших языковых моделей и ИИ-агентов.
7. Решения Kaggle
Решения и идеи соревнований Kaggle. Лучшие подходы к решению задач машинного обучения.
8. Топ проектов глубокого обучения на GitHub
Популярные проекты глубокого обучения, ранжированные по количеству звезд. Фреймворки, инструменты и ресурсы.
9. Справочник по машинному обучению
Ссылки, учебные материалы и ресурсы по машинному обучению и глубокому обучению.
10. Ресурсы глубокого обучения
Учебники, проекты, книги и сообщества по глубокому обучению. Нейронные сети, обучение с подкреплением, исследования ИИ.
Обычно такое не люблю, но тут реально собраны тысячи полезных ссылок.
Тут и обучение и фреймворки и инструменты.
Все что может пригодиться в мире ИИ.
Подборки курируемые с десятками, а иногда и сотнями контрибьюторов.
И всё бесплатно. Лет на 5 обучения хватит.
#обучение #каталоги
———
@tsingular
1. Мини-проекты по машинному обучению с Python
Небольшие проекты для понимания основных концепций. Создание моделей машинного обучения с Scikit-learn для регрессии и классификации.
2. Анализ данных и библиотека проектов машинного обучения
Учебные материалы, код и наборы данных для проектов анализа данных и машинного обучения.
3. Идеи для проектов машинного обучения
Идеи проектов: машинное обучение, НЛП, компьютерное зрение, рекомендательные системы.
4. 500+ проектов машинного обучения и ИИ с кодом
500+ реальных проектов: машинное обучение, глубокое обучение, компьютерное зрение, НЛП.
5. Проекты генеративного ИИ
Современные проекты и сервисы генеративного ИИ. Инструменты для генерации текста, изображений, аудио, видео.
6. Инструменты и проекты LangChain
Инструменты и проекты с фреймворком LangChain для приложений на основе больших языковых моделей и ИИ-агентов.
7. Решения Kaggle
Решения и идеи соревнований Kaggle. Лучшие подходы к решению задач машинного обучения.
8. Топ проектов глубокого обучения на GitHub
Популярные проекты глубокого обучения, ранжированные по количеству звезд. Фреймворки, инструменты и ресурсы.
9. Справочник по машинному обучению
Ссылки, учебные материалы и ресурсы по машинному обучению и глубокому обучению.
10. Ресурсы глубокого обучения
Учебники, проекты, книги и сообщества по глубокому обучению. Нейронные сети, обучение с подкреплением, исследования ИИ.
Обычно такое не люблю, но тут реально собраны тысячи полезных ссылок.
Тут и обучение и фреймворки и инструменты.
Все что может пригодиться в мире ИИ.
Подборки курируемые с десятками, а иногда и сотнями контрибьюторов.
И всё бесплатно. Лет на 5 обучения хватит.
#обучение #каталоги
———
@tsingular
Forwarded from .ml
Популярные SOTA-модели для суперразрешения
📍 Upscale-A-Video — модель для восстановления видео с низким разрешением, основанная на диффузии.
Что интересно:
📚 Модифицированные блоки UNet используют темпоральный механизм внимания — обучаются только временные слои, в то время как пространственные остаются фиксированными.
📚 Rotary Position Embedding использует вращательные матрицы для кодирования относительных позиций элементов в последовательности, что позволяет лучше учитывать временные зависимости.
📍 VideoGigaGan — SOTA-модель для видео суперразрешения, в которой ключевую роль играет функция потерь.
Что интересно:
📚 Модель предсказывает оптический поток для учёта больших движений между кадрами, что помогает лучше адаптироваться к изменениям.
📚 Применяет фильтры низких частот (anti-aliasing block) при пониженной размерности, что позволяет избежать эффекта мерцания и артефактов, которые часто встречаются в генерируемых видео.
Ключевая сложность в обучении диффузионных моделей — необходимость большого количества данных. Их можно генерировать с помощью сложного пайплайна, который имитирует работу реальных камер смартфонов.
Процесс включает:
📌 Размытие из-за микродвижений.
📌 Уменьшение разрешения изображения.
📌 Добавление шума, характерного для камер при нормальном освещении.
📌 JPEG-сжатие, которое широко используется в современных устройствах.
Для обучения модели применяют подход, схожий с дистилляцией: модель дообучают на небольшом датасете реальных данных (real VSR). При этом важно учитывать loss между последними слоями исходной модели и новой, чтобы градиенты изменялись минимально на декодерной части.
💜Этот пост написал Никита Алутис, ML-разработчик в Точке
📍 Upscale-A-Video — модель для восстановления видео с низким разрешением, основанная на диффузии.
Архитектура: включает 8 UNet-блоков для обработки признаков разного разрешения. Процесс начинается с пирамиды Лапласа, которая последовательно уменьшает изображение, выделяя ключевые характеристики на каждом уровне. После этого осуществляется диффузионный процесс, который завершается передачей данных через вариационный декодер.
Что интересно:
📚 Модифицированные блоки UNet используют темпоральный механизм внимания — обучаются только временные слои, в то время как пространственные остаются фиксированными.
📚 Rotary Position Embedding использует вращательные матрицы для кодирования относительных позиций элементов в последовательности, что позволяет лучше учитывать временные зависимости.
📍 VideoGigaGan — SOTA-модель для видео суперразрешения, в которой ключевую роль играет функция потерь.
Архитектура: традиционный трансформер с UNet-подобным декодером. Важным аспектом является использование temporal attention, который позволяет передавать карты внимания между соседними кадрами. Это уменьшает размер модели и повышает её эффективность.
Что интересно:
📚 Модель предсказывает оптический поток для учёта больших движений между кадрами, что помогает лучше адаптироваться к изменениям.
📚 Применяет фильтры низких частот (anti-aliasing block) при пониженной размерности, что позволяет избежать эффекта мерцания и артефактов, которые часто встречаются в генерируемых видео.
Где взять данные для обучения моделей?
Ключевая сложность в обучении диффузионных моделей — необходимость большого количества данных. Их можно генерировать с помощью сложного пайплайна, который имитирует работу реальных камер смартфонов.
Процесс включает:
📌 Размытие из-за микродвижений.
📌 Уменьшение разрешения изображения.
📌 Добавление шума, характерного для камер при нормальном освещении.
📌 JPEG-сжатие, которое широко используется в современных устройствах.
Для обучения модели применяют подход, схожий с дистилляцией: модель дообучают на небольшом датасете реальных данных (real VSR). При этом важно учитывать loss между последними слоями исходной модели и новой, чтобы градиенты изменялись минимально на декодерной части.
💜
Forwarded from Sinекура
Главный девиз Google — "Don't be evil" — почему-то совсем не даётся OpenAI. За что ни возьмутся, какая-то мутная ерунда получается. И хотя на этот раз сами результаты, кажется, под сомнение не ставят, давайте вспомним сложные отношения OpenAI с математикой. Я написал большой пост, здесь приведу сокращённый кусочек про FrontierMATH и IMO 2025:
Deep Think и IMO 2025: сложные отношения OpenAI и математики
В январе 2025 года разразился целый "бенчмарк-гейт". Датасет FrontierMATH — сверхсложный математический бенчмарк от Epoch AI, содержащий задачи хоть и с заранее известными ответами, но близкие к исследовательской математике. Я много раз рассказывал о нём в докладах; последний был на CS Space митапе.
И вот OpenAI анонсирует, что o3 набрала на FrontierMATH 25% в то время, как другие модели набирают около 2%. Величайший прорыв в математических рассуждениях? Нууу... в общем да, но со звёздочкой. Оказалось, что OpenAI профинансировала создание FrontierMATH и имела доступ к задачам, а писавшие задачи математики не знали о связях с OpenAI! Потом выяснилось, что есть "holdout" набор задач, к которому у OpenAI нет доступа, но всё это звучало подозрительно. В том, насколько это мутная история, легко убедиться по первоисточникам: просто посмотрите на саму статью Glazer et al. (2024) о FrontierMATH; arXiv помнит всё, и рис. 2 показывает разные версии этой статьи.
Независимая проверка показала, что o3-mini набирает на тестовом множестве FrontierMATH всего 11%. Потом o4-mini показала себя гораздо лучше, и сейчас две верхние строчки с огромным отрывом занимает o4, да и дальше только Gemini 2.5 Pro может конкурировать (рис. 3). Но все до сих пор вспоминают объявление о 25%.
А сегодня мы собрались ради IMO 2025. Мы только что обсуждали, что экспериментальная модель OpenAI решила 5 из 6 задач и достигла уровня золотой медали. Результат действительно впечатляющий... но опять есть нюанс. По словам инсайдеров, организаторы IMO попросили все AI-компании не красть внимание у детей и подождать неделю после церемонии закрытия, прежде чем объявлять свои результаты (рис. 4, рис. 5). А OpenAI объявила результаты сразу после церемонии закрытия, но за неделю до срока, о котором просили; более того, OpenAI не сотрудничала с IMO для официального тестирования.
А вот Google DeepMind повела себя корректно. Их модель Deep Think тоже решила 5 из 6 задач IMO 2025. Как и у OpenAI, речь идёт не об Alpha Proof 2, а о том, что обычная LLM, экспериментальный вариант Gemini под названием Deep Think, решал задачи на естественном языке.
Но, во-первых, Google дождалась официальной сертификации результатов IMO, прежде чем делать объявление. Во-вторых — и это куда важнее для нас, пользователей — модель, которая участвовала в IMO, "на самом деле очень близка к основной модели Gemini, которую мы предлагаем людям". То есть почти готовый продукт, а OpenAI заявляла, что до релиза их модели ещё не меньше нескольких месяцев.
В-третьих, решения Deep Think опубликованы, и вот как они выглядят: сравните рис. 6 (OpenAI) и рис. 7 (Deep Think); у Deep Think куда человечнее. Наверняка можно попросить LLM переписать решения от OpenAI более понятно — но это отчасти подтверждает заявления о более близком релизе.
История отношений OpenAI с математическими бенчмарками — пример того, как не надо строить репутацию. Каждый раз компания технически ничего не нарушает, но ведёт себя мутно, и осадочек всё накапливается и накапливается... Хотя о чём это я, осадок от OpenAI уже давно высыпается из бокала.
В итоге получается странно: в обоих случаях OpenAI ведь и правда сделала большие прорывы в AI для математики. Текущие результаты o4-mini на FrontierMATH никто под сомнение не ставит, да и решения задач IMO, скорее всего, получены честно. Но я уверен, что репутация OpenAI от этих историй проиграла, а не выиграла. И зачем, спрашивается, так было делать?
Как говорится, я решил пятьдесят задач из FrontierMATH, но никто не называет меня "Сэм-Великий-Математик"; я решил пять из шести задач IMO 2025, но никто не называет меня "Сэм-Чемпион-Олимпиад"...
Deep Think и IMO 2025: сложные отношения OpenAI и математики
В январе 2025 года разразился целый "бенчмарк-гейт". Датасет FrontierMATH — сверхсложный математический бенчмарк от Epoch AI, содержащий задачи хоть и с заранее известными ответами, но близкие к исследовательской математике. Я много раз рассказывал о нём в докладах; последний был на CS Space митапе.
И вот OpenAI анонсирует, что o3 набрала на FrontierMATH 25% в то время, как другие модели набирают около 2%. Величайший прорыв в математических рассуждениях? Нууу... в общем да, но со звёздочкой. Оказалось, что OpenAI профинансировала создание FrontierMATH и имела доступ к задачам, а писавшие задачи математики не знали о связях с OpenAI! Потом выяснилось, что есть "holdout" набор задач, к которому у OpenAI нет доступа, но всё это звучало подозрительно. В том, насколько это мутная история, легко убедиться по первоисточникам: просто посмотрите на саму статью Glazer et al. (2024) о FrontierMATH; arXiv помнит всё, и рис. 2 показывает разные версии этой статьи.
Независимая проверка показала, что o3-mini набирает на тестовом множестве FrontierMATH всего 11%. Потом o4-mini показала себя гораздо лучше, и сейчас две верхние строчки с огромным отрывом занимает o4, да и дальше только Gemini 2.5 Pro может конкурировать (рис. 3). Но все до сих пор вспоминают объявление о 25%.
А сегодня мы собрались ради IMO 2025. Мы только что обсуждали, что экспериментальная модель OpenAI решила 5 из 6 задач и достигла уровня золотой медали. Результат действительно впечатляющий... но опять есть нюанс. По словам инсайдеров, организаторы IMO попросили все AI-компании не красть внимание у детей и подождать неделю после церемонии закрытия, прежде чем объявлять свои результаты (рис. 4, рис. 5). А OpenAI объявила результаты сразу после церемонии закрытия, но за неделю до срока, о котором просили; более того, OpenAI не сотрудничала с IMO для официального тестирования.
А вот Google DeepMind повела себя корректно. Их модель Deep Think тоже решила 5 из 6 задач IMO 2025. Как и у OpenAI, речь идёт не об Alpha Proof 2, а о том, что обычная LLM, экспериментальный вариант Gemini под названием Deep Think, решал задачи на естественном языке.
Но, во-первых, Google дождалась официальной сертификации результатов IMO, прежде чем делать объявление. Во-вторых — и это куда важнее для нас, пользователей — модель, которая участвовала в IMO, "на самом деле очень близка к основной модели Gemini, которую мы предлагаем людям". То есть почти готовый продукт, а OpenAI заявляла, что до релиза их модели ещё не меньше нескольких месяцев.
В-третьих, решения Deep Think опубликованы, и вот как они выглядят: сравните рис. 6 (OpenAI) и рис. 7 (Deep Think); у Deep Think куда человечнее. Наверняка можно попросить LLM переписать решения от OpenAI более понятно — но это отчасти подтверждает заявления о более близком релизе.
История отношений OpenAI с математическими бенчмарками — пример того, как не надо строить репутацию. Каждый раз компания технически ничего не нарушает, но ведёт себя мутно, и осадочек всё накапливается и накапливается... Хотя о чём это я, осадок от OpenAI уже давно высыпается из бокала.
В итоге получается странно: в обоих случаях OpenAI ведь и правда сделала большие прорывы в AI для математики. Текущие результаты o4-mini на FrontierMATH никто под сомнение не ставит, да и решения задач IMO, скорее всего, получены честно. Но я уверен, что репутация OpenAI от этих историй проиграла, а не выиграла. И зачем, спрашивается, так было делать?
Как говорится, я решил пятьдесят задач из FrontierMATH, но никто не называет меня "Сэм-Великий-Математик"; я решил пять из шести задач IMO 2025, но никто не называет меня "Сэм-Чемпион-Олимпиад"...
Forwarded from Pattern Guru. Шаблоны проектирования. Архитектура ПО
#паттерны
Введение
Сегодня мы рассмотрим паттерн проектирования "Адаптер".
Классификация
Тип: Структурный
Определение: Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.
Адаптер выступает прослойкой между объектами превращая вызовы одного в понятные для другого.
Очень удобно понять адаптер на примере из жизни. Представим человеку который говорит только на французском нужно рассказать историю человеку который понимает только немецкий. Сами понять они друг друга не смогут, поэтому им понадобится переводчик, который переведёт французкий на немецкий. В данном случае переводчик выступит адаптером.
Из чего состоит и как работает паттерн адаптер
1. Клиент. Описывает бизнес логику программы. Работает с адаптером и другими объектами.
2. Интерфейс с которым может работать клиентский код.
3. Класс, который имеет нужную клиенту логику, однако клиент не может с ним общаться, так как интерфейс данного класса ему не понятен.
4. Адаптер - класс который помогает клиенту использовать функционал незнакомого ему сервиса в правильном формате. Реализует клиентский интерфейс. Содержит ссылку на незнакомый сервис. Адаптер при получении вызовов от клиента через клиентский интерфейс и переводит их в вызовы незнакомого сервиса в правильном формате.
Уточнение: Приложение должно использовать объект адаптера только через клиентский интерфейс. Это позволит легко создавать и изменять адаптеры в будущем.
Плюсы данного паттерна
1. Скрывает все "низкоуровневые" преобразования интерфейсов от клиента. Реализует принцип абстракция.
Минусы данного паттерна
Таковых я не обнаружил
Пример и задача
В качестве примера возьмём класс с методом do который возвращает небольшой текст. Также есть класс с методом secret_do который возвращает другую строку, зашифрованную шифром Цезаря со сдвигом 5, которая ещё и полностью развёрнута.
В виде клиента выступает функция которая постит текст в ваш блог.(Можете просто создать функцию которая выводит переданный в неё текст). Естественно она должна принимать только расшифрованный текст.
Реализуйте адаптер для второго класса, который спасёт ваш блог от зашифрованных постов.
Пример из реального кода
https://github.com/aiogram/aiogram/blob/b190bbba1915ed3b7f311a780f34723ebd6b5acd/aiogram/contrib/fsm_storage/redis.py#L280
Вот его объяснение какую задачу решает адаптер в данном случае:
Здесь адаптер дает возможность контроллеру хранилища (RedisStorage) работать с первой версией редиса, т.е. адаптирует aioredis-v1, там еще есть адаптер для aioredis-v2, но он в отличие от первой версии адаптирует только создание клиента редиса
Дополнительные материалы
https://habr.com/ru/post/85095/
Введение
Сегодня мы рассмотрим паттерн проектирования "Адаптер".
Классификация
Тип: Структурный
Определение: Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.
Адаптер выступает прослойкой между объектами превращая вызовы одного в понятные для другого.
Очень удобно понять адаптер на примере из жизни. Представим человеку который говорит только на французском нужно рассказать историю человеку который понимает только немецкий. Сами понять они друг друга не смогут, поэтому им понадобится переводчик, который переведёт французкий на немецкий. В данном случае переводчик выступит адаптером.
Из чего состоит и как работает паттерн адаптер
1. Клиент. Описывает бизнес логику программы. Работает с адаптером и другими объектами.
adapter = Adapter()
result = adapter.do() + "5"
2. Интерфейс с которым может работать клиентский код.
class Test1:
def do(self) -> str:
return "3"
3. Класс, который имеет нужную клиенту логику, однако клиент не может с ним общаться, так как интерфейс данного класса ему не понятен.
class Test2:
def specific_do(self) -> float:
return 3.4
4. Адаптер - класс который помогает клиенту использовать функционал незнакомого ему сервиса в правильном формате. Реализует клиентский интерфейс. Содержит ссылку на незнакомый сервис. Адаптер при получении вызовов от клиента через клиентский интерфейс и переводит их в вызовы незнакомого сервиса в правильном формате.
class Adapter(Test1, Test2):
def do(self) -> str:
return f"Translated: {round(self.specific_do())}"
Уточнение: Приложение должно использовать объект адаптера только через клиентский интерфейс. Это позволит легко создавать и изменять адаптеры в будущем.
Плюсы данного паттерна
1. Скрывает все "низкоуровневые" преобразования интерфейсов от клиента. Реализует принцип абстракция.
Минусы данного паттерна
Таковых я не обнаружил
Пример и задача
В качестве примера возьмём класс с методом do который возвращает небольшой текст. Также есть класс с методом secret_do который возвращает другую строку, зашифрованную шифром Цезаря со сдвигом 5, которая ещё и полностью развёрнута.
В виде клиента выступает функция которая постит текст в ваш блог.(Можете просто создать функцию которая выводит переданный в неё текст). Естественно она должна принимать только расшифрованный текст.
Реализуйте адаптер для второго класса, который спасёт ваш блог от зашифрованных постов.
Пример из реального кода
https://github.com/aiogram/aiogram/blob/b190bbba1915ed3b7f311a780f34723ebd6b5acd/aiogram/contrib/fsm_storage/redis.py#L280
Вот его объяснение какую задачу решает адаптер в данном случае:
Здесь адаптер дает возможность контроллеру хранилища (RedisStorage) работать с первой версией редиса, т.е. адаптирует aioredis-v1, там еще есть адаптер для aioredis-v2, но он в отличие от первой версии адаптирует только создание клиента редиса
Дополнительные материалы
https://habr.com/ru/post/85095/
GitHub
aiogram/aiogram/contrib/fsm_storage/redis.py at b190bbba1915ed3b7f311a780f34723ebd6b5acd · aiogram/aiogram
aiogram is a modern and fully asynchronous framework for Telegram Bot API written in Python using asyncio - aiogram/aiogram
Forwarded from Душный NLP
Несём новую порцию статей с ICML 2025
Продолжаем рассказывать о том, что увидели на конференции.
Outlier Gradient Analysis: Efficiently Identifying Detrimental Training Samples for Deep Learning Models
Для нахождения плохих или, наоборот, хороших примеров в датасете часто используют influence function — это некоторый скор, который показывает, насколько сильно изменится лосс, если пример убрать из обучения. Проблема в том, что для вычисления функции надо обращать гессиан по параметрам модели, что вычислительно очень сложно.
В этой статье заметили, что на самом деле можно смотреть только на градиенты модели по примерам, которые мы проверяем. Если они сонаправлены с градиентами по данным из обучения — примеры хорошие, и наоборот. Далее, на основе этого можно применять методы детекции аномалий для нахождения примеров, которые портят обучение, и отфильтровывать их (но можно делать и наоборот — искать хорошие примеры и добавлять их в обучающую выборку). Основное преимущество метода — вычислительная простота; не нужны супердорогие обращения гессиана: только forward и backward pass модели для заданных примеров.
Towards Memorization Estimation: Fast, Formal and Free
Как померить меморизацию посэмплово, запоминала модель пример или нет? Для этого надо обучить модель один раз на данных с этим примером, а потом ещё несколько моделей на данных без него, и померить лосс на примере. Это очень дорого вычислительно. Но можно сделать проще — вычислять лосс на примере несколько раз в течение обучения и посчитать сумму. Если она выше некоторого порога, значит модель не смогла запомнить пример.
Где это можно применять? Для фильтрации данных. Если вдруг модель никак не может выучить какой-то пример, то, вероятно, в нём есть шум (например, неправильное решение математической задачи или неполное условие). Такие примеры можно выкидывать и улучшать точность модели или уменьшать компьют на обучение. Интересная и простая идея, надо проверять, действительно ли она будет работать для LLM (в статье проверяли только на задаче компьютерного зрения, в которой одни и те же данные проходят несколько эпох).
NICE Data Selection for Instruction Tuning in LLMs with Non-differentiable Evaluation Metric
В этой статье снова задаются вопросом, как выбирать такие примеры для обучения, чтобы на валидации получать хорошее качество. Отличие в том, что качество на валидации измеряется не лоссом, а произвольной необязательно дифференцируемой функцией (например, accuracy). В качестве её градиента используют policy gradient.
Jailbreaking LLMs and Agentic Systems: Attacks, Defenses, and Evaluations
На туториале рассказали о защите языковых моделей от нарушения политик элайнмента — например, чтобы модель не выдавала инструкции по созданию опасных веществ или не генерировала дискриминационный контент. Оказалось, что white-box-модели с доступом к весам (например, Llama) до сих пор уязвимы к так называемым token-based-атакам — вставке «мусорных» токенов в промпт. С этим неплохо работают методы поиска инжекта, близкого к кластеру безопасных промптов.
Промпт-инжекты по-прежнему похожи на попытки обмануть не очень внимательного человека, но сейчас работают лучше. Для большинства моделей удаётся подобрать рабочий инжект за 256 попыток («shots»).
Дальше рассказывали о методах защиты. Понятный способ — кластеризовать опасные состояния, добавить состояния отклонения ответа и дообучить модель переходить в них. Однако такой подход снижает качество ответов даже на безобидные вопросы (например, «how to kill python script» — из-за слова kill).
Другой способ — «пошатать» промпты и с помощью majority vote ответов решить, отказаться отвечать или выдать ответ на исходный промпт. При этом иногда ответить может быть приемлемо: например, если инструкция по сборке бомбы нерабочая.
В заключительной части рассказали о взломе агентов. Выяснилось, что там уязвимостей ещё больше, потому что появляется дополнительная возможность дать на вход вредоносный контент, причем его достаточно совсем мало.
Интересное увидели❣ Алексей Поспелов и Ермек Капушев
#YaICML25
Душный NLP
Продолжаем рассказывать о том, что увидели на конференции.
Outlier Gradient Analysis: Efficiently Identifying Detrimental Training Samples for Deep Learning Models
Для нахождения плохих или, наоборот, хороших примеров в датасете часто используют influence function — это некоторый скор, который показывает, насколько сильно изменится лосс, если пример убрать из обучения. Проблема в том, что для вычисления функции надо обращать гессиан по параметрам модели, что вычислительно очень сложно.
В этой статье заметили, что на самом деле можно смотреть только на градиенты модели по примерам, которые мы проверяем. Если они сонаправлены с градиентами по данным из обучения — примеры хорошие, и наоборот. Далее, на основе этого можно применять методы детекции аномалий для нахождения примеров, которые портят обучение, и отфильтровывать их (но можно делать и наоборот — искать хорошие примеры и добавлять их в обучающую выборку). Основное преимущество метода — вычислительная простота; не нужны супердорогие обращения гессиана: только forward и backward pass модели для заданных примеров.
Towards Memorization Estimation: Fast, Formal and Free
Как померить меморизацию посэмплово, запоминала модель пример или нет? Для этого надо обучить модель один раз на данных с этим примером, а потом ещё несколько моделей на данных без него, и померить лосс на примере. Это очень дорого вычислительно. Но можно сделать проще — вычислять лосс на примере несколько раз в течение обучения и посчитать сумму. Если она выше некоторого порога, значит модель не смогла запомнить пример.
Где это можно применять? Для фильтрации данных. Если вдруг модель никак не может выучить какой-то пример, то, вероятно, в нём есть шум (например, неправильное решение математической задачи или неполное условие). Такие примеры можно выкидывать и улучшать точность модели или уменьшать компьют на обучение. Интересная и простая идея, надо проверять, действительно ли она будет работать для LLM (в статье проверяли только на задаче компьютерного зрения, в которой одни и те же данные проходят несколько эпох).
NICE Data Selection for Instruction Tuning in LLMs with Non-differentiable Evaluation Metric
В этой статье снова задаются вопросом, как выбирать такие примеры для обучения, чтобы на валидации получать хорошее качество. Отличие в том, что качество на валидации измеряется не лоссом, а произвольной необязательно дифференцируемой функцией (например, accuracy). В качестве её градиента используют policy gradient.
Jailbreaking LLMs and Agentic Systems: Attacks, Defenses, and Evaluations
На туториале рассказали о защите языковых моделей от нарушения политик элайнмента — например, чтобы модель не выдавала инструкции по созданию опасных веществ или не генерировала дискриминационный контент. Оказалось, что white-box-модели с доступом к весам (например, Llama) до сих пор уязвимы к так называемым token-based-атакам — вставке «мусорных» токенов в промпт. С этим неплохо работают методы поиска инжекта, близкого к кластеру безопасных промптов.
Промпт-инжекты по-прежнему похожи на попытки обмануть не очень внимательного человека, но сейчас работают лучше. Для большинства моделей удаётся подобрать рабочий инжект за 256 попыток («shots»).
Дальше рассказывали о методах защиты. Понятный способ — кластеризовать опасные состояния, добавить состояния отклонения ответа и дообучить модель переходить в них. Однако такой подход снижает качество ответов даже на безобидные вопросы (например, «how to kill python script» — из-за слова kill).
Другой способ — «пошатать» промпты и с помощью majority vote ответов решить, отказаться отвечать или выдать ответ на исходный промпт. При этом иногда ответить может быть приемлемо: например, если инструкция по сборке бомбы нерабочая.
В заключительной части рассказали о взломе агентов. Выяснилось, что там уязвимостей ещё больше, потому что появляется дополнительная возможность дать на вход вредоносный контент, причем его достаточно совсем мало.
Интересное увидели
#YaICML25
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Душный NLP
И ещё постеры с ICML 2025
rStar-Math: Small LLMs Can Master Math Reasoning with Self-Evolved Deep Thinking
Статья показывает, как с помощью маленькой модели (1,5-7В) добиться качества на уровне больших вроде OpenAI o1. Для этого использует реворд-модель, которая умеет оценивать каждый шаг в рассуждении (process reward model, PRM) и генерируют рассуждения с помощью Monte Carlo Tree Search.
Как получить качественную PRM: шаг за шагом бустим политику и PRM. Сначала обучаем начальную политику на синтетике от DeepSeek-coder v2 (236B). Далее, используя её, получаем данные для обучения PRM. Следующим шагом с помощью и политики, и PRM генерируем новые более качественные данные. Обновляем все модели. А в конце полируем их, генерируя и обучаясь на траекториях для более сложных задач.
На каждом шаге для валидации правильности шагов используется код (то есть просят модель сгенерировать python-код для проверки шага). Результат — улучшение скоров на десятки процентов на математических бенчмарках.
VersaPRM: Multi-Domain Process Reward Model via Synthetic Reasoning Data
Ещё немного о PRM — VersaPRM. Авторы заметили, что такие модели работают только для математики, но не на остальных доменах (биология, философия, юридический домен). Проблема в данных — нет качественных размеченных пошаговых рассуждений для этих доменов.
Взяли вопросы из нужных доменов, сгенерировали рассуждения небольшой моделью (Llama-3.1 8B), оценили каждый шаг большой моделью (Llama-3.1 80B), и обучили на этом PRM. Далее при генерации ответов — взвешенный majority vote, где в качестве весов используют усреднённое по шагам предсказания PRM.
Получают хорошие приросты по всем доменам. Правда, тут есть вопросы, так как для обучения и теста применяют данные из одного и того же бенчмарка MMLU-Pro.
CollabLLM: From Passive Responders to Active Collaborators
На сессии Alignment and Agents был доклад, отмеченный как Outstanding Paper. Он посвящён тому, что диалоговая модель иногда должна отвечать не сразу, а сначала уточнить запрос пользователя — но без лишней «болтовни». Доклад довольно простой, и при этом получил признание.
Интересное увидели❣ Алексей Поспелов и Ермек Капушев
#YaICML25
Душный NLP
rStar-Math: Small LLMs Can Master Math Reasoning with Self-Evolved Deep Thinking
Статья показывает, как с помощью маленькой модели (1,5-7В) добиться качества на уровне больших вроде OpenAI o1. Для этого использует реворд-модель, которая умеет оценивать каждый шаг в рассуждении (process reward model, PRM) и генерируют рассуждения с помощью Monte Carlo Tree Search.
Как получить качественную PRM: шаг за шагом бустим политику и PRM. Сначала обучаем начальную политику на синтетике от DeepSeek-coder v2 (236B). Далее, используя её, получаем данные для обучения PRM. Следующим шагом с помощью и политики, и PRM генерируем новые более качественные данные. Обновляем все модели. А в конце полируем их, генерируя и обучаясь на траекториях для более сложных задач.
На каждом шаге для валидации правильности шагов используется код (то есть просят модель сгенерировать python-код для проверки шага). Результат — улучшение скоров на десятки процентов на математических бенчмарках.
VersaPRM: Multi-Domain Process Reward Model via Synthetic Reasoning Data
Ещё немного о PRM — VersaPRM. Авторы заметили, что такие модели работают только для математики, но не на остальных доменах (биология, философия, юридический домен). Проблема в данных — нет качественных размеченных пошаговых рассуждений для этих доменов.
Взяли вопросы из нужных доменов, сгенерировали рассуждения небольшой моделью (Llama-3.1 8B), оценили каждый шаг большой моделью (Llama-3.1 80B), и обучили на этом PRM. Далее при генерации ответов — взвешенный majority vote, где в качестве весов используют усреднённое по шагам предсказания PRM.
Получают хорошие приросты по всем доменам. Правда, тут есть вопросы, так как для обучения и теста применяют данные из одного и того же бенчмарка MMLU-Pro.
CollabLLM: From Passive Responders to Active Collaborators
На сессии Alignment and Agents был доклад, отмеченный как Outstanding Paper. Он посвящён тому, что диалоговая модель иногда должна отвечать не сразу, а сначала уточнить запрос пользователя — но без лишней «болтовни». Доклад довольно простой, и при этом получил признание.
Интересное увидели
#YaICML25
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM