Шаповалов.ppt
- Количество слайдов: 53
Лекция на тему: Символические вычисления Подготовила: Анненкова О. Д.
1. Символическое представление 1. 2. 3. 4. 5. 6. 7. Символическое представление Физическая символическая система. Главная гипотеза Структура данных в языке LISP Обработка списков Сопоставление с образцом Почему LISP не является языком представления знаний Языки представления знаний.
1. Символическое представление Понятие символ является очень важным в современной теории и практике искусственного интеллекта (ИИ). На нем базируются главные связи между проблематикой ИИ и формальными системами математики и логики. Символ — это нечто, замещающее другое нечто. В этом определении "другое нечто" обычно называется значением (designation) символа. Это то, на что ссылается и что представляет символ. Значением может быть физический объект или понятие (концепт), но сам символ является физическим объектом. Так, цифра "7" является символом, представляющим число 7, которое является понятием.
1. Символическое представление Идея "символического вычисления" состоит в том, что под символом, с которым выполняются какие-то действия, мы можем понимать все, что угодно. Языки, основанные на этой парадигме, поддерживают множество простейших структур данных, связывающих одни символы с другими, а также примитивные операции манипулирования символами и структурами символов. Таким образом, программист должен определить • такие синтаксические правила формирования символических структур из некоторых символов, чтобы первые имели смысл, зависящий от смысла вторых, т. е. их компонентов; • правила трансформации, регламентирующие преобразование одних символических структур в другие.
1. Символическое представление Как правило, программы манипуляций с символами принимают в качестве исходной информации одну или более символических структур (исходное состояние решаемой проблемы) и возвращают одну символическую структуру (конечное состояние проблемы или ее решение). При этом и вход, и выход должны иметь форму, удовлетворяющую оговоренные синтаксические правила, а преобразование входных структур в выходную должно выполняться только с использованием дозволенных правил трансформации.
1. Символическое представление Программа на таком языке сама по себе также является символической структурой. Поэтому некоторая программа может рассматриваться в качестве исходных данных для другой. Вывод: такое единообразие в представлении программ и данных очень полезно в контексте проблематики ИИ. Можно сделать нечто большее, чем просто сформулировать правила манипулирования символами, — воплотить эти символы вместе с правилами манипулирования ими в виде физического устройства. Отсюда следует идея физической символической системы.
2. Физическая символическая система Ньюэлл [Newell, 1981] описывает физическую символическую систему как машину, помещенную в некоторую среду и состоящую из следующих компонентов: - памяти, включающей символические структуры, число и содержание которых может изменяться во времени; - набора операторов для манипулирования символическими структурами, например чтения, записи, копирования; - средств управления, предназначенного для непрерывной интерпретации текущей активной символической структуры или структуры, к которой выполняется обращение; - средств ввода из окружающей среды посредством рецепторов и вывода в окружающую среду посредством эффекторов.
2. Физическая символическая система Программа в физической символической системе — это также символическая структура, которая интерпретируется или обрабатывается каким-либо способом, зависящим от символов, составляющих ее, и от символов, полученных от средств ввода. Простейшие программы соответствуют операторам манипулирования символами, а более сложные описывают процедуры, скомпонованные из этих операторов. Средства управления способны отличать данные от программы, хотя и те и другие являются символическими структурами.
2. Физическая символическая система схожа с компьютером общего назначения, оснащенным программами обработки символов. Известно, что компьютер с хранимой программой является универсальной машиной (грубо говоря, он может моделировать операции любой другой машины), а следовательно, обладает способностью воспроизводить все обобщенные рекурсивные функции (т. е. все функции, которые могут быть реализованы любой машиной). Именно наличие такого средства, которое потенциально подходит для реализации абстрактной физической символической системы, и вдохновило исследователей на смелое предположение, что машина может обладать интеллектом.
2. Физическая символическая система Главная гипотеза. Гипотеза была сформулирована Алленом Ньюэллом и Гербертом Саймоном в 1976 году. Основанием для гипотезы стало успешное применение созданной ими программы — универсального решателя задач для моделирование рассуждений человека. "Физическая символьная система имеет необходимые и достаточные средства для произведения базовых интеллектуальных действий, в широком смысле".
2. Физическая символическая система Другими словами, без символических вычислений невозможно выполнять осмысленные действия, а способность выполнять символические вычисления вполне достаточна для того, чтобы быть способным выполнять осмысленные действия. Таким образом, если мы полагаем, что животное, или человек, или машина действуют осмысленно, то значит, они какимто образом выполняют символические вычисления. Независимо от того, справедлива ли эта гипотеза, символические вычисления стали реальностью, и полезность этой парадигмы для программирования трудно отрицать.
3. Реализация символических структур на языке LISP Как только мы беремся за задачу реализации символических структур и выполнения операций над такими структурами, немедленно встает вопрос, о каких именно структурах идет речь. Символы в логике и математике обычно организованы в виде множеств или последовательностей. Но можно ли их использовать в качестве базиса для структуры, объединяющей физические символы? Множество — это неупорядоченный набор элементов, в то время как физические символы в структуре должны занимать определенное положение (это положение может быть скрытым от программиста, и он может рассматривать структуру как неупорядоченное множество, но это уже относится в особенностям реализации).
3. Реализация символических структур на языке LISP Последовательность, как структура, позволяет говорить о месте символа в ней, но абстрактная последовательность может быть бесконечной. Хорошим кандидатом на место базисной структуры в физической символической системе является список — элементы в списке занимают совершенно определенное место и его можно однозначно связать с каждым отдельным элементом. С помощью списка можно представить и множество, и последовательность, хотя размерность последней и ограничена физическими характеристиками среды реализации.
3. Структуры данных в языке LISP Одним из первых языков обработки списков был LISP [Mc. Carthy, 1960]. За все время зык неоднократно модифицировался и расширялся, но в основе своей изменился мало. Разработчики языка утверждали, что LISP отличается от прочих языков программирования следующими свойствами: - основной структурой данных в нем является список; - программы на этом языке также имеют списочную структуру; - его базовыми операциями являются операции над списками.
3. Структуры данных в языке LISP В 1960 году выбор списков в качестве базовой структуры языка программирования рассматривался как революционный шаг. Сейчас большинство языков программирования общего назначения тем или иным образом поддерживает операции над списочными структурами, хотя от программистов обычно требуется запрашивать выделение памяти для формирования списка, а затем после его использования — возвращать память системе. В LISP еще на ранних стадиях развития в исполняющую систему был встроен механизм "уборки мусора", и программисту не требовалось следить за распределением памяти.
3. Структуры данных в языке LISP Базовым блоком в структуре данных языка LISP является символическое выражение. Алфавит языка включает в себя заглавные и строчные латинские буквы, цифры и все специальные знаки, которые есть на клавиатуре. Буквы национальных языков традиционно в алфавит не входят, хотя нет никаких особых запретов на этот счет. В частности, в алфавит Home. Lisp входят все русские строчные и заглавные буквы. Среди всех символов алфавита выделяются следующие шесть символов, которые используются особым образом: это пробел, точка, открывающая и закрывающая круглые скобки, апостроф и двойная кавычка. Остальные символы "равноправны".
3. Структуры данных в языке LISP Атомы Из алфавитных символов строятся все его конструкции. Простейшей из этих - атом - произвольная строка алфавитных символов, за исключением: - отдельно стоящей точки - отдельно стоящей левой/правой скобок или групп скобок (за исключением открывающей и закрывающей скобки, стоящих подряд) - отдельно стоящего пробела или группы пробелов - отдельно стоящего апострофа или двойной кавычки Строка символов, изображающая атом, не может содержать пробела и круглых скобок, но может содержать точку. Кроме того, имеется ограничение на использование двойной кавычки внутри строки, изображающей атом.
3. Структуры данных в языке LISP Среди атомов LISP выделим четыре специальные группы: Десятичные числа - это атомы, которые представляют собой корректное изображение десятичного числа (целого или с дробной частью; в качестве разделителя целой и дробной части используется точка). Шестнадцатеричные (битовые) константы представляются атомами вида: &Hnnnn, где nnnn - от одного до восьми символов из набора: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f Строки - это атомы, первый и последний символ которых - двойная кавычка. Между этими кавычками могут располагаться все символы алфавита (включая пробелы и скобки). Атомы Nil и T - используются для разнообразных целей. Символом Т представляется константа "True" — истина, Ni. L представляет, с одной стороны, константу "False"— ложь, а с другой — пустой список.
3. Структуры данных в языке LISP Правила построения атомов LISP. Строка Что это Abc Это обычный атом 1 Abc И это - тоже атом (хотя имя и начинается с цифры) Q$W И это - тоже атом (хотя имя и содержит знак доллара) 123 Это атом - число -12. 3 И это атом - число 6. 02 E+23 И это атом - число A. A Это атом AA А это - не атом. Пробел в имени недопустим! A( И это - не атом. Скобки в имени недопустимы! A'B И это - не атом. Апостроф в имени недопустим! () Как ни странно, это - атом. Почему, будет ясно из дальнейшего. "Проба пера" Это - атом-строка. Внутри строки пробелы вполне допустимы "Проба "пера"" Это - не атом. Кавычки, стоящие внутри строки, при записи должны удваиваться. "Проба ""пера""" Теперь верно. "Проба 'пера'" Можно и так. Апостроф внутри строки - обычный символ. &HFFFFFF Это - атом-битовая шкала. &H 1122334455667788 Это - просто атом (а не битовая шкала, как могло бы показаться; слишком много цифр)
3. Структуры данных в языке LISP Составные выражения объединяются в древовидной структуре, при этом используется очевидное соответствие между символическими выражениями и представлением конечных деревьев. Точечная пара - это конструкция следующего вида: (, ноль или более пробелов, атом или точечная пара, один или более пробелов, атом или точечная пара, ноль или более пробелов, ). Другими словами, ее можно представить: (Нечто) Атом или точечная пара называются S-выражением. В памяти компьютера все конструкции, кроме атомов, хранятся и обрабатываются в виде точечных пар.
3. Структуры данных в языке LISP Схема построения точечных пар: Строка Что это (a. b) Это правильная точечная пара. ((1. 2). b) Это тоже правильная точечная пара. ((1. 2). (3. 4)) И это тоже правильная точечная пара. (x. (y. z)) И это. . . (1. ) А вот это - не точечная пара. После точки до скобки должен стоять атом или точечная пара. (. 2) И это - тоже не точечная пара. После скобки до точки должен стоять атом или точечная пара. (1. 2 Не точечная пара. Скобки должны быть сбалансированы. (name. "Анатолий") Это снова правильная точечная пара.
3. Структуры данных в языке LISP Списки Точечная пара - универсальный способ построения агрегатов из атомов. Однако, она не очень удобна для человека: в ней слишком много скобок и точек. Было предложено правило, позволяющее записывать Sвыражения практически без точек и с использованием значительно меньшего количества скобок. Этих правил всего два: Цепочки . Nil просто удаляем; Цепочки . ( удаляем вместе с соответствующей закрывающей скобкой.
3. Структуры данных в языке LISP Рассмотрим применение этих правил к записи S-выражения: (A. (B. (C. Nil))) Последовательность упрощений: Использование описанных правил упрощения привело к тому, что большая часть S-выражений записывается в чисто скобочной нотации и называется списками.
3. Структуры данных в языке LISP Можно сказать, что список - это такая точечная пара, в записи которой после применения правил упрощения не остается точек. Следует отметить, что всякий список может быть представлен в точечной записи, но не всякая точечная пара является списком. Несколько примеров списков в точечной и списковой записи: Списковая запись Точечная запись (A) (A. Nil) (A B C) (A. (B. (C. Nil))) (A (B C) (E F)) (A. ((B. (C. Nil)). ((E. (F. Nil)))
3. Структуры данных в языке LISP В заключение дадим еще три важных определения. Конструкция () соответствует определению списка. Такой список называется пустым списком, который эквивалентен атому Nil. Первый элемент списка (он может быть атомом или списком) называется головой списка. Часть списка, за исключением головы, называется хвостом списка. Если кроме головы список не содержит других элементов, то хвост такого списка есть пустой список.
3. Структуры данных в языке LISP Списки представляют собой довольно гибкие структуры данных, поскольку могут объединять элементы разных типов и иметь произвольную длину и размерность (вложенность). Например, в LISP возможен такой список: ("а" (9) () N (? (WOMBAT)) (A. В) NIL 0. 9) Этот список содержит элементы разных типов — строки, числа с фиксированной и плавающей точкой, атомы, булевы значения, точечные пары и другие списки.
3. Структуры данных в языке LISP Но списки имеют и определенные недостатки, из-за которых в LISP были включены и другие структуры данных. Списки в LISP представляют собой стеки, т. е. доступ к ним возможен только с одного конца списка. Манипулируя только таким списком, невозможно обратиться к элементу списка по его позиции, как это делается с элементом массива. Поэтому для представления больших совокупностей относительно постоянных или редко меняющихся данных в LISP были включены другие типы структур. В современных версиях LISP поддерживаются массивы, хэш -таблицы и структуры, подобные записям, которые позволяют эффективнее использовать пространство памяти и повысить скорость доступа.
3. Структуры данных в языке LISP Вычисление значений Программа читает входящие команды, имеющие вид Sвыражений, вычисляет значение каждого и выводит результат. Значением S-выражения является тоже S-выражение. (Кроме S -выражений в мире LISP ничего нет!). Вычисление значения выполняется по формальным правилам: 1. Если входное S-выражение является атомом то: - для атомов T и Nil их значением является сами атомы T и Nil соответственно; - для атомов, представляющих корректное изображение числа, строки или битовой шкалы значением также является сам атом. Такие атомы (Nil, T, числа, строки и битовые шкалы) будем далее называть самоопределенными. - все прочие атомы могут иметь значением S-выражение, которое было присвоено атому вызовом функций SET, SETQ или CSETQ. Если атому не было присвоено значения этими функциями, то такой атом не имеет значения.
3. Структуры данных в языке LISP 2. Если входное S-выражение является списком, и голова списка - атом, то этот атом рассматривается как имя функции, а оставшаяся часть списка - список параметров этой функции. Если соответствующая функция существует в системе, а список параметров корректен, то функция вычисляется. Результат вычисления и есть значение исходного S-выражения. 3. Если входное S-выражение является списком, но голова списка представляет собой список, то этот список рассматривается как т. н. лямбда-выражение. Лямбда выражение задает безымянную функцию. Хвост исходного S-выражения задает список параметров этой безымянной функции. Разумеется, лямбда-выражение составляется по строгим правилам, но в рамках данной лекции они не рассматриваются. Если голова списка не является корректным лямбда-выражением, то вычисление завершается ошибкой.
3. Структуры данных в языке LISP 4. Все остальные S-выражения значений не имеют. Попытка вычисления таких выражений вызывает ошибку. В частности, если головой списка является число, строка, битовая шкала или список (не являющийся лямбдавыражением), то ведущая функция заведомо не существует и не может быть вычислена. S-выражения, которые имеют значения, называются формами.
3. Структуры данных в языке LISP Таким образом, «вычислить функцию» означает: по Sвыражениям - параметрам получить результирующее Sвыражение. Например, список (+ X Y) представляет математическое выражение в форме (<функция> <1 -й аргумент> <2 -й аргумент>), которое обозначает сложение двух чисел. Такой метод обозначений отличается от привычного нам обозначения функции n переменных в виде f(x 1, . . . xn). Запись F(G(x)) означает вычисление G(x), а затем вычисление функции F, с аргументом, равным G(x). В обозначениях Лиспа конструкция записывается в виде: (F (G X))
3. Структуры данных в языке LISP Рассмотрим, например, вычисление следующего S-выражения: (F (G 1 2 (H "q" "p")) (I 12 -1)) Вычисление будет проходить через следующие этапы: 1. Вычисляется первый аргумент функции F - S-выражение (G 1 2 (H "q" "P")). Это выражение, в свою очередь, является вызовом функции G с аргументами 1 2 и (H "q" "P"). Значением атома 1 является сам атом 1, а значением атома 2 является сам атом 2. А вот значение S-выражения (H "q" "p") нужно вычислять. 2. S-выражение (H "q" "p") является вызовом функции H с двумя аргументами "q" и "p". Значением атома "q" является сам атом "q", а значением атома "p" является сам атом "p". Далее вычисляется значение функции H с двумя аргументами "p" и "q". Предположим, что это значение равно S-выражению Рез_Н. Таким образом, первый аргумент исходного вызова функции F принимает вид (G 1 2 Рез_Н). Это выражение вычисляется, предположим, что результат вычисления равен Рез_G. 3. Далее исходное выражение приобретает вид (F Рез_G (I 12 -1)). Первый аргумент вызова функции F вычислен. Вычисляется второй аргумент. Значение второго аргумента равно значению функции I с двумя аргументами: 1 и 2. Предположим, что это значение равно Рез_I. 4. Теперь исходное выражение приобрело вид: (F Рез_G Рез_I). Вычисляется значение функции F с заданными аргументами. Это значение и есть значение исходного S-выражения (F (G 1 2 Рез_Н) (I 12 -1))
4. Обработка списков Большинство LISP-программ можно специфицировать, используя только пять простейших операторов над символическими выражениями и одну специальную форму (условное выражение). Эта элегантность и красота языка LISP часто не заметна неопытному взгляду, поскольку большинство LISP-приложений включает множество дополнительных операторов, собственно к LISP не относящихся. Как оказалось, структурой, наиболее подходящей для нечисловых вычислений, являются списки. Именно такие вычисления необходимо выполнять в процессе поиска решения в пространстве альтернатив. В списке можно держать в поле зрения те альтернативные варианты, которые уже были рассмотрены ранее, те, которые еще предстоит рассмотреть, и т. д. Поскольку между списками и древовидными ориентированными графами существует изоморфизм, естественно представлять развернутое пространство состояний в виде одного или более списков.
4. Обработка списков Примитивы в LISP В языке LISP имеется пять операций, которые, хотя и не имеют специальных наименований, лежат в основе всех остальных. LISP использует их в качестве виртуального машинного кода при построении более сложных примитивов. Например, в LISP имеются полиморфные предикаты равенства. Пусть s — множество символических выражений. Можно, например, записать: Е(Х , Y): S x S -> {Т, NIL} Это означает, что Е является функцией двух аргументов, причем оба аргумента — символические выражения из множества S, которые могут принимать значение либо Т, либо Ni. L. 1. Е(Х , Y): S x S -> {Т, NIL} проверяет, равны ли два атома. 2. А(Х): S -> {Т, NIL} проверяет, является ли символическое выражение атомом. З. Н(Х): S -> S извлекает голову символического выражения, которое не является атомом; если х — атом, то результат функции не определен. 4. Т(Х): S —> S извлекает хвост символического выражения, которое не является атомом; если х — атом, то результат функции не определен. 5. С(Х , Y): S х S —> S формирует символическое выражение; если А и В являются символическими выражениями , то можно сформировать новое символическое выражение (А. В).
4. Обработка списков Совокупности композиций функций и условного оператора описанных операций вполне достаточно для того, чтобы вычислить любую обобщенную рекурсивную функцию. Композиция функций — это способность сделать значение одной функции аргументом другой, т. е. организовать гнездование функций, например С(Н(Х), У). Фактически система, состоящая из трех компонентов: 1) единственного атома Ni. L; 2) условного выражения, проверяющего равенство, в форме if E(X, NIL) then. . . else. . . 3) функций Н(Х), Т(Х), С(ХД)
4. Обработка списков Можно использовать списки и для представления ассоциативной связи одних символов с другими. Например, список ((Alabama Montgomery) (Alaska Juneau) (Arizona Phoenix). . . ) позволяет представить столицы пятидесяти штатов. Представленная ниже LISP-программа сможет затем извлечь название столицы заданного штата из этого ассоциативного списка. (defun assoc (key alist) (cond ((null alist) NIL) ((eq (first a list)) key) (first alist)) (T (assoc key (rest alist)))) ) Если обратиться к этой функции с помощью, например, выражения (assoc 'Alaska '((Alabama Montgomery)(Alaska Juneau)(Arizona Phoenix). . . ), то функция возвратит список (Alaska Juneau). NULL — это предикат, который проверяет, не пуст ли список (Если значение единственного аргумента функции есть Nil, то функция возвращает T. Во всех остальных случаях (когда значение аргумента НЕ есть Nil, функция возвращает Ni ) EQ — предикат, который проверяет равенство двух атомов (возвращает в качестве результата атом T, если равны и Nil во всех остальных случаях функция) FIRST — функция, которая возвращает головной элемент списка REST — функция, которая возвращает хвост списка
4. Обработка списков Основным условным выражением в LISP является COND - принимает произвольное количество аргументов. Каждый аргумент функции COND должен быть списком ровно из двух элементов (первый - условие, второй – результ). Таким образом, общий вид вызова COND: (COND (Условие 1 Результат1) (Условие 2 Результат2). . . (Условие n Результат n)) В свою очередь, каждая из конструкций Условие i и Результат i могут быть произвольными S-выражениями (списками или атомами).
4. Обработка списков Функция вычисляет свое значение следующим образом: - Вычисляется значение выражения Условие 1; - Если это значение есть атом T, то вычисляется значение выражения Результат1 и это значение возвращается в качестве результата функции COND; - Если это значение НЕ есть атом T, то вычисляется значение выражения Условие 2; - Если это значение есть атом T, то вычисляется значение выражения Результат2 и это значение возвращается в качестве результата функции COND; Процесс повторяется до тех пор, пока список аргументов будет исчерпан, либо пока значение одного из условий не окажется атомом T. Если не одно из условий не дает в результате вычисления атом T, то функция COND вернет атом Nil.
5. Сопоставление с образцом Одним из ключевых компонентов в большинстве программ искусственного интеллекта является анализатор соответствия — компонент, который некоторым образом сравнивает поступающие на его вход списки (или другие структуры данных) с имеющимися символическими образцами и таким образом выполняет распознавание входных данных. Факты, относящиеся к состоянию окружающего мира, представляются в форме "предикат— аргумент". Факт, что робот находится в комнате, представим в модели мира формулой: at(robot, room). На языке LISP этот факт будет представлен символическим выражением: (at robot room). Положим, что ? — символ универсальной подстановки и что выражение (at robot ? ) представляет собой образец, которому соответствует и выражение (at robot room), и другое выражение в форме (at robot blah), где blah — любой символ.
5. Сопоставление с образцом На языке LISP несложно разработать простой анализатор соответствия, который будет сравнивать два одинарных списка (т. е. не имеющих подсписков в качестве элементов) и возвращать значение TRUE, если один из них, sample (пример), можно представить как реализацию другого — pattern (образец). Текст такой программы приведен ниже. (defun match (sample pattern) (cond ((and (null sample) (null pattern)) T) ((or (null sample) (null pattern)) NIL) ((eq (first pattern '? )) (match (rest sample) (rest pattern))) ((eq (first sample) (first pattern)) (match (rest sample) (rest pattern))) (T NIL)) ) Обращение к этой функции в выражении (match '(at robot room) '(at robot ? )) даст результат Т, а обращение (match '(at box room) '(at robot ? )) даст результат NIL.
5. Сопоставление с образцом Можно сделать так, чтобы анализатор различал символ универсальной подстановки в качестве переменной, которой может быть присвоено значение символа, соответствие с которым анализируется. Например, образцу (at ? X ? Y) должен соответствовать пример (at robot room), который образуется при подстановке {? X/robot, ? Y/room}. Но главное назначение анализатора соответствия — показать, что имеющаяся в программе модель мира удовлетворяет условиям некоторого правила, которое в таком случае программа сможет затем применить. Пусть в программе имеется простое правило, утверждающее, что все объекты, находящиеся в комнате, нужно покрасить: if (at ? X room) then (paint ? X)
5. Сопоставление с образцом Нужно проверить, соответствует ли условию if (at ? X room) этого правила модель мира, представленная списком (at box room). Полученную подстановку {? X/box} применим затем к констатирующей части правила и получим в результате (paint box). Анализ соответствия — это довольно "расточительная" операция в смысле расхода вычислительных ресурсов, если только не пользоваться ею с умом. Существуют довольно эффективные алгоритмы, которые позволяют решить, в каких именно из имеющихся наборах правил сформулированы условия, соответствующие анализируемым данным. В настоящее время язык LISP не используется для реализации систем, базирующихся на правилах, в основном из-за недостаточной его эффективности, но попрежнему используется тот принцип обработки списков при анализе соответствия, который был впервые реализован на LISP.
6. Почему. LISP не является языком представления знаний Невольно напрашивается вопрос, почему с помощью LISP нельзя удовлетворить все наши потребности в области представления знаний. Ведь, как было показано, этот язык позволяет хранить и обрабатывать символические структуры и управлять процессом их оценивания. С его помощью можно реализовать анализ соответствия, эвристический поиск и устанавливать наличие ассоциативной связи между символами. Разве всего этого недостаточно для того, чтобы на базе LISP реализовать физическую символическую систему для разумных действий?
6. Почему. LISP не является языком представления знаний Символический уровень и уровень знаний Среда символических вычислений весьма подходит для реализации структур, необходимых для представления знаний, но символический уровень анализа ничего не говорит нам о том, чем должны быть такие структуры. Нужен еще один уровень анализа, расположенный выше символического, который будет ограничивать набор возможных представлений при решении некоторой проблемы. Ньюэлл в своей работе [Newell, 1982] назвал его уровнем знаний и предположил, что знания должны быть охарактеризованы функционально, т. е. в терминах действия, а не в терминах структурной организации.
6. Почему. LISP не является языком представления знаний Из предложения Ньюэлла следует, что нельзя адекватно представлять знания, не располагая сведениями о том, как они могут быть использованы. Возможно, это одна из причин, которая побуждает нас разделить факты и знания. То, что норманны в 1066 году захватили Англию, — это только факт. Но наше знание этого факта может быть использовано совершенно по-разному. В частности, это в равной степени позволит кому-то успешно сдать экзамен по истории или спровоцировать драку между англичанами и французами.
6. Почему. LISP не является языком представления знаний Если цель состоит именно в том, чтобы получить более высокую оценку на экзамене, то представление знаний лучше связать с другими фактами, например сведениями о короле Гарольде или короле Вильяме. Если же цель — разжечь ненависть между англичанами и французами, то лучше воспользоваться такими фактами, как вандализм английский футбольных фанатов или эксцентричная манера вести себя на дорогах, присущая французским мотоциклистам. Таким образом, не существует "правильного" способа представить какой-то факт, но существует более или менее полезное представление знания некоторыми фактами.
6. Почему. LISP не является языком представления знаний В синтаксисе и семантике языка LISP нет ничего такого, что подсказало бы, как организовать знания. Список — это удобная, но иногда неэффективная в работе структура данных, он не имеет никаких преимуществ с точки зрения представления знаний по сравнению с массивом в языке FORTRAN и менее удобен, чем класс в языке C++. Утверждение о широких возможностях LISP имеет скорее отношение к тому, что для опытного программиста довольно легко создать на его основе производный язык по своему выбору. Но такой специализированный интерпретатор, функционирующий в среде LISP, оказывается очень непроизводительным, и в этом его основной недостаток.
7. Языки представления знаний И представление знаний, и объектно-ориентированный подход к программированию основываются на одной и той же идее, что конкретная предметная область приложения имеет такое же значение для модели, как и для проблем, которые нужно разрешить. Если вы работаете в определенной предметной области — технической, издательском деле или сфере управления, — то вид проблемы, которую потребуется решить, будет изменяться не только от проекта к проекту, но и на разных стадиях работы над проектом, по мере того как будут уточняться концепции проекта и его цели. Относительно постоянными остаются только "обитатели" предметной области — машины, процессы, неживые объекты или люди.
7. Языки представления знаний Представление этих сущностей, которое может быть воспринято машиной и обработано программой, формируется таким образом, чтобы его можно было использовать в самых разнообразных проектах. В самом общем виде разница между представлением знаний и объектно-ориентированным подходом состоит в том, что в первом случае стремятся представить не только сущности в определенной предметной области, но и знания об этих сущностях, которыми обладают эксперты в данной области. Например, экспертам известны различные способы классификации, упорядочивания, обозрения и манипулирования такими сущностями, которые позволяют эффективно решать разнообразные задачи.
7. Языки представления знаний Причина, по которой в индустрии производства программных продуктов продолжают оставаться популярными такие инструментальные средства, состоит в том, что как бы ни тяжело было кодировать человеческие знания, такие трудности ничто в сравнении с тем, что может наделать с указателями C++ неопытный программист. Построение системы, базирующейся на правилах на таком языке, — это нетривиальная задача, которую лучше всего поручить специалистам.
7. Языки представления знаний Другая причина состоит в том, что при создании с нуля системы, базирующейся на знаниях, аналитики и программисты попадают в такое обширное пространство альтернативных решений, что запутаться в нем гораздо легче, чем отыскать правильный путь. Языки представления знаний предлагают разработчику как программные средства высокого уровня, так и множество конструкций низкого уровня, которые можно использовать для организации и применения знаний, синтаксические и семантические примитивы, уже не раз доказавшие свою полезность на практике.
Благодарю за внимание!
Литература: 1. Иллюстрированный самоучитель по экспертным системам 2. http: //homelisp. ru/help/lisp. html - Очень краткое введение в язык Лисп


