Как создать наш искусственный интеллект

28/03/22

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

Однако сегодня мы обращаемся к младшим, пытаясь объяснить, что нужно для создания ИИ, какие инструменты полезны и как шаг за шагом двигаться к своей цели. В этой статье мы принимаем некоторые знания как должное, в частности, мы не объясняем, что такое ИИ. Если, продолжая чтение, вы понимаете, что вам необходимо освежить некоторые понятия, предлагаю вам прочитать статью "Новая цифровая революция, глубокое обучение"Андреа Пираса, где вы можете найти определения и объяснения ИИ, Машинное обучение e Глубокое обучение.

Определите проблему

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

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

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

О данных...

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

Как я уже говорил, данные можно разделить на две категории макросов: структурированные и неструктурированные.

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

С другой стороны, неструктурированные данные — это видео, фотографии, аудио… гораздо сложнее в обработке.

Алгоритм

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

Мы можем разделить алгоритмы на две категории, называемые «обучение с учителем» и «обучение без учителя». 

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

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

Обучить ИИ

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

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

Язык программирования и платформа

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

Языков, которые можно использовать, много, но наиболее распространенными являются Python и R, так как в них уже есть множество готовых к использованию библиотек, упрощающих написание кода. Наконец, необходимо выбрать платформу, которая позволит нам построить наш ИИ. Существуют различные платформы, которые помогают в реализации нашего проекта, среди них, например, TensorFlow — платформа с открытым исходным кодом, которая позволяет вам проводить тесты, ничего не тратя, или Numpy, Keras, Pandas, scikit-learn, Matplotlib, Seaborn и так далее. , панорама действительно широкая.

Осталось только попробовать...

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

Алессандро Руголо

(Я благодарю всех друзей SICYNT, которые посоветовали мне и помогли улучшить статью)

Для получения дополнительной информации:

Новая цифровая революция, глубокое обучение - онлайн-защита

Пошаговые методы создания собственной системы искусственного интеллекта сегодня | блог upGrad

Что такое структурированные данные? - КомпьютерщикидляГиков

Что такое контролируемое обучение? | IBM

Типы алгоритмов искусственного интеллекта, которые вы должны знать [Полное руководство] | блог upGrad

Неконтролируемое обучение кибербезопасности (hmgstrategy.com)