Full transcript
0:00Всем
0:04спасибо, кто дошёл. Вот, как видно,
0:08название обучения с подкреплением
0:09пропало, потому что пока я делал, в
0:11общем, доклад, понял, что он не совсем
0:14про обучение с подкреплением.
0:17Тем не менее, надеюсь, что доклад
0:19получится человый, не очень напряжный.
0:22Под конец школы всё-таки все уже устали,
0:24поэтому я расскажу по верхам. Вот. И для
0:27меня важно, чтобы вы, наверное, ушли с
0:30этой лекции с пониманием одной простой
0:33мысли. Зачем нам вообще надо бы
0:36обучаться на данных без действий? Потому
0:39что, э, всё остальное оно, в общем,
0:42вторично, да, там разбирать методы в
0:45глубину. В этом году одни хайпуют, в
0:48следующем году уже следующие будут. Вот
0:51важный сам принцип. Поэтому мы
0:52разберёмся, собственно говоря, куда
0:54делись действия, почему нам нужно, а,
0:56использовать данные без действий, что
0:59делать, если действий нет, да, какой
1:01самый простой бейзлайн можно придумать.
1:04Потом самый популярный, в общем, на
1:06данный момент метод латентные действия.
1:09То есть они очень натурально обобщают
1:12этот самый простой бейзлайн. И, конечно,
1:14поговорим немножко про ограничения,
1:16потому что метод не финальный, у него
1:19есть недостатки, несмотря на все успехи.
1:22Вот. И начнём мы, конечно, с первой
1:24части, куда делись действия, потому что
1:27у вас такой вопрос может возникнуть,
1:29собственно говоря, если вы слышали
1:31что-то про обучение с подкреплением или
1:34проitation learning или, может быть, на
1:36школе вам объясняли, что обучение там с
1:39подкреплением - это способ решения, в
1:42общем, задач.
1:44не знаю, принятие решений. И мы там
1:46какие-то решения принимаем и действия в
1:48среде совершаем, в отличие от
1:51какого-нибудь обучение с учителем, где
1:52мы просто предсказываем следующий токен
1:55или просто класс. Ээ, казалось бы,
1:58действия у нас должны быть, весь весь
2:00смысл в этом. Ну вот, на самом деле,
2:04конечно, здесь речь не про то, что у
2:05нас, в принципе, нет действий, как в э
2:09формализации задачи. Мы, конечно, хотим
2:11обучить какого-то агента, который
2:13действия в среде совершать всё-таки
2:15будет. Проблема в том, что у нас не
2:17всегда есть данные, которые эти действия
2:19содержат. И дальше мы, собственно
2:22говоря, ээ натурально подойдём к тому,
2:25как эта ситуация появляется, что нам
2:27нужно обучаться на данных без действий.
2:31Начнём немножко издалека,
2:34вот, э, и прийдём к этому, э, сами по
2:38себе. Ну, начнём с того, что обучаться в
2:41онлайне, то есть напрямую обучать агента
2:45взаимодействовать со средой, это крайне
2:47дорого, особенно если вы делаете это с
2:49помощью обучения с подкреплением. Есть
2:51вот такой классный пример, который я
2:53люблю приводить.
2:55Если вы играли в Доту или хотя бы, в
2:56общем, слышали, чем занимался Open до
2:58того, как он начал заниматься языковыми
3:01моделями, он как раз занимался обучением
3:03с подкреплением и обучал, например,
3:05ботов в играть на проуровне в Доту 2. И
3:09вот, чтобы обучить такого бота, им
3:12понадобилось 45.000 лет. Конечно,
3:15виртуальных, но они виртуальных - это 10
3:18месяцев. Это при этом они ещё имели
3:20доступ к симулятору, то есть не напрямую
3:22взаимодействовали с дотой через
3:25интерфейс, а у них была low level, в
3:28общем, IP, и они могли там ускорять эту
3:31игру, не знаю, в 10 раз, там в сотню
3:34раз. То есть, если бы они играли в эту
3:36игру как реальный человек, там бы ушло
3:39очень-очень много времени. Возможно, они
3:41бы не смогли это сделать.
3:44Второе, ээ, обучаться в онлайне - это не
3:47только долго, но это ещё и очень трудно.
3:49Я, например, очень люблю такую
3:52видео того, как
3:54ребёнок маленький ещё совсем эксплорит
3:57свою среду вокруг. Здесь оно ускорено.
4:00Там, конечно, изначально видео 9 минут и
4:02оно ещё ускорено. То есть вот он 40
4:04минут вот так вот без прерыва туда-сюда
4:07ходит, каждую игрушку потрогает. И, в
4:10общем,
4:11нам до этого ещё очень далеко.
4:14Потому что в рели у нас там или в
4:16обучении с подкреплением или в имиation
4:18learningнинге у нас всегда есть какой-то
4:22эпизод, например. То есть эпизод
4:25предполагает под собой, что мы какое-то
4:27начальное состояние всегда возвращаемся,
4:30мы какую-то задачу конкретную решаем, а
4:32не просто вот экспорим среду. А даже
4:34если экспорим, то мы её экспорим
4:36постольку, поскольку. Но, вообще-то, мы
4:37хотим решить что-то одно конкретное.
4:41И возникает много проблем, например, да,
4:43с работотехникой, когда мы в реальный
4:45мир переходим. Вот мы хотим, например,
4:47обучить робота брать кубик. Допустим, он
4:51взял кубик и ошибся. Кто вернёт среду в
4:54начальное состояние? Вот он, не знаю,
4:56кубик уже с, не знаю, с со стола упал,
4:59он на полу лежит. В общем, это должен
5:01делать человек. Итак, совсем, да, это
5:04совсем простая задача. Если мы хотим, не
5:06знаю, обучить робота вообще чему-то
5:10полезному в реальной жизни, например,
5:11делать уборку в доме, каждый раз сделать
5:14беспорядок, прежде чем он начнёт эпизод
5:16и потом наведёт порядок, а потом снова
5:19делает беспорядок. Это, в общем,
5:21нетривиальная задача. И как делать
5:23continual learning в онлайне, это, в
5:25общем, тоже задача нерешённая.
5:29И более того, обучаться в онлайне - это,
5:31на самом деле, опасно, потому что
5:34возможно два исхода. Допустим, вы
5:36запустили агента на каком-нибудь роботе
5:40делать ту же самую уборку или просто
5:42подбирать предметы. Ну, вероятнее всего,
5:44если вы запуститель, то вы вот заметите,
5:47не знаю, какую-нибудь такую картину.
5:49Это, конечно, не значит, что Boston
5:50Dynamics использует L. Это скорее просто
5:54визуализация самого вероятного исхода.
5:56Он всё разломает, в том числе себя,
5:59потому что он никаких там правилах
6:02безопасности, конечно, не знает, если
6:04человек заранее в него их не заложил.
6:08Ну и второй менее вероятный исход, но
6:10тем не менее, если всё получится, никто
6:13не гарантирует, что он не станет
6:14преследовать каких-то своих странных
6:16целей, которые вроде как максимизируют
6:19награду, но не тем самым способом,
6:21которым вы надеялись. У меня дальше
6:25будет гораздо более простой пример,
6:27чтобы понять, как такое может произойти.
6:31Вот. И поэтому, условно говоря, в
6:33обучении с подкреплением давно уже
6:34случился такой раскол. Он раскол на два
6:37больших подраздела,
6:40которые называются онлайн обучение и
6:41оффлайн обучение.
6:43как суммаризуя,
6:46мы не всегда можем обучаться в онлайне,
6:48поэтому оффлайн - это такое решение,
6:51потому что мы можем гарантировать в
6:53некотором смысле предсказуемость, э
6:56потому что мы сами собираем датасет, на
6:59котором агент обучается, то есть его
7:00может собрать человек в контролируемых
7:02условиях, да? Например, если мы
7:04обучаемся на беспилотниках, это будет
7:08опытный водитель, который не будет
7:11нарушать там правила ПДД, не будет, э,
7:13пытаться задавить какую-нибудь собачку
7:15встречную. Э
7:18также во время обучения в онлайне у нас
7:21нет никаких гарантий того, какое
7:24поведение в итоге изобретёт агент. Даже
7:26если мы дали ему, например, награду за
7:28то, чтобы он бежал вперёд, ничто не
7:31гарантирует, если ему дали такую
7:33награду, что он решит, что нужно бежать
7:35именно на ногах, потому что у него нет
7:37понимания, что такое ноги. Он просто
7:39знает, что нужно бежать вперёд, и он
7:41может изобрести что-то, что мы даже не
7:44могли предугадать. В то время как
7:46оффлайне мы можем более-менее это
7:48контролировать, показывая ему только
7:49нужное поведение и добавляя
7:52регуляризацию на это поведение.
7:54И, конечно, в, как я уже там приводил
7:58пример с Дотой, обучаться в реалтайме -
8:01это дорого, если у нас особенно
8:02медленный симулятор или этого
8:03симулятора, ну, нет вовсе, да, условно
8:07говоря, для
8:09работотехники у нас есть некоторые
8:10подобия симуляции, но они, конечно,
8:12совершенно не покрывают всё разнообразие
8:15там физического и реального мира.
8:17Поэтому нам нужно собирать данные в
8:19онлайне. В онлайне их собирать сложно,
8:21поэтому их всех собирают
8:23контролируемым образом в датасеты и этих
8:26на этих датасетах уже обучаются.
8:30Собственно говоря, как это выглядит
8:32обычно
8:34с точки зрения человека, который эти
8:35алгоритмы обучает, да? В онлайн-Реле у
8:38нас постоянно есть такой цикл того, что
8:40мы, э, подаём состояние среды в агента,
8:43агент принимает какие-то решения, и
8:46потом эти решения в виде действий влияют
8:49на среду. Среда нам возвращает следующее
8:52состояние и вот так вот по кругу. Это, в
8:54общем, более-менее привычно. В
8:56оффлайн-реле у нас обычно строится
8:58чуть-чуть по-другому пайплайн обучение.
9:01Мы собираем какой-то большой детесет
9:03заранее в контролируемых условиях. А
9:06обычно он, как правило, экспертный, но
9:09экспертным ему быть не обязательно,
9:11потому что ли хорош тем, что он может
9:13превзойти экспертов данных. Мы этот сет
9:16собираем в оффлайне, обучаем на нём
9:19агента более-менее привычными нам
9:21способами. Можно даже с помощью
9:23imitation learning, да, где мы награду
9:25даже не максимизируем.
9:27Ээ и потом мы этого агента выпускаем в
9:30среду.
9:31Здесь, конечно, нам нужен онлайн, потому
9:33что без этого понять, что он выучил,
9:35довольно сложно.
9:37Так что здесь тоже сохраняется некоторый
9:39риск, но тем не менее мы его выпускаем,
9:42и в этот момент мы можем, да, там
9:43дособирать новые данные, чтобы понять,
9:45когда мы поняли, какие у него есть
9:47сейчас проблемы, чтобы эти проблемы
9:50э сделать меньше.
9:53Ну, в реальности, на самом деле, всё ещё
9:54проще, если вы посмотрите на большие там
9:56современные модели, которые хоть как-то
9:59могут называться агентами.
10:02Там реля почти нет. А даже если есть,
10:06там очень простой, который внешне очень
10:08похож на просто взвешенную регрессию,
10:11просто потому что
10:13- это довольно сложная система. И
10:16обычно, если вы хотите завести, то это
10:18плохая идея, потому что он, в общем, с
10:20девяностопроцентной вероятности не
10:22заработает. И даже в РЛИ там обычно
10:24стоит выбирать самые простые методы. И в
10:28современных моделях, которые обучаются
10:31там на, допустим, сейчас я скажу, что
10:33больших датасетах, да, например, как
10:37в работотехнике, там ээ самый обычный,
10:42как это называется, behavioral cloning.
10:44То есть мы просто учимся предсказывать
10:46следующее состояние в датасете. И этот
10:50датасет предполагается, что он
10:51экспертный. То есть, если мы будем
10:53хорошо его имитировать, мы будем хорошо
10:55выполнять требуемую задачу.
10:59И вот так вот, собственно говоря,
11:00появились Vision Language Action модели,
11:04потому что с релем с нуля обучаться
11:07сложно.
11:09Э, да, и в целом с Рэлем сложно
11:11обучаться. Люди посмотрели на то, как
11:14работают лмки, на то, как классно
11:16работают в лмки, когда у нас есть много
11:18данных, и стали, в общем-то, по этой же
11:20схеме обучать модели для работотехники.
11:23То есть мы вобрали в себя весь интернет
11:26в через лмку или в мку, и с помощью
11:30этого знания, которое некоторое, в
11:33общем, знания интернета нам даёт про
11:34реальный мир, можем уже, э, чуть-чуть,
11:37да, обучиться на роботтехнических
11:40датасетах. И он, по идее, да,
11:43предполагается, что он будет пообщаться
11:46за счёт того, что лмка и в Лэмка много
11:49всего о мире знает, да. Например, мы
11:51попросили её поднять красное яблоко, и в
11:54обучающих данных было только красное
11:55яблоко. Но если мы после обучения
11:58попросим поднять зелёное, оно
11:59более-менее поймёт, потому что в лэмке
12:03во время обучения э было и описание, чем
12:06отличаются цвета. Да и в целом они умеют
12:08цвета различать. Нам не обязательно
12:10добавлять это в данные напрямую. Ну, так
12:14предполагается.
12:16Но есть, в общем, нюанс.
12:19Я, конечно, сказал, что они обучаются на
12:20больших данных, но, ээ,
12:24это, конечно, преувеличение по сравнению
12:26с тем, сколько данных хранится в
12:28интернете или, например, на Ютубе.
12:31Всё-таки нам хочется их побольше, потому
12:34что если мы что-то и поняли из обучения
12:37всяких штук последние годы, это то, что
12:40данные - это, наверное, 99% успеха. В
12:44общем-то, архитектура, они все может
12:45быть и разные, но в лимите они сходятся
12:47все плюс-минус к одному. И итоговое
12:50качество обычно решается качеством
12:52данных. Поэтому нам для работики нужно
12:55много данных. Очень много данных. И при
12:58этом важно, чтобы они были очень
12:59разнообразные. Например, у влэмок сейчас
13:02есть большая проблема, что они,
13:05поскольку обучались в интернете, тоже в
13:07оффлайне, малось, в общем, имеют
13:09представление о том, э что такое
13:12физический мир, да? Э как называется
13:16common sense у них обычно отсутствует,
13:18если их специально на это не дотюнивали.
13:21Ээ они иногда выдают совершенно комичные
13:24результаты. И поскольку их обычно
13:26используют в ВЛА, эти комичные
13:29результаты выражаются в очень плохой
13:31перформанс.
13:34Сейчас эти данные обычно собираются
13:36двумя способами. Это либо телеоперация,
13:39либо симуляция. В общем, по разберём,
13:42что это такое. Телеоперация - это, в
13:45общем-то, буквально двойник, если грубо
13:48говорить, когда вы за робота, да, с
13:50помощью некоторого интерфейса или, э,
13:54он может быть в виде джойстика, может
13:56быть более сложный, как здесь изображён,
13:58выполняете действия, и робот за вами
14:00повторяет. И таким образом можно робота,
14:03в общем, не обучить, но хотя бы собрать
14:04некоторое количество данных, потому что
14:06вы человек, вы знаете, как ту или иную
14:08задачу выполнить, поэтому вы можете вот
14:13так вот пытаться собирать данные. Но, в
14:15общем, есть у этого некоторые проблемы.
14:18Во-первых, это оборудование достаточно
14:19дорогое.
14:21Во-вторых, его нужно много, если вы
14:23хотите масштабироваться. А
14:24масштабируется это линейно. То есть вы
14:26не можете одного человека посадить сразу
14:28100 параллельно траекторий собирать. Вам
14:30нужно 100 человек параллельно. И при
14:32этом, если вы когда-то пробовали в
14:34телеоперацию, я вот недавно попробовал,
14:36оказывается, что это на самом деле скилл
14:39такой нехилый требуется, потому что с
14:41первого раза я, в общем, оказался не
14:43лучше, чем агент, который с нуля
14:45обучается, потому что это не так-то
14:48просто. Там есть и задержка, и, в общем,
14:51некоторые тоже ограничения.
14:53Но тем не менее сейчас это основной
14:55способ сбора данных. А если посмотреть
14:56на стартапы типа Теслы, там, Finger, 1x,
15:00они буквально заняты этим. То есть вся
15:05их работа на самом деле заключается в
15:07том, как собрать данных побольше. И
15:10телебирация пока что там самый лучший
15:12способ.
15:14Почему? Потому что симуляция, она, в
15:16общем, подходит для некоторых узких
15:18применей, таких как, например,
15:20локомоция, да, то есть как научить
15:22робота там или робособаку ходить по
15:24разным э
15:26поверхностям. Э тут тоже, в общем, есть
15:29много, скажем так, ээ
15:33странностей, да, на демо они, конечно,
15:36все хорошо иногда ходят. В реальной
15:38жизни я слышал, в общем, даже здесь в
15:40аудитории из обсуждений не всегда так
15:42получается. Почему так? Потому что
15:44существует так называемый Sim to real
15:47gap. То есть у нас
15:50во время обучения симуляция это не
15:52точная симуляция реальности, конечно,
15:54это некоторая аппроксимация, а, в общем,
15:57физически, конечно, похожая на реальный
16:00мир, но в деталях не всегда, особенно в
16:03деталях, которые совсем мелочные,
16:05например, там в точности чисел. И
16:07поэтому агент, который много-много
16:09миллионов
16:10транзиций в этой симуляции обучается, он
16:13может просто переобучиться под эти
16:15странности. И когда его деплоишь в
16:18реальный мир после этого, он сходит с
16:20ума, потому что он такого не видел. Для
16:23него это
16:25out of distribution
16:27сэмплы.
16:29Вот. Но в остальном, а, симуляция - это
16:31достаточно хороший способ, как минимум,
16:34а, набрать каких-то не очень
16:35качественных, но разнообразных данных,
16:38потому что там можно запустить сотни
16:40роботов, тысячи роботов параллельно,
16:42всех их рандомизировать, да, что
16:44называется domain randomization. И
16:48сейчас там появились новые симуляторы,
16:49которые используют ГПО эффективно. Это
16:52всё ещё и будет очень быстро,
16:55но, вообще-то говоря, в других областях
16:57не так. В общем, они, конечно,
17:00вот недавно была лекция Илья Соцкевера,
17:03где он жаловался про то, что эра
17:06притренинга заканчивается, потому что
17:07закончился интернет. Вот им так повезло,
17:11что им интернет достался, и лмкам
17:14достался весь интернет, который содержит
17:16триллионы токенов текстовых, включая там
17:19даже не интернет, а, например, книги.
17:21Как вот недавно стало известно, Антропик
17:23скупал просто сотни книг, э потому что у
17:26них были качественные тексты.
17:29Да, там вм достался YouTube, Twitch,
17:32все фильмы, которые мы когда-либо сняли,
17:34это очень много данных, и многие из них
17:37довольно качественные. В них было
17:38вложено много человеческих сил. Ну,
17:41голосовым моделям, соответственно, тоже,
17:42да, там чего только книги записанные и
17:45озвученные стоят. И вот они, в общем,
17:48жаловались про то, что притрен
17:50заканчивается, надо бы изоб.
17:54Ну вот людям, которые всё это время
17:55занимались рейлем илингом
17:58или роботикой, это, в общем, выглядит
18:01смешно, потому что у нас эра притрейна
18:03ещё даже не началась, не то что
18:05закончилась, потому что мы вот на них
18:07смотрим и спрашиваем: "Ребята, у вас
18:08что, всё это время были данные?" У нас
18:11данных не было. И мы, в общем, всё это
18:13время думали, как бы откуда бы их
18:15достать.
18:18И вот в последнее время, когда появилось
18:20понимание о том, что данные - это
18:22всё-таки важно, и чем больше, тем лучше.
18:25И вот, возможно, мы зальём огромным
18:27количеством данных работотехнику, и она
18:30наконец заработает, начали появятся
18:32такие инициативы по сбору больших
18:34детсетов. И вот один из них, например,
18:36Open Xbodinment.
18:40Но даже тут, в общем, можно увидеть,
18:42каким потом и кровью даётся сбор таких
18:45датасетов. То есть этот датасет собирали
18:48несколько лет. Его собирали коллаборации
18:51всего мира, да, там 21 институт, там 22
18:55различных робота. Много это или мало?
18:58Ну, вообще-то это много с точки зрения
19:00работотехники, но с точки зрения
19:01притрено и разнообразия это очень мало,
19:04да, там всего 512, около 512 различных
19:08задач. То есть, конечно, там есть
19:09рандомизация относительно того, да, там
19:11поднять красное или зелёное яблоко, но
19:14это всё ещё одна задача.
19:16И там всего около 2 млн эпизодов. Что
19:18такое 2 млн эпизодов? Это очень мало,
19:21особенно если они обладают э малой
19:25разнообразией стартовых состояний. Ну и
19:28вот кажется, что
19:32он всё-таки как бы больше, гораздо
19:34больше, чем всё, что существовало до
19:35этого, и более разнообразнее. Но если
19:37посмотреть на конкретные задачи в этом
19:39датасете, они, конечно, даже близко не
19:41подходят к тому к тому уровню сложности,
19:44который мы бы от роботов хотели, да?
19:46Например, чтобы он убрал дом, не знаю,
19:48разгрузил посудомоечную машину, ещё
19:50что-нибудь, там всё такое вот вокруг до
19:53около. Подними кубик, подними его там на
19:56другой кубик, не знаю, ээ, подними
20:00тарелку и всякое такое. То есть очень
20:02базовые скилы.
20:04Вот, конечно, я на слайде отобразил, да,
20:06риторический вопрос. Покрывает ли этот
20:08дсет всё разнообразие реального мира,
20:10которое нам нужно покрыть, чтобы
20:12получить general purpose роботов,
20:15конечно же, не покрывает.
20:17Что с этим делать, в общем, не очень
20:19понятно. В последнее время появилась
20:22такая маленькая надежда, что мы можем
20:24найти решение в виде действий, в виде
20:27данных без действий. Что же это такие за
20:30данные? Ну вот в конкретном случае
20:32работотехники это эгоцентричные данные,
20:35которые содержат в себе наблюдение
20:38людей, да, условно говоря, повесили
20:40камеру на человека, заставили его весь
20:43день заниматься обычными делами. И вот у
20:45нас появился большой
20:48датасет с повседневными задачами людей.
20:52Вот кажется, что это очень полезно.
20:54Кажется, что это покрывает гораздо
20:56большее разнообразие реального мира, да,
20:58не симуляции. Кажется, что это гораздо
21:01лучше скелится, потому что нам не нужно
21:02ничего, кроме просто GoPro или даже, не
21:04знаю, Айфона, чего угодно.
21:08Это очень легко масштабировать.
21:10Более того, не только такими данными
21:12едиными. У нас всё ещё существует
21:15YouTube, куда люди залили просто
21:16огромное количество демонстраций, как
21:19заниматься разными вещами, там, начиная
21:22от футбола до каких-нибудь готовки. Э, у
21:26нас есть Twitch, где тоже очень много
21:29всего происходит, включая, да, там
21:32специальные секции, где люди что-то IRL
21:35делают, да, например, занимаются
21:36рукоделием и ещё чем-нибудь. Это всё
21:39гораздо более разнообразно, гораздо
21:41более интересно и гораздо более глубоко.
21:45Но вот есть проблема. Все эти данные -
21:48это просто видео, в них нет действий.
21:51Поэтому мы не можем просто запихать их в
21:53ла и сказать: "Давай ты вот это видео
21:55посмотришь и предскажешь настоящие
21:58действия, которые там были". И вот как
22:01же в таком случае быть?
22:03Э, к слову о том, что, в общем, вероятно
22:08в ближайшее будущее это будет таким
22:11очень важным и большим направлением. Э,
22:14например, Tтеesla явно говорит, что
22:17использует в своём роботе свои владу
22:21обучение на демо людей без действий. И я
22:25дальше покажу ещё примеры больших таких
22:26Влад, например, от NVIA, которые тоже
22:30этим занимаются. Поэтому тема важная,
22:32тема нужная, она даёт надежду на то,
22:34чтобы мы могли за разскелить
22:38наши данные на весь интернет и получить
22:40все бенефиты, которые получают лмки и
22:43влэмки, и, возможно, продвинуть работику
22:46куда-то далеко. И вот мы подошли,
22:49собственно говоря, к тому, чтобы
22:51мы поняли, зачем нам такие данные могут
22:54понадобиться,
22:56но непонятно, что с ними делать.
22:59Мы хотим получить агента, который из
23:01этих данных выучивает какую-то политику,
23:03как мы в рели говорим, да, то есть он
23:05выучивает какое-то поведение, но
23:07бездействия выучить их сложно. Это на
23:09самом деле большая область сама по себе.
23:12Она появилась, конечно, не вчера. Вот
23:15она просто вот так получилось, что
23:18сейчас она набирает обороты, потому что
23:20оказалось в нужное время в нужном месте.
23:23И, в общем, обещает нам решение важной и
23:25нужной проблемы, которая ранее так остро
23:27не вставала. Ну, названий у неё много,
23:29да, там это разные вариации. Relia from
23:32observation, imitation learning from
23:34observation, learning from video. И в
23:37общем, они называются все по-разному, но
23:40все об одном. И методов там много. Я
23:42расскажу только про одну конкретную
23:44ветку, да, там про одно один конкретный
23:47лист вот этого дерева, который я взял из
23:48обзора. Просто потому, что сейчас он
23:51самый популярный и он самый простой. Ну,
23:54а как мы выяснили, в общем, за эти годы
23:56самое простое скелится, вероятнее всего,
24:00лучше всего. Начнём с простого, да,
24:02такой пример насущный. Не знаю, играл ли
24:05кто-нибудь здесь в Minecraft.
24:07Вот я играл, считаю, что эта игра
24:09великая. И мой там, условно говоря, путь
24:11в рели начался с участия как раз в
24:14соревновании на Непсере,
24:17где задачей было обучить агента добыть
24:19алмаз.
24:21Задача сложная. за 4 года, по-моему, 4
24:25года существования этого соревнования,
24:28она так и не была достигнута. И, в
24:31общем-то, говоря, там проблема очень
24:32похожая на реальную жизнь, которую я
24:34описал с работикой. Если вы заставите
24:36агента обучаться в онлайне, вы, в общем,
24:40раньше составитесь, чем он дойдёт до
24:41алмаза, потому что Minecraft, в общем,
24:44он известен плохой оптимизацией. Это
24:47крайнея медленная среда, которую
24:49распараллелить довольно сложно.
24:52И агент стартует в ней каждый раз с
24:54нуля. То есть у него нет никакого
24:56понимания о том, что такое вообще
24:59существовать в этом мире, да, ему нужно,
25:01чтобы там по комондсенсу нам понятно,
25:04чтобы чтобы прогрессировать э
25:09по дереву крафтов, нам хотя бы нужно
25:11срубить дерево, да. Такое, почему мы
25:13знаем, что нужно срубить дерево? Потому
25:14что мы знаем, что такое дерево. Мы
25:16знаем, что в реальном мире по аналогии
25:18деревья можно срубать. Вот у него
25:20никакого этого знания нету, поэтому
25:22обучаясь с нуля, он будет там случайно
25:23тыкаться и, в общем, ничего никуда не
25:25придёт. Поэтому организаторы, конечно,
25:28подумав об этом, предоставили некоторый
25:30датасет экспертных демонстраций, как
25:32люди играют в эту игру. Он, конечно, не
25:36очень большой, как и в работике, и не
25:38очень разнообразный. И, конечно же, это
25:40никому не помогло, потому что на этом
25:43датасете, в общем, что обучается, что не
25:45обучается, ситуация не сильно лучше.
25:48Но тем не менее в этом датасвете есть
25:50действия, а это очень это очень важно,
25:53как мы сейчас поймём.
25:56Есть такой вот
25:58такая подсказка. В общем, Minecraft
26:00очень любит в мейнстриме и в культуре.
26:04На Ютубе достаточно зайти ввести
26:06Minecraft, появится просто тонна видео
26:09того, как люди играют в Minecraft
26:10по-всякому разному, с разными модами, с
26:13разными задачами, да, и, конечно же, они
26:16там этот Амаз находят, ну, просто
26:18повсеместно, потому что это очень важная
26:20часть игры. Вот как бы это можно было за
26:23использовать.
26:26И идея очень простая.
26:30Как раз впервые алмаз добыли уже в каком
26:33году? В двадцать втором году. Времени
26:35прошло много, хотя и кажется, что
26:36недавно сделали это Open AI. И они вот
26:40пришла в голову такая очень простая
26:41идея. Вот у нас есть небольшой
26:43датасетик, который не покрывает всё
26:46разнообразие игры, но тем не менее
26:48показывает примеры действий, а действия
26:51в игре ограничены. То есть, тем не менее
26:53мы можем ожидать некоторой
26:55генерализации, что если он в начале игры
26:57срубил дерево, нажав конкретную кнопку,
26:59то и в конце игры он срубит дерево или
27:02там блок, если нажмёт конкретную кнопку.
27:05Вот поэтому мы можем собрать небольшой
27:07датасетик, да, например, тот, который
27:09был предоставлен организаторами. Ну,
27:11openi, конечно, в общем, у них лишних
27:14денег не бывает, поэтому они собрали
27:15чуть-чуть ещё больше с помощью
27:17ассессоров. А, да, там 70.000 часов, что
27:20на самом деле тоже много, но по
27:23сравнению со всем Ютубом не так. И
27:26обучили, что важно, мы, в общем, часто
27:28будем дальше слышать это слово inverse
27:31dynamics, да, там inverse динамику,
27:33которая по видео предсказывает действия,
27:36да, мы получаем два соседних состояния,
27:39например, или кадра и предсказываем
27:41действие, которое произошло между этими
27:43кадрами. Учитывая, что у нас есть
27:45действия с у нас есть данные с разметкой
27:47действиями, мы это можем сделать
27:50потом
27:52разметить весь датасет Ютуба, Твича, это
27:56инверс динамикой и получить вроде бы уже
27:59датасет, который с действиями. Ну,
28:01конечно же, инверс динамика, она, в
28:03общем, обучалась не на большом
28:04количестве данных, она будет ошибаться,
28:06то есть эти данные будут шумными и не
28:08очень качественными, но всё-таки она
28:11будет иногда выдавать правильный ответ.
28:14близкий к правде или ошибаться не так
28:16далеко. Поэтому, если мы обучим агента
28:19на этом большом разнообразном, да, ну,
28:21большом датасете, мы дадим ему некоторые
28:25индуктивный баз относительно того, чем в
28:27этом мире вообще нужно заниматься. То
28:29есть после этого он будет иметь
28:30представление о том, что деревья нужно
28:32срубать.
28:34Вот. И, ну, наглядно видно, что если мы
28:37обучаем с нуля, он там только-только
28:39доходит до того, чтобы скрафтить
28:42[музыка]
28:44как называется, верстак. Просто потому,
28:46что это в самом начале. До этого он ещё
28:49может дойти, а чтобы подождать, пока он
28:51скрафтит, не знаю, кирку, например, из
28:53камня, это вообще никогда не происходит.
28:56Ну вот если мы обучим его на больших
28:57данных, где это часто происходит, пусть
28:59мы предсказываем шумные метки, он начнёт
29:03при обучении в дальнейшем доходить до
29:07этого крафта, хоть он значительно дальше
29:09находится,
29:11просто потому что теперь у него гораздо
29:13более эффективный эксплор происходит в
29:14среде.
29:16Вот, э,
29:18это на самом деле э уже тогда было
29:21понятно, но сейчас это так работает.
29:23Если вы почитаете, как обучаются лмки,
29:26они не обучаются, как обучались например
29:282, когда вы берёте один огромный common
29:30crow, да, там один большой детасет,
29:33обучаете на нём модель и вот всё, у вас
29:36эта модель есть. Сейчас как делается,
29:38да? Берётся большой большой датасет, тот
29:41же самый.
29:43Вначале вымычаете модель на нём, потом
29:46вы устраиваете данные в виде такой
29:47пирамиды по качеству, да, там вначале
29:49очень некачественные, потом чуть-чуть
29:52менее качественные, потом средние, потом
29:54более-менее хорошие, и в самом конце
29:56обучения у вас появляются данные,
29:57которые вообще отличные. И в самом конце
30:00ваша там лмка обучается только на
30:03хороших данных. Но тем не менее вот эта
30:04вот инициализация на больших, но не
30:06очень качественных крайне важна. И вот в
30:09Майнкрафте она работает точно так же,
30:11потому что она позволяет нам
30:12разблокировать гораздо больше
30:15достижений, да, мы в начале вот
30:17оранжевым обучаемся на не очень
30:19качественных данных с Ютуба. Она вот нам
30:21позволяет там чего-то сделать. Потом мы
30:23фантюнимся на более качественных
30:25экспертных данных, например, тех же
30:26самых, которые мы использовали для
30:29обучения инверсдинамики. И это ещё
30:31чуть-чуть нас расширяет.
30:33Ну и как в лмках, финальный, в общем,
30:36этап вишенка на торте. Когда у нас
30:39появилась хорошая базовая модель,
30:40которая примерно понимает, что нужно
30:42делать, мы можем дотюнить её с помощью
30:44реля в реальной среде. И вот получается,
30:48что мы как раз можем добыть алмазную
30:50кирку, которую там 6 лет пытались добыть
30:52и никак не могли, да? И если там с нуля
30:55обучаете рель, он, конечно, никогда до
30:57этого не дойдёт. Более того, даже если
30:59обучать релис, значит, с базовой модели,
31:02если можно посмотреть на OSX, там
31:04миллионы эпизодов. Что такое эпизод в
31:06Майнкрафте? Это, в общем, не знаю,
31:08минимум 20 минут реального времени. То
31:11есть это всё равно даже с базовой модели
31:13выходит довольно затратно.
31:15Ну, это, конечно, очень простой
31:17бейзлайн. Как можно работать с данными
31:20без действий? И если у вас, в общем,
31:23звёзды так сходятся, что вы можете его
31:24использовать, лучше его использовать,
31:26потому что он крайне эффективен. И он
31:28работает, конечно, не только в
31:29Майнкрафте. Это просто вот такой вот
31:31пример развлекательный. Э-э, его,
31:34например, часто используют в
31:36селфдрайвинге, чтобы получать больше
31:38данных, потому что, условно говоря,
31:42мы легко можем записать, как машина
31:43едет, да, например, с регистратора, но
31:46собрать реальные действия, как там
31:49рулил, э, водитель, не всегда можем. Ну,
31:53просто сложнее.
31:55И опять же, да, там тут конкретна статья
31:58как раз про learning to drive by
32:00watching YouTube, потому что на Ютубе
32:02есть множество видео, в общем, машин,
32:04которые куда-то едут. И здесь точно так
32:06же можно сделать, как в Майнкрафте, да,
32:09обучить динамиic по состояниям
32:11предсказывать действия на тех данных,
32:13где у нас
32:15действия есть, потом разметить весь этот
32:17большой датасет и на нём обучиться, да,
32:19и там в статье, в общем, я графики не
32:21буду показывать, но тоже большие
32:23приросты, потому что мы кратно
32:24увеличиваем э пул, да, объём доступных
32:29нам данных для преобучения. Ну, а я ещё
32:31раз повторю, данные - это всё.
32:34Ну, вопрос такой может возникнуть: а
32:36если у нас очень мало всё-таки данных,
32:38на которые действия есть, и собрать мы
32:40больше не можем? В общем, оказывается,
32:42что можно собрать их в каком-нибудь
32:44похожем домене, где мы это можем
32:46сделать, да, в гораздо большем масштабе.
32:50Например, в этой конкретной статье
32:52используется, конечно, атари. А, ну, в
32:54общем, в реальном жизни
32:58как бы это в реальной жизни тоже можно
33:00воплотить. Просто в Атаре проще, потому
33:02что это дешевле для статьи. Ну, в общем,
33:05если у нас есть какая-то конкретная
33:07домен, где мы можем собрать, условно
33:08говоря, только 10.000 транзиций, где мы
33:11разметили действиями, и вот этого нам не
33:13хватает для того, чтобы
33:14генерализоваться, мы можем собрать в
33:16похожем домене гораздо больше, обучить
33:19на вот этом слитом датасете, и они
33:22помогут за счёт генерализации, потому
33:24что тут нейронные сети, они так умеют.
33:27Оно значительно поможет на нашем
33:29таргетном домене. И в общем, это хороший
33:32рецепт.
33:34Но это, конечно, не отвечает на вопрос
33:36всё-таки, что делать с эгоцентричными
33:38данными, потому что везде до этого, где
33:40я показывал примеры, у нас была
33:43возможность гипотетически получить
33:45реальные действия.
33:47Ну вот, допустим, у нас есть видео, где
33:49человек поднимает бутылку. Какое там
33:51реальное действие вообще происходит? То
33:54есть мы вообще как-то можем, не знаю,
33:56попросить его это действие выписать в
33:58виде там, не знаю, вещественного вектора
34:00или ещё как-нибудь. Там никакого
34:02действия изначально нет. Чтобы его
34:04оценить, это нужно придумывать какие-то
34:06евристики, да, там пытаться делать пост
34:09estimation и то, будет ли это настоящим
34:13действием.
34:14даже такой философский вопрос, что
34:16конкретно здесьвать под действием,
34:18потому что, а, если мы, например, оценим
34:21просто позу руки, будет ли это
34:23отображать мыслительный процесс человека
34:25и включает ли мыслительный процесс
34:27человека себя действия. В общем, вопрос
34:30такой.
34:31Но тем не менее можно попытаться уже там
34:34известными вам инструментами, которые я
34:36объяснил, ээ работать с такими данными.
34:41Вот там одна из первых статей, которая с
34:43этим хоть как-то пытается работать
34:46более-менее успешно.
34:48Но я объясню, в чём я сейчас проблема.
34:50Ну давайте. Они вот действуют таким же
34:52способом, да? У нас есть данные
34:53работотехники, которые очень похожи на
34:55эгоцентричные данные, да? Вот здесь вот
34:59на пересечение, которые зелёные
35:00квадратики. Не знаю, зелёные ли они у
35:03вас. Да, зелёные. В общем, очень видно,
35:05что на самом деле наблюдение более-менее
35:08похожие между человеком-роботом. Натом,
35:10за исключением того, что мы видим
35:12роборуки вместо настоящих рук, можно
35:16попытаться сделать так. У нас есть
35:18некоторый датасет, где мы знаем
35:20настоящие действия робота, мы обучаем на
35:23нём инверсдинамику и потом этой инверст
35:25динамикой размечаем данные людей.
35:29И на самом деле это, в общем, может
35:31работать и может давать приросты, но
35:34если задумываться об этом чуть глубже,
35:36это довольно странно. В общем, потому
35:39что данные работики у нас гораздо менее
35:41разнообразные, чем данные, которые
35:44поставляет человек. Поэтому, в общем,
35:46странно ожидать, что имдинамика может
35:49обобщиться на те вещи, которые она
35:51никогда не видела. Да, например, если у
35:54нас робот всегда просто поднимал
35:55какие-нибудь предметы, ээ вряд ли он
35:58предскажет правильные действия для там
36:00человека, играющего в бадминтон.
36:04Поэтому у ITM есть много ограничений,
36:06несмотря на то, что это крайне сильный
36:07инструмент. Если у вас, в общем, если у
36:10вас есть действия, нужно его
36:11использовать хоть в каком-то размере, он
36:14не всегда подходит для решения задач,
36:16которые есть там, условно говоря,
36:17работотехники.
36:19У него есть несколько, в общем,
36:20суммаризуя, у него есть такие
36:22недостатки.
36:24Он, во-первых, плохо генерализуется.
36:26Если разнообразие данных, на которых
36:28инверсдинамика обучалась, очень
36:30маленькое, да, если он не видел того,
36:32что было в обучающих данных, вряд ли он
36:34предскажет не то что точное, но хотя бы
36:37похожее на правду реальное действие.
36:40Он подходит только для доменов, где у
36:42нас вот так звёзды сошлись, что у нас
36:44есть два датасета, один с действиями,
36:45другой без действий. И он, конечно,
36:49не подходит для доменов, где у нас
36:51вообще, в принципе, нет доступа или даже
36:54какого-то осмысленного способа получить
36:56реальные действия. Вот, конечно, люди
36:58задумались, потому что тема-то хорошая,
37:02простая. Вот вот бы был метод, который
37:05как-то обобщает ID, так чтобы мы эти
37:07действия могли вытаскивать в unervized
37:10режиме, так чтобы нам не понадобился
37:12датасет, во всяком случае, большой
37:15датасет с реальными действиями.
37:17Вот мы как раз переходим к, в общем,
37:19второй, третьей уже части доклада, как
37:22раз к латентным действиям, которые
37:23появились на самом деле давно, но
37:26выстрелили в этом году, и по ним выходит
37:28сейчас просто тонна статей.
37:30Э, ну, в общем, чтобы их понять, да,
37:33чтобы интуицию за ними понять, давайте
37:35немножко вспомним основы. У нас есть две
37:38модели, которые часто используются
37:40врели. Вот одну я уже упоминал- это
37:42inверсдинамика. Она по двум соседним
37:44состояниям, да, текущему и будущему,
37:47предсказывает действие, которое между
37:49этими состояниями произошло. Есть такая
37:52forварди динамика, да, по-простому,
37:54просто динамика, которая обычно, э,
37:57фигурирует в определении марковского
37:59процесса принятия решений. Что она
38:01делает? Она просто предсказывает нам,
38:03ну, или говорит вероятность следующего
38:05состояния, если в текущем состоянии мы
38:07сделаем какое-то конкретное действие. И
38:10вот они на самом деле, если так
38:13посмотреть, очень похожи на Инь и Янь,
38:16да, они очень делают что-то похожее, но
38:18в обратную сторону и как будто бы они
38:20очень хорошо совместимы. Так осталось
38:22придумать, как
38:24конечно для решения нужной нам задачи.
38:27Вот я думаю, что если вы когда-то
38:30знакомились с тюрвером, вам попадалась
38:32такая штука, как метод максимального
38:34правдоподобия. Звучит страшно, но,
38:36вообще-то это очень простая вещь. Мы
38:39берём какую-то вот, например, как у нас
38:41здесь функцию там плотности или
38:44вероятности в декретном случае, которая,
38:46например, говорит проверять на следующее
38:49состояние при условии чего-то.
38:51У нас есть какие-то данные, мы эти
38:53данные фиксируем, и остаётся найти
38:56какой-то параметр, который бы делал эти
38:59данные согласно нашей функции наиболее
39:02правдоподобными. На самом деле это
39:04буквально то, что мы обычно делаем в
39:06плернинге, да, мы находим параметры
39:08нейросети, которые делают наиболее
39:11правдоподобными предсказания нашей
39:13модели
39:14по тем данным, что есть. Это на самом
39:16деле все основы, которые нам
39:18понадобятся. Если совместить это вместе,
39:21появится такой метод, как Лапо. Вот его
39:23опубликовали в 2023 году. И он, в
39:27общем-то говоря, первый, наверное, смог
39:30успешно сделать так, чтобы латентные
39:33действия заработали. До этого были
39:35попытки, но они были не такими
39:37элегантными и простыми. А здесь оно
39:39заработало и заработало очень хорошо.
39:41Как мы дальше увидим, какие у него эти
39:43плюсы. Первое, тут, конечно, есть IDM,
39:46но её для её обучения нам не нужен вот
39:49этот вот промежуточный датасет с
39:51реальными действиями, чтобы могли на них
39:53обучиться.
39:55Он позволяет просто взять датасет без
39:57действий са какой угодно, самый большой.
40:01Чем больше, тем лучше. Можно из разных
40:02сред, можно всё в одно закинуть в этот
40:05метод, и он нам выдаст какое-то
40:07латентное действие между каждым
40:09состоянием, которое будет коррелировать
40:11с настоящим. Мы чуть-чуть дальше
40:13поговорим, почему так происходит.
40:16Но, конечно,
40:17это нас, как не прискорбно, но это не
40:19лишает нас необходимости использовать
40:22реальные действия хотя бы чуть-чуть,
40:24потому что после предобучения у нас
40:26появляется агент, который на большом
40:28датасете умеет точно предсказывать
40:30латентные действия, но латентные
40:32действия - это просто какой-то латентный
40:34вектор. Он не соответствует один в один
40:37настоящим. Поэтому нам нужен
40:39какой-нибудь маленький кусочек настоящих
40:41действий, чтобы разметить и сделать там
40:44краткий или до обучение из латентных
40:48настоящий. Ну для этого требуется
40:50гораздо меньше данных, чем для обучения
40:52IDM, ээ чтобы она генерализовалась.
40:56Вот почему это работает, собственно
40:58говоря, как устроен лопу?
41:00Ну из схемы, на самом деле довольно
41:02просто. У нас есть как раз эти самые две
41:04модели IDM и FDM. Мы получаем на вход
41:08два состояния: текущее и следующее. Мы
41:12подаём его в DM и получаем какой-то
41:14вектор Z, который, по идее, должен нам
41:17возвращать действия. Как сделать так,
41:20чтобы это действие латентное было похоже
41:22на настоящее?
41:24Ну, в общем, можно вспомнить наш метод
41:27максимизации правдоподобия и посмотреть
41:29на вот эту форо динамику, что нам она
41:31нам говорит. Допустим, у нас есть
41:33настоящие действия. Мы вот смотрим на
41:36эту динамику. Она нам предсказывает
41:37вероятность следующего состояния при
41:39условии текущего и реального действия.
41:42Давайте теперь вот у нас есть
41:44видеоданные. Мы зафиксируем состояние
41:47следующее и текущее.
41:49У нас остаётся действие, которое по сути
41:51параметр.
41:54Ну, здесь оно, короче, всё сходится
41:56воедино, потому что нам остаётся просто
41:58каким-то образом ээ найти такое
42:01действие, которое максимизирует эту
42:02вероятность. А, ну мы это и делаем. Мы
42:06просто подаём наше латентное действие и
42:09текущее состояние в FDM и учимся
42:13предсказывать следующее состояние. То
42:15есть, по сути, максимизируем просто
42:16правдоподобие. Ну и просто по
42:18определению,
42:20ээ, с некорой поправкой я потом скажу в
42:23конце. Ну, в общем, просто по
42:25определению того, что такое динамика,
42:26что такое форвард динамика, мы в
42:29процессе оптимизации придём к реальным
42:31действиям просто потому, что они
42:33максимально информативны
42:35относительно следующего состояния,
42:37потому что они, в общем, порождают
42:39динамику и, по сути, являются решением
42:42оптимизационной задачи.
42:45Э, что с этим потом делать? Ну, пайeline
42:48здесь очень простой. Он состоит из трёх
42:50шагов. Мы вначале предуубачаем эту IDM с
42:53тотентными действиями, а дальше, в общем
42:55говоря, мы делаем то же самое, что я, в
42:57общем, разбирал до этого. Мы берём
42:58большой датасет, размечаем его
43:00действиями, только теперь уже
43:02латентными, потом берём агента,
43:05желательно побольше, ээ, и учимся эти
43:08латентные действия предсказывать.
43:10Поскольку они коррелируются настоящими,
43:13агент выучивает какие-то правильные
43:16поведения. Пусть оно тоже с некоторой
43:20долей ошибки, но тем не менее мы даём
43:22как раз вот этот вот старт на не очень
43:25не очень качественном, но большом
43:27датасете, который потом можно либо
43:29дофатюнить, либо улучшить.
43:34И работает это очень хорошо. условно
43:36говоря, в Лапо, э, в статье это делали
43:39на тестировали на среде Просген. Это
43:42такая среда, которая кажется простой,
43:44да, там просто игрушка, похожая на
43:47Атари, но на самом деле эта среда ещё до
43:48сих пор не решённая, потому что она
43:51процедурно генерируемая. То есть там
43:53каждый, э, каждый старт игры он уникален
43:57в некотором смысле, несмотря на то, что
43:58нужно делать одно и то же. В общем,
44:00карта разныя и уреля обычно с такими
44:02большие проблемы.
44:05Вот. И мы на самом деле можем даже не
44:07фантюнить в онлайне. Мы просто добучаем
44:10IDM, обучаем агента. У нас получается
44:12агент с ответными действиями. Берём
44:14какое-то маленькое количество состояний
44:17с реальными действиями, да, там
44:18достаточно здесь даже уже, ну, 256, что
44:22это такое? Но это на самом деле очень
44:23мало. И обучаем просто маленький декодер
44:27из латентных настоящий.
44:29И оно работает, да, здесь конкретно не
44:32на экспертном уровне, но тем не менее,
44:34учитывая, что мы имели, условно говоря,
44:37256 состояний, где у нас есть действия и
44:41огромный датасет, где действий нет, мы
44:43получили почти на там почти на там 0,6
44:46от экспертного
44:48перформанса за там, ну, не знаю, 01%
44:53размеченных действий. Это очень хорошо,
44:56да, и для работики это, очень даёт
44:58большой
44:59большую надежду. Но, конечно, на этом
45:01можно не останавливаться, можно сказать:
45:04"Ну а что такого? Давайте как в
45:05Майнкрафте, да, обучим это в реальной
45:07среде чуть-чуть". И прирост тоже
45:10огромный,
45:12да? Здесь
45:14вот розовенькое, не знаю, какое тут, да,
45:16всё ещё розовенькое. Розовенькое - это
45:18если обучать с нуля, и зелёненькое
45:22на у вас голубое. Ну, короче, самый
45:24верхней, если обучать с инициализацией
45:27агента, преобучением, латентным
45:29действиям.
45:32Ну, в общем, вопрос такой, да, игрушки -
45:34это, конечно, круто. Прогеншённый
45:37и хороший результат на нём, это ещё
45:40впечатляюще, но это всё ещё далеко от
45:43работики. Как нам это перенести обратно
45:46туда, с чего мы начали? Да, есть
45:48какие-то эгоцентричные данные, а, есть
45:50данные работотехники,
45:52есть YouTube. В общем, как бы нам это
45:54всё слить в одну модельку и получить
45:57какой-то с этого прирост. Ну и вот прямо
46:00сразу за лопо вышла лапа, которая ровно
46:04это и делает, да? То есть она не
46:05модифицирует алгоритм предбучения
46:07никаким образом. Она просто заменяет вот
46:09эти в DM на трансформеры, всё это
46:12скелит, использует большие данные. И как
46:15раз там есть, это не единственный их
46:18результат, но конкретно нам интересный.
46:20Они берут и предобучаются только на
46:23данных с людей, да, там датасет не очень
46:26большой, называется Samsung Samsung 2.
46:29Ээ там люди что-то делают, как раз как
46:32на эгоданных, которые я показывал ранее.
46:34И вот здесь зелёным цветом, собственно
46:37говоря, после прогона всего вот этого
46:38пайплайна, предобучение, потом обучение
46:40агента, потом фантюна
46:43на в оффлайне, конечно, здесь релиту.
46:46Оказывается, что мы получаем на
46:48некоторых тасках перформанс сравнимый с
46:50тем, чтобы обучаться только на данных с
46:52реальными действиями, э,
46:54работотехнических, где-то, конечно,
46:56похуже, но в среднем, э, ну, всего там
46:59на в пределахд.
47:01То есть это, собственно говоря, и даёт
47:04нам то, что изначально и было обещано.
47:06Мы можем доливать туда новых данных,
47:08которые не содержит в себе действия,
47:11которые легко скелятся, которые, в
47:13общем, собираются человеком и покрывают
47:16гораздо большее разнообразие. И мы уже
47:19только обучаясь на них, без всяких
47:21действий получаем такой вот хороший
47:22перформанс. Но,
47:26э, никто же нам не мешает их вместе
47:28слить и получить ещё лучший перфоманс.
47:31Поэтому теперь это стало мейнстримом.
47:33Все там современные, большая часть
47:34современных Влэмок, она там от Nvidia,
47:38от Майкрософта, ещё от кого-нибудь, она,
47:41в общем, теперь следует такому
47:42пайплайну, потому что мы берём,
47:45э, все данные, которые у нас есть для
47:48работотехники, условно говоря, Open
47:49Xbinment. Мы берём все данные, которые
47:52пока что нам доступны с человеческим ээ
47:57с человеческими демонстрациями
47:58бездействий. Всё это сливаем в одно, на
48:02этом обучаем латентные действия.
48:04Латентных действий ещё такое прикольное
48:06свойство, что они по сути унифицируют
48:09действия, которые между роботами разные,
48:12но в латентном пространстве они имеют
48:14одну размерность и примерно одинаковая,
48:16да, там есть облаци, не не вынес их на
48:19презентацию, но есть аблацыя о том, что
48:20они примерно семантически
48:23инходят одно и то же, да, условно
48:25говоря, если один робот повёл рукой
48:28влево и другой повёл влево, латентные
48:30действия будет похоже, несмотря на то,
48:31что в оригинальном акшнспейсе они Они,
48:33вообще говоря, разные. Ну, просто
48:36потому, что у роботов разные, я не знаю,
48:40разное тело. Вот. И та таких статей
48:43выходит просто великое множество. В
48:45общем, ты сейчас активно развиваешься
48:47область, ээ, условно говоря, там самое
48:49заметное, где это стало использоваться.
48:51И когда стало понятно, что это стало
48:53мейнстримом, это реально работает. И это
48:55не просто там просто ген, а большие дяди
48:57с большими деньгами взяли, попробовали
48:59это и оставили, потому что это даёт
49:02какие-то приросты. Это стала VLA от
49:03Nvidia, которая вот недавно вроде как
49:06вторая версия вышла. Гру
49:09от Nvidia. Она использует точно такую же
49:12пирамиду, как вы видите. В общем, это
49:14такая возникающая из раза в раз вещь,
49:17как и в лэмках. В лэмках здесь она будет
49:19точно такой же. У нас есть какое-то вот
49:21большое количество не очень э не очень
49:26качественных данных, но очень
49:27неразнообразных. Мы на них можем обучить
49:30эти действия.
49:31Потомнить на более качественных
49:33синтетических данных, которые содержат
49:36эти настоящие действия, да? Потом ещё
49:38взять реальных данных под нашу задачу,
49:41которые собрать много невозможно, но
49:42какое-то количество можно и они будут
49:45суперкачественные, и получится очень
49:47хорошая модель. И в общем там в статье,
49:50если прочесть, короче, они вот эти вот
49:52EG 4D, Epic Kitchen и всякое такое, это
49:56как раз данные бездействий, и они
49:58используют тот самый лопо.
50:02Вот. И Nvidia, конечно, пошли в этом
50:05дальше. А потому что у нас есть много
50:08видео. Видео
50:12не только с человеческими действиями, а
50:14в целом видео о мире, да, там видео
50:16движения, видео всяких процессов, видео
50:19работотехники. И мы всё это можем
50:21запихать в латентные действия и получить
50:23контролируемую генерацию видео, да?
50:25Потому что, когда мы просто
50:26предсказываем следующее состояние, мы,
50:30ээ, без действий, мы на самом деле
50:32усредняем, да, там или как называется,
50:34маржинализируем вероятности, и мы
50:36предсказываем какое-то среднее будущее,
50:38потому что, ну, реальный мир он
50:40стастичный, он мультимодальный,
50:43а когда мы делаем это с действиями, они
50:45позволяют эту мультимодальность,
50:47во-первых, разделять, во-вторых,
50:49контролировать после обучения. И вот
50:51Dreamgen, который совсем недавно вышел
50:53от Инвизии, обучает такую большую модель
50:55мира.
50:57Он вначале её обучает на
51:01они берут предобученную модель, короче,
51:02для генерации, они её фантюнят на
51:04работотехнические данные, потом эти
51:06роботтехнические данные размечают вот
51:08этими действиями. И у нас получается
51:09такой замкнутый цикл, что мы можем
51:11генерить себе ещё и синтетические
51:13данные, похожие на реальные с вот этими
51:15действиями.
51:17Вот. И вот я так всё рассказал. кажется,
51:20что вообще, ну, бомба какая-то, а не
51:22resarch. Э, надо всем использовать.
51:26Э, но почему-то во всех этих статьях ещё
51:29нет такого, что они буквально взяли весь
51:31YouTube и разметили его латентными
51:33действиями. Хотя, собственно говоря,
51:35обещание такое.
51:37Ээ, ну, и хотелось бы, конечно, в общем,
51:39если можно, почему бы не сделать так и
51:42получить какой-то совершенно заоблачный
51:44перфоманс. Но вот есть, на самом деле,
51:46не такой один маленький подвох у этого
51:48метода. в общем, о котором я как раз под
51:50конец лекции расскажу. В общем, статья
51:53из нашей лаборатории,
51:55которую мы будем представлять на смле.
51:58Когда я говорил о том, что действия они
52:01максимально предиктивны относительно
52:03следующего состояния, я немножко
52:05слукавил. Это работает только в тех
52:09случаях, когда данные были сгенерены
52:10этими действиями, когда они
52:12единственное, что описывают изменения
52:14динамики. Но в реальном мире оно не так.
52:17В реальном мире мир не меняется только
52:19под действием моих действий, он ещё
52:21меняется под действием ваших действий,
52:23условно говоря. И мои действия, они не
52:26предсказывают максимально следующее
52:28состояние.
52:30Вот поэтому представим себе такую
52:32картину. Ну здесь, конечно, в статье
52:34очень упрощённый бенчмарк, да, для того,
52:36чтобы протестировать саму гипотезу. Ну
52:39вы можете в голове представлять условно
52:41роботехническую группу, где на заднем
52:42фоне ходят люди, да? То есть это
52:45какой-то шум скалированный с реальными
52:46действиями. Рука чего-то делает, на
52:48заднем фоне что-то происходит, что с
52:50этими действиями скрилировано, но, в
52:52общем говоря, они на самом деле не
52:55связаны. То есть если вы выучите
52:57действия, они не должны содержать в себе
52:59движение людей. Здесь то же самое. Здесь
53:02какой-то вот, э, симулятор, где у нас
53:04есть очень простая модель, которая, не
53:06знаю, учится бежать туда-сюда, и мы
53:08добавляем в неё так называемые
53:10дистракторы, то есть на задний фон
53:11видео, которое постоянно играет, э,
53:14разное, но при этом важно, что она
53:16детерминированная,
53:18камера туда-сюда шевелится, цвет
53:20меняется. В общем, что будет, если
53:22обучить на этом лопо? Выучит ли он
53:25действия, которые похожи на реальные?
53:27Ну, в общем, окажется, что нет, он
53:29полностью сломается, да? Здесь график не
53:32совсем об этом, но важно, что мы можем
53:34как-то оценить качество латентных
53:36действий. Здесь мы делаем это с помощью
53:38линейной пробы, то есть обучаем линейный
53:40слой один или линейную модель ээ
53:44предсказывать реальные действия из
53:45латентных, да? Если латентные содержат в
53:48себе реальные, то мы линейно очень легко
53:50можем из них реальные вытащить. Ну вот
53:53оказывается, что когда мы обучаем без
53:55дистракторов, Лапо на самом деле очень
53:58хорошо находит такие действия, которые
54:00линейно мапятся в настоящий. Ну вот если
54:03мы добавляем хоть чуть-чуть
54:04дистракторов, оно больше не работает.
54:08Оно, по сути, находит действие, которое
54:11описывает дистракторы, просто потому
54:12что, ну, можно себе представить, у нас
54:15есть какое-то видео на заднем фоне,
54:17которое постоянно в одном порядке
54:20проигрывается, и оно гораздо меньшими
54:23усилиями и гораздо проще предсказывает
54:25следующее состояние, чем реальные
54:27действия, потому что агент там что-то
54:29обрекается, что-то какой-то
54:30стахастически по-разному мультимодально
54:32действует. Э зачем это предсказывать?
54:34можно просто предсказать следующее
54:36состояние а по дистракторам. И вот вам
54:39действие, которое на самом деле
54:41максимально описывает динамику.
54:44Можно ли с этим что-то сделать? Но мы
54:45попытались и на самом деле, в общем,
54:48довольно
54:50успешно с точки зрения пробы, да, мы
54:53восемь раз смогли улучшить её качество.
54:56Но здесь такой большой философский
54:57вопрос. Если наши действия реальные
55:00содержатся в латентонх, так что мы можем
55:02их оттуда линейно достать. Значит ли,
55:05что в этих латентных действиях больше
55:07ничего другого не содержится? Например,
55:10шума,
55:11да? То есть это вопрос о минимальности.
55:13Минимальны ли, да, там с точки зрения
55:15информации - эти латентные действия?
55:19Потому что если они минимальные и они
55:20содержат в себе шум хоть чуть-чуть, да,
55:23то если мы будем агентам их
55:24предсказывать, мы по сути будем
55:26предсказывать шум, да, который никакого
55:29не имеет отношения к тому, как правильно
55:32действовать. Ээ, в общем, на самом деле
55:35так и получается, да, потому что даже
55:37если мы восемь раз улучшим это качество,
55:40а здесь вот видно разница
55:43между дистракторами и недистракторами,
55:44да, синеньким там от наших улучшений
55:47почти ничего.
55:49на ванильном сетапе не изменилась, да?
55:51Мы там на дистракторах мы улучшили в два
55:54раза этот перформанс после фантюна на
55:58всех бюджетах реальных действий. Ну,
56:00вообще-то дыра большая между этими двумя
56:04сетапами. То есть можно сказать, что
56:06Лапо всё ещё не работает, да? Там вместо
56:08половины перформанса эксперта мы
56:09получили типа, ну, 15 там процентов
56:13плюс-минус СТД.
56:16Какое у этого есть решение?
56:18Ну, на самом деле, есть очень простое
56:19решение, которое в некотором смысле там
56:22улучшает результаты в четыре, в пять
56:24раз. И оно очень простое в том смысле,
56:27что мы совмещаем то, с чего мы начали.
56:30То есть у нас есть какое-то количество
56:32действий. Мы можем во время обучения
56:34латентных действий чуть-чуть дать ему
56:37супервижена, а, предоставив реальные
56:40действия. Так что мы будем их, если они
56:42есть, мы будем их линейно из латентных
56:44предсказывать, а если их нет, мы будем,
56:46как обычно, обучать лопу. Это на самом
56:49деле, э, в общем, почему это работает,
56:52это даёт небольшую подсказку, да, то
56:54есть, условно говоря, мы, э,
56:58граундим латентные действия на то, чтобы
57:00они были похожи на настоящие. И после
57:01этого оптимизация, короче, справляется
57:03сама. И от этого достаточно там, условно
57:05говоря, 2% от всего датасета, э, с
57:09реальными действиями.
57:11чтобы перформанс пополз вверх. Ну вот
57:15хорошее ли это решение? На самом деле не
57:18очень, потому что мы вернулись к тому, с
57:19чего начали. Нам всё ещё, как в IDM,
57:21нужен датасет с реальными действиями,
57:24который сильно больше, чем нужен для
57:26того, чтобы просто потом замапить и
57:28златные настоящие. Но, конечно,
57:31чуть-чуть меньше, чем если бы мы обучали
57:33только ID на настоящие действия, потому
57:35что лопо в процессе оно как бы мы даём
57:38ему чуть-чуть подсказочек,
57:40то есть их нужно меньше, чем надо было
57:42бы, если бы мы не обучали Лопо. И в
57:44процессе он там сам додумывает на
57:46остальных данных, как прийти к чему-то
57:49похожему на настоящее.
57:53С другой стороны, это сочетает в себе
57:55плюсы обоих подходов, потому что LAP
57:57лучше генерализуется, потому что он
57:59видел все данные, а IDM просто чуть-чуть
58:02ему помогло на тех маленьких данных,
58:04которые у нас есть. В общем, на этом, на
58:06самом деле, конец истории. Ээ вопрос
58:08открытый, как эти латентные действия
58:10будут развиваться дальше. У нас есть
58:12некоторые там в лаборатории
58:13представления, как это можно пофиксить
58:16так, чтобы минусов вообще никаких не
58:18осталось. Ну, в общем, пока это work in
58:20progress.
58:21Может быть, мы, в общем, разродимся
58:22статьёй ближе к сентябрю.
58:27В общем, на этом всё.