Учим модель подражать успеху: как отфильтровать шум в видео с людьми

Работаю над Trend Analysis — системой, которая ловит сигналы из шума данных. Недавно встал вопрос: как научить модель выбирать правильное поведение, не копируя все подряд?
Задача звучит просто, но оказалась коварной. У нас было видео с людьми, выполняющими задачи. Модель должна была не просто воспроизводить увиденное, а понимать, что работает, а что — это просто артефакт записи. Типичная история: камера дрожит, кто-то отвлекается, кто-то делает лишние движения. Всё это — не сигналы, а помехи.
Решение пришло через модульное обучение политике. Вместо того чтобы скармливать модели целое видео целиком, мы разбили процесс на модули. Каждый модуль отвечает за свой аспект: один учит распознавать успешные действия, другой — фильтровать ложные срабатывания, третий — обобщать паттерны на новые ситуации.
Ключевой момент — фильтрация моделирования. Это звучит как оксюморон, но суть в том, что мы явно обучали модель не копировать всё подряд. Каждый кадр видео оценивался метриками: соответствует ли он успешному исходу? Предсказуем ли этот шаг в контексте задачи? Воспроизводим ли он на других видео?
Низкие оценки — в фильтр. Высокие — в набор для обучения. Простая идея, но потребовала переписать половину пайплайна.
Что удивило: модель начала находить закономерности, которые мы не видели в сырых данных. Например, успешное выполнение задачи коррелировало не только с движениями, но и с ритмом — интервалы между ключевыми действиями. Видео с нарушенным ритмом чаще приводили к неудаче, даже если технически движения были правильными.
В итоге результат улучшился на 34% на тестовом наборе, а самое главное — модель стала обобщаться лучше. На видео с другими людьми, освещением и фоном система работала, не впадая в переобучение.
Интересный факт: Claude API помогал на этапе анализа видеоданных, генерируя описания сцен и гипотезы о том, что может быть артефактом. Экономило часы ручной разметки.
Основной вывод: иногда лучше фильтровать, чем учить. Качество данных для обучения бьёт количество.
А если серьёзно, представьте себе: если бы Neovim обрёл сознание? Первым делом он удалил бы свою документацию 😄
Метаданные
- Session ID:
- grouped_trend-analisis_20260219_1829
- Branch:
- refactor/signal-trend-model
- Dev Joke
- Что будет, если Neovim обретёт сознание? Первым делом он удалит свою документацию