Как известно, способность к обучению является неотъемлемым свойством интеллекта. Эффективность экспертной системы можно значительно повысить, если предусмотреть в ней средства, контролирующие ее работу и в случае необходимости позволяющие изменить базу знаний. Эти средства можно сделать полностью автоматическими. Так, многие промышленные робототехнические системы осуществляют последовательности операций первый раз под управлением человека-оператора, а в дальнейшем управляют процессом сами. Аналогично, робот может быть снабжен сенсорными устройствами, позволяющими ему "чувствовать" внешнюю среду и реагировать на нее. Например, в простейшем случае робот, обладая способностями к осязанию, может находить объекты и определять их местоположение в некоторой области. Такой робот будет в состоянии также обнаружить появление новых и отсутствие старых объектов.
В тех областях, где экспертные системы используются либо для непосредственного принятия решений, либо как советчики, обратная связь, позволяющая определить, правильно ли было принято решение, должна быть установлена с помощью человека. Описанная выше система, предназначенная для прогнозирования результатов футбольных матчей, не будет знать о правильности своего предсказания до тех пор, пока мы не сообщили ей истинный результат. Если же такого сообщения нет, весьма возможно, что система будет постоянно делать одни и те же ошибки, и тогда ее трудно будет назвать интеллектуальной. Для того чтобы избежать этого, можно выбрать один из двух путей. Остановимся сначала на первом пути. Предположим, что система в состоянии сообщать, какие факторы и как повлияли на ее решение. Тогда должны быть предусмотрены средства, позволяющие пользователю немного изменять правила для того, чтобы сделать менее вероятными неправильные прогнозы. Второй путь в принципе может дать больший эффект, но его труднее реализовать. Он заключается в наделении системы возможностями самой изменять собственные правила, исходя из результатов предыдущей работы. Начнем с первого, более легкого пути. Перед тем как использовать программу 6.10, удалите из программы 6.9 отношения result, choose и explain. Советуем Вам до этого скопировать программу 6.9 для того, чтобы сохранить ее для дальнейшей работы.
После удаления у Вас останется текст программы 6.8 с усовершенствованным вариантом отношения ave, в котором предусматривается перед округлением умножать средний голевой баланс на десять. Для того чтобы полностью сформировать программу, добавьте к этому тексту отношения, приведенные ниже.
Программа 6.10
X feast (YZ) if
(next X) is-told and
Y feast 1Z
X fcastl Y if
(either Z result x and X plus Y or (edit which term y) is-told and у edit) X result Y if
game and
Z points x and
у score z and
SUM (Z у X) and
SUM (x z Y) and
((PP home XY away))? X points Y if
Z isall (Z: h plus (x Z)) and
у isall (y: a plus (z y)) and
Z tot X and
у tot Y - h plus (12∅) if
h form (X Y Z x) and
SUM(YZy)and
у LESS X h plus (2 1∅) if
h form (X Y Z x) and
Z LESS X h plus (3 2∅) if
h form (XY∅|Z)
h plus (4 1∅) if
h form (X ∅ Y)
h plus (5 1∅) if
h form (XYZxyz) and
Z LESS X
h plus (6 2∅) if
h form (X Y Z x у | z) and
TIMES (2 у X1) and
X1 LESS x
h plus (7 2∅) if
h form (XYZ|x) and
Y TIMES (2 Z y) and
у LESS X
a plus (8 4∅) if
a form(XYZ|x)and
SUM (Y Z y) and
у LESS X
a plus (9 1∅) if
a form (XYZ|x) and
Z LESS X
a plus (1∅ 2∅) if
a FORM(XY∅|Z)
a plus (11 1∅) if
A form(X∅|Y)
a plus (12 1∅) if
a form (XYZxyz) and
у LESS x
a plus (13 2∅) if
a form (X Y Z x у | z) and
TIMES (2 у X1) and
X1 LESS x
a plus (14 2∅) if
a form (X Y Z x) and
TIMES (2 Z y) and
у LESS X
Полученная программа позволит Вам определить, какое именно правило отношения plus было использовано в процессе работы, и, кроме того, даст возможность в случае необходимости изменить это правило. Заметим, что отношения plus и points были модифицированы. Так, вторым аргументом всех утверждений отношения plus является теперь двухэлементный список; его первый элемент служит идентификатором используемого правила, а второй элемент является вторым аргументом старого отношения plus, умноженным на десять. Семь утверждений отношения plus используются для команд хозяев, столько же для гостей.
Отношение points преобразовано для того, чтобы привести его в соответствие c отношением plus.
Число очков, присуждаемых команде при использовании правил, было увеличено для того, чтобы расширить масштабы поправок, которые будут заключаться в увеличении или уменьшении числа добавляемых очков в зависимости от результата прогноза. Отношение feast позволяет пользователю взять уже сыгранный матч, получить прогноз и изменить, принимая во внимание истинный результат матча, те правила отношения plus, которые его не устраивают. Отметим, что пользователю предоставляется возможность даже в случае неверного прогноза ничего не менять, ведь он может решить, что результат настолько неожидан, что никакая система в принципе не в состоянии его предсказать. В любом случае изменениям подвергаются только те правила, которые принимали участие в формировании прогноза. Было решено добавлять одно очко к каждому правилу, использованному в процессе выработки прогноза, который оказался верным, и отбирать очко при неудачном результате прогноза.
Читатели, если захотят, могут выработать свою процедуру поощрения и наказания. Модификация правила производится после ввода пользователем номера предложения в ответ на запрос системы. В данном случае модификация представляет собой довольно трудоемкую операцию, но кажется, что перед тем, как сделать процесс изменений полностью автоматическим, полезно все-таки еще раз проконтролировать работу системы:
all (x у z: х feast (у z)
[определить все (х у z: x прогноз (у z)) ]
next X ? ans 1
[следующий X ? ответ 1 ]
home form (X) and away form (Y) ? ans (4 11 9 6) (1 ∅ 5 3 12)
[команда хозяев (Х) и команда гостей (Y) ответ (4 1 19 6) (1∅ 5 3 12)]
home 95 25 away
[хозяева 95 25 гости ]
1 h (1 2∅)
1 h (2 1∅)
1 h (5 1∅)
1 h (7 2∅)
1 a (11 1∅)
edit which term X ? ans plus 1
[какое правило изменяется (X) ? ответ plus 1 ]
1 (h plus (1 20) if h form (X Y Z (x) и SUM (YZ у) и SUM
(Y Z y) and у LESS X)*
[1 (h plus (1 20) if h form (X Y Z) x) и SUM (Y Z у) и у LESS X)]
edit which term X ? ans plus 2
[какое правило изменяется X ? ответ plus 2]
edit which term X ? no
[какое правило изменяется X ? нет]
next X ? ans 2
[следующий X ? ответ 2]
home form (X) and away form (Y) ? ans (4 1 1 13 5) (0 1 5 7 17)
[команда хозяев (X) и команда гостей (Y) ? ответ (4 1 1 13 5) (015717)]
home 134 20 away
[хозяева 134 20 гости]
2 h (1 21)
2 h (2 11)
2 h (5 11)
2 h (6 20)
2 h (7 21)
и т. д.
* (После этого пользователь модифицирует указанное правило.- Прим. пер.)
После выдачи сообщения
edit which term x ?
пользователь может выбрать для редактирования любое предложение и в зависимости от результатов прогноза либо увеличить, либо уменьшить число прибавляемых очков. После большего числа испытаний правила претерпевают ряд изменений и принимают вид, увеличивающий вероятность правильного прогноза. Коррекция правил - очень долгий и трудоемкий процесс и нецелесообразно его полностью перекладывать на пользователя. Рассмотрим, каким образом можно автоматизировать некоторые этапы этого процесса.
Поскольку на небольших ЭВМ возможности хранения данных ограничены, эффективность реализации на них такого рода систем невысока. Для таких систем необходимы компьютеры с жесткими дисками и хорошие программы управления файлами. Это позволит хранить данные о результатах матчей, проведенных в течение длительного времени. Тогда можно будет использовать программы, сопоставляющие правильность прогноза с истинным результатом и в случае необходимости вносящие изменения в свои собственные правила. Способность программ корректировать самих себя - очень мощное средство Пролога. Эффективно это средство можно использовать только на больших машинах.
Но вернемся к нашей системе. Процесс ее обучения можно регулировать автоматически. Приводимая ниже программа 6.11 осуществляет коррекцию своих собственных правил, опираясь на результат прогноза. Но пользователям все же необходимо вводить данные о командах и информировать систему о результате каждого прогноза. Для того чтобы упростить систему и сэкономить память, было решено не проводить вычисление среднего голевого баланса и, кроме того, сократить количество правил, предназначенных для начисления очков, с восьми до четырех: два - для команды хозяев и два - для команды гостей. Вместо среднего голевого баланса теперь подсчитывается, с одной стороны, сумма мячей, забитых хозяевами и пропущенных гостями, а с другой, - сумма мячей, пропущенных хозяевами и забитых гостями. Полученные числа участвуют в формировании показателей шансов команд во встрече друг е другом.
Программа 6.11
() tot ∅
(X Y) tot Z if
Y tot x and
SUM(XxZ) feast if
(home form X and away form Y) is-told and
form KILL and
p KILL and
X result Y and
(Right or wrong 1 /-1 Z) is-told and
x p y and
x amend (y Z)
X result Y if
(h form X) add and
(a form Y) add and
Z points x and
(a p ∅) add and
((PP home Z x away)) ? and
/
X amend (Y Z) if
(X factor (Y x)) delete and
SUM(Zxy)and
(X factor (Y y)) add and
/
X points Y if
Z isall (Z: h plus (x Z)) and
у isall (y: a plus (z y)) and
Z tot X1 and
у tot Y1 and
h form (Z1 x1 y1 z1 X2) and
a form (Y2 Z2 x2 y2 z2) and
SUM (X1 z1 X3) and
SUM(Y1 y2 Y3)and
SUM (X3 z2 X) and
SUM(Y3 X2 Y)and
/
X plus (1 T) if
Z factor (1Y) and
Z form (Z x у z) and
у LESS Z and
(X p 1) add
X plus (2 Y) if
X factor (2 Y) and
X form (Z x у z) and
SUM (x у X1) and
X1 LESS Z and
(X p 2) add
h factor (11∅)
h factor (2 1∅)
a factor (1 1∅)
a factor (2 2∅)
a factor (∅∅)
Отношение feast принимает от пользователя данные об играющих командах и помещает их в базу данных, предварительно удалив все аналогичные данные. Затем оно используется для ввода оценки прогноза; оценка равна либо 1 (правильно), либо - 1 (неправильно). И, наконец, отношение feast инициирует корректировку правил. Отношение result дает возможность оценить шансы команд, используя для этого отношения points и plus. Points определяет число очков, начисляемых каждой команде с помощью правил отношения plus. Отношение plus генерирует новое предложение вида
у р N
и включает его в программу. Здесь у принимает либо значение h для команды хозяев, либо а - для команды гостей; N - номер правила. Эта информация используется автоматическим механизмом корректировки, реализуемым с помощью отношения amend. Корректировка заключается в увеличении или уменьшении на единицу аргумента одного из правил отношения factor. Достоинство этого отношения заключается в том, что его присутствие позволяет использовать одно и то же предложение plus как для команд хозяев, так и для команд гостей. Заметим, что отношение amend использует только короткие предложения для удаления и добавления утверждений отношения factor. Это позволяет ускорить работу программы по сравнению с тем случаем, когда необходимо было корректировать все использованные правила отношения plus. Отметим, что утверждение
а р ∅
которое добавляется к программе при выполнении отношения result, является фиктивным. Оно необходимо для того, чтобы проверка условия
X р у
в отношении feast не приводила к неудаче в тех случаях, когда ни одно из правил начисления очков не удалось применить.
Проанализируем предложение
a factor (∅ N)
где N - разность между числом правильных и неправильных прогнозов.
Заметим, что пользователи могут добавить свои собственные правила к отношению plus. Каждое дополнительное правило должно включать утверждение вида
(X р N) add
где N - порядковый номер дополнительного правила.
Вместе с дополнительными правилами должны также быть введены предложения вида
h factor (N M)
и
a factor (N M)
где М - число очков, начисляемых в случае успешного применения правила. Вводимые пользователями правила будут так же, как и все остальные, корректироваться системой.
Ниже приведен диалог между пользователем и только что описанной экспертной системой
all (: feast)
[определить все (: прогноз)]
home form X and away form Y ? ans (5 1 1 1∅ 6) (1 ∅ 6 3 13)
[команда хозяев X и команда гостей Y ? ответ (5 1 1 1∅ 6) (1 ∅ 6 3 13)]
home 53 9 away
[хозяева 53 9 гости]
Right or wrong 1/ - 1 X ? just 1
[Верен или неверен прогноз 1/ - 1 X ? последний ответ 1 ]
(число пустых строк определяется количеством изменений, вносимых системой)
home form X and away form Y ? ans (6 ∅∅ 15 ∅) (1 4 2 11 12)
[команда хозяев X и команда гостей Y ? ответ (6 ∅∅ 15 ∅) (1 4 2 11 12)]
home 59 11 away [хозяева 59 11 гости]
Right or wrong 1/ - 1 X ? just -1 [
Верен или не верен прогноз 1/ - 1 X ? последний ответ -1 ]
...
home form X and away form Y ? no
[команда хозяев X и команда гостей Y ? нет]
No more answers
[Ответов (больше) нет]
Ответ 1, оценивающий правильность первого прогноза, свидетельствует о том, что предсказание подтвердилось. В свою очередь, ответ -1 говорит о том, что прогноз, данный системой, неверен. В обоих случаях система применяет правила начисления очков только для команд хозяев. В связи с этим аргумент тех предложений отношения factor, которые относятся к хозяевам, сначала увеличивается на 1, а затем на нее же уменьшается, т. е. в конечном счете отношение factor не изменяется. Рассмотрим еще один пример работы системы:
all (: fact)
[определить все (: прогноз)]
home form X and away form Y ? ans (5 1 1 1 ∅ 6) (1 2 5 6 12)
[команда хозяев X и команда гостей Y ? ответ (5 1 1 1 ∅ 6) (1 2 5 6 12)]
home 52 12 away
[хозяева 52 12 гости]
Right or wrong 1/ - 1 X ? just 1
[Верен или неверен прогноз 1/ - 1 X ? последний ответ 1 ]
home form X and away form Y ? ans (4 1 4 16 13) (4 2 2 11 12)
[Команда хозяев X и команда гостей Y ? Ответ (41416 13) (4 2 2 11 12)]
home 28 34 away
[Хозяева 23 34 гости]
Right or wrong 1/ - 1 X ? just 1
[Верен или неверен прогноз 1/ - 1 X ? последний ответ 1 ]
home form X and away form Y ? ans (4 1 4 17 11) (2 2 5 12 14)
[Команда хозяев X и команда гостей Y ? ответ (4 1 4 17 11) (2 2 5 12 14)]
home 31 23 away
[Хозяева 31 23 гости]
Right or wrong 1/ - 1 X ? just 1
[Верен или неверен прогноз 1/ - 1 X ? последний ответ 1 ]
home form X and away form Y ? no
[Команда хозяев X и команда гостей Y ? нет]
No (more) answers
[Ответов (больше) нет]
В данном случае все три сделанные системой прогноза подтвердились. При формировании последнего прогноза ни одно из правил начисления очков не использовалось (прогноз был дан только на основании учета голевого баланса команд). Посмотрим, какой вид приняли предложения, входящие в состав отношения factor:
a factor (2 2∅)
h factor (2 21)
h factor (1 11)
a factor (1 11)
a factor (∅ 3)
Последнее предложение показывает, что все три прогноза оказались успешными. Аргументы предложений, относящихся к командам-хозяевам поля, были увеличены на 1, поскольку оба правила начисления очков были использованы по одному разу. На единицу был увеличен и аргумент одного предложения, относящегося к команде гостей, так как для гостей удалось применить только первое правило отношения rule. Приведем теперь пример неверного прогноза
all (: feast)
[определить все (: прогноз) ]
home form X and away form Y ? ans (4 2 3 15 8) (2 2 5 12 11)
[команда хозяев X и команда гостей Y ? ответ (4 2 3 15 8) (2 2 5 12 11)]
home 37 2∅ away
[хозяева 37 2∅ гости]
Right or wrong 1/ - 1 ? just -1
[Верен или неверен прогноз 1/ - 1 ? поеледний ответ -1 ]
home form X and away form Y ? no
[команда хозяев X и команда гоетей Y ? нет]
No (more) answers
[Ответов (больше) нет]
Предложения отношения faetop теперь имеют еледующий вид:
a factor (2 2∅)
h factor (2 21)
a factor (1 11)
h factor (1 1∅)
a factor (∅ 2)
Таким образом, можно сделать вывод, что применялось первое правило, и поскольку прогноз не подтвердился, аргумент соответствующего предложения factor был уменьшен на 1, т. е. вместо 11 он стал равным 10.
Хотя программа 6.11 невелика, она обладает довольно значительными возможностями и, что наиболее важно, позволяет проводить с ней многочисленные эксперименты. Область применения такого рода программ, естественно, не ограничивается предсказанием результатов футбольных матчей. Принципы, положенные в основу их создания, можно использовать в процессе разработки экспертных систем для любой области, в которой данные, накопленные к настоящему времени, обрабатываются с помощью множества правил. Эти правила первоначально определил эксперт, но они могут быть автоматически изменены после сопоставления реальных и полученных системой результатов. В качестве одной из таких областей может быть взята задача прогнозирования погоды. Пользователям домашних компьютеров в этом случае, как и во многих других, не стоит огорчаться из-за того, что на их машинах могут быть решены лишь небольшие задачи. Ведь качество используемых ими идей и степень общности, которой они в состоянии достичь, значительно важнее размера и сложности программной системы. Область, называемая искусственным интеллектом, без сомнения будет постоянно привлекать многих людей - и тех, кто просто получает удовольствие от решения интересных задач, и тех, кто профессионально занимается использованием вычислительной техники.