Дорожная карта для начинающих, от настройки среды до рекомендуемых учебных ресурсов

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

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

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

Готовый? Пойдем!

Отказ от ответственности перед тем, как мы начнем: я никоим образом не связан с продуктами / ресурсами, упомянутыми в этой статье. Это инструменты, которые я использовал лично и которые были мне полезны как для себя, так и для инженеров, которых я тренировал.

Окружающая среда и языки программирования

Для AI и ML доступно множество фреймворков, ориентированных на огромное количество языков. Для начала я хочу взглянуть на два самых популярных: Torch и Tensorflow.

Эти фреймворки используются во всей отрасли для создания, обучения и запуска сетей глубокого обучения, чтобы обеспечить распознавание изображений, синтез речи и множество других современных технологий. Они имеют открытый исходный код и хорошо поддерживаются / финансируются, так как они исходят от Facebook и Google соответственно, и они в значительной степени эквивалентны друг другу с точки зрения функциональности и способа выражения сетевых моделей.

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

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

Причина, по которой Python так популярен, вероятно, заключается в том, что его синтаксис легко изучить, и существует ряд библиотек как для обработки данных (например, numpy, panda), так и для отображения данных (например, pyplot), которые легко доступны и легко устанавливаются через pip и проста в использовании.

Python настолько прост, что вы, вероятно, поймете его, просто взглянув на примеры AI / ML, которые вам встретятся. Однако, если вы хотите немного больше познакомиться с Python, прежде чем броситься в дело ИИ, вы можете воспользоваться бесплатным онлайн-руководством, подобным этому:

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

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

Выбор онлайн-среды

Блокноты Jupyter - это основная технология, используемая для запуска сред Python в браузере. Вы можете рассматривать эти записные книжки как гибрид между IDE и интерпретатором python командной строки.

В Интернете доступны различные размещенные решения для ноутбуков Jupyter, и вы даже можете использовать свои собственные, если хотите, но если вы собираетесь просто поэкспериментировать с Tensorflow / PyTorch, не ищите ничего, кроме собственной системы Colab от Google, которая доступна бесплатно. любому, у кого есть аккаунт Google. Microsoft также предоставляет аналогичное решение с Azure Notebooks.

Настройка локальной среды

Tensorflow и Torch легко установить с помощью pip в существующей среде Python, а если вы предпочитаете использовать контейнеры, образы доступны как для Docker, так и для Kubernetes.

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

Для этого мы будем использовать менеджер среды, который представляет собой пакет, который позволяет вам создавать столько отдельных сред Python, сколько вы хотите, чтобы вы могли настроить, скажем, PyTorch (версия Python для Torch) и Tensorflow бок о бок. В частности, мы будем использовать Миниконду.

На Mac и Linux установка довольно проста. Просто следуйте инструкциям на веб-сайте, чтобы загрузить пакет и установить его.

Для Windows 10 вы можете либо запустить Miniconda в Подсистеме Windows для Linux (WSL), либо установить ее непосредственно под Windows. Маршрут WSL предпочтительнее, если вы привыкли программировать в среде, подобной Linux, и если вы собираетесь проверять проекты машинного обучения из онлайн-репозиториев git, таких как GitHub. Однако вы не сможете использовать ускорение графического процессора в WSL (по крайней мере, пока).

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

Убедившись, что ваша локальная среда работает правильно, вы можете захотеть получить среду IDE, которая понимает Python, если у вас ее еще нет. Visual Studio Code (VSCode) - хороший кандидат здесь, поскольку он доступен практически для любой платформы и к тому же бесплатный.

Бонус: если вы работаете в Windows и настроили среду Python под WSL, VSCode может подключиться к вашему экземпляру WSL и позволить вам запускать bash терминал прямо в среде IDE. Довольно красиво!

Образовательные ресурсы

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

Оба написаны Эндрю Нг, профессором компьютерных наук в Стэнфордском университете и соучредителем Coursera, который также руководил суперзвездой машинного обучения Иэном Гудфеллоу для получения степени бакалавра наук. и М.С. степени в области компьютерных наук.

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



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



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

Данные и другие ресурсы

После того, как вы усвоили основные концепции и познакомились с распространенными нейронными сетями, вы готовы проводить свои собственные эксперименты с использованием AI / ML.

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

Один из них - OpenML, который, как написано на их главной странице:

Проект Open Machine Learning - это инклюзивное движение по созданию открытой, организованной онлайн-экосистемы для машинного обучения.

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

Если вы хотите выполнить более сложную работу, такую ​​как компьютерное зрение, устный перевод или распознавание звука, вы можете найти полезные наборы данных на сайте Google Research Resources. ImageNet также является хорошим источником изображений для задач распознавания.

Кроме того, довольно интересно использовать и изменять (частичное переобучение) предварительно обученные модели как способ играть с ИИ, не тратя часы на обучение конкретной нейронной сети. ModelZoo - хорошее хранилище таких моделей.

Будьте в курсе

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

Помимо исследовательских работ, к которым вы обычно можете получить доступ на arXiv бесплатно, два ключевых блога, за которыми следует следить, - это блоги Google и Facebook. MIT News также имеет кураторский раздел статей об ИИ, который довольно активен, и, конечно же, есть Reddit с r / MachineLearning.

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

Заключение

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

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

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

Прежде чем вы уйдете, я оставлю вам одну цитату, которая вдохновит вас при изучении ИИ в качестве благодарности за то, что вы не торопились до конца:

«Наш интеллект - это то, что делает нас людьми, а ИИ - продолжение этого качества». - Янн ЛеКун

Удачи в пути!