Школьники и нейросети: как разработать искусственный интеллект на Python для детей

Кто сегодня не слышал о нейросетях? Таких людей практически не осталось. Популярность технологий ИИ выросла настолько, что слово «нейросеть» было объявлено словом 2023 года. В последние несколько лет узнаваемость и востребованность таких технологий резко повысилась по причине появления массовых доступных сервисов по генерации контента: изображений, видео, текста, музыки, презентаций и много другого.

А между тем, нейросети используются далеко не только для создания контента. Сегодня такие системы внедрены, например, в работу центров телефонного обслуживания, в медицинские системы прогнозирования, в интеллектуальные дорожные системы, на телевидении, в сфере организации мероприятий и онлайн-конференций, в рекомендательных системах. Этот список можно продолжать ещё на много строк. Так как же они устроены?

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

72d1f838e3760a2347fa552d3608f9b3.jpg

Давайте попробуем найти схожесть работы нервной сети человеческого мозга и нейронных сетей:

  • искусственный нейрон как часть компьютерного кода принимает информацию, обрабатывает, преобразует её и передает на выход;

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

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

Самый распространенный пример для объяснения работы нейросетей — это распознавание кошек и собак. Мы даем нейросети базу данных с разными фотографиями кошек, которые она анализирует. Затем, когда мы ей покажем фотографию, например, спаниеля, она нам скажет, что это не кошка. Может и ошибиться: тогда данные об ошибке пойдут в обработку. Чем больше данных мы изначально предоставим, чем больше будет количество слоев у нейросети, тем меньше будет вероятность ошибки и выше скорость обработки информации.

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

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

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

Но не стоит недооценивать пайтон из-за его простоты: всем известные ChatGPT, ruGPT написаны именно на Python.

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

У Питона есть большое количество библиотек, в том числе для работы с нейросетевыми структурами. Одна из таких — это NumPy. В ней уже есть готовые команды, внутри которых содержатся сложные операции вычислений для ИИ. И самая простая команда буквально может задаваться функцией dense и количеством слоев нейронки.

195a88af8881fd738a89cc4b2f76e06a.jpg

Ниже покажем, как создать нейронку на языке Python для детей.

Урок по питону, языку программирования с нуля для детей: создаем нейросеть с нуля

Попробуем написать нейросеть простого вида с использованием языка пайтон, который активно используется на уроках программирования для детей. Её задачей будет получение результата возведения в квадрат передаваемых ей чисел.

Если бы задачи создать нейросеть не стояло, то можно было бы применить математический оператор. Но мы уже знаем, что нейросеть должна действовать самостоятельно и проводить вычисления, обрабатывать входящие данные.

В условие задачи возьмем выражение 4×4=16. Наша нейронная сеть на входе получит значение 4 и дальше будет пропускать его через указанное количество слоев, будет проводить операции умножения и иные функции, пока не придет к правильному результату.

Для решения задачки можно воспользоваться платформой Google Collab, в которой уже предустановлены нужные нам библиотеки питона. Так что даже скачивать дополнительно ничего не нужно — все можно делать прямо в браузере.

Библиотеки подключаются через оператор Import.

78e2af367f489b1045b7ebb0845e206f.png

После этого мы увидим нужную нам NumPy и другие необходимые компоненты.

При помощи метода NumPy linspace сгенерируем набор чисел от -5 до 5 в 100 раз. Это будет служить обучающей базой для нейросети. На скриншоте последняя строка кода — это результат возведения в квадратную степень. Именно к нему нейросеть будет стремиться.

64c306aa1d80b865c08cf34459ec76f0.png

Для конструирования нейросети нам пригодятся методы model.add и функция Dense. Расшифруем параметры кода: слой с 10 нейронами, в который на вход передается 1 число и второй слой — 1 нейрон, получающий 10 чисел. Ниже на скриншоте параметры для обучения:

cd65a059bbdb2008487fd6179f41543a.png

Параметром loss метода compile определяем метод расчета ошибок. Результаты измерений будут зависеть именно от него. В нашем случае используем средние квадратичные ошибки — mse. Если интересны подробности, то все они есть в библиотечной документации.

Еще задается так называемый «оптимизатор». Мы делаем простую нейросетку, так что показываем все, что можно сделать при помощи готовых методов и функций. То, как будут взаимодействовать нейроны сети, алгоритмы, также выбираются здесь. Для этой задачи нам подойдет метод Adam из библиотеки Keras.

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

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

c06a44e7cc6e1a19f7d56f76a94b8c31.png4e3cb1a70e11e561bde4ed49319c8712.png

Что мы видим на графике: синим обозначены правильные вычисления квадрата. А вот оранжевый — это результат работы нейросети.

Что нам нужно сделать, чтобы сравнять графики в пользу корректных вычислений:

·        Увеличиваем нашу базу данных, с помощью которых нейросеть обучается. В методе np.linspace  меняем количество вводных чисел с -5 до 5 на 1000.

После перезапуска видим, что достигли почти идеального результата.

364fe3cf00bdbc83d4997299b2720bc6.png

Далее попробуем передать нейросети новые наборы чисел при помощи метода reshape. Командой predict проверим прогноз, который выдаст нам нейросеть.

aa5f6d918dc4ecaeb23745c46c23446e.png

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

55741c34d9620e2374cdd31908f15a01.png05c73b2bf1b6ae18ad4a7d19246e68c3.png

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

Подходит ли программирование на Python для детей по созданию нейросетей для школьников?

Как мы уже сказали выше, нельзя назвать работу с нейросетями легкой, даже если для этого используется простой синтаксис питона. Ребенку в любом случае нужно погрузиться в этот процесс, понять, как устроен искусственный интеллект. Уже в процессе обучения питону, языку программирования для детей, он освоит все необходимые знания математики и программирования. Итог таких уроков по питону с нуля для детей стоит того, ведь дальше школьник сможет самостоятельно собирать более сложные нейросетевые архитектуры, работать с базами данных. Сейчас ИТ-компании, занимающиеся развитием технологий ИИ, готовы работать и с учениками, которые прошли те или иные курсы пайтон программирования для детей, если их проекты с использованием нейросетей имеют потенциал. Например, в 2021 году команда учеников тюменской Школы юных нейроинженеров разработала виртуального ассистента для крупного цифрового форума.

Ну, а начинать всегда лучше с простого. В интернете можно найти бесплатные пошаговые видеоуроки по созданию нейросетей на Python для подростков и детей.  Ну, а если интересно узнать больше о программировании на языке Python в целом, то тут тоже нет недостатка в информации. Например, курс школы «Пиксель» по питону для детей онлайн бесплатного формата не просто дает азы кодинга и теорию: каждый мини-урок — это практическое занятие, повторяя которое, легко усвоить ключевой материал.

Так что такие занятия Python для детей не пройдут даром, а принесут много пользы и знаний. Как минимум, курсы питон программирования для детей помогут в развитии логического и вычислительного мышления. А как максимум, навык создания нейросетей и работа с Python дают перспективу хорошей профессии в сфере разработки.

А как вы относитесь к тому, чтобы дети учились создавать нейросети? И в целом как считаете, по силам ли подобные курсы всем желающим?

© Habrahabr.ru