В твиттере дискуссия про мову: может ли компания просить коммуницировать на беларуском?

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

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

Юрий Гущин, сооснователь 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 млн, в планах — выпустить десяток приложений на основе «умных» технологий.

«Те, кто подался на рассмотрение в „Лесту“, сразу терял из компенсации 2 зп».

Послесловие — что сотрудники думают о том, как уходит WG.

Читайте также
«Яндекс» выложил YaLM 100B — крупнейшую нейросеть для порождения текста в открытом доступе
«Яндекс» выложил YaLM 100B — крупнейшую нейросеть для порождения текста в открытом доступе
«Яндекс» выложил YaLM 100B — крупнейшую нейросеть для порождения текста в открытом доступе
Искусственный интеллект впервые разгадал кроссворд быстрее человека
Искусственный интеллект впервые разгадал кроссворд быстрее человека
Искусственный интеллект впервые разгадал кроссворд быстрее человека
Выходцы из Google готовят ИИ, который сможет использовать любой софт в мире
Выходцы из Google готовят ИИ, который сможет использовать любой софт в мире
Выходцы из Google готовят ИИ, который сможет использовать любой софт в мире
Нейросети против дизайнеров: кажется пришло время кому-то сменить профессию
Нейросети против дизайнеров: кажется пришло время кому-то сменить профессию
Bubble
Нейросети против дизайнеров: кажется пришло время кому-то сменить профессию

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже