Обучение с подкреплением (Reinforcement learning)

Обучение с подкреплением

Сергей Колесников

Project Lead at Catalyst, R&D Lead at Tinkoff, Researcher at MIPT & Yandex

Саркис Григорян:

Добрый вечер, четверг, 19:00 и мы традиционно встречаемся в студии радио Mediametrics в эфире передачи «Искусство интеллекта». Сегодня у нас в гостях Сергей Колесников. Сегодня мы поговорим о таком направлении в искусственном интеллекте, как Reinforcement Learning. Сергей является разработчиком одного из немногих русских фреймворков в машинном обучении Catalyst, также является R&D Lead в Tinkoff и исследователем в МФТИ и Яндексе. Ещё Сергей неоднократный призёр крутых международных соревнований по искусственному интеллекту, скажем так. Поэтому уверен, что сегодня будет беседа очень интересная. Сергей, большое спасибо, что нашёл время.

Сергей Колесников:

Спасибо большое, на самом деле, много чести слишком. Делаем что можем.

Саркис Григорян:

Это классно. Такое большое представление, такой, может быть, немножко провокационный вопрос. Тебе самому где интереснее из всех этих мест? Душа куда лежит?

Сергей Колесников:

Мне, конечно, мой внутренний inclanation и то, из-за чего я вообще все это делаю, это конечно же, обучение с подкреплением, мой любимый Reinforcement Laerning, из-за которого я во всю эту с машинальную с Deep Learning, Machne Learning и прочее ввязался лет 5 ещё назад даже, даже чуть больше и продолжаю развивать эту историю. Кажется, наконец, медленно, но уверенно сдвигается. Pushing the limits и хочется верить даже, добьёмся каких-то интересных результатов в этом году. С каждым годом кажется, планочка всё повышается, хочется верить, что 20-й год станет переломным таким.

Саркис Григорян:

Скажи, очень большую рекламу такому направлению, как Reinforcement Learning дали работы Deep Mind, когда они Alpha Go, потом Alpha Zero, то есть это в Go победили человека Alpha Stars в StarCraft игру. Ты сам какое дальнейшее развитие видишь, что мы вообще ожидаем, что бы ты хотел сделать, что хочется самому.

Сергей Колесников:

На самом деле, если смотреть текущие тренды, там действительно за последние, начиная готов с 14-13-го RL очень активно развивалась именно благодаря прорывам Deep Mind, это по сути былo как с Computer Vision, Deep Learning в 2012-м году тот же самый скачок некоторый был, все заинтересовались. Потом было Open AI и все вот эти красивые хайповые истории с крутыми ботами. Сейчас можно заметить такой тренд, что люди постепенно пытаются отходить от каких-то игровых сред или задач и приходить к каким-то более Real Value Applications и использовать RL уже там. И это кажется мне, хочется верить, что в 20-м году это как раз перелом произойдёт. На самом деле, он уже есть, из примеров далеко ходить не надо, если посмотреть на работы Facebook, на работу Google, там активно продвигают тему использования того же самого RL в рекомендательных системах. И показывают, что хорошо работает. Это действительно такой хороший бизнес кейс, который вполне понятен, который действительно работает и приносит какое-то Value и интересен с точки зрения Application. Кроме этого, конечно же, есть применение всевозможного RL, точнее, его попытки, например, в медицине и прочем. Это кажется немножко более дорого в плане того, что если мы порекомендуем кому-нибудь другую пару кроссовочек вместо той, что он хочет, это будет одно дело. Если мы порекомендуем не то лечение, то это уже слишком дорого. То есть, на самом деле, сейчас происходит такой тренд, что RL из игровых сред медленно, но верно переходит во что-то действительно реальное, индустриальное, с Real Life Application.

Саркис Григорян:

Скажи, давай для зрителей, может быть, кто глубоко не знаком, правильно я понимаю, что основное отличие Reinforcement Learning в том, что он более обращён на среду, в которой какой-то объект что-то делает. И мы смотрим, именно задаём изначально среду, а потом смотрим, что там происходит. В отличие от того, от накопления просто каких-то данных, где есть правильные, неправильные размечены.

Сергей Колесников:

Да, задача RL, её постановка более общая. Если мы говорим про Deep Learning, например, Supervise, который в 90 % случаев используется, там в основном действительно какой-то дан Data Set, картиночки, тексты и прочее, дана какая-то разметка, котики, собачки или что-то ещё. И требуется просто по этому Data set, имея какую-то архитектуру, которая умеет переводить, например, картинки в какие-то числовые представления, какой-то функционал. И всё. Найти оптимум. Задача хорошо решается, и всё понятно. С RL ситуация несколько интереснее. По сути, у нас нет никакого Data set, у нас действительно задача формулируется тем, что, предположим, у нас есть некоторый агент, который может делать что-то. И предположим, у нас есть некоторая среда.

Саркис Григорян:

Прошу прощения, давай прямо идиотский пример. У нас есть какой-нибудь бурундук в клетке.

Сергей Колесников:

На самом деле, мне кажется, есть более хороший пример. Опять же, видео игры дают уникальный шанс хорошо всё объяснять.

Саркис Григорян:

Да, давай на видеоиграх.

Сергей Колесников:

Вспомним старый добрый Atari и вот эту игру, где надо отбивать платформой мячик и сбивать. У нас есть некоторая среда как раз с этими блоками, мячиком и положением нижней платформы. Среда эта, по сути, описывается вот этой самой картиночкой. У нас есть агент, это самая платформа. Мы хотим, чтобы агент в этой среде что-то максимизировал, например, вот этот reward за игру. По сути это может быть всё, что угодно, но всё-таки хочется, чтобы он умел хорошо играть, и жизнь его была шоколадом. Как раз здесь задача агента это чисто взаимодействие со средой, сначала совершенно рандомно, потому что он ничего о ней не знает, сделать так, чтобы всё-таки он по этому сигналу, который приходит ему от среды, тот самый reward за игру. Например, он поиграл одну сессию. Конечно же, он скорее всего, умер довольно быстро, потому что он не умеет играть. Его задача понять, что же надо сделать, в чем состоит задача этой среды просто по этому маленькому сигналу reward и научится играть в эту среду. И вот эта постановка задачи, она максимально general. Мы не говорим никакие данные, ни разметку. Мы говорим да, ты можешь делать вот это, вот у тебя некоторый сигнал, который говорит, насколько ты хорош. И при этом, что самое ужасное для RL, точнее сложное, что сигнал насколько ты хорош, он не нормирован. То есть нет каких-то граней. Ты понимаешь, что сравнить некоторые состояния, некоторые действия становится очень сложно. Потому что ты не знаешь, если бы ты здесь поступил как-то по-другому, может быть, в 10000 раз твоя жизнь была бы лучше. Да, действительно, это похоже на некоторую игру в жизнь.

Саркис Григорян:

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

Сергей Колесников:

На текущий момент имитировать жизнь животных наверное не надо.

Саркис Григорян:

Червяк, змейка, понятно, базовые какие-то такие. Ведутся ли такие исследования, в эту сторону что-то?

Сергей Колесников:

В плане что именно интересно? Например, сейчас вполне себе хорошо развиваются всевозможные направления роботики, где как раз строят вот этих шагающих роботов, либо всем известные роборуки, которые часто используются на производстве. Там как раз задача, если шагающее, как-то там пройти по какому-то сложному рельефу или быстрее пройти по какому-то рельефу оптимальнее. Если это роборуки, то, например, наиболее оптимально что-то поднять, если говорить про индустрию, там есть конвейерное производство, что там потребуется, то и хочется оптимизировать. Также задача довольно Real Life Problem, что называется, потому что кодировать это постоянно руками довольно сложно. Кажется, что весь замечательный плюс этого Deep Learning, что нам не требуется использовать какие-то правила для того, чтобы имплементировать те политики, которые мы хотим. Reinforcement learning, он как раз основывается иммено на всей вот этой красивой Machinery Deep Learning. То есть мы используем всё, что мы знаем хорошее из Computer Vision, из, например, обработки языков, и поверх этого учим ещё какой-то правильный контроль. Чем, в принципе, и замечателен Reinforcement Learning.

Саркис Григорян:

Скажи, пожалуйста, давай про Catalyst поговорим, потому что это достаточно уникальная история, потому что на российском рынке просто единицы фреймворков, раз, два и обчёлся. И вообще делать свой фреймворк, когда есть что-то такое большое, это же надо ещё замахнуться. Расскажи про Catalyst, расскажи, что ты хотел привнести, как это получается. Потому что очень хочется, чтобы таких вещей было побольше. Потому что без них невозможно развитие, в том числе, российской науки, российской инженерии в этом направлении. Но мы должны что-то своё делать, своё привносить, не пользоваться только TenzorFlow или PyTorch, Keras, что-то своё. Расскажи про это. Как появилась идея, что хотел, насколько сложно делать. Вижу, сложно.

Сергей Колесников:

Да, если говорить честно, тут хороший вопрос. Ты начинаешь задумываться, зачем ты всё это начал, черт возьми. Catalyst хороший проект, потому что любое свободное время теперь его нет. Душевно. На самом деле, всё было довольно просто. Так уж сложилось, что я очень люблю проводить всевозможные исследования, нравится мне это, и также у меня, можно сказать, такой Computer Science background благодаря Физтеху и тому, что программирую с 12 лет, работаю со второго курса, в общем как-то накопилось. И когда ты входишь в такую сферу, как Machine learning, Deep learning и прочее, тебе сначала всё это интересно, бодро, молодёжно, перебирать гиперпараметры, искать какие-то хорошие архитектуры. Но потом становится как-то скучно немножко. Потому что кажется, что просто ходить по всем привычным Jupyter ноутбучкам, в которых все Data scientist любят проводить свои исследования, это скучно. В плане того, что человеческое время можно потратить на что-то более ценное, чем просто перекликивание этих ячеечек, а потом это оказывается невоспроизводимым. Всегда хотелось как-то перейти на что-то дальше, чтобы ты могут удобнее всё это переиспользовать. Так уж сложилось, что я очень любил подписываться сразу на несколько проектов. Опять же, Deep Learning, на самом деле, если посмотреть, у него очень много общего. Захотелось просто в какой-то момент сделать некоторую вещь, которая бы помогала тебе какой-то такой инструмент, с которым бы ты ходил всюду, который бы ты мог спокойно переиспользовать и который бы хранил в себе просто все твои текущие знания, ты бы его легко трансферил между своими проектами и постепенно обновлял. Таким образом родился Catalyst, именно из того, чтобы собрать весь Knowledge, который у тебя есть в библиотеку, всё важное, весь этот технический стаф, технический part вынести в библиотеку. И чтобы когда ты приходишь к новому проекту, ты не думал о каких-то технических вещах, ты действительно думал о том, что ты как Researcher хочешь происследовать, о своих гипотезах, продуктовых кейсах, ещё каких-то кейсах. То есть больше думал о ценности, которую хочется решить, а не как написать ещё огромное полотно этого замечательного кода, который ещё может еще и в стол уйти, потому что довольно часто так происходит. Это как раз хотелось исправить. Хотелось продолжая recearch-ить, хотелось накапливать где-то и таким образом гинерализировать и Deep Learning, потом и Reinforcement Learning.

Саркис Григорян:

Когда ты понял, что надо это, ты собрал, условно, свою коробку с инструментами, которыми часто пользуешься, когда и как ты понял, что это нужно сделать достоянием общественности, привлечь к работе ещё кого-то. Одно дело, когда сам для себя что-то пишешь, что-то делаешь, какие-то свои наработки есть, но вот этот момент, как ты понял, что это, наверное, кому-то ещё нужно, что это несёт дополнительный какой-то value другим разработчикам. Я понимаю, сейчас там целая команда работает, я смотрю на GitHub много людей, которые что-то помогают, делают, дописывают. Как вот этот процесс. Мне интересно с той точки зрения, потому что это создание комьюнити на базе Catalyst. Просто для нашего рынка это очень редкое явление. На самом деле, по пальцам одной руки перечислим все фреймворки русские и ещё пальцев останется. То есть мне просто интересно с точки зрения этого развития, потому что это действительно для рынка важно.

Сергей Колесников:

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

Саркис Григорян:

Седло не поднимается, скорость не меняется.

Сергей Колесников:

Да, там много возможных кейсов, и до сих пор это продолжается, без этого никуда. Но ты все равно получаешь некоторый фидбэк, ты получаешь некоторую другую совершенно точку зрению, о которой ты не мог подумать, потому что каждый новый человек, это совершенно другой мир. У него другие задачи, он по-другому их решает, он по-другому понимает, как устроен Deep Learning. У него есть некоторые свои идеи, которые он тоже может привнести. Опять же, наверное, что хотелось, это именно пошерить это между людьми и собрать знания не только с себя, но ещё и с коммьюнити, чтобы это действительно стало некоторым центром притяжения знаний и дало возможность их распространять намного быстрее. То есть многие идеи, базовые, небазовые, благодаря этой архитектуре, этой экосистеме, они уже делаются намного быстрее, то есть проще. И порог входа сейчас, мы стараемся его снизить и разные другие проекты запускаем. Может сегодня видел, я радостно писал: февраль 20-го года встретили релизом экосистемы, наконец-таки, это ещё один поворотный момент, если честно.

Саркис Григорян:

Здорово, поздравляю. Скажи, как ты дальнейшее развитие видишь этого фреймворка, что бы ты хотел в итоге, есть какое-то понимание, или это просто исследование длиною в жизнь. Потому что изначально это просто из твоего интереса к исследованиям родилось. Ты это видишь как какой-то законченный продукт, есть там какое-то желание, чтобы его кто-то куда-то включил.

Сергей Колесников:

Да, еще один очень любопытный момент, что Catalyst как проект, он начался с такой проблемы, что хочется удобно просто обучать, чтобы можно было переиспользовать и так далее. Дальше внезапно, когда вдруг ты умеешь хорошо все обучать и переиспользовать, у тебя возникает новая проблема, например, предположим, ты обучил свою сеточку, тебе хорошо, у тебя лосс на валидации маленький, вообще отлично. Здесь внезапно надо это показать людям. И здесь новый камень преткновения для практически всех Data Scientist, чтобы показать это людям, надо написать микро сервис, бэкенд, может интеграцию сделать с каким-то чат-ботом или ещё с чем-то, чтобы как-то дать людям возможность это протестировать. И здесь новая проблема, и её пришлось придумать, как, например, это дело решать. Из этой новой потребности, из этой новой боли родился следующий новый проект Catalyst Scim, это уже reaction. То есть, по-моему, запустилась это всё в августе прошлого года. Скажем так, в марте, по-моему, мы хорошо так выпустили Catalyst прошлого года, то есть там был такой хороший релиз, которым уже действительно можно было хорошо, удобно пользоваться с некоторыми переработками, с некоторым User Friendly плюс-минус API. В августе уже дошли до того, что надо бы хорошо действительно делать всевозможный такой в Deep Learning Serving, чтобы можно было не только обучать, но и это куда-то диплоить и куда-то показывать, делать такое R&D, то есть ты обучил, задиплоил, собрал фидбэк и повторил этот лук, повторил этот цикл. Всё по классике. А сегодня, последние два месяца активно работали над ещё одним проектом, идём дальше, решаем новую проблему людей. Внезапно, когда ты умеешь хорошо обучать, хорошо диплоить, там есть другие проблемы. Например, когда я был в октябре, ноябре, сентябре прошлого года занимался New Reaps соревнованиями, мне так посчастливилось, у меня было три или четыре сервера, и на всех на них надо было что-то обучать. Всё бы хорошо, но это очень много экспериментов за раз, потому что экосистема написана, и действительно, там можно много чего проводить, огромное количество экспериментов. В день было иногда по 1000 и больше, и всё это надо было уметь агрегировать, собирать, понимать. И вот здесь внезапно возникла ещё одна проблема, как это делать. Из этой боли родился наш новый проект, продукт Alchemy, когда всю эту красоту можно выгрузить куда-то себе в веб, построить большое количество графиков, выбрать лучшую модель, ещё что-то и упростить себе вот этот анализ и sharing результатов между той же командой. И вот по сути из такого одного проекта это всё перешло уже в некоторую экосистему, которая пытается закрыть насущные боли рисечеров, инженеров и всех, кто так или иначе работает в области Deep Learning. Ещё в Reinforcement Learning, потому что я его также люблю.

Саркис Григорян:

Ты сказал, что по 1000 в день, это какой мощности сервера, или это просто не очень сложные вычисления. Потому что 1000 проектов в день обсчитывать.

Сергей Колесников:

Да, это были очень сложные задачи. Там можно было запустить их большое количество и через час, полтора, два уже получить какие-то результаты.

Саркис Григорян:

Туда, не туда, уже понятно.

Сергей Колесников:

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

Саркис Григорян:

То есть это такое, по сути, Engines, только для обучения сделали, как балансировка исследований, система, которая распределяет по серверам поток вот этих исследовательских задач.

Сергей Колесников:

Это пока всё в будущем, пока мы делаем максимально простую вещь. Да, вы можете обучать где угодно, просто это красиво складывается в единую удобную картиночку в едином интерфейсе, где вы можете всё это сравнить, проанализировать, графики посмотреть. Потому что сейчас что тебе интересно. Тебе интересно поставить задачу, гипотезу, которую хочется решить и посмотреть, как она решается, сравнить разные подходы. Сравниваются они стандартно через графики или другие какие-то метрики, которые впоследствии включим. Это такая основная, самая часто встречаемая боль, её действительно хотелось как-то решить. То, что там будет дальше, мы посмотрим в этом году, есть довольно большой список дел, которые ещё хочется совершить. Потому что планы наполеоновские с учётом того, что если есть хорошая экосистема, которая позволяет быстро проводить исследования, то можно всё это красиво подвязать. Можно совместить уже написанные пайплайны с какими-то дата сетами и автоматизировать выкладку этого всего, то есть диплоить. То есть концептуально мы можем прийти к такой красивой схеме, что даются данные для обучения, если мы говорим про Deep Learning. Запускается, в принципе, стандартный пайплайн, классификация, детекция, сегментация или НЛП какой-нибудь. Получается, эта стандартная модель, она сразу в сервис, и можно посмотреть, потыкать. Видно, что, в принципе, хорошо состыковывать даже текущие три проекта, можно закрывать огромное количество задач, огромное количество типичных моментов.

Саркис Григорян:

Рутинной работы много убрать.

Сергей Колесников:

Да, чтобы ты больше думал именно о том, что ты хочешь сделать, что прорисечить, а не о том, как именно ты это технически хочешь.

Саркис Григорян:

Да, какое железо, понятно. Скажи, я сейчас хотел спросить, но ты уже сам упомянул, давай про соревнования. Классно же, гордость, наши ребята, класс. Скажи, как вообще пришла идея участвовать. То есть в какой-то момент понял, да, я смогу, пойду со всем миром бодаться. Как это было? Это мне просто интересно. Меня, во-первых, всегда восхищали такие люди, действительно, это очень здорово, потому что это даже пусть глупо политически, скажу, но это имидж страны, это имидж нашего образования. И так все знают, что наши программисты и хакеры лучшие в мире, но все равно это некое есть. Мне, например, самому приятно, смотришь, в первых местах наши ребята и бьют очень крутые сильные команды. Часто в одиночку бьют команды. Это круто. Как?

Сергей Колесников:

Во-первых, я никогда в одиночку не бил, не надо, всегда были люди, которые помогали, поддерживали, с которыми мы все это сделали. Первый раз это было в 17-м году, тогда я был только на шестом, как раз перешёл на шестой курс, по-моему. Так сложилось, что у меня был ШАД, в ШАДе курс по RL, который я закрыл весной, закрыл его с каким-то безумным отрывом, потому что мне всегда было интересно. Я переписывал курс, мало кто вспомнит, но был такой фреймворк Tiana, когда-то в далёком 17-м году, на тогда мой любимый TenzorFlow, который я сейчас не очень люблю. Я посмотрел, что первое соревнование, NIPS тогда ещё конференцию, как много всего поменялось. И так вышло, что я был знаком с Михаилом Павловым, это человек, который состоял в команде Pipe Vision, как раз была такая очень сильная команда рисечеров, которые действительно занимались RL, участвовали в разных соревнованиях и прочее. Но почему-то перестали с некоторого момента. Но мы сошлись с Мишей и совместно затащили тот ещё давний первый NIPS Learning To Run 17-го года. У нас были просто ужасные мощности на тот момент, у нас был один сервер на двоих без ГБУ. Божественно, что может прийти лучше.

Саркис Григорян:

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

Сергей Колесников:

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

Саркис Григорян:

То есть даже просто можно было сказать, это он и всё, даже не важно, что он делал. Мне кажется, это уже для всех понятно было. Дядька серьёзный. Это же он построил эту машину с автопилотом, которая в восьмидесятые еще каталась по Европе.

Сергей Колесников:

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

Саркис Григорян:

То есть несложно было.

Сергей Колесников:

Было сложно.

Саркис Григорян:

С полпиночка. Или ты это постфактум фактом сейчас говоришь.

Сергей Колесников:

Полпиночка.

Саркис Григорян:

Оказывается, это так.

Сергей Колесников:

Нет, просто, скажем так, это оказалось возможным. То есть всем кажется, что это очень сложно, что-то ещё, но нет, всё намного проще. Можно. Оказывается, попробовать и всё получится. Но это действительно был очень сильный мотивирующий скачок, это некоторый такой щелчок, что это возможно и всё. В следующем году, в 18-м, там уже был чёткий план, что участвовать в соревновании надо. Тем более, там ещё было между этими событиями соревнование Open IE, в котором мы с Мишей тоже поучаствовали, правда заняли четвёртое место. Сорвалось. Однако это ему не помешало прособеседоваться в том же самом Open AI, и сейчас он там радостно поживает. У меня сложилось другая история. Соревнования подходят, Миша в Open IE, кажется, решаться на новое соревнование он не будет. Здесь пришёл к тому, что в 2018-м году сошёлся с командой, был у нас Алексей Гринчик, Антон Печенько, и мы совместно втроём рисечили разные идеи. Как раз за соревнование 18-го года был написан Catalyst RL, из замечательной, более того, я был максимально против написания любых фреймворков после того, как начал писать Catalyst DL. Вот серьёзно, у меня было в личных записях написано: Серёжа, не пиши фреймворки, Research, пожалуйста. Но, к сожалению, к большому сожалению, из всего, что я пытался найти, из всего open source не нашлось буквально ничего, что бы могло действительно что-то решать, все мои потребности. И воспроизводимость, и скорость работы, и возможности конфигурации. То есть я поконтрибьютил 2 месяца довольно много времени если подумать в разные библиотеки, ничего меня не удовлетворило, никак меня не подняло на строчечку выше на новом соревновании. Потом плюнул на всё и подумал, ладно, нам нужно вот это вот это. Две недели спустя был написан ужасный Proof of Concept, что называется, говнокод, но который умел распределённо считать мой замечательный RL и который внезапно позволил нам запрыгнуть на второе место соревнований просто сразу. Но опять же, это был август, поэтому не считается.

Но вот этот успех, он позволил тоже замотивировал нас, что надо рисечить, надо развивать это дело. И после долгой борьбы до ноября, до двадцатых чисел ноября мы уже тягались очень сильно со Шмидхубером, заняли, к сожалению, только третье место. Очень обидно, на самом деле, потому что отрыв от команды Шмидхубера у нас был, если не ошибаюсь, три очка Reward из, прости господи, 10.000. То есть отрыв был прямо совсем чуть-чуть.

Саркис Григорян:

Доли процентов.

Сергей Колесников:

Да, кажется, чуть-чуть бы его, ещё бы чуть-чуть что-то придумать.

Саркис Григорян:

Статистическая погрешность.

Сергей Колесников:

Но не вытянули. Но там были другие приколы, что первое место внезапно заняла NLP команда Baidu, это было внезапным, что мы планировали, что надо будет тягаться со Шмидхубером, а здесь пришёл кто-то потяжелее.

Саркис Григорян:

Такая тёмная лошадка была, от них просто не ожидали или почему внезапно? Baidu, большая компания, наверное, там много серьёзных специалистов и свои лаборатории. Или они просто до этого не участвовали?

Сергей Колесников:

Во-первых, они до этого не участвовали. Во-вторых, с нашей точки зрения, участие большой компании в каком-то соревновании, это немножко странно. Это как конфетку у ребёнка отобрать, я не знаю, как ещё. Плюс это не было понятно, потому что до конца соревнований никто не раскрывал, кто это. То есть всё прояснялось, кто откуда, только когда остаётся час до конца соревнования и здесь все выясняют, это Baidu, это Шмидхубер, это ещё кто-то. То есть те топовые ребята, которые красиво забрались на leaderboard, они если забираются, то конечно же показывают, что они молодцы, если не забираются, то никто об этом не знает. Это всё логично. В принципе, 18-й год был очень крут, потому что был такой core написан RL и, скажем так, потягались неплохо. Обидно конечно чуть-чуть, но в принципе, жить можно было. Даже дали специальный титан от NVIDIA, который приятно, их всего 20 в мире, и один у меня есть.

Саркис Григорян:

Которые не продаются, а только облачные.

Сергей Колесников:

Нет, по-моему, их вообще нет нигде, это специальный титан в SEO Edition, я наконец собрал сервак под него, по разным причинам только сейчас, полгода лежал просто так. Обидно, когда у тебя на полочке лежит такая махина. Пригласили на конференцию, ещё всякие приколы с получением канадской визы, когда тебя проверяют полгода и ты из-за этого не едешь в Канаду.

Саркис Григорян:

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

Сергей Колесников:

Честно, не знаю, но вообще, за Канадой есть такой грешок, что в связи с тем, что там последнее время проводится как раз вот эта конференция, внезапно под декабрь там огромный наплыв заявок, как я понимаю, и они просто банально не успевают всё выдать, возможно. Но их часто обвиняют в том, что это какие-то причины. Не хочу в это лезть, получилось так, как получилось, всё равно, в принципе, в 19-м году всё-таки смог сгонять. Это был ещё один мотивирующий фактор поучаствовать в соревнованиях в 19-м году, потому что хотелось съездить на конференцию всё-таки за что-то, скажем так, а не просто так погулять, походить, послушать, чтобы как-то с чем-то приехать, кажется так интереснее. И в 19-м году, в прошлом, опять же, работал уже не один, я работал с Валентином из Сколтеха. Мы там использовали, в принципе, уже некоторые наработки, которые мы имеем. Потому что за год Catalyst эволюционировал, много новых фичей добавили. Последние статьи имплементировали, что-то улучшили, что-то поправили. Здесь уже было попроще, но всё-таки некоторые моменты пришлось хорошо дорабатывать, и специфику какую-то учитывать, ещё что-то. И там конечно же до последнего держали некоторый туз в рукаве, чтобы с третьего места за последние 3 часа соревнований прыгнуть на второе.

Саркис Григорян:

То есть показывали некие промежуточные результаты выдавали, свой хитреж.

Сергей Колесников:

Да, там уже начались свои такие профессиональные трюки, когда ты понимаешь, за два года можно научиться валидироваться правильно. И тогда ты как только ты научился валидироваться правильно, ты можешь, в принципе, решение, которое ты отсылаешь, специальным образом занижать и примерно понимать, насколько они ещё стрельнут. Чтобы в последний момент, дай боже, чтобы интернету и тебе чтобы ничего не косячнуло, их отправить. Но здесь, кстати, был всё ещё приятный момент, что на первом месте был Baidu. Ну, OK, кто бы сомневался. На втором месте наша команда и на третьем месте, опять же, команда из России, что кажется очень показательным, очень приятно и хочется верить, почему кажется, 20-й год станет переломным. Очень хочется собрать такую специальную группу RL, NIPS или ещё чего-то, чтобы просто взять и, что называется, задоминировать конференцию просто. То есть собраться дружненько и всё захватить. Ничего сложного в этом нет, надо просто взять и сделать. И кажется, что у нас есть все requirements для того, чтобы это стало возможным. То есть у нас есть и кажется, что лучшее сообщество датасаентистов, это Open Data Science с огромным слаком на 40.000 человек, который всех объединяет, это действительно круто. И есть уже и наработки понятно какие, да и просто огромная школа, Физтех, МГУ, вышка, ШАД, то есть это огромная школа того, которая учит и про Development Soft Engineering, и про всю эту статистику, оптимизацию, Machine learning, Deep learning. То есть всё возможно, надо просто так организовать сообщество и кажется we can do it. И хочется верить, даже Baidu обойти себе вполне возможно.

Саркис Григорян:

Давайте. Скажи, я правильно понимаю, что инструментарий даже ваш фреймворк Catalyst, инструментарий очень помогает в таких конкурсах.

Сергей Колесников:

Безусловно. В чем причина. Писать всё с нуля можно, но всё-таки, на самом деле, писать сам фреймворк очень сложно. Потому что приходится делать его general, продумывать много разных возможностей вариантов его использования, и с Deep Learning это проще, с Reinforcement Learning это тяжелее за счёт специфики того, что ты должен уметь распределённые вычисления просто под дизайн. Иначе в Reinforcement Learning требуется только мощности. Скажем так. С другой стороны, если действительно писать что-то с нуля, что-то действительно хорошее, ты все равно придёшь к чему-то очень похожему на фреймворк, разве что с какими-то прибитыми костылями. Поэтому всё ещё хочется именно писать general solution, хочется верить, есть уже какая-то экспертиза, наработка, некое знание, как сделать лучше и переиспользовать это в дальнейшем.

Саркис Григорян:

У нас чуть-чуть времени осталось, скажи, условно, человек, берущий последнею версию фреймворка твоего GitHub, и ты со своим фреймворком, участвующий в этом конкурсе. У тебя же, конечно, свои какие-то ещё будут, самая новая версия или как?

Сергей Колесников:

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

Саркис Григорян:

Сыровато.

Сергей Колесников:

Development ветка была такая, которая впоследствии перекатилась в core, потому что там банально некоторые вещи были улучшены в плане взаимодействия базы данных и прочие такие технические.

Саркис Григорян:

OK. У нас между тем кончилось время. Спасибо тебе большое, что нашёл время, что пришёл. Очень интересная была беседа, надеюсь, что увидимся ещё снова в этой студии, если будет время. Спасибо.