Настоящее предназначение OpenAI SORA: как и зачем симулировать «Матрицу» для ChatGPT

Ну что, уже успели прочитать восхищения небывалым качеством видео от нейросетки SORA у всех блогеров и новостных изданий? А теперь мы вам расскажем то, о чем не написал никто: чего на самом деле пытается добиться OpenAI с помощью этой модели, как связана генерация видео с самоездящими машинами и AGI, а также при чем здесь культовая «Матрица».

Ложки нет, Нео! Точнее, есть – но, возможно, только на сгенерированном нейросетью видео...
Ложки нет, Нео! Точнее, есть – но, возможно, только на сгенерированном нейросетью видео...
Это гостевая статья от Игоря Котенкова — эксперта по нейронным сетям и моего постоянного соавтора по этой теме. Я же в данном случае только немного помог ему с редактурой (и без того, надо признать, прекрасно написанного текста). Короче, заварите себе чайку и приятного вам чтения!

В середине февраля в мире AI произошло много событий (1, 2, 3), но все они были затмлены демонстрацией новой модели OpenAI. На сей раз калифорнийская компания удивила всех качественным прорывом в области генерации видео по текстовому запросу (text-2-video). Пока другие исследователи старались довести количество пальцев на руках сгенерированных людей до пяти (а члены гильдии актёров противостояли им), в OpenAI решили замахнуться на короткие (до минуты), но высококачественные и детализированные ролики — и, чёрт возьми, у них получилось!

Кадры из сгенерированного семпла. Вы же читаете текст статьи, а не смотрите на девицу в красном, верно?

Немного контекста: о чем мы будем говорить

OpenAI — одни из немногих, кто умеет презентовать технологию так, что обычным пользователям, далёким от AI (Artificial Intelligence, или ИИ — искусственный интеллект), сразу становится ясно: дело серьёзное. Во многие релизы Google DeepMind или Facebook AI Research сложно вникнуть, а тут смотришь — и рот невольно открывается. Просто поглядите на проработанность деталей, на физику мира, на чёткость картинки! Каждый кадр в этом видеоряде — сгенерирован от и до, и нет никакой постобработки!

Те из вас, кто запрыгнул в поезд хайпа после релиза ChatGPT и начал следить за областью AI, наверняка помнят смешные генерации с Уиллом Смитом, поглощающим спагетти. По крайней мере, именно этой нарезкой все блогеры демонстрируют прогресс моделей генерации видео за 11 месяцев.

Даже сам Уилл в итоге записал смешную пародию на эту видео, которую некоторые всерьез приняли за «наглядный пример того, как улучшилось качество нейросеток»

Достигнутая за столь короткий срок разница, конечно, поражает, но не обманывайтесь: это не совсем честное сравнение. И уж тем более не нужно экстраполировать темп изменений в будущее. Используемая модель была опубликована исследователями AliBaba 19 марта 2023 года, а само видео появилось на Reddit 28 марта — и аккурат между этими датами компания Runaway хвасталась новой моделью Gen 2: оригинальное видео с демонстрацией доступно вот тут, а ниже представлена пачка полностью сгенерированных сцен.

Не нолановская картинка, но уже заметен потенциал!

И вот уже от этой точки имеет смысл отталкиваться при оценке прогресса — так нам удастся избежать ловушки низкого старта. Получается, и результат был чуть раньше, и качество значительно лучше — удивительно, кто-то в сети снова оказался неправ...

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

Цель такого симулятора — помочь решить проблемы, требующие взаимодействия с реальным миром. Не верите? Звучит слишком фантастично? Но даже официальный блогпост OpenAI называется «модели генерации видео как симуляторы мира» («Video generation models as world simulators»)! Сам же пост заканчивается следующей фразой:

Ведущий разработчик проекта SORA 2 на рабочем месте
Ведущий разработчик проекта SORA 2 на рабочем месте

Звучит как-то... антиутопично, не находите? В «Матрице» вот тоже симулировали мир людей, объектов в нём, различных взаимодействий. Но зачем это OpenAI — неужели не хватает энергии для подпитки серверов, и нужно разработать биологическую человекоподобную батарейку? Нет, основная причина — это уверенность в том, что понимание и симуляция мира являются важными вехами на пути создания Artificial General Intelligence (AGI, сильный искусственный интеллект), что, в свою очередь, является главной целью компании. Причём, эта цель остаётся неизменной с 2015 года — тогда некоторые учёные даже смеялись над самой постановкой, ибо об AGI было не принято говорить. Сейчас, когда в США вводят запрет на регистрацию патентов на изобретения, разработанных «не реальными людьми», уже не так смешно.

И всё-таки, где тут связь? Как видео-фотошоп на максималках может помочь? Существуют ли подтверждения — естественные биологические или искусственные — что симуляции работают и помогают? Насколько они связаны с реальным миром? Можно ли научиться чему-то, летая в мечтах? И зачем OpenAI обращается к ближневосточным суверенным фондам? На эти и многие другие вопросы я постараюсь ответить в нашем увлекательном путешествии! Но начнём издалека, с самых-самых основ. Сначала эти куски пазла могут не склеиваться у вас в голове в одно целое, но уверяю — в конце всё точно встанет на свои места!

Да кто такие эти ваши «модели мира»?

Мозг развитого примата — вещь достаточно сложно устроенная. Нужно и делать огромное количество работы, и при этом тратить мало энергии. И чтобы справиться с огромным количеством информации, ежедневно проходящим через нас, мозг анализирует данные и находит закономерности. В результате люди вырабатывают ментальную модель мира (которая как бы объясняет его — как этот мир устроен, и как должен реагировать на взаимодействие с ним). Решения и действия, которые мы принимаем, в той или иной степени основаны на этой внутренней модели.

Но что куда более важно — существуют доказательства, что наше восприятие в значимой степени определяется будущим, предсказанным нашей внутренней моделью мира. Мозг — это предиктор. Интересующиеся могут почитать вот эту или эту статьи, а мы рассмотрим простой пример: бейсбол. У отбивающего есть 350-400 миллисекунд с момента подачи, чтобы отбить мяч — чуть больше, чем время моргания! И причина, по которой человек вообще может среагировать на мяч, брошенный с расстояния 18 метров со скоростью 160 км/ч, связана с нашей способностью инстинктивно предсказывать, куда и когда он прилетит. У профессиональных игроков все это происходит подсознательно. Их мышцы срабатывают рефлекторно, позволяя бите оказаться в нужном месте и в нужное время, в соответствии с предсказанием их модели мира — потому что времени на осознанное планирование попросту нет.

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

Итак, модель мира — это выработанное внутреннее представление процессов окружающей среды, используемое агентом для моделирования последствий действий и будущих событий. Агентом в данном случае называется некоторая сущность, способная воспринимать мир вокруг и воздействовать на него для достижения определенных целей — человек или кот подпадают под это определение. Для домашнего животного «утро + громкое протяжное мяуканье = хозяин покормит» — вполне себе одно из выученных правил среды, в которой оно существует. Модель обобщается на новые и ранее неизвестные наблюдения, по крайней мере у живых организмов.

В 1976 году британский статистик Джордж Бокс написал знаменитую фразу: «Все модели неправильны, но некоторые из них полезны». Он имел в виду, что мы должны сосредотачиваться на пользе моделей в прикладных сценариях, а не бесконечно спорить о том, является ли модель точной («правильной»). Этот девиз находит своё отражение в жизни: наш мозг часто «лагает» и неправильно угадывает, казалось бы, очевидные вещи. И даже в точных науках — физики до сих пор не могут описать Теорию всего, и довольствуются аж четырьмя отдельными типами взаимодействия элементарных частиц! И ничего, живём как-то. И именно с цитатой доктора Бокса вам предлагается пройти путь до конца статьи :) Она задаст правильный настрой для восприятия информации.

Латентные пространства неизведанных миров: ныряем внутрь мозга

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

Схематичное изображение эксперимента
Схематичное изображение эксперимента

Сильно упрощая, сигнал, фиксируемый аппаратом, будет сохранён как набор чисел, из которого мы будем пытаться реконструировать изображение — прям настоящее чтение мыслей, но без магии. Сейчас самым передовым способом является — приготовьтесь — подача этих чиселок во вторую половину модели Stable Diffusion. Да, ту самую, которой все в интернете генерирут изображения сказочных вайфу и дипфейки. Всё дело в том, что эта модель уже обучена реконструировать изображения из так называемого «латентного представления» (это промежуточное состояние, с которым работает модель). Давайте для простоты посмотрим на примере:

Настоящее предназначение OpenAI SORA: как и зачем симулировать «Матрицу» для ChatGPT

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

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

Сверху оригинал, который видел человек, снизу реальная реконструкция по сигналу мозга, считанному фМРТ. Вот <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fsites.google.com%2Fview%2Fstablediffusion-with-brain%2F&postId=2519087" rel="nofollow noreferrer noopener" target="_blank">сайт проекта</a>, и там же — статья с более детальным объяснением.
Сверху оригинал, который видел человек, снизу реальная реконструкция по сигналу мозга, считанному фМРТ. Вот сайт проекта, и там же — статья с более детальным объяснением.

Мозг не видит изображения, он оперирует в пространстве сигналов, получаемых и преобразуемых сенсорной системой, и в нём же строит удобную ему модель мира. Это менее очевидно для зрения, так как вы прямо сейчас смотрите на этот текст и видите его в реальном мире. Но на самом деле это реконструкция сигнала в вашей голове — иногда она барахлит, и могут возникать галлюцинации, неотличимые от реальных, потому что мозг уверен, что он что-то видит.

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

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

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

Давайте для демонстрации игрушечной модели мира запустим компьютерную игру: гонки с видом сверху.

Вспоминаем девяностые и несёмся им навстречу на полной скорости!

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

Реальное изображение (слева) подаётся в обученный энкодер, после чего полученный латент реконструируется декодером в картинку справа. Процесс повторяется для каждого отдельного кадра.

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

Занятно, что мы можем манипулировать числами в латенте и смотреть, как они влияют на «восприятие» — для этого их нужно декодировать, как бы отвечая на вопрос: «Что было бы видно, если мы считаем вот такой сигнал?».

Слева — оригинал из игры, по центру — латент, значения в котором мы вручную изменяем. Справа представлена реконструкция с применением декодера. Видно, как одна из нижних настроек полностью ломает мир игры и геометрию трассы.

Это уже интересно! На людях схожий опыт не проводили, однако контролировать тараканов электрическими стимулами можно даже сейчас. Только если гринписовцы спросят — я вам не говорил.

Добавляем агентности

Теперь сделаем чисто технический шаг. У нас есть «сигнал от сенсорной системы» (но в терминах компьютеров), и мы можем попытаться обучить бота играть в игру. Цель в гонке — проехать как можно больше клеточек по дороге, не съезжая на газон. Время ограничено, как и максимальная награда, поэтому чем лучше бот будет держаться на трассе — тем выше мы его оценим.

Не будем вдаваться в подробности обучения такой нейросети, а просто рассмотрим саму систему. Сначала изображение из «мира» игры попадает в энкодер, после чего он кодирует картинку в 15 чисел. Затем на основе этих чисел мы строим простое уравнение, которое указывает, стоит ли машинке ускоряться, тормозить, или поворачивать влево-вправо (то есть, по 15 числам на входе нам нужно более-менее оптимально предсказать 4 числа, которые отвечают за «дергание руля» и педали газа/тормоза).

Подаваемое в энкодер изображение трассы преобразуется в короткий числовой сигнал (латент). Нейронка («мозг») учится понимать, как нужно управлять машинкой в зависимости от подаваемого сигнала — так, чтобы по итогу рулить не хуже Михаэля Шумахера.
Подаваемое в энкодер изображение трассы преобразуется в короткий числовой сигнал (латент). Нейронка («мозг») учится понимать, как нужно управлять машинкой в зависимости от подаваемого сигнала — так, чтобы по итогу рулить не хуже Михаэля Шумахера.

Под капотом выучивается стратегия в духе «если первое число такое-то, а второе сильно больше нуля, и..., то нужно скорее поворачивать направо». Нейрока поняла, что на такой сигнал нужно реагировать вот так, а на иной — совсем иначе. Как итог, бот вроде и будет ориентироваться на гоночной трассе, и средне управлять машинкой. Легко заметить, что он раскачивается туда-сюда и часто не вписывается в крутые повороты.

Так, на этом этапе у нас пока всё-таки вместо Михаэля Шумахера получился бухой сосед Михал Палыч без водительских прав...

И что, это и есть картина мира?

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

Без понимания истории трудно сказать с уверенностью, что нам делать дальше — то ли это начало гонки и надо разгоняться; то ли мы, наоборот, на полной скорости летим в кусты и надо тормозить?
Без понимания истории трудно сказать с уверенностью, что нам делать дальше — то ли это начало гонки и надо разгоняться; то ли мы, наоборот, на полной скорости летим в кусты и надо тормозить?

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

Давайте это исправим. Добавим отдельную модель, которая учится предсказывать, что ждёт в будущем. Причём, предсказывается не следующий кадр (откуда? мозг его не видит), а следующий латентный вектор (который соответствует тому, как бы мозг закодировал в свой внутренний сигнал восприятие этого следующего кадра реальности). По сути, модель отвечает на вопрос «с учётом текущего состояния и действий, которое я предпринимаю — каким будет следующее полученное состояние окружения?».

Берём картинку, получаем латент, добавляем действие — и пытаемся угадать, что будет дальше (новый латент). Затем перемещаемся немного в будущее, смотрим, что получилось, совпала ли новая реальность с ожиданием. Если нет — корректируем нашу картину мира.
Берём картинку, получаем латент, добавляем действие — и пытаемся угадать, что будет дальше (новый латент). Затем перемещаемся немного в будущее, смотрим, что получилось, совпала ли новая реальность с ожиданием. Если нет — корректируем нашу картину мира.

Итого в системе есть 3 отдельных части:

  • Автокодировщик с энкодером и декодером (2 половинки одного целого), помогающие сжимать изображение и производить деконструкцию из латента.
  • Модель предсказания следующего латента. Хоть это и не отображено на картинке, но сам латент немного изменился — к нему добавился вектор внутреннего состояния (к 15 числам приписали ещё несколько). Он выступает в роли накопителя опыта, или подсознательной памяти, помогая разбираться, что происходило в предыдущие пару секунд. Мы не задаём ему никаких ограничений, лишь просим быть максимально полезным в задаче предсказания ближайшего будущего — что «запомнить» модель решает сама. В данном случае логично предположить, что туда сохраняется скорость, динамика её изменения (тормозим или разгоняемся), совершался ли недавно поворот, и так далее — всё то, что поможет угадать будущее.
  • Обучаемый бот, который видит только латенты и делает по ним выводы.

Ииии... предложенный метод моделирования будущего позволил двум учёным, Дэвиду Ха и Юргену Шмидхуберу, обучить пачку ботов, которые являлись лучшими в разных играх — от гонок до стрелялок. Такие модели мира, как они их назвали, опираются на наблюдения за процессом работы мозга человека, и все эти предисловия и примеры были приведены не для красного словца.

О, стало сильно лучше: уже заметен существенный прогресс на пути от Михал Палыча в алкогольном делирии к высококлассному Шумахеру, согласитесь?

Но, возможно, вы задаётесь вопросом — как блин это всё связано с OpenAI SORA? Мы же начали с генерации видео! И вообще насколько полезен такой подход — может, вне гоночек он и не работает вовсе? Что ж, тут пора заметить, что SORA генерирует кадры видео последовательно, учась отвечать на вопрос: «что же будет дальше для вот такой картинки»? И — вы не поверите — делает она это тоже в латентом пространстве, только своём, в котором куда больше 15 цифр.

В предыдущей статье мы рассказывали о том, как тренируется ChatGPT — предсказывая по цепочке каждое следующее слово в длинном тексте. Упрощенно можно сказать, что похожим образом действует и SORA, предсказывая каждый следующий кадр в видео-последовательности. (На самом деле, там всё чуть сложнее: каждый кадр еще внутри нарезается на небольшие «ошметки», размерами условно 32х32 пикселя, и эти кусочки тоже генерируются один за другим — но нам на такой уровень деталей сейчас погружаться нет необходимости, оставим это для другого раза.)

Мечтает ли машинка о поворотах?

Теперь вернёмся на шаг назад и подумаем вот о чём. В нашей системе появилась отдельная модель, которая предсказывает латент, соответствующий следующему наблюдению (следующему кадру игры или видео). А наш бот не опирается ни на что другое, как на этот самый латент (плюс внутреннее состояние, но оно обновляется само по себе во время игры).

Давайте сделаем сумасшедшее: отключим игровой движок, который задаёт нам правила игры, и пустим обученного бота играть в своих «фантазиях». Фантазией тут называется предсказание ментальной модели мира о будущем: что могло бы произойти, если бы вот в этой ситуации я бы сделал так. В таком случае нам не нужен энкодер — потому что латент мы получаем через предсказание модели мира, а декодер по сути нужен только для того, чтобы нам самим подсмотреть, что происходит — бот на это никак не опирается. Он играет исключительно «в своей голове» и сам с собой, на циферках (красивая картинка ему для этого ни к чему).

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

Похоже на бред, который не сработает? Давайте проверим, а заодно подключим декодер для визуализации происходящего:

Слева снизу можно увидеть предсказания бота для управления машинкой (влево или вправо двигаться, нужно ли ускоряться).

Не напоминает ваши сны? Общие черты «реального» мира прослеживаются, а действия и вправду влияют на то, что происходит вокруг: машинка может проехать поворот. Но какие-то части среды всё же выглядят размыто. И всё это симулировано выученной моделью мира. Нейронка просто наблюдала за тем, что происходит в игре при тех или иных обстоятельствах, с учётом действий водителя машинки, и теперь сама выступает в качестве игрового движка.

Иными словами, модель мира = симулятор. Запомнили. На каждом шаге игры мы считаем, что случилось то, что предсказала эта модель, и движемся дальше. И мы с вами только что увидели, что бот, обученный в реальной игровой среде, в большей степени функционирует и в среде «фантазий». Возникает вопрос: можем ли мы обучить агента внутри симуляции так, чтобы можно было перенести его навыки обратно в реальный мир?

Опускаемся на уровень глубже: Дум — крута!

Но вы поди уже устали смотреть на какие-то пиксельные машинки и гоночки, давайте возьмём что-то крутое. Как гласит культовая фраза, Дум — круто! Поэтому слегка сменим обстановку, и переместимся в новое игровое окружение с новыми правилами.

Дум — крута!
Дум — крута!

Дум — это 3Д-экшон, суть такова... здесь взята урезанная игра с понятной задачей: продержаться в комнате с монстрами-импами как можно дольше. Можно перемещаться влево-вправо, чтобы уклоняться от огненных шаров, запускаемых монстрами в другом конце комнаты. Чем больше времени продержишься — тем лучше.

Наконец-то запустили дум не только на мобилках и холодильниках, но и на ПДФ

Первым делом необходимо переобучить энкодер-декодер, а затем — модель мира. Мы уже детально обсудили, как это делать. Единственным изменением является то, что помимо следующего состояния мы также предсказываем нолик или единичку — в зависимости от того, закончилась ли игра (если вдруг в игрока попал огненный шар). Если мы хотим тренировать бота полностью в симуляции, то как иначе нам понять, что game is over?

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

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

Сорри за мыльную картинку: именно так выглядит игра «в фантазиях» нашей нейросетки, а не на реальном движке

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

Plot twist: пересаживаемся в «реальный мир»

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

Сколько этот бычара смог продержаться не в своих мечтах, а на деле? Смог вывезти за базар? Ну, да — в реальной игре он продержался в среднем 1092 кадра (даже больше, чем в симуляции). Это большой скачок по отношению к другим методам обучения — на тот момент лучшим считался результат 820 кадров.

То есть, обучение в симуляции не то что просто кое-как перенеслось на настоящую «жизнь» (игру, которую мы симулировали), а сделало это с сохранением качества, да вдобавок еще и показало себя лучше других методов. Где-то тут полезно бы вспомнить, что новую модель SORA для генерации видео в OpenAI называют симулятором миров... но до этого мы ещё дойдем. А то вдруг окажется, что на примитивных игрушках это всё работает, а реальная-то жизнь она ж совсем не такая?

А пока вернёмся к примеру с машинкой. Может быть он вас не впечатлил? Тоже игрушка ведь. Ну едет и едет по симулированному треку, чего бубнить. Но что, если я скажу вам, что стартап Wayne, занимающийся разработкой автопилотов, ещё в далёком 2018 году опробовал метод на реальном транспортном средстве? И вот что у них получилось:

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

А вот визуализация подглядывания в эту симуляцию (напомню, созданная через декодер латентного представления модели). Белая часть по центру каждого прямоугольника, если вдруг плохо видно — это дорога, а её дёргание туда-сюда имитирует возникновение поворота (прямо как в 2D-игрушке). Представьте, если б вместо этой модели была ультрамегареалистичная SORA...

Но не всё так радужно с симуляциями

Мы уже упомянули выше, что симуляции неидеальны: в Doom неправильно (непоследовательно) отображается количество врагов во времени. Но есть и куда более серьёзная проблема. Поскольку используемая модель мира является лишь приближением среды, то иногда она выдаёт состояния, которые не соответствуют правилам, задаваемым окружением. По этой причине бот, обучающийся в фантазиях, может наткнуться на неточность и начать её эксплуатировать. В примере с Doom это может выглядеть так:

То чувство, когда запустил в игре настолько «изи мод», что враги даже забыли тебя атаковать

Здесь бот нащупывает такое состояние, в котором симуляция не считает нужным запускать огненные шары в игрока — а значит, и умереть нельзя. И это может оказаться как просто мелким недостатком при переносе в реальную игру (или, тем более, мир), так и критической уязвимостью, приводящей к непредсказуемому непонятному поведению. Если мы будем учить автопилоты для реальных дорог в симулированной среде — лучше удостовериться, что пешеходы там не умеют телепортироваться на пару метров в сторону, когда возникает риск сбивания их машиной.

Причин неидеальности симуляции можно выделить две: недостаток данных для конкретной ситуации (из-за чего возникает «дырка» в логике симулятора) и недостаточная «ёмкость» обучаемой модели мира.

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

Агент слева оказался настолько любознателен, что подсел на иглу телевидения. У бота справа телевизора в лабиринте попросту не было, поэтому он успешно выбрался. Вывод: если хотите спрятать сокровища — оставьте в лабиринте телевизор.

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

Все остальные способы, хоть иногда и могут сработать (взять более чистые данные/выбрать другую архитектуру модели/и т.д.), но имеют свои ограничения, а главное — могут перестать работать. Для больших нейронных сетей (в том числе и языковых моделей вроде ChatGPT) уже пару лет как вывели эмпирический закон, который показывает, насколько вырастет качество при увеличении потребляемых при тренировке ресурсов. Это называется «закон масштабирования».

Нужно БОЛЬШЕ ВИДЕОУСКОРИТЕЛЕЙ!

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

Вернёмся к ранее упомянутому стартапу Wayne, продолжающему заниматься беспилотными автомобилями. Они всё ещё фокусируются на создании моделей мира как вспомогательном инструменте обучения алгоритмов (прямо как OpenAI). В прошлом году они представили свою модель GAIA-1, которая... тоже была обучена предсказывать будущие кадры в видео. На видео ниже вы можете увидеть сравнение ранней модели, обученной летом 2023 года, с более поздней, на которую потратили существенно больше ресурсов («отмасштабировали»).

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

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

Вуаля, теперь можно обучать модель автопилота в симуляции, порождаемой «фантазией» модели мира, без выезда на реальную дорогу с риском для водителей, и при этом инсценировать любые желаемые сценарии. Однако нейронке есть куда расти: на её обучение потратили ресурсов в 100 раз меньше, чем на одну из лучших доступных языковых моделей LLAMA-2-70B от META (ex-Facebook, на территории РФ признана экстремистской), и приблизительно в 2000 раз меньше, чем (по слухам) OpenAI потратили на GPT-4 — самую лучшую Large Language Model (LLM) на данный момент. Представляете, какой потенциал для улучшений? (Конечно представляете — просто посмотрите на OpenAI SORA!)

Единственная разница между сгенерированными видео — количество вычислительных мощностей, потраченных на обучение SORA. На демонстрацию справа суммарно было использовано в 32 раза больше ресурсов, чем на жутенькую The Thing слева.

Есть ли модели мира у LLM?

Ну, раз уж мы заговорили про большие языковые модели, то давайте сделаем отступление и попробуем разобраться: а есть ли модель мира у них. С одной стороны, зрением они не обладают, лишь читают текст в интернете, а с другой — ну что-то же они должны были выучить? Сразу после этого блока мы перейдем к модели SORA, с которой всё и начиналось, и в целом вы можете пропустить эту часть без потери смысла — но мимо вас пройдёт столько всего интересного!

Примерно 95–98% ресурсов тренировки больших языковых моделей тратится на обучение задаче предсказания следующего слова в некотором тексте. Под «некоторым» здесь подразумевается почти любой текст на сотне языков, доступных во всём интернете. Там есть и Википедия (как база знаний и фактов), и учебники по физике, описывающие принципы взаимодействия объектов (включая силы гравитации), есть детективные истории, и много чего вообще. Каждый раз модель смотрит на часть предложения и угадывает следующее слово. Если она сделает это правильно, то обновит свои параметры так, чтобы закрепить уверенность в ответе; в противном случае она извлечет уроки из ошибки и в следующий раз даст предсказание получше.

Префиксы — это примеры некоторых контекстов из интернета. Далее идут потенциальные варианты продолжения (то есть следующего слова, которое нужно предсказать).
Префиксы — это примеры некоторых контекстов из интернета. Далее идут потенциальные варианты продолжения (то есть следующего слова, которое нужно предсказать).

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

OpenAI в этом плане двигались постепенно — первые проверки гипотезы о том, что языковая модель при обучении строит модель мира, помогающую ей успешно предсказывать следующее слово, были ещё до GPT-1. Исследователи предположили, что если взять достаточно большую по тем временам модель, и обучить её на 40 Гигабайтах отзывов с Amazon (при этом не показывая, какой рейтинг оставил пользователь — только текст), то скорее всего нейросеть сможет сама «изобрести» внутри себя концепцию сентимента. Иными словами, она сможет определять, является ли отзыв позитивным или негативным. С учётом того, что в явном виде мы никак эту информацию не сообщаем — было неочевидно, получится ли разобраться со столь сложной и абстрактной вещью, которая существует только у нас в голове: сентимент текста. Ведь это не природное явление, не закон физики — это то, как мы, люди, придумавшие свои искусственные языки, воспринимаем информацию.

Сказано — сделано. В OpenAI обучили модель, а затем рассмотрели её латент (да, там тоже модель сначала сжимает текст в понятные ей сигналы, а затем переводит его обратно в текст) под микроскопом. Так же, как мы пытались крутить 15 чиселок латента на гифке с игрушечной трассой, исследователи пытались найти такой параметр (из 4096 разных, если вам интересно), который был бы связан с сентиментом. И, как уже должно быть понятно, нашли!

Но как для текста можно понять, что вот, скажем, семнадцатая цифра в нашем латенте отвечает за сентимент? Пробуется два способа: это анализ зависимости значения от входной последовательности (текста отзыва), и сентимента генерируемого текста (= «фантазии» модели) от этого же значения. Мы как бы отвечаем на два вопроса: «Правда ли значение предсказуемо меняется из-за отзыва?» и «Правда ли, что модель опирается на это значение, то есть, сгенерированный отзыв меняется из-за значения в латенте?»

Сначала про первое. Давайте возьмём тысячи отзывов, но уже не с Amazon, а с американского аналога Кинопоиска, IMDB. Для каждого из них определим, являются ли они позитивными или негативыми. Затем будем подавать эти отзывы в модель (грубо говоря использовать энкодер для получения латента, хоть в языковых моделях это устроено чуть иначе) и смотреть, как меняется найденная цифра. Можно сделать визуализацию в виде гистограмы, на которой отзывы с разным сентиментом окрашены в разные цвета.

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

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

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

Результаты генерации. Зелёным выделены позитивные части отзывов, красным — негативные.
Результаты генерации. Зелёным выделены позитивные части отзывов, красным — негативные.

И ровно это учёные и обнаружили — при генерации ответ модели существенно меняет свой окрас в зависимости от лишь одной цифре в латенте. Но главная фишка в том, что мы не давали модели никакого понимания, что такое сентимент, и какими словами он выражается — вообще ничего, кроме кучи текстов. И всё же для модели мира оказалось удобнее (выгоднее?) кодировать данные так, чтобы сентимент легко разделялся, и им можно было управлять.

Этот игрушечный пример послужил толчком для OpenAI к развитию идей в модели GPT-1, а GPT-2 и 3 были дальнейшим масштабированием: больше модель, больше текстов, и как следствие более полная картина мира, выработанная внутри нейросети. Поскольку теперь кроме отзывов мы показываем тексты вообще про всё на свете, от комментариев на Дваче до учебника по физике, то модель выучивает огромное количество вещей, не только простой сентимент.

Очень сложно оценить наперёд, насколько комплексной и многогранной будет модель, и что будет зашито в её модель мира. Бывают комичные случаи: знакомьтесь, Ян Лекун, лауреат премии Тьюринга (аналог Нобелевки в компьютерных науках) за вклад в область нейронных сетей. За это его ещё называют одним из трёх крёстных отцов искусственного интеллекта. В настоящее время является вице-президентом по AI в компании META. Кажется, уж он-то точно хорошо разбирается в предмете?

Те самые трое крёстных отцов AI (Ян Лекун справа). Вообще говоря, к настоящему моменту они между собой немного все разосрались, но это уже совсем другая история...
Те самые трое крёстных отцов AI (Ян Лекун справа). Вообще говоря, к настоящему моменту они между собой немного все разосрались, но это уже совсем другая история...

В подкасте Лексу Фридману от 23 января 2022 года Ян говорил: «Я не думаю, что мы можем научить машину быть разумной исключительно на основе текста, потому что я думаю, что объем информации о мире, содержащейся в тексте, ничтожен по сравнению с тем, что модели нужно знать. Вы знаете, что люди пытались сделать это в течение 30 лет, верно? <...> Я думаю, что это в принципе безнадежно, но позвольте мне привести пример. Я беру предмет, кладу его на стол и толкаю стол. Для вас совершенно очевидно, что предмет будет двигаться вместе со столом, верно? Потому что он на нём лежит. Но в мире нет текста, объясняющего это! И поэтому, если вы тренируете машину, настолько мощную, насколько она может быть, например, ваш GPT-5000 или что-то еще, она никогда не узнает эту информацию. Этого просто нет ни в одном тексте».

Менее чем через год вышла ChatGPT (GPT-3.5), которая...правильно отвечала на этот вопрос. Ну ладно, ошибся дядька, наверное, где-то в учебниках физики был схожий пример. Когда в Твиттере ему за это предъявили, то он придумал новую мега-супер-сложную задачку. Сейчас-то наверное подготовился? Не стал щадящие примеры выбирать? Он выбрал задачку с шестерёнками... которую модель решила сходу, сразу же.

Тогда через месяц он придумал усложнение: «7 стержней равномерно распределены по кругу. На каждом стержне установлена шестерня, так, что она находится в сцеплении с шестернями слева и справа. Шестерёнки пронумерованы от 1 до 7 по кругу. Если бы третья шестерня была повернута по часовой стрелке, в каком направлении вращалась бы седьмая?». Родители с детьми в начальной школе уже словили флешбеки от домашки по физике, но теперь они хотя бы узнают, что... GPT-4 и на такой вопрос даёт правильный ответ.

На размышление даётся 30 секунд. Пишите в комментах, кто оказался умнее — вы или GPT-4?
На размышление даётся 30 секунд. Пишите в комментах, кто оказался умнее — вы или GPT-4?

GPT-4 вообще удивила многих. Вот как думаете, можно ли ответить на такой вопрос к следующей картинке, не понимая физику нашего мира, не моделируя взаимодействия объектов? Что произойдет с мячиком, если перчатка упадёт?

GPT-4 может принимать текст вместе с изображением, и умеет отвечать на вопросы, требующие визуальной информации. Тут модель правильно предсказала, что мячик подлетит наверх.
GPT-4 может принимать текст вместе с изображением, и умеет отвечать на вопросы, требующие визуальной информации. Тут модель правильно предсказала, что мячик подлетит наверх.

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

Конечно, модель могла не «понять» физику и уж тем более не строить модель мира, а быть обученной на таких же или уж очень похожих задачах. Однако я уже со счёта сбился от количества примеров с вопросами про очень специфичные и даже закрытые штуки, которые публикуют пользователи, но для которых, тем не менее, GPT-4 даёт адекватные ответы. Один, два, три раза — можно списать на запоминание, но были случаи...

И даже у столь мощной GPT-4 модель мира всё еще не идеальна, и то и дело приводит к глупым ошибкам. «Все модели неправильны, но некоторые из них полезны», помните?

OpenAI SORA: эмулятор Вачовски или симулятор мира?

Наконец, переходим к десерту. Такое длинное вступление было необходимо для того, чтобы наглядно продемонстрировать читателю крайне важные в контексте новой модели OpenAI тезисы:

  • Модели мира помогают агенту принимать решение с учётом информации о возможном будущем
  • Для того, чтобы успешно предсказывать будущее состояние, важно понимать лежащие в основе формирования среды процессы
  • Модели мира строят предсказания не в привычном нам виде, а в понятном им мире преобразованных сигналов (латентное пространство)
  • Мы можем заглянуть внутрь, но реконструкция не будет идеальной
  • Бот, обученный в симулируемой моделью мира сцене, может проявлять навыки и в реальной среде
  • Масштабирование модели всегда приносит улучшения, при этом многие из них неочевидны и сложнопредсказуемы

И вот теперь, когда мы разобрали концепцию моделей мира и посмотрели, для чего они могут использоваться, мы будем смотреть на примеры и пытаться понять, а в чём же именно ВАУ-эффект модели SORA. Она, как и GPT-4, выработала внутри себя какую-то модель мира, помогающую предсказывать следующий кадр в огромной разнообразной выборке всевозможных видео. Рендеринг финального изображения — это лишь реконструкция того, что предсказывает модель (потому что мы смотрим на это через призму декодера; хоть он и достаточно мощный, но имеет свои недочёты).

Пример, которым OpenAI решили похвастаться и вывести в начало своего блогпоста, вы уже видели в превью статьи. Это одноминутное FullHD @ 30 к/сек. видео, сгенерированное по текстовому запросу (промпту): «Элегантная женщина идет по улице Токио, озаренной теплым светом неоновых огней и анимированных городских вывесок. На ней черная кожаная куртка, длинное красное платье и черные ботинки, в руке черная сумочка. Она в солнцезащитных очках и с красной помадой. Шагает уверенно и непринужденно. Асфальт улицы мокрый, отзеркаливающий яркие огни. Вокруг ходит множество пешеходов.»

Во-первых, сложно не заметить точнейшее соблюдение всех деталей промпта в сгенерированном видео. Даже если сильно захотеть — разве что субъективные «элегантная женщина» и «шагает уверенно» можно подвергнуть сомнению, но, по-моему, модель справилась отлично. В этом заслуга специального приёма, использовавшегося OpenAI при разработке их предыдущей модели, DALL-E 3 (делает генерацию изображения по текстовому запросу, как MidJourney).

Так как зачастую текстовые подписи к картинкам и роликам в интернете очень короткие и несут лишь поверхностное (а иногда и неточное) описание происходящего, исследователи предложили применить умницу GPT-4 для генерации более подробных описаний. Для этого видео нарезалось на кадры, и языковая модель получала команду создать детальные подписи к происходящему в нескольких подряд идущих изображениях. Текстовые комментарии выходят не в пример длиннее, с большим количеством нюансов, поэтому обученная text-2-image или text-2-video модель гораздо охотнее обращает внимание на запрос, пытаясь соответствовать каждой его частичке. Даже лучшие платные аналоги моделей еле-еле оперируют двумя, самый край тремя предложениями — а тут мы нагрузили деталей на 5 строчек! Для DALL-E 3 процент синтетических текстов был 95%, вероятно, в SORA плюс-минус такой же.

Во-вторых, общий визуал существенно превосходит ожидания от моделей на данный момент. В Твиттере даже шутят, что «это был невероятный год прогресса AI... за один час». Тут сложно не согласиться, особенно если последнее демо, что вы видели — это Уилл Смит со спагетти из начала статьи. Но в сцене, кажется, учтено почти всё. Если заведомо не знать, что это генерация и не ждать подвоха — сразу и не скажешь. Освещение, отражения, толпа людей, переход на ближний план с детализацией текстуры кожи, плавность перемещения камеры с соответствующим изменением углов обзора на объекты в фоне. А те объекты, что пропадают из поля зрения на несколько секунд (люди сзади, синий дорожный знак на стене справа), возвращаются без изменений — такой консистентности во времени раньше и не мечтали добиться!

Моя модель мира предсказывает, что этот карандаш пропадёт из поля зрения через пару секунд. И... <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fyoutu.be%2F0VYJTKDzhYU&postId=2519087" rel="nofollow noreferrer noopener" target="_blank">он испарился</a>!
Моя модель мира предсказывает, что этот карандаш пропадёт из поля зрения через пару секунд. И... он испарился!

В-третьих, давайте поговорим про недостатки. Я пересмотрел видео около десятка раз, и самые заметные изменения происходят, если сравнивать начало и конец. На секундах с 55 по 59 вы можете заметить, что: 1) из рук пропадает чёрная сумочка; 2) левый лацкан куртки стал аномально большим (и даже испортил симметрию), да и правый прибавил в размере; 3) на красном платье на груди появляются чёрные пятна; 4) меняется причёска, появляется завихрение волос. Есть и комичные проблемы — обратите внимание, как левая нога превращается в правую (и наоборот) на секундах 15 и 29. И как после такого заснуть? А на секундах 16–17 ноги группы людей слева (парень, проходящий мимо двух азиаток в масках) будто бы окутаны водным шаром и очень расплывчаты.

Важно отметить, что часть этих проблем наверняка лежит на неидеальности реконструкции декодера, а часть — на проблемах с моделью мира. А может быть, собака зарыта где-то ещё, мы не знаем. Дело осложняется тем, что ни у кого, кроме OpenAI и их доверенных лиц, нет доступа к нейросети, чтобы это можно было проверить. Помните, как в эксперименте с числом в латенте, влияющим на генерацию отзыва? Тогда исследователи могли однозначно проверить, что будет, если его дёргать туда-сюда, здесь же подобного анализа не производилось. И всё же сделаю смелое предположение и скажу, что пронумерованные проблемы из абзаца выше скорее всего являются недостатками модели мира (исчез объект? поменялась форма чуть ли не самого крупного объекта в кадре? как так?!), а вот проблемы с отображением ног — уже реконструкции (потому что энкодер и декодер не посчитали нужными кодировать информацию о двух ногах, находящихся рядом).

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

А так как информация не присутствует в модели мира и латенте, то и декодер не может грамотно восстановить картинку.
А так как информация не присутствует в модели мира и латенте, то и декодер не может грамотно восстановить картинку.

Но с этим связана и неожиданная хорошая новость! Раз модель мира не уделяет внимание такой детали, то и несоответствие картинки из декодированного видео настоящему миру не так критично. Ведь энкодер при сжатии видеопотока в латент для обработки (или симуляции) также опустит эти детали! В итоге, латент для реальной картинки и для «симулированной» будет почти одинаковым (хоть проблемы в реконструкции заметны невооружённым глазом). А значит наш бот, играющий в симуляторе, не заметит подвоха, и сможет потенциально оперировать в реальном мире. То, что может быть критично для создателей видеоконтента в силу неидеальности визуала, абсолютно не мешает основной цели модели SORA!

Поразительное качество рендеринга

Ну что-то мы с тобой, Нео, зациклились на одном видео с девицей в красном — давай пощупаем что-то ещё. Второе видео, на котором хочется сделать акцент, короче. За 9 секунд нам показывают вид от первого лица девушки, созданный коротеньким промптом: «Отражения в окне поезда, едущего по пригороду Токио».

Вы только посмотрите на эти отражения! Как объекты приобретают форму, когда за окном проносится тёмный столб, и затем снова превращаются в силуэт на стекле! И это при том, что за окном проплывает пригород, какие-то здания ближе и визуально движутся быстрее, а те, что поодаль, минимально меняют ракурс. Мы, люди, привыкли, что и в кино, и в реальной жизни всё это естественно, но даже для видеоролика сделать такую отрисовку с большим количеством объектов и отражениями — это надо постараться.

Этот и ещё пара примеров (1, 2 и даже 3) вообще заставили людей обсуждать гипотезу об использовании реального игрового движка для отрисовки изображения. И уж если оный не используется для предсказания в сложных сценах, то наверняка в нём генерировали обучающую выборку! Это, конечно, спекуляция, и однозначного ответа на вопрос у нас нет. Из всех технических деталей, представленных в блоге OpenAI, можно сделать вывод, что конкретно пиксели модель рисует сама (без опоры на условный игровой движок Unreal Engine 5) — исследователи даже констатируют, что этот навык появился исключительно при масштабировании модели.

Другие неожиданные сюрпризы SORA

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

Представляете, какое количество аспектов приходится учитывать модели мира? Ведь приходится моделировать поведение агентов (в данном случае — людей) и множество взаимодействий для каждого кадра. Но давайте изолируем задачу и сфокусируемся на ней: иногда SORA может имитировать простые действия, влияющие на состояние мира. В одном случае это изменение картины в местах, где полотна касается кисточка, а в другом бургер становится откушенным.

Опять же, выглядит естественно, мы даже не замечаем, мозг принимает это как должное. Но представляете сколько усилий пришлось бы прикладывать инженерам-программистам, чтобы все подобные взаимодействия прописать для какой-нибудь игры в мельчайших деталях? Да что там, люди до сих пор смотрят на ролик из Red Dead Redemption 2 ниже, и переживают, что уж ну вот с таким-то уровнем детализации мы никогда не увидим следующего творения Rockstar. А подборки в духе «200 невероятных деталей, которых нет в других играх!» даже спустя 5 лет после релиза заставляют игроков удивляться кропотливости разработчиков.

И раз уж мы заговорили про игры — а вы знали, что SORA как ультимативный симулятор миров может эмулировать... Minecraft?

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

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

Но почему бы просто не создать игру?

Вероятно, главный вопрос, который крутятся в голове технически подкованных читателей — это «Зачем здесь для создания модели мира нужна нейронка, когда можно просто взять игровой движок и сделать игру?». Давайте постараемся подискутировать и порассуждать.

Разработка обычно упирается в три тесно связанных фактора: размер команды, бюджет и срок разработки. Самые дорогие в производстве игры стоят порядка ~$300M, самыми детально проработанными называют игры Rockstar (это которые GTA делают). Пример такой игры я приводил выше, и вот даже после показа трейлера GTA VI интернет взорвался вниманием к деталям: вау, песок на пляже прилипает к ногам! Ого, как реалистично распыляется спрей! Невероятно, там есть ветер, который развевает волосы!

Самые большие фанаты уже покадрово разбирают трейлер следующей игры и строят теории. Уровень детализации впечатляет — от отражений на багажнике до прилипшего к ногам песка.
Самые большие фанаты уже покадрово разбирают трейлер следующей игры и строят теории. Уровень детализации впечатляет — от отражений на багажнике до прилипшего к ногам песка.

Но с ручной проработкой есть одна проблема: она плохо масштабируется. Даже при сроке разработки игры больше 5 лет количество мелких деталей, которые в неё можно было бы добавить, всё равно превышает реально имплементированное. Физика волос, тканей, одежды, жидкостей, снега, поведение животных и людей... это всё надо продумать и прописать.

Если задуматься, это всё то, за что мы могли бы похвалить SORA или в худшем случае её наследника SORA 2. Только вот для SORA 2 нам не нужно собирать команду в три тысячи разработчиков и пыхтеть 7 лет, а для игр мы очень сильно ограничены человеческим ресурсом. Количество и качество проработки сильно упирается в программистов (и способности ими руководить). С нейросетями, как было упомянуто, ситуация не такая: ты просто покупаешь больше видеокарт, делаешь модель покрупнее, и вуаля! Кто знает, какие детали начнут около-идеально симулироваться при увеличении модели ещё на порядок?

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

Но может игры не нужны, и достаточно обойтись реальным физическим миром? На самом деле, тут та же самая проблема — чтобы обучать модели нужны сотни тысяч, миллионы попыток. Те же боты в DotA 2 при обучении наигрывали 200-300 ЛЕТ опыта в сутки. Примерно то же происходило в AlphaGo, системе для настольной игры го от DeepMind: модель играла сама с собой тысячелетиями. Просто не в реальности. Так что для обучения интерактивного агента в реальном мире нам либо придётся долго ждать, либо строить целую армию терминаторов, что а) крайне затратно, и б) из-за развития технологий теряет актуальность, железо устареет быстрее. Проще закупить кластер видеокарточек, которые могут делать и обучение, и ещё десяток вещей в других областях. Опять масштабирование побеждает!

Опускаемся с небес на землю

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

В данном примере нейронка (и, вероятнее всего, выработанная ею модель мира) не точно воспроизводит физику многих основных взаимодействий — таких, как разбивание стекла или опорожнение стакана. Другие сложные взаимодействия (вроде потребления пищи) не всегда приводят к правильным изменениям состояния объектов. В длительных сценах возникает несогласованность, а также спонтанные появления или исчезновения объектов. Модель также может путать пространственные аспекты промпта (и даже право-лево не отличать).

Но зачем же тогда OpenAI сделали анонс и выложили кучу демок? Технология как будто бы не готова для производства видеоконтента, а модель мира у неё пока... не ясно, будет ли достаточной для обучения ботов в аналоге Матрицы. Во-первых, как написано на официальной странице: «мы делимся результатами нашего исследования на раннем этапе, чтобы начать обсуждение и получать отзывы от людей, не входящих в состав OpenAI, а также чтобы дать общественности представление о том, какие возможности искусственного интеллекта ожидают нас в будущем». А теперь и вы, прочитав эту статью, имеете более полную картину мира, понимаете, что и как делается, и к чему стоит готовиться. Компания пока не планирует предоставлять доступ к модели всем подряд — но уже начался период закрытого тестирования на предмет безопасности и байесов (устойчивых искажений в какую-либо сторону) генераций.

Во-вторых, OpenAI в очередной раз пофлексили превосходством над другими игроками — только посмотрите на генерации моделей конкурентов (открытых и закрытых) по тем же самым промптам, что и у SORA. Даже не близко! Но впереди нас ждёт только развитие.

А что, собственно, впереди?

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

Но как такой симулятор нашего мира можно использовать, и чем он полезен? Кроме детально разобранного плана обучения ботов внутри виртуального мира, видится два ключевых направления работы. Первое — это обучение GPT-N+1 поверх (или совместно) с видео-моделью, чтобы те самые латенты, характеризующие состояние мира и механики взаимодействий в нём, были доступны языковой модели. Без углубления в технические детали отмечу, что существуют способы обучения нейросетей одновременно и на тексте, и на изображениях/видео — так, что сам «предсказательный движок» будет общий, а энкодер и декодер свои для каждого типа данных. Тогда даже при генерации текста GPT будет опираться на модель мира, выученную в том числе по видео, получит более полную картину взаимодействий объектов и агентов. Это своего рода «интуиция», которая также, как и латент в случае гоночек/DOOM, будет нести в себе неявное описание потенциального будущего, что в свою очередь повлияет на навыки рассуждений с далёким горизонтом планирования. Именно это является одной из основных проблем современных LLM — они могут выполнить какую-то одну простую задачу, но не могут взять целый кусок работы, декомпозировать, распланировать и выполнить.

Второе направление работы — это непосредственно симуляция, когда модель при генерации как бы берёт паузу, и проигрывает несколько разных симуляций будущего: а что будет, если сделать вот так или эдак? Происходить это будет в пространстве сигналов (латентов), так же, как мы в голове размышляем, что будет при таких-то и таких-то действиях — поэтому проблема неидеальной реконструкции снова уходит на второй план. На основе анализа результата десятков-сотен прокручиваний ситуации можно скорректировать поведение модели/агента. Вероятно, мы увидим первые эксперименты в рамках компьютерных игр — зря что ли OpenAI в прошлом году купили компанию, разрабатывавшую аналог Minecraft, но с упором на социальные взаимодействия? Тем более, что это не будет их первым опытом в игрушках: ещё до GPT-1 проводились эксперименты с популярной игрой DotA 2, где в итоге команда скооперировавшихся ботов дважды обыграла чемпионов мира.

Но у SORA для таких симуляций нет одной важной детали: возможности учитывать действия агента. Ведь вспомните: модель мира работает не только с сигналом от окружения, но и с командой, предсказываемой ботом. Если из одного и того же кадра гонки делать поворот налево или направо — то очевидно, что будущее будет разным. Так что к системе обучения на видео к SORA придётся приделать сбоку модуль, который как бы угадывает, что происходит между кадрами. Тем более что у OpenAI есть опыт подобной работы (опять совпадение? не думаю) — летом 2022 года они обучали нейросеть играть в Minecraft по видео с YouTube. Для того, чтобы сопоставить картинку на экране с действиями, по малому количеству разметки была натренирована отдельная модель, предсказывающая вводимую игроком команду. Правда, на видео общего спектра такой подход применить сложнее — какая вот команда отдаётся на съемке процесса завязывания галстука? А на записи футбольного матча? А как это увязать?

Вполне возможно, что ответ — как и всегда — будет следующим: «ну дай машине, она разберётся, главное чтоб данных хватило». Пока писался этот блогпост, Google DeepMind выпустили статью с описанием модели Genie, предназначенной для... генерируемых интерактивных окружений. Такой подход принимает на вход кадр и действие и предсказывает, как будет выглядеть мир (и какие потенциально действия можно сделать). И, конечно же, тестируется это на настоящей робо-руке, ведь игрушек нам мало!

Обратите внимание на реалистичную деформацию пакета чипсов. Это не реальный объект, кадры полностью сгенерированы выученной моделью мира. Контроллер робо-руки может принять решение после многократной симуляции будущего для более аккуратных манипуляций.

Скорее всего, и на обучение, и тем более на применение моделей на масштабе всего YouTube потребуется огромное количество ресурсов, заточенных под работу с нейросетями. Уже сейчас ведущие в AI-гонке компании сталкиваются с проблемами: видеокарт Nvidia не хватает на всех, а список закупок заполнен на год вперёд. Даже если есть денежные средства масштабировать модели в 10, в 100 раз — может просто не хватить GPU. При этом, нейронки легче и меньше становиться пока не планируют. Вот например SORA, по слухам, требует часа вычислений на генерацию минутного FullHD ролика. Это может быть похоже на правду — сразу после анонса команда OpenAI генерировала в твиттере видео по запросам людей, и минимальное время от твита до генерации составило 23 минуты. Но и ролик был 20-ти секундный!

В общем, как спайс занимает центральное место в мире Дюны, так и вычислительные мощности играют ключевую роль для AI — наравне с данными. Вероятно, поэтому начали появляться слухи о желании Сэма Альтмана привлечь инвестиции на реорганизацию индустрии (не компании, а всей индустрии!) производства полупроводников и чипов, создав глобальную сеть фабрик. Слухи какие-то совсем дикие — мол, нужно привлечь от 5 до 7 триллионов долларов. Это, на минуточку, 4–5% от мирового ВВП! Капитализация самой дорогой компании в мире, Microsoft (лол? напродавали винду), составляет 3 триллиона. Да на 7 триллионов можно и весь Тайвань прикупить, чего уж — главное, чтоб Китай позволил.

Нет, это не оценка компании или всего рынка, это именно необходимые инвестиции. Да.
Нет, это не оценка компании или всего рынка, это именно необходимые инвестиции. Да.

Лично я не верю в такие суммы, но порядок двух-трёх триллионов инвестиций на горизонте десятилетия считаю посильным. Знаете, запускать Матрицу для того, чтобы погрузить в неё 8 миллиардов людей — дело всё же недешевое! В общем, поживём — увидим.

Согласны? Узнали себя? (Надеюсь, что нет)
Согласны? Узнали себя? (Надеюсь, что нет)

Одно можно сказать точно: если Сэм Альтман будет продолжать двигаться такими темпами — то проблема моего досуга на ближайшие несколько лет точно будет решена. Придётся пилить здоровенные лонгриды с объяснением того, каким конкретно образом свежие нейросетки собрались захватывать наш мир на этой неделе, буквально безостановочно. :) Если вы не хотите пропустить эти будущие материалы — то подписывайтесь на мой ТГ-канал Сиолошная. (Также отдельная благодарность Паше Комаровскому из RationalAnswer за то, что помог с редактурой этого гигантского материала, и Богдану Печёнкину с Ярославом Полтораном за вычитку опечаток.)

614614
173 комментария
143
Ответить

утащил в закладки, дочитаю на работе сейчас, 0.65 кофе хватило только на треть статьи, спасибо, годнота

16
Ответить

Устал скролить не то что читать.

8
Ответить

А зря, там интересно.

6
Ответить

Если автор получит 5к то прочитаю. Справебыдло? Справебыдло!

5
Ответить

Титанический мегалонг.
Почитаю на пенсии

57
Ответить

Так уже всё, через годик-другой будет AGI, обученный в видеосимуляции, и баста 🙈

10
Ответить