Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Листинг 19.4. Формулировка задачи для изучения предиката определения принадлежности к списку




Ь Формулировка задали лля изучения предиката member(X,L) backliteral(member(X,L), [L:listI, iX:item]), % Фоновый литерал Ч Усовершенствование термов

term.! list, [X|L], [ К:item, L:iist]>. terrat list, [), [1).

prolog_predicate(fail). Ч тоновый литерал отсутствует в программе

I на языке Prolog

start_clause ([ member (X,!,) ] / [ X:item, L:list]).

% Положительные и отрицательные примеры


ess! member! a, [a])). ех[ member! b, [агЬ])).

ex (member (d, [з,Ь,с, d, е])).

пег:! member! Ь, [а])).

пех (member (d, [а,Ь])).

пех (meraber{ f, [a,b, c,d, ej)).


 


 


460


Часть II. Применение языка Prolog в области искусственного интеллекта


Назначение входных и выходных параметров состоит в следующем. Если какой-либо параметр литерала является входным, то предполагается, что он должен кон­кретизироваться при каждом выполнении этого литерала. Это означает, что если при усовершенствовании предложения такой литерал добавляется к телу предложения, то каждая из его входных переменных должна быть немедленно согласована с неко­торой существующей переменной в предложении. В приведенном выше примере должна быть немедленно согласована с существующей переменной переменная L (также относящаяся к типу "список") при каждом добавлении литерала member (X,L) к предложению. Подобное согласование должно обеспечивать, чтобы входной параметр был конкретизирован ко времени выполнения данного литерала. С другой стороны, выходные параметры могут быть согласованы с другими перемен­ными позднее. Поэтому при усовершенствовании предложения выходные переменные обрабатываются по такому же принципу, как и все переменные в программе M1NIHYPER. Но ограничения на типы исключают возможность согласования пере­менных разных типов. Поэтому переменная X типа item (элемент) не может быть со­гласована с переменной L типа list (список).

Возможные усовершенствования переменных с преобразованием в структуриро­ванные термы определяются следующим предикатом: terra: Type, Texm, Vars)

Он указывает, что переменная типа Туре в предложении может быть заменена термом Тегт; Vars — это список переменных и их типов, которые встречаются в терме Term. Поэтому в листинге 19.4 предложения

termi; list, [X|L], [ X:itera, L:Iist]). term[list, [],[]).

указывают, что переменная типа list может быть преобразована в процессе усовер­шенствования в терм |Х; jj, где X относится к типу item, a '. — к типу list, или что эта переменная может быть заменена константой [] (без переменных). Во всей данной главе предполагается, что символ ":" введен как инфиксный оператор. В листинге 19.4 предложение start_clause([ mex.ber<X,L) J / [ X:iteir,, L:list]).

объявляет форму предложений в начальных гипотезах графа усовершенствования. Каждая начальная гипотеза представляет собой список начальных предложений, ко­личество которых не может превышать некоторого максимального количества (копий). Список начальных гипотез формируется автоматически. Максимальное ко­личество предложений в гипотезе определяется предикатом max_clauses. Он может быть задан пользователем соответствующим образом с учетом специфики задачи обу­чения.

Теперь определим оператор усовершенствования программы HYPER в соответст­вии с приведенным выше описанием. Для усовершенствования любого предложения необходимо выполнить одно из перечисленных ниже действий,

1. Согласовать две переменные в предложении, например XI = Х2. Могут быть согласованы только переменные одного и того же типа.

2. Преобразовать в процессе усовершенствования переменную предложения в фо­новый терм. При этом могут использоваться только термы, определенные пре­дикатом term/З, а тип переменной и тип терма должны соответствовать друг другу.

3. Добавить фоновый литерал к предложению. Все входные параметры литерала должны быть согласованы (недетерминированно) с существующими перемен­ными предложения (такого же типа).

Как и в программе MINIHYPER, для усовершенствования гипотезы.-:. в програм­ме HYPER выбирается одно из предложений С. в гипотезе предложение: преоб­разуется в процессе усовершенствования в предложение С и формируется новая ги­потеза Н путем замены предложения С в гипотезе:;, предложением С. В листин-


Глава 19. Индуктивное логическое программирование



re 19.5 показана последовательность усовершенствований при изучении предиката member.

Листинг 19.5. Последовательность усовершенствований от начальной гипотезы до целевой гипотезы. Обратите внимание на четвертый шаг, в котором добавлен литерал и его входной параметр немедленно согласован с существующей переменной того же типа

member[Xl,Ll). member(X2,L2).

t Усовершенствовать герм Ll = [X3|L3] member(Xl, [X3|L3]). member(X2,L2).

4- Согласовать XI = X3 member(Xl, [Xl|L3]). member(X2,L2).

I Усовершенствовать терм L2 = [X4[L4] member (XI, [XI iL3J). member(X2, [X4IL4]).

ir Ввести либерал member (X5, 1-5) и согласовать входные параметры L5 ~ L4 member(Xl, [X1IL3]). member (X2, [X4IL4]):- member <x5rL4t,

l Согласовать Х2 = X5 member(XI, [X1IL3]). гаеяЬегЮ, [X4|L4]>:- member <X2,L4>.

В программе HYPER к этим операциям добавлены некоторые полезные эвристи­ческие функции, которые часто позволяют намного уменьшить вычислительную сложность. Первая эвристическая функция предусматривает, что если в гипотезе Но имеется лишь одно предложение, которое охватывает отрицательный пример, то вы­рабатываются только усовершенствования, вытекающие из данного предложения. Причина этого состоит в том, что для получения совместимой гипотезы должно быть обязательно усовершенствовано именно такое предложение. Вторая эвристическая функция состоит в том, что отбрасываются "избыточные" предложения (которые со­держат несколько копий одного и того же литерала). А третья эвристическая функ­ция обеспечивает исключение ^удовлетворяемых предложений. Предложение явля­ется неудовлетворяемым, если его тело невозможно логически вывести с помощью предиката prove из текущей гипотезы.

Такой оператор усовершенствования предназначен для выработки наименее кон­кретных уточнений (Least Specific Specialization •— LSS). Уточнение И гипотезы Нс называется наименее конкретным, если не существует других уточнений гипотезы более общих, чем Н. Но в действительности рассматриваемый оператор усовер­шенствования позволяет лишь приблизиться к LSS. Этот оператор усовершенствова­ния позволяет достичь I-SS только в условиях того ограничения, что количество предложений в гипотезе после усовершенствования остается тем же самым. Без этого ограничения оператор LSS должен был бы увеличивать количество предложений в гипотезе. Это может привести к созданию оператора усовершенствования, не совсем приемлемого с точки зрения практики из-за его вычислительной сложности, по­скольку при его использовании количество предложений в усовершенствованной ги­потезе может стать очень большим. Но ограничение, предусмотренное в данной про­грамме, которое требует сохранения неизменного количества предложений в гипотезе после ее усовершенствования, является не слишком жестким. Если для решения требуется формирование гипотезы с большим количеством предложений, то такая гипотеза может быть выработана из другой начальной гипотезы, которая имеет дос­таточное количество предложений.

462 Часть II. Применение языка Prolog в области искусственного интеллекта


 


Поиск

Поиск начинается с множества начальных гипотез. Оно представляет собой мно­жество всех возможных мультимножеств определяемых пользователем начальных предложений, вплоть до некоторого максимального количества предложений в гипо­тезе. Как правило, в начальной гипотезе появляется несколько копий одного и того же начального предложения. Типичное начальное предложение представляет собой нечто довольно общее и нейтральное, такое как conc(LI, L2, L3). В процессе по­иска граф усовершенствования рассматривается как дерево (если к одной и той же гипотезе ведет несколько путей, то в дереве появляется несколько копий этой гипо­тезы). Поиск начинается с нескольких начальных гипотез, которые становятся кор­нями несвязанных друг с другом деревьев поиска. Поэтому, строго говоря, простран­ство поиска представляет собой не дерево, а лее.

Программа HYPER выполняет поиск по заданному критерию с использованием функции оценки Cost (Hypothesis), в которой учитывается размер гипотезы (как описано ниже), а также ее точность по отношению к заданным примерам. Стоимость гипотезы Н определяется с помощью следующей простой формулы: Cost HI = мл * SizeJH) + w2 * MegCover(H>

где NegCover(H) — количество отрицательных примеров, охватываемых гипотезой Н, Определение "гипотеза Н охватывает пример Е" трактуется в рамках осторожной интерпретации ответа Answer в предикате prove. В этой формуле н и ■.■:. обозначают весовые коэффициенты. Размер гипотезы определяется как взвешенная сумма коли­чества литералов и количества переменных в гипотезе следующим образом: Size£H> = Ь * количество^ли*ералоь(Н> + к, * количество_переменныа (н)

В коде программы HYPER, приведенном в этой главе, фактически используются следующие значения весовых коэффициентов: w: - - 1, w2 = 1С, ki = 10, к2 = 1. Это соответствует приведенной ниже формуле.

Cost(H> - количество_переменных(Н) + 10 * количество_лктералов (Н) + 10 * HegCover(H)

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





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 681 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

2504 - | 2303 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.