«Ну и пусть роботы кодят». Как исследователи AI освобождают мозги инженеров для человеческих задач

14 сентября 2018, 09:10
«Ну и пусть роботы кодят».

Юрий Гущин, сооснователь Banuba, партнер Виктора Прокопени в ИТ-проектах, и Дмитрий Пекарь, Data Science компании, рассказывают, как отдают роботам исследовать нейросети, чтобы фокусировать разработчиков на творческих, интеллектуальных и изобретательских задачах.

Как именно вы исследуете нейросети?

Юрий: Нейросети, в том виде, в котором они существуют сегодня, — это обучаемые системы аппроксимации функций. Они действуют по формулам в соответствии с заданным группами алгоритмов, запоминая и учитывая имеющийся опыт. В этом случае говорим про машинное обучение.

Дмитрий: Нейросеть состоит из нейронов — «кирпичей», соединенных синапсами по принципу биологических нейронов в разных вариантах. «Кирпичей» из которых строится нейронная сеть, относительно немного. Комбинаций их соединения — десятки миллионов. Задача программиста, который  исследует нейронные сети, — вручную соединять нейроны различными способами («перебирать» варианты) и исследовать результаты.

Юрий: Собрал, запустил, измерил, подсчитал, записал результат. Поменял, собрал, запустил, измерил, подсчитал, записал. Механическая работа. Для такого «соединить и проверить» человек не нужен. Это как раз тот случай, когда работать должна машина. Эксперты в области AI, компьютерного зрения не должны заниматься механической конвейерной работой.

Теперь робот-кодер в Banuba LAB «перебирает» вместо человека разные варианты соединения нейронов?

Юрий: «Перебирает», но по определенной схеме и определенному правилу. Алгоритмы планирования эксперимента с учетом прошлого опыта решают, какой путь будет короче. При их разработке этому моменту уделяется много внимания. Задача программиста — не только запрограммировать и понимать, в каком направлении роботу исследовать. Важно минимизировать количество итераций.

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

Юрий гущин

Один из «пионеров» ИТ в Беларуси. Начинал в 80-е. Опыт: проекты для BBC, НОК, Maxim Integrated, Samsung, 10 лет разработки игорных алгоритмов и ПО в Amatic, создание алгоритма по распознаванию циклов сна. В бизнесах, основанных с Виктором Прокопеней, отвечает за R&D. Фокус — технологиии компьютерного зрения, машинного обучения, AI. Десятки запатентованных изобретений, используются в своих же компаниях.

Дмитрий пекарь

MBA. PhD в области машинного обучения и эволюционных алгоритмов. На основании генетических алгоритмов запрограммировал робота, которые исследует архитектуры нейросетей.

Разработчики не боятся, что останутся без работы?

Юрий: Не боятся. Более того, они сами предложили роботизированную оптимизацию кода. И за год не раз проверяли, насколько хорошо программа исследует архитектуры. Сейчас это успешный кейс, результатам которого мы доверяем. У наших математиков хорошие скиллы в программировании, но точностью задач в 96%, к примеру, при распознавании лица технологиями компьютерного зрения, сегодня никого не удивишь.

Интересны решения, в которых доходишь до 99,2—99,8%. Все «бьются» за последние процентные доли. Таким цифрам нужны решения кардинально другого качества.

«Делегировать» задачи программе?

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

Генерацией роботом программного кода тоже никого не удивишь. Чем ваш робот-кодер отличается от многих других? Какая разница между между роботизацией и автоматизацией?

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

Дмитрий: Есть в Banuba LAB и простые системы. К примеру, найтли-билд в системах Continuous Integration.

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

Юрий: Корпоративно мы стремимся роботизировать и автоматизировать все рутинные процессы. Исследование архитектуры — не единственное направление.  

Где Banuba еще применяет роботизацию?

Юрий: Второй фокус — оптимизация производительности. Есть разные техники, на которых основываются роботы. К примеру, Google делает определенные вещи на технологии RNN (рекуррентные нейронные сети), мы — на генетических алгоритмах. 

Facebook  и его Tensor Comprehensions тоже используют генетические алгоритмы.

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

Вопрос в другом. Делает ли машина эти задачи лучше математика?

Юрий: Человек устал, отвлекся, неправильно определил решение, сделал ветку в другую сторону, получил не тот результат, сделал паузу, выпил кофе… Рабочий день закончен. Ушел домой, ночью спит, не работает. Его нельзя клонировать. А робота — можно.

Робот работает 24/7. За сутки один автомат исследует несколько тысяч архитектур, человек — десяток. Разница по производительности в сотни раз. Его решения получаются с меньшими вычислительными затратами и более высокого качества. Машине не жалко «выбросить» свой труд и начать все сначала. Она находит те оптимальные варианты, которые человек найти не может. Например, из-за стереотипов.

Ну, робот точно лишен стереотипов.

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

История, когда системный эксперимент — та вещь, где математик не справится на длинной дистанции?

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

Разве робот не ошибается?

Дмитрий: Сбои могут быть, когда реализуется новая идея или концепция, новая размерность или степень свободы. Когда не просто проверяется архитектура, а исследуется целое направление.

Юрий: Ошибки робота — это ошибки разработчика робота. Собственных ошибок он не делает. Это как отношения между разработчиком и продукт-менеджером, который неправильно понимает рынок, продукт и его позиционирование. Запрограммируешь ерунду — получишь ерунду. Только цена ошибки, сделанной машиной, меньше. А итерации быстрее.

Какие ошибки могут делать разработчики?

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

Дмитрий: Чем меньше вручную он пишет строк кода, тем меньше ошибок он сделает.  И тем больше останется ошибок на непонимание задачи, заблуждение или неизбежность.

Неизбежность?

Юрий: Потому что это эксперимент. Допустим, человек запрограммировал нейросеть, запустил, обучил — а получилось хуже, чем было.

Получается, айтишников пора заменить роботами-кодерами — они производительнее и самостоятельно не ошибаются?

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

В каких задачах? Что делает разработчик, пока робот исследует нейросети?

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

Юрий: У разработчиков Banuba LAB высвобождается время на чтение научных исследовательских статей, на изучение опыта и результатов других.

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

Так вы видите трансформацию процессов в компании?

Юрий: У нас в компании сильно смещен фокус от «программировать» в сторону «думать и понимать», что мы делаем. Робот генерирует программный код, собирает, обучает до определенной степени, проверяет, тестирует. А люди определяют, в какую сторону правильно проводить исследования.

Прокачиваете и софт, и хард скилы?

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

Юрий: 15-минутные скрам-репортинг-дейли Banuba LAB переросли в  ежедневные полторачасовые брейншторминги и Knowledge Sharing. Это время, когда команда думает. Как правило всплывает пара тем, обсуждаемых глубже. Достиг результата — интересного, противоречивого, отрицательного? Поделись.

Почти 100 лет назад Форд сказал, что думать — самая трудная работа, поэтому этим занимаются немногие. Ну и пусть роботы кодят — за логикой машин стоит только то, о чем мы сами их просим. Впереди тот, кто умеет думать.

Ваша работа — думать?

Дмитрий: Такие гиганты, как Google, Facebook, Snapchat и другие, заведомо обладают большими вычислительными, человеческими, финансовыми ресурсами. Они  могут быстро протестировать любую идею. И неважно, выстрелит она или нет.

Юрий: Но при избытке ресурсов возникает соблазн меньше напрягаться, что стартапы позволить себе не могут. И это их преимущество.

Дмитрий: Чтобы конкурировать, мы должны быть эффективнее во всем:  в исследованиях, во взаимодействии, в работе, в умении думать.

Юрий: Поэтому сначала очень много думаем, а только потом реализуем очевидно успешные идеи.

Человек обучил робота, а дальше что? Процесс самообучения?

Юрий: Самообучение роботов — святой грааль AI. Я бы аккуратно говорил об этом. Сказать, что роботы у нас самообучаются… Скорее, есть системы, которые существенно больше принимают во внимание результаты собственной работы и внешнего мира, нежели просто скрипт, который делает просто сборку.

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

Что ещё улучшает процессы в компании?

Юрий: Лучший способ гибче думать — это разнообразие.

Дмитрий: Разнообразия подходов и инструментария дает качественно разные результаты. Если использовать одну технологию, упремся в одни и те же проблемы и ограничения. И тогда остановимся. Нет препятствий одному взять Tensorflow, а другому Torch. Некоторые делают свои мини-фреймворки и мини-библиотеки — для них они удобнее общего инструментария.

Система, создаваемая для решения проблемы, обладающей разнообразием, должна иметь еще большее разнообразие, чем разнообразие проблемы. Вы сторонник Закона необходимого разнообразия Эшби?

Юрий: Я верю также в теорему Фишера Diversity prediction theorem — это красная нить, которая проходит в стартапе через все. Чем разнообразия больше, тем лучше результаты.

Читать и смотреть по теме


Banuba

Стартап, созданный летом 2016. Занимается частной наукой: исследованиями и разработкой в области компьютерного зрения, искусственного интеллекта, дополненной реальности. «Сердце» компании — Banuba Lab — находится в Минске, офисы — в Гонконге и на Кипре. В команде работает более 100 разработчиков в области AI, AR. В 2017 стартап привлек $5 млн, в планах — выпустить десяток приложений на основе «умных» технологий.

Обсуждение