Использование вычислительной техники 1/2
Статья полностью называется «Использование вычислительной техники, программирование и искусственный интеллект (перспективы развития)», автор С. С. Лавров. Взята из журнала «Микропроцессорные устройства и системы», №3, 1984 год.
Введение
В данной статье рассматривается место и роль вычислительной техники в современном обществе и пути наиболее эффективною использования этой техники в интересах общества.
Между обществом и вычислительной техникой можно выделить, по меньшей мере, два промежуточных звена: задачи и программы. Задачи возникают как средство достижения целей, стоящих перед обществом, программы – как средство заставить вычислительную машину решить поставленные задачи. Отсюда ясен приоритет общественных целей перед конкретными задачами, задач – перед программами и программ – перед аппаратными средствами вычислительной техники. Последнее проявляется, в частности, в том, что на разработку программ расходуется в два с лишним раза больше средств, чем на разработку аппаратуры.
Естественно, что имеются в виду лишь те задачи, которые прямо связаны с обработкой информации, так как только с информацией имеют дело вычислительные машины. В связи со значительным усложнением социально-экономической структуры общества в период научно-технической революции, появлением совершенно новых отраслей промышленности и видов продукции, рождением новых научных дисциплин и возрастанием роли науки в жизни общества, в связи с усложнением технологических процессов, самих изделий и роста числа параметров, по которым они оцениваются, роль информации, информационных процессов в жизни общества неизмеримо возросла. Этим, по существу, и вызвано появление вычислительной техники и необычайно высокий темп роста её применений. Вторая причина – большие явные и скрытые возможности вычислительной техники, бурный рост этих возможностей, пределов которому пока не видно, универсальность и гибкость средств вычислительной техники.
Если задачи возникают непосредственно в обществе, причём на всех уровнях общественной иерархии, то программы часто воспринимаются как помеха на пути использования вычислительной техники, как неизбежное зло. Это вызвано тем, что программы сами по себе нужны не человеку, а лишь машине, чтобы она, работая по программе, выработала результат решения задачи. Он-то и является конечным желаемым звеном всей цепочки. Впрочем, результат решения одной задачи обычно оказывается лишь отправной точкой для постановки новых задач.
Центральная проблема в области использования вычислительной техники – это сокращение усилий, времени и средств, затрачиваемых на программирование, обеспечение возможности сосредоточиться на самой задаче. Для этого нужно, чтобы машина непосредственно «понимала» задачу, поставленную человеком, а для этого надо научиться передавать машине человеческие знания.
Есть ещё одна, не менее важная причина, по которой следует переходить от традиционных средств программирования к средствам более высокого уровня, ориентированным непосредственно на задачи, а не на программы. Проектируемые супер-ЭВМ будут способны выполнять программы, в десятки и сотни раз более сложные, чем самые большие программы для современных ЭВМ. Но уже сейчас составление больших программ традиционными средствами находится на пределе человеческих возможностей. Надо искать и внедрять новые средства, позволяющие автоматизировать не только трансляцию и выполнение, но и разработку, синтез алгоритмов непосредственно по постановке задачи.
Такое повышение уровня средств общения человека с вычислительной техникой возможно только на основе интенсивного использования искусственною интеллекта. Необходимо также развивать существующие средства программирования и системное программное обеспечение ЭВМ.
1. Виды знания и базы знаний
Как отмечалось выше, чтобы машина понимала задачу, она должна обладать запасом знаний. Знания, человека, в том числе – знания, передаваемые им машине, делятся на три основные категории.
Концептуальное, понятийное знание воплощено, прежде всего, в словах человеческой речи, конкретнее – в научно-технических терминах и, естественно, в стоящих за этими терминами классах объектов окружающего нас мира и их свойствах. Сюда входят также связи, отношения к зависимости между понятиями и их свойствами, причём связи абстрактные, также выражаемые словами и терминами. Концептуальное знание – это сфера, главным образом, фундаментальных наук, но и прикладные науки во многом базируются на этой форме знания.
Фактуальное, предметное знание – это совокупность сведений о качественных и количественных характеристиках конкретных объектов. Именно с этой категорией знания чаще всего связываются термины «информация» и «данные», хотя такое использование этих терминов несколько принижает их значение. Любое знание несёт в себе информацию и может быть представлено в виде данных. Фактуальное знание – это то, с чем прежде всего имели дело вычислительные машины и с чем они больше всего имеют дело по настоящее время. Современная форма накопления фактуального знания – это то, что принято называть базами данных. Правда для организации баз данных, для поиска в них нужной информации надо опираться на концептуальное знание.
Алгоритмическое, процедурное знание – это то, что принято называть словами «умение», «технология», «know-how» и т. п. В вычислительном деле алгоритмическое знание реализуется в виде алгоритмов, программ и подпрограмм, но не всяких, а таких, которые могут передаваться из рук в руки и использоваться без участия их авторов. Такая реализация алгоритмического знания называется программным продуктом. Наиболее распространённая, но не единственная форма программного продукта – это пакеты прикладных программ. Они обычно ориентированы на конкретную область применения вычислительной техники. Организация и использование пакетов прикладных программ также базируется на концептуальном знании.
Ясно, что концептуальное, знание является более высокой, определяющей категорией знания, хотя, с точки зрения практики, другие, категории могут казаться более важными. Вероятно, именно по последней причине концептуальное знание редко воплощается в форме, доступной зля обработки на ЭВМ. А если воплощается, то чаще всего неполно и односторонне. Носителем концептуального знания в большинстве случаев остаётся человек. Это тормозит автоматизацию многих процессов.
Системы машинного представления концептуального знания, а точнее – системы, реализующие все три категории знания, но выделяющие концептуальное знание на первый план и работающие на основе его интенсивного использования, называются базами знаний. Их можно называть и системами искусственного интеллекта, хотя для последних присутствие двух других категорий знания не столь существенно и даже не обязательно – они и получают задание и дают ответ в терминах только концептуального знания. Создание и широкое использование баз знаний во всех областях применения вычислительной техники – одна из актуальнейших задач ближайших десятилетий.
Ниже будем придерживаться следующей терминологии. Концептуальную часть базы знаний будем называть моделью предметной области, алгоритмическую часть – пакетом прикладных программ, я фактуальную часть – базой данных. Эта терминология практически совпадает с общепринятой.
2. Задачи и спецификации
Задача может быть решена машиной только в том случае, если она формально поставлена – если для неё написана формальная спецификация. Последняя должна опираться на некоторую базу знаний. Модель предметной области описывает общую обстановку, в которой возникла задача, а спецификация – содержание задачи. Их сочетание позволяет установить, какие абстрактные связи и зависимости, в каких сочетаниях и в какой последовательности должны быть использованы для решения задачи. Пакет прикладных программ представляет конкретные программные средства, стоящие за этими зависимостями, а также содержит алгоритмы, которые могут быть использованы для решения возникающих при этом уравнении и систем уравнений. Наконец, база данных поставляет все или часть исходных данных для выполнения этих алгоритмов, недостающие данные должны содержаться в спецификации.
Этим трём частям базы знаний соответствуют три этапа решения задачи: нахождение абстрактной программы решения задачи (в терминах концептуального знания), перевод этой программы на доступный машине язык (не обязательно машинный язык, а возможно, одни из языков программирования в традиционном смысле слова), дальнейшая трансляция и выполнение программы. Пионером такого подхода к использованию ЭВМ является член-корреспондент АН Эстонской ССР Э. X. Тыугу.
Построение абстрактной программы – это задача, лежащая в рамках искусственного интеллекта и решаемая его методами. Перевод абстрактной программы на алгоритмический язык – задача более традиционная для (системного) программирования. Она решается средствами и методами теории трансляции, в частности, – средствами макрообработки. Последний этап реализуется вполне привычными средствами, существующими уже сейчас (в основном).
Описанная схема содержит некоторые пробелы.
Поясним один из них на примере самолётостроении в качестве предметной области. Модель этой предметной области содержит общие понятия, относящиеся к конструированию самолётов, а также понятия смежных областей знания – аэродинамики, теории упругости, материаловедения и т. д. Но этого ещё недостаточно для постановки задач, связанных с проектированном конкретного самолёта. Должны быть как-то определены тип самолёта, основные требования к нему – значении его главных проектных характеристик, ограничения на параметры, выбираемые в ходе проектирования, возможные варианты конструкции и т. п. Всё это вместе составляет описание объекта, по отношению к которому ставится задача.
В ходе решения основной задачи возникают различные частные задачи, например, аэродинамический расчёт самолёта. Они могут распадаться на подзадачи – расчёт максимальной дальности полёта в зависимости от полезной нагрузки, определение манёвренности, длины пробега при посадке и т. п.
Подобные задачи и подзадачи, от носящиеся к одному объекту, могут ставиться и решаться независимо друг от друга разными людьми. Их решение может приводить к изменению, уточнению описания объекта, тогда как модель предметной области остаётся неизменной (если только в ходе решения задачи не было сделано открытий фундаментального характера – например, обнаружен новый вид динамической неустойчивости самолёта и найдены методы её расчёта и борьбы с ней).
Описания исследуемых объектов составляют текущую, динамическую часть базы знаний, занимающую промежуточное положение между моделью предметной области и базой данных, ближе к последней. Такое описание неправомерно считать частью спецификации задачи, поскольку по отношению к одному объекту ставится, как правило, много задач.
Второе упрощение, содержащееся в изложенной выше схеме, – это допущение, что задача может быть автоматически решена до конца, как только для неё составлена формальная спецификация. В действительности, спецификации – сложные объекты, требующие проверки их правильности, отладки и исправления в ходе решения задач. Поэтому решение задач может быть лишь автоматизированным – оно требует постоянного участия человека и тщательного контроля с его стороны. Автоматизированные системы решения задач должны быть поэтому диалоговыми. Они должны очень точно информировать человека о всех трудностях, возникших в ходе решения задачи. Наиболее вероятный источник этих трудностей – неполнота спецификации задачи или описания объекта. Не исключена также неполнота базы знаний, особенно, на первых порах её использования. Вполне возможно также, что перед системой поставлена объективно трудная задача, выходящая за рамки её возможностей.
Для контроля за правильностью решения система должна снабжать человека достаточно полной информацией о промежуточных шагах решения, о полученных при этом промежуточных результатах.
Изложенная схема представляет собой типичный, универсальный метод использования баз знаний. Создание и внедрение автоматизированных диалоговых систем решения задач на основе баз знаний следует считать одной из главных проблем использования средств вычислительной техники.
Надо ориентироваться на постеленный плановый переход от алгоритмических языков к языкам спецификаций в качестве основы использования средств вычислительной техники.
3. Языковые проблемы
Наиболее распространённые и известные языки программирования (Фортран, Алгол, Кобол, ПЛ-1, Алгол-68, Паскаль. Ада и др.) принадлежат фактически к одному семейству.
Применение языков этого семейства обеспечивало на протяжении более чем 25 лет достаточно эффективное использование вычислительной техники. За это время это семейство языков проделало заметную эволюцию, но в основе оно осталось тем же, чем было с самого начала – классом языков операторного, процедурного типа. Это – типичные языки для описания и представления алгоритмического знания.
Более разнообразны языки, ориентированные на описание и использование фактуального знания. Они лет на 10 моложе. Их уровень в некотором отношении выше уровня языков первого семейства – они ближе по своей природе к языкам спецификаций. Они описывают, с одной стороны, структуру базы данных, затрагивая её концептуальную сторону (имена таблиц, доменов и атрибутов – это, как правило, содержательные термины). С другой стороны, они предоставляют средства для формулировки запросов к базе данных также на более или менее содержательном уровне, не касаясь способа получения ответа на запрос. Особенно характерны в этом отношении реляционные базы данных, получившие, впрочем, наименьшее распространение.
И, наконец, существует семейство языков, ведущих, в основном, своё начало от языка Лисп (1960 г.). Это – различные версии Лиспа, а также языки Плэнкср, Коннайвер и др. Примыкает к ним язык Пролог, интерес к которому особенно возрос после того, как японцы в своём проекте ЭВМ пятого поколения отвели Прологу одно из центральных мест. Это семейство характеризуют по-разному – как языки для обработки символьной информации, языки искусственного интеллекта, языки управления роботами, языки логического программирования или же как функциональные, непроцедурные языки. Некоторые их черты, такие как списки свойств и ассоциативные списки, прямо ориентированы на предоставление знаний, другие – использование списочных структур, рекурсивность, механизм возвратов (бектрекинга) – на решение логических задач типа автоматического доказательства теорем. Всё это крайне важно для создания и использования баз знаний.
Обратимся к другим классам формальных языков, лежащим вне сферы программирования. Почти любая область человеческой деятельности вырабатывает для себя, если не полностью формальный или формализованный язык (математические и химические формулы, технические чертежи, шахматная нотация, нотная грамота и т.д.), то весьма специфический жаргон естественного языка. Естественный язык хорош для повседневного общения и явно неудобен, недостаточен (даже в общении между людьми) там, где требуется точность, определённость и лаконичность – особенно в математике, естественных науках, технике.
Можно с уверенностью утверждать, что естественный язык непригоден в подавляющем большинстве случаев общения человека с вычислительной техникой. Он хорошо приспособлен для восприятия человеком с его высоким уровнем интеллекта и богатейшими возможностями ассоциативного восприятия, но крайне сложен для анализа и правильного понимания машиной, «интеллект» которой весьма специфичен, а ассоциативные возможности, даже для будущих поколений – очень ограничены.
Пока число параллельно работающих процессоров вычислительного комплекса не достигнет 106-108, а число битов оперативной памяти 1012-1015, трудно надеяться, что такой комплекс сможет достаточно эффективно воспринимать человеческую речь. Исключение может быть сделано для самых простых вопросов и заданий, почти не допускающих двоякого толкования, но и здесь вероятность ошибочной реакции остаётся очень большой (порядка нескольких процентов).
С другой стороны, очень желательно, чтобы машина формулировала свои сообщения человеку на языке, близком к естественному, особенно – в диалоговых системах, и нестандартных ситуациях. Это не очень сложно осуществить, и во многих существующих системах так и делается.
Среди формальных языков особенно выделяются языки математической логики, а среди них – язык (классического) исчисления предикатов первого порядка. Вот уже около 100 лет он используется в математике как (абстрактный) язык представления знаний и за это время он не претерпел существенных изменений. На нём в большей или меньшей степени базируются и все другие логико-математические языки, а также многие средства языков программирования, особенно – языков последнего из названных выше семейств.
Экспериментальные системы логического вывода (программы автоматического доказательства теорем) также, большей частью, используют этот язык, иногда с некоторыми ограничениями, реже – в расширенном виде.
Пригодность этого языка в качестве основы для практического языка представления и использования знаний вызывает, тем не менее, бурные споры. Возражения против него часто бывают основаны на недостаточном опыте его использования в практических целях. С другой стороны, нет сомнения, что языки представления знаний должны пройти достаточно долгий путь развития. Но при этом важно, чтобы отправная точка была выбрана правильно.
Язык представления знаний и спецификаций задач неоднороден – он должен состоять из языковых средств разного назначения и разной степени сложности, предназначенных для описания:
– моделей предметных областей (концептуального знания);
– связей модели предметной области с поддерживающими её пакетом прикладных программ и базой данных;
– объектов, по отношению к которым ставятся задачи;
– собственно спецификаций задач.
Наиболее сложны средства первой категории, наиболее просты средства спецификации задач, ориентированные на массового пользователи. Соответственно должна убывать степень формализованности этих средств, увеличиваться их внешняя близость к естественному языку. Но по существу все эти средства должны оставаться строго формальными и однозначно понимаемыми.
Из сказанного вытекают следующие задачи в области развития средств использования вычислительной техники: разработка и развитие языковых средств представления знаний и спецификаций задач, исследование возможностей и развитие методов общения человека с машиной на естественном языке, исследования в области формально-логических языков с целью выработки основы для наиболее естественного и полного представления и использовании знаний.
4. Искусственный интеллект
Выше, в разделе «Виды знания и базы знаний», искусственный интеллект был охарактеризован как система представления и обработки концептуального знания. По-видимому, это наиболее общее и точное его определение. Часто искусственный интеллект связывают с обработкой текстов и устных сообщений на естественном языке. Поскольку естественный язык – это форма представления знаний, наиболее широко используемая человеком, то обработка сообщений на естественном языке должна составлять важную область исследований по искусственному интеллекту, но далеко не единственную.
Более конкретно, задача обработки сообщений на естественных языках распадается на следующие подзадачи:
– анализ и синтез сообщений в письменной и устной форме;
– преобразование сообщений во внутреннее представление и обратно;
– перевод с одного естественного языка на другой.
Отдельно следует упомянуть задачу автоматического реферирования текстов на естественных языках.
Анализ и обработка (распознавание) всех видов изображений также тесно примыкают к сфере искусственного интеллекта, но не исчерпываются им, так как изображения, особенно – картины внешнего мира, обычно содержат очень много сверх того, что может быть отнесено к категории концептуального знания. Лишь после того как из изображения вычленены элементы, несущие содержательную смысловую нагрузку (в рамках поставленной задачи), дальнейший анализ относится к области искусственного интеллекта.
Автоматическое доказательство теорем – это одна из центральных проблем искусственного интеллекта, но она также не исчерпывает его содержания. Почти все задачи естественным путём сводятся к доказательству некоторой теоремы, а именно – теоремы существования решения задачи. Но до этапа доказательства надо осуществить такое сведение, а после доказательства теоремы – извлечь из него способ (алгоритм) получения решения.
В явном или неявном виде доказательство теоремы существования всегда присутствует в решении задачи и обычно оказывается самым сложным этапом решения. Именно поэтому столь велика роль автоматического доказательства теорем в проблеме искусственного интеллекта.
Почти все созданные к настоящему времени отечественные и зарубежные программы автоматического доказательства теорем работают и рамках исчисления предикатов первого порядка. Очень многие из них базируются на методе резолюций, хотя в Советском Союзе были заложены основы более мощного и универсального подхода – обратного метода С. Ю. Маслова.
Метод резолюций предполагает существенное преобразование исходной формы теоремы. Это затрудняет для человека слежение за поиском доказательства, мешает разобрать структуру доказательства. Необходимо развивать другие методы, в частности – упомянутый выше обратный метод, сохраняющие исходную форму теоремы и посылок, из которых она выводится.
Следует также развивать методы доказательства теорем в других логических исчислениях – логиках высших порядков, модальных логиках, динамических логиках и т. д. Классы логических исчислений следует отбирать, руководствуясь системой представления концептуального знания в базах знаний, с тем чтобы программы доказательства теорем не были излишне сложными.
Более того, для многих предметных областей характерны специфические приёмы доказательства теорем существования. Включение описании таких приёмов в модель предметной области с соответствующей алгоритмической поддержкой может очень существенно повысить эффективность систем искусственного интеллекта и базирующихся на них систем решения задач. Это ярко продемонстрировали работы, проводимые под руководством член-корреспондента АН СССР В. М. Матросова.
Итак, насущные проблемы в области искусственного интеллекта сводятся к следующему:
– развитие методов и алгоритмов автоматического доказательства теорем в различных логических исчислениях;
– поиск специфических методов и алгоритмов доказательства теорем для конкретных предметных областей;
– использование автоматического, доказательства теорем в автоматизированных системах решения задач;
– развитие методов и алгоритмов обработки письменных и устных сообщении на естественных языках;
– развитие методов автоматического реферирования текстов на естественных языках;
– развитие методов анализа, распознавания, синтеза, и преобразования изображений.