Недавно я устроился на работу в DeepMind инженером-исследователем! Для меня это сбывшаяся мечта, до сих пор не могу в это поверить! 😍 (если вы иногда чувствуете себя самозванцем, поверьте, вы не одиноки ...)

У меня нет докторской степени. в ML.

У меня нет степени магистра машинного обучения.

На самом деле у меня нет какой-либо степени в области машинного обучения - я получил степень бакалавра в области EE.

Вот и все. Это мое формальное образование. Я бросил учебу в магистратуре, так как понял, что смогу научиться гораздо более эффективно и эффективно самостоятельно.

Я впервые столкнулся с ML в 2018. И я впервые познакомился с миром программирования, когда мне было 19 (сейчас мне 27).

Так как же мне это удалось? (подсказка: я не настолько умен, ты справишься!)

В этом блоге я постараюсь рассказать вам всю историю. Я буду очень откровенен, чтобы помочь вам, ребята, как можно больше. Этот блог даже содержит снимок моего резюме (очень неоптимального, мне неудобно делиться им 😅), информацию о том, как меня отослали к DeepMind, и многие другие детали, которые, надеюсь, сделают этот блог намного ближе вашему сердцу.

Я разделю это сообщение примерно на 3 части:

  1. Я собираюсь рассказать вам о том, кто я, и каким был мой путь обучения! Поскольку я не хочу создавать ложные ожидания, что вы сможете осуществить это за короткий период времени, не имея степени ML, если у вас еще нет прочной основы и опыта самообразования. .
  2. Я собираюсь объяснить вам в мельчайших подробностях, как выглядела моя учебная программа по машинному обучению с момента моего первого знакомства с ним в 2018 году.
  3. Наконец, я собираюсь рассказать вам, как именно выглядели мои последние приготовления к DeepMind (+ дополнительная информация о том, как я получил реферал).

Примечание: для всех практических целей вы можете прочитать DeepMind в этом посте как «любую первоклассную лабораторию / компанию ИИ, такую ​​как DeepMind, OpenAI, FAIR, AI2 и т. д.» потому что я почти уверен, что те же (или, по крайней мере, похожие) принципы применимы и здесь.

Ну пошли!

Часть 1: Мой опыт (без степени ML)

Лето 2017 года. Я прохожу свою первую стажировку в небольшом немецком стартапе под названием Telocate в качестве разработчика Android. Я собираюсь закончить (в сентябре, когда я вернусь в Белград, Сербия) программу повышения энергоэффективности, в которой основное внимание уделялось цифровой / аналоговой электронике и в меньшей степени. на CS.

Где-то к концу учебы (конец 2016 года) я понял, что действительно хочу полностью переключиться на индустрию программного обеспечения. Это захватывающе, гораздо более открытое по сравнению с отраслью аппаратного обеспечения, есть все эти хакатоны и дататоны, и он предлагает отличные зарплаты.

Итак, ранее в том же году (2017) я начал изучать Android самостоятельно и получил стажировку во Фрайбурге, Германия. Я был так взволнован - мир был моим.

Вернитесь в лето 2017 года, Фрайбург. Я болтаю с другом, который, как я знал, был очень успешным инженером-программистом. Он прошел несколько стажировок в таких компаниях, как MSFT, Facebook, Jane Street и т. Д., И он был моим коллегой.

Я понял, что сильно отстаю (по крайней мере, по Ю-В измерению)! Некоторые из моих друзей занимались соревновательным программированием еще со школьных лет. На тот момент алгоритмы и структуры данных были их второй натурой.

Я хотел подать заявку в крупные технологические компании и внезапно понял, что все навыки, которые я накопил за эти годы, не так важны, когда вы проходите собеседование в FAANG.

Никого не волновало, что я говорю на 5 языках, что я знаю кучу деталей о том, как работают микроконтроллеры в мельчайших деталях, как аналоговая высокочастотная схема строится из чистого металла и как на самом деле работают компьютеры. Все это абстрагируется. Вам нужны только… алгоритмы и структуры данных в значительной степени.

Я чувствовал себя одновременно смущенным и злым. Какой-то парень, которому 16 (мне тогда было 23), мог пойти и решать некоторые задачи Leetcode в течение 9 месяцев, и он уже опередил меня в этом отношении. Несмотря на то, что ему / ей не хватает фундаментальных инженерных знаний.

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

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

Это сильное чувство несправедливости давало мне энергию. Я подумал про себя - в следующие годы я буду очень стараться. Включена скорость деформации.

Я вернулся из Германии. Я успешно закончил обучение через 3 дня после этого. Я помню, что некоторые из моих друзей праздновали свой выпуск в течение трех с лишним недель, пили 🍺 и все остальное. Мне? Я отпраздновал свой успех на выходных и сразу же начал планировать наперед. Я чувствовал, что выполняю задание.

Я поступил в магистратуру «символически» (в студенческие годы вы получаете некоторые льготы), но я знал, что действительно хочу получить работу в крупной технологической компании.

Так что я составил свою собственную учебную программу по SE, к тому же я начал посещать курс алгоритмов в моем университете, даже не будучи зачисленным. Я сидел там со студентами, которые были на 2 года младше меня.

Следующие несколько месяцев я работал как сумасшедший и сразу же начал подавать заявки. Вскоре после этого в декабре 2017 года я получил интервью для Facebook, и мое первое собеседование провалилось с треском.

Я продолжал учиться и получил приглашение от Microsoft - тесты в марте 2018 сказали. Понятно, до тех пор я буду усердно работать. Я учился, посещал хакатоны и дататоны, начал заниматься соревновательным программированием (в основном Topcoder).

Затем, в феврале 2018 года, я услышал об этом летнем лагере по машинному обучению, организованном людьми из Microsoft (у нас есть офис в Белграде, это единственная крупная технологическая компания, которая у нас есть). Я подала заявку и после трехдневного вступительного испытания была принята !!! (помог мой приличный опыт обработки цифровых изображений)

У меня было сильное чувство, что это может быть моей возможностью показать, что я достаточно хорош, чтобы работать в Microsoft! 💡

Примерно в то же время я получил стажировку в Ору-Прету , Бразилия через студенческую организацию под названием IAESTE. В конечном итоге это был скорее удивительный жизненный опыт (я жил в братстве с 11 бразильцами, и мне пришлось научиться говорить по-португальски), чем техническая стажировка. Это было запланировано сразу после моего летнего лагеря ML. Как будто звезды сошлись!

Наступил март 2018 года, и я провел свои первые тесты с Microsoft. Я провалила письменные вступительные испытания. К счастью, 2 месяца спустя они дали мне еще одну возможность. Я попробовал еще раз, прошел письменные вступительные тесты, провел 4 цикла собеседований на месте, а через 3 недели ... они сказали мне, что в настоящее время для меня нет открытых вакансий. Я истолковал это как отказ. Опять таки.

Так что если есть кто-то, кто может посочувствовать новичкам в этой области, то это я. Я знаю, что весь этот процесс поиска работы может быть очень утомительным.

Перенесемся в лето 2018 года. Я посетил летний лагерь ML, и мне это удалось. Я был очень заинтересован, я многому научился, и наш последний проект был признан лучшим (решение кубика Рубика с глубоким RL).

Сразу после лагеря я вылетела в Бразилию в начале августа 2018 года.

Через 3 дня мне звонят из Microsoft. У тебя есть предложение. Вы нужны нам как можно скорее.

Я был очень счастлив и очень грустен одновременно. Мне пришлось покинуть эту прекрасную страну Бразилию чуть больше месяца, а не через 3 месяца. Либо так, либо я не получу работу. Они сказали мне, что команда, которая хочет меня, - это команда « HoloLens » !!! Та же команда, которая руководила летним лагерем. Самая известная, захватывающая команда в Белграде - я не мог упустить эту возможность. Я возьму это.

Сентябрь 2018 г., я в Белграде, работаю в Microsoft разработчиком программного обеспечения ! Я справился. Я был невероятно счастлив.

И именно здесь началась моя история SE и ML.

Но с тех пор, как я посетил этот летний лагерь, идея DeepMind и ощущение, что это почти недостижимо для меня, глубоко укоренилось в моем подсознании. Единственные люди, которых я там знал (некоторые из них читали лекции в лагере), учились в Оксфорде или Кембридже.

Но есть часть меня, которую очень привлекают невозможные задачи. Я подумал, что ударил Microsoft, хотя когда-то думал, что это очень сложно. Почему это должно быть иначе?

И эта идея была похоронена в моем подсознании. Мне очень понравилось, что сейчас я работаю в Microsoft.

В течение 2018 и 2019 годов я очень старался узнать как можно больше о разработке программного обеспечения, работая в Microsoft. Я читал книги по программированию, такие как книга Скотта Мейерса о C ++ и т. Д.

Помимо этого, в свободное время я начал заниматься машинным обучением.

Я закончил все курсы Coursera Эндрю Нг до конца 2018 года. Я посещал внутренние хакатоны машинного обучения, активно участвовал в организации вышеупомянутого лагеря машинного обучения и начал читать исследовательские работы!

Я до сих пор помню, что они заставили меня чувствовать (и они все еще чувствуют!). 😂 Я чувствовал себя очень глупым. Я подумал, правда? Я изучал ЭЭ 4 года и до сих пор чувствую это? (Я мало что знал; полуопределенный смешок)

Каким-то образом примерно в то же время я также обнаружил подкаст Лекса Фридмана. Это было 3 года назад, еще до того, как на его канале YouTube было 50 тысяч подписчиков! Я помню, как религиозно смотрел все его 20 подкастов, которые были у него тогда.

Я помню, как начал чувствовать себя все более уверенно в своих знаниях машинного обучения. Итак, в начале 2019 года я поделился своим первым блогом о том, как начать работу с машинным обучением:



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

В конце 2019 года я внутри компании переключился на роль машинного обучения (из-за моей религиозной приверженности, которую заметил мой менеджер). Меня отправили на конференцию ICCV 2019.

Я вернулся и получил задание реализовать статью с нуля в PyTorch. Тогда я не знал ни одного PyTorch. Что и говорить - я многому научился.

И здесь произошел еще один момент скорости деформации. Но на этот раз я был умнее, на этот раз я расскажу о своем путешествии в Интернете по мере того, как я прогрессирую.

Так что случилось? Что заставило меня изменить свое мышление? Что дало толчок этой старой Алексе, которая училась и много работала, но оставила все для себя, этой новой Алексе?

Что ж, на протяжении 2019 года я много читал о предпринимательстве, маркетинге и личных финансах. По пути я нашел парня по имени Гэри Вайнерчук, который побудил меня начать делиться тем, чем я занимаюсь, в Интернете. Спасибо, Гэри! ❤️

Я знаю, что большинству из вас он, вероятно, не нравится (если вы о нем знаете), но он оказал положительное влияние на мое мышление. И за это я благодарен. Он определенно был не единственным человеком, который повлиял на мое мышление (я делился своим кодом даже еще в 2018 году), но, наконец, он заставил его щелкнуть.

Вы, вероятно, можете сказать (если вы меня не знаете): «Ну, эта история вдохновляет, но как вы вообще создали свою собственную учебную программу по SE / ML?»

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



Я оставлю TL; DR здесь: благодаря моим тренировкам, изучению человеческих языков на протяжении всей моей жизни и математике (все это самостоятельно) я научился учиться. Курс Coursera Обучение тому, как учиться тоже помог.

Теперь, когда у вас есть весь необходимый контекст, позвольте мне рассказать вам об учебной программе машинного обучения, которой я следовал, чтобы получить работу в DeepMind!

Часть 2. Учебная программа ML (январь 2020 г. - июнь 2021 г.)

Наступил Новый 2020 год. Я только что закончил читать Crushing it от garyvee и решил, что мне следует открыть свой собственный канал на YouTube, чтобы попутно рассказывать о своем путешествии по обучению машинному обучению.

Разразилась пандемия, и я снова разогнался. Звезды выровнялись. ⭐

Я решил, что в течение следующего года я хочу охватить различные подполи ИИ, и примерно решил, что хочу посвятить 3 месяца каждому из них.

Но сначала все было не так гладко, я все еще разбирался. Мое первое подполе, перенос нейронного стиля (NST), заняло больше 3 месяцев, потому что мне это понравилось, и я подумал, зачем торопиться?

Попутно я нашел для себя идеальную стратегию.

Я построил свое обучение следующим образом. У меня были «макроциклы» (трехмесячные периоды, когда я занимаюсь новым подполем), и у меня было несколько микроциклов, перемежающихся с макро.

Микроциклы бывают двух видов:

  • Режим ввода: я получаю информацию. Цель состоит в том, чтобы получить общее представление о структуре подполя (блоги, видео) или углубленное понимание рассматриваемой темы (исследовательские работы, книги и т. Д.)
  • Режим вывода: Я делюсь информацией, накопленной в режиме ввода. Учите других! Создавайте общедоступные артефакты, такие как видео YouTube, проекты GitHub (1 проект в середине макроса) и блоги (1 блог в конце макроса). А также более частые обновления в LinkedIn. Гораздо позже я начал делиться в Twitter и Discord.

Теперь сложнее всего было совместить все это с моей постоянной работой в Microsoft! Потребовалось значительное количество силы воли. Я включал программу, как только просыпался на 2 часа, я шел на быструю прогулку, я делал свою работу в Microsoft и 30-минутный сон после того, как я ее заканчивал, и, наконец, я работать еще 2–3 часа перед сном. Пандемия помогла мне сохранить этот сумасшедший ритм.

Управление временем и борьба со стрессом, вероятно, заслуживают отдельной публикации в блоге, но в основном они сводятся к силе воли, правильному мышлению, а также умным перерывам (короткий сон - это золото - дайте мне знать в комментариях, если вы хотите отдельный блог на тему тайм-менеджмента).

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

Для первых трех макросов (NST, DeepDream и GAN) я, к сожалению, не написал специальный блог, но написал вступительный раздел в блоге трансформеров ниже, а также видео и проекты YouTube, которые я Созданный может заполнить пробелы:



Сказав это, вот TL; DR каждого макроса, который я сделал:

[1] NST (передача нейронного стиля)

В этот период я ​​узнал о передаче нейронного стиля. В итоге я прочитал кучу исследовательских работ (хотя и намного меньше, чем позже, когда я стал профессионалом), реализовав 3 разных проекта, которые затем выложил в открытый доступ на моем GitHub, и сделал плейлист NST " на ютубе.

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

Я усовершенствовал свои знания PyTorch, много узнал о CNN и методах оптимизации, улучшил свои навыки презентации (просто посмотрите эти файлы README 😂), стал более опытным в чтении исследовательских работ и в целом улучшил свои навыки SE - и это лишь некоторые из них.

Вот изображение NST, синтезированное с использованием написанного мной кода:

[2] DeepDream

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

Я читал блоги, анализировал субреддиты DeepDream и изучал различные кодовые базы. Большая часть исходного кода была написана в комбинации Torch & Lua. Я помню, как потерял много времени, пытаясь настроить его в Windows. Затем я переключился на Linux, заставил его работать, только чтобы понять, что в любом случае я не буду использовать это репо. 😂

Моим результатом было единое видео о теории DeepDream и проекте с открытым исходным кодом. Я многому научился, занимаясь этим, и мне понравился процесс. Я использовал свой код, чтобы сгенерировать эти прекрасные изображения, в том числе текущую визуальную идентичность AI Epiphany. Вот пример:

[3] GAN (генерирующие состязательные сети)

В начале 2020 года GAN по-прежнему были очень популярны. Я чувствовал, что мне не хватает необходимых знаний, поэтому решил заняться ими в следующий раз.

Я прочитал все основополагающие статьи (а также другие менее известные статьи) и решил реализовать модели vanilla GAN, cGAN (условный GAN) и DCGAN. Вот результат работы модели DCGAN, которую я обучил:

На данный момент я уточнил свою стратегию. Я понял, что:

  • В конце каждого макроса мне нужно вести блог, обобщая то, что я узнал. Это поможет будущему Алексасу (и Алексе из будущего) разобраться с темой X.
  • Мне нужно освещать статьи на моем канале YouTube, когда я их читаю. Подобный мыслительный процесс - так я буду лучше учиться и помогать другим.
  • Мне нужно открыть проект в середине макроса. После того, как вы что-то реализуете, вы поймете это лучше - так я думал. После этого все статьи, которые я читал, стали более понятными.

К сожалению, у меня нет обзоров GAN за этот период. Тогда я экспериментировал с такими видео, как PyTorch или Tensorflow, которые оказались самыми популярными (доказывая гипотезу, которую я имел в виду).

Но я не стремился к популярности (хотя я и не возражал в целом), я искал очень релевантную аудиторию. Я бы предпочел, чтобы за моей работой следил 1 парень / девушка из DeepMind, чем 100 новичков, потому что я знал, каковы мои цели.

[4] НЛП и трансформаторы

Я знал, что хочу узнать больше о моделях BERT и GPT. Трансформеры были повсюду, и я их не совсем понимал.

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

Я так благодарен, что сделал это тогда - время от времени вам нужно понимать внимание QKV, а сейчас это моя вторая натура. Вы можете узнать больше об этом путешествии здесь:



[5] Graph / Geometric ML

Еще до того, как я начал делать трансформеры, я знал, что хочу глубже изучить Graph ML (до того, как он стал таким популярным, как сейчас).

И, оглядываясь назад, я очень рад, что первым рассмотрел трансформеры / НЛП, поскольку область НЛП оказала огромное влияние на эту область. GAT был непосредственно вдохновлен оригинальной бумагой-трансформером DeepWalk от Word2Vec и так далее.

В то время я уже довольно регулярно болтал с Петаром Величковичем (я расскажу вам немного позже о том, как это произошло), и он знал, что я ' Я буду освещать GNN в следующем периоде. Он был очень отзывчив и сказал мне, что я могу позвонить ему, когда почувствую, что застрял!

Я понял, что это прекрасная возможность! Я буду изучать Graph ML, тему, которая меня увлекла, и я буду общаться с Петаром, исследователем DeepMind, который был одним из лучших исследователей в этой конкретной области.

Излишне говорить, что я многому научился! Я сделал популярную серию YouTube GNN, которой поделились влиятельные исследователи Graph ML, такие как Майкл Бронштейн, Петар и другие.

Я также сделал популярную реализацию GAT на PyTorch (Петар - первый автор GAT). Причина, по которой он стал настолько популярным, заключается в том, что, по мнению других, это был самый удобный для новичков ресурс. С двумя записными книжками Jupyter, поддержкой наборов данных PPI и Cora, красивым README и сопутствующими видеороликами он заполнил пробел и упростил для новичков вход в поле.

(Это стало рекомендуемым репо для Кембриджской лекции по GNN, и я даже получил цитаты. 😅)

Я снова массово использовал тот факт, что могу пинговать Петара, если у меня возникнут какие-либо проблемы, и что это может быть отличное сотрудничество между нами двумя!

Чтобы узнать всю историю, загляните в этот блог:



[6] RL (Обучение с подкреплением)

Барабанная дробь. Сюрприз Сюрприз! Я действительно хотел изучить RL в любом случае, но так получилось, что DeepMind славится своими открытиями в области RL. 😅

Было так много работ и проектов, которые я хотел понять! Как AlphaGo, DQN, роботизированная рука OpenAI, которая может собрать кубик Рубика и т. Д.

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

Я очень рад, что у меня уже был приличный опыт до того, как я занялся RL, иначе я мог бы потерять мотивацию. Я начал с того, что очень близко моему сердцу - компьютерного зрения - и использовал его, чтобы расширить свои знания в области машинного обучения. Затем я медленно перешел к темам, о которых мало знал.

Мне снова здесь помогли! Петар связал меня с Чарльзом Бланделлом (который также является DeepMinder), и поэтому время от времени я использовал эту возможность, хотя и гораздо более экономно.

Чтобы узнать всю историю, загляните в этот блог:



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

(Если есть интерес, я мог бы преобразовать их в PDF-файлы и опубликовать на общедоступном диске. Дайте мне знать в комментариях!)

После RL я начал сосредотачиваться на последних и лучших статьях. Вы можете ясно заметить эту тенденцию, глядя на мои новейшие видео на YouTube за последние 4 месяца.

И все вы, кто следил за моим путешествием, знали, что это были мои планы - я был очень прозрачен на протяжении всего процесса! (за исключением того факта, что я хотел подать заявку на DeepMind все время)

Помимо этого основного трека, уже в самом начале 2020 года, когда я начал читать статьи, я понял, что у меня проблемы с математикой, поэтому я потратил некоторое время, чтобы прочитать книгу Математика для машинного обучения (и Я просмотрел потрясающие плейлисты 3B1B).

Это оказалось отличным ходом. Я так счастлив, что сделал это так же, как сделал шаг назад и прошел курс «Как учиться» в сентябре 2019 года. Все эти действия помогли мне повысить скорость обучения.

Вот еще несколько книг, которые я прочитал в этот период:

  • Справочник по науке о данных Python, глава 5 - помог мне получить интуитивное представление о SVM, PCA, линейной регрессии и т. Д.
  • Автоматизируйте скучные вещи с помощью Python, пропустил первые 11 глав - мне захотелось прочитать хотя бы одну книгу по Python с тех пор, как я выучил язык на лету. Это также дало мне хорошее мышление, которое улучшило мою продуктивность в целом (в двух словах: автоматизировать повторяющиеся вещи).
  • Глубокое обучение - я прочитал только первую часть, так как понял, что мне не нужна вся эта теория. Его следует рассматривать как справочное руководство.
  • Книга почему - я прочитала ее, потому что искренне интересовалась причинностью и работой Джудеи Перл! Вот мое резюме по LinkedIn.

Кроме того, само собой разумеется, все это время я работал в Microsoft над различными инженерными проектами SE-ML. К сожалению, я не могу много рассказать вам обо всем этом, но вот некоторые из общих моментов, которыми я могу поделиться:

  • Разработал алгоритм обнаружения очков в составе подсистемы айтрекинга на устройстве HoloLens 2. Весь смысл подсистемы отслеживания взгляда состоит в том, чтобы предсказать вектор взгляда пользователя и обеспечить инстинктивное взаимодействие с голограммами. Это также помогает правильно отображать графику для конкретного пользователя (у всех разные глаза, следовательно, разные IPD и т. Д.).
  • Играется с видеокодерами, чтобы добавить функциональность желобчатого рендеринга на различные устройства VR / MR. Таким образом вы сэкономите электроэнергию, поскольку вам не нужно будет обрабатывать изображения периферийным зрением. В итоге я прочитал все справочное руководство по кодировщикам H.264 (это, опять же, вероятно, излишество 😅).
  • Реализовал идею из исследовательской статьи (с нуля, в PyTorch), которая используется для отслеживания ориентиров на теле пользователя, и показала, что конкретный датчик, который мы рассматривали, был возможным вариантом в будущем. Так я изучил PyTorch (это было в конце 2019 - начале 2020 года).
  • Написал различные сценарии, которые следили за тем, чтобы этикетировщики правильно выполняли свою работу, разработал часть нашего внутреннего конвейера метрик, занимался рендерингом и улучшением наших синтетических данных (что замечательно, посмотрите статью здесь!), Выполнил различные квантования и перфоманс. -vs-compute эксперименты (потому что я работал с периферийными устройствами) и так далее.
  • Проинтервьюированные стажеры на должности SE / ML в Microsoft. Это заставило меня чувствовать себя более комфортно в процессе собеседования и дало мне представление о том, как это выглядит «по другую сторону стола».
  • Ученики в летнем лагере ML. Я также читал лекции и проводил семинары (на CNN).

Подводя итог, можно сказать, что 1,5 года исследования машинного обучения скорости искривления, 1,5 года исследования машинного обучения без деформации, 1 года скорости деформации. Исследование SE, а остальное записано в моем блоге 5 советов, которые помогут вам в обучении.

И это моя история.

Совет: вы можете сделать еще одну вещь, чтобы увидеть более подробную информацию обо всем этом периоде, - это просто пролистать все мои публикации в LinkedIn, где я был (и до сих пор остаюсь) регулярно делиться своими обновлениями.

Часть 3: Как открылся «канал DeepMind»?

В середине 2020 года я связался с Петаром в LinkedIn. Оказалось, что он уже следил за контентом, который я там размещал, и нашел его интересным, так что это немного упростило задачу! ❤️

Во время конференции ICCV19 я познакомился с другими крутыми DeepMinders, которые тоже были из Сербии, такими как Relja Arandjelović (который защитил докторскую диссертацию с профессором Эндрю Зиссерманом в Оксфорде) и Йована Митрович. (тоже оксфордская!).

Несмотря на то, что это была моя первая конференция, я сразу понял, что ценность этих конференций заключается в следующем:

  • 1–1 беседы с авторами статей во время стендовых сессий.
  • Встречи с другими вероятными мыслящими людьми

ИМХО, многие ошибаются. К тому времени, когда вы приедете на конференцию, большинство статей уже были опубликованы в arXiv несколько месяцев назад (и есть вероятность, что кто-то уже осветил их и поделился резюме в Интернете 😂).

Вот почему виртуальные конференции никогда не станут хорошей заменой.

Затем примерно в сентябре 2020 года я дал понять Петру и Релье, что где-то в следующем году, вероятно, в апреле, я начну подавать заявку на DeepMind и попросил их дать какие-либо советы о том, как я могу подготовиться! Тем временем они оба предложили направить меня! ❤️

Перенесемся в пятницу, апрель 2021 года. Я случайно болтал с Петаром, упомянул, что наконец готов подать заявку на DeepMind, и пока мы болтали, он просто сказал (я даже не осознавал): «Хорошо, я только что закончил отправлять направления!" 😂

Затем он связался с рекрутером (Кэмерон Андерсон, не знал его тогда, но теперь я могу сказать вам, что он великолепен в своей работе) в LinkedIn, упомянул, кем я был, и спросил, можно ли мне отправить мой LinkedIn. / YouTube / GitHub вместо моего резюме. Оказалось, что Кэмерон уже следил за моей работой! И он сказал, что все в порядке! Боже мой, я был так счастлив.

Все произошло так быстро. Я только что отправил свой профиль в LinkedIn, и у меня уже было назначено собеседование на понедельник.

Итак, подведем итоги. Сеть имеет значение! Очень много. НО. Пожалуйста, не спамите людей. Вместо этого создайте настоящие связи. Спросите, что вы можете для них сделать, а не то, что они могут для вас сделать. Никто из них, включая меня, не порекомендует человека, если мы уже не знакомы с его работой и не можем дать некоторые гарантии.

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

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

Что, оглядываясь назад, могло быть большой ошибкой. Хорошо составленное резюме имеет значение! И мои интервьюеры действительно этим воспользовались. Задавать вопросы проще, глядя на резюме на 1/2 страницы, чем на профиль LinkedIn.

Я оставляю это здесь в наследство:

С этим много чего плохого. Для начала мне следовало бы написать намного больше о моей последней работе в Microsoft. Дело в том, что моя команда в Microsoft была очень скрытной (в течение некоторого времени другие мои коллеги из Microsoft не знали, над чем я работаю), поэтому я выбрал самую безопасную стратегию - ничего не сообщать внешнему миру. 😂

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

Наконец, давайте посмотрим, как выглядели мои последние приготовления к DeepMind!

Последние приготовления к собеседованию

Хорошо, на данный момент мне удалось создать прочную основу, и меня направили на позицию RE. Вам нужен солидный опыт, чтобы получить работу в DeepMind. Я почти уверен, что у меня даже не было бы возможности пройти собеседование, если бы у меня не было всех моих проектов GitHub, предыдущего опыта и других общедоступных артефактов.

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

Но битва не была выиграна. Как вы все знаете, процессы собеседования - это… что-то вроде темной магии.

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

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

Позвольте мне теперь рассказать вам, как мне это удалось.

Во-первых, вот несколько общих советов:

  • Изучите каждого из своих интервьюеров. Поймите, откуда они и чем они занимаются, чтобы вы могли задавать соответствующие вопросы. Не тратьте время зря. Проверьте их профили в LinkedIn / Twitter (у них всегда есть хотя бы один из них) и на их страницу в Google Scholar. Прочтите все их статьи, если возможно, или те, которые имеют наибольшее количество цитирований / те, в которых они являются первым автором. Некоторым интервьюерам DeepMind я прочитал более 10 статей. 😅 Вероятно, в этом нет необходимости, но я был достаточно увлечен (читай орехи), чтобы это сделать.
  • Изучите каждый из своих проектов резюме. Вы должны иметь возможность подробно рассказать обо всех этих проектах. Будь то ваши проекты на GitHub или те, что вы делали в какой-то предыдущей компании.
  • Проведите имитационное интервью. Найдите друзей, которые занимаются искусственным интеллектом в любой компании и в идеале сами являются интервьюерами.

В DeepMind я также провел серьезное исследование вокруг AGI. Я читал некоторые основополагающие статьи об ИИ, например:

Ранее я также изучал основополагающую статью Алана Тьюринга Вычислительные машины и интеллект, а также последующие статьи Джона Сирла и т. Д. Вероятно, они вам не понадобятся. (на случай, если вам нужно резюме, вот мои блоги, части один и два)

Я также смотрел видео на YouTube с участием некоторых из следующих людей: Демис Хассабис, Шейн Легг, Маркус Хаттер, Ф. Шолле, Мюррей Шанахан.

(Flex: Демису понравилась пара моих твитов 😍)

Причина, по которой я провел это исследование, заключается в том, что миссия DeepMind - c анализировать AGI и использовать его для решения сложных научных задач. Вы также можете ожидать «поведенческих» вопросов по этим темам, поэтому я хотел иметь хороший фон.

Изучите как можно больше о DeepMind. Для меня это было естественно, так как я освещал статьи на YouTube, реализовывал некоторые из них, знал людей, культуру и т. Д.

Это были некоторые общие советы. Замените DeepMind компанией своей мечты и сопоставьте такое понятие, как «AGI», с «всем, что волнует компания моей мечты», и проведите исследование.

Теперь давайте посмотрим, как выглядит в DeepMind процесс найма на должность RE в «основной» части команды (подробнее об организации DeepMind чуть позже).

Программа состоит из следующих собеседований (на момент написания статьи она может измениться в будущем, но вы все равно должны иметь общее представление):

  • Первоначальный чат с вашим рекрутером. Это должно дать вашему рекрутеру представление о том, кого вам больше интересует подача заявки на участие в прикладной или основной части команды. Как и к любому другому интервью, относитесь к нему с уважением, в нем может быть поведенческий компонент. (1 интервью)
  • Загадка". Идея состоит в том, чтобы проверить ваше понимание фундаментальных тем в математике, статистике, CS и ML. (2 интервью)
  • Кодирование интервью. Ваше классическое собеседование в сфере SE, если вы когда-либо проходили собеседование в Google, Microsoft или любой другой крупной технологической компании. (1 интервью)
  • Интервью с тимлидом. Вы будете обсуждать разные темы. Может возникнуть все, что есть в вашем резюме, а также открытые проблемы машинного обучения и поведенческие вопросы. (1 интервью)
  • Интервью со старшим руководителем группы. По структуре очень похоже на вышеупомянутое интервью. Кроме того, это интервью позволяет более точно определить, подходите ли вы для работы в команде. (ТБХ, вы должны помнить об этом при каждом интервью) (1 интервью)
  • Интервью с людьми и культурой. Ваше классическое HR-интервью. (1 интервью)

Позвольте мне дать вам несколько советов, как подготовиться к этому!

Моя цель здесь не в том, чтобы дать вам несправедливое преимущество или способ игры в систему найма, а в том, чтобы дать вам рекомендации о том, как вы можете стать лучше в этих темах и, таким образом, надеюсь, стать лучшим инженером (и лучшим человеком)! 😜

Я пишу это для того, чтобы бывшая Алекса была благодарна за это!

Интервью №1: беседа с рекрутером

Проявите должную осмотрительность и поймите, чем именно вы хотите заниматься в DeepMind (насколько это возможно!). DeepMind имеет 2 «команды» (это мягкий тип подразделения, обе «команды» работают над общей миссией):

  • Основная исследовательская группа. Они занимаются более чисто исследовательскими проектами. Примерами более производственных проектов могут быть AlphaFold (я предполагаю, что здесь также была задействована команда Applied), AlphaGo и т. Д. Другие проекты, которые RE в этой команде могут участвовать в реализации определенных исследовательских идей в сотрудничестве с учеными-исследователями.
  • Прикладная команда. Этот не требует пояснений. Некоторые из реализованных ими проектов - это проект Снижение энергопотребления центра обработки данных, улучшение RecSys для Google Playstore, WaveNet, экономия энергии на Android и многие другие (они ориентированы не только на Google).

Зайдите на сайт DeepMind, читайте их блоги и исследуйте все доступные вакансии, которые вам интересны.

Также я настоятельно рекомендую вам прочитать первую (поведенческую) часть книги Cracking The Coding Interview (CTCI). Как я уже сказал, каждый интервьюер будет оценивать вашу личность и подходите ли вы для команды - так что некоторые подготовительные меры в этом отношении определенно не повредят!

Интервью №2 и №3: «Викторина»

Это, наверное, самая сложная часть для подготовки (хотя, TBH, это было не для меня, это действительно зависит от того, откуда вы). Для его прохождения необходима прочная техническая база.

Я расскажу, как я подготовился, хотя, опять же, это может быть излишним:

  • [CS] Я прочитал учебник по алгоритмам и структурам данных, написанный сербским профессором, поэтому он не будет иметь к вам никакого отношения. Суть в том, что я выбрал книгу, с которой уже был знаком (я читал ее еще в 2017 году, готовясь к работе в крупных технологических компаниях, помните?). Эти знания также пригодятся позже во время собеседования с SE, так что ваше время не будет потрачено зря. Это книга на 400 страниц. Я пропустил некоторые части, которые, как я знал, являются «слишком продвинутыми», такие как B-деревья (структуры данных внешней памяти) и некоторые детали хэш-функций (я, вероятно, прочитал ~ 340 страниц). Я рассмотрел такие темы, как линейные / нелинейные структуры данных (графики / деревья), а также различные алгоритмы сортировки и поиска.
  • [CS] Просматривал материалы курса ОС на моем факультете. Такие вещи, как взаимоблокировки, потоки, виртуальная память и т. Д. Кроме того, я прочитал этот блог о потоковой передаче в Python, чтобы освежить свои знания терминологии.
  • [CS] Кратко рассмотрел формальную теорию большой O-нотации из книги Введение в алгоритмы (CLRS).
  • [Математика, классическое машинное обучение] Прочтите книгу Математика для машинного обучения еще раз. (Как вы помните, в первый раз я прочитал это в 2020 году, поэтому на этот раз я был намного быстрее).
  • [ML] Расскажите о моей теории RL. Я просто погуглил и нашел несколько специальных материалов. Что такое структура RL (env-agent-reward), что такое MDP и т. Д. Мой блог Начало работы с RL - хорошая отправная точка.
  • [Статистика] YouTube-видео (мне помогли такие каналы, как jbstatistics и StatQuest with Josh Starmer), поиск в Google неизвестных концепций, беглый просмотр этого материала (листы 1 и 2) из ​​Кембриджа. Я сделал несколько разумных предположений относительно того, о чем они могли спросить меня.

Этого должно быть достаточно. Если вы уже уверены в некоторых из них - просто пропустите это - относитесь к этому как к предвзятому руководству, а не как к истине.

Мой процесс собеседования уже начался на этом этапе, так что это был скорее спринт, чем месячная подготовка. Я настоятельно рекомендую вам начать подготовку, прежде чем начинать процесс собеседования.

Интервью №4: проблема кодирования

  • Я решил некоторые проблемы с CTCI. Я не просмотрел все разделы книги - это занимает слишком много времени. Я решил большинство проблем из первых 8 глав (за исключением глав 5, 6, где я бегло просматривал решения или быстро решал некоторые из них в уме). Я бегло просмотрел решения раздела 9 по проектированию системы, я пропустил главу 10, поскольку я уже реализовал некоторые из самых популярных алгоритмов сортировки / поиска при подготовке к викторине, и я полностью проигнорировал главы 11-15.
  • Я прочитал главу о динамическом программировании из книги CLRS.

Пара советов, как читать CTCI:

  • Во-первых, попробуйте решить проблему самостоятельно. Только если вы застряли, обратите внимание на первую подсказку. Если это не помогает, посмотрите следующий и т. Д. В конце концов, даже если вам удалось решить проблему, пройдитесь по решениям. Вы определенно получите новые взгляды на то, как подойти к той же самой проблеме.
  • Обязательно всегда записывайте объем памяти и временную сложность вашего решения, прежде чем переходить к разделу решения.
  • Выберите язык, на котором вы чувствуете себя наиболее комфортно. В первый раз, когда я прочитал эту книгу (еще в 2017 году), я использовал Java (так же, как в то время работал с Android, а сама книга содержит решения на Java). На этот раз я использовал Python. Вы можете найти решения на любом языке в Интернете или просто воспользоваться сайтом GeeksForGeeks.

Вам действительно не нужно ничего, кроме CTCI! Только то. 😅

Интервью №5, №6 и №7: интервью с руководителями коллектива, люди и культура

Просто прочтите поведенческую / первую часть книги CTCI и следуйте моим общим советам (например, будьте готовы рассказать о своих проектах и ​​ознакомиться с исследованиями своего интервьюера).

Они будут задавать вам такие вопросы, как: «Что вам нравится в DeepMind?», «Почему именно DeepMind, а не какая-то другая компания?», «Расскажите мне что-нибудь о своем любимом проекте». Вроде того.

Вот и все! Теперь тебе должно быть хорошо!

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

Я провалил 6-е собеседование (старший руководитель группы). ИМХО, это было просто недоразумение в большей степени, чем что-либо еще (я получил обратную связь по электронной почте, они были очень добрыми, и именно поэтому я знаю, что это было недоразумение), но жизнь продолжается!

Как «технически сильный» кандидат, меня перевели в инкубационную / прикладную часть команды. Я снова подготовился, следуя общим советам, которые дал вам, ребята, и получил 4 раза ДА. Меня приняли. Ура!!!

Хорошо, что после собеседования с ними я понял, что команда Incubation, вероятно, мне даже больше подходит!

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

Вот и все. Думаю, остальное уже история.

И эти 2 вирусных поста в Твиттере и LinkedIn. 😂

Мои следующие шаги

Я присоединюсь к DeepMind в конце этого года (декабрь 2021 года) в качестве инженера-исследователя. Я очень взволнован этим следующим периодом моей жизни!

Меня ждет много нового. Я перееду в Лондон, Великобритания. Придется создавать новые социальные круги. Я познакомлюсь с новой культурой, новыми языками (поскольку Лондон довольно многокультурным), новой компанией и даже новой ОС! 😅

Что касается того, что вы можете ожидать от меня в следующий период, я буду:

  • Делюсь всем, что я делаю, в Твиттере, LinkedIn и Discord!
  • Покрытие большего количества геометрических работ DL на моем YouTube канале!
  • Объяснение различных инструментов машинного обучения с открытым исходным кодом и исследовательского кода.
  • Изучаем JAX и на этот раз делимся путешествием с вами, ребята!

От себя лично: я постараюсь еще немного поехать до декабря и буду делать какие-то инвестиции (я буду читать книгу Интеллектуальный инвестор).

Я получил столько добрых слов и просьб от сообщества на The AI ​​Epiphany:

И поэтому я чувствовал себя обязанным рассказать больше о моем пути к DeepMind, чтобы помочь вам, ребята, стать лучше. И, надеюсь, поделившись этим глубоко личным путешествием, мне удалось помочь по крайней мере некоторым из вас.

Если есть что-то, о чем вы хотите, чтобы я написал - запишите это в разделе комментариев или напишите мне. Я был бы рад написать больше о математике и статистике, машинном обучении / глубоком обучении, CS / разработке программного обеспечения, поиске работы в крупной технологической компании, получении приглашения в престижные лагеря машинного обучения и т. Д., Обо всем, что могло бы вам помочь!

Также не стесняйтесь написать мне сообщение или:

  1. Свяжитесь со мной и свяжитесь со мной в 💡 LinkedIn и Twitter
  2. Подпишитесь на мой 🔔 канал YouTube для контента, связанного с искусственным интеллектом️
  3. Следуйте за мной на 📚 Medium и 💻 GitHub
  4. Подпишитесь на мой 📢 ежемесячный информационный бюллетень AI и присоединяйтесь к сообществу 👨‍👩‍👧‍👦 Discord!

И если вы найдете содержание, которое я создаю, полезным подумайте о том, чтобы стать Patreon!

С любовью