В настоящее время круг решаемых в роботике задач ограничен применением классических подходов к управлению роботом. Использование машинного обучения – в частности, обучения с подкреплением – позволит применять роботов для решения трудно формализуемых задач в реальном мире. Мы расскажем об использовании обучения с подкреплением для тренировки робота, настраивающего оптический интерферометр. Робот получает на вход интерференционную картину с видеокамеры и, экспериментируя с доступными ему действиями, обучается настраивать установку без участия человека. Робот, обученный в симуляции, затем способен настраивать реальную установку не хуже, чем человек.
Запись: https://youtu.be/zD_0o6mTyiQ
Презентация: https://drive.google.com/file/d/1ycRhDb-jQkdtiCBTSjaDQ2sgeoy5HJ4q/view?usp=sharing
(00:00:00) (Начало записи)
Николай Михайловский: Добрый день! Я Николай Михайловский, генеральный директор компании «НТР». У нас сегодня очередной научно-технический вебинар по машинному обучению, который «НТР» вместе с Высшей IT-школой Томского государственного университета. И сегодня нам Дмитрий Сорокин из Российского квантового центра будет рассказывать про обучение с подкреплением для робота, который интерферометром управляет. Правильно я понимаю?
Дмитрий Сорокин: Да. Абсолютно правильно.
Николай Михайловский: Хорошо. Мне кажется, кворум уже собрался. Дмитрий, передаю вам слово.
Дмитрий Сорокин: Меня зовут Дмитрий Сорокин. Я – меня уже представили – научный сотрудник Российского квантового центра. И сейчас я хочу рассказать о нашей работе, которая называется Interferobot. В этой работе мы с помощью обучения с подкреплением настраиваем оптический интерферометр. Данная работа была представлена на конференции ЮРИПС (00:01:10). И так же я расскажу о том, как мы эту работу развиваем дальше.
Для начала действительно стоит пояснить о том, что такое «эффект интерференции», на котором и работают интерферометры. Если у нас есть некоторая поверхная жидкость, то на ней могут бежать волны. И в зависимости от разности фаз между двумя волнами, они могут интерферироваться. И интерференция может быть или конструктивная, или деструктивная. В зависимости от разности фаз.
Тот же самый эффект был обнаружен Томасом Юнгом в двухщелевом эксперименте для когерентного лазерного света. То есть в этом случае, так же пропуская лазерный свет через две щели, мы можем наблюдать интерференцию. И это подтверждает, что свет является не только частицей, но еще и волной.
Теперь рассмотрим, что такое интерферометр. В данной работе мы занимались настройкой определенного класса интерферометров, который называется «Интерферометр Маха-Цендера». В этом интерферометре луч лазерного света разделяется на два пермсветоделителя. Затем нижний луч отклоняется зеркалом. И после этого оба луча объединяются. И их можно смотреть с помощью камеры. И, если у нас есть разница в оптическом пути между двумя плечами, то мы будем наблюдать интерференцию.
Интерферометры сами по себе используются в достаточно большом количестве применений, в частности для спектроскопии, для систем навигации. Они также использовались в детекторах LIGO и Virgo для обнаружения гравитационных волн. И также их можно использоваться для измерений шероховатостей поверхностей.
Для того, чтобы использовать интерферометр, его изначально нужно настроить. То есть, если мы хотим уметь очень точно определять разность оптических путей при внесении каких-то элементов в эти оптические пути, мы должны изначально их выровнять практически идеально. И на этом рисунке слева изображен настроенный интерферометр, а справа – ненастроенный интерферометр. И видно, что, если у нас интерферометр настроен, то оптические пути практически совпадают и мы имеет конструктивную интерференцию.
В случае с интерференцией используется метрика, которая называется «видность». И считается она достаточно просто. Нам нужно всего лишь знать максимальную и минимальную интенсивности света и построить с помощью них обезразмеренную величину, которая измеряется от 0, когда интерференции нет, до 1, когда интерференция идеальна.
Как же настраивают интерферометр? На этом рисунке изображен интерферометр, у которого есть некоторая отстройка и два луча падают на камеру не параллельно друг другу, то есть они, во-первых, не параллельны, во-вторых, они падают в несколько различные точки камер. И интерферометр подстраивается с помощью двух управляемых зеркал, движения которых на данном слайде обозначены зеленой стрелочкой. И для того, чтобы иметь возможность визуализировать разность фаз, также меняется фаза опорного пучка с помощью пьезо-зеркала (00:05:32).
(00:05:32)
Слева изображено, как получается интерференционная картина. Мы видим два пучка, которые здесь называются «Beam1» и «Beam2». И амплитуды у них вот такие Гауссы (00:05:52). И когда они складываются, они интерферируют следующим образом, и получается вот такая интерференционная картина.
Также справа изображены видео, которые получены с помощью лабораторной установки. И правое видео показывает, как выглядят пучки при настроенной интерференции, а левое — при расстроенном интерферометре.
Дальше я хочу рассказать, как выглядит экспериментальная установка. С точки зрения экспериментальной оптики она довольно-таки простая. Потому что, когда делаются большие квантово-оптические эксперименты, оптическими приборами занимается практически весь оптический стол. Но интерферометр является очень важной частью, которая входит в большинство экспериментальных установок. На этом рисунке отмечен лазер. Луч из него светоделителем делится на два плеча. Потом они объединяются вторым светоделителем. И смотрят с помощью камер. И так же фаза опорного луча меняется с помощью пьезо-зеркала (00:07:21). RL-Agent может управлять зеркалами с помощью таких моделизированных (00:07:35) подвижек и смотреть на видео данные с камер. Задача ставится в том, чтобы, получая данные с камеры, понимать, в каком состоянии что нам нужно делать и управлять оптическим элементом.
Николай Михайловский: У нас тут есть скверный (00:07:54) вопрос: «А где располагается объект, шероховатость которого мы хотим исследовать на интерферометре?».
Дмитрий Сорокин: Я не очень экспериментатор. То есть я занимаюсь машинным обучением. Но смотрите. Интерферометр позволяет измерять разность фаз между двумя лучами. И те объекты, которые мы измеряем, мы должны вносить в одно из плеч интерферометра. То есть, если у нас есть какое-то вещество и мы хотим померить его коэффициент преломления, то есть хотим померить, насколько изменится оптический путь в этом веществе, то нам достаточно его внести в это плечо интерферометра. Аналогичные схемы существуют и с шероховатостью. Но деталей я сейчас не могу привести. Надеюсь, что я ответил на вопрос.
Про пьезо-зеркало (00:09:06). Пьезо-зеркало (00:09:07) — это такое зеркало, которое ходит вперёд и назад, и помогает нам визуализировать разность фаз между двумя пучками. И вот здесь приведен примерный график позиции пьезо-зеркала (00:09:28) от времени. Амплитуда его движения должна быть порядка длины волны.
Теперь вещь, которая уже больше относится к машинному обучению. Это то, как мы ставили задачу для RL-Agent и как мы его учили. У нас есть такая оптическая установка. И истинным состоянием этой установки является не так уж и много.
(00:10:07)
Состоянием этой установки являются волновые вектора и положения пучков на камере. Но этой информации у нас нет. А то, что мы видим, мы видим изображение с камеры. И так как у нас пьезо-зеркало (00:10:36) движется, то в качестве Observation мы берём 16 последовательных картинок, которые получены за прямой и обратный проход пьезо-зеркала (00:10:48). Сейчас мы решаем задачу в постановке дискретных действий. Поэтому действиями у нас являются повороты зеркал на определённые углы. И каждое зеркало может поворачиваться в двух перпендикулярных плоскостях. И мы здесь выбрали три величины углов. Таким образом, с действиями ничего не делать, у Agent получается пространство действия, равное 25.
Дальше интересный момент, как мы рескейлили (00:11:32) Reward. В случае интерференции у нас есть величина «видность», которая определяет качество настройки интерферометра. Однако, для практических применений разница между видностью 095 и 098 очень существенна. И, чтобы эту разницу показать и Agent, мы видность рескейлили (00:12:01) с помощью такого логарифма. И ограничили эпизод 100 шагами. Для удобства.
Николай Михайловский: У нас есть ещё вопросы. Михаил Усачёв спрашивает: «Какие трудности, недостатки есть в существующих методах настройки. Что обусловило переход на ML (00:12:29)?».
Дмитрий Сорокин: Хороший вопрос. Существующие методы настройки – это настройка руками. Как она производится? В случае экспериментов собирается экспериментальная установка, а потом очень долго и очень аккуратно юстируется. Но это полбеды. Потому что у вас установка собрана, в ней не один, а, может быть, пять интерферометров. Вы их аккуратно отъюстировали. И вы начинаете проводить свой эксперимент. Но эксперимент проводится не за один день, а может длиться порядка месяца. Оптические установки имеют свойство расстраиваться из-за различных колебаний.
Николай Михайловский: Мышка бежала, хвостиком махнула.
Дмитрий Сорокин: Да. Даже несмотря на то, что оптический стол имеет амортизацию, всё равно. И настройка должна проводиться очень точно с микрометрической точностью. И хотелось сделать такую вещь, которая бы могла самостоятельно эту установку подстраивать. ML (00:13:43) здесь нужен для того, что мы работаем с картинками. Если бы мы смотрели только на видность и пытались идти просто жадным образом в сторону увеличения видности, ходя с каким-то шагом, в случае расстроенной установки мы бы не пришли к успеху совсем, потому что видность практически везде «0», кроме достаточно узкой области. В этой достаточно узкой области такая политика бы работала, но она опять была бы неидеальной.
Николай Михайловский: Дмитрий спрашивает: «Каким образом были выбраны дискретные величины углов?».
Дмитрий Сорокин: Дискретные величины углов в этой постановке задачи – это гипер-параметр. Тут есть важная величина αmax. Что это такое? Картинка, которая приходит на вход Agent, имеет размер 64 на 64 пикселя. И размер этой картинки достаточно грубый. И, если мы будем сильно отклонять зеркала, то размер интерференционных полос может стать меньше пикселя. А это будет очень плохо, потому что в этом случае будет происходить такая вещь: мы отклоняем-отклоняем зеркало, полоски уменьшают, уменьшаются и уменьшаются, а потом раз – и они начинают увеличиваться.
(00:15:27)
Чтобы этого не допустить, мы ограничили максимально область действия Agent величинами αmax. 1/10 — это 1/10 максимального отклонения, то есть чтобы с помощью большого шага Agent смог за 10 шагов грубо настроиться. А другие величины для более тонкой настройки. С непрерывными действиями теоретически Agent мог бы работать лучше — я про это попозже расскажу — но там возникает очень много своих сложностей. А это пруф оф консат (00:16:13), который очень даже хорошо работает.
Николай Михайловский: У нас сегодня на удивление оживлённая дискуссия. Глеб Куликов спрашивает: «Но ведь начальную грубую юстировку вы все равно проводите руками? А чем тогда работа Agent отличается от перебора вариантов?».
Дмитрий Сорокин: Работа Agent – это совсем не перебор вариантов. В этом случае RL намного лучше — в моем понимании — чем генетические алгоритмы и другие подходы без градиентной оптимизации. Почему лучше? Потому что то, что Agent учит, он учит алгоритм настройки. И я чуть позже покажу видео того, как Agent настраивает. То есть он видит интерференционные полосы. Он понимает их размер. И он понимает их угол. Из этого понятно, в каком направлении нужно зеркала вращать. Вращая зеркала в нужном направлении, Agent переходит в следующее состояние, в котором он тоже понимает, в каком направлении нужно вращать зеркала. А если бы мы делали какой-нибудь генетический алгоритм или какой-нибудь поиск, то он бы никак не использовал то, что он видит, то есть с помощью картинки понимать, куда идти.
И наш метод заключается в том, что мы написали симулятор интерферометра. На симуляторе обучили вот такого Agent. Потом запустили на экспериментальной установке. И он работает. Он работает хорошо. И мы сравнили то, как он работает, с тем, как настраивает человек. И результат получился несколько лучше, чем у человека.
По поводу того, что юстировка изначально проводится человеком. Она проводится. Но если эксперимент долгий, то интерферометр расстраивается. А подстраивать его по кнопке очень хочется.
Николай Михайловский: Вы ответили уже на вопрос Дмитрия. «Пришлось сделать виртуальную среду для Agent, чтобы тестировать RL-модель с высокой скоростью итераций?». Ответ, судя по всему, «да».
Дмитрий Сорокин: Да. И не только тестировать, но и обучать, так как для обучения требуется… Я дальше расскажу, какая скорость у нас получилась на установке. Обучать с нуля на установке — это малореалистичный сценарий.
Николай Михайловский: Дмитрий Башкирцев спрашивает: «То есть у вас Machine Learning решает дифференциальное уравнение в системе с положительной и отрицательной обратной связью?».
Дмитрий Сорокин: Не совсем так. Он решает не диффур. Я не совсем понимаю, причём тут дифференциальные уравнения. Если мы аккуратно напишем уравнения, которыми задается видность, то мы получим зависимость от истинных положений зеркал. И, зная истинное положение зеркал, очевидно, что мы можем настроить интерферометр за один шаг. Просто зеркала подвернуть так, чтобы они стояли параллельно. Интерферометр настроен. Успех. Однако, когда у нас есть обычные экспериментальные зеркала, мы сталкиваемся с рядом проблем. Первая проблема. Мы не знаем их истинного положения. То есть в моторчиках нет энкодеров. Те моторчики механизированные, которые используются в оптике, могут ходить на микрометрические углы, но в них нет энкодеров. А даже если бы и были, там, во-вторых, очень маленькие углы, во-вторых, эти моторчики проскальзывают, причем существенно, порядка 10%. И поэтому задача этим способом не решается. Но, исходя из состояний, то есть из видимой картинки, мы понимаем, куда вращать зеркала. И Agent решает именно эту задачу.
(00:20:56)
Николай Михайловский: Ник Линкер (00:20:59) спрашивает: «Результат работы Agent в том, что он, Agent, выдаёт значение всех углов правильно и вы потом эти углы явно устанавливаете руками?»
Дмитрий Сорокин: Нет. Совсем нет. Agent выдает значение, насколько нужно повернуть зеркало и сам его и поворачивает. То есть помимо симулятора мы ещё написали среду с точно таким же интерфейсом для эксперимента. Все элементы, то есть камера, зеркала, подключены к компьютеру. И Agent напрямую крутит всё.
Николай Михайловский: И у нас есть два соображения. Андрей Иванов говорит: «Это просто попытка притянуть сюда ТАУ (00:21:47), но RL — это другое». А Николай Кириллов замечает: «Если хотите исследовать шероховатость, обратите внимание на голографические схемы, скажем, спектр интерферометрии. Здесь не та схема. Спасибо». Давайте продолжать.
Дмитрий Сорокин: Давайте. Дальше про нашего Agent. Здесь, справа, изображены интерференционные полоски. Это примерно те картинки, которые видит Agent. С точки зрения машинного обучения, тут нам, с одной стороны, повезло, потому что паттерны достаточно простые, они сверточными (00:22:30) сетками хорошо распознаются и более-менее хорошо работают. Из сложных моментов тут можно выделить то, что яркость картинки разная в зависимости от того, пучки сведены или разведены, как понятно из физики. Это первое. И второе. Есть ещё сложный момент, заключающийся в том, что углы между пучками понимать просто: если у вас есть угол, вы видите полоски, и ширина полоски более-менее однозначным образом связана с углом между пучками. Однако второй момент. Если вы уже поставили свои два пучка параллельно, но у вас есть некоторое расстояние между их центрами на камере — этот момент уже ловится гораздо сложнее, потому что картинки начинают быть очень похожими. Такие два момента я хотел проговорить. Reset происходит так, как я уже сказал. Мы определились с некоторой интересующей нас областью углов. А потом делаем reset. Рандомно расстраиваю установку внутри этой области. В этой работе мы использовали _____ (00:23:53) со следующими параметрами: replay буфера общим числом шагов, учили на карточке NVIDIA. И всё обучение занимает порядка десяти часов. Архитектура тут самая базовая, которую использовали deepmind (00:24:20) в статье про нэйч диквен (00:24:21), который играл в atari игры (00:24:22).
Николай Михайловский: Нас ещё спрашивают. Дмитрий спрашивает: «Приходится ли подбирать коэффициенты для реального физического мира после тренировки Agent в синтетическом окружении? И, если да, то каким образом это происходит?».
Дмитрий Сорокин: Тоже хороший вопрос. Тут нам очень повезло. Я в конце покажу графики. Как всегда в RL, когда вы что-то учите в симуляции, а потом запускаете на реальном роботе, у вас есть такая величина, как разница между симуляцией и реальностью. В английском его называют syntorial gap (00:25:04), и он всегда есть. И если он у вас очень большой, у вас ничего не работает. Если он у вас достаточно маленький, Agent работают, но несколько хуже. У нас второй случай.
(00:25:17)
Agent у нас работает, но несколько хуже, чем в симуляции. Есть различные способы преодоления этой разницы. Некоторые очень теоретически красивые, но из тех, что работают, работает в основном самый простой метод, когда вы в обучение добавляете побольше шумов. Причём добавляете их с таким расчетом, чтобы те данные, которые вы уже реально будете подавать на вход Agent, были как нечто среднее между этими шумами. Это метод, которым мы воспользовались. И как раз на этом слайде, справа, изображены пучки. Пучки изображены какие? Верхний пучок — экспериментальный. Если присмотреться, то можно увидеть вдоль него, во-первых, странные полоски диагональные, во-вторых, можно увидеть, что у него интенсивность не одинаковая по всему пучку, а почему-то больше к верхнему левому углу. Такие экспериментальные пучки. А средний пучок — это симуляция. Это просто квадрат гауссовой (00:26:39) функции. А нижняя картинка – это симуляция с шумами. Здесь мы добавили шумы в каждый пиксель. И видно, что несмотря на то, что мы не описываем именно наши экспериментальные шумы, он уже начинает больше походить на них, чем идеальная картинка.
Но шумами в пучках тут всё не ограничилось. И мы делали такие рандомизации. Мы варьировали радиус пучка на плюс-минус 20% каждый эпизод. Мы меняли яркость всей картинки на плюс-минус 30% каждый шаг. И яркость — это очень важная величина. Если эта величина стоит неправильно, то Agent совершенно может не работать, потому что нейронная сеть и активации могут не активироваться.
Мы добавляли белый шум. И также мы добавляли рандомизацию в движение пьезо-зеркала (00:27:50). У нас пьезо-зеркало (00:27:54) движется вперед и назад, причём вперёд оно движется медленнее, а назад оно движется быстрее, чтобы Agent по направлению движения полосок мог понимать, в какую сторону нужно крутить зеркала. И процент между тем, какую часть времени зеркало движется вперёд, а какую — назад, также варьировался.
Николай Михайловский: Николай Кириллов спрашивает: «Сколько времени ваш алгоритм юстирует схему в среднем?».
Дмитрий Сорокин: Я покажу это потом. Если говорить, я сейчас могу несколько ошибиться, но там речь порядка 50 минут.
Николай Михайловский: Дмитрий спрашивает: «Как подбирались рандомизации и аугментации для шумов?».
Дмитрий Сорокин: Хороший вопрос. Всегда рандомизация — это такая вещь, которая, во-первых, не должна быть слишком сильной, чтобы не сломать Agent совсем, а, во-вторых, должна быть достаточно сильной, чтобы быть похожей на то, с чем мы будем иметь дело в эксперименте. И цифры здесь ставились примерные, исходя из этих соображений. То есть попробовали сильно побольше — Agent учился значительно хуже. Остановились на тех величинах, которые, во-первых, Agent не ломали, во-вторых, помогали ему обобщаться на эксперимент. Также мы делали oblation на все эти рандомизации и получилось так, что они действительно помогают.
Николай Михайловский: Андрей Иванов спрашивает: «А яркость нельзя было нормализовать в диапазоне?».
Дмитрий Сорокин: Когда мы имеем дело с картинкой, то да, значение пикселей там нормализуется. Однако — сейчас постараюсь вспомнить, зачем это нужно было сделать — есть у нас такой момент, что может происходить пересветка. То есть, если у вас значения сложились больше, чем 255, то они будут единицей в достаточно большой области.
(00:30:40)
И в эксперименте это происходит сплошь и рядом в зависимости от того, какая мощность будет в каждом из пучков. И еще один немаловажный момент: мощности в пучках тоже нужно выравнивать, иначе по понятным физическим соображениям единичной видности вы никогда не достигнете. И, чтобы Agent понимал, что может быть такая пересветка, как раз яркость и варьировалась. Такой ответ.
Дальше обучение. Обучали мы полностью в симуляции. И на этом рисунке приведены графики, полученные в процессе обучения. Видно, что угол между пучками в логарифмической шкале уменьшается. Также уменьшается и расстояние между их центрами. И видно, что угол уменьшается значительно лучше даже во время тренировки симуляцией, чем расстояние между пучками. Но Agent всё равно учится их сводить.
Ещё два довольно-таки интересных графика — это два нижних. Если посмотреть на видность, то видно, что видность у нас растёт. Потом, начиная с некоторого момента, она выходит на константу. Если посмотреть на ретерн (00:32:14), суммарную дисконтированную награду, которую получает Agent в процессе обучения — тут это для _____ (00:32:23) — видно, что награда растёт больше, чем растёт видность. Это связано отчасти ещё и с тем, что мы, как мне кажется, достаточно правильно зарескейлили (00:32:37) награду, то есть добавили логарифм единицы минус видность (00:32:42), который в том числе позволяет Agent различать похожее состояние и оптимизироваться лучше.
Дальше. Тут справа показывается то, как Agent работает. Это экспериментальные данные. Agent видит полоски и Agent постепенно сводит пучки так, чтобы прийти в настроенное состояние. Настроенное состояние, когда два пучка мигают. И настроенное состояние примерно такое, но чуть получше. Вот такое. А тут, слева, запись того, как это выглядит в лаборатории. Вот у нас оптические элементы, и вот как раз механизированные подвижки, которые самостоятельно вращаются. А над правой картинкой, вверху, изображены действия, которые делают Agent.
Замечание: «Поскольку вы рассматриваете гауссовы пучки, то у вас видность будет равна единице только в определенном сечении. Как вы выбрали эти сечения — непонятно».
Может быть, я не совсем правильно понял вопрос, так как я всё-таки не оптик по образованию, но у нас есть два гауссовых пучка. И радиусы у пучков одинаковые. Они и выходят, и расходимости, и все параметры одинаковые. В задаче у нас нет оптических элементов, которые бы меняли радиус пучка. А расходиться они будут одинаково, так как у них оптические пути довольно-таки близки. И поэтому, если их идеально свести на камере, то есть так, чтобы у них оптические пути совпали, то мы получим единичную видность.
Николай Михайловский: Если я правильно понимаю вопрос — я тоже не оптик и довольно плохо оптику помню — если мы поставим наш фотоэлемент под углом, то видность единица достигнута не будет никогда?
(00:35:14)
Дмитрий Сорокин: У нас пучки падают по нормали на камеру. То есть камера юстируется так, чтобы она стояла по нормали к опорному пучку.
Николай Михайловский: Ник тоже нас спрашивает: «Там на графиках была верхняя граница по горизонтали 1,2 млн. То есть это больше 1 млн микродвижений моторчиков?».
Дмитрий Сорокин: Это шагов обучения Agent симуляции. Да, можно считать, что Agent симуляции делает микродвижения моторчиков и примерно за миллион этих микродвижений Agent обучается тому, как интерферометр нужно строить.
Николай Михайловский: То есть это не в фактической, не в лабораторной настройке, цифра?
Дмитрий Сорокин: Да, это за одну настройку. Это графики про то, как Agent учится. То есть Agent изначально не знает ничего. А потом вы ему говорите: «Вот, Agent, настраивай установку. Вот тебе такая награда». И Agent старается это делать. И суммарно, если просуммировать все его шаги по эпизодам, получится где-то 1 млн шагов, которые Agent требуются для того, чтобы обучиться. Но для того, чтобы настроить один раз, то меньше сотни.
Николай Михайловский: Дмитрий спрашивает: «Я правильно понимаю, что исходные данные 2D картинки обусловлены удобством для юстировки человека? Пробовали ли работать с временными рядами или многомерными изображениями?».
Дмитрий Сорокин: Изображения многомерны, потому что тут 16 2D-картинок, которые подаются на вход Agent. Почему 16 — тоже понятно. Если мы посмотрим прямо сейчас, как у нас мигает настроенный интерферометр, то мы догадаемся, что некоторые из картинок имеются вид яркого пятна, а некоторые практически черные. И, чтобы по этой картинке более-менее хорошо определялось состояние, мы объединяем картинки во времени для одного положения моторчиков в бач (00:37:34) из 16 картинок, про которые мы говорим Agent, что «это твоё состояние». А обрабатывать по одной картинке — это задача гораздо сложнее. И в таком подходе мы её не решали. Но кажется, что оно не даст большого выигрыша для этой задачи.
А насколько оно обусловлено настройкой для человека? Да. Человек тоже настраивает по камере. Но принципиально там нет сильно других измеряемых величин. То есть измеряемой величиной является картинка с камеры. Да, я могу её… Если бы у меня был один пучок, я бы мог её зафиксировать (00:38:29) гауссом. Я это и делал, когда подбирал радиус пучка для симуляции. Но когда у меня два пучка, то есть Agent смотрит ровно на то, на что смотрит человек. Искусственно мы никакие другие туда фичи не добавляли. Даже не добавляли туда видность. Agent знает видность только из функции награды. И сам может ее посчитать из этих 16 картинок.
Николай Михайловский: Дмитрий ещё спрашивает: «Как выбираете временную дельту между 16 картинками?».
Дмитрий Сорокин: Хороший вопрос и вопрос правильный. Я говорил, что у нас тут есть пьезо-зеркало (00:39:11), которое ходит вперед и назад. Чтобы картинки описывали состояние, мы должны снять 16 картинок за прямой и обратный проход пьезо-зеркала (00:39:23). Это мы и делали. У нас достаточно медленная камера, которая снимает 16 картинок примерно за одну секунду. Это число узнается из паспорта этой камеры. А потом мы подобрали частоту на генераторе такую, чтобы проход пьезо-зеркало (00:39:44) туда и обратно занимал примерно то же время. Поэтому просто снимаем 16 картинок с камеры с той дельтой, с которой камера их может выдать. А пьезо-зеркало (00:39:56) подбирается так, чтобы эти картинки были репрезентативны.
(00:40:02)
Спасибо. Давайте дальше. Идём дальше. Теперь самое интересное: как это всё работает. Тут мы сделали что? Мы взяли нашего Agent, который обучался в симуляции, который никогда не видел экспериментальную установку и запустили его в эксперименте. Среда имеет точно такой же интерфейс и все действия, который делает Agent, напрямую идут на механизированной подвижке. И тут мы сравниваем то, как хорошо работает Agent по сравнению с человеком в зависимости от времени в минутах. Люди были усреднены по нескольким сотрудникам Российского квантового центра. Interferobot был один.
Процедура была следующая. Мы проводили эксперимент в двух видах. Первый вид — сравнение по времени. Второй вид — сравнение по шагам. Почему так было сделано? Потому что наш Agent крутит зеркала на какой-то фиксированный угол, а человек может крутить зеркала на тот угол, на который он посчитает нужным. И в этой метрике наиболее естественно откладывать видность в зависимости от времени, в которое произошёл шаг. И тут видно, что Agent синий, а человек красный. И, так как человек может крутить зеркала на произвольный угол, то, имея достаточный опыт, Agent может понимать, на какой примерно угол надо зеркала крутить и быстро получает неплохую видность, где-то 0,8. Однако, для того, чтобы настроиться до конца, то есть до видности где-то 0,98, которая считается хорошей, если вы делаете эксперимент, человеку приходится пройти через некоторые состояния, в которых он сильно этот интерферометр расстраивает, если сходу не получается настроить его хорошо. Такие состояния связаны с тем, что, когда вы угол между пучками убрали в 0, у вас осталось расстояние между центрами, которые сложно увидеться. И одна из политик, из алгоритмов действий, которые делает человек — это развести пучки дальним зеркалом совсем и посмотреть, какое у них будет смещение и его потом обратно подкорректировать. Это было сравнение по времени.
А вот сравнение по шагам. Когда мы умеем управлять с компьютера экспериментальной установкой, очень просто дать человеку тот же интерфейс, который имеет Agent, то есть чтобы человек также нажимал на кнопочки на клавиатуре и зеркала поворачивались на такой же угол. И на нижнем графике приведено сравнение опять-таки человека и Agent. Но видно, что здесь они стали серьёзно ближе, но Agent по-прежнему имеет преимущество. И Agent в симуляции жёлтым. И из этого графика как раз видно, какая у нас разница между симуляцией и реальностью. И она обусловлена несколькими вещами. Одна из них довольно-таки существенна. Это прокручивание моторчика. Но вторая — это разница в изображениях и в шумах в этих изображениях.
Николай Михайловский: Николай Кириллов спрашивает: «На этом графике что такое отрицательная видность и больше единицы?».
Дмитрий Сорокин: Как строился этот график? Вопрос правильный, но ничего крамольного в этом нет. Как строился этот график? Мы сделали 100 эпизодов. По этим эпизодам посчитали среднюю величину. И они здесь изображены просто линиями. А потом отложили плюс-минус стандартное отклонение в обе стороны. Вот и всё. То есть, если в 95 эпизодах у вас всё хорошо, а в пяти эпизодах сильно плохо, тогда у вас будет большое стандартное отклонение, которое вы отложите и вверх, и вниз, и получите больше 1 и меньше 0. Видно, что это вылезание со временем уменьшается. И, если посмотреть на синего, на Agent, то у него стандартное отклонение в конце, когда интерферометр уже настроен, где-то с 70 шагов, очень узкое. Такой ответ.
(00:45:30)
И последняя точка в этой работе — у меня будет ещё вторая часть про продолжение — заключается в том, что… Давайте проанализируем. Что у нас вообще делает Agent? Какая у него получается политика? И давайте посмотрим на модельную задачу, когда нам нужно подняться на гору. В случае с подъемом на гору у нас есть две политики. Первая — это мы можем идти с маленьким шагом и оптимизироваться жадно, то есть оптимизироваться так, чтобы на каждом шаге у нас наша целевая функция, то есть видность, желательно не убивала, желательно росла. И вторая политика, которая потребует меньше шагов, но шагов большей величины, заключается в том, чтобы шагать сильно и в одну сторону, и в другую. Это оптимальная политика в смысле количества шагов. И мы наблюдаем то, что наш Agent действует как раз оптимально.
Это можно увидеть из этих двух графиков внизу слайда. На правом изображена видность в течение одного эпизода. И, если мы посмотрим на шаги, например, номер 24, 25, 26, то мы увидим, что на шаге 24 у нас был всё довольно-таки неплохо, на шаге 25 Agent пучки развёл, а на шаге 26 свел обратно. И, если мы построим этот же график в осях в фазовой плоскости, то есть в осях «условный угол» и «условное расстояние между пучками», то мы получим такой график, в результате которого Agent хорошо сводит пучки сначала по углу, а потом сводит уже больше (00:47:52) центра между ними. И тут, если есть вопросы по всему, что я рассказал на этот момент, задавайте.
Николай Михайловский: Нам уже коллеги сказали: «Ваш подход понятен».
Дмитрий Сорокин: Это хорошо.
И дальше у меня ещё есть несколько слайдов про то, что мы делаем сейчас. Это работа, которая прямо в процессе. У текущего подхода, который я презентовал до сих пор, есть два момента, которые можно улучшать. Первый момент, как справедливо заметили — Agent у нас с дискретными действиями. И на первый взгляд кажется, что, если дать Agent возможность крутить ручки вообще как угодно на любые действия, но в пределах допустимого, то Agent сможет настраиваться гораздо быстрее. И второй момент заключается в том, что интерферометр, который мы настраиваем, достаточно базовый. А в экспериментах всё происходит несколько интереснее. И в экспериментах имеют дело с такой картинкой. Когда у нас есть два луча, причём лучи с разным радиусом, когерентные — разный радиус может получаться, если у вас стоит какой-нибудь телескоп, а телескопом называется конструкция из двух линз — и с разной расходимостью ещё, мы хотим эти два луча совместить на камере и получить идеальную интерференцию. Для того, чтобы это сделать в экспериментах, добавляют два телескопа в этот настраиваемый луч. Мы пока экспериментируем с одним. Но, когда у нас тут всё заработает, мы перейдём на два. В текущей постановке отличие от той задачи, которую я рассказывал, состоит в том, что здесь добавился ещё один оптический элемент линзы. Здесь стоят две линзы и если расстояние между ними равно сумме фокусов, то они практическими на прохождение луча, и мы получаем идеальную интерференцию. И помимо двух зеркал здесь нужно юстировать ещё и положение этой линзы. И наш Agent по-прежнему видит картинки с камеры и действует уже теперь не только на зеркала, но ещё и на линзу.
(00:50:47)
Второй момент заключается в том, что мы делаем Agent с непрерывными действиями. И для того, чтобы это заработало, требуется ряд, если их знать, довольно-таки понятных вещей, если не знать – довольно-таки интересных. Тут изображен наш интерферометр. У нас ещё один оптический элемент линзы, которые мы можем двигать. Наш Agent по-прежнему видит 16 картинок. Действия Agent теперь лежат в пятимерном квадрате от -1 до 1. И что мы сделали? По-прежнему здесь остался член, в котором видность минус логарифм единица минус видность (00:51:40), который отвечает за то, что мы умеем различать видности, мало отличающиеся друг от друга, по абсолютному значению, но существенно отличающиеся по расстоянию между пучками. И аналогичный трюк сделан для действия Agent. Действия Agent рескейлятся (00:52:07) экспоненциально следующим образом. Здесь некий числовой коэффициент 1 000, который является условным гиперпараметром модели. А скейл (00:52:22) такой подобран для того, чтобы Agent не только понимал, что у него видность отличается, но мог еще и понимать, что и действия, которые он производит, тоже отличаются. Через эту величину градиент не течёт, если говорить непосредственно про задачу RL. Это величина, которая применяется уже внутри среды. И это был первый момент.
Второй момент заключается в том, что здесь добавлен член с отрицательной наградой, которая даётся только в том случае, если действия Agent привели к тому, что он мог бы выйти за границы разрешенной области. Это также помогает ему, во-первых, учиться, во-вторых, не эксплуатировать среду, потому что Agent мог бы просто уводить зеркала в край и уже на этом получать некоторую видность и считать, что это хорошая политика, когда она на самом деле не такая. И для Agent с непрерывными действиями мы уменьшили длину эпизодов.
Тут показаны экспериментальные картинки, справа, того, как у нас отличаются интерференционные паттерны в случае с линзой и случае без линз. И видно, что, во-первых, полосы интерференционные у нас могут загибаться теперь. Второй более важный момент — тут самый репрезентативные картинки не показаны, так как они пока не попали в наш ивайл (00:54:37), потому что тут ивайлили (00:54:42) только десять раз. И это результаты, которые получены только сейчас. И тут видно, что из-за линзы еще мы можем менять размер пучка. А так как меняется размер, у нас сохраняется энергия. Меняется его интенсивность. И теперь может сделаться так, что один пучок у нас очень тёмный, практически не виден, так как картинка у нас масштабируется. Но есть яркий пучок — это второй — чего нельзя добиться без линз.
(00:55:14)
Мы обучали DDPG со следующими параметрами. Он учился уже больше. Он учился 20 часов. И в качестве энкодера ему поставили адаптированную сетку в виде VGG11. Она получается более стабильной к экспериментальным шумам. Хоть человек юстирует установку, хоть потом Agent ее после человека настраивает — установка никогда не будет настроена прямо идеально. И всегда пучки у нас будут находиться не по центру камеры. Всегда у нас будут различные другие сложности. И нам нужна была архитектура, которая будет более устойчива к таким шумам, в частности, из-за наличия в ней макс пуллингов (00:56:17) и других вещей. С VGG11 этот метод работает. Работает довольно-таки неплохо. Такая у него архитектура.
И этот слайд показывает экспериментальное сравнение TD-3 Agent с дикуэном (00:56:40), с линзами. Тут статистика не очень большая. Поэтому на это можно смотреть пока достаточно условно. Но видно, что он настраивается гораздо быстрее. И это здорово. Другие энкодеры не пробовали, но тут задача достаточно простая. Тут нам не нужно распознавать _____ (00:57:10), но нужно, чтобы энкодер был достаточно устойчивый к тем шумам, с которыми мы работаем. Перешли на декуин (00:57:23) – да. Перешли на TD-3 – да. Именно потому, что декуин (00:57:26 для дискретных действий. То есть он просто возвращает вероятности всех действий, а потом уже, когда мы выбираем какое-то действие, мы выбираем или самые вероятные, если мы хотим евалица (00:57:45), если мы хотим уже применять эту политику, или с какой-то небольшой случайностью выбираем неоптимальное действие, чтобы Agent мог исследовать среду и лучше обучаться.
Это наша группа. Часть группы у нас в Российском квантовом центре, а часть группы у нас в Оксфорде, и обоими группами руководит профессор Александровский _____ (00:58:19). Большое спасибо за внимание. Я готов ответить на оставшиеся вопросы, если они есть.
Николай Михайловский: Анна Машера (00:58:33) спрашивает: «А можно вопрос от менеджера? Зачем нужна такая настройка и можно ли настраивать другие сенсоры, например, камеры? Простите, если говорили об этом в начале. Опоздала».
Дмитрий Сорокин: Примерно, зачем нужно, я говорил. Мы занимаемся экспериментальной оптикой. И, когда ученые делают эксперимент, они собирают некоторую экспериментальную установку. Экспериментальная установка состоит из сотен, а иногда и тысяч оптических элементов, которые нужно очень точно установить на специальном оптическом столе, который гасит вибрации, отъюстировать, то есть настроить с микрометрической точностью, и затем уже проводить эксперименты. Базовым куском этих экспериментов является оптический интерферометр. И жизнь устроена так, что установки имеют место расстраиваться, причем делают это регулярно. И регулярно приходится их подстраивать и, в случае большой установки, этот процесс может занимать и часы. В случае одного интерферометра — меньше. И хочется сделать такую систему, которая бы по кнопке умела интерферометр обратно подстроить. Понятно, что в определённых пределах. Но те пределы, которые мы установили, очень широкие по зеркалам и по линзе, они покрывают большинство интерференционных картин, которые наблюдаются.
(01:00:05)
С камерами другая история. Я не очень понимаю, что такое юстировка камеры в этом смысле. Потому что мы крутим механические элементы, которые влияют на то, какие интерференционные картинки мы получаем. А параметры камеры, такие, как выдержка, не фиксируются (01:00:29). В случае с продажами камер это несколько не наш случай.
Николай Михайловский: Я немножко помогу вам ответить на вопрос Анны и расшифрую то, что имеется в виду. Имеется в виду то, что камеры бывают не настроенными на резкость для определенных объектов. И тогда Анне хотелось бы иметь алгоритм, который бы правильно объективы фокусировал. Для этого вроде бы есть алгоритмы, не связанные с enforcement learning (01:001:04), но, если хочется в enforcement learning (01:01:09), я думаю, это тоже можно.
Дмитрий Сорокин: Да. Это можно. Но enforcement learning (01:01:14) имеет под собой некоторые ограничения. Так как это deeplearning (01:01:21), вам нужно очень много данных. Это раз. Два — у вас получается в общем случае нетривиальная моделька, которая работает за какое-то время. И два – она чувствительна к тем данным. То есть лучше всего её использовать именно на тех данных, на которых вы учились. Но этот случай не про роботику.
Николай Михайловский: Дмитрий Башкирцев передаёт привет Львовскому. Ник линкер (01:02:01) спрашивает, как здесь поаплодировать докладчику. Если нет у нас больше вопросов… Есть у нас больше вопросов? Действительно, на удивление живой и интересный вебинар получился, несмотря на довольно узкую область. Я Нику даю возможность аплодировать в прямом эфире. И сам в некотором смысле вам аплодирую. Спасибо!
Мужчина: Спасибо, это было интересно.
Дмитрий Сорокин: Мне тоже было очень приятно вам рассказать.
Николай Михайловский: А ещё Дмитрий спрашивает: «Разве количества синтетических примеров (01:02:58) не хватило бы для deeplearning (01:02:59)-методов?
Дмитрий Сорокин: Это и есть deeplearning (01:03:02). В чём фишка RL еще в данном случае? У нас есть энкодер. И мы, с помощью этого энкодера, картинки обрабатываем в некоторое скрытое представление. Но в случае с deeplearning (01:03:24) у нас есть размеченный датасет. Вот в чём дело. То есть, если вы делаете классификацию, то у вас размечено, где какие классы находятся. Если вы делаете регрессию, то у вас есть правильные ответы. В нашей задаче мы не говорим Agent, в каком состоянии он должен крутить какое зеркало. Он выучивает эту последовательность действий самостоятельно. И в этом есть огромный плюс. Огромный плюс заключается в том, что, в случае с симулятором, мы можем сказать, где довольно-таки неплохое действие. Мы знаем, в какую сторону крутить зеркала. Условно. Но это может быть не всегда правильной политикой, потому что Agent точно не знает центра пучков, а пытается их каким-то образом выучить, понять, где они находятся. Условно, мы могли бы это делать в симуляторе. Если бы мы захотели такой же алгоритм обучения развернуть на эксперименте и у нас бы был быстрый эксперимент, который бы давал сэмплы как симулятор, мы бы могли развернуть RL на эксперименте. Мы бы не могли развернуть обучение с учителем на эксперименте. Почему? Потому что никто нам бы не разметил столько экспериментальных траекторий.
Николай Михайловский: Хорошо, Дмитрий. Спасибо большое. Спасибо большое всем присутствующим. До новых встреч. До свидания.
Дмитрий Сорокин: До свидания.
(01:05:05) (Конец записи.)