Каждый, у кого есть доступ к новостям, слышал термин AI раньше. Либо в виде того, как он помогает ученым лучше управлять и анализировать свои данные, либо как он якобы захватит мир и поработит все человечество. В наш век технологий информация распространяется очень быстро, особенно негативная. Так идея мощной технологии, которая потенциально могла бы стереть человечество с лица земли, распространилась со скоростью лесного пожара. Однако следует знать, что не вся эта информация соответствует действительности. Чаще всего люди, которые описывают ИИ как угрозу для человечества, знают об этом очень мало. Конечно, это, как и любая другая технология, палка о двух концах; его использование имеет как преимущества, так и недостатки. Но означает ли это, что мы должны заклеймить его как монстра, даже не пытаясь его понять? Давайте демистифицируем ИИ.

Искусственный интеллект (сущ.):

Моделирование процессов человеческого интеллекта с помощью машин, особенно компьютерных систем

Мой интерес к области искусственного интеллекта вырос в геометрической прогрессии после короткой зимней стажировки в Roadzen. Итак, когда у меня появилась возможность пройти еще одну стажировку в этой области в Awidit Systems Pvt. Ltd., компания, занимающаяся этим летом ИИ, я был в восторге. Стажировка дала мне возможность лучше понять искусственный интеллект и машинное обучение. Это вместе с 40-часовым семинаром под названием InspiritAI, проведенным учеными и выпускниками Стэнфордского ИИ, позволило мне глубже изучить эту область.

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

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

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

Предварительная обработка данных

Разделение наборов данных:

Чтобы модель ИИ училась, у нее должны быть данные, на которых она может тренироваться. Таким образом, взятый набор данных разделен на две части: данные для обучения и данные для тестирования. Данные обучения - это данные, которые мы даем машине для обучения; данные тестирования - это данные, которые мы храним, чтобы узнать, усвоила ли наша модель что-то или нет.

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

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

Регресс

Линейная регрессия:

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

Возьмем уравнение прямой,

𝑦=𝑚𝑥+𝑏

Линейная регрессия находит значения m (градиент или наклон линии) и b (точка пересечения оси y) в этом уравнении.

Предположим, что это наш набор данных:

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

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

Логистическая регрессия:

Логистическая регрессия используется, когда зависимая переменная (y) категориальна.

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

Предположим, что значения спама связаны с «1», а не спам с «0».

Логистическая регрессия дает нам значения от 0 до 1, что указывает на вероятность того, что письмо является спамом или нет.

График выглядит примерно так:

Таким образом, если значение y точки равно 0,4, вероятность того, что это не спам, выше.

Разница между линейной и логистической регрессией заключается в том, что при линейной регрессии прогнозируемое значение может превышать диапазон от 0 до 1, но логистическая регрессия дает ответ в диапазоне от 0 до 1.

Классификация

K ближайший сосед:

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

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

Точка выборки может быть синей или красной, больше ничего. «K» в KNN определяет, сколько ближайших соседей будет учтено. Допустим, мы выбрали K = 3. Затем алгоритм выберет три точки данных, наиболее близкие к точке выборки.

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

Деревья решений:

В «деревьях решений» мы выбираем функции, которые создают наилучшее разбиение нашего набора данных, т. Е. Разделяют его на классы, насколько это возможно в данный момент. Дерево решений - это структура, подобная блок-схеме, в которой разные узлы представляют тест данных, а пляжи являются результатом этих тестов.

Допустим, мы хотим посмотреть, сдаст ли кто-нибудь экзамены или нет.

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

Нейронные сети:

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

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

Чтобы лучше понять, как работают нейронные сети, посетите TensorFlow Playground. Он обеспечивает интуитивно понятную визуализацию NN.

Сверточные нейронные сети:

По мере увеличения сложности NN (например, при глубоком обучении) количество слоев увеличивается. Разные слои изучают разные уровни сложности. Например, если NN пытается распознавать числа, первые слои могут искать линии или края, следующие слои могут искать более согласованные формы, такие как круги, а затем последние слои объединяют края с формами для образования чисел.

Этот процесс разделения изображения на различные функции (символы) используется в CNN. Продолжая пример чисел; предположим, что машина учится распознавать число 8. Если наш набор данных состоит из 8, все они находятся в центре изображения, и мы обучаем модель на нем, машина не распознает его как 8, если оно будет помещено в другое место. на изображении.

Для этого наша нейронная сеть должна понимать инвариантность перевода: цифра «8» означает «8», где бы она ни отображалась. Мы делаем это с помощью процесса, называемого сверткой.

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

Затем каждый фрагмент изображения подается в нейронную сеть, в которой каждый из них имеет одинаковый вес (важность) нейронной сети. Выходные данные каждого изображения сохраняются в массиве, который затем подвергается субдискретизации (размер выборки уменьшается). Затем этот новый массив вводится в другую нейронную сеть. Этот последний NN решает, будет ли изображение 8 или нет.

Многослойные персептроны:

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

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

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