3 августа в наших соцсетях выступал Сергей Ширкин, специалист по ML и искусственному интеллекту.
Сергей занимался автоматизацией финансовых технологий и базами данных в «Сбербанке» и «Росбанке», построением финансовых моделей на основе машинного обучения и аналитической деятельностью в компании Equifax. Прогнозирует телесмотрение с применением методов искусственного интеллекта в Dentsu Aegis Network Russia. Приглашённый преподаватель ВШЭ (магистерская программа «Коммуникации, основанные на данных»).
Также Сергей исследует квантовые вычисления в приложении к ИИ и машинному обучению. Он стоит у истоков факультетов Искусственного интеллекта, Аналитики Big Data и Data Engineering онлайн-университета Geek University, на которых работает деканом и преподавателем.
Делимся с вами расшифровкой эфира и записью.
***
Меня зовут Сергей Ширкин, сегодня мы поговорим об искусственном интеллекте. Обсудим начальные пути – как попасть в искусственный интеллект, как обучиться необходимым предметам, какие курсы пройти, какую литературу читать, как начать карьеру. Также про различные направления.
Сегодняшние темы могут быть интересны не только новичкам, но и опытным программистам – например, как перейти из сферы программирования в сферу машинного обучения, искусственного интеллекта, нейронных сетей. В зависимости от того, в какой технологии человек занимается и какие языки изучает, практичный переход в эту сферу может проходить по-разному. Специальностей в ИИ очень много.
Порекомендуйте материалы по самостоятельному погружению в ИИ?
Если вы совсем новичок, то лучше начать с изучения Python. Быстрый способ для этого, как я видел на примере других новичков – это сайт PythonTutor.ru. Там надо изучить теорию и порешать задачи – хотя бы процентов 70. Задачи могут показаться сложными, если вы совсем не программировали до этого.
Следующий шаг – язык запросов SQL, и здесь поможет сайт SQL-EX.ru: там есть упражнения по SQL. Они организованы по этапам: обучающий этап, этап для получения рейтинга – можно занять определенное место в рейтинге. Здесь вы научитесь работать с базами данных. Параллельно там есть обучающие материалы от автора Моисеенко, и их довольно легко изучить.
Потом потребуется изучить само машинное обучение. Различные алгоритмы, начиная с линейной регрессии, логистической регрессии, вплоть до градиентного бустинга. Здесь очень много материалов. Потом можно перейти к нейронным сетям – для компьютерного зрения, для NLP; вы изучите сверточные, рекуррентные нейронные сети, и самые современные – трансформеры, Берт и т.д.
Расскажу про развитие ИИ. Если посмотреть на историю этого развития до 2010, то она достаточно скудна: были, конечно, некоторые великие свершения в ИИ и в смежных областях – в больших данных, например, и были готовы многие математические алгоритмы. Но для ИИ было недостаточно вычислительной мощности и данных. Начиная с 2010 года – скорее, с 2012 – пошел бурный рост ИИ. В 2012 году на одном из соревнований нейросеть победила классические алгоритмы машинного зрения и научилась распознавать около 1000 классов изображений.
После этого достижения появился большой отрыв от конкурентов, применявших классическое компьютерное зрение, и началось развитие искусственных нейронных сетей. Появились различные архитектуры сверточных сетей, и в компьютерном зрении случился прорыв. Раньше считалось, что для нейронной сети различить изображение кошки и собаки – это очень сложная вещь, но в 2012 году нейросети научились распознавать, классифицировать изображения гораздо быстрее и точнее человека.
Сейчас компьютерное зрение достигло больших успехов. Параллельно развивается обработка естественного языка – NLP. С появлением модели GPT-3, которые создала компания OpenAI пару месяцев назад, нейросеть научилась генерировать текст (а также музыку и другие последовательности). Это один из важных шагов в NLP – скорее всего, в этом десятилетии она достигнет расцвета. Появятся чат-боты, которые смогут полноценно поддерживать диалог с человеком.
SQL и Python немного. После курсов по data science, без опыта, можно сразу устроиться data scientist, или сначала надо поработать аналитиком БД?
Сейчас попасть в data science сложнее, чем 5 лет назад. Тогда можно было принять участие в каком-нибудь конкурсе на Kaggle и занять место – не обязательно самое первое, например, в первых 10% — в каком-нибудь интересном соревновании, не обучающего уровня. После этого можно было уже ходить по компаниям, отвечать на несложные вопросы по машинному обучению, и такого человека могли взять. Специалистов было мало.
Сейчас все гораздо сложнее, поэтому иногда не получается сразу после того, как вы изучили машинное обучение и математику, попасть на вакансию своей мечты – специалиста по ИИ или data scientist.
Хороший путь – сначала поработать с данными, аналитиком баз данных или аналитиком данных. Факт в том, что вы должны научиться предварительно обрабатывать, чистить данные, применять статистику. Это могут быть технологии БД, Python в том числе. Когда вы наберетесь опыта, появится у вас бэкграунд, то вы сможете, используя свои знания по библиотекам data science в Python – Pandas, NumPy, SKLearn, устроиться на вакансию, связанную с ИИ или data science.
В чем отличия специалистов от ИИ от data scientists?
Нужен ли C++ специалисту по ИИ? Что посоветуете изучить для того, чтобы стать спецом по компьютерному зрению?
Сейчас в вакансиях западных компаний появилось разделение: помимо data scientist есть отдельные вакансии для специалистов по ИИ. Раньше подразумевалось, что data scientist – это человек, который занимается и анализом табличных данных, и задачами компьютерного зрения, и задачами NLP. Также существовала вакансия аналитика данных – она оплачивалась меньше, хотя и была также довольно престижной; такой человек должен был анализировать данные, но не слишком углубляться в ИИ, связанный с речью, текстом и изображениями, работая в основном с табличными данными. Затем произошло смешение вакансий: в Долине всех аналитиков данных стали называть data scientist, включая и тех, кто работает только с табличными данными, и тех, кто работает с NLP и компьютерным зрением. И одновременно, чуть позже, начали выделять отдельно специалиста по ИИ. В российских компаниях обычно такого разделениям нет, хотя иногда бывают специализированные вакансии – например, «инженер NLP/компьютерного зрения». Data scientist’у желательно понемногу уметь все.
Насчет С++: самый основной – это Python. То есть, если вы работаете специалистом по ИИ, вы должны использовать TensorFLow, Keras или PyTorch – он сейчас на первом месте. Но если вы пишете более низкоуровневые программы – например, если вакансия связана с робомобилями, то часто будет требоваться код на C++. Python не всегда быстро работает. Библиотеки для машинного обучения обычно написаны на C++, но иногда нужно всю программу написать на C++: помимо самих моделей может работать логика (if-else и т.д.), и на С++ это работает быстрее. Конечно, сразу приходить на такую вакансию сложно, и лучше сперва поработать на такой, где будет достаточно Python – например, там, где идет аналитика соцсетей с анализом изображений, без потребности в быстрой обработке.
Для того, чтобы стать спецом, надо научиться работать с библиотеками для нейронных сетей, изучить библиотеку OpenCV для Python – она также есть для C++. Так вы получите инструментарий. Еще желательно уметь работать с библиотекой NumPy, понимать саму математику анализа изображений – то есть, разбираться в линейной алгебре и матанализе, также – знать архитектуру нейронных сетей. И так далее.
Почему на собеседованиях в ML задают вопросы о том, как разруливать конфликты в hash-таблице?
Почему это – маркер при приеме на работу, если это можно загуглить по ходу?
Не в каждой вакансии это спрашивают. Если вы идете на аналитику табличных данных, то вряд ли у вас это спросят. Точно спросят, если вы претендуете на место ML-инженера: то есть, вы не просто создаете модели ML, вы их еще и внедряете, и вам надо знать алгоритмы и структуры данных. А если вы разрабатываете что-то наподобие робомобиля, то – тем более: там придется писать код высокого и низкого уровня, и это знание обязательно. А иногда такое знание требуется и в анализе табличных данных – допустим, вы пишете модуль для этого на C++.
Если вы пока не готовы на такие вакансии претендовать, можно пройти побольше собеседований. Допустим, если вы пойдете устраиваться data scientist’ом в банк, то там подобных вопросов будет меньше.
Пишу на Python 10 лет, но без высшего образования. Насколько сложно входить в сферу ИИ без вышмата?
Высшая математика нужна. Придется пройти курсы или изучить литературу, и это будет долгий процесс. Вам будет нужна подготовка по линейной алгебре, математическому анализу, теории вероятности и математической статистике. Обычной школьной программы явно не хватит для того, чтобы заниматься ИИ; конечно, программы бывают разные – в некоторых школах и в 10-м классе проходятся темы из ВУЗов, но такое редко бывает.
Pandas, SKLearn, Catboost, Seaborn, результаты в тренировочных соревнованиях Kaggle – 3% и 13%. Нужно ли погружаться в DL, или уже можно искать работу?
По библиотекам уже все хорошо; у вас уже есть Pandas – библиотека для работы с табличными данными, и SKLearn – модели машинного обучения, и Catboost – градиентный бустинг, и Seaborn – для визуализации. Результаты 3% и 13% — значит, если это не учебные соревнования, то с такими результатами у вас уже должна быть какая-то медаль.
Deep Learning не всегда нужен. Вы можете уже пробовать искать работу, я думаю. Но, если вам нужна именно работа с DL, то нужно еще поучить нейронные сети.
Какой базовый набор книг нужно прочесть?
Я собираюсь показать свои книги в конце стрима. Я выбрал базовый набор, ничего особенно продвинутого.
Насколько сейчас востребованы эти профессии? Будет ли много вакансий через 2 года?
Если вспомнить 2015-16 годы – тогда, например, на Headhunter было не больше 5-10 вакансий data scientist. То есть, был практически пустой рынок. Конечно, потом было переименование аналитиков в data scientist, но этого тоже было немного.
Сейчас одномоментно требуется несколько сотен, если смотреть по тому же сайту. Говорят, есть вакансии, которых там нет. Например, на ODS – OpenDataScience – если посмотреть, есть отдельный раздел вакансий. В целом, пока вакансии не кончаются – я думаю, через 2 года их будет только больше. Не только крупные компании этим занимаются: есть стартапы, мелкие компании; data scientist’ы сейчас требуются и в госучреждениях – например, в разных муниципальных департаментах, в налоговой службе и так далее.
В какой отрасли ИИ наиболее востребован?
Самое простое применение ИИ, где его явное применение может автоматизировать большое количество умственной работы специалистов – это финансовая сфера. Есть огромное количество банков. Каждому из них нужно, например, оценивать кредитоспособность заемщиков – то есть, определять по различных признакам, стоит ли выдавать кредит, не переоценивает ли человек свои силы и сможет ли вернуть кредит. Это самое очевидное использование ИИ.
Потом маркетинг, построение рекламных кампаний: то есть, когда нужно предсказывать, посмотрит ли человек рекламу (в Интернете, на ТВ и т.д.). Это тоже развитое направление, его невозможно не автоматизировать с помощью ИИ. Плюс, сейчас развивается роботизация: есть не только промышленные, но и бытовые роботы – робопылесосы и другие принадлежности для дома, которые тоже кто-то разрабатывает. Или различные приложения для смартфона – в общем, отраслей много, начиная от промышленности, медицины, ритейла, финансов, маркетинга и заканчивая развлечениями. Например, в играх тоже можно применить ИИ.
Сто ценится больше при приеме на работу в data science: знание математики, понимание работы конкретных алгоритмов, опыт работы?
За плечами техническая магистратура и год работы аналитиком данных в консалтинге.
У вас хороший бэкграунд – технический вуз, год работы аналитиком данных. Если вы уже изучили технологии и умеете программировать, то попасть в data science легко. Если вы работали а анализе БД и знаете SQL – это большой плюс, а если прибавить программирование и машинное обучение – это очень хороший набор.
Расскажу о том, как я строю модели машинного обучения на работе. Компания, в которой я работаю – это Dentsu Aegis, очень известная компания, особенно среди тех, кто работает в маркетинге. Это коммуникационная группа, входящая в топ-5 в мире; ее штаб находится в Токио, есть офисы в 145 странах. Российский филиал – Dentsu Aegis Network Russia. В России работает 25 лет и выступает пионером медиа-инноваций.
Я расскажу про тот участок, за который отвечаю как data scientist. Это как раз то применение, о котором я рассказывал как о наиболее очевидном в практическом применении. ИИ в маркетинге помогает автоматизировать многие задачи специалистов, и одна из них – прогнозирование просмотра различных видов контента различными целевыми аудиториями. Я расскажу подробнее про одну из своих непосредственных задач – прогнозирование телесмотрения.
Аудиторий может быть несколько сотен, и для того, чтобы их прогнозировать вручную, требовалась бы работа десятков специалистов. Это непомерно. Очень большое количество данных – до миллиардов строк в таблицах. Надо заботиться не только о том, чтобы построить модель машинного обучения, но и о том, чтобы она быстро работала. Для такой работа надо хорошо знать реляционные и нереляционные БД, работать с Linux, иметь навыки devops и вообще разбираться в архитектуре приложения, в IT-инфраструктуре компании, хорошо знать Python, возможно – C++.
Когда мы строим прогноз телепросмотров, мы применяем современные методы машинного обучения. Для табличных данных это градиентный бустинг и случайный лес. Если анализируется текст, мы применяем нейронные сети; помимо них – тематическое моделирование, TF-IDF и другие распространенные методы NLP.
Мы применяем градиентный бустинг, потому что, если мы прогнозируем с использованием табличных данных, то по работе с такими данными градиентный бустинг опережает все известные алгоритмы. В Kaggle, начиная с 2018 года, все основные достижения в соревнованиях с использованием табличных данных достигались именно с помощью градиентного бустинга. Большинство кегглеров тогда перешло на XGBoost – это была первая известная библиотека для градиентного бустинга, а позже многие освоили LightGBM от Microsoft или CatBoost от Yandex. Для задачи прогноза просмотров телепередач также хорошо подходит применение временных рядов, но такие методы не всегда хорошо работают – периодически появляются неожиданные события, на которые нужно вовремя реагировать или предвосхищать. Иногда встречаются большие аномальные периоды – от нескольких дней до месяцев: например, ЧМ по футболу в 2018 году сильно повлиял на просмотры. Карантин тоже стал аномальным периодом: люди начали проводить больше времени дома и больше смотреть ТВ. Это тоже надо как-то учитывать, предвосхищать. Вообще, этот период – это своеобразный вызов для машинного обучения и ИИ, потому что нужно постоянно осуществлять мониторинг моделей и контролировать их, чтобы они работали корректно. Помимо аномальных периодов на прогноз оказывают влияние праздники, погодные условия, изменения трендов в просмотрах конкретных передач и каналов. В итоге модели получаются достаточно сложными, потому что надо учесть все возможные варианты, учесть или предвосхитить аномалии и отклонения.
Естественно, модели не предоставлены сами себе – постоянно идет тестирование, тонкая настройка, мониторинг. Но не только модели важны: еще один важный этап – это создание признаков. Во-первых, это признаки, связанные со временем показа: время суток, день недели, сезон и т.д. Во-вторых, это признаки, связанные с контентом. При этом надо понимать, что, если передача идет ночью, то, какой бы ни был интересный контент, просмотров не будет больше, чем в праймтайм. Важность признаков может меняться, но разные аудитории выбирают разный контент. Это может зависеть от пола, возраста, социального положения.
Один из самых объемных по времени этапов работы с данными – это feature engineering: обработка или создание признаков. Для этой части data science нужен большой опыт: заранее известных рецептов либо нет, либо они слишком просты, и способы подготовки признаков приходится придумывать на ходу.
Иногда в данных встречаются курьезы: допустим, зритель включает ТВ вечером и засыпает. Получается так, как будто он всю ночь смотрел передачи. Это один из примеров шума в данных – вроде бы данные точные, а вроде бы и нет, и это нужно учиться угадывать, хотя это и сложно. Кроме того, ночью обычно показывается очень мало рекламы.
Когда мы строим модель, надо не просто сделать так, чтобы она работала, но и обеспечить тестирование и мониторинг. Для этого нам нужны метрики. Так как у нас задача регрессии, наш набор метрик будет отличаться от набора для классификации, например. Это среднеквадратичная ошибка и коэффициент детерминации – они все очень важны. Также есть метрики, которое приходится создавать самостоятельно для решения определенной бизнес-задачи – например, задачи оптимизации расходов на рекламную кампанию. В таком случае нам надо предсказывать не только телевизионный рейтинг, но и охват рекламной кампании; у нас работает не только машинное обучение, но и сложные статистические и эконометрические методы. Это тот случай, когда знаний машинного обучения оказывается недостаточно: здесь нужен матанализ, линейная алгебра, методы математической оптимизации. В отличие от обычных задач машинного обучения – регрессии, классификации, кластеризации – здесь приходится придумывать собственные методы, и одного программирования не хватит.
Хочу упомянуть программу Высшей школы экономики – «Коммуникации, основанные на данных». Приходилось по ходу работы помогать студентам на этой программе, они занимаются маркетингом и предметами, связанными с машинным обучением. Собственно, для чего машинное обучение и data science маркетологу? Раньше не предполагалось, что специалист такой области будет программировать и делать сложные модели, но сейчас это – навык, который дает преимущества на рынке труда. Если специалист, дополнительно к своей профессии, овладел data science, то он получает возможность либо поменять работу и стать data scientist’ом, либо продолжить развиваться в своей предметной сфере, но с большими конкурентными преимуществами. Знаток машинного обучения сможет делать более точные прогнозы, но для этого потребуется многое изучить.
Стоит ли обратить внимание на курс Data Science МФТИ/Yandex, или, возможно, посмотреть в сторону Udacity?
Я так понимаю, вы имеете ввиду курс от МФТИ/Yandex на Coursera. Udacity – это отдельная площадка для обучения; там не только data science, хотя для ИИ и data science и предназначена довольно большая часть курсов. Я рекомендую не зацикливаться на одном ресурсе, а попробовать пройти несколько курсов. Курсы не совпадают на 100%, вы всегда можете найти что-то новое, чего раньше не знали. Также новый курс можно использовать для повторения. Например, курсы на GeekBrains на наших факультетах ИИ, data engineering и аналитики big data. Так как я являюсь их деканом и преподавателем, я могу более подробно рассказать о них.
Курсы объединяются в факультеты – например, на факультете искусственного интеллекта есть 17 курсов, плюс 8 дополнительных. Почти в каждом курсе есть практическая работа как финальный проект. Таким образом, у обучающегося на нем специалиста появляется практика. Я рекомендую не просто изучать теорию, а делать проекты: хорошие практические умения приблизят вас к прохождению собеседований и началу карьеры.
Я сам обучался некоторое время назад на Udacity – проходил курс по робомобилям, очень длинный, запланировано было 9 месяцев, но курс длился около года. Действительно узнал много нового, впечатления от платформы положительные. Но, конечно, все курсы там преподаются на английском.
Как учесть аномалии по временным рядам и можно ли их вырезать?
Неприятный процесс. Для этого нет готового рецепта – нужно огромное количество тестов. Точнее, есть готовые модели, но они рассчитаны только на обнаружение аномалий в прошлом, а их нужно не только обнаруживать, но и предвосхищать.
Для таких случаев есть различные наработки, но их приходится создавать самостоятельно. Самое важное – определить, что будет в будущем: например, увеличение телесмотрения по определенным каналам и передачам. Когда проходит время, эти данные попадают в прошлое — к тренировочным данным, и их нужно обработать правильным образом.
Если даже в будущем не будет аномалий, прошлые аномалии могут повлиять на ваш прогноз. Здесь есть много методов; самый простой – удаление аномальных данных, но, если их много, это может привести к выпадению целого периода временного ряда из рассмотрения, поэтому такой способ не всегда подходит.
Каким образом устроиться на работу без подтвержденного опыта?
Хороший опыт – это ваши проекты. То есть, если вы не просто учите теорию, а сразу делаете проект — желательно, под руководством ментора (человека с опытом в data science и ИИ) – то вы знаете, что вы делаете. Вы не просто умеете применять теорию, или применять модель к данным, найденным в интернете, а решать практические задачи. При работе над такими проектами вы получаете знания, которые нельзя получить из книг и курсов, и помощь ментора здесь неоценима.
Поговорим о книгах – я приготовил небольшую стопку.
Если вы работаете в data science, то, скорее всего, вам придется работать в среде Linux. При этом вы не будете администратором – то есть, слишком глубокие знания вам не понадобятся – но уверенное знание этой платформы для простых административных задач (планирование запуска скриптов или распоряжение ресурсами ОС) будет обязательно. Здесь поможет книга «LINUX – карманный справочник» Скотта Граннемана. Его можно изучить за пару дней.
По теории вероятностей я бы порекомендовал книгу Г. Г. Битнера «Теория вероятностей» — в ней есть и теория, и задачи. Теория вероятностей пригодится вам и на собеседовании, и в работе.
Любому, кто работает в IT, требуется минимальный набор знаний и навыков. Соответственно, книга «Теоретический минимум по Computer Science – все, что нужно знать программисту и разработчику» (Фило Владстон Феррейра) — это ликбез по computer science.
Если вы будете погружаться в программирование и низкоуровневые разработки, то вам будут нужны алгоритмы. В книге «Алгоритмы для начинающих – теория и практика для разработчика» Паноса Луридаса даются алгоритмы без привязки к конкретному языку. Есть более объемная книга для C++ — «Алгоритмы на C++» Роберта Седжвика; она полезна, если вы хотите исключить какие-то высокоуровневые операции, которые есть в Python, и создавать алгоритмы с нуля.
Если вы хотите получить общее представление о верхнеуровневой работе специалиста по data science, то вам подойдет книга «Работа с данными в любой сфере – как выйти на новый уровень, используя аналитику» Кирилла Еременко. Здесь нет программирования. Но, если вы уже специалист, она пригодится вам только в том случае, если вы еще не работали с данными.
Далее: «Data Science. Наука о данных с нуля» Джоэля Граса – тоже полезная книга. От того же издания – «Практическая статистика для специалистов Data Science. 50 важнейших понятий» Питера Брюса и Эндрю Брюса. Здесь тоже можно изучить статистику.
Если вы будете работать с данными в Python и использовать библиотеку Pandas, то вам обязательно нужна «Python и анализ данных» Уэса Маккини – автора самой библиотеки Pandas.
По машинному обучению я рекомендую две книги: «Машинное обучение» Петера Флаха и «Python и машинное обучение» Себастьяна Рашки.
Для глубокого обучения есть книга «Глубокое обучение на Python» Франсуа Шолле, там можно изучить нейронные сети для задач NLP и компьютерного зрения. Конкретно по NLP есть «Прикладной анализ текстовых данных на Python» — Бенджамин Бенгфорд, Ребекка Белбро и Тони Охеда.
Если хотите изучить TensorFlow для глубокого обучения – есть одноименная книга Бхарата Рамсундара и Реза Босаг Заде.
Также есть книга, в которой просто и понятно объясняются принципы работы нейронных сетей – книга Эндрю Траска «Грокаем глубокое обучение». Есть также «Грокаем алгоритмы» — там хорошо объясняются алгоритмы, которые могут пригодиться на собеседовании и на практике.
Что вы спрашиваете на собеседованиях?
Есть небольшой сборник вопросов. Есть вопросы по классическому машинному обучению – специалист, который устраивается в сферу data science и ИИ, должен знать, как работают классические модели машинного обучения: линейная, логистическая регрессия, градиентный спуск, регуляризация L1-L2. Нужно, чтобы человек рассказал про принцип работы деревьев решений, про критерий информативности для задач классификации и регрессии; чтобы человек знал, как работает случайный лес, градиентный бустинг. Очень хорошо, если он знает отличия моделей градиентного бустинга – Catboost, LightGBM, XGBoost – то есть, чем отличаются эти библиотеки, как в них реализован градиентный бустинг. Также нужно, чтобы человек владел библиотеками для машинного обучения – Pandas, NumPy, SKLearn. Если специалисту нужно будет работать с нейронными сетями, с компьютерным зрением, с NLP, то будут вопросы по этим темам.
Вопросов может быть очень много. Если человек хорошо отвечает, то интересно бывает расспросить его о каких-то его проектах – если человек что-то сделал, у собеседующего сразу появляется много вопросов, связанных именно с проектами. Если у вас на GitHub есть личные проекты, или учебные проекты с курсов – будет очень хорошо, если вы сумеете подробно рассказать про технологии и алгоритмы, которые вы применяли.
Помимо этого, на собеседовании можно спрашивать разные базовые вопросы. Обычно, если человек хорошо отвечает на них – скорее всего, хороший специалист. Конечно, важно, чтобы он сумел выполнить тестовое задание. Теория – это одно, а вот то, как человек сможет решить практическую задачу, запрограммировать ее, какой он напишет код – это тоже важно. Если человек знает всю теорию, но присылает код, в котором не используется OP, когда это нужно – значит, он не знает, как правильно применять теорию. Кроме того, конечно, сам код должен быть читабельным и комментированным.
Я хотел еще рассказать про квантовые вычисления, квантовое машинное обучение – это еще одна моя область интересов, но сегодня уже не успею.
Что должно быть написано в резюме, чтобы получить приглашение на собеседование?
Резюме – это ответственный момент. Во-первых, оно не должно быть раздутым по объему: в нем должен быть только релевантный опыт. Если вы работали по специальности, не связанной с IT – это не нужно. Перечислите свои достижения вкратце, проекты, пройденные курсы, релевантные для вакансии. Вписывайте то, что показывает вас как специалиста, который способен выполнять эту работу. И, конечно, резюме должно быть читабельно.
Что было ранее
- Илона Папава, Senior Software Engineer в Facebook — как попасть на стажировку, получить оффер и все о работе в компании
- Борис Янгель, ML-инженер Яндекса — как не пополнить ряды стремных специалистов, если ты Data Scientist
- Александр Калошин, СEO LastBackend — как запустить стартап, выйти на рынок Китая и получить 15 млн инвестиций.
- Наталья Теплухина, Vue.js core team member, GoogleDevExpret — как пройти собеседование в GitLab, попасть в команду разработчиков Vue и стать Staff-engineer.
- Ашот Оганесян, основатель и технический директор компании DeviceLock — кто ворует и зарабатывает на ваших персональных данных.
- Сания Галимова, маркетолог RUVDS — как жить и работать с психиатрическим диагнозом. Часть 1. Часть 2.
- Илья Кашлаков, руководитель фронтенд-отдела Яндекс.Денег — как стать тимлидом фронтендеров и как жить после этого.
- Влада Рау, Senior Digital Analyst в McKinsey Digital Labs — как попасть на стажировку в Google, уйти в консалтинг и переехать в Лондон.
- Ричард «Левелорд» Грей, создатель игр Duke Nukem 3D, SiN, Blood — про личную жизнь, любимые игры и о Москве.
- Вячеслав Дреер, гейм-дизайнер и продюсер игр с 12-летним стажем — про игры, их жизненный цикл и монетизацию
- Андрей, технический директор GameAcademy — как видеоигры помогают прокачивать реальные навыки и найти работу мечты.
- Александр Высоцкий, ведущий PHP-разработчик Badoo — как создаются Highload проекты на PHP в Badoo.
- Андрей Евсюков, заместитель CTO в Delivery Club — про найм 50 синьоров за 43 дня и о том, как оптимизировать фреймворк найма
- Джон Ромеро, создатель игр Doom, Quake и Wolfenstein 3D — байки о том, как создавался DOOM
- Паша Жовнер, создатель тамагочи для хакеров Flipper Zero — о своем проекте и другой деятельности
- Татьяна Ландо, лингвист-аналитик в Google — как научить Google-ассистента человеческому поведению
- Путь от джуна до исполнительного директора в Сбербанке. Интервью с Алексеем Левановым
- Как Data Science продает вам рекламу? Интервью с инженером Unity
atri1
два варианте — либо родиться в США, либо иметь друга/сына/брата/сестру/прочие связи в руководстве которые посадят на теплое место, подругому никак
пол гитхаба сидит пилит NN за бесплатно, потом приходит Фейсбук/Микрософт/Гугл собирает все запиленное за бесплатно в один проект и фармит тыщи лайков и сотни тыщ просмотров на ютубе(делая из этого еще и коммерческий проект в итоге), когда используемые в проекте библиотеки AI часто даже 10 "звезд" на гитхабе не имеют
бесплатная работа — двигатель прогресса, если не родился в США то всю жизнь будешь бесплатный код на гитхаб загружать, а богатые будут это использовать и становиться еще богаче — так работает современный мир AI/NN
чушь для детишек про "обучение"
разработчики с Гитхаба делающие самые широко используемые в AI библиотеки работают фермерами и дальнобойщиками в странах третьего мира, потому что их никогда в жизни на работу в крупную корпорацию не возьмут
мое личное мнение и опыт — все это перечисленное учиться по ходу дела, и если на собеседовании "хотят готового специалиста" значит просто ищут раба который будет делать всю работу, и которого уволят через пол года-год как работа будет сделана и возьмут нового раба
как я сказал выше — тыщи широко используемых проектов с гитхаба по оптимизации и упрощению работы с AI сделанные "на коленке" одним разработчиком которые никакого образования не имеют, тому подтверждение
корпорации с такими собеседованиями и "мы не платим за обучением нам нужны готовые знания" это рабовладельцы буквально(привет Яндексу)
lair
Я больше двух лет работаю на позиции, связанной с AI/ML, и оба из этих вариантов не про меня.
Может быть, если вы не видели других вариантов, не надо свой негативный опыт переносить на весь мир?
atri1
не надо свой позитивный опыт переносить на весь мир
негативный опыт имеет место быть, и его 90% против 10% "счастливчиков" которым повезло
lair
А я и не говорю "значит и все так смогут". А вот вы явно говорите "подругому никак". Так вот, ваше "никак" опровергается одним контрпримером.
Это, мне кажется, почти в любой специальности так.
Sequoza
Как раз яндекс один из тех, кто хоть что-то делает для обучения. Не являюсь их сотрудником, но часто их лого можно увидеть на всяческих митапах и курсах.
Интереса ради, а обучение сотрудника является обычной практикой? Очень рад за тех, кто работает в таких компаниях, вот только в моей практике это скорее исключение, чем правило. Такие бонусы могут предоставить либо очень богатые и щедрые работодатели, либо те, чья сфера деятельности не требует долгого обучения. Мало кто хочет прощаться с сотрудником, на которого потратили деньги, усилия и нервы, и который увидел у конкурентов более высокую зп.
lair
А что конкретно вы понимаете под "обучением"? Потому что в моем личном опыте в том или ином виде обучение предлагалось везде, где я рассматривал условия, за последние лет десять.
Sequoza
В данном контексте я имел в виду обучение специализации.
Не застал ни одной компании, которая бы нанимала сотрудников по принципу «Этот парень не дурак, давайте-ка мы ему запилим data science degree а потом он будет на нас, как японец, всю жизнь работать.
lair
В каком объеме, опять же?
Такого варианта я тоже не встречал. Зато я встречал варианты "этот чувак у нас работает, и немножко делает data science, давайте ему поможем научиться делать DS лучше" и "этот парень начинает делать DS в своем ВУЗе, хочет к нам на работу делать DS у нас, умеет мало, но готов учиться, давайте возьмем".
По большому счету, ничем особо не отличается от разработчиков других специальностей.
Sequoza
Редко кто вообще такой вопрос задает. Как правило, до него даже не доходит. Либо ты уже специалист, которого уже можно гонять, либо первое.
Я рад, что такое встречается, но что получается? Мне, представим, как фермеру из местной алабамы, относительно неплохо разбирающийся в ds, мне нужно искать позицию чувака, которому могут дать что-нибудь на анализ? По мне, так бред. Вот и получается, что такие сидят и выращивают кукурузу, тихо пиля свой проект на гите.
lair
Какой "такой"?
Что такое "первое"?
А чего вы добиться-то хотите?
Sequoza
В каком объеме человека нужно обучать, чтобы он стал полноценным членом команды?
Неудачно пошутил по поводу вариантов получения оффера(т.е. допускается только то, что ты уже всё знаешь и готов вкалывать).
В данном примере — оффера на какую-нибудь позицию инженера big data. Как по мне, atri1, кое-где прав, но, безусловно, ситуация не настолько плохая.
lair
А кто и кому его должен задавать? Потому что вообще это один из первых вопросов, которые я слышу, выйдя с собеседования (в качестве собеседующего, а не кандидата).
Нет, это совершенно точно не так. Более того, почти всегда (ну, в моем опыте) кандидат чего-нибудь да не знает, так что сразу вкалывать не выйдет. Это не считая специфики компании.
(не, подумав, поправлюсь: если без учета специфики компании, я от кандидата на позицию senior-что-нибудь буду ожидать, что он готов сразу приносить пользу, что да, то да)
Эм. Вы "относительно неплохо разбираетесь в data science", но при этом хотите оффер на позицию инженера big data? Я бы, если бы вас собеседовал, первым делом спросил, а в чем, собственно, разница, между этими понятиями.
Но не суть, на самом деле. Предположим, что вы на самом деле хотите оффер на позицию data scientist. Ну так все тривиально: ищите вакансии, где требуемый уровень познаний в data science ниже или слегка выше вашего, и начинаете рассылать резюме. Все как с другими профессиями в разработке.
Sequoza
Видимо, сначало hr, потом тим лид. Но до беседы со вторым, как правило, не доходит.
Ну не надо воспринимать мои слова настолько точно. Всё знать невозможно.
Конкретно я в этой области чуть меньше, чем 0. В том случае я был абстрактный.
lair
Кому и зачем?
"Как правило" в каких ситуациях? Вы, кажется, говорите, о какой-то выборке наблюдений, но я не понимаю, о какой.
Я вроде бы написал: абстрактному человеку, "неплохо разбирающемуся в DS", и который хочет на позицию DS, надо просто искать вакансии на его уровень знаний. По-моему, это совершенно типовой процесс, нет?
Sequoza
Теперь я запутался. Если можно, давайте сначала.
Я согласен с этим утверждением. Вася пупкин, который хочет связать своё будущее с этим, учится, читает 100500 книг, проходит 100500 курсов, но ему не хватает ментора или окружения, смотря на работу которых он бы быстро освоился. Приходит он значит на собеседование. Собеседующие видят, что он что-то там читал и что-то там знает, но логично, этого не хватает. Они прикидывают, сколько нужно усилий потратить на человека для превращения его в полноценного работика. Соответственно ответ: «Приходите, когда вы будете опытнее». Зато берут рекламщика олега, который каждый день после работы тусуется с тимой дата саентистов, которые подкидывают ему то, что сами делать не хотят. После работы за пивком, они объясняют что к чему. Так, скажем за пол года, олег получает знания, экспу, скилзы и т.д. и т.п. А вася остается играть в своей песочнице на гите.
lair
Ээээ… нет. Если компании нужен junior DS (или интерн), то этого человека просто берут на соответствующую позицию и выдают ментора. Я лично так взял на работу человека.
На какую позицию?
lair
Мне вот, по размышлению, вот что любопытно: а откуда взялась "тима дата саентистов"? Самозародилась чудесным образом?
Sequoza
В крупных и не очень компаниях есть множество отделов, которые как-то контактируют друг с другом. Решил человек перейти в другой отдел. В связи с тем, что он(рекламщик в данном примере) имеет возможность общения с людьми, которые занимаются непосредственно интересующим его направлением, влиться в их отдел гораздо проще.
Прошу прощения, не уточнил. Везде подразумеваю джуна конечно-же.
Вот я очень рад за вас, но к сожалению, не все так поступают.
lair
Нет, откуда вообще взялся этот отдел в компании?
Внутри компании вообще обычно проще мигрировать, чем снаружи прийти. Только это некорректное сравнение, не надо им пользоваться. Сравнивайте двух людей, пришедших снаружи.
Вы хотите сказать, что вместо человека с навыками DS на позицию junior DS взяли рекламщика без навыков, который потом этих навыков поднабрался по ходу работы?
Извините, не поверю.
Ну так и не во всех компаниях надо стремиться работать.
atri1
писать "плохо" про мего-корпорацию, даже на западе страшно, любой негативный отзыв значит что написавшего никогда больше не возьмут на работу в эту корпорацию, и тыщу подрядчиков
во многих крупнейших корпорациях у нас просто увольняют всех кто старше 25 (после 25 программистом быть стыдно) и организуют месячные курсы и берут новых 18-20 летних, на меньшую зарплату чем была раньше (уменьшение расходов это главный приоритет)
конкретно конечно никто ничего писать не будет, пока очередное движение "me too" или подобное не появиться все будут тихо сидеть
lair
Простите, а где это "у вас"?
chersanya
Вот уж в плане образования яндекс весьма неплохо выглядит. Например, есть топовый ШАД — абсолютно бесплатно, нет никаких требований хоть сколько-то отработать в яндексе, а сотрудникам можно без вступительных экзаменов на курсы там ходить. Есть всякие кафедры в университетах, где сотрудники яндекса программированию и/или датасаенсу учат.
hqarkx
Прискорбно, но факт. При том не только в IT такая картина.