Содержание статьи
Искусственный интеллект на Python для детей
Несколько финальных замечаний
Другие методы и формулы. Чтобы нейроны обучались, нужно задать формулу корректировки весов — мы говорили про это выше. Если нейронов много, то формулу нужно как-то распространить на все из них. Для этого используется метод градиентного спуска: рассчитывается градиент по весам, а потом от него делается шаг в меньшую сторону. Звучит сложно, но на самом деле для этого есть специальные формулы и функции.
Например, на вход поступает картинка. Чтобы нейросеть могла понять, что на ней изображено, она должна выделить разные элементы из картинки, распознать их и подумать, что означает сочетание этих элементов. Примерно так работает зрительная кора в головном мозге. Это несколько задач, их не смогут решить одинаковые нейроны. Поэтому нужно несколько слоев, где каждый делает что-то свое. Для распознавания часто используют так называемые сверточные нейросети. Они состоят из комбинации сверточных и субдискретизирующих слоев, каждый из которых решает свою задачу.
Проекты в области искусственного интеллекта сейчас выходят на новый уровень. Мы это можем понять по распространению техники, в основе которой они лежат: личные помощники (в том числе умные колонки), спам-фильтры, системы поимки мошенников, поисковики, рекомендательные системы и многое другое.
Больше нейронов. В нашей тренировочной нейросети только один нейрон. Но если нейронов будет больше — каждый из них сможет по-своему реагировать на входные данные, соответственно, на следующие нейроны будут приходить данные с разных синапсов. Значит — больше вариативность, «подумать» и передать сигнал дальше может не один нейрон, а несколько. Можно менять и формулу передачи, и связи между нейронами — так получаются разные виды нейронных сетей.
За это у нас отвечают методы model.add и функция Dense. Ее параметры, которые мы здесь прописали надо понимать так: слой с 10 нейронами, в который на вход передается 1 число и второй слой — 1 нейрон, получающий 10 чисел. Зададим параметры того, как нейросеть будет обучаться.
Нейросеть создается из множества сущностей как нейроны, эти конструкции не запрограммированы на узкую задачу, а принимают любую информацию, передают дальше, изучают и могут по мере прохождения генерировать реакцию на нее «на лету», в зависимости от анализа на текущий момент. Обсчитывает искусственные компьютерные «нейроны» компьютер, по приказу из Python. Нейросеть ниже принимает на вход картинку, а на выходе дает число, то есть предположение о том, нарисована ли на картинке кошка или это собака. Если нейросеть ошибается, то накапливает опыт. В следующий раз она с меньшей вероятностью получит ошибку.
Две эти IT-дисциплины сегодня реализуют концепцию ИИ. Задачи в этих сферах, которые на Java или других языках могут потребовать сотни строк кода, на Python решаются несколькими командами. Это происходит за счет отличного набора библиотек к Python: Keras, Scikit-learn, TensorFlow, NumPy, Pandas. Изучение языка Python не представляет никакой сложности. Дочитайте статью до конца и вы создадите свой первый ИИ, точнее, нейросеть, которая будет возводить в степень любое заданное число.
В параметре loss метода compile можно определить метод расчета ошибок, от этого зависят результаты измерений. Для учебной нейросети мы выбрали mse — средние квадратичные ошибки. Подробнее об этом можно посмотреть в документации к библиотеке. Также необходимо задать «оптимизатор». Это простая нейросеть на Python, поэтому мы по максимуму используем потенциал готовых функций и методов. Есть несколько алгоритмов взаимодействия нейронов сети, их можно выбрать именно тут.
Создаем ИИ: как написать нейросеть на Пайтон?
Этот язык программирования стремительно развивается и по данным наиболее авторитетного рейтинга языков TIOBE на апрель 2023 года, является самым востребованным в мире. Не в последнюю очередь его положение связано с тем, что сообщество разработчиков глубоко усовершенствовали его, чтобы он лучше других подходил для машинного обучения и создания нейросетей.
Человеческий мозг состоит из ста миллиардов клеток, которые называются нейронами. Они соединены между собой синапсами. Если через синапсы к нейрону придет достаточное количество нервных импульсов, этот нейрон сработает и передаст нервный импульс дальше. Этот процесс лежит в основе нашего мышления. Мы можем смоделировать это явление, создав нейронную сеть с помощью компьютера. Нам не нужно воссоздавать все сложные биологические процессы, которые происходят в человеческом мозге на молекулярном уровне, нам достаточно знать, что происходит на более высоких уровнях. Для этого мы используем математический инструмент — матрицы, которые представляют собой таблицы чисел. Чтобы сделать все как можно проще, мы смоделируем только один нейрон, к которому поступает входная информация из трех источников и есть только один выход. 3 входных и 1 выходной сигнал Наша задача — научить нейронную сеть решать задачу, которая изображена в ниже. Первые четыре примера будут нашим тренировочным набором. Получилось ли у вас увидеть закономерность? Что должно быть на месте вопросительного знака — 0 или 1?
Но в том-то и дело, что нейросети придется действовать самостоятельно и напрямую взять и возвести число в степень мы ей тоже не скажем, хотя в Python имеется такой функционал. Предположим, у нас есть выражение 5*5 = 25. Нейросеть получит 5 и затем будет пропускать ее через слои нейронов. Станет умножать числа и свои результаты на какие-то веса, применять функции, пока не приблизится к правильному результату, не поймет, как мы получили этот результат.
Специалисты, занимающиеся технологическим прогнозированием, называют ИИ (artificial intellect) одной из четырех технологий, которые в ближайшее время приведут к формированию «нового экономического уклада» и перевернут нашу жизнь сильнее, чем она изменилась с начала 50-х годов XX века, при первой научно-технической революции.
Но нейронные сети — все же не человеческий мозг. Мозг сложнее, объемнее, в нем намного больше нейронов, чем в любой компьютерной нейросети. Поэтому чрезмерное обучение может сделать хуже. Например, переобученная нейросеть может начать распознавать предметы там, где их нет — так люди иногда видят лица в фарах машин и принимают пакеты за котов. А в случае с искусственной нейронной сетью такой эффект еще явнее и заметнее. Если же учить нейросеть на нескольких разнородных данных, скажем, сначала обучить считать числа, а потом — распознавать лица, она просто сломается и начнет работать непредсказуемо. Для таких задач нужны разные нейросети, разные структуры и связи.
Готовить наше «восстание машин» будем на браузерной платформе Google Collab. Ее плюс в том, что все библиотеки Python там уже добавлены. Вам нужно только прописать их подключение, и можно обращаться к фреймворкам, программируя прямо в браузере. Еще один довод «за» — возможность запускать код построчно, то есть передавать интерпретатору не весь скрипт, а только ту его часть, на результатах которой вы хотите сосредоточиться. Подключаем библиотеки оператором Import: