РЕАЛИЗАЦИЯ МЕЖПРЕДМЕТНЫХ СВЯЗЕЙ В РАМКАХ УЧЕБНОГО КУРСА «WEB-ПРОГРАММИРОВАНИЕ» КАК СРЕДСТВО ПРОПЕДЕВТИКИ ИЗУЧЕНИЯ СТУДЕНТАМИ ОСНОВ ТЕОРИИ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

ПРЕПОДАВАНИЕ ИНФОРМАТИКИ И ОСНОВ

ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ В СРЕДНЕЙ ШКОЛЕ И ВУЗЕ

УДК 004

А.Ф. Кузаев

РЕАЛИЗАЦИЯ МЕЖПРЕДМЕТНЫХ СВЯЗЕЙ В РАМКАХ УЧЕБНОГО КУРСА «WEB-ПРОГРАММИРОВАНИЕ» КАК СРЕДСТВО ПРОПЕДЕВТИКИ ИЗУЧЕНИЯ СТУДЕНТАМИ ОСНОВ ТЕОРИИ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

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

© КузаевА.Ф., 2020

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

На субъективный взгляд автора, лидером среди подобных технологий является направление информатики, связанное с искусственным интеллектом и интеллектуальными информационными системами (ИИС). Без всякого преувеличения можно даже говорить о технологическом прорыве в этой области. Методы искусственного интеллекта, в частности, нейронные сети и машинное обучение (machine learning), находят широкое применение в различных сферах человеческой деятельности. Искусственный интеллект уже не просто научная фантастика, а повседневная реальность, проникающая в такие отрасли материального производства и социально-культурного направления, как промышленность, транспорт, медицина, маркетинг, web-дизайн, образование. ИИ является одним из трендовых направлений, которым охвачены все развитые государства мира. На фоне этого роста в целях обеспечения ускоренного развития технологий искусственного интеллекта в России указом президента Российской Федерации от 10 октября 2019 г. утверждена «Национальная стратегия развития искусственного интеллекта на период до 2030 года» [8].

Web-технологии, появившись чуть более четверти века назад, в настоящее время вобрали в себя все передовые достижения науки и техники. Первая версия языка разметки гипертекста HTML, разработанная в 1991 г. сотрудниками Европейской организации по ядерным исследованиям (CERN), была предназначена для структурирования и форматирования только текстовой информации. Но сегодня, наверное, мало кто будет оспаривать тот факт, что

современные технологии web-разработки и методы искусственного интеллекта тесно переплелись. Технологии ИИ позволяют создавать более эффективные, адаптивные и дружественные сайты, активно используются чат-боты и голосовой поиск. Web-ресурсы могут обучаться, наблюдая за поведением и предпочтениями пользователя. Интеллектуальные компоненты интернет-сервисов трудятся над повышением конверсии сайтов, улучшением UX-дизайна, оптимизируют контент и даже пишут авторские тексты. Это далеко не полный перечень примеров использования технологий ИИ в web-разработке.

Тесное переплетение двух вышеупомянутых технологий позволяет говорить о наличии межпредметных связей между дисциплиной «Web-программирование» и учебными курсами по теории и методам искусственного интеллекта. Межпредметные связи - это объективно существующие связи между информацией из разных областей науки и практики, входящей в содержание обучения. О важной роли межпредметных (междисциплинарных) связей, их учете в процессе обучения написано много работ. Еще Ян Амос Коменский, которого считают основоположником педагогики как науки, подчеркивал: «Все, что находится во взаимной связи, должно преподаваться в такой же связи» [2]. Английский педагог и философ Джон Локк говорил о необходимости наполнения одного предмета элементами другого в процессе обучения. Основоположник научной педагогики в России К.Д. Ушинский утверждал, что система знаний позволяет подняться до высоких логических и философских отвлечений, а обособленность знаний приводит к омертвлению идей, понятий. Разработкой теории межпредметных связей занимались Н.К. Крупская, Ю.К. Бабанский, Г.И. Батурина, И.Д. Зверев, Т.А. Ильина, П.Г. Кулагин, В.С. Леднев, В.Н. Максимова, М.Н. Скаткин, С.А. Шапоринский и многие другие выдающиеся педагоги и ученые. С точки зрения современной педагогики межпредметные связи определяют системность информации. Отражение этих связей в сознании учащихся делает знания более прочными, структурированными, гибкими и подвижными [3].

Очевидно, что выявление междисциплинарных связей целесообразно начинать на этапе разработки учебно-методической документации, что должно отразиться на последовательности изучения учебных дисциплин. Так как «.основной задачей при установлении междисциплинарных связей является формирование системности и целостности знаний, то учебный материал, отбираемый для осуществления междисциплинарных связей, должен быть ярким, убедительным и без искусственного привлечения его к изучаемым темам» [4]. Эту задачу можно решить путем создания и использования в учебном процессе комплексных практических заданий.

Напомним, что фреймворк (от framework - остов, каркас, структура) - это программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта [1]. Популярность и востребованность современных языков программирования во многом как

1. Brain.js. Данная платформа предназначена для построения нейронных сетей в браузере или в Node.js. Можно использовать разные типы сетей в зависимости от решаемой задачи [13].

2. Synaptic. Эта платформа используется для построения нейронных сетей также для Node.js или браузера, она позволяет обучать архитектуры нейронных сетей первого и второго порядков. Проект содержит несколько встроенных архитектур - многослойный перцептрон, многослойная сеть долгой краткосрочной памяти, LSM (liquid state machine) и тренер (trainer), способный обучать сети [16].

3. Neataptic. Данный фреймворк позволяет осуществлять нейроэволюцию и обратное распространение для браузера и Node.js. Он содержит несколько встроенных сетей -перцептрон, LSTM и др. [15].

4. TensorFlow.js. Это фреймворк от компании Google с открытым исходным кодом, который можно применять для определения, обучения и запуска моделей машинного обучения, используя только браузер [17].

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

- brain.NeuralNetwork - прямая нейронная сеть с обратным распространением;

- brain.NeuralNetworkGPU - нейронная сеть обратной связи с обратным распространением,

версия для графического процессора;

- brain.recurrent.RNNTimeStep - периодическая нейронная сеть с временным шагом, или RNN;

- brain.recurrent.LSTMTimeStep - нейронная сеть с кратковременной памятью с временным

шагом, или LSTM;

- brain.recurrent.GRUTimeStep - рекуррентный блок с шагом по времени, или ГРУ;

- brain.recurrent.RNN - рекуррентная нейронная сеть, или RNN;

- brain.recurrent.LSTM - нейронная сеть с кратковременной памятью, или LSTM;

- brain.recurrent.GRU - закрытый рекуррентный блок, или ГРУ.

Выбор той или иной нейросети зависит от вида решаемой задачи. На примере решения типовой задачи студенты получают навыки работы с фреймворком.

Рассмотрим обобщенный алгоритм работы с Brainjs. Вначале выбирается тип нейросети. Затем создается нейронная сеть заданной конфигурации. Следует отметить, что в настройках по умолчанию Brainjs использует один скрытый слой с размером, пропорциональным размеру входного массива данных, а в качестве функции активации нейронов - сигмоиду. Конфигурацией можно управлять при помощи различных параметров фреймворка. Далее при помощи метода train происходит обучение полученной сети. На данном этапе на основе тренировочных примеров должен быть сгенерирован массив весовых коэффициентов всех нейронов используемой конфигурации. После обучения используется метод run для формирования запросов к искусственной нейронной сети.

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

Пример 1. Моделирование логических функций AND и OR при помощи математического нейрона Питтса и Мак-Каллока [19].

Скриншот разработанного приложения представлен на рис. 1.

Рис. 1. Моделирование логических функций AND и OR при помощи математического нейрона Питтса

и Мак-Каллока

В данном примере используется прямая нейронная сеть с обратным распространением brain.NeuralNetwork. В приложении предусмотрена возможность изменения количества нейронных слоев при помощи параметра config фреймворка. В начале эксперименты проводятся с единственным классическим нейроном Питтса и Мак-Каллока с двумя входами и одним выходом. Обучение нейронной сети осуществляется на основе таблиц истинности этих логических функций. После этапа обучения можно, меняя входные параметры нейронной сети, получить результат применения логических функций AND и OR к этим данным.

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

Пример 2. Моделирование логической функции XOR при помощи многослойной нейронной сети.

Данный пример показывает, что один математический нейрон не способен решать любые задачи. Попытка смоделировать следующую логическую функцию XOR (исключающее ИЛИ) приводит к неудаче, используемая в работе нейронная сеть после обучения выдает неправильные результаты для значений входных параметров X1 = 1 и X2 =1. Такие задачи называются линейно неразделимыми [10]. Для решения подобных задач необходимо использовать многослойный перцептрон (рис. 2).

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

Фреймворк Brairï.js

О file^//C/Usefï/fla*30BBreflb/Deskt0p/1/inde)dK)IUitm ... Û

Brain.js

Количество слоев i з нейронной сети:

2 слоя

Логическая функция XOR

____il

Обучение

XI Х2 Y

0 0 0

0 1 1

1 0 1

1 1 0

Работа нейронной сети

1-1 ПН 0.0883911

I Результат!

Рис. 2. Моделирование логической функции XOR при помощи многослойной нейронной сети Пример 3. Перцептрон для распознавания цифр.

В данной задаче реализован классический перцептрон (от англ. perception - осознание) Фрэнка Розенблатта [6], позволяющий распознавать рукописные десятичные цифры (рис. 3). Для прорисовки цифр используется графическая библиотека Canvas [7]. Canvas - элемент

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

Поле для записи чисел состоит из 784 квадратных ячеек-пикселей (28 ячеек по ширине и столько же по высоте). Количество этих ячеек-пикселей определяет количество входов используемой нейронной сети. При прорисовке цифры «перо», проходя через те или иные ячейки, активирует соответствующие входы. Для незакрашенных ячеек устанавливается нулевое значение на входе. Количество десятичных цифр определяет число выходов нейросети, в рассматриваемой конфигурации их будет десять. С количеством скрытых слоев можно экспериментировать или же брать значение, высчитанное с использованием формулы Арнольда - Колмогорова - Хехт-Нильсена [9].

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

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

Пример 4. Классификатор геометрических фигур (квадраты и окружности).

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

В га ¡п.] в

Распознование рукописных десятичных цифр

ш

Рис. 3. Перцептрон для распознавания рукописных цифр

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

Список цитируемых источников

1. Википедия: свободная энциклопедия [Электронный ресурс]. - URL: https://ru. wikipedia.org/wiki/Фреймворк (дата обращения: 14.10.2020).

2. Коменский Я.А. Дидактические принципы: отрывки из «Великой дидактики» / вступ. ст. проф. А.А. Красновского. - М.: Учпедгиз, 1940. - 88 с.

3. Новые педагогические и информационные технологии в образовании: учеб. пособие для студентов пед. вузов и системы повышения квалификации пед. кадров / Е.С. Полат, М.Ю. Бухаркина, М.В. Моисеева, А.Е. Петрова. - М.: Академия, 2009. - 147 с.

4. Открытая электронная библиотека научно-образовательных ресурсов Оренбуржья [Электронный ресурс]. - URL: http://elib.osu.ru/handle/123456789/1255 (дата обращения: 14.10.2020).

5. Пермское отделение Научного совета Российской академии наук по методологии искусственного интеллекта [Электронный ресурс]. - URL: http://www.permai.ru/ (дата обращения: 14.10.2020).

6. Розенблатт Ф. Принципы нейродинамики. Перцептроны и теория механизмов мозга. -М.: Мир, 1965. - 480 с.

7. Руководство по Canvas [Электронный ресурс]. - URL: https://developer. mozilla.org/ru/docs/Web/API/Canvas_API/Tutorial (дата обращения: 14.10.2020).

8. Указ Президента Российской Федерации от 10.10.2019 г. № 490 «О развитии искусственного интеллекта в Российской Федерации» [Электронный ресурс]. - URL: http://www. kremlin.ru/acts/bank/44731/page/1 (дата обращения: 14.10.2020).

9. Ясницкий Л.Н. Введение в искусственный интеллект: учеб. пособие для студентов вузов. - М.: Академия, 2005. - 176 с.

10. Ясницкий Л.Н. Интеллектуальные системы: учеб. - М.: Лаборатория знаний, 2016. -

221 с.

11. Ясницкий Л.Н. Искусственный интеллект. Элективный курс: учеб. пособие. - М.: БИНОМ: Лаборатория знаний, 2012. - 197 c.

12. Ясницкий Л.Н., Черепанов Ф.М. Искусственный интеллект. Элективный курс: метод. пособие. - М.: БИНОМ: Лаборатория знаний, 2011. - 216 с.

13. BrainJS [Электронный ресурс]. - URL: https://github.com/BrainJS/brain.js (дата обращения: 14.10.2020).

14. Janhuenermann/neurojs [Электронный ресурс]. - URL: https://github.com/janhuener mann/neurojs (дата обращения: 14.10.2020).

15. Neataptic [Электронный ресурс]. - URL: https://wagenaartje.github.io/neataptic/ (дата обращения: 14.10.2020).

16. Synaptic.js [Электронный ресурс]. - URL: http://caza.la/synaptic/#/ (дата обращения: 14.10.2020).

17. TensorFlow [Электронный ресурс]. - URL: https://www.tensorflow.org/js/ (дата обращения: 14.10.2020).

18. TIOBE (the software quality company) [Электронный ресурс]. - URL: https:// tiobe.com/tiobe-index/ (дата обращения: 14.10.2020).

19. Warren S. McCulloch and Walter Pitts. A logical calculus of the ideas immanent in nervous activity // Bulletin of mathematical biophysics. - 1943. - Vol. 5. - P. 115-133.