Блог онлайн школы Пиксель

Программирование для подростков: простой код нейросети на Python

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

В статье преподаватели онлайн-школы программирования для детей «Пиксель» расскажут, как прописывать код нейросети на Python.

Что такое нейросеть?

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

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

Как нейросеть может распознавать изображения?

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

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

Аналогичным образом нейросеть может действовать и с числами. Мы такую и разработаем.

Как прописать код нейросети на Python?

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

Если мы хотим возвести число пять в квадрат, то есть умножить пять на пять, то верным ответом будет — 5*5 = 25. Наша нейросеть должна примерно угадывать это.

Разберемся, как она будет это делать. Нейросеть будет получать на вход числа, умножать их на какие-то веса: в один, в два, в три и так далее. После этого складывать их, производить определенные операции, применять функции, и на выходе она должна получить число близкое к 25. Если она ошибется, то она поменяет свои веса и приблизится к результату. Нам остается только повторить это несколько раз, и нейросеть будет обучена.

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

Итак, начнем программировать нейросеть по шагам:

  1. Импортируем код в библиотеке и запускаем его.
  2. Создаем данные, которые будем подавать на вход. Для этого определим промежуток от минус пяти до пяти и возьмем оттуда сто чисел.
  3. Для обучения нейросети, чтобы она знала, к чему ей нужно прийти, мы также возведем эти числа в квадрат.

Приступаем к созданию самой нейросети:

  1. Обозначим слои нашей нейросети: слой с десятью нейронами, на вход которого подается одно число, и слой с одним нейроном, на вход которого подается десять чисел — он производит операции с числами и выдает число, которое он считает верным решением.
  2. Задаем параметры обучения нейросети, т.е. на чем ей нужно обучаться, на средней ошибке — mse, и какой оптимизатор обучения на ошибках нужно использовать - adam.
Мы написали основные параметры нейросети.

Запустим обучение. Для этого:

  • передадим обучающую информацию - x и y;
  • напишем, сколько раз нейросети нужно обучаться. Это число epochs - установим 100, так нейросеть обучается довольно быстро.

Смотрим на результаты — они оказываются не очень хорошими: на картинке ниже синим обозначен график, который должен быть, а оранжевым — ответы нейросети.
Как мы можем их улучшить? Например, можно увеличить число разбиений со 100 на 1000.
Перезапускаем обучение и проверяем результаты. Теперь можно увидеть уже большую схожесть с графиком, который нам нужен.
Посмотрим, как нейросеть будет справляться с новыми числами, которые мы будем у нее спрашивать, сравним с возведением в квадрат и сделаем вывод, хорошо ли обучена нейросеть.

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

После этого выводим их на экран и смотрим результат.

Квадрат -2 равен 4, но нейросеть выдает нам 5,21.

Квадрат -1 равен 1 — нейросеть выдает 0,6.

Точность невысока. Повысить ее мы можем с помощью создания дополнительного слоя в нейросети, т.е. будет не 1 слой, а 2. Нейросеть будет выглядеть так:
Посмотрим, улучшит ли это результат: обучение стало более долгим, но график стал точнее.
Числа становятся тоже более точными.

Вот так можно создавать собственные нейросети. Полный код для программирования нейросети на Python для детей ниже.

import numpy as np

from keras.models import Sequential

from keras.layers import Dense

import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 1000)

y = x ** 2

model = Sequential()

model.add(Dense(10, input_dim=1, activation='relu'))

model.add(Dense(10, activation='relu'))

model.add(Dense(1))

model.compile(loss='mse', optimizer='adam')

model.fit(x, y, epochs=100, verbose = 0)

plt.plot(x, y, label='ground truth')

plt.plot(x, model.predict(x), label='predicted')

plt.legend()

plt.show()

x_new = np.array([-2, -1, 0, 1, 2])

y_real = x_new ** 2

x_new = x_new.reshape(-1, 1)

y_pred = model.predict(x_new)

print(" x values | Predicted y values | Real y values ")

print("----------------------------------------------")

for i in range(len(x_new)):

print(f" {x_new[i][0]:.2f} | {y_pred[i][0]:.2f} | {y_real[i]:.2f}")

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

Подробно ознакомиться с видео по созданию кода из статьи можно на нашем YouTube-канале по ссылке. Там же вы найдете и другие уроки по программированию для детей онлайн.
Если вам понравилось создавать нейросеть и вы хотели бы погрузиться в программирование для подростков онлайн, приходите на курсы Python для детей. Вы начнете с азов разработки, а в конце уже сможете презентовать свой собственный проект. Для этого в онлайн-школе программирования для детей “Пиксель” есть специальное направление: курс Python подходит и для начинающих детей, и для тех, кто уже раньше занимался программированием. Приходите к опытным преподавателям на курсы программирования Python, чтобы осваивать действительно перспективные сферы IT-отрасли!
Python для детей Бесплатные видеоуроки