Найти тему

Python для детей в школе Pixel: создаем свою первую нейросеть

Оглавление

Перед тем как приступить к созданию своей первой нейросети, нужно определиться, что же это такое. Раньше, например, существовали алгоритмы, с помощью которых можно было найти нужный товар в интернет-магазине, подобрать песню или фильм. Это своеобразный первый слой нейросетей, который иногда еще называют искусственным интеллектом (ИИ). Дело в том, что такое обозначение было актуально 2-3 года назад, но сейчас на замену ИИ пришли нейросети. А они представляют собой компьютерную модель, которая имитирует работу нейронной системы человека.

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

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

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

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

Логика работы нейросетей

Перед тем как создать нейросеть, ребенку нужно понять логику ее работы. Допустим, на примере этого изображения.

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

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

-2

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

А просканировав изображение собаки, нейросеть «видит», что совпадений недостаточно, поэтому она не определяет собаку и не может ее идентифицировать.

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

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

-3

Точно так же система работает и с числами. Умножение, деление, вычитание и другие математические действия можно загрузить в «сознание» нейросети.

Нейросеть для школьников: простые примеры

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

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

-4

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

Python для школьников: создаем алгоритмы для работы нейронной сети.

Вся наша работа будет производиться в интерактивной облачной среде Google Colab. Она специально была создана для тех, кто хочет изучать «Пайтон», используя облачные технологии.

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

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

Для загрузки необходимых библиотек нужно прописать код как на картинке.

-5

После этого у нас будут доступны и запущены необходимые библиотеки.

Затем, необходимо создать данные, которые будут подаваться на вход. Для этого в коде нужно прописать промежуток чисел от (-5) до 5 и взять из этого промежутка 100 чисел.

-6

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

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

-7

Программирование на «Пайтон» для подростков и детей: задаем параметры обучения нейросети

Теперь нам нужно дать «понять» нейронной сети, на чем она должна обучаться. В нашем случае она будет обучаться на средней ошибке mse, также прописываем оптимизатор обучения на ошибках, который она будет использовать, выбираем adam.

К этому моменту мы написали основные параметры нейронной сети.

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

В этот момент происходит обучение, которое проходит примерно за 1-5 секунд.

После этого нужно прописать код для получения результатов:

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

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

plt.legend()

plt.show()

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

-8

Судя по полученным данным — результаты вышли не самыми хорошими.

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

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

-9

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

-10

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

-11

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

Если все данные указаны как на картинке, то результат, полученный после вычисления нейросетью, неприятно удивит. Он снова будет неточным. Например, квадрат числа (-2) отображается неверно.

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

-12

В результате на экране отобразится параболический график синего цвета и практически такой же — оранжевого цвета. Также в вычислениях должны быть прописаны более точные результаты. Например, по «мнению» нейросети число (-2) в квадрате может быть представлено как 4,07 — что является очень хорошим результатом для нейросети, написанной всего за несколько минут.

-13

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

Если вы хотите, чтобы ребенок изучил востребованные ИТ-направления, смог определиться со своим будущим в сфере информационных технологий, отправляйте его на обучение в школу PIXEL. Кроме Python здесь обучают Scratch, Kodu, Roblox и другим навыкам. Все они помогут в будущем найти перспективную работу в ИТ-сфере.

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

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

Также материал можно посмотреть в формате видеоурока.

Код, использовавшийся в уроке:

-14
-15