Как научиться искусственному интеллекту

Как научиться ИИ

Markus Spiske на Unsplash

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

Фон

Как профессиональный инженер искусственного интеллекта с опытом разработки программного обеспечения более 25 лет, я разрабатывал и реализовывал различные программные приложения и технологии. Поэтому я использовал и реализовал сотни (возможно, тысячи) программных библиотек, фреймворков и API. У меня также есть степень магистра математики и степень магистра искусственного интеллекта, поэтому я квалифицирован для наставничества и преподавания курсов бакалавриата по математике и информатике, а также многих курсов магистратуры по математике/информатике.

Студент, изучающий искусственный интеллект, должен обязательно изучить историю искусственного интеллекта, которая полна гиперболой и алхимией, делающими необоснованные утверждения о том, что искусственный интеллект может делать, например AGI. Таким образом, студент искусственного интеллекта также нуждается в здоровой доле скептицизма [8].

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

  • Вы заинтересованы в том, чтобы стать инженером по искусственному интеллекту/машинному обучению.
  • Вы заинтересованы в изучении передовых практик программной инженерии [1][2].

Как стать инженером искусственного интеллекта

Предпосылки

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

  • Исчисление
  • Дискретная математика
  • Расширенная линейная алгебра
  • Теория вероятностей и математическая статистика
  • Статистическое программирование

Следующие курсы обычно требуются для получения степени в области информатики:

  • Алгоритмы и структуры данных
  • Организация компьютера
  • Компьютерные сети
  • Операционные системы
  • Распределенные вычисления

Что рекомендует Google сделать перед прохождением их курса по машинному обучению или науке о данных

Вот некоторые ресурсы по математике, которые я нашел полезными:

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

Ошибки, которых следует избегать

Вот некоторые ошибки начинающих, которых следует избегать при изучении машинного обучения [5][6][10]:

  • Спрашивать “Какой лучший алгоритм для проблемы X?”
  • Пытаться писать алгоритмы машинного обучения с нуля.
  • Использовать собственные наборы данных и/или решать задачи реального мира во время изучения искусственного интеллекта.
  • Пытаться изучать искусственный интеллект из научных статей.
  • Использовать нейронные сети (только в крайнем случае)

Избегайте написания алгоритмов с нуля

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

Любой компетентный программист может реализовать любой алгоритм машинного обучения – профессор Льюисского университета

Почему? Просто слишком много алгоритмов машинного обучения, чтобы программисту писать их с нуля и иметь возможность понять все детали, необходимые для правильной реализации. Фактически, постоянно разрабатываются новые алгоритмы. Концентрироваться только на “более интересных” или последних алгоритмах – это путь к неудаче и общая ошибка начинающих. Фактически, существует много других концепций, которые важнее, чем знание, как реализовать алгоритм машинного обучения (см. Основные понятия искусственного интеллекта).

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

Избегайте попыток изучать искусственный интеллект из научных статей

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

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

Об этом подробно рассказывается в работе Рассела и Норвига [8] и других учебниках для выпускников.

Советы по обучению

Вот несколько советов для изучения искусственного интеллекта:

  • Старайтесь использовать более простые алгоритмы вместо более сложных (Принцип Оккама). Таким образом, модели глубокого обучения должны быть вашим последним выбором.
  • Не существует такого понятия, как лучший, только достаточно хороший (Теорема No Free Lunch).
  • Знайте, когда не использовать искусственный интеллект.
  • Списки контроля для искусственного интеллекта.

Основные понятия искусственного интеллекта

Вот некоторые ключевые понятия искусственного интеллекта, которые стоит изучить:

  • Как определить проблему?
  • Как выбрать набор данных?
  • Как проводить подготовку данных?
  • Как проводить инженерию признаков?
  • Как выбрать алгоритм?
  • Как выбрать метрику производительности?
  • Как обучить модель?
  • Как представить результаты?
  • Как разработать и внедрить решение?
  • Как отлаживать модели?

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

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

В инженерии программного обеспечения существует множество известных принципов, таких как DRY, KISS и Принцип Оккама. Возможно, самым важным принципом является “не изобретайте колесо заново” (DRTW). Тем не менее, кажется, что каждый новичок в машинном обучении пытается реализовать нейронную сеть с нуля. Инженеру по искусственному интеллекту необходимо знать, как использовать ВСЕ программные библиотеки, API и алгоритмы, используемые в приложении, не только библиотеки искусственного интеллекта.

Принцип Оккама: Самое простое решение, соответствующее данным, обычно является лучшим.

Профессиональный инженер по искусственному интеллекту знает, что текущая лучшая практика – это подход, сосредоточенный на данных, а не на модели, в области искусственного интеллекта и машинного обучения. Поэтому начинающий должен сосредоточиться на изучении подготовки данных, инженерии признаков, снижении размерности и других ключевых концепций и техник, а не на деталях реализации конкретной модели/алгоритма. Кроме того, для эффективного применения искусственного интеллекта требуется изменение мышления с попыток найти “лучшую” модель/подход на “достаточно хороший”.

Сегодня автоматизация полного жизненного цикла разработки программного обеспечения является большой частью разработки программного обеспечения для искусственного интеллекта (MLOps), поэтому сомнительно, что вы реализуете и внедрите самостоятельно написанный алгоритм. Фактически, есть множество причин избегать написания специализированного кода, когда существуют надежные библиотеки и фреймворки.

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

Как выбрать модель

Бывали случаи, когда я пытался помочь начинающим, только чтобы обнаружить, что они потратили сотни часов на написание кода по учебнику (или, что еще хуже, по примеру из документации Tensorflow/PyTorch), используя неправильную модель и/или решая неправильную задачу. Фактически, они обычно не желают слушать, когда им говорят, что они сделали ошибку, что я называю “фиксацией на коде”.

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

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

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

В общем, даже самые сложные модели SOTA достигнут только небольшого улучшения производительности (скажем, 3-5%), что недостаточно для обоснования их использования при решении реальных проблем.

Уроки и книги

Выбор ресурса для изучения машинного обучения в первую очередь зависит от личных предпочтений. В общем, я рекомендую обратиться к нескольким ресурсам (кроме документации), чтобы изучать искусственный интеллект. У меня есть статья VoAGI, AI Learning Resources, в которой перечислены некоторые ресурсы, которые я считаю полезными. Поскольку AI-инжиниринг является расширением программной инженерии, вам следует тщательно понять ключевые концепции, изложенные в SWEBOK.

Нужен ли мне степень магистра?

Если вы собираетесь потратить время на изучение искусственного интеллекта, то вам следует рассмотреть возможность получения онлайн-степени, что значительно расширит вашу карьеру (и является требованием практически для всех должностей в области AI-инжиниринга). Кажется, многие забывают, что AI считается темой уровня магистра. Фактически, AI-инжиниринг – это инженерная дисциплина. Большинство инженерных дисциплин требуют специализированной степени, но по какой-то причине программная инженерия этого не требует, вот почему 85% или более проектов по AI терпят неудачу [6].

Вот несколько статей, которые могут помочь вам принять решение:

  • Нужна ли вам магистерская степень в области Data Science?
  • Имеете ли вы необходимую степень, чтобы быть нанятым в качестве Data Scientist?
  • Почему инженеры машинного обучения заменяют Data Scientist?
  • Инженеры машинного обучения могут заменить Data Scientist: почему?
  • Магистратура по искусственному интеллекту – Топ-10 программ
  • Магистратура по искусственному интеллекту в Университете Льюиса

Вывод

Эта статья была главным образом мотивирована помощью многим пользователям форумов Slack и Discord, которые интересуются самообучением. Однако, если вы собираетесь потратить время на изучение AI/ML, то мудро будет вложиться в онлайн-степень, что значительно расширит ваши возможности в карьере.

Ссылки

[1] P. Бурк и Р. И. Фэрли, Руководство по телу знаний программной инженерии, v. 3, IEEE, 2014.

[2] Кодекс этики IEEE

[3] Кодекс этики ACM

[4] Дж. Браунли, “5 ошибок, которые программисты делают при начале работы в машинном обучении”, Machine Learning Mastery, янв. 39, 2014.

[5] Дж. Браунли, “Прекратите писать алгоритмы машинного обучения с нуля”, Machine Learning Mastery, окт. 5, 2016.

[6] Т. Шин, “4 причины, почему вам не следует использовать машинное обучение”, Towards Data Science, окт. 5, 2021.

[7] Э. Гамма, Р. Хельм, Р. Джонсон и Дж. Влиссидес, Паттерны проектирования: элементы повторного использования объектно-ориентированного программного обеспечения, 1-е изд., Addison-Wesley Professional, ISBN-10: 0201633612, 1994.

[8] С. Рассел и П. Норвиг, Искусственный интеллект: современный подход, 4-е изд., Upper Saddle River, NJ: Prentice Hall, ISBN: 978–0–13–604259–4, 2021.

[9] М. Хантер, “6 мощных методов обучения, которые помогут вам освоить самые сложные темы в области Data Science”, Towards Data Science, 10 июня 2022 г.

[10] А. Джури, “Забудьте об алгоритмах и моделях – Узнайте, как решать проблемы сначала”, Towards Data Science, 9 сент. 2022 г.