инженер по знаниям обучение
Онтоинженер
Объединяя в себе лучшие черты программиста и лингвиста, онтоинженер обязан иметь отличную память, любовь к точным наукам, отличаться сосредоточенностью.
Онтоинженер, в научных кругах его называют специалистом по знаниям, работает с искусственным интеллектом. Этот сотрудник занимается созданием и проектировкой экспертной системы, считается главным специалистом, отвечающим за извлечение знаний из источника. Кстати, в 2021 году центр профориентации ПрофГид разработал точный тест на профориентацию. Он сам расскажет вам, какие профессии вам подходят, даст заключение о вашем типе личности и интеллекте.
Краткое описание
Развитие современных технологий влечет за собой появление новых профессий. Специальность онтоинженер является одной из них. Профессия молодая, но ее представители уже востребованы в различных сферах. Люди, которые решили выбрать это направление, являются великолепными лингвистами, программистами, разностороннее развитыми личностями, имеющими склонности к точным наукам. Профессия появилась на стыке программирования, лингвистики, информационных технологий, работать в этой сфере смогут люди, имеющие высшее образование.
В ближайшие 40-50 лет эта профессия будет очень популярной, уже сегодня специалисты, выбравшие ее, получают солидный оклад, размер которого превышает 50000 руб. Работая, онтоинженеры являются основным связующим звеном между экспертами и так называемыми базами знаний, структурируя их, выбирая интеллектуальные системы.
Особенности профессии
Онтоинженерами могут стать только самые талантливые и сосредоточенные студенты, готовые к постоянному обучению и саморазвитию. Сегодня эти специалисты работают в сфере медицины, производства техники и оборудования, создания гаджетов, а также в машиностроительных, информационных, космических отраслях.
Во многих компаниях сотрудники занимаются обработкой информации вручную, автоматизация этого процесса существенно повысит скорость и эффективность работы. В перспективе онтоинженеры смогут быть привлечены к обработке документации и договоров в финансовых структурах, анализу отзывов в социальных сетях и другим работам, где необходимо взаимодействовать с огромными объемами данных. Рассмотрим основные должностные обязанности онтоинженеров:
Этот специалист, используя различные каналы, за несколько секунд собирает разнообразные тексты и извлекает из них информацию. Его труд можно представить в виде простой цепочки: анализ поставленных задач – извлечение знаний – последующее структурирование. Он должен обладать отличным аналитическим мышлением, хорошо знать как математику, так и лингвистику. Эту работу не может выполнять неподготовленный математик или IT-специалист, ведь она подразумевает использование профессиональных знаний о синтаксисе, семантике и других разделах лингвистики.
Плюсы и минусы профессии
Плюсы
Минусы
Важные личные качества
Объединяя в себе лучшие черты программиста и лингвиста, онтоинженер обязан иметь отличную память, любовь к точным наукам, отличаться сосредоточенностью. К другим важным чертам характера этого специалиста стоит отнести:
Онтоинженер на протяжении длительного времени работает с большими объемами данных и компьютером, поэтому профессия не подойдет для людей, которые страдают от проблем со зрением, памятью.
Обучение на Онтоинженера
Сфера искусственного интеллекта является одной из самых перспективных отраслей. Она будет активно развиваться в ближайшие 10-20 лет. Желая стать онтоинженером, абитуриент должен получить высшее образование в сфере прикладной математики, программирования, компьютерной лингвистики, сквозных цифровых технологий.
Приоритетные специальности
Список экзаменов зависит от требований вуза, преимущественно это ЕГЭ по иностранному и русскому языку, тесты по информатике и ИКТ, а также истории, литературе или обществознанию.
Курсы Онтоинженеров
Школа анализа данных «Яндекс»
Огромный выбор образовательных программ для студентов, которые желают в будущем работать с современными технологиями и искусственным интеллектом. Доступны видеоуроки, онлайн-курсы, видеолекции. В школу могут поступить талантливые студенты, обладающие глубокими познаниями в сфере программирования и прикладной математики. Экзамены проводятся в 3 этапа: онлайн-тестирование, экзамен в письменной форме, а также очное собеседование с представителем школы. Здесь можно получить престижное образование для дальнейшей работы в рассматриваемой сфере.
Ultimate Guide по карьере в AI: как выбрать специальность, прокачаться и найти классную работу
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, когда это нужно – значит, он не знает, как правильно применять теорию. Кроме того, конечно, сам код должен быть читабельным и комментированным.
Я хотел еще рассказать про квантовые вычисления, квантовое машинное обучение – это еще одна моя область интересов, но сегодня уже не успею.