Научная
деятельность
Университет ИТМО

Программист Александр Мордвинцев — о работе в Google, любопытстве и перспективах профессии

Выпускник ИТМО, а сейчас научный сотрудник компании Google Research в Цюрихе, Александр Мордвинцев посетил Национальный центр когнитивных разработок Университета ИТМО с серией лекций, посвященных дифференцированному программированию. Кроме разбора реальных кейсов и ценных советов для молодых специалистов, Александр рассказал ITMO.NEWS, как получил приглашение в международную корпорацию и перешел из software-engineer в исследователи, как запустил в интернете программу DeepDream, над чем работает сейчас и почему начинающим программистам стоит обратить внимание на современную биологию и химию.

От ИТМО до Google

Как складывался ваш путь после университета?

Я закончил ИТМО в 2010 году, потом начал работать в компании «Транзас». Сначала занимался морскими тренажерами, позже меня пригласили в другое подразделение. Они искали человека, который разрабатывал бы им компьютерное зрение, при том, что никто в этом отделе раньше не занимался подобными вещами, да и у меня опыта в этой сфере тоже не было. В первый год я собирал из доступных компонентов демонстрации разных возможностей компьютерного зрения в задачах с сегментацией карт и распознаванием дорожных знаков. Мне пришлось очень быстро ознакомиться с большим количеством информации по компьютерному зрению, причем с практической точки зрения — и как не удивительно, мне этот опыт понравился. Также я занимался 3D-реконструкцией из аэрофотоснимков.

Лекция Александра Мордвинцева в ИТМО
Лекция Александра Мордвинцева в ИТМО

Когда и как вам поступило предложение от Google?

Мне написала рекрутер в 2014 году — это было письмо с предложением пройти собеседование. Так что я сам не отправлял резюме и не искал каких-то путей, чтобы попасть именно туда. Но сама история того, как рекрутер вышла на меня довольно смешная. Она рассказала, что нашла мою фамилию в списке участников олимпиад по программированию среди российских школьников начала 2000-х годов. Видимо, она узнала, чем победители того периода сейчас занимаются, и так вышла на меня. Это удивительно, потому что я эти олимпиады уже давно не указывал в резюме. И вот так случайно именно они помогли мне найти эту работу.

На какую позицию вас пригласили?

Изначально в качестве Software-engineer. Но мне повезло попасть в команду, которая одна из первых внедряла нейронные сети в продакшн Google. Именно там я получил практический опыт: увидел, что это и как работает. Начал проводить эксперименты, а после того как один из них — DeepDream — стал популярным сначала в Google, потом за пределами компании, мне предложили перейти в исследовательское подразделение, где я работаю по сей день.

Лекция Александра Мордвинцева в ИТМО
Лекция Александра Мордвинцева в ИТМО

Любопытство и нейронные сети

В какой сфере вы проводили эксперименты?

В Google я познакомился с текущим положением дел в области искусственных нейронных сетей. Все то, что я знал до этого — что этим пробовали заниматься в 80-е годы, но тогда надежды исследователей не оправдались. А тут я был впечатлен тем, насколько хорошо это функционирует, намного лучше, чем я ожидал от компьютеров. Мне захотелось разобраться в этих процессах, и я начал проводить эксперименты. Ричард Фейнман говорил: «То, что я не могу построить — я не могу понять». Но обратное не всегда верно. Можно создать работающий механизм, который мы не сможем до конца понять. Мы строим, знаем, как обучать, но почему одни команды работают лучше, чем другие — понятия не имеем. Дело в том, что в этой области пока нет формальной теории, отвечающей на все вопросы. Поэтому я приступил к исследованиям.

DeepDream. Источник: deepdreamgenerator.com
DeepDream. Источник: deepdreamgenerator.com

То есть добиться той карьеры, которую вы имеете сейчас, вам помогло любопытство?

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

Карьера в Цюрихе

Попасть на работу в международную корпорацию — это трудно?

Думаю, что, если за плечами олимпиадный опыт кафедры КТ ИТМО, это не так сложно. В цюрихском офисе Google работают три моих одногруппника, плюс еще не один десяток людей с кафедры, которых я знал. Конечно, есть достаточно большой шанс завалить интервью, но мне с этим этапом повезло, наверное. Не могу сказать, что было архисложно.

Офис Google в Цюрихе. Источник: officesnapshots.com
Офис Google в Цюрихе. Источник: officesnapshots.com

А коммуникация на иностранном языке?

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

Над чем вы работаете сейчас?

Долгое время я провел в попытках объяснить результаты работы нейронных сетей и процесс их обучения, а сейчас рассматриваю системы как совокупность небольших локально взаимодействующих элементов и пытаюсь понять, как найти практические подходы к дизайну таких систем. Мне кажется, я стараюсь работать над тем, что не совсем в тренде, и то, чему, на мой взгляд, уделяется недостаточно внимания. В этом плане мне близок по духу японский исследователь David Ha, который гордится тем, что пока все обучают нейронные сети, в которых миллиарды параметров и миллионы элементов, он создает сети из единиц элементов и десятков параметров. Однако и они делают очень интересные и неожиданные вещи.

За вдохновением — в биологию

Биолог Михаил Левин. Источник: mscottbrauer.com
Биолог Михаил Левин. Источник: mscottbrauer.com

На какие научные области вы бы посоветовали обратить внимание молодым программистам?

Я не химик и не биолог, к сожалению, но я бы рекомендовал хотя бы поверхностно изучить состояние дел в этих областях. Мне кажется, что там в скором времени может произойти что-то интересное. Причем, копать я бы предложил именно в направлении самовосстанавливающихся и самоорганизующихся систем. Это то, что мне самому сейчас очень любопытно. Ученый-биолог Михаил Левин в прошлом году выступал на конференции NeurIPS по машинному обучению, где рассказывал про работу своей лаборатории. Он ставит эксперименты по регенерации, изучает этот процесс у червей планарий, которые способны после разделения организма образовывать несколько независимых особей.

Левин пытается понять механизмы самоорганизации, экспериментирует с практическими методами воздействия на процесс регенерации. Ему удалось заставить лягушку регенерировать конечность, хотя она от природы не обладает такой способностью. В общем, будущее и научное вдохновение я бы искал именно в биологии.