УДК 681.3.06
Д. Г. Хохлов, А. П. Кирпичников, З. Х. Захарова,
А. А. Вербицкая, Е. Е. Лоповок, А. Н. Захаров, Г. Х. Халид
ОЦЕНКА ПРОГРАММ УЧАЩИХСЯ С ИСПОЛЬЗОВАНИЕМ НЕЙРОННОЙ СЕТИ
В СИСТЕМЕ ЭЛЕКТРОННОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ
Ключевые слова: электронное обучение программированию, оценка программы учащегося, нейронная сеть.
Описывается подсистема интегрированной оценки программы учащегося в системе электронного обучения программированию. Рассмотрены критерии оценки программ с использованием нейронной сети.
Keywords: e-learning on programming, criteria of learner's program estimation, neural network.
The subsystem of the electronic learning system on programming for learner's program integral estimation is described. Criteria of program estimation using neural network are considered.
Введение
Любая система обучения должна содержать как теоретический, так и практический материал. Все дисциплины по программированию нацелены на развитие у учащихся навыков самостоятельного изучения и составления алгоритмов и их программной реализации. Поэтому в электронной системе обучения программированию (ЭСОП) [1 - 3] на основе учебника [4] в качестве основного вида практического задания учащемуся предлагается составить программу. Возникает проблема оценки программы учащегося (студента, школьника и др.).
Постановка задачи
Существуют десятки критериев оценки программ, большинство из которых с трудом поддается необходимой формализации. В соответствии со стандартом ISO 9126 качество программы определяется шестью основными характеристиками, такими как: функциональность (функциональная пригодность, корректность, защищенность), надежность (отсутствие ошибок, устойчивость, восстанавливаемость), практичность (удобство использования, понятность, изучаемость),
эффективность (по времени, по ресурсам), сопровождаемость (удобство анализа, изменяемость, тестируемость) и мобильность (переносимость) [1-4].
Критерии оценки программы учащегося в ЭСОП включают: время решения задачи и составления программы, сложность программы, уровень комментирования программы, оценку программы по М. Холстеду [5] и количество успешно пройденных программой тестов.
Время решения задач и составления программ показывает уровень подготовки учащегося: свободно ли он владеет материалом, насколько быстро может находить решения и обладает ли достаточными знаниями. Чем быстрее он справляется с заданием, тем лучше подготовлен. С другой стороны, если данный критерий принимает слишком маленькое значение (например, 10 - 15 минут), но при этом задача была трудоемкой, и программа получилась сложной, можно сделать вывод, что учащийся не самостоятельно выполнял работу.
Сложность программы с точки зрения ее тестирования оценивается на основе графического
представления программы, предложенного Мак-Кейбом. Здесь оценивается цикломатическая сложность графа программы [1-3]. Цикломатическая сложность является наиболее известной метрикой, используемой для оценки сложности программ. Цикломатическое число Мак-Кейба V (О) определяется по формуле:
V @)=е-п + 2/7, где е - количество дуг, п - количество вершин, р -число компонент связности.
Рис. 1 - Пример сильно связного графа
Под числом компонент связности понимается количество дуг, которые надо добавить для преобразования графа в сильно связный граф. Сильно связным называется такой граф, любые две вершины которого взаимно достижимы. Пример сильно связного графа приведен на рис. 1.
Граф корректной программы не имеет участков, недостижимых от точки входа, и висячих точек входа и выхода. Для таких
программ р = 1, и поэтому формула для расчета цикломатической сложности приобретает вид:
1/р)=е-/7 + 2
Данный граф иллюстрирует порядок выполнения программы. Программа начинает выполняться с начального (верхнего на рисунке) узла. Далее следуют циклы (ниже начального узла идут две группы по три узла). Выход из цикла происходит через условный оператор, который является нижним узлом группы. Конечный выход из программы находится в нижнем узле графа.
Рассчитаем цикломатическое число для представленного на рисунке графа. Для него е = 10, п = 8 и р = 1, следовательно, цикломатическая сложность программы, рассчитанная по второму варианту, равна:
10 - 8 + 1 = 3.
Для цикломатического числа принято выделять следующие границы:
• от 0 до 10 - простая программа, т.е. при ее тестировании можно охватить все возможные ситуации и, соответственно, эта программа в итоге не содержит ошибок;
• от 10 до 20 - умеренная программа;
• от 20 до 50 - сложная программа;
• более 50 - не тестируемый код, т.е. программа может содержать множество ошибок, которые невозможно обнаружить при тестировании.
Для оценки уровня комментирования программ используется методика, разработанная М. Дж. Рисом. Данная методика ориентирована на оценивание стиля программирования в целом. В ней учитываются такие параметры, вычисляемые по тексту программы, как длина программы, процент комментариев и пустых символов, длина и содержательность имен и т. п. [1].
Результаты
В разработанной ЭСОП была усовершенствована методика М. Дж. Риса для оценки уровня комментирования программы. В ней обращается внимание на наличие комментариев, представляющих собой вводную часть, поясняющих назначение переменных, используемых в программе. Также учитывается отделение комментариев от основного текста программы.
Уровень комментирования программ оценивается в процентном соотношении. Вес оценки в различных ситуациях может отличаться. Как правило, он определяется опросом экспертов.
Для оценки размера программы используется метрическая теория, предложенная М. Холстедом [5].
Согласно данной теории, свойства любого выражения алгоритма или программы, которые могут быть вычислены или измерены, включают следующие измеряемые характеристики:
1 - число различных операторов программы, включая символы-разделители, имена процедур и знаки операций (длина словаря операторов);
2 - число различных операндов программы (длина словаря операндов);
1 - общее число всех операторов в программе;
Л/2 - общее число всех операндов в программе.
Используя данные характеристики, значения которых определяются во время анализа алгоритмов и программ, М. Холстед вводит понятия длины словаря программы:
п = щ + п2
и длины реализации программы: N = Щ + N2
Выполнив ряд математических
преобразований, М. Холстед выводит формулу для измерения теоретической длины программы:
н = п,109 ^ >/721од р2 )
При выводе он исходит из основных концепций теории информации, согласно которым частота использования операторов и операндов в программе пропорциональна двоичному логарифму количества их типов.
М. Холстед отмечает, что длина корректно составленной программы может отличаться от теоретической длины программы не более чем на 10%. Однако на практике довольно часто значения величин и существенно различаются, и указанное соотношение не выполняется.
Таким образом, измеряя 1, 2 , 1 , 2 и
сопоставляя значения и для некоторой программы, можно оценить ее размер.
Для пояснения критерия, учитывающего количество успешно пройденных тестов, необходимо рассказать о том, что подразумевается под тестами, и какая система тестирования имеется в виду.
В системе тестирования программ учащихся по курсу программирования используется
тестирование по стратегии черного ящика. Предварительно создаются тестовые наборы, на которых будет проверяться программа. Данная стратегия проверяет только ее поведение, правильность выходных данных. Внутреннее устройство программы в этом случае не рассматривается.
Система тестирования программ учащихся содержит набор чекеров - функций проверки правильности написанных учащимися программ [1, 2, 4, 6].
Для запуска проверки необходимо подготовить исходные материалы, к которым относятся паспорта задач. В паспорте указывается код задачи, название запускаемого чекера, количество тестов, баллы, начисляемые за их правильное выполнение, заголовок и текст задачи. Далее следуют тесты, которые состоят из двух строк: входные и выходные данные.
Чекер сравнивает эталонные выходные данные с результатами, которые получились после
выполнения проверяемой программы. После этого система тестирования подсчитывает итоговые баллы.
Таким образом, в разработанной подсистеме ЭСОП подсчитывается количество случаев, когда эталонные ответы совпали с действительными. При большем количестве совпадений учащийся получит более высокую оценку.
Для выяснения, при каких значениях критериев нужно выставлять ту или иную оценку, был проведен регрессионный анализ, который подробно рассматривается в статье [6].
При разработке подсистемы ЭСОП для оценки программ учащихся использован также подход, основанный на обучении нейронной сети [7, 8].
В данном случае обучение происходит по схеме обучения с учителем, когда процедуре обучения передаются два параметра: входные значения сети
(х1, х2, х3, х4, х5) - значения критериев оцениваемой программы, и ожидаемый выход (у) -предполагаемая оценка. Далее рассчитывается реальное выходное значение (у), которое получается, если на входы сети подать заданные (Х1, X2, х3, х4, х5) . В результате можно рассчитать общую ошибку работы сети:
Е = ±07-у У
Ошибка Е при фиксированных входных значениях
( х1 , х2 , х3 , х4 , х5 ) является функцией многих
переменных, которая зависит от весовых коэффициентов синаптических связей сети. Для того чтобы уменьшить ошибку, можно воспользоваться градиентными методами оптимизации [7].
Поставленная задача решается в два этапа:
1. Прямой проход;
2. Обратный проход.
На этапе прямого прохода рассчитываются отклики каждого слоя сети, начиная с первого -входного, и заканчивая последним - выходным слоем.
Первоначально необходимо вычислить
индуцированные потенциалы нейронов:
и ^ .,¡-1
и.
,1-1
где у! - выходной сигнал нейрона 1,
1
расположенного в предыдущем слое, Ч .. - вес связи
нейрона ] слоя 1 с нейроном 1 слоя 1 - 1.
Вес связи нейрона генерируется с помощью датчика случайных чисел со средним значением 0.
После этого необходимо рассчитать функциональные сигналы сети:
= У,
где - функция активации нейрона ] . Для удобства
принято считать, что, если нейрон находится в первом
скрытом слое сети, тогда у0 = х ■.
В данной работе используется сигмоидальная функция активации. Она записывается следующим образом:
у = ^ {/)=-1-
где а > 0. Производная этой функции представляется в виде:
/'(и) = ау (1 - у) Соответственно, для расчета градиентов в узлах сети используется формула:
, а (у - у'- у,\-у')
81 = ^\-у'у Е
1
/+1,.,/+1
Н/
Верхняя часть применяется для нейронов ) выходного слоя Ь, а нижняя - для нейронов ) скрытого слоя 1. После этого вычисляется сигнал ошибки сети:
е] = У] - У"
На этапе обратного прохода рассчитывается ошибка для каждого слоя сети, начиная с последнего (выходного) слоя и заканчивая первым слоем сети:
еи)
8 = Ь (/; Е8
] ]
1+\.../+1 к Пк
к
'к]
Верхняя часть используется для нейрона } выходного слоя Ь, а нижняя - для нейрона ] скрытого слоя 1.
После расчета ошибок производится коррекция весов для того, чтобы уменьшить величину ошибки Е:
и^ с+1)= )+ом'л с-1 >ф с :
где 1 - номер итерации, а е [0,1) и ф е (0,1) -параметры, влияющие на скорость градиентного спуска.
Чем меньше параметр скорости ф, тем меньше корректировка синаптических весов,
осуществляемая на каждой итерации, и тем более
гладкой будет траектория изменения величин Ч] .
Однако это улучшение происходит за счет замедления скорости обучения. С другой стороны, если увеличить параметр ф для повышения
скорости обучения, то результирующие большие изменения синаптических весов могут привести систему в неустойчивое состояние. Поэтому с целью повышения скорости обучения сети вводится дополнительный параметр момента а, который ведет к ускорению обучения, если веса изменяются в одном направлении в течение нескольких итераций, и вносит стабилизирующий эффект, если веса сети менялись в разных направлениях.
При обучении нейронной сети с использованием метода обратного
распространения ошибки наиболее часто встает вопрос о том, когда необходимо остановить процесс обучения. Существует довольно много различных критериев его остановки. Один из наиболее часто встречающихся критериев заключается в достижении такого состояния, когда
сеть становится способна обобщать разобранные ранее примеры, проецируя полученные выводы и результаты на другие, новые, незнакомые примеры.
Для того чтобы выяснить, достигла ли сеть желаемого состояния, можно использовать стандартный статистический подход, который называется перекрестной проверкой. Этот подход предполагает разбиение данных, имеющихся в наличии, на два множества. Сначала они случайным образом разбиваются на обучающее множество (также называемое рабочим множеством) и тестовое множество. Обучающее множество можно, в свою очередь, разбить на два подмножества: оценочное подмножество и проверочное подмножество.
В этом случае нейронную сеть обучают на оценочном подмножестве: подают на входы примеры этого множества и настраивают веса так, чтобы получить соответствующие желаемые выходные результаты сети. Всегда можно подобрать такую сеть, после обучения которой ошибки на оценочном множестве станут равными нулю. Поэтому цель обучения заключается не в том, чтобы получить минимальную величину ошибок на оценочном множестве, а в том, чтобы получить максимально возможную предсказательную способность сети, т.е. получить минимум ошибок на незнакомых примерах.
Иногда в ходе обучения нейронную сеть слишком хорошо подгоняют к обучающим данным, и она начинает терять способность к обобщению. Такое явление называют переобучением нейронной сети.
Чтобы избежать переобучения, сеть постоянно проверяют на качество обобщения, предъявляя ей незнакомые примеры из проверочного подмножества. Если средняя ошибка сети на примерах проверочного множества во время обучения снижается, то следует продолжать обучение. Если ошибка на оценочном множестве по-прежнему убывает, в то время как на проверочном множестве она начала возрастать, то, вероятно, сеть начала «запоминать» правильные ответы оценочного множества вместо поиска закономерностей в данных. В таком случае пора останавливать обучение сети.
Так как проверочное множество также участвовало в процедуре обучения, в результате может оказаться, что сеть была переобучена и на проверочном множестве. Для того чтобы застраховаться от подобной ошибки, используют третье, тестовое множество, которое не участвовало в процедуре обучения. На этом множестве окончательно проверяют качество работы нейронной сети.
На основании изложенных теоретических заключений была разработана подсистема ЭСОП для формирования оценок учащихся. Форма, на которой формируется оценка, представлена на рис. 2.
В верхней части формы представлен группирующий элемент, который содержит в себе поля для указания и отображения параметров, требуемых для обучения нейронной сети. Здесь можно устанавливать максимально допустимую ошибку обучения. Наблюдая за значением полученной ошибки, можно обучать нейронную сеть до тех пор, пока результат не станет ожидаемым.
Рис. 2 - Результат формирования оценки
Ниже располагается группирующий элемент, в котором находятся поля для формирования оценки.
Сначала пользователю предлагается выбрать идентификатор программы, для которой требуется выставить оценку. Значения характеристик программ заранее заносятся в базу данных. После выбора идентификатора на форму загружаются значения критериев данной программы и оценка, которую поставил бы эксперт. После нажатия на кнопку «Выставить оценку» на форме появляется оценка, сформированная обученной нейронной сетью. Она может отличаться от эталонной оценки.
Выводы
Таким образом при проектировании подсистемы ЭСОП для формирования оценки программ учащихся был произведен анализ критериев и характеристик, влияющих на оценку. В результате анализа была создана подсистема для выставления оценок, в основе которой лежит принцип обучения нейронной сети.
Литература
1. Хохлов Д. Г. Электронное обучение программированию: проблематика и подходы // Международный электронный журнал "Образовательные технологии и общество (Educational Technology & Society)" - 2012. - V.15. - №1. -С. 567 - 593. - ISSN 1436-4522. URL: http://ifets.ieee.org/russian/periodical/journal.html
2. Хохлов Д. Г., Захарова З. Х., Захаров А. Н. Оценка уровня подготовки в системе электронного обучения программированию // Международный электронный журнал "Образовательные технологии и общество (Educational Technology & Society)" - 2012. - V.15. - №1. -С. 537 - 554. - ISSN 1436-4522. URL: http://ifets.ieee.org/russian/periodical/journal.html
3. Хохлов Д. Г., Захаров А. Н., Захарова З. Х., Подавалов А. А. Оценка качества студенческих программ при электронном обучении программированию // Вестник КГТУ им. А. Н. Туполева, 2011. № 4. С. 153 - 156.
4. Хохлов Д. Г. Методы программирования на языке С: практикум: в 2 ч. - М.: БИНОМ. Лаборатория знаний, 2014. Ч. 1. 335 с., Ч. 2. 376 с.
5. Холстед М. Х. Начала науки о программах /Пер. с англ. В. М. Юфы. - М.: Финансы и статистика, 1981. 128 с.
6. Хохлов Д. Г., Кирпичников А. П., Захарова З. Х., Лоповок Е. Е., Вербицкая А. А., Захаров А. Н., Халид Г. Х. Оценка программ учащихся с использованием нечеткого логического вывода в системе электронного обучения программированию // Вестн. Казан. технол. ун-та. - 2014. - Т. 17, № 15. С. 334 - 337.
7. Саймон Хайкин Нейронные сети: полный курс, 2-ое издание. - М.: Издательский дом «Вильямс», 2006. 1104 с.
8. Захаров А. Н., Якимов И. М. Выбор структуры нейронных сетей, используемых для временного прогнозирования деятельности предприятия // XIV Туполевские чтения: Международная молодежная научная конференция, Казань, 10-11 ноября 2006 года: Материалы конференции. Том 1'^зд-во Казан. гос. техн. ун-тас., С. 113 - 115.
© Д. Г. Хохлов - канд. техн. наук, доцент кафедры автоматизированных систем обработки информации и управления КНИТУ им А.Н.Туполева, [email protected]; А. П. Кирпичников - д-р физ.-мат. наук, зав. кафедрой интеллектуальных систем и управления информационными ресурсами КНИТУ, [email protected]; З. Х. Захарова - доцент кафедры автоматизированных систем обработки информации и управления КНИТУ им А.Н.Туполева, [email protected]; А. А. Вербицкая - магистрант кафедры автоматизированных систем обработки информации и управления КНИТУ им А.Н.Туполева, [email protected]; Е. Е. Лоповок - магистрант кафедры автоматизированных систем обработки информации и управления КНИТУ им А.Н.Туполева, [email protected]; А. Н. Захаров - аспирант кафедры автоматизированных систем обработки информации и управления КНИТУ им А.Н.Туполева, [email protected]; Г. Х Халид - аспирант кафедры автоматизированных систем обработки информации и управления КНИТУ им А.Н.Туполева, [email protected].
© D. G. Khokhlov - PhD, Associate Professor of the Department of Automated Information Processing Systems & Control, KNRTU named after A.N. Tupolev, [email protected]; А.Р. Kirpichnikov - Dr. Sci, Head of the Department of Intelligent Systems & Information Systems Control, KNRTU, e-mail: [email protected]; Z. H. Zakharova - Associate Professor of the Department of Automated Information Processing Systems & Control, KNRTU named after A.N. Tupolev, [email protected]; A. A. Verbitskaya — Master Student of the Department of Automated Information Processing Systems & Control, KNRTU named after A.N. Tupolev, e-mail: [email protected]; E. E. Lopovok -- Master Student of the Department of Automated Information Processing Systems & Control, KNRTU named after A.N. Tupolev, [email protected]; A. N. Zakharov -- Graduate Student of the Department of Automated Information Processing Systems & Control, KNRTU named after A.N. Tupolev, e-mail: [email protected]; G. H. Khalid — Graduate Student of the Department of Automated Information Processing Systems & Control, KNRTU named after A.N. Tupolev, e-mail: [email protected].