Содержание статьи
Искусственный интеллект на Python для детей
Как написать это на Python
Лучше обучение. Искусственные нейронные сети обучаются примерно по тому же принципу, что живые существа. Когда человек часто повторяет одни и те же действия, он учится: ездить на велосипеде, рисовать или набирать текст. Это происходит, потому что веса между нейронами в мозгу меняются: нервные клетки наращивают новые связи, по-новому начинают воспринимать сигналы и правильнее их передают. Нейронная сеть тоже изменяет веса при обучении — чем оно объемнее, тем сильнее она «запомнит» какую-то закономерность.
Нейросеть создается из множества сущностей как нейроны, эти конструкции не запрограммированы на узкую задачу, а принимают любую информацию, передают дальше, изучают и могут по мере прохождения генерировать реакцию на нее «на лету», в зависимости от анализа на текущий момент. Обсчитывает искусственные компьютерные «нейроны» компьютер, по приказу из Python. Нейросеть ниже принимает на вход картинку, а на выходе дает число, то есть предположение о том, нарисована ли на картинке кошка или это собака. Если нейросеть ошибается, то накапливает опыт. В следующий раз она с меньшей вероятностью получит ошибку.
За это у нас отвечают методы model.add и функция Dense. Ее параметры, которые мы здесь прописали надо понимать так: слой с 10 нейронами, в который на вход передается 1 число и второй слой — 1 нейрон, получающий 10 чисел. Зададим параметры того, как нейросеть будет обучаться.
Другие методы и формулы. Чтобы нейроны обучались, нужно задать формулу корректировки весов — мы говорили про это выше. Если нейронов много, то формулу нужно как-то распространить на все из них. Для этого используется метод градиентного спуска: рассчитывается градиент по весам, а потом от него делается шаг в меньшую сторону. Звучит сложно, но на самом деле для этого есть специальные формулы и функции.
Но нейронные сети — все же не человеческий мозг. Мозг сложнее, объемнее, в нем намного больше нейронов, чем в любой компьютерной нейросети. Поэтому чрезмерное обучение может сделать хуже. Например, переобученная нейросеть может начать распознавать предметы там, где их нет — так люди иногда видят лица в фарах машин и принимают пакеты за котов. А в случае с искусственной нейронной сетью такой эффект еще явнее и заметнее. Если же учить нейросеть на нескольких разнородных данных, скажем, сначала обучить считать числа, а потом — распознавать лица, она просто сломается и начнет работать непредсказуемо. Для таких задач нужны разные нейросети, разные структуры и связи.
Вы знали, что разработчики нейросети LaMDA в 2022 году заявили о появлении у их детища сознания? А ChatGPT стал самым быстрорастущим сервисом в истории. К слову, сам ChatGPT является примером того, как создать нейросеть на Python, потому что он написан именно на этом языке программирования.
Этот язык программирования стремительно развивается и по данным наиболее авторитетного рейтинга языков TIOBE на апрель 2023 года, является самым востребованным в мире. Не в последнюю очередь его положение связано с тем, что сообщество разработчиков глубоко усовершенствовали его, чтобы он лучше других подходил для машинного обучения и создания нейросетей.
Так часто происходит в реальных задачах, например, при распознавании предметов. Не у всех из них есть жесткие критерии: скажем, гипертрофированного мультяшного персонажа мы по-прежнему различаем как человека, хотя у него совсем другие пропорции. Нейронную сеть сложно научить похожему — но современные системы могут справиться и с этим.
Data Scientist или Python-разработчик? А может, третий неочевидный вариант? Узнайте, какая IT-специальность подходит вам идеально на бесплатной онлайн-профориентации «IT-рентген».
Давайте поймем почему формула имеет такой вид. Сначала нам нужно учесть то, что мы хотим скорректировать вес пропорционально размеру ошибки. Далее ошибка умножается на значение, поданное на вход нейрона, что, в нашем случае, 0 или 1. Если на вход был подан 0, то вес не корректируется. И в конце выражение умножается на градиент сигмоиды. Разберемся в последнем шаге по порядку:
Больше нейронов. В нашей тренировочной нейросети только один нейрон. Но если нейронов будет больше — каждый из них сможет по-своему реагировать на входные данные, соответственно, на следующие нейроны будут приходить данные с разных синапсов. Значит — больше вариативность, «подумать» и передать сигнал дальше может не один нейрон, а несколько. Можно менять и формулу передачи, и связи между нейронами — так получаются разные виды нейронных сетей.
Еще есть, например, метод обратного распространения ошибки — градиентный алгоритм для многослойных нейросетей. Сигналы ошибки, рассчитанные с помощью градиента, распространяются от выхода нейронной сети к входу, то есть идут не в прямом, а в обратном направлении.
Проекты в области искусственного интеллекта сейчас выходят на новый уровень. Мы это можем понять по распространению техники, в основе которой они лежат: личные помощники (в том числе умные колонки), спам-фильтры, системы поимки мошенников, поисковики, рекомендательные системы и многое другое.
В параметре loss метода compile можно определить метод расчета ошибок, от этого зависят результаты измерений. Для учебной нейросети мы выбрали mse — средние квадратичные ошибки. Подробнее об этом можно посмотреть в документации к библиотеке. Также необходимо задать «оптимизатор». Это простая нейросеть на Python, поэтому мы по максимуму используем потенциал готовых функций и методов. Есть несколько алгоритмов взаимодействия нейронов сети, их можно выбрать именно тут.
Специалисты, занимающиеся технологическим прогнозированием, называют ИИ (artificial intellect) одной из четырех технологий, которые в ближайшее время приведут к формированию «нового экономического уклада» и перевернут нашу жизнь сильнее, чем она изменилась с начала 50-х годов XX века, при первой научно-технической революции.
Больше мощностей. Нейронные сети работают с матрицами, так что если нейронов много, вычисления получаются очень ресурсоемкие. Известные нейросети вроде Midjourney или ChatGPT — это сложные и «тяжелые» системы, для их работы нужны сервера с мощным «железом». Так что написать собственный DALL-E на домашнем компьютере не получится. Но есть сервисы для аренды мощностей: ими как раз пользуются инженеры машинного обучения, чтобы создавать, обучать и тестировать модели.
Но в том-то и дело, что нейросети придется действовать самостоятельно и напрямую взять и возвести число в степень мы ей тоже не скажем, хотя в Python имеется такой функционал. Предположим, у нас есть выражение 5*5 = 25. Нейросеть получит 5 и затем будет пропускать ее через слои нейронов. Станет умножать числа и свои результаты на какие-то веса, применять функции, пока не приблизится к правильному результату, не поймет, как мы получили этот результат.