ЯЗЫК ПРОГРАММИРОВАНИЯ PYTHON КАК ОСНОВА ИНСТРУМЕНТАРИЯ СОЗДАНИЯ НЕЙРОННЫХ СЕТЕЙ УЧЕБНОГО НАЗНАЧЕНИЯ

Раздел: Искусственный интеллект в образовании

Журнал: Материалы I Всероссийской научно-практической конференции «Искусственный интеллект в образовании. Современные достижения и перспективы применения»

20 сентября 2022 г.

Авторы: Коткин Сергей Дмитриевич

Информационно-коммуникационные технологии в педагогическом образовании. http://infed.ru

_______________________________________________________________________

УДК 378

С. Д. Коткин

S. D. Kotkin

Коткин Сергей Дмитриевич, к. п. н., доцент кафедры ИОТД, Кузбасский гуманитарно-педагогический институт Кемеровского государственного университета, г. Новокузнецк, Россия.

Kotkin Sergey Dmitrievich, Ph.D., Associate Professor, Kuzbass Humanitarian Pedagogical Institute Kemerovo State University, Novokuznetsk, Russia.

 

ЯЗЫК ПРОГРАММИРОВАНИЯ PYTHON КАК ОСНОВА ИНСТРУМЕНТАРИЯ СОЗДАНИЯ НЕЙРОННЫХ СЕТЕЙ УЧЕБНОГО НАЗНАЧЕНИЯ

THE PYTHON PROGRAMMING LANGUAGE AS THE BASIS OF TOOLS FOR CREATING NEURAL NETWORKS FOR EDUCATIONAL PURPOSES

 

Аннотация. В статье рассматриваются инструментальные средства, применяемые в процессе изучения нейронных сетей. Даются предложения по использованию таких инструментов как язык программирования Python, библиотеки NumPy, mathplotlib, scikit-learn, Keras и Tensorflow, а также среды разработки Jupiter Notebook.

Annotation. The article discusses the tools used in the process of studying neural networks. Suggestions are made for using tools such as the Python programming language, NumPy, mathplotlib, scikit-learn, Keras and Tensorflow libraries, as well as the Jupiter Notebook development environment.

Ключевые слова: педагогическое образование, системы искусственного интеллекта, машинное обучение, нейронные сети.

Keywords: teacher education, artificial intelligence systems, machine learning, neural networks.

 

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

Одним из шагов к началу формирования специалистов данных областей явилось предложение Министерства науки и высшего образования РФ включить в основные образовательные программы высшего образования по всем специальностям и направлениям подготовки модуля «Системы искусственного интеллекта» [2], чей объем составляет 108 часов (3 з.е.) в базовой части и 36 часов (1 з.е.) в вариативной части. Целью освоения модуля является «овладение студентами основными методами теории интеллектуальных систем, приобретение навыков по использованию интеллектуальных систем, изучение основных методов представления знаний и моделирования рассуждений» [2]. К изучаемым в модуле темам относятся инженерия знаний, нечеткие множества, экспертные системы, нейронные сети, а также их применение в построении интеллектуальных систем и интеллектуальных интерфейсов. Изучение этого модуля готовит современных студентов к пониманию основных принципов работы систем искусственного интеллекта и их роли в профессиональной деятельности.

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

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

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

Несмотря на то, что в настоящее время есть готовые инструменты на основе нейронных сетей, не требующие от их пользователей специальной подготовки, в обучении школьников и студентов, в том числе, студентов СПО, работе с нейронными сетями, немаловажным является выбор инструментальных средств, позволяющих эффективно решать задачи, возникающие на различных этапах их создания. И одним из подходящих средств является язык программирования Python [6]. Данный язык имеет развитый синтаксис и поддерживает различные структуры данных, но, в отличие от таких языков, как Java или C++ имеет невысокий порог вхождения, так как изначально разрабатывался как скриптовый язык для решения небольших задач. Python можно рассматривать как мультипарадигменный язык, поддерживающий структурное, объектно-ориентированное и логическое программирование. Несмотря на свою невысокую производительность он пригоден для работы с нейронными сетями, так как для этого в нём используются библиотеки, написанные на высокопроизводительных языках C и С++ и оптимизированные для различных процессоров и различных графических ускорителей. Также этот язык имеет множество библиотек для решения прочих типов задач машинного обучения, работы с данными в различных форматах и библиотек визуализации данных. Немаловажным является и то, что по многим рейтингам [7, 8, 9] данный язык в последние годы входит в пятерку самых востребованных работодателями, что позволяет учащимся помимо формирования компетенций в области нейронных сетей также повысить свою конкурентоспособность на рынке труда.

В решении задач глубокого обучения Python может использоваться со множеством библиотек, облегчающих решение отдельных задач. В первую очередь стоит упомянуть такую библиотеку, как NumPy [10]. Эта библиотека стала фактическим стандартом, как для самостоятельного решения научных задач, так и для использования другими научными библиотеками. Основной структурой данных в библиотеке NumPy является многомерный массив. В отличии от встроенных в Python структур данных, NumPy делает акцент не на гибкости, а на производительности, поэтому массивы в этой библиотеке могут хранить элементы только одного типа данных, зато операции с такими массивами выполняются очень быстро, в том числе, и за счет того, что большинство алгоритмов в NumPy реализованы на компилируемом языке C. Эта библиотека позволяет применять векторные вычисления. При этом единственная операция применяется ко всему массиву, не требуя организации циклов на Python. Также для массивов реализованы такие операции, как изменение формы, в том числе, с изменением размерности, транспонирование, изменение размера, объединение и разделение. Массивы могут быть записаны в файл и считаны из файла. Эта библиотека реализует различные статистические функции и методы, а также операции линейной алгебры.

Библиотека Matplotlib [11] предназначена для визуализации данных. При этом библиотека позволяет получать и простые, быстро создаваемые визуальные представления и графики, пригодные для размещения в научных статьях, в том числе, в печатных изданиях. Эта библиотека позволяет строить двумерные графики, в том числе, точечные диаграммы, гистограммы, линейные и круговые диаграммы, биржевые диаграммы, а также контурные диаграммы, тепловые карты, каркасные и объемные поверхностные диаграммы и создавать анимацию. При этом все параметры диаграммы, такие как подписи осей, их тип и масштаб, маркеры в отображении рядов данных, штриховки областей и прочее, могут настраиваться.

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

Для непосредственно исследования нейронных сетей в учебных и исследовательских задачах удобно использовать Python совместно с библиотекой Keras [12, 13]. Она образует промежуточный слой между интерпретатором Python и библиотеками, непосредственно выполняющими вычисления. В предыдущих версиях она поддерживала множество библиотек, таких как TensorFlow, Microsoft Cognitive Toolkit, Theano и т. д. В последней версии в ней осталась поддержка только TensorFlow – на сегодняшний день самой распространенной библиотеки для работы с нейронными сетями. Функции Keras – скрыть от пользователя сугубо технические детали реализации нейронных сетей, оставив возможность создавать любые доступные в рамках поддерживаемых ею библиотек архитектуры.

Также стоит отметить, что для Python создано множество интегрированных средств разработки с обладающими достаточной, для использования в образовательном процессе, функциональностью бесплатными версиями, в том числе такая IDE, как Jupiter Notebook, позволяющая в одном документе объединять программный код, результаты его работы и форматированные текстовые описания, что позволяет, помимо решения задач, создавать и обучающие материалы.

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

Список литературы

  1. Российская Федерация. Стратегическое направление в области цифровой трансформации государственного управления (утверждено распоряжением Правительства Российской Федерации от 22 октября 2021 г. № 2998-р) [Электронный ресурс]. – URL : http://static.government.ru/media/files/
    d3uclO4ZFGNKmxCPBXbL4OaMPALluGdQ.pdf (дата обращения : 10.05.2022).
  2. Российская Федерация. Письмо Министерства науки и высшего образования РФ от 2 июля 2021 г. N МН-5/2657 «О направлении информации» [Электронный ресурс]. – URL : http://fgosvo.ru/uploadfiles/metod/
    Ps_MON_5_2657__02072021.pdf (дата обращения: 16.05.2022).
  3. Гудфеллоу, Я. Глубокое обучение [Текст]. / Я. Гудфеллоу, И. Бенджио, А. Курвилль, пер. с англ. А. А. Слинкина. – 2-е изд., испр. – М. : ДМК Пресс, 2018. – 652 с. : цв. ил.
  4. Crawford, J. What is the «protein folding problem»? A brief explanation [Электронный ресурс]. / J. Crawford // The Roots of Progress, 2020 – URL : https://rootsofprogress.org/alphafold-protein-folding-explainer (дата обращения : 16.05.2022).
  5. Кожевников, М. М. Планирование траекторий промышленных роботов-манипуляторов на основе нейронных сетей [Электронный ресурс] / М. М. Кожевников, А. П. Пашкевич, О. А. Чумаков. // Доклады БГУИР, 2010. – № 4 (50). – URL : https://cyberleninka.ru/article/n/planirovanie-traektoriy-promyshlennyh-robotov-manipulyatorov-na-osnove-neyronnyh-setey (дата обращения : 28.04.2022).
  6. Python Software Foundation [электронный ресурс] – URL : https://www.python.org/psf/ (дата обращения : 27.04.2022).
  7. TIOBE Index [Электронный ресурс]. – URL : https://www.tiobe.com/tiobe-index/ (дата обращения : 02.05.2022).
  8. IEEE Spectrum Top Programming Languages [Электронный ресурс]. – URL : https://spectrum.ieee.org/top-programming-languages/ (дата обращения : 12.05.2022).
  9. 2020 Developer Survey [Электронный ресурс]. – URL : https://insights.stackoverflow.com/survey/2020 (дата обращения : 02.11.2021).
  10. NymPy [Электронный ресурс]. – URL : https://numpy.org/ (дата обращения : 12.05.2022).
  11. matplotlib [Электронный ресурс]. – URL : https://matplotlib.org/ (дата обращения : 12.05.2022).
  12. Шолле, Ф. Глубокое обучение на Python [Текст]. / Ф. Шолле. – СПб. : Питер, 2018. – 400 с. : ил.
  13. Keras: библиотека глубокого обучения на Python [Электронный ресурс]. // Русскоязычная документация Keras. – URL : https://ru-keras.com/home/ (дата обращения : 17.10.2021).
PDF