ИИ движений · 5-3 · Срочная миссия

Кодировщик и декодер — сжать и развернуть движение

Домашнее задание из 5-2 звучало так: «откуда берутся ручки (латентные переменные)[прим.]?» Теперь мы найдём ручки, глядя только на данные. По 600 сценам с человечком-палочкой построим кодировщик, который сжимает 1 196 чисел до k, и декодер, который разворачивает k чисел обратно в 1 196. Даже после сжатия до 16 чисел и развёртывания возвращается 99.8% движения. А затем с помощью этих сжатых чисел мы уберём дрожание, восстановим скрытый локоть, сделаем распознавание выброса мусора из 5-1 точнее на малых данных и выполним генерацию из 5-2 без заданных ручек.

1 196 → 16во сколько раз сжимает кодировщик (в 74.8 раза)
99.8%доля движения, переданная 16 числами (объяснённая дисперсия)
0.030 → 0.009ошибка при дрожании σ = 0.03 после сжатия и развёртывания (код 1)
в 2.1 разаточнее восстановление скрытого локтя (код 1)
99.7%точность распознавания выброса мусора при обучении всего на 25 сценах каждого вида (k = 16, код 2)
2кода, которые сразу запускаются в Colab
1Миссия

Третье задание — «Найдите ручки в данных»

Генератор D из 5-2 победил потому, что заранее знал три ручки (скорость · положение · размер). Реальные данные приходят без ручек. Миссия этой части — найти ручки самостоятельно, глядя только на 600 сцен.

[SYSTEM] 04:55 · Отчёт о выполнении 5-2 получен. Следующее задание: сжатие движений. Вложения: 600 сцен шести видов, одна схема воронки.
Доктор
ДокторНеужели все 1 196 чисел и правда двигаются независимо? Нет. Если движется локоть, за ним идёт и запястье, а текущий кадр почти совпадает с предыдущим. Значит, движение можно сжать до гораздо меньшего числа чисел.
Ассистент
АссистентСжимает кодировщик, разворачивает декодер! Если после сжатия и развёртывания получается исходное движение, значит, в средних числах заключено всё движение, да?
Исследователь-дрозофила
Исследователь-дрозофилаЭти средние числа и есть те самые ручки, которые мы искали в 5-2. И есть бонус: дрожание исчезает, скрытый локоть восстанавливается, а распознавание выброса мусора становится лучше.
Робот лабораторииЯ подготовил воронки размером от 1 до 16. 16 направлений, вычисленных в коде 1, загружены на эту страницу.
Вверху четыре человечка-палочки собираются в одну маленькую капсулу, а затем разворачиваются в три ряда шагающих человечков; внизу размытый человечек становится чётким, и столбчатая диаграмма растёт. Ассистент радостно сжимает кулак, а робот держит табличку с растущим графиком
Сжать и развернуть. Сцену, где размытый вход превращается в чёткий выход, вы сами создадите в разделе 4.
2Воронка

Воронка — сжать 1 196 чисел до k и развернуть обратно

Кодировщик сжимает оригинал слева до k чисел (фиолетовые столбики в центре), а декодер разворачивает их обратно в 1 196 (справа). Уменьшайте размер узкого места k и смотрите, до какой степени можно сжать.

Узкое место k
Сцена

Результат кода 1 — ошибка сжатия и развёртывания 300 тестовых сцен

Узкое место kСтепень сжатияОбъяснённая дисперсияОшибка восстановления (RMSE)Ошибка длины костей
1в 1 196 раз85.72%0.10216.16%
2в 598 раз95.07%0.05987.65%
3в 398.7 раза97.84%0.03952.78%
5в 239.2 раза99.02%0.02661.95%
8в 149.5 раза99.46%0.01951.86%
16в 74.8 раза99.80%0.01231.50%
32в 37.4 раза99.90%0.00881.43%

В тестовые сцены подмешано дрожание оценки позы (σ = 0.008). Ошибка 0.0088 при k = 32 почти равна величине этого дрожания. Дальше модель запоминает уже не движение, а дрожание.

Разбор для начинающих — как устроена эта воронка

Собрав 600 сцен, мы по очереди нашли «направления, по которым движение меняется сильнее всего» (метод главных компонент, PCA). Кодировщик вычитает из сцены среднюю сцену и проецирует её на k таких направлений, получая k чисел. Декодер прибавляет к средней сцене k направлений, умноженных на эти числа. Это простейший автокодировщик — только сложение и умножение. Автокодировщик на нейросети с помощью слоёв и функций активации передаёт и криволинейные связи (3-7). 16 направлений на этой странице — это значения, вычисленные в коде 1, без изменений.

3Латентная карта

Латентная карта и ручки — ручки, которые данные нашли сами

Это карта 600 сцен по ручкам 1 и 2. Нажмите на точку, чтобы выбрать сцену, и покрутите четыре ручки ниже. У ручек нет названий. Посмотрите, что меняется, и придумайте им названия сами.

Сцены одного вида собираются на карте рядом. Никто не говорил «это бросок» — мы только сжимали, и всё же так вышло. Значения ручек выражены в единицах стандартного отклонения (σ) обучающих сцен. За пределами ±2σ — область, которой почти не было в обучающих данных, поэтому развёрнутая поза выглядит неестественно.

РучкаГде изменения сильнее всегоПрозвище по наблюдениямСреднее по видам сцен (код 1)
1 (85.7% движения)x всех суставов, конец сцены«Где оказывается в конце» — остаётся перед урной или уходит вправоположить −15.3 · бросок +8.3 · проход мимо +6.4 · уронить +6.7
2 (9.4%)x правого запястья, локтя и лодыжек, начало сцены«Где начинает и с какой стороны держит правую руку»проход мимо −4.4 · взмах рукой +4.1
3 (2.8%)y правого запястья, локтя и головы«Поднимает руку или наклоняется»взмах рукой +2.6 · поднять −2.1
4 (1.2%)x правого запястья и лодыжек, середина сцены«Покачивание рук и ног влево-вправо в середине»поднять +1.3 · бросок −0.9

Чем отличаются от ручек из 5-2

Ручки из 5-2 (скорость · положение · размер) задал человек, когда создавал сцены. Здесь же ручки — это направления, по которым данные меняются сильнее всего, выбранные по очереди. Поэтому у них нет названий, и в одной ручке смешано несколько смыслов (ручка 1 — это и положение, и «ушёл ли человек»). Зато их можно найти, даже если человек ничего не подсказывает. Это и есть латентное пространство.

4Дрожание и перекрытие

Улучшение ① — убрать дрожание и восстановить скрытый локоть

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

Дрожание σ
Сцена

Устранение дрожания (код 1, 120 сцен)

При дрожании σ = 0.01 ошибка 0.0100 → 0.0082, при σ = 0.03 — 0.0300 → 0.0090, при σ = 0.05 — 0.0501 → 0.0104. Чем сильнее дрожание, тем больше эффект. Дрожание направлено хаотично и поэтому почти не попадает на 16 направлений воронки.

Восстановление скрытого локтя (код 1, 120 сцен)

Если подобрать 16 латентных чисел только по видимым ячейкам методом наименьших квадратов и развернуть их декодером, заполнятся и пустые ячейки. Ошибка положения: «заткнуть средней точкой между плечом и запястьем» — 0.0230, «заполнить декодером» — 0.0108, то есть примерно в 2.1 раза точнее. Так закрывается проблема из 5-1: «когда рука закрыта телом, сустав не находится».

5Выброс мусора

Улучшение ② — если ловить выброс мусора по сжатым числам

В 5-1 говорилось: «если обучаться прямо на координатах, данных нужно гораздо больше». На этот раз мы сначала сжимаем кодировщиком координаты суставов и банки (1 288 чисел), а затем обучаем простейшую логистическую регрессию на k сжатых числах.

Обучающие сцены (на вид)1 288 чисел как есть + MLPсжатие до k = 8 + логистическая регрессиясжатие до k = 16 + логистическая регрессия
25 (всего 150)96.7%95.0%99.7%
50 (всего 300)97.0%95.3%100.0%
100 (всего 600)98.0%98.0%100.0%

k = 16 + логистическая регрессия: обучившись всего на 25 сценах каждого вида (150 всего), модель верно определила 299 из 300 тестовых сцен. В 16 числах вместе сжаты и «где банка в конце», и «куда ушёл человек», поэтому классы можно разделить даже одной прямой.

k = 8 недостаточно: мелкие движения вроде конечного положения банки содержатся в направлениях начиная с 9-го, поэтому при сжатии до 8 часть теряется. Сжимать посильнее — не всегда ответ.

Почему не так, как 92.3% в 5-1: в 5-1 «нет объекта» обозначалось координатой −9, а здесь — (0, 0). Одна лишь смена обозначения на входе поднимает MLP до 98%. Все три столбца этой таблицы сравниваются на одинаковом входе.

Почему сжатие помогает

Кодировщик построен только по сценам, без меток (использованы все 600, но правильные ответы «выброс/норма» он не видел). Полученная так «сводка движения» очищена от шума и состоит из немногих чисел, поэтому классификатор не путается, даже если размеченных сцен мало. Сначала учить представление на неразмеченных данных, а затем доучивать на небольшом числе правильных ответов — это та же базовая схема, по которой сегодня обучают большие модели. Но учтите: эти числа получены на синтетических данных. На реальном видео они ниже.

6Генерация

Улучшение ③ — создание движений без заданных ручек (генератор E)

Эксперт из 5-2 вернулся. Новый генератор E не знает ручек, заданных человеком. Он смотрит, где на латентной карте собираются броски (среднее и стандартное отклонение), вытягивает новые 16 чисел и разворачивает их декодером.

Рядом с четырьмя генераторами из 5-2 (код 2 · код 2 из 5-2, по 20 генераций)

ГенераторЗнает ли ручки заранееОшибка длины костейДрожаниеМакс. скорость запястьяРазнообразиеНовизна
A Одно среднее—1.7%0.00451.360.0000.033
B Кубик для каждой координаты—44.2%0.265910.000.1490.109
C Выбрать одну и скопировать—4.7%0.03002.750.1250.000
D Выбор 3 ручекЗнает (заданы человеком)0.0%0.01252.710.1230.022
E — вытянуть из 16 латентных чиселНе знает (нашли данные)3.7%0.01221.760.1140.047

Что удалось E: не зная ручек, он не ломается, как B (ошибка костей 44.2% → 3.7%, дрожание 0.27 → 0.012). Результаты разнообразны (0.114) и не скопированы (0.047).

Что не удалось E: максимальная скорость запястья — 1.76, бросок потерял силу. Поскольку он вытягивает точки около среднего в латентном пространстве и лишь складывает прямолинейные направления, короткий миг быстрого замаха размывается. И длины костей не так точны, как у настоящих движений (0%).

Декодер получше

Линейный декодер лишь складывает направления в заданных пропорциях и не может передать криволинейные связи вроде «рука описывает круг». Поэтому в реальных исследованиях генерации движений используют многослойные нелинейные кодировщики и декодеры [R2] и одновременно обучают латентное пространство принимать форму нормального распределения, чтобы получилось пространство, где «что ни вытянешь — разворачивается правдоподобно» (VAE [R1]). Есть и VAE для движений, учитывающие ось времени [R4].

7Ограничения

Пределы сжатия и следующая миссия

Кодировщик и декодер улучшили и распознавание, и генерацию. Но кое-что осталось.

Что мы узнали в этой части
  • 1 196 чисел сжимаются до 16: сохраняется 99.8% движения. Данные о движениях гораздо проще, чем кажется.
  • Сжатие фильтрует: дрожание убирается (0.030 → 0.009), пропуски заполняются (в 2.1 раза точнее).
  • После сжатия хватает малого числа ответов: 99.7% при 25 сценах на вид.
  • Выборка из сжатого пространства порождает новое: генерация работает и без ручек, заданных человеком.
Оставшиеся вопросы
  • Предел линейности: сильный бросок размывается. Нужны нелинейный декодер и VAE.
  • Невиданные движения: воронка знает только формы шести изученных видов. Новое движение (напр., падение) после сжатия и развёртывания стягивается к знакомым движениям. И наоборот, такие «сцены с большой ошибкой восстановления» можно использовать как сигнал тревоги о необычном движении.
  • Как выбрать нужное движение: сейчас «место, где собираются броски», выбирали мы сами. А можно ли выбрать «взмах рукой» словами? Достаточно поместить слова на ту же карту.
Слева карточки со значками сердца, звезды, ноты, восклицательного знака и луны, справа карточки с движениями человечков-палочек, их соединяют светящиеся линии; Ассистент нажимает верхнюю карточку, а Доктор наблюдает, подперев подбородок
Анонс следующей миссии · Подобрать пары слов и движений на одной карте
Доктор
ДокторМы превратили движение в точку на карте. А что, если и слово «взмах рукой» сделать точкой на той же карте? Подаёшь слово — и получаешь движение рядом с ним!
Ассистент
АссистентЗначит, слова тоже сжимаются кодировщиком! Если совместить текстовую воронку и двигательную воронку на одной карте…
Исследователь-дрозофила
Исследователь-дрозофилаЭто будет 5-4. Вы увидите, как спутанные линии в ходе обучения находят свою пару.

Код Colab — запустите эту страницу сами

Оба кода используют только библиотеки, установленные в Colab по умолчанию. Нажмите «Скачать ноутбук (.ipynb)» и откройте его в Colab через Файл → Загрузить блокнот или скопируйте код и вставьте в ячейку нового ноутбука.

Код 1 · Сжать движение до k чисел и развернуть (линейный автокодировщик)Связан с разделами 2–4 · numpy, matplotlib · CPU около 3 с

По 600 сценам строятся encode и decode, затем измеряются ошибка восстановления для каждого k, устранение дрожания и восстановление скрытого локтя (fill). Отсюда и взялись 16 направлений на этой странице. Чтобы подставить свои данные, поместите на место S свои данные формы (число сцен, число чисел). Данные датчиков и логов можно сжимать точно так же.

Результат запуска (запущено 2026-10-05, numpy 2.4 · matplotlib 3.10 · CPU). Сид зафиксирован, поэтому результат всегда одинаков. Также выводятся два графика (объяснённая дисперсия по k и латентная карта).
Код 2 · Улучшить распознавание выброса мусора и генерацию движений с помощью сжатых чиселСвязан с разделами 5 и 6 · numpy, scikit-learn · CPU около 40 с

Распознавание выброса мусора из 5-1 сравнивается в вариантах «MLP на данных как есть» и «сжатие + логистическая регрессия» при разном числе обучающих сцен, а генератор E оценивается по оценочному листу Эксперта из 5-2. Таблицы разделов 5 и 6 построены прямо по этому выводу.

Результат запуска (запущено 2026-10-05, numpy 2.4 · scikit-learn 1.8 · CPU). Сид данных зафиксирован, но числа MLP могут немного меняться в зависимости от версии библиотеки.

Промпты для применения ИИ — этот код как отправная точка

Эти промпты нужно вставлять в ИИ-помощники вроде ChatGPT, Qwen или Claude. При нажатии «Копировать» после промпта добавляется выбранный код. Замените текст в 〔 〕 на свою ситуацию.

Какой код приложить

Ответ ИИ — лишь отправная точка. Предложенные статьи, цифры и библиотечные функции обязательно проверяйте по первоисточникам и официальной документации. Прежде чем использовать реальные данные о движениях людей, убедитесь в наличии согласия на съёмку и проверьте условия использования датасета.

Глоссарий

Это тот же словарь, что и у терминов с жёлтым пунктирным подчёркиванием в тексте. Нажмите на название раздела, чтобы перейти туда, где термин встретился впервые.

Сборник аналогий — и где аналогия не работает

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

ПонятиеБытовая аналогияАналогия с восприятием человекаГде аналогия не работает
Кодировщик и декодерСложить одежду в чемодан, а в гостинице развернутьЧастично Запомнить длинный танец несколькими словами вроде «левая нога, хлопок, поворот», а потом станцевать его сноваОдежда после складывания остаётся прежней, а воронка выбрасывает мелкие складки (дрожание). Выброшенное не вернётся и после развёртывания
Размер узкого места kОграничение на число знаков в аннотацииНетВ аннотации важное выбирает человек, а эта воронка выбирает «то, что сильно меняется». Мелкое, но важное отличие (конечное положение банки) может потеряться
Латентное пространствоНанести рестораны на карту с двумя осями: «цена · острота»НетОси карты ресторанов задаёт человек, а оси латентного пространства задают данные, и у них нет названий
Восстановление перекрытийУгадывать стёртые буквы по контексту до и послеЧастично Человеческое восприятие, которое угадывает скрытую руку по позе всего телаДогадка верна только в пределах изученных движений. Незнакомую позу воронка ошибочно достраивает в сторону знакомой
Выборка из латентного пространстваТкнуть на карте «где-то возле этого района» и отправиться тудаНетЕсли ткнуть в пустое место карты (где не было обучающих данных), окажешься в странном месте

Об авторе и источники

E-1 Об авторе · E-2 Научные источники · E-3 Источники рисунков и чисел

E-1 Об авторе

Ан Сансон (генеральный директор M-Robo Co., Ltd.)

Работал в Корейской корпорации электробезопасности (KESCO) и газете Maeil Business Newspaper, затем основал внешнее венчурное предприятие Maeil Business — M-Robo Co., Ltd., которое возглавляет в настоящее время. M-Robo — медиавенчур, начинавшийся как внутренний стартап СМИ: компания предоставляла газете Kukmin Ilbo сервис робота-журналиста (StockBot) и выполнила ряд проектов для Корейского агентства интернета и безопасности (KISA), Корейского фонда прессы, Корейского агентства по радиосвязи и др. Сейчас компания развивает собственный ИИ-сервис новостей Money-Robo. Будучи генеральным директором, победил на Азиатском хакатоне открытых данных и дважды получил награду министра внутренних дел и безопасности за заслуги в области стартапов на основе данных; является изобретателем и правообладателем 5 патентов в области искусственного интеллекта и блокчейна. Автор книги «Преступления с ИИ и самозащита»; разрабатывал электронные учебные курсы по финтеху, статистике и искусственному интеллекту для Центра онлайн-образования Корейского технологического и образовательного университета (KOREATECH). Имеет степень доктора экономических наук (Университет Тонгук, микроэкономика и математическая экономика). Преподаёт дисциплины, связанные с данными и искусственным интеллектом, в ряде университетов, в том числе в Университете Кукмин и Университете Хосо. Подробный профиль

Лекции

  • Ан Сансон (2025). Конспект лекций «Наука о данных для бизнеса». Кафедра конвергенции ИИ, Корейский открытый киберуниверситет.
  • Ан Сансон (2025). [K-Digital] Обработка естественного языка с помощью ИИ. STEP (Smart Training Education Platform), Центр онлайн-образования Корейского технологического и образовательного университета.
  • Ан Сансон (2024). [K-Digital] Основы анализа данных в финтехе. STEP (Smart Training Education Platform), Центр онлайн-образования Корейского технологического и образовательного университета.

Курсы на STEP: link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
Если из-за обновления сайта ссылки не открываются, перейдите на www.step.or.kr.

Статьи и доклады

  • Ан Сансон (2025). Модель прогнозирования расходов домохозяйств на данных Корейского панельного исследования пенсионного обеспечения (KReIS): подход на основе моделей ИИ. «Будущее общество» (Future Society), 16(2). Полный текст
  • Ан Сансон (2025). Модель прогнозирования расходов домохозяйств на данных Корейского панельного исследования пенсионного обеспечения: подход на основе ИИ. Доклад на научной конференции по панельному исследованию пенсионного обеспечения (13.05.2025), Исследовательский институт Национальной пенсионной службы Кореи. Материалы доклада
  • Ан Сансон (2025). Алгоритм обнаружения подозрительных сделок с наркотиками по текстам соцсетей: анализ паттернов и контекста. «Будущее общество» (Future Society), 16(1). Полный текст
  • Ан Сансон (2024). Статистические методы противодействия состязательным данным для защиты моделей обнаружения аномалий в финансовой сфере: эмпирический анализ и результаты моделирования. «Будущее общество» (Future Society), 15(3). Полный текст
  • Ан Сансон (2024). Решение на основе ИИ для обнаружения публикаций в соцсетях по признакам виртуальных персонажей. Стендовый доклад на 2024 Summer Newmedia Party (19.06.2024), Сеульский университет медиа (аспирантура).
  • Ан Сансон (2024). Модели машинного обучения на панельных данных о производственном травматизме. Стендовый доклад на 10-й научной конференции по панельному исследованию страхования от производственных травм (17.05.2024), Исследовательский институт социального обеспечения трудящихся, Корейская служба социального обеспечения трудящихся (COMWEL).
  • Ан Сансон (2024). Анализ и прогнозирование временных рядов виртуальных активов: сравнение моделей временных рядов и моделей ИИ, предложения по улучшению. «Будущее общество» (Future Society), 15(1). Полный текст

E-2 Научные источники

  1. [R1] Kingma, D. P., & Welling, M. (2014). Auto-encoding variational Bayes. ICLR 2014. arXiv:1312.6114 — разделы 6 и 7
  2. [R2] Holden, D., Saito, J., & Komura, T. (2016). A deep learning framework for character motion synthesis and editing. ACM Transactions on Graphics, 35(4), Article 138. doi:10.1145/2897824.2925975 — раздел 6 (автокодировщик для движений)
  3. [R3] Hinton, G. E., & Salakhutdinov, R. R. (2006). Reducing the dimensionality of data with neural networks. Science, 313(5786), 504–507. doi:10.1126/science.1127647 — раздел 2 (сравнение нейросетевого автокодировщика и PCA)
  4. [R4] Petrovich, M., Black, M. J., & Varol, G. (2021). Action-conditioned 3D human motion synthesis with Transformer VAE. ICCV 2021. arXiv:2104.05670 — раздел 6
  5. [R5] Pearson, K. (1901). On lines and planes of closest fit to systems of points in space. Philosophical Magazine, 2(11), 559–572. — раздел 2 (истоки метода главных компонент)

E-3 Источники рисунков и чисел

  • Иллюстрации сцен (кодирующая воронка, декодирование и улучшение качества, сопоставление текста и движений) — пиксель-арт, созданный автором
  • Кодировщик и декодер в разделах 2–4 и 6 используют среднюю сцену и 16 направлений, вычисленные в коде 1, без изменений (32-битные числа с плавающей точкой)
  • Таблицы под разделами 2, 4, 5 и 6 — результаты реального запуска кодов 1 и 2. Дрожание и результаты генерации на экране заново вытягиваются в браузере тем же способом, поэтому числа немного отличаются
  • Прозвища ручек в разделе 3 дал автор, посмотрев, какие суставы и моменты времени сильнее всего меняются вдоль каждого направления

E-4 Примечания

  • [прим.] Ручка (латентная переменная) — так в этой серии упрощённо, через аналогию, называется латентная переменная (latent variable): небольшое число параметров, при повороте которых меняются сразу все данные. В англоязычных пояснениях каждое измерение латентного пространства тоже образно называют «knob (ручка)», «dial (регулятор)», «slider (ползунок)». Строгий термин в статьях — латентная переменная, а каждая ручка, которую данные находят в 5-3, — это главная компонента (principal component). В отличие от настоящей ручки, в одной могут смешиваться несколько смыслов.

Советы преподавателям

Методическая памятка для преподавателей, наставников по обучению на рабочем месте (OJT) и тьюторов. Время указано ориентировочно — подстройте его под своё занятие.

Для когоСтуденты и работающие специалисты, прошедшие 5-1 и 5-2. Практики, работающие с большими зашумлёнными данными — датчиков, видео, логов
Что нужно знать заранее«Движение — это таблица» и оценка генераторов из 5-2, скалярное произведение векторов (перемножить элементы на одинаковых позициях и сложить)
Цели обучения① Объяснить смысл кодировщика, декодера и узкого места k с помощью рисунка воронки ② Привести примеры того, как сжатие и развёртывание используются для устранения дрожания, восстановления перекрытий, обучения на малых данных и генерации ③ Объяснить ограничения линейного кодировщика и почему нужен VAE
Ориентировочное времяЧтение 35–45 мин · демонстрация анимаций 25 мин · практика в Colab 30 мин (код 1 — 10 мин, код 2 — 1 мин запуск + 19 мин разбор)

Три сценария занятия

Лекция, 50 мин

Упор на понятия

Введение 5 мин (раздел 1, домашнее задание из 5-2) → раздел 2: уменьшаем k в воронке, 12 мин → раздел 3: крутим ручки, 10 мин → раздел 4: дрожание и перекрытие, 8 мин → разделы 5 и 6: чтение таблиц, 10 мин → проверочные вопросы, 5 мин.

Обучение на рабочем месте (OJT), 90 мин

С упором на применение сжатия данных

Раздел 2, 15 мин → обсуждение «сколько чисел» и «сколько реально независимых чисел» в наших данных (датчики, логи), 15 мин → разделы 4 и 5: примеры удаления шума и обучения на малом числе ответов, 20 мин → подставляем свои данные в код 1, 30 мин → раздел 7: подведение итогов по ограничениям, 10 мин.

Индивидуальные занятия 1:1

Темп по уровню

Начинающим — только разделы 2 и 4. Учащиеся среднего уровня пусть вручную проследят encode и decode из кода 1, а затем нарисуют Vt[0] и проверят, почему ручка 1 из раздела 3 — это «положение в конце».

Ключевые моменты по разделам

РазделВопрос, на котором стоит остановитьсяСовет по управлению
2 Воронка«Сколько нужно чисел, чтобы бросок выглядел как бросок?»Увеличивайте k = 1 → 3 → 8 и смотрите на результат справа
3 Латентная карта«Никто не подсказывал — почему же сцены одного вида собрались вместе?»Выберите одну красную точку (бросок) и поверните ручку 1 на −2σ
4 Дрожание и перекрытие«Как воронка отличает дрожание от движения?»Включите одновременно σ = 0.05 и скрытие локтя
5 Выброс мусора«Почему k = 8 хуже, чем k = 16?»Сначала прочитайте строку таблицы с 25 сценами
6 Генерация«Чего E знает меньше, чем D, и что у него получается хуже?»Нажмите «Создать заново» и посмотрите на ячейку максимальной скорости запястья

Топ-5 частых заблуждений

ЗаблуждениеПравильное объяснениеЧто показать
При сжатии информация теряется, поэтому качество падаетЕсли выбрасывается в основном шум, становится даже лучше. Примеры — устранение дрожания и обучение на малых данныхРаздел 4, раздел 5
Чем больше k, тем лучшеПри большом k захватывается и дрожание. При малом теряются важные мелкие движения. Выбирайте по задачеk = 32 в таблице раздела 2, k = 8 в разделе 5
У каждого латентного числа есть понятный человеку смыслНаправления задают данные, и у них нет названий. Прозвища — это толкование, которое человек даёт потомТаблица раздела 3
Автокодировщик обязательно должен быть нейросетьюПростейший линейный автокодировщик делает то же, что PCA. Нейросеть передаёт и криволинейные связиРазбор под разделом 2
Любая точка латентного пространства даёт правдоподобное движениеТолько рядом с тем местом, где были обучающие данные. Сделать это пространство равномерным — задача VAEРаздел 3 за пределами ±2σ, раздел 6

Проверочные вопросы (нажмите, чтобы раскрыть разбор)

Q1. Какова степень сжатия, если 1 196 чисел сжать до k = 16? И какая доля движения при этом сохраняется?

1 196 ÷ 16 = 74.75, примерно в 74.8 раза. Объяснённая дисперсия в коде 1 — 99.80%.

Q2. Даны два направления v₁ = (1, 0, 0), v₂ = (0, 1, 0), среднее равно 0. Что получится, если x = (3, −2, 0.4) сжать до k = 2 и развернуть?

Кодировщик: z = (x·v₁, x·v₂) = (3, −2). Декодер: 3v₁ − 2v₂ = (3, −2, 0). Третье значение 0.4 не попадает ни на одно из двух направлений и исчезает. Это и есть принцип, по которому «стирается дрожание».

Q3. Почему неверно затыкать скрытый локоть «средней точкой между плечом и запястьем»? Что ещё знает декодер?

Локоть согнут, поэтому находится снаружи от средней точки. Декодер использует выученную по 600 сценам связь «при такой позе локоть обычно здесь» (16 направлений) и подбирает локоть вместе с другими видимыми суставами. В коде 1 ошибка снизилась с 0.0230 до 0.0108.

Q4. Почему распознавание выброса мусора улучшилось, хотя при построении кодировщика правильные ответы «выброс/норма» не использовались?

Кодировщик выучил только структуру движения (что движется вместе) и превратил 1 288 чисел в сводку из 16. Сводка содержит мало шума и мало чисел, поэтому простой классификатор не путается, даже если размеченных сцен всего 150.

Q5. Почему максимальная скорость запястья у генератора E — 1.76, ниже, чем в обучающих данных (2.55)?

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

Задания в Colab

Базовое

В коде 1 замените скрываемый сустав с правого локтя на левое колено (сустав № 9 → № 10) и увеличьте скрываемый отрезок с 21 до 40 кадров. Представьте в виде таблицы, как меняется ошибка заполнения декодером.

Повышенной сложности

Создайте отсутствующее в обучении движение «падение» (сцена, где в функции pose параметр lean увеличен до 1.4) и измерьте, насколько его ошибка восстановления больше, чем у сцен шести видов. Предложите, можно ли по ошибке восстановления сделать сигнал тревоги о «невиданном движении», и укажите пороговое значение.

Регулировка сложности и что изучить дальше

НовичкамДаже одних кнопок k в разделе 2 и трёх рисунков в разделе 4 достаточно, чтобы понять: «сжатие и развёртывание фильтруют»
УглублённоПопросите заменить линейный кодировщик из кода 1 автокодировщиком на Keras (1,196 → 64 → 16 → 64 → 1,196) и сравнить ошибку восстановления и скорость запястья генератора E
Следующая часть5-4 От слов к движениям — превращаем и слова в точки на той же карте

Миссия 5-3 выполнена!

Вы дочитали часть «5-3 Кодировщик и декодер» до конца. Команда лаборатории подводит итоги — каждый по одной фразе.

Шесть сцен: стопку карточек с человечками-палочками кладут в воронку, из-под воронки выпадает светящаяся капсула, другие человечки берут капсулу и ставят печать
Доктор
ДокторСжатие и развёртывание дали нам три вещи.
  • 1 196 чисел → 16, 99.8% движения
  • Дрожание убирается, пропуски заполняются
  • Распознавание по малому числу ответов, генерация без ручек
Ассистент
АссистентРучка 1 — это «куда уходит человек»! Удивительно, что данные нашли это сами!
Исследователь-дрозофила
Исследователь-дрозофилаДальше — слова. Давайте поместим слово «взмах рукой» на ту же карту.