Современный мир информационных технологий развивается с удивительной быстротой, и одним из ключевых элементов этой революции являются нейронные сети. Эти мощные алгоритмические инструменты, вдохновленные биологической нейронной сетью, являются сегодня неотъемлемой частью подготовки IT-специалистов.
В нашей стране заинтересованность искусственным интеллектом вышла на самый высокий уровень. Выступление Президента РФ В.В. Путина на конференции «Путешествие в мир искусственного интеллекта», которая состоялась 23–24 ноября 2022г., обозначило основную проблему – большой дефицит кадров в этой отрасли. Опубликованные поручения Президента РФ по итогам конференции (п.1-б): «Обеспечить внесение в образовательные программы высшего образования и программы повышения квалификации изменений, направленных на повышение уровня компетенций в сфере искусственного интеллекта специалистов ключевых отраслей экономики и социальной сферы, специалистов по государственному и муниципальному управлению» [1] – говорят о необходимости улучшения качества преподавания дисциплин данного направления в образовательных организациях.
Работу специалистов IT можно назвать творческой. Практически для любой задачи можно подобрать несколько способов решения. Причем в ходе работы формулировка задачи может корректироваться, могут добавляться новые требования и т.д. Также программисту приходится не только разрабатывать новую информационную систему или дорабатывать существующую, но и подбирать необходимые инструменты (средства разработки, языки, библиотеки) или дорабатывать имеющиеся. Поэтому для того, чтобы повысить свою конкурентоспособность, необходимо практиковаться, причем учиться решать прикладные задачи несколькими способами.
Цель исследования заключается в определении порядка формирования навыков построения нейронных сетей.
Трудно переоценить значение включения практического курса по нейронным сетям в учебные программы по направлениям, связанным с информационными технологиями. При прохождении курсов по нейронным сетям в рамках направлений подготовки по программам с профилем «Искусственный интеллект» или смежным с ними студенты располагают достаточным количеством времени как для изучения теоретических сведений, так и для наработки практических навыков. Однако на направлениях подготовки по программам, не относящимся к профилю «Искусственный интеллект», не ориентированным на изучение искусственного интеллекта, студенты будут иметь ограниченное количество часов на изучение данного модуля.
Практические курсы по нейронным сетям предоставляют студентам возможность не только ознакомиться с теоретическими основами, но и непосредственно применить свои знания при создании и настройке нейронных сетей для решения прикладных задач. Это обогащает их профессиональный опыт и готовит их к успешной карьере в информационных технологиях, помогая решать сложные задачи.
Материал и методы исследования
Ниже рассмотрен вариант практического изучения темы по нейронным сетям в Дзержинском политехническом институте (филиале) ФГБОУ ВО «Нижегородский государственный технический университет им.Р.Е.Алексеева» на направлении подготовки бакалавров «Информационные системы и технологии» с профилем подготовки «Разработка и сопровождение информационных систем». Нейронные сети изучаются в рамках дисциплин «Методы искусственного интеллекта», «Большие данные». Первое знакомство с данной темой осуществляется в рамках дисциплины «Методы искусственного интеллекта». В рамках этой дисциплины происходят знакомство с темой и получение первых практических навыков. В рамках дисциплины «Большие данные» студенты применяют свои знания для решения различных практических задач в целях оттачивания своих знаний и навыков.
Чаще всего лабораторные практикумы по построению и изучению нейронных сетей строятся с использование языка программирования Python со специализированными библиотеками, с основном Keras и TensorFlow. Специализированные библиотеки – это интерфейс набора правил или оптимизированных функций, написанных на заданном языке для выполнения повторяющихся операций, таких как арифметические вычисления, визуализация наборов данных, чтение изображений и т.д. Цель их – упростить и автоматизировать процесс построения нейронных сетей, но это значительно ухудшает понимание студентами того, как происходят обучение и настройка нейронных сетей.
Результаты исследования и их обсуждение
В рамках дисциплины «Методы искусственного интеллекта» для облегчения понимания сути построения нейронной сети необходимо сформировать у студентов навык их построения в различных программных средах. Осуществлять это целесообразнее на базовой задаче, например распознавания цифр, рассматривая ее поэтапно от «ручного метода», реализованного на классических языках программирования, до языков со специализированными библиотеками, выполняя в дальнейшем анализ изученных сред.
Целью работы является обучение нейронной сети для распознавания цифр от 0 до 9. Предложено использовать несколько упрощений: цифры написаны черным цветом в таблице 3x5 клеток (рис. 1).
Рис. 1. Исходные цифры для распознавания
Распознание цифр будет производиться с помощью упрощенной модели персептрона (рис. 2.) с пороговой функцией активации.
Рис. 2. Упрощенная модель персептрона
Подробно «ручной метод» обучения нейронной сети был описан авторами в [2]. Реализовать данный метод предлагается сначала с помощью, например, Java, C#, С++ [3]. Для этого необходимо вручную заполнить список каждого доступного варианта, который затем будет сверяться с полученными данными изображения. Это довольно трудоемко, так как при записи цифр в таблицу размером 3x5 получается числовой ряд из 15 элементов типа 0 или 1. Так как цифр всего 10 (от 0 до 9), требуется указать, как минимум, 10 таких рядов, соответствующих идеальному написанию, а для полноценной реализации нейронной сети, понимающей искаженные цифры, нужно гораздо больше. Чем больше размер изображения, тем сложнее заполнить ряды. Тем не менее, если обучающийся справился с задачей таким инструментом, можно быть уверенным, что он понимает «математику» нейронной сети.
Следующим шагом в обучении студентов должен стать вариант использования инструментов, позволяющих автоматизировать процесс построения и обучения нейронной сети. В качестве таких инструментов можно рассмотреть использование таких программных средств, как MATLAB и / или Python.
MATLAB – это среда и язык технических расчетов, предназначенный для решения широкого спектра инженерных и научных задач любой сложности в любых отраслях. Это одновременно и язык инженерных расчетов, и приложения с графическим интерфейсом, и средства разработки программного обеспечения, и более сотни прикладных программ – библиотек [4]. Для проектирования нейронных сетей в нем используется специализированный пакет расширения Neural Network Toolbox, который также позволяет визуализировать их. Network Toolbox можно применять для таких задач, как аппроксимация данных, распознавание образов, кластеризация, прогноз временных рядов, моделирование динамических систем и их управление. Также пакет обеспечивает всестороннюю поддержку типовых нейросетевых парадигм и имеет открытую модульную архитектуру. Пакет содержит функции командной строки и графический интерфейс пользователя для быстрого пошагового создания нейросетей. Также Neural Network Toolbox обеспечивает поддержку Simulink, что позволяет моделировать нейросети и создавать блоки на основе разработанных нейросетевых структур [5, с. 84].
При выполнении работы в MATLAB в отдельном файле-скрипте заполняются матрицы чисел. После создается файл-скрипт первой нейронной сети, который корректируется через функции обучения и обучающую выборку, в результате чего весы в нейронной сети корректируются. Обучение прекращается, когда сеть больше не может улучшать обучающие или проверочные наборы. Полученная сеть будет распознавать только идеально сформированные цифры, поэтому для распознавания более сложных изображений в дальнейшем необходимо добавлять новые слои нейронной сети.
Наиболее популярным языком для реализации нейронных сетей является Python [6]. При его использовании рекомендуется применять библиотеку TensorFlow – открытую программную библиотеку для машинного обучения, разработанную для решения задач построения и тренировки нейронной сети с целью автоматического нахождения и классификации образов с достижением качества человеческого восприятия. Также могут потребоваться библиотеки NumPy (для работы с матрицами и векторами) и Matplotlib (для визуализации данных при помощи двумерной и трехмерной графики). Однако TensorFlow – относительно низкоуровневый фреймворк и весьма «устарел», поэтому проектировать на нем нейронные сети все равно, что писать программу на ассемблере вместо того, чтобы воспользоваться языками высокого уровня. Для решения данной проблемы используется API Keras, который поддерживает нейросетевую библиотеку TensorFlow для оперативной работы с нейронными сетями. Зная команды библиотек, достаточно легко можно построить сеть, работающую с изображением большого размера. Например, в случае усложнения поставленной задачи и распознавания рукописных цифр в качестве выборки изображений можно использовать уже готовый датасет образцов рукописного написания цифр – MNIST. В нем находится 60 000 изображений в обучающей выборке и 10 000 – в тестовой.
Для завершения формирования навыка создания нейронных сетей в разных программных средах необходимо, чтобы обучающиеся провели исследование, позволяющее сравнить между собой изученные программные продукты.
Для сравнения предлагается выбрать следующие критерии:
1. Сложность разработки – трудозатраты на создание сети.
2. Дополнительное программное обеспечение – необходимость установки дополнительных модулей.
3. Сложность обработки изображения – рекомендуемый размер определяемого изображения.
4. Точность оценки – точность определения изображения.
5. Материальные затраты.
6. Скорость обучения.
На сложность разработки влияют такие факторы, как: необходимость знаний встроенного набора команд языка, доступность справочной информации и принципы работы языков, а также минимально затрачиваемое время на разработку. Уровень оценки будет описываться тремя критериями (низкий, средний, высокий).
Дополнительное программное обеспечение указывает на необходимость использовать дополнительные пакеты программ, в том числе и специализированных библиотек, для полноценной разработки нейросети. Уровень оценки будет описываться критериями «требуется» / «не требуется».
Сложность обработки изображения определяется необходимостью формирования последовательности чисел, которая получается из разделения исходного изображения, и необходимостью дальнейшей работы с ней. Уровень оценки будет описываться тремя критериями (низкая, средняя, высокая).
Точность оценки определяется на основании средних данных результатов выполнения программ. Уровень оценки будет описываться тремя критериями (низкая, средняя, высокая).
Материальные затраты. Важный критерий для использования программного продукта в обучающих организациях. Описывается двумя критериями: «свободный доступ» / «платный доступ».
Скорость обучения характеризуется временем, необходимым на обучение нейронной сети в рамках поставленной задачи. Описывается тремя критериями (низкая, средняя высокая).
Возможный вариант итоговой сравнения отражен в таблице.
Сравнение программных сред
Критерий |
Используемые среды программирования |
||
C# |
MATLab |
Python |
|
Сложность разработки |
высокая |
средняя |
средняя |
Дополнительное программное обеспечение |
не требуется |
требуется |
требуется |
Сложность обработки изображения |
высокая |
средняя |
средняя |
Точность оценки |
средняя |
низкая |
высокая |
Материальные затраты |
свободный доступ |
платный доступ |
свободный доступ |
Скорость обучения |
средняя |
высокая |
высокая |
Результат сравнения должен заканчиваться выводом о том, в каком случае лучше применять тот или иной способ реализации, какие сложности могут возникнуть и какие преимущества дает каждый из подходов.
В зависимости от уровня подготовки студентов данные лабораторные работы рекомендуется усложнить, разнообразив задачи распознавания образов, или продолжить реализацию поставленной задачи в других программных средах (например, язык программирования R и др.).
В общем виде серия работ включает в себя решение одной задачи с помощью разных инструментов.
1. Построение и обучение нейронной сети с помощью Java, C# или С++.
2. Построение и обучение нейронной сети с помощью MATLAB.
3. Построение и обучение нейронной сети с помощью Python.
4. Сравнение полученных программ по заданным критериям.
В качестве самой задачи предлагается рассмотреть задачу распознавания цифр.
Таким образом, при изучении дисциплины «Методы искусственного интеллекта» у студентов формируется понимание нейронных сетей и логики их работы, формируются навыки построения и обучения сети с помощью разных инструментов. В дальнейшем, при изучении дисциплины «Большие данные», происходят закрепление навыков и формирование понимания плюсов и минусов использования нейронных сетей по сравнению с другими методами при решении разных задач (например, классификации, кластеризации, регрессионного анализа).
Анализ зачетно-экзаменационных ведомостей до и после введения в план дисциплины «Методы искусственного интеллекта» (была включена в 2022 г.) данных лабораторных работ показал, что средний по группе балл повысился (2020 г. – 4,0, 2021 г. – 4,1, 2022 г. – 4,5, 2023 г. – 4,4), что говорит о росте качества формирования знаний студентов.
Заключение
Предложенная серия работ лабораторного практикума позволит студентам улучшить понимание методологии программирования нейронных сетей, сформировать навыки построения нейронных сетей в различных программных средах и тем самым повысить качество обучения будущих специалистов IT-отрасли.
Библиографическая ссылка
Нажимова Н.А., Наумова Е.Г. ФОРМИРОВАНИЕ НАВЫКОВ ПОСТРОЕНИЯ НЕЙРОННЫХ СЕТЕЙ В РАЗЛИЧНЫХ ПРОГРАММНЫХ СРЕДАХ // Современные проблемы науки и образования. – 2024. – № 3. ;URL: https://science-education.ru/ru/article/view?id=33522 (дата обращения: 14.10.2024).