Процедура "мужчина"
Процедура "мужчина":
мужчина (иван)
мужнина (василий)
мужчина (петр)
мужчина (федор)
мужчина (юрий)
Процедура «женщина»:
женщина (марья)
женщина (ирина)
женщина (ольга)
женщина (елена)
Процедура "родитель":
родитель (марья, иван) (читать: «Марья — родитель Ивана»)
родитель (иван, елена)
родитель (марья, василий)
родитель (федор, марья)
родитель (петр, ирина)
родитель (петр, иван)
родитель ( федор, юрий)
в нахождении всех пар переменных
Процедура «мать*:
Процедура «отец*:
отец (X, Y): мужчина(Х), родитель (X, Y)
Процедура "брат":
брат (X,Y): мужчина (X), родитель (Р, X), родитель (Р, Y), XOY
Процедура «сестра»:
сестра (X, Y): женщина (X), родитель (Р, X), родитель (Р, Y),
Процедура «дядя»:
дядя (X, Y): брат (X, Р), родитель (Р, Y)
Пусть задана некоторая сложная, т.е. опирающаяся не на факт, а требующая вывода, цель (запись цели образует фрейм), с которой мы обратились к этой БЗ, например
дядя (X, Y), тогда решение (вывод) заключается в нахождении всех пар переменных (имен объектов)
Используем прием трансформации цели, заключающийся в рекурсивном переборе различных вариантов подстановки вместо предикатов, составляющих сложную цель, правых частей клозов соответствующих процедур. В результате производится фиксация варианта связывания переменных и унификация, при которой отбрасываются несовместимые варианты, т.е. противоречащие фактам и правилам. Варианты связывания всех переменных, прошедшие все этапы унификации, являются решением.
и единственный) предикат цели дядя
Изложим последовательность действий.
Находим первый ( и единственный) предикат цели дядя (X, Y). Заменяем найденный предикат правой частью процедуры с этим именем, записанной в БЗ. Получим трансформированную цель — фрейм:
брат (X, Р), родитель (Р, Y).
С первым предикатом этого фрейма действуем аналогично, получаем фрейм:
мужчина (X), родитель (Q, X), родитель (Q, Р), Х<>Р, родитель (Р, Y).
При этом во избежание коллизии, развивая фрейм цели, вводим новые переменные, отличные от тех, которые уже были использованы в записях БЗ.
Вновь входим в процедуру с именем первого предиката цели и начинаем первый уровень ветвления, используя первый клоз процедуры — факт мужчина (иван). С его помощью производим первое связывание переменных, т.е. подстановку конкретного значения.
Предикат цели, породивший это связывание, из трансформируемой цели исключается, т.е. заменяется своей «пустой» правой частью:
родитель (Q, иван), родитель (Q, Р), иван <>Р, родитель (P,Y).
Обращаемся к процедуре "родитель", начиная второй уровень ветвления. Первый клоз этой процедуры родитель (марья, иван) определяет дальнейшее связывание переменных:
родитель (марья, Р), иван <> Р, родитель (Р, Y).
Вновь входим в процедуру "родитель" (третий уровень ветвления), находим клоз родитель (марья, иван). Трансформируем цель, получаем новый фрейм:
иван <> иван, родитель (иван, Y).
Возникает противоречие, т.е. унификация не проходит.
Ищем на данном шаге ветвления другой вариант связывания, находим следующий клоз:
родитель (марья, василий).
в котором василий указан как
Трансформируем цель:
.иван <> василий, родитель (василий, Y)
Вновь входим в процедуру "родитель", но не находим клоза, в котором василий указан как чейлибо родитель, т.е. вновь унификация не проходит.
Реализуем стратегию поиска с ветвлением и возвращением назад — backtraking. На втором уровне ветвления исследуем клоз, в котором иван указан как сын: родитель (петр, иван). Цель трансформируется в следующий фрейм:
родитель (петр, Р), иван <> Р, родитель (Р, Y).
Вновь (на третьем уровне ветвления) обращаемся к процедуре "родитель" и выбираем первый клоз, в котором петр указан как отец —родитель (петр, ирина).
Цель трансформируется:
иван <> ирина, родитель (ирина,
Входим в процедуру "родитель", но в ней нет клоза, в котором ирина указана как родитель. Унификация не проходит.
Возвращаемся на второй уровень ветвления и не находим больше клозов, где иван указан как сын. Далее на первом уровне ветвления в процедуре «мужчина» выбираем для дальнейшего испытания следующий клоз мужнина (василий).
Цель принимает вид (фрейм):
родитель (Q, василий), родитель (Q, Р), василий <>Р, родитель (Р, Y).
На втором уровне ветвления находим единственный клоз, в котором василий указан как сын. Цель трансформируется в соответствии с новым связыванием переменных, обусловленным найденным клозом родитель (марья, василий):
родитель (марья, Р), василий <>Р, родитель (Р; Y).
На третьем уровне ветвления находим первый среди клозов, где марья указана как родитель: родитель (марья, иван). Связываем тем самым переменные, цель трансформируется:
Василий родитель (иван, Y).
В процедуре «родитель» находим клоз, в котором иван указан как родитель, —родитель (иван, елена). Цель выродилась, значит:
дядя (X, Y) = дядя (василий, елена) одно из решений задачи.
Продолжив перебор так, словно на данном шаге унификация не прошла, найдем остальные решения: дядя (юрий, иван), дядя (юрий, василий).
В основе распараллеливания решения этой задачи лежит способ размножения вариантов на основе трансформации цели. Способ обеспечивает отсутствие backtracing'a (ветвление есть, а возврата нет), простоту процедуры вывода, возможность неограниченного использования ИЛИ параллелизма (одновременной независимой обработки многих вариантов связывания переменных), конвейерную реализацию И параллелизма (распараллеливания обработки одного варианта связывания переменных на конвейере, так как каждый раз обрабатывается лишь первый предикат каждого фрейма).
Однако представляется, что нейросетевая технология, основанная на естественном параллелизме, может оказаться эффективнее.
Нейросеть для задачи логического вывода
Рассмотрим предварительно один аспект обучения нейросети методом трассировки.
Обобщив подход, изложенный в разд. 2, на логику передаточных функций, мы заявили, что нашли способ построения уже обученных нейросетей.
Впоследствии (разд. 3 и 4) при отсутствии некоторых связей в типовых сетях обосновано их принудительное введение в случае целесообразности.
Таким образом, несовершенство нейросети не стало для нас преградой. А если предположить, как при «схемотехническом» подходе, что первоначально в сети вообще никаких связей нет, ее матрица следования пуста, а нам предстоит создать эту сеть полностью? Логично, что в ней будут присутствовать только те связи, которые обеспечивают ее обучение, т. е. мы сразу можем строить обученную нейросеть, синапсические связи в которой имеют единичный (максимальный) вес.
Последуем этим путем и, рассчитав все возможные выводы, составим (рис. 7.1) нейросеть, соответствующую фрагменту беспредельной базы знаний о жителях далекого таежного села.
Для того чтобы максимально сохранить информацию о иерархии выводов, переменные — значения возбуждения рецепторов будем вводить только на первый уровень логического анализа в качестве параметров процедур фактов. Ведь как ни формализуй, а окончательных рекомендаций по формированию нейросети не получить, так как это формирование — моделирование, а моделирование — искусство. Впрочем, каждый раз это ярко демонстрирует выбор передаточной функции. Здесь мы рекомендуем использовать передаточную функцию:
в данном случае целесообразно положить
Порог h подбирается экспериментально, в данном случае целесообразно положить h = 0,4.
Мы видим, что сеть отображает только факты, а где же правила? Они использованы и забыты? И да, и нет. Вот тут то и проявляется вторая парадигма обучения — парадигма ученика. Ибо правила вывода оказались использованными при обучении и скрыты. Только путь индуктивного мышления способен их восстановить, т.е. восстановить закономерность по сформированным связям.
Как же тогда работать с этой сетью? Представим себе два режима работы: для фискального органа налоговой инспекции, требующей общей картины социального состояния, и для информационно аналитической службы безопасности, интересующейся гражданами индивидуально, по выбору и привлечению.
Мужчина Иван Мужчина Василий Мужчина
Мужчина Иван Мужчина Василий Мужчина Петр Мужчина Федор Мужчина Юрий Женщина Марья Женщина Ирина Женщина Ольга Женщина Елена Марья родитель Ивана Иван родитель Елены Марья родитель Василия Федор родитель Марьи Петр родитель Ирины Петр родитель Ивана Федор родитель Юрия Марья мать Ивана Марья мать Василия Иван отец Елены Петр отец Ирины Петр отец Ивана Федор отец Юрия Иван брат Василия Василий брат Ивана Иван брат Ирины Юрий брат Марьи Ирина сестра Ивана Василий дядя Елены Юрий дядя Ивана Юрий дядя Василия
Рис. 7.1. База знаний антрополога исследователя
Мужчина Иван Мужчина Василий Мужчина
Мужчина Иван Мужчина Василий Мужчина Петр Мужчина Федор Мужчина Юрий Женщина Марья Женщина Ирина Женщина Ольга Женщина Елена Марья родитель Ивана Иван родитель Елены Марья родитель Василия Федор родитель Марьи Петр родитель Ирины Петр родитель Ивана Федор родитель Юрия Марья мать Ивана Марья мать Василия Иван отец Елены Петр отец Ирины Петр отец Ивана Федор отец Юрия Иван брат Василия Василий брат Ивана Иван брат Ирины Юрий брат Марьи Ирина сестра Ивана Василий дядя Елены Юрий дядя Ивана Юрий дядя Василия
А именно если максимально возбудить все нейроны рецепторы, то можно извлечь полную информацию о клиентах: кто из них мужчина, кто — женщина, в каком родстве они состоят.
В то же время при возбуждении на входе нейронов рецепторов, соответствующих Ивану и Василию, получим информацию о том, что они, несомненно, мужчины. Но подозрительно высокого возбуждения достигнут нейроны, отвечающие за факт, что Марья — мать Ивана и она же — мать Василия. Подозрительно возбудятся и нейроны, отвечающие за факты Иван — брат Василия и Василий — брат Ивана, Юрий — дядя Ивана и др. Тогда возбудим нейрон рецептор, соответствующий Марье, и посмотрим на реакцию сети. Сеть высоким возбуждением своих нейронов нам сообщает: "Да, действительно, Марья — мать Ивана и Василия".
Заметим, что можно подавать на вход сет и не единичные значения возбуждений. Например, установив, что в деле участвовал не то Иван, не то Василий (уж очень они похожи!), мы зададим соответствующие значения возбуждений равными 0,5 и установим высокую величину возбуждения нейрона, соответствующего дяде и того, и другого — Юрию. И тогда логично возложить На него ответственность за поведение племянников.
Таким образом, составляя нейросеть, мы руководствовались желанием сохранить причинно следственные логические связи, обусловленные правилами. Этим обусловливается возможность использования метода индуктивного мышления для установления, например, изначальных фактов, достаточных для вывода: Юрий — дядя Ивана. Мы даже назвали эту нейросеть базой знаний антрополога исследователя. Таким образом, имитируется организация коры, где все выводы равноправны и служат как формированию внутри задачных, промежуточных выводов, так и для решения некоторой внешней глобальной задачи, сверхзадачи. Равноправность и внешнее использование, в том числе для логической надстройки сети, для получения новых знаний по новым вводимым фактам и правилам, требует специального формирования величин возбуждения нейронов, что и отражено в предлагаемой передаточной функции.
С другой стороны, зачем нам знать и делать вывод о том, что Юрий — дядя Ивана, потому что он — брат Марьи! Мы можем эти факты задать независимо, предварительно вычислив на языке ПРОЛОГ
Тогда получим фрагмент базы знаний участкового уполномоченного (рис. 7.2), что в самой простой форме отражает анкетирование, не подлежащее глубокому исследованию.