7.1   ПРОЛОГ-программа

Следуя различными путями дедуктивного и индуктивного мышления, осуществляя различные парадигмы обучения, человек стремился автоматизировать логику мышления. Продуктом этой деятельности явились такие языки логического вывода, как ЛИСП и ПРОЛОГ Более того, ПРОЛОГ следует считать венцом усилий по автоматизации логического вывода, эффективно описывающего, в частности, экспертные системы.

Язык представляет базу знаний как совокупность фактов и правил вывода; процедурная структура позволяет вюіючать конструкции любых других алгоритмических языков, т.е. ПРОЛОГ является логической надстройкой, объединяющей лишь операции вывода. Формулируется цель логического вывода, и если она не противоречива, выявляются факты, ее породившие.

Рассмотрим упрощенную задачу в виде ПРОЛОГ-программы, содержащую характерные элементы проблемы достижения сложной цели на основе фрагмента базы знаний, содержащего факты и правила.

Факты — юіозы (отдельные предикаты-высказывания принято называть клозами), которые не содержат правых частей, правила — юіозы, которые содержат правые части; одноименные факты и правила объединяются в процедуры. Пусть база знаний имеет следующий вид.

Процедура "мужчина мужчина (иван) мужнина (василий) мужчина (петр) мужчина (федор) мужчина (юрий)

Процедура «женщина»:

женщина(маръя) женщина(ирина) женщина(ольга) женщина (елена)

Процедура "родитель

родитель (маръя, иван) (читать: «Марья — родитель Ивана»)

родитель (иван, елена)

родитель (маръя, василий)

родитель(федор,маръя)

родитель (петр, ирина)

родитель (петр, иван)

родитель (федор, юрий)

Процедура «мать *: шашіЩіЩ(Х), родитель (X, Y)

Процедура «отец *:

отец(Х, Y):мужчина(Х),родитель (X, Y)

Процедура "брат":

брат (X, Y): мужчина (X), родитель (Р, X), родитель (Р, Y), XOY

Процедура «сестра»:

сестра (X, Y): женщина (X),родитель (Р,Х), родитель (Р, Y), XOY

Процедура «дядя»:

дядя(X, Y):6pam(X,P),родитель(Р, Y)

Пусть задана некоторая сложная, т.е. опирающаяся не на факт, а требующая вывода, цель (запись цели образует фрейм), с которой мы обратились к этой БЗ, например

дядя(Х, Y),

тогда решение (вывод) заключается в нахождении всех пар переменных (имен объектов) X Y, для которых справедливо утверждение <Х является дядей Y».

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

фактам и правилам. Варианты связывания всех переменных, прошедшие все этапы унификации, являются решением.

Изложим последовательность действий.

Находим первый (и единственный) предикат цели дядя (X, Y). Заменяем найденный предикат правой частью процедуры с этим именем, записанной в БЗ. Получим трансформированную цель — фрейм:

брат(Х,Р),родитель(Р, Y).

С первым предикатом этого фрейма действуем аналогично, получаем фрейм:

мужчина (X),родитель (Q,X),родитель (Q, Р),Х< >Р, родитель (Р, Y).

При этом во избежание коллизии, развивая фрейм цели, вводим новые переменные, отличные от тех, которые уже были использованы в записях БЗ.

Вновь входим в процедуру с именем первого предиката цели и начинаем первый уровень ветвления, используя первый клоз процедуры — факт мужчина (иван). С его помощью производим первое связывание переменных, т.е. подстановку конкретного значения. Предикат цели, породивший это связывание, из трансформируемой цели исключается, т.е. заменяется своей «пустой» правой частью:

родитель (Q, иван), родитель (Q, Р), иван ' >Р, родитель (P,Y).

Обращаемся к процедуре "родитель", начиная второй уровень ветвления. Первый клоз этой процедуры родитель (марья, иван) определяет дальнейшее связывание переменных:

родитель (марья, Р), иван < >Р,родитель (Р, Y).

Вновь входим в процедуру "родитель" (третий уровень ветвления), находим клоз родитель (марья, иван). Трансформируем цель, получаем новый фрейм:

иван < > иван, родитель (иван, Y).

Возникает противоречие, т.е. унификация не проходит.

Ищем на данном шаге ветвления другой вариант связывания, находим следующий клоз:

родитель (марья, василий).

Трансформируем цель:

.иван Овасилий,родитель (василий, YX-вшрвдищеЩ.

Вновь входим в процедуру "родитель", но не находим клоза, в котором василий указан как чей-либо родитель, т.е. вновь унификация не проходит.

Реализуем стратегию поиска с ветвлением и возвращением назад — backtraking. На втором уровне ветвления исследуем клоз, в котором иван указан как сын: родитель (петр, иван). Цель трансформируется в следующий фрейм:

родитель (петр, Р), иван < >Р,родитель (Р, Y).

Вновь (на третьем уровне ветвления) обращаемся к процедуре "родитель" и выбираем первый клоз, в котором петр указан как отец —родитель (петр, ирина).

Цель трансформируется:

иван <>ирина,родитель (ирина, (ЩрътррЩтель

Входим в процедуру "родитель", но в ней нет клоза, в котором ирина указана как родитель. Унификация не проходит.

Возвращаемся на второй уровень ветвления и не находим больше клозов, где иван указан как сын. Далее на первом уровне ветвления в процедуре «мужчина» выбираем для дальнейшего испытания следующий клоз мужнина (василий).

Цель принимает вид (фрейм):

родитель (Q, василий),родитель (Q, Р), василий < >Р, родитель(Р, Y).

На втором уровне ветвления находим единственный клоз, в котором василий указан как сын. Цель трансформируется в соответствии с новым связыванием переменных, обусловленным найденным клозом родитель (марья, василий):

родитель (марья, Р), василий < >Р,родитель (P;Y).

На третьем уровне ветвления находим первый среди юіозов, где маръя указана как родитель: родитель (маръя, иван). Связываем тем самым переменные, цель трансформируется:

василий &кін, родитель (иван, родфт&іъ (иван, Y).

В процедуре «родитель» находим юіоз, в котором иван указан как родитель, —родитель (иван, елена). Цель выродилась, значит:

дядя (X, Y) = дядя (василий, елена)

одно из решений задачи.

Продолжив перебор так, словно на данном шаге унификация не прошла, найдем остальные решения: дядя (юрий, иван), дядя (юрий, василий).

В основе распараллеливания решения этой задачи лежит спо- собразмножениявариантовнаосноветрансформациицели. Способ обеспечивает отсутствие backtracing'a (ветвление есть, а возврата нет), простоту процедуры вывода, возможность неограниченного использования ИЛ И-параллелизма (одновременной независимой обработки многих вариантов связывания переменных), конвейерную реализацию И-параллелизма (распараллеливания обработки одного варианта связывания переменных на конвейере, так как каждый раз обрабатывается лишь первый предикат каждого фрейма).

Однако представляется, что нейросетевая технология, основанная на естественном параллелизме, может оказаться эффективнее.

У 2 Нейросеть для задачи логического вывода

Рассмотрим предварительно один аспект обучения нейросети методом трассировки.

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

Впоследствии (разд. 3 и 4) при отсутствии некоторых связей в типовых сетях обосновано их принудительное введение в случае целесообразности.

Таким образом, несовершенство нейросети не стало для нас преградой. А если предположить, как при «схемотехническом» подходе, что первоначально в сети вообще никаких связей нет, ее матрица следования пуста, а нам предстоит создать эту сеть полностью? Логично, что в ней будут присутствовать только те связи, которые обеспечивают ее обучение, т. е. мы сразу можем строить обученную нейросеть, синапсические связи в которой имеют единичный (максимальный) вес.

Последуем этим путем и, рассчитав все возможные выводы, составим (рис. 7.1) нейросеть, соответствующую фрагменту беспредельной базы знаний о жителях далекого таежного села.

Для того чтобы максимально сохранить информацию о иерархии выводов, переменные — значения возбуждения рецепторов будем вводить только на первый уровень логического анализа в качестве параметров процедур-фактов. Ведь как ни формализуй, а окончательных рекомендаций по формированию нейросети не получить, так как это формирование — моделирование, а моделирование — искусство. Впрочем, каждый раз это ярко демонстрирует выбор передаточной функции. Здесь мы рекомендуем использовать передаточную функцию:

Порог h подбирается экспериментально, в данном случае целесообразно положить h = 0,4.

Мы видим, что сеть отображает только факты, а где же правила? Они использованы и забыты? Ида, и нет. Вот тут-то и проявляется вторая парадигма обучения — парадигма ученика. Ибо правила вывода оказались использованными при обучении и скрыты. Только путь индуктивного мышления способен их восстановить, т.е. восстановить закономерность по сформированным связям.

Как же тогда работать с этой сетью? Представим себе два режима работы: для фискального органа - налоговой инспекции, требующей общей картины социального состояния, и для информационно-аналитической службы безопасности, интересующейся гражданами индивидуально, по выбору и привлечению.

Аименно если максимально возбудить все нейроны-рецепто- ры, то можно извлечь полную информацию о клиентах: кто из них мужчина, кто — женщина, в каком родстве они состоят.

В то же время при возбуждении на входе нейронов-рецепто- ров, соответствующих Ивану и Василию, получим информацию о том, что они, несомненно, мужчины. Но подозрительно высокого возбуждения достигнут нейроны, отвечающие за факт, что Марья — мать Ивана и она же — мать Василия. Подозрительно возбудятся и нейроны, отвечающие за факты Иван — брат Василия и Василий — брат Ивана, Юрий —дядя Ивана и др. Тогда возбудим нейрон-ре- цептор, соответствующий Марье, и посмотрим на реакцию сети. Сеть высоким возбуждением своих нейронов нам сообщает: "Да, действительно, Марья — мать Ивана и Василия".

Заметим, чтр можно подавать на вход с е т и и не единичные значеня возбуждений. Например, установив, что в деле участвовал не то Иван, не то Василий (уж очень они похожи!), мы зададим соответствующие значения возбуждений равными 0,5 и установим высокую величину возбуждения нейрона, соответствующего дяде и того, и другого — Юрию. И тогда логично возложить На него ответственность за поведение племянников.

Таким образом, составляя нейросеть, мы руководствовались желанием сохранить причинно-следственные логические связи, обусловленные правилами. Этим обусловливается возможность использования метода индуктивного мышления для установления, например, изначальных фактов, достаточных для вывода: Юрий — дядя Ивана. Мы даже назвали эту нейросеть базой знаний антрополога-исследователя. Таким образом, имитируется организация коры, где все выводы равноправны и служат как формированию внутризадачных, промежуточных выводов, так и для решения некоторой внешней глобальной задачи, сверхзадачи. Равноправность и внешнее использование, в том числе для логической надстройки сети, для получения новых знаний по новым вводимым фактам и правилам, требует специального формирования величин возбуждения нейронов, что и отражено в предлагаемой передаточной функции.

С другой стороны, зачем нам знать и делать вывод о том, что Юрий — дядя Ивана, потомучто он — брат Марьи! N1 ы можем эти факты задать независимо, предварительно вычислив на языке ПРОЛОГ

Тогда получим фрагмент базы знаний участкового уполномоченного (рис. 7.2), что в самой простой форме отражает анкетирование, не подлежащее глубокому исследованию.