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

Как студент магистратуры Data Science в одном из немецких университетов (не самого лучшего, но довольно неплохого), могу сказать, что программы недостаточно. Я совершенно уверен, что это касается не всех вузов, но, судя по опыту моих друзей, обучающихся в этой сфере, это все еще большая проблема. Несмотря на высокий средний балл (лучше 2.0 по немецкой шкале, где 1.0 — высшая оценка, а 5.0 — провал), я искал работу студента более 4 месяцев. У меня было несколько собеседований, но обычно все сводилось к ответу «Мы решили не продолжать вашу заявку дальше» или «Мы решили нанять человека с более профессиональным опытом». И это для работающих студентов и стажеров. В некоторых объявлениях о вакансиях можно встретить даже что-то вроде «требования: опыт работы в соответствующей сфере не менее 1 года». Опять же, на работу студентом.

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

Примечание. Мой опыт — это только мой опыт. Вы можете выбрать курсы более разумно или попасть на собеседование, которое окажется для вас очень легким. Отлично. Но если это не так, эта статья для вас.

Математика (или, по крайней мере, там, где вы видите много формул)

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

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

Вывод: пробел в знаниях НЕ обнаружен.

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

Навыки разработки программного обеспечения

Университетское образование. Многие университеты в Европе пытаются дать вам основы программирования, даже если вы учитесь в магистратуре. Вы еще раз узнаете, как использовать Python и/или R. Они научат вас использовать Pandas и NumPy, писать базовый код и, в лучшем случае, вы узнаете о классах, регулярных выражениях, tkinter, и т. д.

Требования к работе. Эта часть уже сложнее. Меня спрашивали о моих навыках Python буквально на КАЖДОМ собеседовании. В какой-то момент я добавил в резюме язык «Python — родной», но это не помогло. Но дело в том, что вам нужно понимать больше, чем просто кодирование Python. Во многих требованиях к размещению вакансий вы найдете хотя бы что-то из Docker, ETL/ELT, Airflow, AWS, Google Cloud и т. д., даже если вы не претендуете на должность инженера данных. Это не значит, что вы должны освоить все это, но неплохо иметь базовое понимание.

Вывод: ОБНАРУЖЕН пробел в знаниях.

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

Наука о данных/машинное обучение

Университетское образование. В университете вы обязательно изучите такие основы, как линейная/логистическая регрессия, деревья решений, случайный лес, метод опорных векторов, нейронные сети с прямой связью, обратное распространение, основы CNN, НЛП. , временные ряды и т. д., а также переоснащение, регуляризация, функции потерь и т. д. Эти знания имеют решающее значение, если вы хотите продолжить карьеру в этой области. В большинстве случаев вы узнаете их математическую сторону, и это, несомненно, чрезвычайно важно. Однако иногда это просто слишком много математики. Нам пришлось вычислять обратное распространение вручную на трех разных обязательных для нашей программы курсах. И при этом никто не научил нас пользоваться Tensorflow или PyTorch. Никто не сказал нам, каковы хорошие практики для создания конвейера машинного обучения. Вероятно, вы сможете узнать больше, если будете посещать семинары, но я считаю, что университетское образование в основном направлено на то, чтобы дать вам теоретические знания, а не научить вас выполнять машинное обучение на практике.

Требования к работе. Эта часть действительно зависит от вакансии, на которую вы претендуете. Большинство позиций, связанных с машинным обучением, которые я видел, были либо о компьютерном зрении, либо о НЛП. Конечно, есть и другие области машинного обучения/глубокого обучения. В общем, эта сфера достаточно конкурентная, поэтому вам зададут кучу технических вопросов. Никто не собирается просить вас вычислять линейную регрессию вручную, но вы наверняка должны быть уверены в себе, когда дело доходит до основных концепций, которые вы изучаете в университете или на любом вводном курсе по машинному обучению. Будьте готовы к тому, что вам будут задавать действительно конкретные (а иногда и вполне очевидные) вопросы об основах, которые вы изучаете в университете. Как я заметил, также принято спрашивать вас о каком-то проекте машинного обучения, который вы реализовали на предыдущей работе/во время учебы/самостоятельно. Поэтому хорошо иметь в кармане (а лучше на GitHub) несколько связанных с темой проектов. Вы должны упомянуть несколько архитектур, которые вы могли бы использовать для решения этой конкретной задачи (и быть в состоянии объяснить, как и почему они работают), объяснить, какие трудности у вас возникли и как вы с ними справлялись, сообщить некоторые впечатляющие (или нет) результаты, которых вам удалось достичь. Если вам повезет, вы знаете, в какой области хотите специализироваться, и можете подготовиться, участвуя в соревнованиях Kaggle или придумав себе тему проекта. Если вы такой же, как я, который хочет всего и сразу, что ж, удачи вам.

Вывод: ОБНАРУЖЕН пробел в знаниях.

Итак, основываясь на моем 4-месячном опыте поиска работы для студентов, я бы дал следующие рекомендации для себя в молодости:

  • Пересмотрите те темы, с которыми вы уже знакомы, но в которых не уверены (например, SVM для меня, никогда не изучал его должным образом, и меня спрашивали об этом 3 раза).
  • Узнайте, как правильно использовать Tensorflow и PyTorch (например, посмотрите это видео для PyTorch и это видео для Tensorflow).
  • Найдите тему, в которой вы хотите специализироваться, и углубитесь в нее (здесь нет ссылок, но есть множество тематических бесплатных курсов, статей и видео на YouTube).
  • Проходите курсы Kaggle, которые вам интересны, и участвуйте в соревнованиях, если вы достаточно мотивированы.
  • Сделайте несколько оригинальных проектов, чтобы потренировать свои навыки и научиться понимать данные (вы также можете искать идеи других людей, как в этой статье). Бонус: теперь вам есть о чем поговорить во время интервью.
  • Старайтесь быть в курсе некоторых разрекламированных архитектур и решений, потратьте немного своего времени на чтение технических новостей. Это вас заинтересует и может подсказать оригинальные решения ваших задач.
  • YouTube ››› ChatGPT. Я думаю, что практически по любому вопросу, который у вас может возникнуть, есть видео на YouTube, и многим людям гораздо проще понять сложные концепции, посмотрев видео. Не стоит недооценивать YouTube.

Визуализация данных

Университетское образование. Оно будет очень коротким. Мы только немного узнали о морском рождении и matplotlib в универе. Я имею в виду, я люблю matplotlib, но иногда для создания хорошей графики требуется слишком много кода.

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

Вывод: ОБНАРУЖЕН пробел в знаниях.

Опять же, все онлайн и бесплатно. Вы можете просто поискать несколько руководств на YouTube, например, это для Tableau или это для PowerBI. В своих личных проектах мне очень нравится использовать WandB, для которого также легко найти кучу туториалов, вроде этого (за рекламу мне никто не платил :/ )

Заключение

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

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

«Применен» означает, что больше о них ничего не слышно. Также были и другие, но я не отслеживал их всех.