УДК 681.5; 621.398; 681.3
ПОСТРОЕНИЕ ОБУЧАЮЩЕГО МОДУЛЯ ЭКСПЕРТНОЙ СИСТЕМЫ ОПРЕДЕЛЕНИЯ ПРИНАДЛЕЖНОСТИ СУЩНОСТИ К ОПРЕДЕЛЁННОМУ
КЛАССУ
© 2017 И. Ю. Пикалов1, В. Б. Тарасюк2
1 канд. пед. наук, доцент, доцент кафедры компьютерных технологий и информатизации образования e-mail: pikalovakursksu.ru 2 канд. техн. наук, доцент, доцент кафедры компьютерных технологий и информатизации образования e-mail: tarasuk.vladimira,mail.ru
Курский государственный университет
В работе приводится пошаговый алгоритм построения обучающего модуля экспертной системы определения принадлежности сущности к определённому классу.
Ключевые слова: экспертная система, база знаний, обучение.
В настоящее время специалистам разных областей приходится решать задачи, с которыми они еще не сталкивались, и принимать решения, от которых зависит результат реализации проекта или дальнейшее развитие предприятия. Особое значение в такой ситуации приобретает использование экспертных систем, способных заменить человека-эксперта при решении широкого круга задач.
Под экспертной системой будем понимать программу (или группу программ) для компьютера, которая, используя заложенные в неё знания, предлагает решение поставленной задачи или вырабатывает рекомендации по её решению.
В работе Дж. Джарратано и Г. Райли [2007] описаны преимущества экспертных систем по сравнению с использованием человека-эксперта, среди которых можно выделить:
• уменьшение издержек, связанное с привлечением эксперта для решения задач;
• использование экспертных систем в таких вариантах сред или условиях, которые невозможны или опасны для человека;
• оперирование знаниями нескольких экспертов;
• более быстрое реагирование и готовность к работе в любое время, что позволяет использовать их в режиме реального времени.
Экспертная система способна работать в двух режимах: режиме ввода знаний экспертом и режиме решения задач или выдачи консультаций по их решению [Экспертные системы ... 1990].
В режиме ввода знаний с программой работает эксперт, который обучает систему (формирует базу знаний системы). База знаний системы - это база, содержащая знания эксперта по определённому предмету, внесенные в компьютер, и механизм по их интерпретации. !
В режиме решения задач посредством диалога с системой пользователь получает решение интересующей его задачи полностью или рекомендации от системы, касающиеся его дальнейших действий по решению данной задачи.
В работе К. Нейлора дано описание экспертной системы, способной угадывать один из двух объектов по вводимым в систему параметрам объекта [Нейлор 1991]. Мы предлагаем усовершенствовать описанную там систему следующим образом: дать возможность экспертной системе определять принадлежность сущности к одному из нескольких введенных в базу знаний классов. Благодаря такому улучшению система станет более универсальной, так как позволит выбирать не один из двух, а один из нескольких введенных в систему классов.
Предлагаемый алгоритм построения обучающего модуля экспертной системы определения принадлежности сущности к определённому классу будет обладать рядом преимуществ перед существующими аналогами.
В исследованиях [Джарратано, Райли 2007; Пустынникова 2001; Уотермен 1989] указано, что в режиме обучения эксперт общается с экспертной системой при посредничестве инженера по знаниям (инженера-когнитолога, аналитика). В системе, построенной по предлагаемому в нашей работе алгоритму, в режиме обучения может работать непосредственно эксперт. Это связано с тем, что база знаний системы пополняется по хорошо описанному алгоритму и не предполагает наличия знаний, предъявляемых экспертной системой к организации знаний. Во многих системах аналитик загружает полученные от эксперта знания в соответствии с определенными правилами [Уотермен 1989] пополнения базы знаний.
Еще одним достоинством предлагаемого нами подхода является то, что, используя приведенный в работе алгоритм построения обучающего модуля экспертной системы определения принадлежности сущности к определённому классу, можно создавать экспертные системы широкого круга применения на любом языке программирования высокого уровня.
Приведем пошаговую инструкцию работы обучающего модуля экспертной системы определения принадлежности сущности к определённому классу.
Первым шагом является указание количества сущностей (переменная n), которые система будет способна распознавать, и их описание. Для каждой сущности i будет нужно указать её имя (name_entityi), числовой идентификатор (idi) и атрибут совпадения (defined,i), который показывает, совпало рассчитанное значение идентификатора сущности с имеющимся в базе или нет. Когда система ещё не обучена, значения идентификаторов нужно установить в начальное неопределенное значение -1, а значение атрибута definedi - в 0.
Вторым шагом будет определение количества атрибутов (переменная colAttr), на основании которых система будет распознавать объекты, их имена, и заполнение значений атрибутов для каждой из указанных сущностей. Если сущность содержит конкретный атрибут, то его значение равно 1, если не содержит, то его значение равно 0. Таким образом, каждой сущности i будет поставлен в соответствие вектор набора атрибутов Vi, размер которого равен colAttr, а значения будут 0 или 1 в зависимости от отсутствия или наличия данного атрибута.
Третий шаг состоит в инициализации вектора поиска решения R нулевыми значениями. Размер данного вектора должен быть равен переменной colAttr.
Четвертым шагом будет обучение системы, которое состоит максимально из n+1 циклов обучения. В каждом цикле обучения выбирается первая из сущностей, определению которой будет обучаться система, определяется её значение idi согласно приведенному алгоритму, затем вторая и так далее, пока в цикле не будут рассмотрены все сущности. Если в цикле обучения вычисленные значения idi совпадут с уже имеющимися значениями для всех сущностей, то система считается обученной, и циклы обучения будут закончены. Если в цикле обучения хотя бы одно вычисленное
Пикалов И. Ю., Тарасюк В. Б. Построение обучающего модуля экспертной системы определения принадлежности сущности к определенному классу
значения idi не совпадет с уже имеющимся значениями, то потребуется провести ещё один цикл обучения.
Каждый цикл обучения содержит следующую последовательность действий:
1. Для сущности, с которой система работает в данный момент времени, вычисляется значение переменной D, которая будет определять идентификатор распознаваемой сущности:
и =2!!г1!""г * щ. (1)
2. Если система еще не проходила ни одного сеанса обучения, то нужно:
- провести её первое обучение, при котором меняется значение вектора R согласно формуле (2):
Щ = Щ + У! 0=1, 2,..., евШК); (2)
- вычислить значение D;
- полученное значение D присвоить idi соответствующей сущности;
- взять следующую сущность и осуществить переход к п.1 данного шага.
Если система проходила хотя бы один сеанс обучения, то происходит сравнение полученного значения переменной D с идентификаторами имеющихся в базе сущностей.
Если значение переменной D не совпадает ни с одним из значений идентификаторов сущности из базы знаний, то оно присваивается идентификатору сущности, с которой работают в данном сеансе обучения (idi=D). После этого берётся следующая сущность и осуществляется переход к п.1 данного шага.
Если значение переменной D совпадает со значением идентификатора соответствующей сущности из базы знаний, то система помечает данную сущность как распознанную (устанавливает значение атрибута definedi в 1), берёт следующую сущность и переходит к п.1 данного шага.
Если значение переменной D совпадает со значением идентификатора другой сущности из базы знаний, то нужно произвести переобучение системы (изменить значение вектора R) и перейти опять к п.1, но с обучением распознавания не следующей, а текущей сущности.
Последовательность действий внутри цикла назовём сеансом обучения. Каждый цикл обучения содержит максимально п2 сеансов обучения.
Рассмотрим работу системы на примере распознавания сущностей, фиксируемых какой-либо системой наблюдения. Допустим, мы хотим научить систему распознавать одну из следующих сущностей: человек, собака или машина.
Первый шаг
Количество сущностей в базе знаний - 3 (n=3).
№ п/п Имя сущности (name_entity) Идентификатор (id) Атрибут (defined)
1 Человек -1 0
2 Собака -1 0
3 Машина -1 0
name_entity = {Человек, Собака, Машина} id = {-1, -1, -1} defined = {0, 0, 0} Второй шаг
Выделим 6 атрибутов сущностей (colAttr=6) и заполним их значениями для каждой сущности.
№ п/п Имя атрибута (пате айг) Человек Собака Автомобиль
1 Двуногое 1 0 0
2 Колеса 0 0 1
3 Четырехногое 0 1 0
4 Голова 1 1 0
5 Хвост 0 1 0
6 Выхлопная труба 0 0 1
паше_айг={ Двуногое, Колеса, Четырыхногое, Голова, Хвост, Выхлопная труба}
Учел ={1, 0, 0, 1, 0, 0}
Усоб ={0, 0, 1, 1, 1, 0}
Уавто ={0, 1, 0, 0, 0, 1}
Третий шаг
Я={0, 0, 0, 0, 0, 0}
Четвертый шаг. Первый цикл обучения
1-й сеанс обучения: Обучаем систему распознаванию Человека.
Так как это первый сеанс обучения, то по формуле (2) переопределяем значение вектора Я и меняем 1ёчел:
Я={1, 0, 0, 1, 0, 0}, 1ёчел=2.
2-й сеанс обучения: Обучаем систему распознаванию Собаки.
0=0*1+0*0+1*0+1*1+1*0+0*0=1
Так как Б не совпадает ни с одним из значений идентификаторов сущности (¡ё={2, -1, -1}), то меняем значение 1ёсоб. Теперь ¡ё={2, 1, -1}.
3-й сеанс обучения: Обучаем систему распознаванию Автомобиля.
0=0*0+0*1+1*0+1*0+1*0+0*1=0
Так как Б не совпадает ни с одним из значений идентификаторов сущности (¡ё={2, 1, -1}), то меняем значение 1ёавто. Теперь ¡ё={2, 1, 0}.
В данном примере после окончания первого цикла обучения система будет уже полностью обучена, и второй цикл обучения это покажет.
Количество циклов обучения может меняться в зависимости от того, с какой сущности будет начинаться цикл обучения и в какой последовательности сущности будут рассматриваться. Так, в данном примере возможно шесть вариантов обучения. В четырёх вариантах для обучения требуется два цикла (первый цикл - непосредственно обучение, второй цикл - подтверждающий, что система обучена полностью) и каждый цикл содержит по три сеанса обучения. Один из вариантов (последовательность обучения: Машина, Человек, Собака) включает три цикла обучения, первый из которых содержит четыре сеанса обучения, второй - три сеанса обучения, третий цикл является подтверждающим. И один из вариантов (Машина, Собака, Человек) включает пять циклов обучения, первый и второй содержат по пять сеансов обучения, третий - три сеанса обучения, а четвертый цикл является подтверждающим.
Таким образом, мы предлагаем метод построения обучающего модуля экспертной системы определения принадлежности сущности к определённому классу, который реализован в виде алгоритмической последовательности действий, содержащей простые математические отношения, и позволяет создавать экспертные системы классическими языками и системами программирования.
Библиографический список
Джарратано Дж., Райли Г. Экспертные системы: принципы разработки и программирование. 4-е изд.: пер. с англ. М.: ООО «И. Д. Вильямс», 2007. 1152 с.
Пикалов И. Ю., Тарасюк В. Б. Построение обучающего модуля экспертной системы определения принадлежности сущности к определенному классу
Нейлор К. Как построить свою экспертную систему: пер. с англ. М.: Энергоатомиздат, 1991. 286 с.
Пустынникова И.Н. Технология использования экспертных систем для диагностики знаний и умений // Educational Technology & Society. 2001. № 4(4). С. 77101.
Уотермен Д. Руководство по экспертным системам: пер. с англ. М.: Мир, 1989.
388 с.
Экспертные системы для персональных компьютеров: методы, средства, реализации: справ. пособие / В.С. Крисевич, Л. А. Кузьмич, А.М. Шиф и др. Мн.: Выш. шк., 1990. 197 с.