Как не пополнить ряды стремных специалистов, если ты Data Scientist
Хабра-сообщество провело еще одно интервью в нашем образовательном проекте: прямых эфирах c ребятами из IT, которые отвечают на ваши вопросы в формате живого общения.
Наш проект — попытка создать полноценный набор гайдов и рекомендаций для успешной жизни разработчика: как построить карьеру, получить оффер мечты, привлечь инвестиции в стартап, не тухнуть на скучных проектах, вырасти в своем деле и по пути купить домик у моря.
В начале недели наши вопросы отвечал Борис Янгель — ML-инженер Яндекса, который участвовал в создании мозгов «Алисы», а теперь делает беспилотные автомобили.
Боря рассказал о том, как стать крутым Data-Scientist, как парашютный спорт помогает ему в работе, почему конференции по ML бесполезны и ответил на недавний пост разгневанного отца про то, как Алиса рекомендовала видео с историями убийств ребенку.
Меня зовут Борис Янгель, я работаю в «Яндексе». По профессии я ML-инженер, в последнее время руковожу ML-проектами. В настоящий момент работаю в проекте беспилотного автомобиля «Яндекса», разрабатываю часть ML-стека. Ранее занимался Алисой, отвечал за разработку модуля, который условно можно назвать её «мозгами» — этот модуль после того, как речь распознается, определяет, что пользователь хотел сказать и принимает решение по поводу ответа. До этого я работал в группе нейросетевых технологий «Яндекса», а до того – в Microsoft Research, в группе Криса Бишопа, над проектом Infer.net – это библиотека байесовского вывода. Еще раньше я в Яндексе отвечал за ранжирование поиска по картинкам.
Какой бэкграунд нужен, чтобы зайти в нейронные сети? Правда ли, что весь machine learning только для технарей?
Вопрос немного странный. Я перефразирую: какие минимальные технические навыки требуются (в зависимости от того, чем вы хотите заниматься), может ли их получить человек с гуманитарным образованием?
Если «зайти» — это, допустим, обучать нейронную сеть не просто отличать собак от кошек, а делать то, что нужно лично вам, то существует путь, доступный для многих людей. В Интернете много кода для решения типовых задач, и сейчас можно легко и быстро взять такой код, подсунуть в него свои данные и получить результат. Это — самое простое, что можно сделать, навыки для этого требуются минимальные, в том числе по программированию.
Нужно только умение разбираться в готовом коде и править его. Если код хорошо структурирован, это легко.
Если «зайти» — значит, самому сделать нейросеть для решения чуть менее тривиальной задачи, задача усложняется, навыков нужно больше.
Для того, чтобы самому собирать нейросети, нужно хотя бы немного понимать математику, знать основы линейной алгебры, понимать, что такое матрицы, векторы, тензоры, что с ними можно делать, что такое производная и градиентный спуск. Не могу сказать, что здесь разберется только эксперт, но знания нужно иметь – в том числе о том, из каких частей состоят нейронные сети и как сейчас принято состыковывать их, чтобы получить результат.
Сейчас существуют достаточно простые в использовании фреймворки для стыковки элементов нейронных сетей – например, TensorFlow с надстройкой Keras (она очень простая, нужно минимальное владение Python). Но для нетривиальных операций Keras может не хватить, и тогда придется работать с «голым» TensorFlow – для этого нужно больше навыков, особенно для создания собственных операций внутри TensorFlow. Чем дальше вы хотите пойти, тем больше навыков понадобится. Причем, проблемы начинаются именно тогда, когда что-то идет не так: для того, чтобы выяснить, почему система не работает так, как вам нужно, требуется сравнительно более высокий уровень навыков – нужно полностью отдавать себе отчет о том, что происходит «под капотом».
Какие книги по data science и machine learning на Python нужны новичку? Как правильно практиковать эти знания?
Я не уверен, что могу правильно ответить на этот вопрос. Когда я был новичком, хороших книг было гораздо меньше, чем сейчас, и найти нужную информацию в удобном виде было труднее.
Сейчас есть много книг по deep learning, например, книга Гудфеллоу – там большинство основ, которые нужно знать по нейросетям, и необходимая математика. Есть книги с практическим подходом – они не просто дают ознакомиться с математическими методами, но и сразу рассказывают, как сделать что-то конкретное на Python.
Есть книга автора Keras, Франсуа Шолле, по deep learning с Keras. Книг много, хотя я не могу сказать, какие именно лучше. Мне кажется, можно смело брать книги относительно именитых авторов.
Если задача – сформировать костяк знаний, то потребуются более фундаментальные книги, например, «Pattern Recognition and Machine Learning» Криса Бишопа – я рекомендую почитать ее и поделать упражнения из неё. Необязательно читать полностью, но основные главы – например, про теорию вероятности – помогут сформировать понимание того, как весь machine learning образует единый фреймворк.
Кроме того, важно научиться мыслить моделями. Мы не просто применяем определенные методы, чтобы получить результат, а моделируем данные. Нужно принять этот образ мышления – например, в этом поможет онлайн-книга Криса Бишопа «Model-Based Machine Learning», частично бесплатная. Каждая глава этой книги – это пример задачи, для которой нужно построить модель, и по ходу главы вы последовательно стараетесь это сделать, постепенно усложняя модель, пока не получится результат. Это помогает перенять тот образ мышления, который нужен для data science.
Насчет практикования – я уже говорил о том, как важно знание того, что происходит «под капотом». Для этого лучше всего попробовать что-то собрать самостоятельно. Напишите сами градиентный спуск вместо того, чтобы использовать готовый фреймворк, или напишите слой и добавьте его во фреймворк. Попробуйте придумать для себя сравнительно нетривиальную задачу с интересной структурой; решайте её, по ходу определяя, каких знаний и информации вам недостает. Последовательно усложняйте решение, чтобы повышать качество. Пусть это будет такая задача, результат решения которой будет интересен лично вам.
Сейчас наблюдается бурное развитие TensorFlow JS. Я изучаю машинное обучение и хочу пользоваться этой библиотекой. Какие перспективы для frontend?
TensorFlow JS во frontend можно использовать как точку входа в машинное обучение, хотя мне не совсем понятно, зачем. Если это потому, что вы знаете только JavaScript – это неправильная мотивация; Python очень легко выучить.
У TensorFlow JS есть своя область применения: это машинное обучение, в котором inference работает прямо в браузере, что позволяет делать интерактивные инструменты для обучения deep learning. Он позволяет дать человеку интерактивный инструмент, в котором можно поработать с алгоритмами и моделями, сделать визуализацию и тем самым улучшить свое представление о предмете. Наверно, есть другие перспективные области применения deep learning, где нужен интерактив – например, инструменты для творчества, где можно в реальном времени работать с изображениями или синтезировать музыку.
Как стать крутым специалистом в какой-то области искусственного интеллекта (например, NLP), максимально быстро?
Насчет второй части – скорость всегда зависит от имеющейся базы знаний.
Насчет первой части – мне кажется, что вопрос здесь поставлен некорректно. В NLP раньше было много разных техник, нужно было много знать, чтобы решать задачи, но потом туда пришли специалисты по deep learning. Они придумали BERT с инкрементальными улучшениями, и теперь для решений задач по NLP не нужно знать ничего, кроме BERT. При этом для того, чтобы разобраться в BERT, не нужно разбираться в NLP – нужно знать, как применяются модели к токенами символов. Нужно становиться специалистом в машинном обучении, и тогда вам станут доступны – с небольшими усилиями – его различные прикладные области.
Как стать крутым специалистом в машинном обучении?
В первую очередь, нужно построить в голове хороший концептуальный фреймворк того, что происходит в машинном обучении. Пока вы воспринимаете его как набор разрозненных фактов, алгоритмов и эвристик, вы не продвинетесь далеко.
Грубо говоря, надо понять следующее: все, чем мы занимаемся – это поиск функций из какого-то множества лучших в каком-то смысле. Надо понять, какие бывают смыслы, в которых функция бывает лучшей, среди каких множеств можно искать какие функции, почему мы предпочитаем одни или другие множества, почему в одних искать эффективнее, чем в других, какие трюки существуют для поиска в различных множествах. Надо понять, что эти функции – это модели данных (по крайней мере, те, которые нас интересуют).
Модели данных строятся стандартными приемами из небольшого набора, который примерно одинаков и для deep learning, и для вероятностного программирования; надо понять, как комбинируются эти приемы, и в каких случаях. Тогда вы обнаружите, что понимаете, как решаются задачи в разных предметных областях.
Допустим, есть фильтры Калмана – моделирование динамики систем во времени, и про них есть книги, которые можно прочитать. Если фильтр Калмана вам не подходит, вы не сможете внести в него какие-то модификации, чтобы сделать для вашей задачи что-то аналогичное, но «не совсем фильтр Калмана».
Но если вы понимаете, что это всего лишь вероятностная модель, построенная по определенным, достаточно простым, принципам (везде, где что-то не известно, добавить нормальное распределение, а все, что моделируется напрямую – линейная динамика), то вы сможете построить то, что вам нужно, даже не зная о фильтрах Калмана.
Если вы достигнете такого образа мышления, то обнаружите, что большинство статей – даже с топовых конференций – неинтересны. Обычно там описываются инкрементальные улучшения с помощью стандартных техник, которые вы и сами сможете применять – и это для вас будет очевидно – причем без возможности масштабирования за пределы используемого датасета. Хорошие статьи, в которых представляются действительно новые техники, вы в любом случае не пропустите – о них все будут говорить, и вы быстро узнаете о них. Окажется, что действительно нужных статей мало.
Расскажите о стеке, с которым вы работаете. Какие библиотеки и фреймворки изучать начинающему специалисту по машинному обучению?
Я работаю в основном с TensorFlow и Keras. Сейчас еще набирает популярность PyTorch – коллеги его хвалят.
Когда Keras подходит – то есть, те высокоуровневые абстракции, что есть в нем, можно использовать, и нет нужды лезть глубже – то лучше использовать Keras, это экономит время. Конечно, надо понимать, как устроен Keras и как выходить за его пределы при необходимости.
Если в самом Keras чего-то недостает, всегда можно дописать кусочек на TensorFlow – архитектура это позволяет.
Как происходит создание автопилота Яндекс поэтапно? Каких специалистов для этого нанимают, как строится рабочий процесс по data science / machine learning?
Сначала опишу кратко, как устроен «беспилотный» стек – подробнее можно узнать из видео-доклада Антона Слесарева, его легко найти. У стека есть много составных частей. Perception – это видение того, что происходит вокруг машины в настоящий момент.
Локализация – это понимание того, где машина находится, с помощью информации с сенсоров и заранее построенных карт.
Prediction – это предугадывание того, что будет происходит в следующие секунды (то есть, как будут себя вести другие участники движения) с помощью знаний о том, как мир устроен сейчас и как он был устроен в прошлом; в этой части как раз работаю я.
Планирование – то, что идет после восприятия и предугадывания: нужно выбрать безопасную последовательность действий, которая приведет к решению задачи.
Control – преобразование этой последовательности в инструкции для автомобиля (поворот руля, газ-тормоз).
Во многих элементах этого стека ML сейчас нужен, либо в state-of-the-art решениях не используется. Есть много ML-инженерной работы – надо сделать, чтобы это работало, причем работало быстро, потому что latency в таких системах очень критичен. Нужно научиться обучать модели, понять, какие метрики позволяют понять, что стало лучше, какие – не позволяют, понять, как эффективнее собирать данные. Кроме того, есть огромная составляющая инфраструктурной работы, часто недооцененная. Очень мощная инфраструктура нужна, чтобы разрабатывать все эти компоненты совместно.
Беспилотники собирают огромное количество данных обо всем, что происходит с ними – нужно уметь быстро работать с этими данными, отвечать на вопросы вроде «что бы случилось в ситуации X, если бы в коде было изменение Y». Это требует нетривиальных инженерных решений и хороших инженеров.
Рабочий процесс data science / machine learning – как и везде, в моем представлении. У любой команды должна быть метрика, которую в данный момент нужно оптимизировать.
У большинства людей типичный день проходит в поисках того, что сделать, чтобы улучшить эту метрику. И эта метрика должна быть сонаправлена с вашей целью – конечно, сложно придумать её сразу, метрика будет постепенно эволюционировать.
Допустим, вы делаете классификатор пешехода. Нашли пешеходов вокруг, используется average precision, допустим. Вы оптимизируете метрику и обнаруживаете, что она вроде бы растет от ваших изменений, но в реальности становится хуже. Вы понимаете, что метрика плохая. Приходите к выводу, что всех пешеходов искать не обязательно – те, которые далеко впереди, или сзади за 50 метров, никак не влияют на нас. Надо уточнить метрику. Вы переходите только на тех пешеходов, которые поблизости. Потом понимаете, что так тоже плохо: вас интересуют только те, что впереди.
Так и происходит эволюция метрики. В каждый момент зафиксирована определенная метрика, и вы улучшаете ее. Это снимает с вас когнитивную нагрузку: вы просто думаете над тем, как улучшить одно число – причем часть команды постоянно работает над оптимальным выбором числа, которое нужно улучшать.
Я погружаюсь в тематику «сильного ИИ». У меня два вопроса: почему нельзя учить ИИ так, как мы учим наших детей, и какая сфера использования первой создаст сильный ИИ, если создаст вообще?
Первый вопрос я понимаю так: детей как бы учат от простого к сложному. Они изначально живут в упрощенной модели мира, где Дед Мороз есть, но постепенно их мир усложняется, и дети учатся решать более сложные задачи. Вроде бы логично, что ИИ следует учить по подобному принципу – есть даже такой proposal от Томаса Миклова (он сейчас в Facebook AI Research) по построению схемы обучения сильного ИИ.
Кроме того, в машинном обучении есть область curriculum learning – то есть, обучение модели по принципу «от простого к сложному». Проблема в том, что сейчас все работает в пределах одной задачи. Та же задача поиска собак – сначала сеть учат отличать собак от кошек на изображениях, где они совсем не похожи, а потом берут все более и более похожих. Это итеративно-поступательный метод: предполагается, что сеть построит простые концепции, а потом, на их базе – более сложные. Он не работает, если речь идет о разных концепциях.
Если систему начать учить чему-то, предварительно научив ее другому, она забывает те концепции, которые были запомнены раньше. Это – проблема катастрофического забывания, ее пока никто не решил. Градиентный спуск меняет сразу все веса, и это уничтожает старые концепции. Нужно придумать, как строить новые концепции, не уничтожая старые.
С этим связаны области исследования one-shot learning и few-shot learning: выучивание концепций для одной задачи и их использование для решения другой задачи на небольшом числе примеров. Фундаментальных прорывов в этой области пока не было, но их нужно совершить, чтобы иметь какое-то представление о сильном ИИ.
Я не вижу причин для того, чтобы в будущем не появилось сильного ИИ. В нашем современном представлении, человеческий мозг – это машина, которая проводит вычисления, пусть и по другим принципам.
Нет никаких фундаментальных препятствий к созданию сильного ИИ, но дать оценку того, сколько времени осталось до этого момента, я не могу – неизвестно, какие еще для этого потребуются шаги. Если экстраполировать, используя скорость прогресса в преодолении «белых пятен» прошлом, то можно назвать цифру типа «от 10 до 50 лет» — но это все равно «пальцем в небо». Можно апеллировать к закону Мура и вычислять, когда в процессорах будет достаточная плотность транзисторов, чтобы достигнуть вычислительной способности мозга – тоже несколько десятков лет, и это тоже будет «пальцем в небо».
Я не думаю, что сильный ИИ – если он будет изобретен – придет из бизнеса. Скорее, его создаст кто-то, кто, при наличии значительных средств, занимается фундаментальными исследованиями в reinforcement learning: из всех областей машинного обучения эта – ближе всех к тому, чего мы хотим от сильного ИИ. Если DeepMind или OpenAI будут существовать еще несколько десятилетий – может быть, это сделают они. Или кто-то, кто придет на их место.
Какую архитектуру лучше использовать для классификации (не прогнозирования, а классификации) временных рядов? LSTM или что-то другое?
В последние годы наблюдается такой тренд: почти везде, где был полезен LSTM, лучше работает attention. NLP-революция так и произошла: мы заменили рекуррентные сети на attention, и стало лучше. Для временных рядов я бы советовал тоже попробовать attention. Все зависит от задачи, но, в целом, это самый эффективный способ анализа последовательностей и агрегации данных по ним.
Занимаюсь машинным обучением не только по работе, но и в качестве дорогого хобби. Строю сеть, она влезла в 3 Гб карты, чуть сложнее – уже нет. Есть ли альтернативы, кроме CPU?
Нехватка средств на железо, на котором можно показывать результаты в современных deep learning-исследованиях – проблема для энтузиастов, и даже для университетов.
У Google есть инициатива Google Collab: это такой IPython на мощностях Google, где можно получить на 12 или на 24 часа мощности топовой видеокарты, а также что-то запускать на их TPU. Видеокарты используются не потребительские, памяти у них больше – есть 130 Гб, как мне кажется. Руки это развязывает. Но, в целом, по-настоящему масштабные вещи отдельный пользователь не может себе позволить.
Некоторые компании пытаются создать чипы, специально приспособленные для deep learning, которые будут производить вычисления для нейронных сетей намного быстрее и дешевле, чем GPU – может быть, в ближайшие годы появятся потребительские решения с такими чипами.
Зачем вы предугадываете поведение других участников движения при разработке беспилотника?
На дороге это необходимо. Во время принятия решения надо учитывать, в том числе, инертность движения машины: невозможно мгновенно изменить направление (даже если было бы возможно, пассажиру пришлось бы плохо). Нужно планировать действия так, чтобы в том месте, где мы хотели бы оказаться через несколько секунд, не оказалось кого-то еще – для этого нужно предугадывать положение и намерения других участников. Траектория движения машины должна пролегать как можно дальше от остальных участников – это необходимо для безопасной езды.
Как вращается руль у беспилотника?
Я сам не занимаюсь control. Могу сказать, что есть разные автомобили – некоторым можно просто отдавать команды на поворот руля. По-моему, у Prius можно.
Что используете – Scrum, Kanban, беспредел?
Беспредел организованный.
Я не вижу необходимости жестко структурировать рабочий процесс, особенно исследовательский: тяжело сказать, сколько времени займет определенная задача. У нас слишком много неопределенности, и мне не очевидно, зачем вводить дополнительную структуру.
Мы стараемся много общаться, мы стараемся логировать все результаты экспериментов; у нас есть специальные системы, запоминающие данные эксперимента независимо от его масштаба – что за код использован, из какой ветки собран, с какими данными запускался – с целью полной воспроизводимости. Мы логируем все выводы и обсуждаем их между собой, делимся информацией, стараемся, чтобы все было максимально открытым и прозрачным.
Есть ли опыт применения ML в промышленности — металлургии, горнорудной, обогащения?
Я знаю, что в этих областях ML активно применяется, но личного опыта нет.
Недавно вышла душераздирающая статья о том, как Алиса рекомендовала ребенку видео про историю убийств. Почему это происходит, сложно ли фильтровать контент?
Задача фильтрации контента – в принципе, решаемая, и с высокой точностью. Что именно произошло в той ситуации, я не знаю точно, но могу поразмышлять.
Допустим, в системе есть партнерский контент, и существует API, в котором партнеры должны помечать этот контент тегами или другими способами. Система изначально работает на доверии к партнерам – возможно, лишь время от времени будут проверки контента. Со временем этого окажется недостаточно, вы навесите простую контентную систему с поиском стоп-слов в заголовках и тегах, просмотром хотя бы части контента модераторами.
В каждой системе неизбежно будет точка отказа: иногда люди ошибаются, иногда партнеры не выполняют своих обязательств. Все, что можно делать – это проводить дальнейшие итерации и совершенствовать систему, причем улучшения обычно реактивны: если что-то работает достаточно хорошо, улучшений обычно не будет, пока они не станут необходимы.
Может быть, когда появится сильный ИИ, можно будет попросить его фильтровать весь контент со 100% точностью.
Посещаете ли вы международные конференции по нейронным системам обработки информации и машинному обучению? Какие впечатления от российских конференций в данной сфере?
Насчет российских не могу сказать. На международные иногда езжу, но все меньше понимаю, зачем.
«Научный туризм» — это, конечно, важно и интересно, но сами конференции, как мне кажется, перестали выполнять свою функцию. Статей на них принимают огромное количество, но из-за этого же невозможно организовать для каждого автора нормальное выступление. Например, на ICML длинные доклады были только у best paper, а у всех остальных – spotlight-доклады, меньше пяти минут.
При этом огромное количество работ – инкрементальные, с сомнительной воспроизводимостью, пользы от них для слушателей – никакой. Если на конференции есть действительно крутая работа, вы с ней будете уже знакомы, скорее всего – preprint сейчас выкладывают рано.
Я думаю, формат конференции следует изобрести заново – или хотя бы сильно повысить планку того, что на нее принимать.
Какая у вас была мотивация возвращаться в Россию?
Я уехал из России, потому что мне было интересно пожить в новых местах и поучиться у новых людей. Мне казалось, что для личного развития нужно попасть туда, где люди умеют больше меня. Собственно, так и произошло: в Microsoft Research я многое понял о том, насколько методичным нужно быть, насколько глубоко и хорошо надо понимать, что ты делаешь, насколько нужно отдавать себе отчет в том, что происходит. Ну, и в какой-то момент мне стало скучновато, хотя там были интересные задачи.
Я тогда жил в Кембридже – это маленький город, в котором мало что происходит, круг общения в нем не сравнить с московским. Я подумал: теперь можно пожить в Москве, применить полученные знания, потом, может быть, еще куда-то поехать. Я и пошел работать в «Яндекс» — вроде бы неплохо применяю то, чему научился.
Мне кажется, сейчас в DeepMind и OpenAI делают интересные вещи, я мог бы там многому научиться.
Слышал, что команда беспилотника предпочитает использовать TensorFlow, а не PyTorch, для обучения inference моделей. Чем это обусловлено?
Может быть, историческими причинами. Не могу сказать, чем TensorFlow лучше или хуже PyTorch.
Какого размера должен быть датасет? Достаточно ли 50-60 тысяч обучающих примеров, или требуются миллионы?
Зависит от используемой модели и поставленной задачи. Датасет должен быть таким, чтобы настроить параметры модели и не допустить переобучения. Если у вас тривиальная линейная модель, то датасет может быть маленьким. Если это сложная нейросеть, то 60 тысяч не хватит.
Для обучения сложных нейросетей нетривиальным вещам с нуля почти всегда требуются десятки или сотни миллионов. Принцип «больше данных – больше качество» никуда не делся.
Кстати, насчет вопроса о том, как стать экспертом в NLP. Сейчас state-of-the-art deep learning – это всегда работа с большими данными. Их нужно предобработать, потом – эффективно стримить в вычислительные ноды, которые осуществляют обучение.
Можно сказать, что deep learning – это немного обезьяний труд: чтобы добиться успеха, надо попробовать очень много вещей, не будучи уверенным в результате работы с каждой.
Может быть, можно выработать интуицию на варианты, которые сработают с большей вероятностью, хотя я и не встречал человека с точной интуицией. В общем случае, из всех команд наиболее успешной будет та, которая сможет провести больше всего экспериментов в единицу времени.
Большая часть моей работы – устранение «узких мест» в процессе обучения в попытке «разогнать» его до теоретически возможной скорости. Это требует инженерных навыков, умения выжимать из кода и железа производительность.
Эксперта от обычного data scientist отличает то, что эксперт – обычно еще и хороший инженер, умеющий быстро работать, писать код, разбираться с распределенными системами хранения и обработки данных, разбираться в архитектуре вычислителей и сетей – чтобы вычислять «затыки». Очень важно развивать в себе эти навыки.
В условиях доминирования больших данных наибольших успехов в индустрии добиваются те, кто знает, как заставить обучение быстро работать на этих объемах данных. Если бы deep learning работал на небольших объемах, я бы сказал, что нужны лишь знания по нему, но сейчас это не так.
Учитесь хорошо программировать, учите стандартные алгоритмы computer science, повышайте кругозор. Кстати, криптография полезна.
Пользуетесь ли аналогами AutoML для тюнинга архитектуры и параметров, или больше ручные эксперименты и интуиция?
Сейчас – больше второго. Автоматический тюнинг присутствует на уровне свипа по сетке или байесовой оптимизации, чем-то более сложном в AutoML пока не занимались. Он требует много вычислительных ресурсов – если они ограничены, лучше полагаться на интуицию. Но, если вы понимаете, что пришли к какому-то случайному гаданию, лучше доверить его процессу.
Что умеет Алиса, чего не умеет Google Assistant? Какой размер команды в этом направлении у Google и у «Яндекса»?
Про «Яндекс» не могу рассказывать. У Google — вроде бы сотни или тысяча человек. Насчет преимуществ Алисы не уверен, не следил ни за продуктовым развитием Алисы, ни за фичами Assistant в последнее время.
Постановка вопроса о качестве некорректна, мне кажется. Даже если бы Алиса была хуже, значило ли бы это, что она не имеет права на существование? Продукты создаются и конкурируют между собой, за счет этого они все выигрывают, эволюционируют, тянутся вверх.
Я не понимаю ментальности «новый продукт – это то же самое, что Google». В бизнесе продукты так и создаются: вы берете чужую идею за основу, реализуете ее – иногда вообще as-is – но это не конечная точка пути, а начало. Дальше вы поступательно меняете идею, чтобы она стала лучше, чем у конкурента. В этом вся история прогресса!
Как спорт помогает достигать большего в других областях?
В спорте, особенно соревновательном, мне нравится однозначность. Если ты проиграл – ты проиграл. Нельзя свалить это на обстоятельства: ты был недостаточно хорошо, что-то сделал не то.
В соревновательном спорте развивается прямота, искренность, способность признавать свои ошибки. Это помогает в других областях – всегда лучше признать, что тебе надо стать лучше в X, Y и Z, чем искать оправдания. Помимо пользы для здоровья, конечно.
Как парашютный спорт помогает выходить из зоны комфорта?
Представьте, что вы хотите выпрыгнуть из самолета группой людей и что-то собрать вместе. Самолет выходит на боевую, открывается дверь, вы все выстраиваетесь внутри и ждете сигнала, чтобы выпрыгнуть все вместе.
В этот момент не должно быть никаких сомнений в происходящем. Задержка даже в долю секунды задерживает всех. Вы должны привести себя в такое состояние, в котором вы выпрыгнете не раздумывая. Мир исчезает, остается только прыжок. Если с парашютом что-то случится, у вас будет небольшое время на то, чтобы принять меры – тогда тоже не должно существовать никаких сомнений и страхов, нужно сделать ровно то, чему тебя учили, как можно быстрее.
Парашютный спорт воспитывает в человеке способность принять решение что-то сделать – и далее не сомневаться. Можно провести параллель между этим и сложными проектами. Иногда непонятно, что делать в проекте; когда ты приступаешь к задаче, ты не знаешь точно, что делать, как делать, можно ли вообще это сделать. В этот момент легко начать сомневаться и думать, «а если я не смогу?» — на это тратится и время, и ментальные усилия. Если вам задали решить проблему, значит – в вас поверили. Вы должны приложить максимум усилий к этой проблеме. Нужно привести себя в такое же ментальное состояние, как в прыжке, отбросить все ненужное и сосредоточиться. Мне стало намного проще достигать этого после того, как я стал заниматься парашютным спортом.
Сколько тратишь на парашютный спорт?
Много. Это значительная статья моего бюджета. Я это воспринимаю как стимул к дальнейшему карьерному росту.
В каком клубе занимаешься?
В основном в Пущино, там хорошо развиты определенные дисциплины – например, фрифлай.
Куда идти учиться на инженера ML?
Мои данные уже устарели, я учился довольно давно – в МГУ, на ВМК. Не могу сказать, что это было супер-ML-образование, но преподаватели нас неплохо учили, знакомили с миром ML. Думаю, многие знают Дмитрия Петровича Ветрова – я ему обязан многим, если бы не его лекции и спецкурс, на который меня занесло, я бы, возможно, не занимался ML. Не знаю, где он сейчас преподает, но туда точно стоит идти. Кроме того, вне зависимости от того, на каком факультете вы учитесь, я рекомендую пойти в ШАД, если получится. Не потому, что это «Яндекс», а потому, что это действительно крутое место – там дадут все знания, нужные для хорошей практической работы в индустрии, которых может не быть в ВУЗе. Из ШАДа к нам приходит много подготовленных, талантливых людей, знающих, что делать.
Еще раз насчет вопроса о том, можно ли попасть в ML «не технарю». Технические навыки нужны, но гуманитарная специальность в ВУЗе – это не блокер. Чтобы разобраться с основами программирования и математики, нужна только голова на плечах и способность к логическому и структурному мышлению. Есть много людей, которые, хотя и выбрали почему-то гуманитарную специальность, обладают такими навыками. Нет ничего невозможного, главное – стараться. Нужно не раздумывать на тему «а смогу ли я», а начинать делать – это сильно повышает шансы на успех.
Можно ли учиться в ШАД параллельно с ВУЗом?
Я делал так, хотя и было довольно сложно. В ШАДе большая нагрузка. Можно совместить ШАД с последними курсами ВУЗа, где нагрузки относительно мало – это будет тяжелая работа, но она окупится.
Опыт автоспорта в работе с беспилотниками?
У нас в штате есть действующие автоспортсмены, потому что нам нужно готовить водителей и QA-инженеров, которые находятся непосредственно в машине. Они должны уметь распознать внештатную ситуацию во время испытаний и отреагировать, они все проходят контраварийную подготовку у автоспортсменов. Если речь о том, используем ли мы какие-то модели физики шины, которые используются в автоспортивных симуляторах профессиональными спортсменами при разработке тактики – по-моему, нет, мы сотые доли секунды на круге пока не срезаем. Телеметрия, полезная для спортсменов, отличается от той, что нужна нам, и данных у нас измеряется больше.
А что дальше?
Следующий прямой эфир пройдет в ближайший понедельник.
Вы можете задать вопрос Наталье Теплухиной — Vue.js core team member, GoogleDevExpret и Senior Frontend Engineer в GitLab.
Задать ей вопрос можно в комментариях к этому посту
Расшифровка интервью с Илоной, Senior Software Engineer в Facebook можно почитать здесь Инсайды от сотрудника Facebook: как попасть на стажировку, получить оффер и все о работе в компании