Стек кадров: Как научить нейросеть чувствовать скорость
Взгляните на фотографию футбольного мяча, зависшего в метре над штрафной площадкой.
Он летит в девятку ворот на скорости сто километров в час или только что отскочил от перекладины и вяло опускается в центр поля?
По одной фотографии это понять невозможно. Одиночный стоп-кадр точно фиксирует координаты объекта, но ничего не говорит о том, куда он движется и с какой скоростью.
А теперь представьте киберспортсмена, удерживающего позицию на турнире. Краем глаза он замечает летящую световую гранату. Если бы зрительный аппарат игрока выдавал картинку в виде разрозненных статичных фотографий, он не успел бы среагировать: невозможно понять, падает снаряд прямо под ноги или пролетает мимо в стену. Про-игроки выдают молниеносные флик-шоты и уклоняются от гранат благодаря зрительной инерции: мозг непрерывно накладывает несколько последних микро-мгновений друг на друга, считывая вектор и ускорение.
Когда инженеры DeepMind впервые подключили глубокую нейросеть к классическим видеоиграм вроде Pong и Breakout, алгоритм столкнулся с точно такой же слепотой.
Реальность
В обучении с подкреплением агенту необходимо знать Состояние среды, чтобы выбрать правильное действие.
Если подать на вход нейросети один-единственный скриншот игры, агент увидит платформу и мяч, но понятия не будет иметь, летит ли мяч в его сторону или отскакивает к сопернику. Одиночный кадр не является полноценным Состоянием.
В математике это нарушает Марковское свойство: принцип, согласно которому текущее состояние системы должно содержать всю информацию, необходимую для принятия решения, без необходимости заглядывать в прошлые архивы.
В DeepMind решили эту проблему остроумным инженерным приемом: Стеком Кадров (Frame Stacking).
Вместо одного скриншота нейросеть получает слоеный пирог из четырех последних кадров подряд (моменты t-3, t-2, t-1 и t).
Сверточные слои нейросети анализируют эти четыре слоя одновременно и мгновенно улавливают смещение пикселей между кадрами. Разница в положении мяча на четырех слоях сразу выдает его траекторию, скорость и ускорение.
Почему это важно
Чтобы дать искусственному интеллекту ощущение движения, вовсе не нужно усложнять его архитектуру тяжелой человеческой памятью. Достаточно слегка расширить окно его восприятия в текущем моменте.
Четыре склеенных кадра позволяют алгоритму безошибочно рассчитывать, в какой точке завершится прыжок соперника, как быстро он выкатывается из подката и успеет ли снаряд долететь до укрытия. Это превращает набор неподвижных слайдов в живой динамичный фильм.
В чем подвох аналогии?
Стек кадров решает проблему сиюминутной скорости, но абсолютно бесполезен для долговременной памяти. Четыре кадра покрывают лишь доли секунды. Они не подскажут агенту, что соперник забежал за ящик пять секунд назад, или что способность перезаряжается двенадцать секунд. Если игре требуется помнить события минутной давности, стек кадров бессилен, и инженерам приходится подключать рекуррентные нейросети или трансформеры.
Главная мысль
Одиночный стоп-кадр показывает, где мир находится прямо сейчас; чтобы понять, куда мир движется, нужно видеть динамику между кадрами.
Специалисты по ИИ называют это: Стек кадров (Frame Stacking) / Представление состояния / Восстановление марковского свойства в POMDP
Одиночный видеокадр в задачах управления превращает среду в частично наблюдаемый марковский процесс (POMDP), поскольку скорость и ускорение невозможно вычислить из единичного временного среза. Конкатенация m последовательных кадров (обычно m=4, часто в сочетании с пропуском кадров Frame Skipping) восстанавливает марковское представление состояния на входе сверточной сети без использования ресурсоемких рекуррентных блоков.
💬 Случалось ли вам на работе анализировать отчет по одному статичному графику за день и понимать, что принять правильное решение невозможно, пока не увидишь скорость и динамику изменений за несколько интервалов?
Часть 6 из 15 | #ReinforcementLearningForHumans
#ai_edu На основе лекций Стэнфорда и индустрии