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

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

  1. Как масштабировать вашу систему для обработки миллиардов запросов?
  2. Как предварительно обработать огромные наборы данных?
  3. Машинное обучение - обширная область. Какие алгоритмы и сценарии использования наиболее востребованы?
  4. Насколько хватит математики?
  5. Вам нужна докторская степень?

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

Как масштабировать вашу систему?

Прежде чем ответить на этот вопрос, давайте подумаем об этом. Зачем нужно масштабировать нашу систему? Представьте себе приложение, такое как твиттер или фейсбук. Представьте себе данные в реальном времени, поступающие от миллиардов пользователей. Представьте, что вам нужно классифицировать текст как «язык вражды», или вам нужно проанализировать «настроение», или вам нужно посмотреть, что находится внутри фотографий, созданных в Instagram, и создать автоматические теги. Все это нужно делать в режиме реального времени! (Для новичков: в реальном времени в основном означает мгновенно)

Пару десятилетий назад все это было чем-то очень сложным. Вам нужно было купить много серверов, которые действительно могли бы отвечать на каждый запрос, и запускать модель машинного обучения, чтобы давать ответ на каждый запрос. Однако теперь вы можете сделать это без проблем благодаря облачным вычислениям и поставщикам облачных услуг, таким как Google, AWS и Azure, а также благодаря исследованиям в области виртуализации. Поставщики общедоступного облака, такие как Google, предоставляют вам возможность создавать экземпляры миллионов узлов за секунду. Они также позволяют вам легко добавлять больше машин или уменьшать количество машин в зависимости от нагрузки, испытываемой приложением. Большая часть облачной «инфраструктуры» является программируемой и может быть изменена, просто изменив строку в скрипте. Не вдаваясь в подробности того, как поставщики облачных вычислений достигают этого (подсказка: виртуализация), облачные вычисления - это навык, которым вы должны обладать, если хотите создавать масштабируемые приложения, которые могут обслуживать миллиарды пользователей.

Как предварительно обработать огромные наборы данных?

Если вы посмотрите описания должностей большинства специалистов в области Data Science, вы увидите, что все продолжают упоминать «Apache Spark» (хотя большинство людей упоминают это просто потому, что это модное слово). Что такое Spark? Почему люди связывают это с машинным обучением. Почему мы должны об этом заботиться?

Spark, по сути, представляет собой универсальный фреймворк для обработки данных. Он был создан для обработки больших объемов данных с использованием структур данных в памяти. Приложение Spark обычно имеет узел драйвера (узел можно рассматривать как причудливый способ обозначить компьютер), который диктует «задания» различным рабочим / исполнителям (которые будут отдельными машинами, на которых выполняется назначенный ему код). Итак, по сути, Spark решает проблему обработки «больших данных». Но это еще не все. Spark имеет встроенную библиотеку машинного обучения, библиотеку для обработки графиков, библиотеку для обработки SQL-подобных запросов и модуль, который может обрабатывать потоковые данные. Библиотека Sparks ML помогает обучать модели, распределяя рабочие нагрузки между различными узлами, что делает ее чрезвычайно мощной.

Все хорошо. Но является ли Spark единственным фреймворком со всем этим? Нет! Поставщики облачных услуг, такие как Google, предлагают полностью управляемые сервисы, которые могут выполнять всю масштабную обработку ваших больших данных! Вы можете предварительно обработать данные и преобразовать их в режиме реального времени.

Итак ... когда нам следует использовать Spark? Что ж, это вопрос, на который есть много ответов. Это зависит от множества переменных. Идеальный сценарий для использования Spark - в местах, где данные являются конфиденциальными и поэтому не могут быть перемещены в общедоступное облако. (Google, AWS и т. Д.). В эту категорию попадают многие банки и многие операторы связи. В таких условиях у вас, по сути, есть частный центр обработки данных, и вы хотите анализировать свои данные локально. Именно здесь ценность Spark становится очевидной, поскольку вы можете развертывать кластеры и одновременно выполнять преобразование данных и машинное обучение. Вы можете создавать собственные конвейеры данных для машинного обучения в реальном времени. Всегда будет ограничение на объем обработки, которую вы можете выполнить, поскольку в таких настройках вы ограничены своим оборудованием.

Если ваши данные не конфиденциальны, переход в облако становится естественным ответом. DataFlow / Data Prep / PubSub от Google решают задачи масштабной обработки данных и работают намного быстрее, чем локальный кластер Spark.

Тем не менее, Spark - отличный инструмент для освоения, поскольку все еще много компаний, которые не хотят переносить свои данные в облако.

Машинное обучение - обширная область. Какие алгоритмы и сценарии использования наиболее востребованы?

Машинное обучение - это все о прогнозировании. Компании пытаются предсказать, будет ли отменен следующий рейс или нет, и они пытаются предсказать, является ли эта транзакция мошеннической или нет? Почему прогнозирование так важно для компаний? Ну, во-первых, прогнозирование выполняется автоматически (без участия человека), а, во-вторых, это помогает компаниям соответствующим образом корректировать ресурсы или собирать информацию. Вот где ИИ создает ценность для компаний.

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

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

Это момент, когда вы должны понять, что вы не Google. У вас нет доступа к их ресурсам и данным. Вы не можете превзойти Google и создать лучшую модель без данных. Нет простого способа решить эту проблему. Тем не менее, полезно знать такие методы, как «трансферное обучение», и вы должны знать о предварительно обученных моделях с открытым исходным кодом, доступных в Интернете. В основном это означает, что у вас есть доступ к моделям, обученным на гораздо большем количестве данных, и вы можете настроить их в соответствии со своими потребностями. Вот почему важно знать об этих методах, чтобы вы могли справиться с некоторыми вариантами использования, в которых есть такие узкие места.

Современный ИИ-инженер также должен уметь обрабатывать общие задачи, связанные с машинным обучением, с изображениями, текстом, речью. У вас должны быть базовые знания изображений, текста, речи и вы должны хорошо разбираться в 1 задаче, связанной с машинным обучением, каждого из них. Я говорю 1, потому что это поможет вам понять терминологию других задач в той же области. Примеры задач: классификация изображений для изображений, автоматическое распознавание речи для речи и анализ тональности для текста. Наконец, вы должны знать о некоторых алгоритмах, таких как деревья решений, случайные леса (и их разновидности) и нейронные сети, в значительной степени. Это наиболее часто используемые.

Насколько хватит математики?

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

Вам нужна докторская степень или этих навыков достаточно?

Прежде всего, существует нехватка квалифицированных докторов наук, которые на самом деле выполняют работу, которая вносит свой вклад в эту область, и я считаю, что большинство из них уже нанято такими компаниями, как Google. Это означает, что если вы не входите в 5% лучших докторов наук, вы, скорее всего, все равно будете работать инженером. Во-вторых, доктора медицинских наук являются экспертами в одной области и не обладают обширными знаниями, необходимыми для создания рабочего приложения. Так что, если вы думаете, что не собираетесь стать первоклассным доктором наук, то лучше поработать над другими навыками, необходимыми для создания лучшего в мире продукта искусственного интеллекта.

Конец

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

Ваше здоровье!