[Перевод] Наука о данных, искусственный интеллект, машинное обучение: путь самоучки
Не каждый может найти время и деньги на то, чтобы получить очное образование в сферах Data Science (DS, наука о данных), AI (Artificial Intelligence, искусственный интеллект), ML (Machine Learning, машинное обучение). Недостаток времени и нехватка денег — это серьёзные препятствия. Преодолеть эти препятствия можно, занявшись самообучением. Но и тут не всё так просто. Для того чтобы успешно учиться самостоятельно, нужны дисциплина, сосредоточенность и правильный подбор учебных предметов. Самообучение в выбранной области, при правильном подходе, можно свободно совмещать с обычной жизнью или с учёбой в общеобразовательных учреждениях. Но в некоторых областях знаний, в таких, как DS, AI, ML, очень сложно начать учиться самостоятельно. Однако, прошу поверить мне на слово, сложности стоят того, что можно получить в результате. Ключ к успеху в самообучении лежит в том, чтобы учиться в собственном темпе.
В этом материале я хочу рассказать о том, как можно действовать тому, кто хочет самостоятельно обрести знания в областях DS, AI и ML. Применение предложенных здесь методов учёбы способно привести к хорошему прогрессу в изучении нового. Здесь, кроме того, я собираюсь поделиться ссылками на ресурсы, которыми я пользуюсь, и которые я без тени сомнения готов порекомендовать другим.
Изучите некоторые математические дисциплины
Математика, даже если это кому-то и не нравится, очень важна в интересующей нас области. Я думаю, что можно с достаточной уверенностью говорить о том, что те, кто это читают, уже обладают некоторыми знаниями по математике, которые они получили в школе. Это — хорошая база, но этого и близко недостаточно тому, кто хочет развиваться в сферах DS, AI и ML. А именно, тут понадобится углубиться в математику немного сильнее, чем это делается в школе, придётся изучить некоторые вещи из статистики, алгебры и других математических дисциплин. Я собрал бы список полезных ресурсов по математике для DS, но это уже сделали за меня в этой статье. И сделали очень хорошо.
Научитесь программировать
Если вы только начинаете самообучение — не стоит сразу бросаться в изучение того, как писать код для целей машинного обучения. Вместо этого стоит изучить основные концепции программирования, не привязанные к какой-либо предметной области. Узнайте о том, что такое программирование, ознакомьтесь с разными существующими типами кода, разберитесь с тем, как правильно писать программы. Это очень важно, так как в процессе освоения программирования вы изучите множество базовых идей, которые сослужат вам хорошую службу на протяжении всей вашей DS-карьеры.
Не спешите, не стремитесь сразу изучить что-то сложное. То, насколько хорошо вы поймёте основы, скажется на всей вашей будущей профессиональной деятельности. Здесь вы можете найти очень хорошие видеоуроки, которые познакомят вас с программированием и информатикой. А именно, в них разбираются самые важные вещи, в которых вам нужно разбираться. Уделите этому вопросу достаточно времени и постарайтесь дойти до понимания всего, что узнаете.
Выберите один язык программирования и как следует в нём разберитесь
Существует много языков программирования, используемых теми, кто работает в областях DS, AI и ML. Чаще всего здесь используются Python, R, Java, Julia и SQL. В данных сферах могут применяться и другие языки, но те, которые я перечислил, применяются чаще других не без причины:
- Их легко выучить. Если выделить на их изучение достаточно времени и проявлять в обучении настойчивость и постоянство, то достичь определённых успехов можно достаточно быстро.
- Они позволяют, создавая небольшие объёмы кода, решать достаточно масштабные задачи.
- Вокруг них сформировалось серьёзное сообщество, которое может помочь вам в сложной ситуации.
- Для этих языков созданы библиотеки и пакеты, среди которых можно найти практически всё, что может понадобиться тому, кто работает в сферах DS, AI и ML.
- Это — опенсорсные и бесплатные инструменты.
Нет ничего плохого в том, чтобы изучать несколько языков программирования. И, на самом деле, полезно знать более одного языка. Но во время изучения программирования не стоит торопиться. Нужно постараться заниматься, в некий промежуток времени, лишь одним языком, так как иначе вы можете сильно запутаться. Поэтому лучше всего изучать языки по одному, уделяя особое внимание тем их механизмам, которые пригодятся вам в работе. Я посоветовал бы выбрать, в качестве первого языка, Python. Это — довольно простой язык, в котором несложно разобраться даже новичку. Кроме того, я порекомендовал бы сначала изучить общие вопросы программирования на Python, а потом уже заниматься специализированными Python-инструментами для анализа данных.
Научитесь собирать данные
Чаще всего вам никто не будет давать данные, предназначенные специально для вас, а иногда в вашем распоряжении может не быть вообще никаких данных. Но, в любом случае, вам нужно найти способ сбора данных, с которыми вы будете работать. У организации, в которой вы трудитесь, может быть хорошая система сбора данных. Если это так, для вас это — большой плюс. Если такой системы в организации нет, то вам придётся найти способ сбора данных. Но речь идёт не о любых данных, а о качественной информации, с который вы сможете продуктивно работать, достигая поставленных целей. Сбор данных не имеет прямой связи с «добычей данных», с их глубинным анализом. Сбор данных — это шаг работы, который предшествует анализу.
Открытые данные, которыми можно пользоваться бесплатно, можно найти во многих местах интернета. Иногда же нужные данные можно собрать с веб-сайтов, применяя методы веб-скрапинга. Владение веб-скрапингом — это очень важный навык дата-сайентиста, поэтому я очень прошу всех, кто собирается работать в областях DS, AI и ML, освоить этот навык. Вот хорошее руководство по веб-скрапингу.
Данные, кроме того, могут храниться в базах данных, поэтому вам очень пригодятся начальные сведения по администрированию БД и умения по взаимодействию с базами данных. В частности, здесь очень важны знания SQL. Поучиться SQL можно здесь.
Научитесь обрабатывать данные
То, о чём я будут тут говорить, часто называют «первичной обработкой данных» (Data Wrangling). Этот процесс включает в себя очистку имеющихся данных. Здесь применяется разведочный анализ данных и удаление из них всего ненужного. Этот процесс так же включает в себя структурирование данных, приведение их к такой форме, с которой можно будет работать. Эта стадия работы с данными является самой тяжёлой и изматывающей. Те данные, с которыми вы столкнётесь в процессе обучения, будут уже подготовлены к анализу. Но данные, с которыми вы встретитесь в реальном мире, могут быть совершенно «сырыми». Если вы и правда стремитесь стать специалистом в области обработки и анализа данных, вам стоит найти настоящие данные и отыскать способы приведения их в пристойный вид.
Реальные данные можно найти практически повсюду. Например — на Kaggle. На этой замечательной платформе имеются данные от множества компаний со всего мира. Первичная обработка данных — это очень утомительное занятие, но если вы будете заниматься этим регулярно и настойчиво, вы, постепенно, поймёте, что занятие это ещё и очень интересное. Вот хорошие лекции по первичной обработке данных.
Научитесь визуализировать данные
Если вы — специалист по DS, AI или ML, и хорошо разбираетесь в своём деле, вы не должны забывать о том, что то, что кажется вам очевидным, может быть совершенно непонятно окружающим. Не ждите от них того, что они, например, смогут сделать выводы, глядя на колонки цифр. Научиться визуализировать данные нужно для того чтобы результатами вашей работы могли бы воспользоваться специалисты из других областей. «Визуализацией данных» обычно называют процесс представления данных в графическом виде. Такое представление данных позволит извлечь их них пользу даже тем, кто не имеет специальных знаний в сферах DS, AI и ML.
Существует множество способов визуализации данных. Так как мы, всё же, программисты, нашим основным методом визуализации данных должно быть написание соответствующего кода. Это быстро и не требует покупки специализированных инструментов. При написании кода для визуализации данных можно пользоваться множеством бесплатных и опенсорсных библиотек, созданных для используемых нами языков программирования. Например, существуют библиотеки такого рода для Python. Это — Matplotlib, Seaborn и Bokeh. Вот видеоурок по Matplotlib.
Ещё один способ визуализации данных предусматривает использование инструментов с закрытым кодом. Например — Tableau. Существует много таких средств, они позволяют добиваться весьма привлекательных результатов, но они не бесплатны. Tableau — один из самых распространённых подобных инструментов, им я пользуюсь очень часто. Я посоветовал бы всем, кто занимается анализом и визуализацией данных, изучить Tableau. Вот хорошее руководство по этому инструменту.
Искусственный интеллект и машинное обучение
AI и ML можно рассматривать как подразделы DS, так как они основаны на данных. AI и ML — это технологии, которые основаны на обучении машин поведению, сходному с поведением людей. Для этого используются специально подготовленные данные, передаваемые машинам. Компьютерные модели можно научить многому такому, на что способны люди. Для этого их обучают и направляют к нужному результату. В данном случае «машины» можно воспринимать как маленьких детей, не имеющих совершенно никаких знаний. Этих детей постепенно обучают идентифицировать объекты, говорить. Они учатся на своих ошибках и, по мере обучения, начинают всё лучше решать поставленные перед ними задачи. Так происходит и с машинами.
Технологии AI и ML — это то, что «оживляет» машины с использованием множества математических алгоритмов. Человечеству до сих пор не известны границы возможностей этих постоянно совершенствующихся технологий. В наши дни технологии AI и ML широко используются для решения когнитивных задач. Это — обнаружение и распознавание объектов, распознавание лиц и речи, обработка естественного языка, выявление спама и обнаружение мошенничества. Этот список можно ещё очень долго продолжать.
Более подробный рассказ об AI и ML достоин отдельной публикации. Пока же я могу порекомендовать это видео, касающееся общих вопросов применения данных технологий. А вот — многочасовой видеоурок, посвящённый машинному обучению. Проработав эти видео, вы можете приобрести знания в сфере ML, соответствующие начальному или даже среднему уровню. Вы узнаете о множестве существующих алгоритмов машинного обучения, о том, как они устроены, и о том, как ими пользоваться. После этого у вас должно быть достаточно знаний для того чтобы приступить к созданию собственных простых ML-моделей. О том, как это сделать, можно почитать здесь.
Изучите способы публикации ML-моделей в интернете
Существуют инструменты, позволяющие публиковать ML-модели в интернете. Это позволяет дать к ним доступ всем желающим. Для того чтобы публиковать модели в интернете, нужно хорошее понимание процессов веб-разработки. Дело в том, что под «публикацией модели» понимается создание веб-страницы (или группы страниц), обеспечивающей возможность работы с моделью в браузере. Кроме того, нужно учитывать то, что фронтенд проекта, его интерфейс, должен обмениваться данными с бэкендом, с серверной частью проекта, где расположена сама модель. Для того чтобы строить подобные проекты, вы должны уметь создавать серверные API и пользоваться этими API в клиентской части приложений.
В том случае, если вы планируете публиковать модели в облачных средах, если собираетесь использовать технологию Docker, вам пригодится хорошее знание сферы облачных вычислений и DevOps.
На самом деле, существует множество способов развёртывания моделей в интернете. Я посоветовал бы начать с изучения того, как это делается с использованием веб-фреймворка Flask, основанного на Python. Вот хорошее учебное руководство об этом.
Найдите наставника
Самообучение — это прекрасно, но ничто не сравнится с обучением у профессионалов. Дело в том, что при таком подходе усваивается то, что используется в реальности, и в том, что так обучение идёт через практику. Многие вещи можно изучить только на практике. Обучение с наставником имеет множество сильных сторон, но надо учитывать то, что не каждый наставник способен оказать существенное влияние на вашу карьеру или жизнь. Именно поэтому очень важно найти хорошего наставника.
Например, эту задачу можно попытаться решить с помощью платформы Notitia AI. Здесь учащимся назначают персональных наставников, которые делают личный и профессиональный вклад в развитие учеников. Наставники доводят тех, кто хочет учиться, от начального до экспертного уровня в сферах DS, AI и ML. Notia AI, это, кроме того, самая доступная платформа такого рода.
Итоги
Учтите, что изучение курсов, чтение статей и просмотр видео не сделают из вас специалиста по работе с данными. Вам понадобится пройти сертификацию в специализированном учреждении. Кроме того, некоторые вакансии требуют наличия определённых документов об образовании. Вложите время в самообучение, сертифицируйтесь или получите документы об образовании, и вы будете готовы к реальной работе.
Как вы думаете, что нужно знать и уметь тому, кто стремится стать ценным специалистом в сферах искусственного интеллекта или машинного обучения?