Проектирование систем искусственного интеллекта

Различные подходы к построению систем ИИ

Имеется, по крайней мере, две точки зрения на то, что следовало бы считать искусственным интеллектом. Первую можно назвать нейробионической. Ее сторонники ставят перед собой цель воспроизвести искусственным образом те процессы, которые протекают в мозгу человека, — это путь изучения естественного мозга, выявление способов его работы, создания технических средств для повторения биологических структур и протекающих в них процессов.
Вторая точка зрения, доминирующая в проблеме искусственного интеллекта, может быть названа информационной. Сторонники информационного исхода считают, что основной целью работ в искусственном интеллекте является не построение технического аналога биологической системы, а создание средств для решения задач, традиционно считающихся интеллектуальными.
Информационная точка зрения в свою очередь неоднородна. В ней можно выделить три направления.
  • Часть специалистов считает, что можно найти свой способ ее решения на ЭВМ, который даст либо результат, подобный человеческому, либо даже лучший. Специалисты этого направления неоднократно демонстрировали свое искусство по созданию программ такого рода. Достаточно назвать, например, программы для игры в шахматы, которые играют в эту игру лучше подавляющего большинства людей, проводящих время за шахматной доской. Но делают это программы совсем не так, как люди.
  • Другая часть специалистов считает, что искусственный интеллект должен имитировать не решение отдельных (пусть и весьма творческих) задач. Ибо естественный интеллект человека — это его способность при необходимости обучаться тому или иному виду творческой деятельности, значит, и программы, создаваемые в искусственном интеллекте, должны быть ориентированы не на решение конкретных задач, а на создание для автоматического построения необходимых программ решения конкретных задач, когда в этом возникает необходимость. Именно эта группа исследователей сейчас определяет лицо искусственного интеллекта, составляя основную массу специалистов этого профиля.
  • Третья часть специалистов – это программисты, чьими руками делают программы для решения задач искусственного интеллекта.
    Они склонны рассматривать область своей деятельности как новый виток развития программирования. Они считают, что средства, разрабатываемые для написания программ решения интеллектуальных задач, в конце концов, есть средства, позволяющие по описанию задачи на профессиональном естественном языке построить нужную программу на основании тех стандартных программных модулей, которые хранятся в памяти машины. Все метасредства, которые предлагают те, кто рассматривает искусственный интеллект как способ разобраться на информационном уровне, какие функции реализует естественный интеллект, когда он решает задачу, программисты видят сквозь призму своей цели — создания интеллектуального программного обеспечения (по существу, комплекса средств, автоматизирующих деятельность самого программиста).
  • В те годы, когда возникали ЭВМ, мало кто предполагал, что они очень быстро вытеснят из вычислительной сферы все остальные вычислительные устройства. Дж. Фон-Нейман, с именем которого связана идея архитектуры классической ЭВМ, в те годы интересовался и другой организацией процесса вычислений, использующей аналоги нейроподобных структур; первые модели Формальных нейронов были предложены Мак-Калоком и Питсом.

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

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

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


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

    Дальнейшие исследования в области нейробионических устройств шли по пути увеличения числа слоев из формальных нейронов, изменения и усложнения способа функционирования нейронов и построения решающего правила; параллельно развивалась теория персептронов. Но два обстоятельства затормозили эти работы. Очень быстро при решении практических задач распознавания стало понятно, что возможности устройств типа персептронов ограничены. Например, они не могли разложить изображение, являющееся комбинацией двух ранее персептрону известных, на составляющие. Это заставляло рассматривать подобную комбинацию как новое изображение. С другой стороны, Минский Н. и Пейперт С. доказали ряд теорем о персептронах, в которых обосновали их принципиальную ограниченность, а отсутствие новых идей нейробионических устройств в течение десятка лет не давало повода для развития этих исследований. Но успехи микроэлектроники последних лет, сделавшие возможным создание большого числа нейроп одобных элементов в малом объеме, вновь возродило надежды сторонников этого подхода. Появились нейрокомпьютеры, в которых процесс решения задачи развертывается на сети искусственных нейронов. Этот процесс может включать в себя множество параллельно и асинхронно протекающих подпроцессов, что сулит высокую эффективность решения задач на нейрокомпьютерах. Беда состоит только в том, что пока неизвестны регулярные приемы программирования решения задач для ЭВМ такой архитектуры.


    Программы для решения интеллектуальных задач могут быть разделены на несколько групп, которые определяются типом задач, решаемых этими программами. Первую группу составляют игровые программы, они, в свою очередь, делятся на две подгруппы: человеческие игры и компьютерные игры. Особенностью всех программ для имитации человеческих игр является большая роль поисковых процедур — поиск лучшего или локально лучшего хода требует в сложных играх типа шахмат просмотра большого числа вариантов. Недаром шахматные программы являются специальным тестом для проверки эффективности поисковых процедур.

    Программы решения интеллектуальных задач представлены на рис. 2.1.

    Различные подходы к построению систем ИИ
    Рис. 2.1.  Программы решения интеллектуальных задач

    Интересно отметить, что именно поисковые процедуры казались на первом этапе развития работ по интеллектуальным программам той метапроцедурой, с помощью которой можно будет решать все интеллектуальные задачи. Первая программа, которая обобщила эту идею, называлась "Общий решатель задач". В этой программе, созданной А. Ньюэллом, Дж. Шоу и Г. Саймоном, поиск с локальными критериями успеха был основной процедурой. Решение всех задач, по мысли авторов, могло быть сведено к поиску пути в лабиринте альтернативных возможностей.

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

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


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

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

    Компьютерные игры, получившие в последнее время столь широкое распространение, вообще говоря, не относятся традиционно к работам по искусственному интеллекту. Хотя эта ситуация столь же случайна, как и ситуация с распознаванием образов. Конечно, игры с жесткой схемой, в которых "интеллекта" практически нет, не представляют для работ по искусственному интеллекту интереса, но сценарные игры уж точно относятся к рассматриваемой области науки. В них используются сценарии развития игры, движение по которым определяется обоими партнерами. Эти же принципы применяются и в таких типичных для искусственного интеллекта задачах, как организация диалога интеллектуальной системы с пользователем на ограниченном естественном языке, интересны сценарии и для планирования целесообразной деятельности в интеллектуальных работах и других системах искусственного интеллекта.


    С самого начала появления ЭВМ стали создаваться программы для машинного перевода и автоматического реферирования текстов. Создание этих программ оказало значительное влияние на развитие искусственного интеллекта, заложило основы тех работ, которые были непосредственно связаны с естественно-языковым общением пользователей с интеллектуальными системами.

    В системах машинного перевода были разработаны модели и методы, позволяющие автоматически проводить морфологический, синтаксический и во многом семантический анализ фраз естественного языка, нащупаны приемы анализа связного текста. Все эти результаты активно используются при обработке естественно-языковых текстов в интеллектуальных системах.

    В работах по автоматическому реферированию были заложены основы понимания общей структуры текста как целого, от идеи "что говорится" был сделан переход к идее "о чем говорится". Это позволило на более высоком уровне создавать программы генерации текстов. Если первые программы такого вида основывались на жестких моделях порождения или вероятностных механизмах, то более поздние программы генерации текстов стали опираться на идеи сценариев, а также на приемы, наработанные в программах по автоматическому реферированию. Сейчас качество прозаических текстов, создаваемых с помощью ЭВМ, достаточно высоко, если тексты имеют жесткую внутреннюю структуру, определяемую их назначением. Таковы, например, волшебные сказки, в основе которых лежит жесткий сценарий поведения действующих лиц, таковы хроникальные заметки или документы, но созданы и достаточно любопытные программы, порождающие поэтические тексты, в которых наблюдается иная крайность — почти пол ное отсутствие смысловой структуры при достаточно жесткой структуре формы.

    Музыкальные программы, пожалуй, наиболее известны широкой публике, так как первые опыты по созданию таких программ сразу дали весьма обнадеживающие результаты. Этот успех связан опять-таки с наличием, с одной стороны, жестких правил при построении мелодии, а с другой стороны, во многом вероятностными моделями, порождающими остальные элементы музыкального произведения.


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

    Узнающие программы зародились в недрах исследований по распознаванию образов. Но, как уже говорилось, многие из них оказали значительное влияние на идеи, характерные для работ по созданию интеллектуальных систем, особенно при создании обучающих систем. При их разработке были найдены методы оценивания похожести одних объектов на другие, заложены основы рассуждений по аналогии и ассоциации, использования обучающих последовательностей примеров и контрпримеров; все это вошло в фонд методов, которыми пользуется специалист по искусственному интеллекту.

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

    Третье основное направление в создании искусственного интеллекта образует его фундамент. Именно здесь создается теория данного научного направления, решаются основные проблемы, связанные с центральным объектом изучения искусственного интеллекта — знаниями.

    Существуют различные подходы к построению систем ИИ. Это разделение не является историческим, когда одно мнение постепенно сменяет другое, и различные подходы существуют и сейчас. Кроме того, поскольку по-настоящему полных систем ИИ в настоящее время нет, то нельзя сказать, что какой-то подход является правильным, а какой-то — ошибочным.

    Кратко рассмотрим логический подход.


    Почему он возник? Ведь человек занимается отнюдь не только логическими измышлениями. Это высказывание, конечно, верно, но именно способность к логическому мышлению очень сильно отличает человека от животных.

    Основой для данного логического подхода служит Булева алгебра. Каждый программист знаком с нею и с логическими операторами с тех пор, когда он осваивал оператор IF. Свое дальнейшее развитие Булева алгебра получила в виде исчисления предикатов — в котором она расширена за счет введения предметных символов, отношений между ними, кванторов существования и всеобщности. Практически каждая система ИИ, построенная на логическом принципе, представляет собой машину доказательства теорем. При этом исходные данные хранятся в базе данных в виде аксиом, правила логического вывода существуют как отношения между ними. Кроме того, каждая такая машина имеет блок генерации цели, и система вывода пытается доказать данную цель как теорему. Если цель доказана, то трассировка примененных правил позвол яет получить цепочку действий, необходимых для реализации поставленной цели. Мощность такой системы определяется возможностями генератора целей и машиной доказательства теорем.

    Конечно, можно сказать, что выразительности алгебры высказываний не хватит для полноценной реализации ИИ, но стоит вспомнить, что основой всех существующих ЭВМ является бит — ячейка памяти, которая может принимать значения только 0 и 1. Таким образом, было бы логично предположить, что все, что возможно реализовать на ЭВМ, можно было бы реализовать и в виде логики предикатов. Хотя здесь ничего не говорится о том, за какое время.

    Добиться большей выразительности логическому подходу позволяет такое сравнительно новое направление, как нечеткая логика. Основным ее отличием является то, что правдивость высказывания может принимать в ней, кроме "да/нет" (1/0), еще и промежуточные значения — "не знаю" (0.5), "пациент скорее жив, чем мертв" (0.75), "пациент скорее мертв, чем жив" (0.25).


    Данный подход больше похож на мышление человека, поскольку мы на вопросы редко отвечаем только "да" или "нет". Хотя, правда, на экзамене будут приниматься только ответы из разряда классической булевой алгебры.

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

    Под структурным подходом мы подразумеваем здесь попытки построения ИИ путем моделирования структуры человеческого мозга. Одной из первых таких попыток был персептрон Френка Розенблатта. Основной моделируемой структурной единицей в персептронах (как и в большинстве других вариантов моделирования мозга) является нейрон.

    Позднее возникли и другие модели, которые в просторечии обычно известны под термином "нейронные сети" (НС). Эти модели различаются по строению отдельных нейронов, по топологии связей между ними и по алгоритмам обучения. Среди наиболее известных сейчас вариантов НС можно назвать НС с обратным распространением ошибки, сети Хопфилда, стохастические нейронные сети.

    НС наиболее успешно применяются в задачах распознавания образов, в том числе сильно зашумленных, однако имеются и примеры успешного использования их для построения собственно систем ИИ — это уже ранее упоминавшийся ТАИР.

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


    С ЧЯ связана одна очень интересная идея. Кто бы хотел жить вечно? Я думаю, что почти все ответят на этот вопрос "я".

    Представим себе, что за нами наблюдает какое-то устройство, которое следит за тем, что в каких ситуациях мы делаем, говорим. Наблюдение идет за величинами, которые поступают к нам на вход (зрение, слух, вкус, тактильные, вестибулярные и т. д.), и за величинами, которые выходят от нас (речь, движение и др.). Таким образом человек выступает здесь как типичный ЧЯ.

    Далее это устройство пытается отстроить какую-то модель таким образом, чтобы при определенных сигналах на входе она выдавала на выходе те же данные, что и человек. Если данная затея будет когда-нибудь реализована, то для всех посторонних наблюдателей такая модель будет той же личностью, что и реальный человек. А после его смерти она будет высказывать те мысли, которые предположительно высказывал бы и смоделированный человек.

    Мы можем пойти дальше и скопировать эту модель и получить брата близнеца с точно такими же "мыслями".

    Можно сказать, что "это, конечно, все интересно, но при чем тут я? Ведь эта модель только для других будет являться мной, но внутри ее будет пустота. Копируются только внешние атрибуты, но я после смерти уже не буду думать, мое сознание погаснет (для верующих людей слово "погаснет" необходимо заменить на "покинет этот мир") ". Что ж, это так. Но попробуем пойти дальше.

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


    И именно наш процесс наблюдения за деятельностью этих немногих центров является тем, что мы называем сознанием. Если мы "видим" и "слышим" наши мысли, мы в сознании, если нет, то мы находимся в бессознательном состоянии.

    Если бы мы смогли смоделировать работу именно этих немногих "сознательных" нервных центров (работа которых, правда, основана на деятельности всего остального мозга) в качестве одного ЧЯ и работу "супервизора" в качестве другого ЧЯ, то можно было бы с уверенностью говорить, что "да, данная модель думает, причем так же, как и я". Здесь я ничего не хочу говорить о том, как получить данные о работе этих нервных центров, поскольку, на мой взгляд, сегодня нет ничего такого, что позволило бы следить за мозгом человека годами и при этом не мешало бы его работе и жизни.

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

    Вспомогательные системы нижнего

    Для того, чтобы человек сознательно воспринял информацию (для примера возьмем чертеж), она должна пройти довольно длительный цикл предварительной обработки. Вначале свет попадает в глаз. Пройдя через всю оптическую систему, фотоны в конце концов попадают на сетчатку — слой светочувствительных клеток — палочек и колбочек. Вспомогательные системы нижнего
    Рис. 2.2. 
    Уже здесь — еще очень далеко от головного мозга — происходит первый этап обработки информации, поскольку, например, у млекопитающих сразу за светочувствительными клетками находится обычно два слоя нервных клеток, которые выполняют сравнительно несложную обработку.
    Теперь информация поступает по зрительному нерву в головной мозг человека, в так называемые "зрительные бугры". То, что именно сюда приходит видеоинформация для дальнейшей обработки, показывают многочисленные опыты над людьми во время различных операций, в ходе которых производилась трепанация черепа. При этом пациентам раздражали область зрительных бугров слабым электрическим полем, что вызывало у них различные световые галлюцинации. Что интересно, при изменении места раздражения, пропорционально смещению смещались и места галлюцинаций, т. е. на зрительные бугры как бы проецируется то, что мы видим.
    Некоторые исследователи пошли дальше и вживляли слепым людям целую матрицу электродов, напряжения на которых соответствовали освещенности соответствующих участков видеокамеры, размещенной на голове пациента. После операции слепые начинали различать крупные фигуры (квадрат, треугольник, круг) и даже читать текст (при вживлении матрицы 10*10). Широкому распространению данного метода лечения слепоты препятствуют как недостаточно высокий наш технический уровень, так и чрезвычайно высокая опасность операций на открытом мозге. Такого рода опыты проводятся только попутно с операцией, вызванной другими причинами.
    Далее зрительная информация поступает в отделы мозга, которые уже выделяют из нее отдельные составляющие — горизонтальные, вертикальные, диагональные линии, контуры, области светлого, темного, цветного. До этих пор мы можем без труда смоделировать работу мозга, применяя различные графические фильтры. Постепенно образы становятся все более сложными и размытыми, но графический образ картины пройдет еще долгий путь, прежде чем достигнет уровня сознания. Причем на уровне сознания у нас будет не только зрительный образ, к нему примешаются еще и звуки, запахи (если картина представляет собой натюрморт) и вкусовые ощущения. Дальнейшие ассоциации каждый может додумать сам.
    Смысл всего сказанного заключается в том, чтобы показать, что в системах ИИ имеются подсистемы, которые мы уже сейчас можем реализовать, даже не зная о том, как они реализованы у человека. Причем можем это сделать не хуже, чем у прототипа, а зачастую и лучше. Например, искусственный глаз (а равно и блок первичной обработки видеоинформации, основанные на простейших фильтрах или других сравнительно несложных устройствах) не устает, может видеть в любом диапазоне волн, легко заменяется на новый, видит при свете звезд.
    Устройства обработки звука позволяют улавливать девиацию голоса человека в 1-2 Герца. Данное изменение частоты происходит при повышенном возбуждении вегетативной нервной системы, которое, в свою очередь, часто обусловлено волнением человека. На этом принципе основаны современные детекторы лжи, которые позволяют обнаружить с высокой вероятностью даже записанные на пленку много лет назад ложные высказывания.
    Современные системы управления электродвигателем позволяют с высокой точностью держать заданные координаты даже при ударном изменении нагрузки. А ведь это примерно то же, что держать на длинной палке баскетбольный мяч, по которому то слева, то справа кидают теннисные мячи.
    За одно и то же время компьютер произведет гораздо больше арифметических операций и с большей точностью, чем человек.
    Антиблокировочная система на автомобилях позволяет держать тормоза на грани блокирования колеса, что дает наибольшее сцепление с дорогой, а это без АБС по силам только очень опытным водителям.
    В принципе, такие примеры, где техника оказывается ничуть не хуже человека, можно продолжать до бесконечности. Общий же смысл сказанного в том, что при конструировании ИИ мы не связаны одним набором элементарных составляющих, как природа. В каждом конкретном случае желательно применять то, что даст самый большой эффект. В той области, где у человека господствуют рефлексы (чихание, быстрое напряжение быстро растягиваемой мышцы, переваривание пищи, регулировка температуры), мы вообще можем применить жесткие системы управления, с раз и навсегда заданным алгоритмом функционирования. При этом вполне можно ожидать увеличения точности и уменьшения времени обучения их до нуля. И ядро нашей системы ИИ будет решать уже не настолько глобальные задачи.
    Данный принцип разбиения задачи на подзадачи уже давно используется природой. К примеру, мы далеко не полностью используем все возможности наших мышц в области разнообразия движений. Мы не можем заставить наши глаза смотреть в разные стороны, не говоря уже о том, чтобы делать это на разном уровне (левый глаз — влево-вверх, правый — вправо-вниз). При ходьбе мы часто используем далеко не оптимальный набор движений, и далеко не все сочетания вариантов напряжения мышц мы опробуем. Попробуйте, скажем, сделать волну животом. В принципе, здесь нет ничего сложного, поскольку каждый пучок мышц пресса иннервируется отдельно, но если Вы этого не делали ранее, то получить необходимый результат будет не просто — в повседневной жизни это действие не нужно, а значит, его нет и в "словаре движений", а на обучение необходимо определенное время. А по поводу оптимальности походки существуют расчеты, что если бы человек всегда рассчитывал оптимально траекторию движения, в которой существует более 200 степеней свобод, то он бы не ходил, а в основном бы только думал о том, как надо ходить.
    На самом деле наша система управления построена по иерархическому принципу, когда задача распределяется между несколькими уровнями. Высший уровень нервной системы (связанный с большими полушариями мозга) ставит лишь общую задачу — скажем, переложить книгу на стол. Этот уровень вообще не контролирует действие отдельных двигательных единиц, направленных на решение поставленной задачи. Здесь уместна аналогия: командующий армией, ставя перед своими войсками некую общую задачу, отнюдь не предписывает каждому солдату и офицеру, что именно он должен делать в каждый момент операции.
    Детализация построения движений у человека происходит на уровнях более низких, чем командный уровень коры больших полушарий. Более того, в некоторых случаях (когда мы отдергиваем руку, прикоснувшись к горячему предмету, даже не успев осознать ситуацию), все управление формируется на нижележащих уровнях, связанных с различными отделами спинного мозга.
    В общем ситуация схожа с той, когда программист использует библиотеку подпрограмм. При этом ему не важно, какой алгоритм в них применен, если программа работает нормально. А на написание своей библиотеки тратится драгоценное время. Кроме того, еще не известно, будет ли она работать так же хорошо.
    Общий вывод данной лекции состоит в том, что в настоящее время существуют методы, алгоритмы и устройства, которые позволяют нам довольно неплохо смоделировать нижние уровни человеческого интеллекта, причем совсем не обязательно на таком же физическом принципе.
    Вспомогательные системы нижнего

    Проектирование систем искусственного интеллекта

    Геометрический и структурный подходы.

    Каждый раз, когда сталкиваешься с незнакомыми задачами, появляется естественное желание представить их в виде некоторой легко понимаемой модели — она позволила бы осмыслить задачу в таких терминах, которые легко воспроизводятся нашим воображением. А так как мы существуем в пространстве и во времени, наиболее понятной для нас является пространственно-временная интерпретация задач.
    Любое изображение, которое возникает в результате наблюдения какого-либо объекта в процессе обучения или экзамена, можно представить в виде вектора, а значит, и в виде точки некоторого пространства признаков. Если утверждается, что при показе изображений возможно однозначно отнести их к одному из двух (или нескольких) образов, то тем самым утверждается, что в некотором пространстве существует две (или несколько) области, не имеющие общих точек, и что изображения — точки из этих областей. Каждой такой области можно приписать наименование, т. е. дать название, соответствующее образу.
    Проинтерпретируем теперь в терминах геометрической картины процесс обучения распознаванию образов, ограничившись пока случаем распознавания только двух образов. Заранее считается известным лишь то, что требуется разделить две области в некотором пространстве и что показываются точки только из этих областей. Сами эти области заранее не определены, т. е. нет каких-либо сведений о расположении их границ или правил определения принадлежности точки к той или иной области.
    В ходе обучения предъявляются точки, случайно выбранные из этих областей, и сообщается информация о том, к какой области принадлежат предъявляемые точки. Никакой дополнительной информации об этих областях, т. е. о расположении их границ, в ходе обучения не сообщается. Цель обучения состоит либо в построении поверхности, которая разделяла бы не только показанные в процессе обучения точки, но и все остальные точки, принадлежащие этим областям, либо в построении поверхностей, ограничивающих эти области так, чтобы в каждой из них находились только точки одного образа.
    Иначе говоря, цель обучения состоит в построении таких функций от векторов-изображений, которые были бы, например, положительны на всех точках одного и отрицательны на всех точках другого образа. В связи с тем, что области не имеют общих точек, всегда существует целое множество таких разделяющих функций, а в результате обучения должна быть построена одна из них.

    Если предъявляемые изображения принадлежат не двум, а большему числу образов, то задача состоит в построении по показанным в ходе обучения точкам поверхности, разделяющей друг от друга все области, которые соответствуют этим образам. Задача эта может быть решена, например, путем построения функции, принимающей над точками каждой из областей одинаковое значение, а над точками из разных областей значение этой функции должно быть различно.

    Геометрический и структурный подходы.
    Рис. 3.2. 

    На первый взгляд кажется, что знание всего лишь некоторого количества точек из области недостаточно, чтобы отделить всю область. Действительно, можно указать бесчисленное количество различных областей, которые содержат эти точки, и как бы ни была построена по ним поверхность, выделяющая область, всегда можно указать другую область, которая пересекает поверхность и вместе с тем содержит показанные точки. Однако известно, что задача о приближении функции по информации о ней в ограниченном множестве точек, существенно более узкой, чем все множество, на котором функция задана, является обычной математической задачей об аппроксимации функций. Разумеется, решение таких задач требует введения определенных ограничений на классе рассматриваемых функций, а выбор этих ограничений зависит от характера информации, которую может добавить учитель в процессе обучения. Одной из таких подсказок является гипотеза о компактности образов. Интуитивно ясно, что аппроксимация разделяющей функции будет задачей тем более легкой, чем более компактны и чем более разнесены в пространстве области, подлежащие разделению. Так, например, в случае, показанном на 3.2a, разделение заведомо более просто, чем в случае, показанном на 3.2б.


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

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

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

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

    Гипотеза компактности

    Если предположить, что в процессе обучения пространство признаков формируется исходя из задуманной классификации, то тогда можно надеяться, что задание пространство признаков само по себе задает свойство, под действием которого образы в этом пространстве легко разделяются. Именно эти надежды по мере развития работ в области распознавания образов стимулировали появление гипотезы компактности , которая гласит: образам соответствуют компактные множества в пространстве признаков. Под компактным множеством пока будем понимать некие "сгустки" точек в пространстве изображений, предполагая, что между этими сгустками существуют разделяющие их разряжения.
    Однако эту гипотезу не всегда удавалось подтвердить экспериментально, но, что самое главное, те задачи, в рамках которых гипотеза компактности хорошо выполнялась (рис. 3.2а), все без исключения находили простое решение. И наоборот, те задачи, для которых гипотеза не подтверждалась (рис. 3.2б), либо совсем не решались, либо решались с большим трудом с привлечением дополнительных ухищрений. Этот факт заставил усомниться в справедливости гипотезы компактности, так как для опровержения любой гипотезы достаточно одного отрицающего ее примера. Вместе с этим, выполнение гипотезы всюду там, где удавалось хорошо решить задачу обучения распознаванию образов, сохраняло к ней интерес. Сама гипотеза компактности превратилась в признак возможности удовлетворительного решения задач распознавания.
    Формулировка гипотезы компактности подводит вплотную к понятию абстрактного образа. Если координаты пространства выбирать случайно, то и изображения в нем будут распределены случайно. Они будут в некоторых частях пространства располагаться более плотно, чем в других. Назовем некоторое случайно выбранное пространство абстрактным изображением. В этом абстрактном пространстве почти наверняка будут существовать компактные множества точек. Поэтому в соответствии с гипотезой компактности множества объекты, которым в абстрактном пространстве соответствуют компактные множества точек, разумно назвать абстрактными образами данного пространства.

    Обучение и самообучение

    Если бы удалось подметить некое всеобщее свойство, не зависящее ни от природы образов, ни от их изображений, а определяющее лишь их способность к разделимости, то наряду с обычной задачей обучения распознаванию, с использованием информации о принадлежности каждого объекта из обучающей последовательности тому или иному образу, можно было бы поставить иную классификационную задачу — так называемую задачу обучения без учителя. Задачу такого рода на описательном уровне можно сформулировать так: системе одновременно или последовательно предъявляются объекты без каких-либо указаний об их принадлежности к образам. Входное устройство системы отображает множество объектов на множество изображений и, используя некоторое заложенное в нее заранее свойство разделимости образов, производит самостоятельную классификацию этих объектов. После такого процесса самообучения система должна приобрести способность к распознаванию не только уже знакомых объектов (объектов из обучающей посл едовательности), но и тех, которые ранее не предъявлялись. Процессом самообучения некоторой системы называется такой процесс, в результате которого эта система без подсказки учителя приобретает способность к выработке одинаковых реакций на изображения объектов одного и того же образа и различных реакций на изображения различных образов. Роль учителя при этом состоит лишь в подсказке системе некоторого объективного свойства, одинакового для всех образов и определяющего способность к разделению множества объектов на образы.
    Оказывается, таким объективным свойством является свойство компактности образов. Взаимное расположение точек в выбранном пространстве уже содержит информацию о том, как следует разделить множество точек. Эта информация и определяет то свойство разделимости образов, которое оказывается достаточным для самообучения системы распознаванию образов.
    Большинство известных алгоритмов самообучения способны выделять только абстрактные образы, т. е. компактные множества в заданных пространствах. Различие между ними состоит, по-видимому, в формализации понятия компактности. Однако это не снижает, а иногда и повышает ценность алгоритмов самообучения, так как часто сами образы заранее никем не определены, а задача состоит в том, чтобы определить, какие подмножества изображений в заданном пространстве представляют собой образы. Хорошим примером такой постановки задачи являются социологические исследования, когда по набору вопросов выделяются группы людей. В таком понимании задачи алгоритмы самообучения генерируют заранее не известную информацию о существовании в заданном пространстве образов, о которых ранее никто не имел никакого представления.
    Кроме того, результат самообучения характеризует пригодность выбранного пространства для конкретной задачи обучения распознаванию. Если абстрактные образы, выделяемые в процессе самообучения, совпадают с реальными, то пространство выбрано удачно. Чем сильнее абстрактные образы отличаются от реальных, тем "неудобнее" выбранное пространство для конкретной задачи.
    Обучением обычно называют процесс выработки в некоторой системе той или иной реакции на группы внешних идентичных сигналов путем многократного воздействия на систему внешней корректировки. Такую внешнюю корректировку в обучении принято называть "поощрениями" и "наказаниями". Механизм генерации этой корректировки практически полностью определяет алгоритм обучения. Самообучение отличается от обучения тем, что здесь дополнительная информация о верности реакции системе не сообщается.
    Обучение и самообучение

    Понятие образа

    Образ, класс — классификационная группировка в системе классификации, объединяющая (выделяющая) определенную группу объектов по некоторому признаку.
    Образное восприятие мира — одно из загадочных свойств живого мозга, позволяющее разобраться в бесконечном потоке воспринимаемой информации и сохранять ориентацию в океане разрозненных данных о внешнем мире. Воспринимая внешний мир, мы всегда производим классификацию воспринимаемых ощущений, т. е. разбиваем их на группы похожих, но не тождественных явлений. Например, несмотря на существенное различие, к одной группе относятся все буквы А, написанные различными почерками, или все звуки, которые соответствуют одной и той же ноте, взятой в любой октаве и на любом инструменте, а оператор, управляющий техническим объектом, на целое множество состояний объекта реагирует одной и той же реакцией. Характерно, что для составления понятия о группе восприятий определенного класса достаточно ознакомиться с незначительным количеством ее представителей. Ребенку можно показать всего один раз какую-либо букву, чтобы он смог найти эту букву в тексте, написанном различными шрифтами, или узнать ее, даже если она написана в у мышленно искаженном виде. Это свойство мозга позволяет сформулировать такое понятие, как образ.
    Образы обладают характерным свойством, проявляющимся в том, что ознакомление с конечным числом явлений из одного и того же множества дает возможность узнавать сколь угодно большое число его представителей. Примерами образов могут быть: река, море, жидкость, музыка Чайковского, стихи Маяковского и т. д. В качестве образа можно рассматривать и некоторую совокупность состояний объекта управления, причем вся эта совокупность состояний характеризуется тем, что для достижения заданной цели требуется одинаковое воздействие на объект. Образы обладают характерными объективными свойствами в том смысле, что разные люди, обучающиеся на различном материале наблюдений, большей частью одинаково и независимо друг от друга классифицируют одни и те же объекты. Именно эта объективность образов позволяет людям всего мира понимать друг друга.
    Способность восприятия внешнего мира в форме образов позволяет с определенной достоверностью узнавать бесконечное число объектов на основании ознакомления с конечным их числом, а объективный характер основного свойства образов позволяет моделировать процесс их распознавания. Будучи отражением объективной реальности, понятие образа столь же объективно, как и сама реальность, а поэтому может быть само по себе объектом специального исследования.
    В литературе, посвященной проблеме обучения распознавания образов (ОРО), часто вместо понятия образа вводится понятие класса.

    Проблема обучения распознаванию образов (ОРО)

    Одним из самых интересных свойств человеческого мозга является способность отвечать на бесконечное множество состояний внешней среды конечным числом реакций. Может быть, именно это свойство позволило человеку достигнуть высшей формы существования живой материи, выражающейся в способности к мышлению, т. е. активному отражению объективного мира в виде образов, понятий, суждений и т. д. Поэтому проблема ОРО возникла при изучении физиологических свойств мозга.
    Рассмотрим пример задач из области ОРО.
    Проблема обучения распознаванию образов (ОРО)
    Рис. 3.1.  Пример задач из области ОРО
    Здесь представлены 12 изображений, и следует отобрать признаки, при помощи которых можно отличить левую триаду картинок от правой. Решение данных задач требует моделирования логического мышления в полном объеме.
    В целом проблема распознавания образов состоит из двух частей: обучения и распознавания. Обучение осуществляется путем показа отдельных объектов с указанием их принадлежности тому или другому образу. В результате обучения распознающая система должна приобрести способность реагировать одинаковыми реакциями на все объекты одного образа и различными — на все объекты различных образов. Очень важно, что процесс обучения должен завершиться только путем показов конечного числа объектов без каких-либо других подсказок. В качестве объектов обучения могут быть либо картинки, либо другие визуальные изображения (буквы), либо различные явления внешнего мира, например, звуки, состояния организма при медицинском диагнозе, состояние технического объекта в системах управления и др. Важно, что в процессе обучения указываются только сами объекты и их принадлежность образу. За обучением следует процесс распознавания новых объектов, который характеризует действия уже обученной системы. Автоматизация этих процедур и составляет проблему обучения распознаванию образов. В том случае, когда человек сам разгадывает или придумывает, а затем навязывает машине правило классификации, проблема распознавания решается частично, так как основную и главную часть проблемы (обучение) человек берет на себя.

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

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


    Но каждый объект наблюдения может воздействовать на нас по-разному, в зависимости от условий восприятия. Например, какая-либо буква, даже одинаково написанная, может в принципе как угодно смещаться относительно воспринимающих органов. Кроме того, объекты одного и того же образа могут достаточно сильно отличаться друг от друга и, естественно, по-разному воздействовать на воспринимающие органы.

    Каждое отображение какого-либо объекта на воспринимающие органы распознающей системы, независимо от его положения относительно этих органов, принято называть изображением объекта, а множества таких изображений, объединенные какими-либо общими свойствами, представляют собой образы.

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

    Ситуацией принято называть некоторую совокупность состояний сложного объекта, каждая из которых характеризуется одними и теми же или схожими характеристиками объекта. Например, если в качестве объекта наблюдения рассматривается некоторый объект управления, то ситуация объединяет такие состояния этого объекта, в которых следует применять одни и те же управляющие воздействия. Если объектом наблюдения является военная игра, то ситуация объединяет все состояния игры, которые требуют, например, мощного танкового удара при поддержке авиации.

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

    Проектирование систем искусственного интеллекта

    Адаптация и обучение

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

    Алгоритм с ковариациями и с квадратичными описаниями

    Алгоритм с ковариациями и с квадратичными описаниями
    Рис. 4.8.  МГУА как эквивалент массовой селекции

    В этом алгоритме [5, 6] используются частные описания, представленные в следующих формулах: yi=a0+a1xi+a2xj+a3xixj; Алгоритм с ковариациями и с квадратичными описаниями.
    Сложность модели увеличивается от ряда к ряду селекции как по числу учитываемых аргументов, так и по степени. Степень полного описания быстро растет. На первом ряду — квадратичные описания, на втором — четвертой степени, на третьем — восьмой и т. д. В связи с этим минимум критерия селекции находится быстро, но не совсем точно. Кроме того, имеется опасность потери существенного аргумента, особенно на первых рядах селекции (в случае отсутствия протекции). Специальные теоремы теории МГУА определяют условия, при которых результат селекции не отличается от результата полного перебора моделей.
    Чтобы степень полного уравнения повышалась с каждым рядом селекции на единицу, достаточно рассматривать все аргументы и их ковариации как обобщенные аргументы и пользоваться составленными для них линейными описаниями.

    История исследований в области нейронных сетей

    Возвратимся немного назад и рассмотрим историю исследований нейронных сетей.
    Как и в истории любой другой науки, здесь были свои успехи и неудачи. Кроме того, здесь постоянно сказывается психологический фактор, проявляющийся в неспособности человека описать словами то, как он думает.
    Способность нейронной сети к обучению впервые исследована Дж. Маккалоком и У. Питтом. В 1943 году вышла их работа "Логическое исчисление идей, относящихся к нервной деятельности", в которой была построена модель нейрона и сформулированы принципы построения искусственных нейронных сетей.
    Крупный толчок развитию нейрокибернетики дал американский нейрофизиолог Френк Розенблатт, предложивший в 1962 году свою модель нейронной сети — персептрон. Воспринятый первоначально с большим энтузиазмом, он вскоре подвергся интенсивным нападкам со стороны крупных научных авторитетов. И хотя подробный анализ их аргументов показывает, что они оспаривали не совсем тот персептрон, который предлагал Розенблатт, крупные исследования по нейронным сетям были свернуты почти на 10 лет.
    Несмотря на это в 70-е годы было предложено много интересных разработок, таких, например, как когнитрон, способный хорошо распознавать достаточно сложные образы независимо от поворота изображения и изменения его масштаба.
    В 1982 году американский биофизик Дж. Хопфилд предложил оригинальную модель нейронной сети, названную его именем. В последующие несколько лет было найдено множество эффективных алгоритмов: сеть встречного потока, двунаправленная ассоциативная память и др.
    В киевском институте кибернетики с 70-х годов ведутся работы над стохастическими нейронными сетями.

    Коллективы решающих правил

    Давно известны приемы повышения качества принимаемых решений, состоящие в объединении специалистов той или иной области знаний в коллектив, вырабатывающий совместное решение. Идею коллективного решения можно применить и к "коллективу" формальных алгоритмов, что позволит повысить эффективность решения многих задач.
    Для рационального использования особенностей различных алгоритмов при решении задач распознавания возможно объединить различные по характеру алгоритмы распознавания в коллективы, которые формируют классификационное решение на основе правил, принятых в теории коллективных решений. Пусть в некоторой ситуации Х принимается решение S. Тогда S=R(X), где R — алгоритм принятия решения в ситуации X. Предположим, что существует L различных алгоритмов решения задачи, т. е. Sl=Rl(X), l=1, 2, ... , L, где Sl — решение, полученное алгоритмом Rl. Будем называть множество алгоритмов {R}={R1, R2, ..., Ri.} коллективом алгоритмов решения задачи (коллективом решающих правил), если на множестве решений Sl в любой ситуации Х определено решающее правило F, т. е. S=F(S1, S2, ..., SL, X). Алгоритмы Rl принято называть членами коллектива, Sl — решением l-го члена коллектива, а S — коллективным решением. Функция F определяет способ обобщения индивидуальных решений в решения коллектива S. Поэтому синтез функции F, или способ обобщения, является центральным моментом в организации коллектива.
    Принятие коллективного решения может быть использовано при решении различных задач. Так, в задаче управления под ситуацией понимается ситуация среды и целей управления, а под решением — самоуправление, приводящее объект в целевое состояние. В задачах прогноза Х — исходное, а S — прогнозируемое состояние. В задачах распознавания ситуацией Х является описание объекта X, т. е. его изображение, а решением S — номер образа, к которому принадлежит наблюдаемое изображение. Индивидуальное и коллективное решения в задаче распознавания состоят в отнесении некоторого изображения к одному из образов.
    Наиболее интересными коллективами распознающих алгоритмов являются такие, в которых существует зависимость веса каждого решающего правила Rl от распознаваемого изображения. Например, вес решающего правила Rl может определяться соотношением

    Коллективы решающих правил (4.57)
    где Bl — область компетентности решающего правила Rl. Веса решающих правил выбираются так, что

    Коллективы решающих правил (4.58)
    для всех возможных значений X. Соотношение (4.57) означает, что решение коллектива определяется решением того решающего правила Ri, области компетентности которого принадлежит изображение объекта X. Такой подход представляет собой двухуровневую процедуру распознавания. На первом уровне определяется принадлежность изображения той или иной области компетентности, а уже на втором — вступает в силу решающее правило, компетентность которого максимальна в найденной области. Решение этого правила отождествляется с решением всего коллектива. Основным этапом в такой организации коллективного решения является обучение распознаванию областей компетентности. Практически постановкой этой задачи различаются правила организации решения коллектива. Области компетентности можно искать, используя вероятностные свойства правил коллектива, можно применить гипотезу компактности и считать, что одинаковым правилам должны соответствовать компактные области, которые можно выделить алгоритмами самообучения. В процессе обучения сначала выделяются компактные множества и соответствующие им области, а затем в каждой из этих областей восстанавливается свое решающее правило. Решение такого правила, действующего в определенной области, объявляется диктаторским, т. е. отождествляется с решением всего коллектива.

    В персептроне каждый A-элемент может интерпретироваться как член коллектива. В процессе обучения все A-элементы приобретают веса, в соответствии с которыми эти A-элементы участвуют в коллективном решении. Особенность каждого A-элемента состоит в том, что он действует в некотором подпространстве исходного пространства, характер которого определяется связями между S- и A-элементами. Решение, получаемое на выходе персептрона, можно интерпретировать как средневзвешенное решение коллектива, состоящего из всех A-элементов.

    Коллективы решающих правил

    Метод наименьших квадратов

    Перед тем, как начинать рассмотрение МГУА, было бы полезно вспомнить (или узнать впервые) метод наименьших квадратов — наиболее распространенный метод подстройки линейно зависимых параметров.
    Рассмотрим для примера МНК для трех аргументов.
    Пусть функция T=T(U, V, W) задана таблицей, то есть из опыта известны числа Ui, Vi, Wi, Ti ( i = 1, … , n). Будем искать зависимость между этими данными в виде:
    T(U,V,W)=aU+bV+cW (4.43)
    где a, b, c — неизвестные параметры.
    Подберем значения этих параметров так, чтобы была наименьшей сумма квадратов уклонений опытных данных Ti и теоретических Ti = aUwi + bVi + cWi, то есть сумма:
    Метод наименьших квадратов (4.44)

    Величина Метод наименьших квадратов является функцией трех переменных a, b, c. Необходимым и достаточным условием существования минимума этой функции является равенство нулю частных производных функции Метод наименьших квадратов по всем переменным, то есть:
    Метод наименьших квадратов (4.45)
    Так как:
    Метод наименьших квадратов (4.46)
    система для нахождения a, b, c будет иметь вид:
    Метод наименьших квадратов (4.47)
    Данная система решается любым стандартным методом решения систем линейных уравнений (Гаусса, Жордана, Зейделя, Крамера).
    Рассмотрим некоторые практические примеры нахождения приближающих функций.
  • Метод наименьших квадратов
    Задача подбора коэффициентов Метод наименьших квадратов, Метод наименьших квадратов, Метод наименьших квадратов сводится к решению общей задачи при T=y, U=x2, V=x, W=1, Метод наименьших квадратов.
  • Метод наименьших квадратов
    Задача подбора коэффициентов Метод наименьших квадратов, Метод наименьших квадратов, Метод наименьших квадратов сводится к решению общей задачи при T=f, U=sin(x), V=cos(y), W=1/x, Метод наименьших квадратов.
  • Если мы распространим МНК на случай с m параметрами,
    Метод наименьших квадратов (4.48)

    то путем рассуждений, аналогичных приведенным выше, получим следующую систему линейных уравнений:
    Метод наименьших квадратов (4.49)
    где Метод наименьших квадратов

    Метод потенциальных функций

    Предположим, что требуется разделить два непересекающихся образа V1 и V2. Это значит, что в пространстве изображений существует, по крайней мере, одна функция, которая полностью разделяет множества, соответствующие образам V1 и V2. Эта функция должна принимать положительные значения в точках, которые соответствуют объектам, принадлежащим образу V1, и отрицательные — в точках образа V2. В общем случае таких разделяющих функций может быть много, тем больше, чем компактней разделяемые множества. В процессе обучения требуется построить одну из этих функций, иногда в некотором смысле наилучшую.
    Метод потенциальных функций связан со следующей процедурой. В процессе обучения с каждой точкой пространства изображений, соответствующей единичному объекту из обучающей последовательности, связывается функция U(X, Xi), заданная на всем пространстве и зависящая от Xi как от параметра. Такие функции называются потенциальными, так как они напоминают функции потенциала электрического поля вокруг точечного электрического заряда. Изменение потенциала электрического поля по мере удаления от заряда обратно пропорционально квадрату расстояния. Потенциал, таким образом, может служить мерой удаления точки от заряда. Когда поле образовано несколькими зарядами, потенциал в каждой точке этого поля равен сумме потенциалов, создаваемых в этой точке каждым из зарядов. Если заряды, образующие поле, расположены компактной группой, потенциал поля будет иметь наибольшее значение внутри группы зарядов и убывать по мере удаления от нее.
    Обучающей последовательности объектов соответствует последовательность векторов X1, X2, …, с которыми в пространстве изображений связана последовательность U(X, X1), U(X, X2), … потенциальных функций, используемых для построения функций f(X1, X2, …). По мере увеличения числа объектов в процессе обучения функция f должна стремиться к одной из разделяющих функций. В результате обучения могут быть построены потенциальные функции для каждого образа:
    Метод потенциальных функций (4.35)

    В качестве разделяющей функции f(X) можно выбрать функцию вида:

    f(X)=U1(X)-U2(X), (4.36)

    которая положительна для объектов одного образа и отрицательна для объектов другого.

    В качестве потенциальной функции рассмотрим функцию вида

    Метод потенциальных функций (4.37)
    где Метод потенциальных функций — линейно независимая система функций; Метод потенциальных функций — действительные числа, отличные от нуля для всех j = 1, 2, … ; Xi — точка, соответствующая i-му объекту из обучающей последовательности. Предполагается, что Метод потенциальных функций и U(X, Xi) ограничены при Метод потенциальных функций.

    В процессе обучения предъявляется обучающая последовательность и на каждом n-м такте обучения строится приближение fn(X), которое характеризуется следующей основной рекуррентной процедурой:

    fn+1(X)=qnfn(X)+rnU(Xn+1,X), (4.38)

    Разновидности алгоритмов потенциальных функций отличаются выбором значений qn и rn, которые являются фиксированными функциями номера n. Как правило, Метод потенциальных функций, а rn выбирается в виде:

    Метод потенциальных функций (4.39)
    где S(fn, f) — невозрастающие функции, причем

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

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

  • Будем считать, что Метод потенциальных функций (нулевое приближение). Пусть в результате применения алгоритма после n-го шага построена разделяющая функция fn(X), а на (n+1)-м шаге предъявлено изображение Xn+1, для которого известно действительное значение разделяющей функции f(Xn+1). Тогда функция fn+1(X) строится по следующему правилу:

    Метод потенциальных функций (4.41)
  • Во втором алгоритме также принимается, что Метод потенциальных функций. Переход к следующему приближению, т. е. переход от функции fn(X) к fn+1(X), осуществляется в результате следующей рекуррентной процедуры:

    Метод потенциальных функций (4.42)
    где Метод потенциальных функций — произвольная положительная константа, удовлетворяющая условию Метод потенциальных функций.

  • Если в (ф. 5) принять Метод потенциальных функций и предположить, что xv может иметь только два значения 0 и 1, то в этом случае алгоритм потенциальных функций будет совпадать со схемой персептрона с индивидуальными порогами А-элементов и с коррекцией ошибок.Поэтому многие теоретические положения метода потенциальных функций могут быть успешно применены для анализа некоторых перцептронных схем.

    Метод предельных упрощений (МПУ)

    По тому, как организован процесс обучения распознающих систем, четко выделяются два подхода к проблеме ОРО. Первый основан на построении сложных разделяющих поверхностей в случайно выбранных пространствах, а во втором центр тяжести проблемы переносится на достижение понимания принципов формирования такого описания объектов, в рамках которого сам процесс распознавания чрезвычайно прост. Обучение в этом случае рассматривается как некий процесс конструирования пространств для решения конкретных задач.
    В МПУ предполагается, что разделяющая функция задается заранее в виде линейного (самого простого) полинома, а процесс обучения состоит в конструировании такого пространства минимальной размерности, в котором заранее заданная наиболее простая разделяющая функция безошибочно разделяет обучающую последовательность. МПР назван так потому, что в нем строится самое простое решающее правило в пространстве небольшой размерности, т. е. в простом пространстве.
    Пусть на некотором множестве объектов V заданы два подмножества Метод предельных упрощений (МПУ) и Метод предельных упрощений (МПУ), определяющие собой образы на обучающей последовательности V. Рассмотрим i-е свойство объектов, такое, что некоторые объекты обучающей последовательности этим свойством обладают, а другие — нет. Пусть заданным свойством обладают объекты, образующие подмножество V1i, а объекты подмножества V2i этим свойством не обладают (Метод предельных упрощений (МПУ)). Тогда i-е свойство называют признаком первого типа относительно образа Метод предельных упрощений (МПУ), если выполняются соотношения
    Метод предельных упрощений (МПУ) (4.50)

    и признаком второго типа, если выполняются
    Метод предельных упрощений (МПУ) (4.51)

    Если же выполняются соотношения
    Метод предельных упрощений (МПУ) (4.52)

    то i-е свойство считается признаком первого типа относительно образа Метод предельных упрощений (МПУ), а если выполняются
    Метод предельных упрощений (МПУ) (4.53)

    то это же свойство объявляется признаком второго типа относительно образа Метод предельных упрощений (МПУ). Если свойство не обладает ни одной из приведенных особенностей, то оно вообще не относится к признакам и не участвует в формировании пространства.
    Одинаковые признаки — это два признака xi и xj, порождающие подмножества V1j, V2j, V1i, V2i, такие, что
    V1j= V1i и V2j= V2i. (4.54)

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

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

    Метод предельных упрощений (МПУ) (4.55)
    либо уравнением

    Метод предельных упрощений (МПУ) (4.56)
    Каждый объект относится к одному из образов в зависимости от того, по какую сторону относительно плоскости находится соответствующий этому объекту вектор в пространстве признаков размерности n.

    Модель нейронной сети с обратным распространением ошибки (back propagation)

    В 1986 году Дж. Хинтон и его коллеги опубликовали статью с описанием модели нейронной сети и алгоритмом ее обучения, что дало новый толчок исследованиям в области искусственных нейронных сетей.
    Нейронная сеть состоит из множества одинаковых элементов — нейронов, поэтому начнем с них рассмотрение работы искусственной нейронной сети.
    Биологический нейрон моделируется как устройство, имеющее несколько входов (дендриты) и один выход (аксон). Каждому входу ставится в соответствие некоторый весовой коэффициент (w), характеризующий пропускную способность канала и оценивающий степень влияния сигнала с этого входа на сигнал на выходе. В зависимости от конкретной реализации, обрабатываемые нейроном сигналы могут быть аналоговыми или цифровыми (1 или 0). В теле нейрона происходит взвешенное суммирование входных возбуждений, и далее это значение является аргументом активационной функции нейрона, один из возможных вариантов которой представлен на рис. 1.
    Модель нейронной сети с обратным распространением ошибки (back propagation)
    Рис. 4.2.  Искусственный нейрон
    Будучи соединенными определенным образом, нейроны образуют нейронную сеть. Работа сети разделяется на обучение и адаптацию. Под обучением понимается процесс адаптации сети к предъявляемым эталонным образцам путем модификации (в соответствии с тем или иным алгоритмом) весовых коэффициентов связей между нейронами. Заметим, что этот процесс является результатом алгоритма функционирования сети, а не предварительно заложенных в нее знаний человека, как это часто бывает в системах искусственного интеллекта.
    Среди различных структур нейронных сетей (НС) одной из наиболее известных является многослойная структура, в которой каждый нейрон произвольного слоя связан со всеми аксонами нейронов предыдущего слоя или, в случае первого слоя, со всеми входами НС. Такие НС называются полносвязными. Когда в сети только один слой, алгоритм ее обучения с учителем довольно очевиден, так как правильные выходные состояния нейронов единственного слоя заведомо известны и подстройка синаптических связей идет в направлении, минимизирующем ошибку на выходе сети.
    По этому принципу строится, например, алгоритм обучения однослойного персептрона. В многослойных же сетях оптимальные выходные значения нейронов всех слоев, кроме последнего, как правило, не известны, и двух- или более слойный персептрон уже невозможно обучить, руководствуясь только величинами ошибок на выходах НС. Один из вариантов решения этой проблемы: разработка наборов выходных сигналов, соответствующих входным, для каждого слоя НС, что, конечно, является очень тру доемкой операцией и не всегда осуществимо. Второй вариант: динамическая подстройка весовых коэффициентов синапсов, в ходе которой выбираются, как правило, наиболее слабые связи и изменяются на малую величину в ту или иную сторону, а сохраняются только те изменения, которые повлекли уменьшение ошибки на выходе всей сети. Очевидно, что данный метод "тыка", несмотря на свою кажущуюся простоту, требует громоздких рутинных вычислений. И, наконец, третий, более приемлемый вариант: распространение сигналов ошибки от выходов НС к ее входам, в направлении, обратном прямому распространению сигналов в обычном режиме работы. Этот алгоритм обучения НС получил название процедуры обратного распространения. Именно он будет рассмотрен в дальнейшем.

    Согласно методу наименьших квадратов, минимизируемой целевой функцией ошибки НС является величина:

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.3)
    где Модель нейронной сети с обратным распространением ошибки (back propagation) – реальное выходное состояние нейрона j выходного слоя N нейронной сети при подаче на ее входы p-го образа; djp – идеальное (желаемое) выходное состояние этого нейрона.

    Суммирование ведется по всем нейронам выходного слоя и по всем обрабатываемым сетью образам. Минимизация ведется методом градиентного спуска, что означает подстройку весовых коэффициентов следующим образом:

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.4)
    Здесь wij – весовой коэффициент синаптической связи, соединяющей i-ый нейрон слоя n-1 с j-ым нейроном слоя n, Модель нейронной сети с обратным распространением ошибки (back propagation) – коэффициент скорости обучения, 0<Модель нейронной сети с обратным распространением ошибки (back propagation)<1.

    Как показано в [2],
    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.5)
    Здесь под yj, как и раньше, подразумевается выход нейрона j, а под sj – взвешенная сумма его входных сигналов, то есть аргумент активационной функции.


    Так как множитель dyj/ dsj является производной этой функции по ее аргументу, из этого следует, что производная активационной функция должна быть определена на всей оси абсцисс. В связи с этим функция единичного скачка и прочие активационные функции с неоднородностями не подходят для рассматриваемых НС. В них применяются такие гладкие функции, как гиперболический тангенс или классический сигмоид с экспонентой. В случае гиперболического тангенса

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.6)
    Третий множитель Модель нейронной сети с обратным распространением ошибки (back propagation), очевидно, равен выходу нейрона предыдущего слоя Модель нейронной сети с обратным распространением ошибки (back propagation).

    Что касается первого множителя в (4.5), он легко раскладывается следующим образом[2]:

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.7)
    Здесь суммирование по k выполняется среди нейронов слоя n+1.

    Введя новую переменную

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.8)
    мы получим рекурсивную формулу для расчетов величин Модель нейронной сети с обратным распространением ошибки (back propagation) слоя n из величин Модель нейронной сети с обратным распространением ошибки (back propagation) более старшего слоя n+1.

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.9)
    Для выходного же слоя

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.10)
    Теперь мы можем записать (4.4) в раскрытом виде:

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.11)
    Иногда для придания процессу коррекции весов некоторой инерционности, сглаживающей резкие скачки при перемещении по поверхности целевой функции, (4.11) дополняется значением изменения веса на предыдущей итерации

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.12)
    где Модель нейронной сети с обратным распространением ошибки (back propagation) – коэффициент инерционности, t – номер текущей итерации.

    Таким образом, полный алгоритм обучения НС с помощью процедуры обратного распространения строится так:

  • Подать на входы сети один из возможных образов и в режиме обычного функционирования НС, когда сигналы распространяются от входов к выходам, рассчитать значения последних. Напомним, что
    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.13)
    где M – число нейронов в слое n-1 с учетом нейрона с постоянным выходным состоянием +1, задающего смещение; Модель нейронной сети с обратным распространением ошибки (back propagation) – i-ый вход нейрона j слоя n.

    Модель нейронной сети с обратным распространением ошибки (back propagation), где f() – сигмоид, (4.14)

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.15)
    где Iq – q-ая компонента вектора входного образа.

  • Рассчитать Модель нейронной сети с обратным распространением ошибки (back propagation) для выходного слоя по формуле (4.10). Рассчитать по формуле (4.11) или (4.12) изменения весов Модель нейронной сети с обратным распространением ошибки (back propagation) слоя N.
  • Рассчитать по формулам (4.9) и (4.11) (или (4.9) и (4.10)) соответственно Модель нейронной сети с обратным распространением ошибки (back propagation) и Модель нейронной сети с обратным распространением ошибки (back propagation) для всех остальных слоев, n=N-1,...1.
  • Скорректировать все веса в НС
    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.16)
    Модель нейронной сети с обратным распространением ошибки (back propagation)
    Рис. 4.3.  Диаграмма сигналов в сети при обучении по алгоритму обратного распространения


  • Если ошибка сети существенна, перейти на шаг 1. В противном случае – конец.
  • Сети на шаге 1 попеременно в случайном порядке предъявляются все тренировочные образы, чтобы сеть, образно говоря, не забывала одни по мере запоминания других. Алгоритм иллюстрируется рис. 4.3.

    Из выражения (4.10) следует, что, когда выходное значение Модель нейронной сети с обратным распространением ошибки (back propagation) стремится к нулю, эффективность обучения заметно снижается. При двоичных входных векторах в среднем половина весовых коэффициентов не будет корректироваться [3], поэтому область возможных значений выходов нейронов [0,1] желательно сдвинуть в пределы [-0.5,+0.5], что достигается простыми модификациями логистических функций. Например, сигмоид с экспонентой преобразуется к виду

    Модель нейронной сети с обратным распространением ошибки (back propagation) (4.17)
    Теперь коснемся вопроса емкости НС, то есть числа образов, предъявляемых на ее входы, которые она способна научиться распознавать. Для сетей с числом слоев больше двух он остается открытым. Как показано в [4], для НС с двумя слоями, то есть одним выходным и одним скрытым слоем, детерминистская емкость сети Cd оценивается так:

    Nw/Nylog(Nw/Ny) (4.18)

    где Nw – число подстраиваемых весов, Ny – число нейронов в выходном слое.

    Следует отметить, что данное выражение получено с учетом некоторых ограничений. Во-первых, число входов Nx и нейронов в скрытом слое Nh должно удовлетворять неравенству Nx+Nh>Ny. Во-вторых, Nw/Ny>1000. Однако вышеприведенная оценка выполнялась для сетей с активационными функциями нейронов в виде порога, а емкость сетей с гладкими активационными функциями, например – (4.17), обычно больше. Кроме того, фигурирующее в названии емкости прилагательное "детерминистский" означает, что полученная оценка емкости подходит абсолютно для всех возможных входных образов, которые могут быть представлены Nx входами. В действительности распределение входных образов, как правило, обладает некоторой регулярностью, что позволяет НС проводить обобщение и, таким образом, увеличивать реальную емкость. Так как распределение образов, в общем случае, заранее не известно, мы можем говорить о такой емкости только предположительно, но обычно она раза в два превышает емкость детерминистскую.


    В продолжение разговора о емкости НС логично затронуть вопрос о требуемой мощности выходного слоя сети, выполняющего окончательную классификацию образов. Дело в том, что для разделения множества входных образов, например, по двум классам, достаточно всего одного выхода. При этом каждый логический уровень – "1" и "0" – будет обозначать отдельный класс. На двух выходах можно закодировать уже 4 класса, и так далее. Однако результаты работы сети, организованной таким образом, можно сказать – "под завязку", – не очень надежны. Для повышения достоверности классификации желательно ввести избыточность путем выделения каждому классу одного нейрона в выходном слое или, что еще лучше, нескольких, каждый из которых обучается определять принадлежность образа к классу со своей степенью достоверности, например: высокой, средней и низкой. Такие НС позволяют проводить классификацию входных образов, объединенных в нечеткие (размытые или пересекающиеся) множества. Это свойство приближает п одобные НС к условиям реальной жизни.

    Рассматриваемая НС имеет несколько "узких мест". Во-первых, в процессе обучения может возникнуть ситуация, когда большие положительные или отрицательные значения весовых коэффициентов сместят рабочую точку на сигмоидах многих нейронов в область насыщения. Малые величины производной от логистической функции приведут в соответствие с (4.9) и (4.10) к остановке обучения, что парализует НС. Во-вторых, применение метода градиентного спуска не гарантирует, что будет найден глобальный, а не локальный минимум целевой функции. Эта проблема связана еще с одной, а именно – с выбором величины скорости обучения. Доказательство сходимости обучения в процессе обратного распространения основано на производных — то есть приращения весов и, следовательно, скорость обучения должны быть бесконечно малыми, — однако в этом случае обучение будет происходить неприемлемо медленно. С другой стороны, слишком большие коррекции весов могут привести к постоянной неустойчивости процесса обучения.


    Поэтому в качестве Модель нейронной сети с обратным распространением ошибки (back propagation) обычно выбирается число меньше 1, но не очень маленькое, например, 0.1, и оно, вообще говоря, может постепенно уменьшаться в процессе обучения. Кроме того, для исключения случайных попаданий в локальные минимумы иногда, после того как значения весовых коэффициентов стабилизируются, Модель нейронной сети с обратным распространением ошибки (back propagation) кратковременно сильно увеличивают, чтобы начать градиентный спуск из новой точки. Если повторение этой процедуры несколько раз приведет алгоритм в одно и то же состояние НС, можно более или менее уверенно сказать, что найден глобальный максимум, а не какой-то другой.

    Существует и иной метод исключения локальных минимумов, а заодно и паралича НС, заключающийся в применении стохастических НС, но о них лучше поговорить отдельно.

    Нейронные сети Хопфилда и Хэмминга

    Среди различных конфигураций искуственных нейронных сетей (НС) встречаются такие, при классификации которых по принципу обучения, строго говоря, не подходят ни обучение с учителем, ни обучение без учителя. В таких сетях весовые коэффициенты синапсов рассчитываются только однажды, перед началом функционирования сети, на основе информации об обрабатываемых данных, и все обучение сети сводится именно к этому расчету. С одной стороны, предъявление априорной информации можно расценивать как помощь учителя, но с другой – сеть фактически просто запоминает образцы до того, как на ее вход поступают реальные данные, и не может изменять свое поведение, поэтому говорить о звене обратной связи с "миром" (учителем) не приходится. Из сетей с подобной логикой работы наиболее известны сеть Хопфилда и сеть Хэмминга, которые обычно используются для организации ассоциативной памяти. Далее речь пойдет именно о них.
    Структурная схема сети Хопфилда приведена на рис.4.4. Она состоит из единственного слоя нейронов, число которых является одновременно числом входов и выходов сети. Каждый нейрон связан синапсами со всеми остальными нейронами, а также имеет один входной синапс, через который осуществляется ввод сигнала. Выходные сигналы, как обычно, образуются на аксонах.
    Нейронные сети Хопфилда и Хэмминга
    Рис. 4.4.  Структурная схема сети Хопфилда
    Задача, решаемая данной сетью в качестве ассоциативной памяти, как правило, формулируется следующим образом. Известен некоторый набор двоичных сигналов (изображений, звуковых оцифровок, прочих данных, описывающих некие объекты или характеристики процессов), которые считаются образцовыми. Сеть должна уметь из произвольного неидеального сигнала, поданного на ее вход, выделить ("вспомнить" по частичной информации) соответствующий образец (если такой есть) или "дать заключение" о том, что входные данные не соответствуют ни одному из образцов. В общем случае, любой сигнал может быть описан вектором X = { xi: i=0...n-1}, где n – число нейронов в сети и размерность входных и выходных векторов.
    Каждый элемент xi равен либо +1, либо -1. Обозначим вектор, описывающий k-ый образец, через Xk, а его компоненты, соответственно, – Нейронные сети Хопфилда и Хэмминга, k=0...m-1, где m – число обра зцов. Когда сеть распознaет (или "вспомнит") какой-либо образец на основе предъявленных ей данных, ее выходы будут содержать именно его, то есть Y = Xk, где Y – вектор выходных значений сети: Y = { yi: i=0,...n-1}. В противном случае, выходной вектор не совпадет ни с одним образцовым.

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

    На стадии инициализации сети весовые коэффициенты синапсов устанавливаются следующим образом:

    Нейронные сети Хопфилда и Хэмминга (4.25)
    Здесь i и j – индексы, соответственно, предсинаптического и постсинаптического нейронов; Нейронные сети Хопфилда и Хэмминга, Нейронные сети Хопфилда и Хэмминга – i-ый и j-ый элементы вектора k-ого образца.

    Алгоритм функционирования сети следующий (p – номер итерации):

  • На входы сети подается неизвестный сигнал. Фактически его ввод осуществляется непосредственной установкой значений аксонов:

    yi(0) = xi , i = 0...n-1, (4.26)

    поэтому обозначение на схеме сети входных синапсов в явном виде носит чисто условный характер. Ноль в скобке справа от yi означает нулевую итерацию в цикле работы сети.

  • Рассчитывается новое состояние нейронов

    Нейронные сети Хопфилда и Хэмминга j=0...n-1 (4.27)

    и новые значения аксонов

    yi(p+1) = f[sj(p+1)] (4.28)

    Нейронные сети Хопфилда и Хэмминга
    Рис. 4.5.  Активационные функции.

    где f – активационная функция в виде скачка, приведенная на рис. 4.5 а.

  • Проверка, изменились ли выходные значения аксонов за последнюю итерацию. Если да – переход к пункту 2, иначе (если выходы стабилизировались) – конец. При этом выходной вектор представляет собой образец, наилучшим образом сочетающийся с входными данными.
  • Как говорилось выше, иногда сеть не может провести распознавание и выдает на выходе несуществующий образ. Это связано с проблемой ограниченности возможностей сети.


    Для сети Хопфилда число запоминаемых образов m не должно превышать величины, примерно равной 0.15n. Кроме того, если два образа А и Б сильно похожи, они, возможно, будут вызывать у сети перекрестные ассоциации, то есть предъявление на входы сети вектора А приведет к появлению на ее выходах вектора Б, и наоборот.

    Нейронные сети Хопфилда и Хэмминга
    Рис. 4.6.  Структурная схема сети Хэмминга

    Когда нет необходимости, чтобы сеть в явном виде выдавала образец, то есть достаточно, скажем, получать номер образца, ассоциативную память успешно реализует сеть Хэмминга. Данная сеть характеризуется, по сравнению с сетью Хопфилда, меньшими затратами на память и объемом вычислений, что становится очевидным из ее структуры (рис. 4.6)

    Сеть состоит из двух слоев. Первый и второй слои имеют по m нейронов, где m – число образцов. Нейроны первого слоя имеют по n синапсов, соединенных со входами сети (образующими фиктивный нулевой слой). Нейроны второго слоя связаны между собой ингибиторными (отрицательными обратными) синаптическими связями. Единственный синапс с положительной обратной связью для каждого нейрона соединен с его же аксоном.

    Идея работы сети состоит в нахождении расстояния Хэмминга от тестируемого образа до всех образцов. Расстоянием Хэмминга называется число отличающихся битов в двух бинарных векторах. Сеть должна выбрать образец с минимальным расстоянием Хэмминга до неизвестного входного сигнала, в результате чего будет активизирован только один выход сети, соответствующий этому образцу.

    На стадии инициализации весовым коэффициентам первого слоя и порогу активационной функции присваиваются следующие значения:

    Нейронные сети Хопфилда и Хэмминга,i=0...n-1, k=0...m-1 (4.29)

    Tk = n/2, k = 0...m-1 (4.30)

    Здесь Нейронные сети Хопфилда и Хэмминга – i-ый элемент k-ого образца.

    Весовые коэффициенты тормозящих синапсов во втором слое берут равными некоторой величине 0 < Нейронные сети Хопфилда и Хэмминга < 1/m. Синапс нейрона, связанный с его же аксоном имеет вес +1.

    Алгоритм функционирования сети Хэмминга следующий:

  • На входы сети подается неизвестный вектор X = {xi:i=0...n-1}, исходя из которого рассчитываются состояния нейронов первого слоя (верхний индекс в скобках указывает номер слоя):


    Нейронные сети Хопфилда и Хэмминга, j=0...m-1 (4.31)

    После этого полученными значениями инициализируются значения аксонов второго слоя:

    Нейронные сети Хопфилда и Хэмминга, j = 0...m-1 (4.32)

  • Вычислить новые состояния нейронов второго слоя:

    Нейронные сети Хопфилда и Хэмминга (4.33)
    и значения их аксонов:

    Нейронные сети Хопфилда и Хэмминга (4.34)
    Активационная функция f имеет вид порога, причем величина F должна быть достаточно большой, чтобы любые возможные значения аргумента не приводили к насыщению.

  • Проверить, изменились ли выходы нейронов второго слоя за последнюю итерацию. Если да – перейти к шагу 2. Иначе – конец.

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

    Нейронные сети: обучение без учителя

    Рассмотренный в предыдущей главе алгоритм обучения нейронной сети с помощью процедуры обратного распространения подразумевает наличие некоего внешнего звена, предоставляющего сети, кроме входных, также и целевые выходные образы. Алгоритмы, пользующиеся подобной концепцией, называются алгоритмами обучения с учителем. Для их успешного функционирования необходимо наличие экспертов, создающих на предварительном этапе для каждого входного образа эталонный выходной. Так как создание искусственного интеллекта движется по пути копирования природных прообразов, ученые не прекращают спор на тему, можно ли считать алгоритмы обучения с учителем натуральными или же они полностью искусственны. Например, обучение человеческого мозга, на первый взгляд, происходит без учителя: на зрительные, слуховые, тактильные и прочие рецепторы поступает информация извне, и внутри нервной системы происходит некая самоорганизация. Однако, нельзя отрицать и того, что в жизни человека немало учителей – и в буквальном, и в переносном смысле, – которые координируют внешние воздействия. Вместе в тем, чем бы ни закончился спор приверженцев этих двух концепций обучения, они обе имеют право на существование.
    Главная черта, делающая обучение без учителя привлекательным, – это его "самостоятельность". Процесс обучения, как и в случае обучения с учителем, заключается в подстраивании весов синапсов. Некоторые алгоритмы, правда, изменяют и структуру сети, то есть количество нейронов и их взаимосвязи, но такие преобразования правильнее назвать более широким термином – самоорганизацией, и в рамках данной лекции они рассматриваться не будут. Очевидно, что подстройка синапсов может проводиться только на основании информации, доступной в нейроне, то есть его состояния и уже имеющихся весовых коэффициентов. Исходя из этого соображения и, что более важно, по аналогии с известными принципами самоорганизации нервных клеток, построены алгоритмы обучения Хебба.
    Сигнальный метод обучения Хебба заключается в изменении весов по следующему правилу:

    Нейронные сети: обучение без учителя (4.19)
    где Нейронные сети: обучение без учителя – выходное значение нейрона i слоя (n-1), Нейронные сети: обучение без учителя – выходное значение нейрона j слоя n; Нейронные сети: обучение без учителя и Нейронные сети: обучение без учителя – весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно; Нейронные сети: обучение без учителя – коэффициент скорости обучения. Здесь и далее, для общности, под n подразумевается произвольный слой сети. При обучении по данному методу усиливаются связи между возбужденными нейронами.

    Существует также и дифференциальный метод обучения Хебба.

    Нейронные сети: обучение без учителя (4.19)
    Здесь Нейронные сети: обучение без учителя и Нейронные сети: обучение без учителя – выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1; Нейронные сети: обучение без учителя и Нейронные сети: обучение без учителя – то же самое для нейрона j слоя n. Как видно из формулы (2), сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения.

    Полный алгоритм обучения с применением вышеприведенных формул будет выглядеть так:

  • На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.
  • На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических прямопоточных (feedforward) сетей[1], то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение Нейронные сети: обучение без учителя, i=0...Mi-1, где Mi – число нейронов в слое i; n=0...N-1, а N – число слоев в сети.
  • На основании полученных выходных значений нейронов по формуле (4.18) или (4.19) производится изменение весовых коэффициентов.
  • Цикл с шага 2, пока выходные значения сети не стабилизируются с заданной точностью. Применение этого нового способа определения завершения обучения, отличного от использовавшегося для сети обратного распространения, обусловлено тем, что подстраиваемые значения синапсов фактически не ограничены. На втором шаге цикла попеременно предъявляются все образы из входного набора.
  • Следует отметить, что вид откликов на каждый класс входных образов не известен заранее и будет представлять собой произвольное сочетание состояний нейронов выходного слоя, обусловленное случайным распределением весов на стадии инициализации.


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

    Другой алгоритм обучения без учителя – алгоритм Кохонена – предусматривает подстройку синапсов на основании их значений от предыдущей итерации.

    Нейронные сети: обучение без учителя (4.20)
    Из вышеприведенной формулы видно, что обучение сводится к минимизации разницы между входными сигналами нейрона, поступающими с выходов нейронов предыдущего слоя Нейронные сети: обучение без учителя, и весовыми коэффициентами его синапсов.

    Полный алгоритм обучения имеет примерно такую же структуру, как в методах Хебба, но на шаге 3 из всего слоя выбирается нейрон, значения синапсов которого максимально походят на входной образ, и подстройка весов по формуле (4.20) проводится только для него. Эта так называемая аккредитация может сопровождаться затормаживанием всех остальных нейронов слоя и введением выбранного нейрона в насыщение. Выбор такого нейрона может осуществляться, например, расчетом скалярного произведения вектора весовых коэффициентов с вектором входных значений. Максимальное произведение дает выигравший нейрон.

    Другой вариант – расчет расстояния между этими векторами в p-мерном пространстве, где p – размер векторов.

    Нейронные сети: обучение без учителя (4.21)
    где j – индекс нейрона в слое n, i – индекс суммирования по нейронам слоя (n-1), wij – вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n. Корень в формуле (4.21) брать не обязательно, так как важна лишь относительная оценка различных Dj.

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


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

    Нейронные сети: обучение без учителя (4.22)
    где xi – i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n – его размерность. Это позволяет сократить длительность процесса обучения.

    Инициализация весовых коэффициентов случайными значениями может привести к тому, что различные классы, которым соответствуют плотно распределенные входные образы, сольются или, наоборот, раздробятся на дополнительные подклассы в случае близких образов одного и того же класса. Для избежания такой ситуации используется метод выпуклой комбинации [3]. Суть его сводится к тому, что входные нормализованные образы подвергаются преобразованию:

    Нейронные сети: обучение без учителя (4.23)
    где xi – i-ая компонента входного образа, n – общее число его компонент, Нейронные сети: обучение без учителя – коэффициент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине

    Нейронные сети: обучение без учителя (4.24)
    где n – размерность вектора весов для нейронов инициализируемого слоя.

    На основе рассмотренного выше метода строятся нейронные сети особого типа – так называемые самоорганизующиеся структуры – self-organizing feature maps (этот устоявшийся перевод с английского, на мой взгляд, не очень удачен, так как речь идет не об изменении структуры сети, а только о подстройке синапсов). Для них после выбора из слоя n нейрона j с минимальным расстоянием Dj (4.21) обучается по формуле (4.20) не только этот нейрон, но и его соседи, расположенные в окрестности R. Величина R на первых итерациях очень большая, так что обучаются все нейроны, но с течением времени она уменьшается до нуля. Таким образом, чем ближе конец обучения, тем точнее определяется группа нейронов, отвечающих каждому классу образов.

    Общая схема построения алгоритмов метода группового учета аргументов (МГУА)

    Общая схема построения алгоритмов метода группового учета аргументов (МГУА)
    Рис. 4.7.  Селекция самого черного тюльпана при расширяющемся опытном поле (эквивалент полного перебора), и при постоянном размере поля (эквивалент селекции при сохранении свободы выбора решений F = const)

    Заимствование алгоритмов переработки информации у природы является одной из основных идей кибернетики. "Гипотеза селекции" утверждает, что алгоритм массовой селекции растений или животных является оптимальным алгоритмом переработки информации в сложных задачах. При массовой селекции высевается некоторое количество семян. В результате опыления образуются сложные наследственные комбинации. Селекционеры выбирают некоторую часть растений, у которых интересующее их свойство выражено лучше всего (эвристический критерий). Семена этих растений собирают и снова высевают для образования новых, еще более сложных комбинаций. Через несколько поколений селекция останавливается и ее результат является оптимальным. Если чрезмерно продолжать селекцию, то наступит "инцухт" — вырождение растений. Существует оптимальное число поколений и оптимальное количество семян, отбираемых в каждом из них.
    Алгоритмы МГУА воспроизводят схему массовой селекции [5], показанной на рис. 4.7. В них есть генераторы усложняющихся из ряда в ряд комбинаций и пороговые самоотборы лучших из них. Так называемое "полное" описание объекта
    Общая схема построения алгоритмов метода группового учета аргументов (МГУА),
    где f — некоторая элементарная функция, например степенной полином, заменяется несколькими рядами "частных" описаний:
    1-ряд селекции: y1= f(x1x2), y2= f(x1x3),..., ys= f(xm-1xm),
    2-ряд селекции: z1= f(y1y2), z2= f(y1y2),..., zp= f(ys-1ys), где s=c2, Общая схема построения алгоритмов метода группового учета аргументов (МГУА) и т.д.
    Входные аргументы и промежуточные переменные сопрягаются попарно, и сложность комбинаций на каждом ряду обработки информации возрастает (как при массовой селекции), пока не будет получена единственная модель оптимальной сложности.
    Каждое частное описание является функцией только двух аргументов.
    Поэтому его коэффициенты легко определить по данным обучающей последовательности при малом числе узлов интерполяции [4]. Исключая промежуточные переменные (если это удается), можно получить "аналог" полного описания. Математика не запрещает обе эти операции. Например, по десяти узлам интерполяции можно получить в результате оценки коэффициентов полинома сотой степени и т. д.

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

    Ряды селекции наращиваются до тех пор, пока регулярность повышается. Как только достигнут минимум ошибки, селекцию, во избежание "инцухта", следует остановить. Практически рекомендуется остановить селекцию даже несколько раньше достижения полного минимума, как только ошибка начинает падать слишком медленно. Это приводит к более простым и более достоверным уравнениям.

    Персептроны

    Пока о проблеме обучения распознаванию образов удавалось говорить в общих чертах, не выделяя конкретные методы или алгоритмы, — не возникало и трудностей, появляющихся всяких раз, когда приходится иметь дело с огромным множеством примеров, у которых общий подход к решению проблемы ОРО. Коварство самой проблемы состоит в том, что, на первый взгляд, все методы и алгоритмы кажутся совершенно различными и, что самое неприятное, часто никакой из них не годится для решения той задачи, которую крайне необходимо срочно решить. И тогда появляется желание выдумать новый алгоритм, который, может быть, достигнет цели. Очевидно, именно это привело к возникновению огромного множества алгоритмов, в котором не так-то легко разобраться.
    Один из методов решения задач обучения распознаванию образов основан на моделировании гипотетического механизма человеческого мозга. Структура модели заранее постулируется. При таком подходе уровень биологических знаний или гипотез о биологических механизмах является исходной предпосылкой, на которой базируются модели этих механизмов. Примером такого направления в теории и практике проблемы ОРО является класс устройств, называемых персептронами. Нужно отметить, что персептроны на заре своего возникновения рассматривались только как эвристические модели механизма мозга. Впоследствии они стали основополагающей схемой в построении кусочно-линейных моделей, обучающихся распознаванию образов.
    Персептроны
    Рис. 4.1.  Персептрон
    В наиболее простом виде персептрон (рис. 4.1.) состоит из совокупности чувствительных (сенсорных) элементов (S-элементов), на которые поступают входные сигналы. S-элементы случайным образом связаны с совокупностью ассоциативных элементов (А-элементов), выход которых отличается от нуля только тогда, когда возбуждено достаточно большое число S-элементов, воздействующих на один А-элемент. А-элементы соединены с реагирующими элементами (R-элементами) связями, коэффициенты усиления (v) которых переменны и изменяются в процессе обучения. Взвешенные комбинации выходов R-элементов составляют реакцию системы, которая указывает на принадлежность распознаваемого объекта определенному образу.
    Если распознаются только два образа, то в персептроне устанавливается только один R-элемент, который обладает двумя реакциями — положительной и отрицательной. Если образов больше двух, то для каждого образа устана вливают свой R-элемент, а выход каждого такого элемента представляет линейную комбинацию выходов A-элементов:

    Персептроны (4.1)
    где Rj — реакция j-го R-элемента; xi — реакция i-го A-элемента; vij — вес связи от i-го A-элемента к j-му R элементу; Персептроны — порог j-го R-элемента.

    Аналогично записывается уравнение i-го A-элемента:

    Персептроны (4.2)
    Здесь сигнал yk может быть непрерывным, но чаще всего он принимает только два значения: 0 или 1. Сигналы от S-элементов подаются на входы А-элементов с постоянными весами, равными единице, но каждый А-элемент связан только с группой случайно выбранных S-элементов. Предположим, что требуется обучить персептрон различать два образа V1 и V2. Будем считать, что в персептроне существует два R-элемента, один из которых предназначен образу V1, а другой — образу V2. Персептрон будет обучен правильно, если выход R1 превышает R2, когда распознаваемый объект принадлежит образу V1, и наоборот. Разделение объектов на два образа можно провести и с помощью только одного R-элемента. Тогда объекту образа V1 должна соответствовать положительная реакция R-элемента, а объектам образа V2 — отрицательная.

    Персептрон обучается путем предъявления обучающей последовательности изображений объектов, принадлежащих образам V1 и V2. В процессе обучения изменяются веса vi А-элементов. В частности, если применяется система подкрепления с коррекцией ошибок, прежде всего учитывается правильность решения, принимаемого персептроном. Если решение правильно, то веса связей всех сработавших А-элементов, которые ведут к R-элементу, выдавшему правильное решение, увеличиваются, а веса несработавших А-элементов остаются неизменными. Можно оставлять неизменными веса сработавших А-элементов, но уменьшать веса несработавших. В некоторых случаях веса сработавших связей увеличивают, а несработавших — уменьшают.


    После процесса обучения персептрон сам, без учителя, начинает классифицировать новые объекты.

    Если персептрон действует по описанной схеме и в нем допускаются лишь связи, идущие от бинарных S-элементов к A-элементам и от A-элементов к единственному R-элементу, то такой персептрон принято называть элементарным Персептроны-персептроном. Обычно классификация C(W) задается учителем. Персептрон должен выработать в процессе обучения классификацию, задуманную учителем.

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

    Теорема 1. Класс элементарных Персептроны-персептронов, для которых существует решение для любой задуманной классификации, не является пустым.

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

    Теорема 2. Если для некоторой классификации C(W) решение существует, то в процессе обучения Персептроны-персептрона с коррекцией ошибок, начинающегося с произвольного исходного состояния, это решение будет достигнуто в течение конечного промежутка времени.

    Смысл этой теоремы состоит в том, что если относительно задуманной классификации можно найти набор А-элементов, в котором существует решение, то в рамках этого набора оно будет достигнуто в конечный промежуток времени.

    Обычно обсуждают свойства бесконечного персептрона, т. е. персептрона с бесконечным числом А-элементов со всевозможными связями с S-элементами (полный набор A-элементов). Для таких персептронов решение всегда существует, а раз оно существует, то оно и достижимо в Персептроны-персептронах с коррекцией ошибок.

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

    Проектирование систем искусственного интеллекта

    Быстрый кластерный анализ

    Процедура иерархического кластерного анализа хороша для малого числа объектов. Ее преимущество в том, что каждый объект можно, образно говоря, пощупать руками. Но эта процедура не годится для огромных социологических данных из-за трудоемкости агломеративного алгоритма и слишком больших размеров дендрограмм.
    Здесь наиболее приемлем быстрый алгоритм, носящий название метода "k-средних". Он реализуется в пакете командой QUICK CLUSTER или командой меню k-means.
    Алгоритм заключается в следующем: выбирается заданное число k-точек и на первом шаге эти точки рассматриваются как "центры" кластеров. Каждому кластеру соответствует один центр. Объекты распределяются по кластерам по такому принципу: каждый объект относится к кластеру с ближайшим к этому объекту центром. Таким образом, все объекты распределились по k кластерам.
    Затем заново вычисляются центры этих кластеров, которыми после этого момента считаются покоординатные средние кластеров. После этого опять перераспределяются объекты. Вычисление центров и перераспределение объектов происходит до тех пор, пока не стабилизируются центры.
    Синтаксис команды:
    QUICK CLUSTER W3d1 TO W3D6/CRITERIA CLUSTERS(3) /MISSING=PAIRWISE /SAVE CLUSTER(SAVCLU) /PRINT ANOVA.
    За именем команды располагаются переменные, по которым происходит кластеризация. Параметр /CRITERIA CLUSTERS задает в скобках число кластеров. Подкомандой /SAVE CLUSTER можно сохранить полученную классификацию в виде переменной, имя которой дается в скобках. Подкоманда /PRINT ANOVA позволяет провести по каждой переменной одномерный дисперсионный анализ — сравнение средних в кластерах. Этот анализ имеет лишь описательное значение и позволяет определить переменные, которые не оказывают никакого влияния на классификацию.
    Команда использует только евклидово расстояние. При этом часть переменных может иметь неопределенные значения, расстояния до центров определяются по определенным значениям. Для использования такой возможности следует употребить подкоманду /MISSING=PAIRWISE.

    Часто переменные имеют разный диапазон изменений, так как измерены они в различных шкалах или просто из-за того, что характеризуют разные свойства объектов (например, рост и вес, килограммы и граммы). В этих условиях основное влияние на кластеризацию окажут переменные, имеющие большую дисперсию. Поэтому перед кластеризацией полезно стандартизовать переменные. К сожалению, в "быстром" кластерном анализе средства стандартизации не предусмотрены непосредственно, как в процедуре иерархического кластерного анализа.

    Для этого можно использовать команду DESCRIPTIVE. Напомним, что подкоманда /save в ней позволяет автоматически сохранить стандартизованные переменные. Кроме того, хорошие средства стандартизующих преобразований шкал дает команда RANK.

    В выдаче распечатываются центры кластеров (средние значения переменных кластеризации для каждого кластера), получаемые на каждой итерации алгоритма. Однако для нас полезна лишь часть выдачи, помеченная текстом "Final centres".

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

    Пример использования QUICK CLUSTER. Для иллюстрации построим классификацию по предварительно отобранным данным городских семей по жилплощади и душевому доходу. Такая классификация может грубо, но наглядно показать различие семей по благосостоянию.

    В данных, полученных из обследования RLMS 1998 г. имеются переменные: c5 — жилплощадь, приходящаяся на семью, memb — число членов семьи, df14 — суммарные денежные доходы семьи.

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

    *вычисление логарифма жилплощади на члена семьи.


    compute lns=Ln(dc5/memb).

    *вычисление логарифма душевого дохода.

    compute lincome=ln(df14/memb).

    *стандартизация переменных.

    DESCRIPTIVES VARIABLES=lincome lns/SAVE .

    QUICK CLUSTER zlincome zlns /MISSING=PAIRWISE /CRITERIA= CLUSTER(3) /SAVE CLUSTER /PRINT ANOVA.

    На основании таблицы 7. 5 центров классов интерпретация полученных кластеров следующая:

    Кластер 1 — зажиточные семьи, имеющие относительно большой доход и жилплощадь.

    Кластер 2 — семьи, проживающие в квартирах с небольшой площадью, но имеющие относительно высокий доход.

    Кластер 3 — семьи, имеющие низкий доход и ограниченные в жилплощади.

    Кластер 4 — семьи, имеющие несколько больший доход, чем в среднем, но ограниченные в жилплощади.

    Таблица 5.3. Центры кластеров (Final Cluster Centers)Cluster
    1234
    Zscore(LINCOME) 1.26 0.52 -1.08 -0.40
    Zscore(LNS) 1.35 -0.56 -0.86 0.58
    Таблица 5.4. Дисперсионный анализ в методе k-средних (ANOVA, имееет только описательное значение)ClusterErrorFSig
    Mean SquareDfMean SquareDf
    ZLINCOME Zscore(LINCOME)513.0063.37024401384.70
    ZLNS Zscore(LNS)530.1533.36324911461.60
    Быстрый кластерный анализ
    Рис. 5.5.  Классификация семей по душевому доходу Lincome и жилплощади на человека LNS (в логарифмических шкалах).

    Дисперсионный анализ (табл. 5.4) показал, что по обоим переменным различие кластеров существенно. Но о статистической значимости переменных говорить бессмысленно, поскольку гипотеза дисперсионного анализа — по сути, независимость групп и "зависимой" переменной, а в данном случае группы сформированы на основе значений "независимых" переменных.

    Полезно рассмотреть график рассеяния данных по кластерам (рис. 5.5). В нашем случае, пожалуй, не стоит говорить о выделении "сгущений" точек в признаковом пространстве, скорее, программа нашла разумные границы для описания типов, выделив их в непрерывном двумерном распределении.

    Иерархический кластерный анализ

    Процедура иерархического кластерного анализа в SPSS предусматривает группировку как объектов (строк матрицы данных), так и переменных (столбцов). Можно считать, что в последнем случае роль объектов играют переменные, а роль переменных — столбцы.
    Этот метод реализует иерархический агломеративный алгоритм. Его смысл заключается в следующем. Перед началом кластеризации все объекты считаются отдельными кластерами, которые в ходе алгоритма объединяются. Вначале выбирается пара ближайших кластеров, которые объединяются в один кластер. В результате количество кластеров становится равным N-1. Процедура повторяется, пока все классы не объединятся. На любом этапе объединение можно прервать, получив нужное число кластеров. Таким образом, результат работы алгоритма агрегирования определяют способы вычисления расстояния между объектами и определения близости между кластерами.
    Для определения расстояния между парой кластеров могут быть сформулированы различные разумные подходы. С учетом этого в SPSS предусмотрены следующие методы, определяемые на основе расстояний между объектами:
  • Среднее расстояние между кластерами (Between-groups linkage).
  • Среднее расстояние между всеми объектами пары кластеров с учетом расстояний внутри кластеров(Within-groups linkage).
  • Расстояние между ближайшими соседями — ближайшими объектами кластеров (Nearest neighbor).
  • Расстояние между самыми далекими соседями (Furthest neighbor).
  • Расстояние между центрами кластеров (Centroid clustering).
  • Расстояние между центрами кластеров (Centroid clustering), или центроидный метод. Недостатком этого метода является то, что центр объединенного кластера вычисляется как среднее центров объединяемых кластеров, без учета их объема.
  • Метод медиан — тот же центроидный метод, но центр объединенного кластера вычисляется как среднее всех объектов (Median clustering).
  • Метод Варда (Ward's method). В качестве расстояния между кластерами берется прирост суммы квадратов расстояний объектов до центров кластеров, получаемый в результате их объединения.
  • Расстояния и меры близости между объектами.
    У нас нет возможности сделать полный обзор всех коэффициентов, поэтому остановимся лишь на характерных расстояниях и мерах близости для определенных видов данных.

    Меры близости отличаются от расстояний тем, что они тем больше, чем более похожи объекты.

    Пусть имеются два объекта X=(X1,…,Xm) и Y=(Y1,…,Ym). Применяя эту запись для объектов, определить основные виды расстояний, используемых процедуре CLUSTER:

  • Евклидово расстояние Иерархический кластерный анализ (Euclidian distance).
  • Квадрат евклидова расстояния Иерархический кластерный анализ (Squared Euclidian distance)
  • Эвклидово расстояние и его квадрат целесообразно использовать для анализа количественных данных.

  • Мера близости — коэффициент корреляции Иерархический кластерный анализ, где Иерархический кластерный анализ и Иерархический кластерный анализ — компоненты стандартизованных векторов X и Y. Эту меру целесообразно использовать для выявления кластеров переменных, а не объектов.
  • Расстояние хи-квадрат получается на основе таблицы сопряженности, составленной из объектов X и Y , которые, предположительно, являются Таблица 5.1. Таблица для пары объектов — строк частот
    X X1 ... Xm X.
    Y Y1 ... Ym Y.
    X+Y X1+Y1 ... Xm+Ym X.+Y.
    векторами частот. Здесь рассматриваются ожидаемые значения элементов, равные E(Xi)=X.*(Xi+Yi)/(X.+Y.) и E(Yi)=Y.*(Xi+Yi)/(X.+Y.), а расстояние хи-квадрат имеет вид корня из соответствующего показателя Иерархический кластерный анализ.
  • Расстояние Фи-квадрат является расстоянием хи-квадрат, нормированным "число объектов" в таблице сопряженности, представляемой строками X и Y, т.е. на корень квадратный из N=X.+Y..
  • В иерархичесом кластерном анализе в SPSS также имеется несколько видов расстояний для бинарных данных (векторы X и Y состоят из нулей и единиц, обозначающих наличие или отсутствие определенных свойств объектов). Наиболее естественными из них, по видимому, являются евклидово расстояние и его квадрат.


  • Иерархическое группирование

    Иерархическое группирование
    Рис. 5.7.  Результаты работы иерархической агломеративной процедуры группирования объектов, представленные в виде дендрограммы

    Классификационные процедуры иерархического типа предназначены для получения наглядного представления о стратификационной структуре всей исследуемой совокупности объектов. Эти процедуры основаны на последовательном объединении кластеров (агломеративные процедуры) и на последовательном разбиении (дивизимные процедуры). Наибольшее распространение получили агломеративные процедуры. Рассмотрим последовательность операций в таких процедурах.
    На первом шаге все объекты считаются отдельными кластерами. Затем на каждом последующем шаге два ближайших кластера объединяются в один. Каждое объединение уменьшает число кластеров на один так, что в конце концов все объекты объединяются в один кластер. Наиболее подходящее разбиение выбирает чаще всего сам исследователь, которому предоставляется дендрограмма, отображающая результаты группирования объектов на всех шагах алгоритма (рис. 5.7). Могут одновременно также использоваться и математические критерии качества группирования.
    Различные варианты определения расстояния между кластерами дают различные варианты иерархических агломеративных процедур. Учитывая специфику подобных процедур, для задания расстояния между классами оказывается достаточным указать порядок пересчета расстояний между классом wl и классом w(m, n) являющимся объединением двух других классов wm и wn по расстояниям qmт = q(wm, wn) и qlт = q(wl, wn) между этими классами. В литературе предлагается следующая общая формула для вычисления расстояния между некоторым классом wl и классом w(m, n):
    Иерархическое группирование
    где Иерархическое группирование и Иерархическое группирование — числовые коэффициенты, определяющие нацеленность агломеративной процедуры на решение той или иной экстремальной задачи. В частности, полагая Иерархическое группирование и Иерархическое группирование, приходим к расстоянию, измеряемому по принципу ближайшего соседа. Если положить Иерархическое группирование и Иерархическое группирование, то расстояние между двумя классами определится как расстояние между двумя самыми далекими объектами этих классов, то есть это будет расстояние дальнего соседа. И, наконец, выбор коэффициентов соотношения по формулам
    Иерархическое группирование
    приводит к расстоянию qcр между классами, вычисленному как среднее расстояние между всеми парами объектов, один из которых берется из одного класса, а другой из другого.
    Использование следующей модификации формулы
    Иерархическое группирование
    дает агломеративный алгоритм, приводящий к минимальному увеличению общей суммы квадратов расстояний между объектами внутри классов на каждом шаге объединения этих классов. В отличие от оптимизационных кластерных алгоритмов предоставляющих исследователю конечный результат группирования объектов, иерархические процедуры позволяют проследить процесс выделения группировок и иллюстрируют соподчиненность кластеров, образующихся на разных шагах какого-либо агломеративного или дивизимного алгоритма. Это стимулирует воображение исследователя и помогает ему привлекать для оценки структуры данных дополнительные формальные и неформальные представления.
    Иерархическое группирование

    Кластерный анализ

    Кластерный анализ предназначен для разбиения множества объектов на заданное или неизвестное число классов на основании некоторого математического критерия качества классификации (cluster (англ.) — гроздь, пучок, скопление, группа элементов, характеризуемых каким-либо общим свойством). Критерий качества кластеризации в той или иной мере отражает следующие неформальные требования:
  • внутри групп объекты должны быть тесно связаны между собой;
  • объекты разных групп должны быть далеки друг от друга;
  • при прочих равных условиях распределения объектов по группам должны быть равномерными.
  • Требования 1) и 2) выражают стандартную концепцию компактности классов разбиения; требование 3) состоит в том, чтобы критерий не навязывал объединения отдельных групп объектов.
    Узловым моментом в кластерном анализе считается выбор метрики (или меры близости объектов), от которого решающим образом зависит окончательный вариант разбиения объектов на группы при заданном алгоритме разбиения. В каждой конкретной задаче этот выбор производится по-своему, с учетом главных целей исследования, физической и статистической природы используемой информации и т. п. При применении экстенсиональных методов распознавания, как было показано в предыдущих разделах, выбор метрики достигается с помощью специальных алгоритмов преобразования исходного пространства признаков.
    Другой важной величиной в кластерном анализе является расстояние между целыми группами объектов. Приведем примеры наиболее распространенных расстояний и мер близости, характеризующих взаимное расположение отдельных групп объектов. Пусть wi — i-я группа (класс, кластер) объектов, Ni — число объектов, образующих группу wi, вектор Кластерный анализ — среднее арифметическое объектов, входящих в wi (другими словами, Кластерный анализ — "центр тяжести" i-й группы), a q ( wl, wm ) — расстояние между группами wl и wm.
    Кластерный анализ
    Рис. 5.6.  Различные способы определения расстояния между кластерами wl и wm: 1 — по центрам тяжести, 2 — по ближайшим объектам, 3 — по самым далеким объектам

    Расстояние ближайшего соседа есть расстояние между ближайшими объектами кластеров: Кластерный анализ

    Расстояние дальнего соседа — расстояние между самыми дальними объектами кластеров: Кластерный анализ

    Расстояние центров тяжести равно расстоянию между центральными точками кластеров:

    Кластерный анализ

    Обобщенное (по Колмогорову) расстояние между классами, или обобщенное K-расстояние, вычисляется по формуле Кластерный анализ

    В частности, при Кластерный анализ и при Кластерный анализ имеем

    Кластерный анализ

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

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

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


    Затем, на втором этапе, объекты переносятся из класса в класс до тех пор, пока значение критерия не перестанет улучшаться.

    Многообразие алгоритмов кластерного анализа обусловлено также множеством различных критериев, выражающих те или иные аспекты качества автоматического группирования. Простейший критерий качества непосредственно базируется на величине расстояния между кластерами. Однако такой критерий не учитывает "населенность" кластеров — относительную плотность распределения объектов внутри выделяемых группировок. Поэтому другие критерии основываются на вычислении средних расстояний между объектами внутри кластеров. Но наиболее часто применяются критерии в виде отношений показателей "населенности" кластеров к расстоянию между ними. Это, например, может быть отношение суммы межклассовых расстояний к сумме внутриклассовых (между объектами) расстояний или отношение общей дисперсии данных к сумме внутриклассовых дисперсий и дисперсии центров кластеров.

    Функционалы качества и конкретные алгоритмы автоматической классификации достаточно полно и подробно рассмотрены в специальной литературе. Эти функционалы и алгоритмы характеризуются различной трудоемкостью и подчас требуют ресурсов высокопроизводительных компьютеров. Разнообразные процедуры кластерного анализа входят в состав практически всех современных пакетов прикладных программ для статистической обработки многомерных данных.

    Методы и алгоритмы анализа структуры многомерных данных

    Если процедура факторного анализа сжимает в малое число количественных переменных данные, описанные количественными переменными, то кластерный анализ сжимает данные в классификацию объектов. Синонимами термина "кластерный анализ" являются "автоматическая классификация объектов без учителя" и "таксономия".
    Если данные понимать как точки в признаковом пространстве, то задача кластерного анализа формулируется как выделение "сгущений точек", разбиение совокупности на однородные подмножества объектов.
    При проведении кластерного анализа обычно определяют расстояние на множестве объектов; алгоритмы кластерного анализа формулируют в терминах этих расстояний. Мер близости и расстояний между объектами существует великое множество. Их выбирают в зависимости от цели исследования. В частности, евклидово расстояние лучше использовать для количественных переменных, расстояние хи-квадрат — для исследования частотных таблиц, имеется множество мер для бинарных переменных.
    Кластерный анализ является описательной процедурой, он не позволяет сделать никаких статистических выводов, но дает возможность провести своеобразную разведку — изучить "структуру совокупности".

    Стандартизация

    Непосредственное использование переменных в анализе может привести к тому, что классификацию будут определять переменные, имеющие наибольший разброс значений. Поэтому применяются следующие виды стандартизации:
  • Z-шкалы (Z-Scores). Из значений переменных вычитается их среднее, и эти значения делятся на стандартное отклонение.
  • Разброс от -1 до 1. Линейным преобразованием переменных добиваются разброса значений от -1 до 1.
  • Разброс от 0 до 1. Линейным преобразованием переменных добиваются разброса значений от 0 до 1.
  • Максимум 1. Значения переменных делятся на их максимум.
  • Среднее 1. Значения переменных делятся на их среднее.
  • Стандартное отклонение 1. Значения переменных делятся на стандартное отклонение.
  • Кроме того, возможны преобразования самих расстояний, в частности, можно расстояния заменить их абсолютными значениями, это актуально для коэффициентов корреляции. Можно также все расстояния преобразовать так, чтобы они изменялись от 0 до 1.
  • Таким образом, работа с кластерным анализом может превратиться в увлекательную игру, связанную с подбором метода агрегирования, расстояния и стандартизации переменных с целью получения наиболее интерпретируемого результата. Желательно только, чтобы это не стало самоцелью и исследователь получил действительно необходимые содержательные сведения о структуре данных.
    Процесс агрегирования данных может быть представлен графически деревом объединения кластеров (Dendrogramm) либо "сосульковой" диаграммой (Icicle). Стандартизация
    Рис. 5.2.  Дендрограмма классификации
    Но подробнее о процессе кластеризации можно узнать по протоколу объединения кластеров (Schedule).
    Пример иерархического кластерного анализа. Проведем кластерный анализ по полученным нами ранее факторам на агрегированном файле Курильского опроса: Стандартизация
    Рис. 5.3.  Классификация городов

    CLUSTER fac1_1 fac2_1 /METHOD BAVERAGE /MEASURE= SEUCLID /ID=name /PRINT SCHEDULE CLUSTER(3,5) /PLOT DENDROGRAM .
    В команде указаны переменные fac1_1 fac2_1 для кластеризации. По умолчанию расстояние между кластерами определяется по среднему расстоянию между объектами (METHOD BAVERAGE), а расстояние между объектами — как квадрат евклидова (MEASURE= SEUCLID).
    Кроме того, распечатывается протокол (PRINT SCHEDULE), в качестве переменных выводятся классификации из 3, 4, 5 кластеров (CLUSTER(3,5)) и строится дендрограмма (PLOT DENDROGRAM).

    Разрез дерева агрегирования (рис. 5.2) вертикальной чертой на четыре части дал два кластера, состоящих из уникальных по своим характеристикам городов Александровск-Сахалинский и Черемхово; кластер из 5 городов (Оха, Елизово, Южно-Сахалинск, Хабаровск, Курильск); еще один кластер из 14 городов составили последний кластер.

    Естественность такой классификации демонстрирует полученное поле рассеяния данных (рис.5.3).

    Таблица 5.2. Протокол объединения кластеровCluster CombinedCoefficientsStage Cluster First AppearsNext StageStageCluster 1Cluster 2Cluster 1Cluster 2
    1 5 20 0.0115 0 02
    2 5 11 0.0175 1 0 3
    3 5 19 0.0464 2 0 11
    4 6 12 0.0510 0 0 8
    5 3 16 0.0549 0 0 9
    6 13 21 0.0808 0 0 10
    7 10 14 0.1082 0 0 14
    8 6 15 0.1349 4 0 11
    9 3 8 0.1538 5 0 13
    10 1 13 0.2818 0 6 12
    11 5 6 0.4560 3 8 13
    12 1 2 0.5768 10 0 16
    13 3 5 0.5861 9 11 16
    14 10 17 0.6130 7 0 17
    15 7 18 0.8098 0 0 17
    16 1 3 1.5406 12 13 18
    17 7 10 2.5726 15 14 19
    18 1 4 3.5613 16 0 19
    19 1 7 5.2217 18 17 20
    20 1 9 14.9146 19 0 0
    Процесс объединения подробно показан в протоколе объединения (табл. 5.2). В нем указаны стадии объединения, объединяемые кластеры (после объединения кластер принимает минимальный номер из номеров объединяемых кластеров). Далее следует расстояние между кластерами, номер стадии, на которой кластеры ранее уже участвовали в объединении; затем следующая стадия, где произойдет объединение с другим кластером.

    На практике интерпретация кластеров требует достаточно серьезной работы, изучения разнообразных характеристик объектов для точного описания типов объектов, которые составляют тот или иной класс.

    Проектирование систем искусственного интеллекта

    Алгоритмические модели

    Алгоритмические модели основаны на понятии алгоритма. Исторически первые точные определения алгоритма, возникшие в 30-х годах, были связаны с понятием вычислимости. С тех пор было предложено множество, как выяснилось, эквивалентных определений алгоритма.
    В практике программирования алгоритмы принято описывать с помощью алгоритмических языков программирования. Широко используются также разного рода блок-схемы алгоритмов, позволяющие представить алгоритмы в наглядном и общедоступном виде, не привлекая в тоже время сложных конструкций из конкретных языков программирования.
    Чтобы оценить возможности использования алгоритмов для представления неформальных процедур, рассмотрим простую задачу.
    ЗАДАЧА. Описать процедуру, реализующую преобразование из именительного падежа в родительный для существительных следующих типов: ДОМ, МАМА, ВИЛКА, КИНО, НОЧЬ, ТОКАРЬ, КИЛЬ.
    Решение 1 указано на рис. 6.1 в виде блок-схемы соответствующего алгоритма.
    Алгоритмические модели
    Рис. 6.1.  Решение 1. Алгоритм
    С точки зрения программирования на алгоритмических языках достоинства подобного представления очевидны — эта блок-схема без затруднений переводится в текст программы, например, на языке Ассемблер или С++. Однако само составление подобной блок-схемы при появлении существительных новых типов становится, очевидно, все более и более утомительным занятием. Для иллюстрации этого предположим, что дана
    ДОПОЛНИТЕЛЬНАЯ ЗАДАЧА. Расширить алгоритм, представленный на рис. 1.1, на слова ВАСЯ, ВРЕМЯ, АКЦИЯ, ЗАДАЧА.
    Разумеется, программист без особого труда составит соответствующую блок-схему алгоритма. И все же, если учесть, что подобные изменения и расширения алгоритма при программировании неформальных процедур происходят многократно (реальная сложность неформальной процедуры как раз и проявляется в практической невозможности предусмотреть заранее все случаи), следует признать, что, вполне правильное в статике, решение 1 в динамике неудачно!

    Язык Рефал

    Название языка происходит от "РЕкурсивных Функций АЛгоритмический язык". Нас будут также интересовать соображения, которые привели к построению этого языка — эти соображения имеют, на наш взгляд, весьма общий характер и полезны для лучшего понимания причин возникновения продукционного подхода в программировании.
    Разработчики языка Рефал делят алгоритмические языки на две группы. Первую группу образуют языки, которые называются языками операторного, или процедурного типа. Элементарными единицами программы являются здесь операторы, т.е. приказы, выполнение которых сводится к четко определенному изменению четко определенной части памяти машины. Типичным представителем этой группы является язык машины Поста. Сюда же относятся машинные языки конретных ЭВМ, а также массовые языки программирования типа Фортран, Алгол, ПЛ/1.
    Языки второй группы называются языками сентенциального, или декларативного типа (sentence — высказывание, предложение). Программа на таком языке представляется в виде набора предложений (соотношений, правил, формул), которые машина, понимающая данный язык, умеет каким-то образом применять к обрабатываемой информации. Простейшим примером сентенциального языка, созданного с теоретическими целями, является язык нормальных алгоритмов Маркова.
    Можно назвать прообразы указанных типов алгоритмических языков в естественных языках. Для операторных языков это повелительное наклонение (императив, приказание), для сентенциальных – изъявительное наклонение (описание, повествование). Обращаясь к естественному языку, нетрудно заметить, что "изъявительное наклонение является несравненно более распространенным и образует, в сущности, основу языка, в то время как повелительное наклонение предстает в виде некоторой специальной модификации". Таким образом, можно сделать вывод о том, что "относительный вес изъявительного наклонения является мерой развитости языка".
    Язык РЕФАЛ является сентенциальным в своей основе, а вся информация в этом языке представляется в виде правил конкретизации. Каждое правило записывается в виде предложения, которое представляет собой продукцию с определенными синтаксисом и семантикой. Предложения в Рефал-программе отделяются друг от друга знаком § (параграф).
    Каждое правило конкретизации определяет раскрытие смысла некоторого понятия через более элементарные. Операцию конкретизации можно также определить как переход от имени к значению. Введем два знака: k и Язык Рефал, которые будем называть конкретизационными скобками, и которые будут содержать объект, подлежащий конкретизации. Так, если х — некоторая переменная, то Язык Рефал (конкретизация х) будет изображать значение этой величины. Другой пример: объект Язык Рефал при правильном определении операции сложения рано или поздно будет заменен на объект 35.
    Выполнение конкретизации — переход от имени к значению — объявляется основной и, по существу, единственной операцией в языке Рефал. Эту операцию будет выполнять Рефал-машина (имеется в виду машина на логическом уровне, имитируемая соответствующим транслятором на универсальной ЭВМ; возможно, разумеется, и построение реальной "физической" Рефал-машины).
    Поскольку правило конкретизации есть указание для замены одного объекта (слова в некотором алфавите) на другой, предложения языка Рефал должны состоять из левой части (заменяемый объект) и правой части (объект, заменяющий левую часть). Для разделения правой и левой части мы будем использовать знак стрелки "Язык Рефал".
    Пример. Предложение, выражающее тот факт, что значение переменной Х есть 137, записывается в виде Язык Рефал.
    Между знаком § и первым знаком k можно вставлять последовательность знаков, которая будет служить номером предложения, или комментарием к нему, например:
    Язык Рефал. (ф. 1)
    Опишем теперь структуру Рефал-машины, которая, используя предложения Рефал-программы, будет выполнять конкретизации. Будем считать, что объектом обработки является некоторое выражение (слово), которое находится в поле зрения машины. Работа машины осуществляется по шагам, каждый из которых представляет выполнение одного акта, конкретизации.
    Пусть программа машины состоит из единственного предложения (ф. 1), а в поле зрения находится выражение Язык Рефал. Тогда за один шаг машина заменит содержимое поля зрения на 137, после чего она остановится, т. к. знаков конкретизации больше нет и, следовательно, делать ей больше нечего.
    Так как Рефал-программа содержит, вообще говоря, набор (последовательность) предложений, может оказаться, что для выполнения данной конкретизации пригодно не одно, а несколько предложений. Например, в поле памяти, кроме (ф. 1), может находиться еще предложение
    Язык Рефал.
    Неоднозначность, которая отсюда может возникнуть, устраняется так же, как это принято в нормальных алгоритмах Маркова (читатель, видимо, уже заметил, что Рефал-машина следует идеологии этих алгоритмов): машина просматривает предложения в том порядке, в котором они расположены в Рефал-программе, и применяет первое из них, которое окажется подходящим.
    Поле зрения может содержать сколько угодно конкретизационных скобок, причем они могут быть как угодно вложены друг в друга. В этом случае Рефал-машина начинает процесс конкретизации с первого из знаков k, в области действия которого (т.е. в последовательности знаков до парной скобки Язык Рефал) нет ни одного знака k. Выражение, находящееся в области этого знака k, последовательно сравнивается с левыми частями предложений Рефал-программы. Найдя подходящее предложение, машина выполняет в поле зрения необходимую замену и переходит к следующему шагу конкретизации.
    Пример. Пусть Рефал-программа имеет вид
    Язык Рефал
    Язык Рефал
    Язык Рефал
    Язык Рефал,
    а поле зрения содержит выражение
    Язык Рефал.
    На первом шаге замене подлежит подвыражение Язык Рефал — получим в поле зрения Язык Рефал. Теперь в первую очередь конкретизируется Язык Рефал — получим в результате применения третьего предложения Язык Рефал и на последнем шаге получим 139, не содержащее символов k. (Разумеется для реального сложения используются соответствующие встроенные функции, а этот пример — лишь простейшая иллюстрация принципов работы машины).
    Чтобы иметь возможность представлять обобщенные предложения, используются три типа переменных: е — для представления выражений; t — для термов; s — для символов. В простейшем случае переменные записываются в виде указателя типа (е, t, s) и индекса; например, е1, e2 — переменные, пробегающие в качестве значений выражения. Выражением в языке Рефал называется последовательность знаков, правильно построенная в соответствии с синтаксисом языка Рефал. Терм языка Рефал — это либо символ, либо выражение в круглых или конкретизационных скобках. Выражения строятся из термов.
    Пример. Предположим, требуется написать программу, которая выполняет раскрытие скобок в алгебраических выражениях, построенных из букв с помощью скобок, знаков сложения "+" и умножения"*". Рассмотрим процесс написания такой программы. Если некоторое выражение е имеет вид е1 + e1, где е1, e1 — выражения, то для раскрытия скобок надо: раскрыть скобки в e1, раскрыть скобки в е2, полученные результаты сложить. Эту мысль в компактном, но в то же время и наглядном виде выражает предложение:
    Язык Рефал
    Если же выражение е имеет вид e1 * e2, то, вообще говоря, необходимо учитывать две возможности:
  • хотя бы один из сомножителей есть сумма (например, е = (А + В) *С),
  • ни одно из выражений е1 или е2 не представимо в виде суммы (например, е = (А * В) * (С * Л)).
  • В первом случае надо описать законы дистрибутивности:
    Язык Рефал,
    Язык Рефал,
    Язык Рефал.
    Во втором случае по аналогии со сложением имеем
    Язык Рефал.
    Наконец, осталось выразить возможность "снятия внешних скобок" и условие "терминальности" символов, что определяют предложения:
    Язык Рефал,
    Язык Рефал
    (буквы не подлежат конкретизации).
    Приведенные семь предложений § 2.1 — § 2.7 решают задачу. Рассмотрим как эта программа обрабатывает выражение
    Язык Рефал.
    Последовательно получим в результате работы программы (для удобства слева указываем номер правила, которое непосредственно привело к данному выражению):
    Язык Рефал,
    Язык Рефал,
    Язык Рефал.
    Далее ограничимся рассмотрением первого слагаемого:
    Язык Рефал,
    Язык Рефал,
    § 2.7 А * С + ... .
    После аналогичной обработки остальных слагаемых получим искомое выражение
    А*С+D*С+А * D + В * D.
    Если на вход поступит выражение
    Язык Рефал,
    то получим последовательно:
    Язык Рефал,
    Язык Рефал,
    Язык Рефал,
    §2.1, 2.7 A + B + С.
    Обратите внимание, что если расположить правило § 2.5 перед правилами § 2.2 и § 2.3, то мы придем к абсурду! Например, выражение А *(В+С) будет приведено к виду: А *В + С.
    Язык Рефал

    Логический вывод

    Важность логического вывода становится очевидной уже при рассмотрении простейших информационно-логических процедур. Предположим, что некоторая база данных содержит сведения об отношениях "х — ОТЕЦ у" и "х — МАТЬ у". Чтобы обработать запросы типа:
    ИВАНОВ А.И. — ДЕД ПЕТРОВА В.А.?
    ПЕТРОВ В.А. — ВНУК ИВАНОВА А.И.?
    необходимо либо ввести в базу данных также и сведения об отношениях "х — ДЕД у" и "х — ВНУК у", либо объяснить системе, как из отношений ОТЕЦ, МАТЬ извлечь искомую информацию. Реализация первой возможности связана с неограниченным ростом избыточности базы данных. Вторая возможность при традиционном алгоритмическом подходе требует написания все новых и новых программ для реализации новых типов запросов.
    Логический вывод позволяет расширять возможности "общения" наиболее просто и наглядно. Так, для приведенных типов запросов системе достаточно будет сообщить три правила:
  • х—ДЕД у если х—ОТЕЦ а и а—РОДИТЕЛЬ у;
  • х—РОДИТЕЛЬ у если х—ОТЕЦ у или х—МАТЬ у;
  • х—ВНУК у если у—ДЕД х.
  • Эти правила содержат естественные и очевидные определения понятий ДЕД, РОДИТЕЛЬ, ВНУК. Поясним, в чем состоит логический вывод для запроса "А—ДЕД В?" в предположении, что в базе данных имеются факты: А—ОТЕЦ Б и Б—МАТЬ В. При этом для упрощения опустим тонкости, связанные с падежными окончаниями. Пользуясь определением 1, система придет к необходимости проверки существования такого индивидуума а, что факты А—ОТЕЦ а и а—РОДИТЕЛЬ В истинны. Если такой а существует, то А—ДЕД В, если не существует такого а, то А не является дедом В.

    Неформальные процедуры

    Говоря о неформальных процедурах, мы обычно хорошо понимаем, что имеется в виду, и без затруднений можем привести примеры таких процедур, связанных с пониманием текстов естественного языка, переводом с одного естественного языка на другой, информационным поиском по смыслу и т. д.
    Трудности возникают при попытке точного определения подобных процедур. Так, если рассматривать неформальные процедуры всего лишь как абстрактные функции, которые для каждого значения аргумента "выдают" некоторое значение, то категория неформальности вообще исчезает из рассмотрения.
    Неформальная процедура — это особый способ представления функций. Чтобы в какой-то степени приблизиться к этому "человеческому" способу представления функций, рассмотрим прежде всего традиционные алгоритмические модели и попытаемся понять, в чем состоит основная трудность их применения для имитации неформальных процедур.

    Продукционные модели

    В подобных случаях для обеспечения динамичности процессов модификации программ используются те или иные варианты таблиц решений. С учетом этого для исходной задачи более приемлемо решение 2.
    Таблица 6.1. Решение 2СитуацияДействиеСитуацияДействие
    КИНОКИНО
    -ча-чи-ие-ия
    -КА-КИ-мя-мени
    -АРЬ-АРЯ-
    -Ь & М:хЬ
    Соответствующая таблица решений содержит две графы: слева приведены описания ситуаций, справа — соответствующие действия. Предполагается, что программист разработал интерпретирующую программу для подобных таблиц. Эта программа работает следующим образом. Для конкретного входного слова, пусть это будет для примера слово РОЗА, осуществляется последовательный просмотр ситуаций, указанных в таблице, и сравнение их со входным словом. Если слово соответствует некоторой ситуации, то выполняется действие, указанное для этой ситуации.
    Для слова РОЗА будет обнаружено соответствие с ситуацией "-А". В результате выполнения действия "-Ы" будет получено выходное слово РОЗЫ.
    Теперь значительно упрощается расширение на новые классы слов — необходимо лишь обеспечить внесение вставок на нужное место в таблице решений.
    Таблицы решений представляют собой частный случай так называемых продукционных систем. В этих системах правила вычислений представляются в виде продукций. Продукции представляют собой операторы специального вида и состоят из двух основных частей, для краткости называемых обычно "ситуация — действие".
    "Ситуация" содержит описание ситуации, в которой применима продукция. Это описание задается в виде условий, называемых посылками продукции. "Действие" — это набор инструкций, подлежащих выполнению в случае применимости продукции.

    Продукционные системы с исключениями

    Если отношение "правило—исключение" встроено в систему, она сама может понять, что преобразование ПАЛКА -> ПАЛКЫ незаконно. При этом система должна руководствоваться простым принципом: если применимо исключение, общее правило запрещено. Соответствующие системы будем называть системами с исключениями.
    Отношение "общее правило — исключение" безусловно полезно для понимания системой уместности правил. Можно сказать, что это отношение устанавливает автоматически (по умолчанию) наиболее типичное для неформальных процедур взаимодействие правил:
  • исключение "вытесняет" общее правило;
  • при пересечении разрешены оба правила.
  • Разумеется, возможны ситуации, когда необходимо поступать наоборот:
  • исключение не запрещает общего правила;
  • при пересечении одно из правил запрещено.
  • Пусть дано, например, общее правило Продукционные системы с исключениями и его исключение Продукционные системы с исключениями. Таким образом, для произвольного слова необходима реакция р1. Для слова же, начинающегося с буквы А, исполняется реакция р2 — по умолчанию для таких слов реакция р1 незаконна.
    Предположим, однако, что по условию конкретной задачи для слов, начинающихся с А, реакция р1 также допустима. В этом случае введение нового правила Продукционные системы с исключениями снимает запрет на реакцию р1 в ситуации Ах.
    Аналогичный способ годится для пересечения правил.
    Таким образом, аппарат исключений позволяет устанавливать произвольные способы взаимодействия правил, в том числе и отличные от взаимодействия по умолчанию.
    При развитии продукционной системы с исключениями программист сосредотачивает свое внимание на выявлении новых правил и на обобщении уже имеющихся. Аппарат исключений освобождает программиста от решения трудоемких вопросов согласования правил — распознавание и интерпретация исключений осуществляется автоматически.

    Режим возвратов

    Таблица решений, приведенная в Таблице 6.1, иллюстрирует так называемую безвозвратную процедуру. В этом случае на каждом шаге выбирается единственное решение — так, для слова РОЗА таким решением будет РОЗЫ, — проблема выбора решения не возникает. В общем случае неформальные процедуры являются многозначными, а правильность конкретного выбора, сделанного на некотором шаге, проверяется на следующих шагах. При этом используется так называемый режим возвратов.
  • МАТЬ ——————> ЛЮБИТ ——————> ? что делать? кого?
  • МАТЬ <—————— ЛЮБИТ <—————— ? кого? что делать?
  • Пусть предложение начинается со слов МАТЬ ЛЮБИТ ... . Проанализировав эти слова в первоначальном предположении именительного падежа для слова МАТЬ, система вправе построить структуру, представленную в случае 1). Если следующее слово после слова ЛЮБИТ представляет собой существительное в винительном падеже, например, вся фраза имеет вид МАТЬ ЛЮБИТ СЫНА, то эта структура является окончательной. Если же фраза имеет вид МАТЬ ЛЮБИТ СЫН, то возникает противоречие или, как говорят, сигнал неуспеха — очередное слово СЫН противоречит ожиданию прямого дополнения. В этом случае система должна вернуться на ближайший из предыдущих шагов, где можно принять другую альтернативу анализа. В данном примере это шаг анализа слова МАТЬ — система должна принять теперь альтернативу винительного падежа для этого слова. Далее будет построена структура, указанная в случае 2).
    Тривиальность рассмотренного примера убеждает в необходимости режима возвратов при реализации неформальных процедур.

    Зависимость продукций

    Продукционные системы, содержащие аппарат логического вывода, отличает высокая степень общности правил обработки данных. Однако именно эта общность приводит к ухудшению динамических свойств соответствующих продукционных программ, к трудностям их модификации и развития. Чтобы понять, в чем тут причина, обратимся снова к Таблице 6. Пока эта таблица содержит несколько строк, не представляет особого труда установление правильного порядка их следования, но если учесть, что реальное количество продукций в подобных задачах исчисляется сотнями и более, трудоемкость их правильного взаимного расположения становится очевидной. Практически, при программировании неформальных "человеческих" процедур, подобные таблицы можно вручную создавать и сопровождать для нескольких десятков продукций, максимум — для 100-200. Продукции зависимы, и за правильное выявление этой зависимости отвечает программист. Новые продукции необходимо вручную вставлять на нужное место.
    Мы могли бы использовать в таблице решений только конкретные факты, например правила ДОМ -> ДОМА, МАМА -> МАМЫ и т. д., и динамичность соответствующей таблицы решений была бы восстановлена — подобные правила можно было бы вводить в произвольном порядке! Однако цена подобной "динамичности" окажется непомерно высокой — полный отказ от обобщенных правил.
    Желательно восстановить динамичность продукционно-логических систем, сохранив при этом в полном объеме возможность использования обобщенных правил. Продукционная система должна взять на себя функции распознавания и интерпретации приоритета продукций — программист должен только описывать ситуации и соответствующие им действия.

    Проектирование систем искусственного интеллекта

    Арифметические операторы

    Атомы +, -, *, /, mod и div — обычные атомы Пролога и могут использоваться почти в любом контексте. Указанные атомы — не встроенные предикаты, а функторы, имеющие силу только в пределах арифметических выражений. Они определены как инфиксные операторы. Эти атомы являются главными функторами в структуре, а сама структура может принимать только описанные выше формы.
    Арифметический оператор выполняется следующим образом. Во-первых, вычисляются арифметические выражения по обе стороны оператора. Во-вторых, над результатом вычислений выполняется нужная операция.
    Арифметические операторы определяются Пролог-системой. Если мы напишем предикат
    среднее (X,Y,Z) :- Z is (X+Y)/2.
    то, хотя можно определить среднее как оператор,
    ?- ор(250^х, среднее).
    но Пролог выдаст сообщение об ошибке, если встретит выражение Z is X среднее Y.
    Это произойдет потому, что Х среднее Y не образует арифметического выражения, а среднее не является арифметическим оператором, определенным в системе.

    Арифметические выражения

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

    Арифметическое выражение является числом или структурой. В структуру может входить одна или более компонент, таких, как числа, арифметические операторы, арифметические списковые выражения, переменная, конкретизированная арифметическим выражением, унарные функторы, функторы преобразования и арифметические функторы.
    Числа. Числа и их диапазоны определяются в конкретной реализации Пролога.
    Арифметические операторы. + - * / mod div
    Арифметические списковые выражения. Если Х — арифметическое выражение, то список [X ] также является арифметическим выражением, например [1,2,3]. Первый элемент списка используется как операнд в выражении. Скажем, X is ([l,2,3]+5) имеет значение 6.
    Арифметические списковые выражения полезны и при обработке символов, поскольку последние могут рассматриваться как небольшие целые числа. Например, символ "а" эквивалентен [97 ] и, будучи использован в выражении, вычисляется как 97. Поэтому значение выражения "р"+"А"-"а" равно 80, что соответствует коду ASCII для "Р".
    Переменная, конкретизированная арифметическим выражением. Примеры: Х-5+2 и У-3*(2+А)
    Унарные функторы. Примеры: +(Х) и -(У)
    Функторы преобразования. В некоторых реализациях Пролога имеется арифметика с плавающей точкой, а следовательно, и функторы преобразования. Например:
    float (X) преобразует целое число Х в число с плавающей точкой.
    Математические функторы. Пример: квадрат(Х) объявлен как оператор и эквивалентен арифметическому выражению (Х*Х).

    ATOM

    Атом представляет собой произвольную последовательность символов, заключенную в одинарные кавычки. Одинарный символ кавычки, встречающийся внутри атома, записывается дважды. Когда атом выводится на печать, внешние символы кавычек обычно не печатаются. Существует несколько исключений, когда атомы необязательно записывать в кавычках. Вот эти исключения:
  • атом, состоящий только из чисел, букв и символа подчеркивания и начинающийся со строчной буквы;
  • атом, состоящий целиком из специальных символов. К специальным символам относятся:+ - * / ^ = : ; ? @ $ &
  • Заметим, что атом, начинающийся с /*, будет воспринят как начало комментария, если он не заключен в одинарные кавычки.
    Как правило, в программах на Прологе используются атомы без кавычек.
    Атом, который необязательно заключать в кавычки, может быть записан и в кавычках. Запись с внешними кавычками и без них определяет один и тот же атом.
    Внимание: допустимы случаи, когда атом не содержит ни одного символа (так называемый 'нулевой атом') или содержит непечатаемые символы. (В Прологе имеются предикаты для построения атомов, содержащих непечатаемые или управляющие символы.) При выводе таких атомов на печать могут возникнуть ошибки.

    ЧИСЛА

    Большинство реализации Пролога поддерживают целые и действительные числа. Чтобы выяснить, каковы диапазоны и точность чисел, следует обратиться к руководству по конкретной реализации.

    Язык программирования Пролог

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

    КОНСТАНТЫ

    Константы известны всем программистам. В Прологе константа может быть атомом или числом.

    НЕКОТОРЫЕ СТАНДАРТНЫЕ ЦЕЛЕВЫЕ УТВЕРЖДЕНИЯ ДЛЯ ОБРАБОТКИ СПИСКОВ

    Покажем на примерах, как можно использовать запись вида [Н | T] вместе с рекурсией для определения некоторых полезных целевых утверждений для работы со списками.
    Принадлежность списку. Сформулируем задачу проверки принадлежности данного терма списку.
    Граничное условие:
    Терм R содержится в списке [H|T], если R=H.
    Рекурсивное условие:
    Терм R содержится в списке [H|T], если R содержится в списке Т.
    Первый вариант записи определения на Прологе имеет вид:
    содержится (R, L) :- L=[H I T], H=R. содержится(Р, L) :- L=[H|T], содержится (R, T).Цель L=[H I T] в теле обоих утверждений служит для того, чтобы разделить список L на голову и хвост.
    Можно улучшить программу, если учесть тот факт, что Пролог сначала сопоставляет с целью голову утверждения, а затем пытается согласовать его тело. Новая процедура, которую мы назовем "принадлежит", определяется таким образом:
    принадлежит (R, [R | Т]). принадлежит (R, [H | Т]) :- принадлежит (R, T).
    На запрос
    ?- принадлежит(а, [а, Ь, с]).
    будет получен ответ
    да
    на запрос
    ?- принадлежит(b, [a, b, с]).
    - ответ
    да
    но на запрос
    ?- принадлежит(d, (a, b, c)).
    Пролог дает ответ
    нет
    В большинстве реализации Пролога предикат принадлежит является встроенным.
    Соединение двух списков. Задача присоединения списка Q к списку Р, в результате чего получается список R, формулируется следующим образом:
    Граничное условие:
    Присоединение списка Q к [] дает Q.
    Рекурсивное условие:
    Присоединение списка Q к концу списка Р выполняется так: Q присоединяется к хвосту Р, а затем спереди добавляется голова Р.
    Определение можно непосредственно написать на Прологе:
    соединить([],0,0). соединить(Р,Q,Р) :- Р=[НР | ТР], соединить(TP, Q, TR), R=[HP | TR].Однако, как и в предыдущем примере, воспользуемся тем, что Пролог сопоставляет с целью голову утверждения, прежде чем пытаться согласовать тело:
    присоединить([] ,Q,Q). присоединить(HP | TP], Q, [HP | TR]) :- присоединить (TP, Q, TR).На запрос
    ?- присоединить [а, b, с], [d, e], L).
    будет получен ответ
    L = [a, b, c, d].
    но на запрос
    ?- присоединить([a, b], [c, d], [e, f]).
    ответом будет
    нет
    Часто процедура присоединить используется для получения списков, находящихся слева и справа от данного элемента:
    присоединить (L [джим, р], [джек,.билл, джим, тим, джим, боб] ) . L = [джек, билл] R = [тим, джим, боб] другие решения (да/нет)? да L=[джек, билл, джим, тим] R=[боб] другие решения (да/нет)? да других решений нетИндексирование списка. Задача получения N-ro терма в списке определяется следующим образом:
    Граничное условие:
    Первый терм в списке [Н | Т] есть Н.
    Рекурсивное условие:
    N-й терм в списке [Н | Т] является (N-I)-м термом в списке Т.
    Данному определению соответствует программа:
    /* Граничное условие: получить ([H | Т], 1, Н). /* Рекурсивное условие: получить([Н | Т], N, У) :- М is N - 1, получить (Т, М ,Y).Построение списков из фактов. Иногда бывает полезно представить в виде списка информацию, содержащуюся в известных фактах. В большинстве реализаций Пролога есть необходимые для этого предикаты:
    bagof(X,Y,L) — определяет список термов L, конкретизирующих переменную Х как аргумент предиката Y, которые делают истинным предикат Y
    setof(X,Y,L) — все сказанное о предикате bagof относится и к setof, за исключением того, что список L отсортирован и из него удалены все повторения.
    Если имеются факты:
    собака(рекс). собака (голди). собака (фидо). собака(реке).то на запрос
    ?- bagof(D, co6aкa(D), L),
    будет получен ответ
    L=[реке, голди, фидо, рекс]
    в то время как
    ?-setof(D, co6aкa(D), L). дает значение
    L=[фидо, голди, рекc]
    Пример: сложение многочленов
    Теперь мы достаточно подготовлены к тому, чтобы использовать списки для решения задач. Вопрос, которым мы займемся, — представление и сложение многочленов.
    Представление многочленов. Посмотрим, как можно представить многочлен вида
    Р(х)=3+3х-4х^3+2х^9
    Q(х)=4х+х^2-3х^3+7х^4+8х^5
    Заметим, что каждое подвыражение (такое, как Зх ^3, Зх, 3) имеет самое большее две переменные компоненты: число, стоящее перед х, называемое коэффициентом, и число, стоящее после ^ - степень. Следовательно, подвыражение представляется термом
    х(Коэффициент, Степень)
    Так, 5х^2 записывается как х(5,2), х^З представляется как х(1,3), а поскольку х^0 равно 1, подвыражению 5 соответствует терм х(5,0).
    Теперь запишем многочлен в виде списка. Приведенный выше многочлен Р(х), например, будет выглядеть следующим образом:
    [x(3, 0), '+', x(3, l), '-', x(4, 3), '+', x(2, 9)]
    Воспользуемся тем, что многочлен
    3 + 3х - 4х^3 + 2х^9
    допускает замену на эквивалентный
    3 + 3х + (-4)х^3 + 2х^9 Тогда он выражается списком:
    [х(3, 0), '+', х(3, 1), '+', х(-4, 3), '+', х(2, 9)]
    В такой записи между термами всегда стоят знаки '+'. Следовательно, их можно опустить, и многочлен принимает окончательный вид:
    [х(3, 0), х(3, 1), х(-4, 3), х(2, 9)]
    Подразумевается, что между всеми термами списка стоят знаки '+'. Представлением многочлена Q(x) будет
    [х(4, 1), х(1, 2), х(-3, 3), х(7, 4), х(8, 5)]
    Сложение многочленов. Теперь напишем целевые утверждения для сложения двух многочленов. Сложение многочленов
    3-2х^2+4х^3+6х^6
    -1+3х^2-4х^3
    в результате дает
    2+х^2+6х^6
    Аргументами целевого утверждения являются многочлены, представленные в виде списков. Ответ будет получен также в виде списка.
    Сложение многочлена Р с многочленом Q осуществляется следующим образом.
    Граничное условие:
    Р, складываемый с [], дает Р.
    [], складываемый с Q, дает Q.
    Рекурсивное условие:
    При сложении Р с Q, в результате чего получается многочлен R, возможны 4 случая:
  • степень первого терма в Р меньше, чем степень первого терма в Q. В этом случае первый терм многочлена Р образует первый терм в R, а хвост R получается при прибавлении хвоста Р к Q. Например, если Р и Q имеют вид
    Р(х)=3х^2+5х^3
    Q(x)=4x^3+3x^4
    то первый терм R(x) равен 3х^2 (первому терму в Р(х)). Хвост R(x) равен 9х^3+3х^4, т.е. результату сложения Q(x) и хвоста Р(х);
  • степень первого терма в Р больше степени первого терма в Q. В данном случае первый терм в Q образует первый терм в R, а хвост R получается при прибавлении Р к хвосту Q. Например, если
    Р(х)=2х^3+5х^'4
    Q(x)=3x^3-x^4
    то первый терм R(x) равен 3х^2 (первому терму в Q(x)), а хвост R(x) равен 2х^3+4х^4 (результату сложения Р(х) и хвоста Q(x));
  • степени первых термов в Р и Q равны, а сумма их коэффициентов отлична от нуля. В таком случае первый терм в R имеет коэффициент, равный сумме коэффициентов первых термов в Р и Q. Степень первого терма в R равна степени первого терма в Р (или Q). Хвост R получается при сложении хвоста Р и хвоста Q. Например, если Р и Q имеют вид
    Р(х)=2х+3х^3
    Q(x)=3x+4x^4
    то первый терм многочлена R (х) равен 5х (результату сложения первого терма в Р(х) с первым термом в Q(x)). Хвост R(x) равен 3х^3+4х^4 (результату сложения хвоста Р(х) и хвоста Q(x));
  • степени первых термов в Р и Q одинаковы, но сумма коэффициентов равна нулю. В данном случае многочлен R равен результату сложения хвоста Р с хвостом Q. Например, если
    р(х)=2+2х
    Q(x)=2-3x^2
    то
    R(x)=2x-3x^2
    (это результат сложения хвостов многочленов Р (х) и Q (х)).
  • Рассмотренный процесс сложения многочленов можно непосредственно записать на языке Пролог.
    /* Граничные условия слож_мн([], Q Q). слож_мн(P, [], P). /* Рекурсивное условие /* (a) слож_мн([x(Pc, Pp)|Pt], [x(Qc, Qp)|Qt], [x(Pc,Pp)IRt]) :- PpQp, слож_мн(Рt, [х(Qс,Qр) | Qt], Rt). /*(б) слож_мн([x(Pc, Pp) | Pt], [x(Qc, Qp) | Qt], [x(Qc, Qp) | Rt]) :- PpQp, слож_мн([x(Pc, Pp) | Pt], Qt, Rt). /*(в) слож_мн([x(Pc, Pp) | Pt], [х(Qc,Pp) | Qt], [x(Rc, Pp) | Rt]) :- Rc is Pc+Qc, Rc =\= 0, слож_мн(Pt, Qt,Rt). /*(r) слож_мн([х(Рс, Рр) | Pt], [x(Qc.Pp) | Qt], Rt) :- Re is Pc+Qc, Rc =:= 0, слож_мн(Pt, Qt, Rt). Заметим, что в двух последних утверждениях проверка на равенство осуществляется следующим образом: степени первых термов складываемых утверждений обозначает одна и та же переменная Pp.
    Списки как термы. В начале лекции мы упомянули о том, что список представляется с помощью терма. Такой терм имеет функтор '.', два аргумента и определяется рекурсивно. Первый аргумент является головой списка, а второй — термом, обозначающим хвост списка. Пустой список обозначается []. Тогда список [а, b] эквивалентен терму.(а,.(b, [])).
    Таким образом, из списков, как и из термов, можно создавать вложенные структуры. Поэтому выражение
    [[a, b], [c, d], [a], a]
    есть правильно записанный список, и на запрос
    ?- [Н | Т]=[[а, b], с].
    Пролог дает ответ
    Н=[а, b] Т=[с]
    НЕКОТОРЫЕ СТАНДАРТНЫЕ ЦЕЛЕВЫЕ УТВЕРЖДЕНИЯ ДЛЯ ОБРАБОТКИ СПИСКОВ

    ОБЛАСТЬ ДЕЙСТВИЯ ПЕРЕМЕННЫХ

    Областью действия переменной является утверждение. В пределах утверждения одно и то же имя принадлежит одной и той же переменной. Два утверждения могут использовать одно имя переменной совершенно различным образом. Правило определения области действия переменной справедливо также в случае рекурсии и в том случае, когда несколько утверждений имеют одну и ту же головную цель. Этот вопрос будет рассмотрен далее.
    Единственным исключением из правила определения области действия переменных является анонимная переменная, например, "_" в цели любит(Х,_). Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения. Таким образом, каждая анонимная переменная четко отличается от всех других анонимных переменных в утверждении.
    Переменные, отличные от анонимных, называются именованными, а неконкретизированные (переменные, которым не было присвоено значение) называются свободными.

    ПЕРЕМЕННЫЕ

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

    СИНТАКСИС ОПЕРАТОРОВ

    Структуры арности 1 и 2 могут быть записаны в операторной форме, если атом, используемый как главный функтор в структуре, объявить оператором (см. лек. 6).

    СИНТАКСИС СПИСКОВ

    В сущности, список есть не что иное, как некоторая структура арности 2. Данная структура становится интересной и чрезвычайно полезной в случае, когда вторая компонента тоже является списком. Вследствие важности таких структур в Прологе имеются специальные средства для записи списков.

    СИНТАКСИС СТРОК

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

    СЛОЖНЫЕ ТЕРМЫ, ИЛИ СТРУКТУРЫ

    Структура состоит из атома, называемого главным функтором, и последовательности термов, называемых компонентами структуры. Компоненты разделяются запятыми и заключаются в круглые скобки.
    Приведем примеры структурированных термов:
    собака(рекс), родитель(Х,У).
    Число компонент в структуре называется арностью структуры. Так, в данном примере структура собака имеет арность 1 (записывается как собака/1), а структура родитель — арность 2 (родитель/2). Заметим, что атом можно рассматривать как структуру арности 0.
    Для некоторых типов структур допустимо использование альтернативных форм синтаксиса. Это синтаксис операторов для структур арности 1 и 2, синтаксис списков для структур в форме списков и синтаксис строк для структур, являющихся списками кодов символов.

    СПИСКОВАЯ ФОРМА ЗАПИСИ

    Задачи, связанные с обработкой списков, на практике встречаются очень часто. Скажем, нам понадобилось составить список студентов, находящихся в аудитории. С помощью Пролога мы можем определить список как последовательность термов, заключенных в скобки. Приведем примеры правильно построенных списков Пролога:
    [джек, джон, фред, джилл, джон]
    [имя (джон, смит), возраст (джек, 24), X]
    [Х.У.дата (12,январь, 1986) ,Х]
    []
    Запись [H|T] определяет список, полученный добавлением Н в начало списка Т. Говорят, что Н — голова, а Т — хвост списка [HIT]. На вопрос
    ?-L=[a | [b, c, d]]. будет получен ответ L=[a, b, c, d]
    а на запрос ?-L= [a, b, c, d], L2=[2 | L]. — ответ L=[a, b, c, d], L2- [2, a, b, c, d]
    Запись [Н | Т] используется для того, чтобы определить голову и хвост списка. Так, запрос ?- [X | Y]=[a, b, c]. дает Х=а, Y=[b, c]
    Заметим, что употребление имен переменных Н и Т необязательно. Кроме записи вида [H|T], для выборки термов используются переменные. Запрос
    ?-[a, X, Y]=[a, b, c].
    определит значения
    X=b Y=c
    а запрос
    ?- [личность(Х) | Т]=[личность(джон), а, b].
    значения
    Х=джон Т=[а, Ь]

    Сравнение результатов арифметических выражений

    Системные предикаты =:=, =\=, >, <, >= и <= определены как инфиксные операторы и применяются для сравнения результатов двух арифметических выражений.
    Для предиката @ доказательство целевого утверждения X@Y заканчивается успехом, если результаты вычисления арифметических выражений Х и Y находятся в таком отношении друг к другу, которое задается предикатом @.
    Такое целевое утверждение не имеет побочных эффектов и не может быть согласовано вновь. Если Х или Y — не арифметические выражения, возникает ошибка.
    С помощью предикатов описываются следующие отношения:
    Х =:= Y - Х равно Y
    Х =\= Y - Х не равно Y
    Х < Y - Х меньше Y
    Х > Y - Х больше Y
    Х <= Y - Х меньше или равно Y
    Х >= Y - Х больше или равно Y
    Использование предикатов иллюстрируют такие примеры:
    а > 5 - заканчивается неудачей
    5+2+7 > 5+2 - заканчивается успехом
    3+2 =:= 5 - заканчивается успехом
    3+2 < 5 - заканчивается неудачей
    2 + 1 =\= 1 - заканчивается успехом
    N > 3 - заканчивается успехом, если N больше 3, и неудачей в противном случае

    Структуры данных

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

    ТЕРМЫ

    Объекты данных в Прологе называются термами. Терм может быть константой, переменной или составным термом (структурой). Константами являются целые и действительные числа, например:
    0, -l, 123.4, 0.23E-5,
    (некоторые реализации Пролога не поддерживают действительные числа).
    К константам относятся также атомы, такие, как:
    голди, а, атом, +, :, 'Фред Блогс', [].
    Атом есть любая последовательность символов, заключенная в одинарные кавычки. Кавычки опускаются, если и без них атом можно отличить от символов, используемых для обозначения переменных. Приведем еще несколько примеров атомов:
    abcd, фред, ':', Джо.
    Полный синтаксис атомов описан ниже.
    Как и в других языках программирования, константы обозначают конкретные элементарные объекты, а все другие типы данных в Прологе составлены из сочетаний констант и переменных.
    Имена переменных начинаются с заглавных букв или с символа подчеркивания "_". Примеры переменных:
    X, Переменная, _3, _переменная.
    Если переменная используется только один раз, необязательно называть ее. Она может быть записана как анонимная переменная, состоящая из одного символа подчеркивания "_". Переменные, подобно атомам, являются элементарными объектами языка Пролог.
    Завершает список синтаксических единиц сложный терм, или структура. Все, что не может быть отнесено к переменной или константе, называется сложным термом. Следовательно, сложный терм состоит из констант и переменных.
    Теперь перейдем к более детальному описанию термов.

    Унификация

    Одним из наиболее важных аспектов программирования на Прологе являются понятия унификации (отождествления) и конкретизации переменных.
    Пролог пытается отождествить термы при доказательстве, или согласовании, целевого утверждения. Например, в программе из лек. 1 для согласования запроса ?- собака(Х) целевое утверждение собака (X) было отождествлено с фактом собака (реке), в результате чего переменная Х стала конкретизированной: Х= рекc.
    Переменные, входящие в утверждения, отождествляются особым образом — сопоставляются. Факт доказывается для всех значений переменной (переменных). Правило доказывается для всех значений переменных в головном целевом утверждении при условии, что хвостовые целевые утверждения доказаны. Предполагается, что переменные в фактах и головных целевых утверждениях связаны квантором всеобщности. Переменные принимают конкретные значения на время доказательства целевого утверждения.
    В том случае, когда переменные содержатся только в хвостовых целевых утверждениях, правило считается доказанным, если хвостовое целевое утверждение истинно для одного или более значений переменных. Переменные, содержащиеся только в хвостовых целевых утверждениях, связаны квантором существования. Таким образом, они принимают конкретные значения на то время, когда целевое утверждение, в котором переменные были согласованы, остается доказанным.
    Терм Х сопоставляется с термом Y по следующим правилам. Если Х и Y — константы, то они сопоставимы, только если они одинаковы. Если Х является константой или структурой, а Y — неконкретизированной переменной, то Х и Y сопоставимы и Y принимает значение Х (и наоборот). Если Х и Y — структуры, то они сопоставимы тогда и только тогда, когда у них одни и те же главный функтор и арность и каждая из их соответствующих компонент сопоставима. Если Х и Y — неконкретизированные (свободные) переменные, то они сопоставимы, в этом случае говорят, что они сцеплены. В (Таблица 7.1) приведены примеры отождествимых и неотождествимых термов.
    Таблица 7.1. Иллюстрация унификацииТерм1Терм2Отождествимы ?
    джек(Х)джек (человек)да: Х=человек
    джек (личность)джек (человек)нет
    джек(Х,Х)джек(23,23)да: Х=23
    джек(Х.Х)джек (12,23)нет
    джек( . )джек(12,23)да
    f(Y,Z)Хда: X=f(Y,Z)
    ХZда: X=Z
    <
    p>Заметим, что Пролог находит наиболее общий унификатор термов. В последнем примере (табл.7.1) существует бесконечное число унификаторов:

    X-1, Z-2; X-2, Z-2; ....

    но Пролог находит наиболее общий: Х=Z.

    Следует сказать, что в большинстве реализаций Пролога для повышения эффективности его работы допускается существование циклических унификаторов. Например, попытка отождествить термы f(X) и Х приведет к циклическому унификатору X=f(X), который определяет бесконечный терм f(f(f(f(f(...))))). В программе это иногда вызывает бесконечный цикл.

    Возможность отождествления двух термов проверяется с помощью оператора =.

    Ответом на запрос

    ?- 3+2=5.

    будет

    нет

    так как термы не отождествимы (оператор не вычисляет значения своих аргументов), но попытка доказать

    ?-строка(поз(Х)) -строка(поз(23)).

    закончится успехом при

    Х=23.

    Унификация часто используется для доступа к подкомпонентам термов. Так, в вышеприведенном примере Х конкретизируется первой компонентой терма поз(23), который в свою очередь является компонентой терма строка.

    Бывают случаи, когда надо проверить, идентичны ли два терма. Выполнение оператора = = заканчивается успехом, если его аргументы — идентичные термы. Следовательно, запрос

    ?-строка(поз(Х)) --строка (поз (23)).

    дает ответ

    нет

    поскольку подтерм Х в левой части (X — свободная переменная) не идентичен подтерму 23 в правой части, Однако запрос

    ?- строка (поз (23)) --строка (поз (23)).

    дает ответ

    да

    Отрицания операторов = и - = записываются как \= и \= = соответственно.

    УТВЕРЖДЕНИЯ

    Программа на Прологе есть совокупность утверждений. Утверждения состоят из целей и хранятся в базе данных Пролога. Таким образом, база данных Пролога может рассматриваться как программа на Прологе. В конце утверждения ставится точка ".". Иногда утверждение называется предложением.
    Основная операция Пролога — доказательство целей, входящих в утверждение.
    Существуют два типа утверждений:
  • факт — это одиночная цель, которая, безусловно, истинна;
  • правило — состоит из одной головной цели и одной или более хвостовых целей, которые истинны при некоторых условиях.
  • Правило обычно имеет несколько хвостовых целей в форме конъюнкции целей.
    Конъюнкцию можно рассматривать как логическую функцию И. Таким образом, правило согласовано, если согласованы все его хвостовые цели.
    Примеры фактов:
    собака(реке). родитель(голди.рекс).
    Примеры правил:
    собака (X) :- родитель (X.Y),собака (Y). человек(Х) :-мужчина(Х).
    Разница между правилами и фактами чисто семантическая. Хотя для правил мы используем синтаксис операторов (более подробное рассмотрение операторного и процедурного синтаксисов выходит за рамки нашего курса), нет никакого синтаксического различия между правилом и фактом.
    Так, правило
    собака (X) :- родитель(Х,У),собака(У). может быть задано как
    :-собака (X) ',' родитель(Х.У) .собака (Y).
    Запись верна, поскольку :- является оператором "при условии, что", а ',' — это оператор конъюнкции. Однако удобнее записывать это как
    собака (X) :-родитель (X.Y),собака (Y).
    и читать следующим образом: " Х — собака при условии, что родителем Х является Y и Y — собака".
    Структуру иногда изображают в виде дерева, число ветвей КОТОРОГО равно арности структуры. УТВЕРЖДЕНИЯ


    ВВОД программ

    Введение списка утверждений в Пролог-систему осуществляется с помощью встроенного предиката consult. Аргументом предиката consult является атом, который обычно интерпретируется системой как имя файла, содержащего текст программы на Прологе. Файл открывается, и его содержимое записывается в базу данных. Если в файле встречаются управляющие команды, они сразу же выполняются. Возможен случай, когда файл не содержит ничего, кроме управляющих команд для загрузки других файлов. Для ввода утверждений с терминала в большинстве реализации Пролога имеется специальный атом, обычно user. С его помощью утверждения записываются в базу данных, а управляющие команды выполняются немедленно.
    Помимо предиката consult, в Прологе существует предикат reconsult. Он работает аналогичным образом. Но перед добавлением утверждений к базе данных из нее автоматически удаляются те утверждения, головные цели которых сопоставимы с целями, содержащимися в файле перезагрузки. Такой механизм позволяет вводить изменения в базу данных. В Прологе имеются и другие методы добавления и удаления утверждений из базы данных. Некоторые реализации языка поддерживают модульную структуру, позволяющую разрабатывать модульные программы.
    В заключение раздела дадим формальное определение синтаксиса Пролога, используя форму записи Бэкуса-Наура, иногда называемую бэкусовской нормальной формой (БНФ).
    запрос ::- голова утверждения правило ::– голова утверждения :- хвост утверждения факт ::- голова утверждения голова утверждения ::-атом | структура хвост утверждения ::- атом структура, термы ::-терм [,термы] терм ::- число | переменная | атом | структура структура ::-атом (термы) Данное определение синтаксиса не включает операторную, списковую и строковую формы записи. Полное определение дано в приложении А. Однако, любая программа на Прологе может быть написана с использованием вышеприведенного синтаксиса. Специальные формы только упрощают понимание программы. Как мы видим, синтаксис Пролога не требует пространного объяснения. Но для написания хороших программ необходимо глубокое понимание языка.

    Вычисление арифметических выражений

    В Прологе не допускаются присваивания вида Сумма=2+4.
    Выражение такого типа вычисляется только с помощью системного предиката is, например:
    Сумма is 2 + 4.
    Предикат is определен как инфиксный оператор. Его левый аргумент — или число, или неконкретизированная переменная, а правый аргумент — арифметическое выражение.
    Попытка доказательства целевого утверждения Х is Y заканчивается успехом в одном из следующих случаев:
  • Х — неконкретизированная переменная, а результат вычисления выражения Y есть число;
  • Х — число, которое равно результату вычисления выражения Y. Цель Х is Y не имеет побочных эффектов и не может быть согласована вновь. Если Х не является неконкретизированной переменной или числом либо если Y — не арифметическое выражение, возникает ошибка.
  • Примеры:
    D is 10- 5 заканчивается успехом и D становится равным 5 4 is 2 * 4 - 4 заканчивается успехом 2 * 4 - 4 is 4 заканчивается неудачей a is 3 + 3 заканчивается неудачей X is 4 + а заканчивается неудачей 2 is 4 - X заканчивается неудачей Обратите внимание, что предикат is требует, чтобы его первый аргумент был числом или неконкретизированной переменной. Поэтому М - 2 is 3 записано неверно. Предикат is не является встроенным решателем уравнений.

    ЗАПРОСЫ

    После записи утверждений в базу данных вычисления могут быть инициированы вводом запроса.
    Запрос выглядит так же, как и целевое утверждение, образуется и обрабатывается по тем же правилам, но он не входит в базу данных (программу). В Прологе вычислительная часть программы и данные имеют одинаковый синтаксис. Программа обладает как декларативной, так и процедурной семантикой. Мы отложим обсуждение этого вопроса до последующих лекций. Запрос обозначается в Прологе утверждением ?-, имеющим арность 1. Обычно запрос записывается в операторной форме: за знаком ?- следует ряд хвостовых целевых утверждений (чаще всего в виде конъюнкции).
    Приведем примеры запросов:
    ?-собака(X). ?- родитель(Х.У),собака (Y).
    или, иначе,
    '?-'(собака(Х)) С?-') ','(родитель(Х„У",собака (Y)).
    Последняя запись неудобна тем, что разделитель аргументов в структуре совпадает с символом конъюнкции. Программисту нужно помнить о различных значениях символа ','.
    Запрос иногда называют управляющей командой (директивой), так как он требует от Пролог-системы выполнения некоторых действий. Во многих реализациях Пролога для управляющей команды используется альтернативный символ, а символ ?- обозначает приглашение верхнего уровня интерпретатора Пролога. Альтернативным символом является :-. Таким образом,
    :-write(co6aкa).
    - это управляющая команда, в результате выполнения которой печатается атом собака. Управляющие команды будут рассмотрены ниже при описании ввода программ.

    Проектирование систем искусственного интеллекта

    Иерархия типов

    Иерархия типов и подтипов является стандартной характеристикой семантических сетей. Иерархия может включать сущности: ТАКСА < СОБАКА < ПЛОТОЯДНОЕ < ЖИВОТНОЕ < ЖИВОЕ СУЩЕСТВО < ФИЗИЧЕСКИЙ ОБЪЕКТ < СУЩНОСТЬ. Они также могут включать в себя события: ЖЕРТВОВАТЬ < ДАВАТЬ < ДЕЙСТВИЕ < СОБЫТИЕ или состояния: ЭКСТАЗ < СЧАСТЬЕ < ЭМОЦИОНАЛЬНОЕ СОCТОЯНИЕ < СОСТОЯНИЕ. Иерархия Аристотеля включала в себя 10 основных категорий: субстанция, количество, качество, отношение, место, время, состояние, активность и пассивность. Некоторые учение дополнили его своими категориями.
    Символ < между более общим и более частным символом читается как: "Х-тип/подтип У".
    Термин "иерархия" обычно обозначает частичное упорядочение, где одни типы являются более общими, чем другие. Упорядочение является частичным, потому, что многие типы просто не подлежат сравнению между собой. Сравним HOUSEАцикличный граф. Любое частичное упорядочение может быть изображено, как граф без циклов. Такой граф имеет ветви, которые расходятся и сходятся вместе опять, что позволяет некоторым узлам иметь несколько узлов-родителей. Иногда такой тип графа называют путанным.
    Деревья. Самым распространенным видом иерархии является граф с одной вершиной. В такого рода графах налагаются ограничения на ацикличные графы: вершина графа представляет собой один общий тип, и каждый другой тип Х имеет лишь одного родителя У.
    Решетка. В отличие от деревьев узлы в решетке могут иметь несколько узлов родителей. Однако здесь налагаются другие ограничения: любая пара типов Х и У как минимум должна иметь общий гипертип ХиУ и подтип ХилиУ. Вследствие этого ограничения решетка выглядит, как дерево, имеющее по главной вершине с каждого конца. Вместо всего одной вершины решетка имеет одну вершину, которая является гипертипом всех категорий, и другую вершину, которая является подтипом всех типов.

    Элементы нечеткой логики

    Как известно, классическая логика оперирует только с двумя значениями: истина и ложь. Однако этими двумя значениями довольно сложно представить (можно, но громоздко) большое количество реальных задач. Поэтому для их решения был разработан специальный математический аппарат, называемый нечеткой логикой. Основным отличием нечеткой логики от классической, как явствует из названия, является наличие не только двух классических состояний (значений), но и промежуточных:
    Элементы нечеткой логикиСоответственно, вводятся расширения базовых операций логического умножения, сложения и отрицания (сравните с соответствующими операциями теории вероятностей):
    a I b = min{a,b}
    a Y b = max{a,b}
    Элементы нечеткой логики
    Как можно легко заметить, при использовании только классических состояний (ложь-0, истина-1) мы приходим к классическим законам логики.
    Нечеткое логическое управление может использоваться, чтобы осуществлять разнообразные интеллектуальные функции, в самых разнообразных электронных товарах и домашних приборах, в автоэлектронике, управлении производственными процессами и автоматизации.
    Элементы нечеткой логики

    Механизм возврата и процедурная семантика

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

    Механизм возврата

    При попытке согласования целевого утверждения Пролог выбирает первое из тех утверждений, голова которых сопоставима с целевым утверждением. Если удастся согласовать тело утверждения, то целевое утверждение согласовано. Если нет, то Пролог переходит к следующему утверждению, голова которого сопоставима с целевым утверждением, и так далее до тех пор, пока целевое утверждение не будет согласовано или не будет доказано, что оно не согласуется с базой данных.
    В качестве примера рассмотрим утверждения:
    меньше(X.Y) :- XY, write(X), write ('меньше, чем'),write(Y). меньше(Х.У) :- XY, write(Y), write ('меньше, 4CM'),write(X). Целевое утверждение
    ?- меньше (5, 2).
    сопоставляется с головой первого утверждения при Х=5 и У=2. Однако не удается согласовать первый член конъюнкции в теле утверждения X?-меньше (2, 2).
    сопоставляется с головой первого утверждения, но тело утверждения согласовать не удается. Затем происходит сопоставление с головой второго утверждения, но согласовать тело опять-таки оказывается невозможно. Поэтому попытка доказательства целевого утверждения меньше(2, 2) заканчивается неудачей.
    Такой процесс согласования целевого утверждения путем прямого продвижения по программе мы называем прямой трассировкой (forward tracking). Даже если целевое утверждение согласовано, с помощью прямой трассировки мы можем попытаться получить другие варианты его доказательства, т.е. вновь согласовать целевое утверждение.
    Пролог производит доказательство конъюнкции целевых утверждений слева направо. При этом может встретиться целевое утверждение, согласовать которое не удается. Если такое случается, то происходит смещение влево до тех пор, пока не будет найдено целевое утверждение, которое может быть вновь согласовано, или не будут исчерпаны все предшествующие целевые утверждения. Если слева нет целевых утверждений, то конъюнкцию целевых утверждений согласовать нельзя. Однако, если предшествующее целевое утверждение может быть согласовано вновь, Пролог возобновляет процесс доказательства целевых утверждений слева направо, начиная со следующего справа целевого утверждения. Описанный процесс смещения влево для повторного согласования целевого утверждения и возвращения вправо носит название механизма возврата.

    Наследование.

    Основным свойством иерархии является возможность наследования подтипами качеств гипертипов: все характеристики, которые присущи ЖИВОТНОМУ, также присущи МЛЕКОПИТАЮЩЕМУСЯ, РЫБЕ и ПТИЦЕ. В основе теории наследования лежит теория силлогизмов Аристотеля: Если А — характеристика В, а В — х-ка С, то А — хар-ка всех С.
    Преимущества иерархии и наследования:
  • Иерархия типов является отличной структурой для индексирования базы знаний и ее эффективной организации.
  • Следование по какой-либо ветви с помощью иерархии осуществляется гораздо быстрее.


  • Представление бинарных деревьев

    Бинарное дерево определяется рекурсивно как имеющее левое поддерево, корень и правое поддерево . Левое и правое поддеревья сами являются бинарными деревьями. На рис. 8.1 показан пример бинарного дерева.
    Представление бинарных деревьев
    Рис. 8.1.  Бинарное дерево.
    Такие деревья можно представить термами вида
    бд(Лд, К, Пд),
    где Лд — левое поддерево, К — корень, а Пд — правое поддерево. Для обозначения пустого бинарного дерева будем использовать атом nil. Бинарное дерево на рис.8.1 имеет левое поддерево бд(бд(nil, d, nil), b, бд(nil, е, nil)) правое поддерево бд(nil,с, nil) и записывается целиком как бд(бд(бд(nil,d, nil), b, бд(nil,е, nil)), а, бд(nil, с, nil)).

    Представление множеств с помощью бинарных деревьев

    Описание множеств в виде списков позволяет использовать для множеств целевое утверждение принадлежит, определенное ранее для списков.
    Однако для множеств, состоящих из большого числа элементов, списковые целевые утверждения становятся неэффективными. Рассмотрим, например, как целевое утверждение "принадлежит" (см. предыдущий разд.) позволяет моделировать принадлежность множеству. Пусть L — список, описывающий множество из первых 1024 натуральных чисел. Тогда при ответе на запрос
    ?- принадлежит(3000, b).
    Прологу придется проверить все 1024 числа, прежде чем заключить, что такого числа нет:
    нет
    Представление множества бинарным деревом позволяет добиться лучшего результата. При этом бинарное дерево должно быть упорядочено таким образом, чтобы любой элемент в левом поддереве был меньше, чем значение корня, а любой элемент в правом поддереве — больше. Поскольку мы определили поддерево как бинарное дерево, такое упорядочение применяется по всем поддеревьям. На Рис. 8.2 приведен пример упорядоченного бинарного дерева.
    Представление множеств с помощью бинарных деревьев
    Рис. 8.2.  Упорядоченное бинарное дерево
    Обратите внимание, что упорядочение приводит не к единственному варианту представления множества с помощью дерева. Например, на рис. 8.3 изображено то же множество, что и на рис. 8.2
    Будем называть линейным представление такого вида, как на рис. 8.3, и сбалансированным — такое, как на рис. 8.2
    Представление множеств с помощью бинарных деревьев
    Рис. 8.3.  Линейное представление
    Моделирование принадлежности множеству. Имея множество, описанное бинарным деревом, мы можем моделировать принадлежность множеству с помощью целевого утверждения принадлежит_дереву. При этом используется оператор @<, выражающий отношение "меньше, чем", и оператор @>, выражающий отношение "больше, чем".
    /* Граничное условие: Х принадлежит /* дереву, если Х является корнем. принадлежит_дереву(Х, бд(Лд, Х, Пд)), /* Рекурсивные условия /* Х принадлежит дереву, если Х больше /* значении корня и находится в правом /* поддереве: принадлежит_дереву(Х, бд(Лд, У, Пд)) :- X@Y, припадлежит_дереву(Х, Пд). /* Х принадлежит дереву, если Х меньше /* значения корня и находится в левом /* поддереве: принадлежит_дереву(Х, бд(Лд ,У ,Пд)) :-X@Y, принадлежит_дереву(Х, Лд). Если множество из первых 1024 чисел описать с помощью сбалансированного бинарного дерева Т, то при ответе на запрос

    ?- принадлежит_дереву(3000, Т).

    Пролог сравнит число 3000 не более чем с 11 элементами множества. прежде чем ответит:

    нет

    Конечно, если Т имеет линейное представление, то потребуется сравнение 3000 с 1024 элементами множества.

    Построение бинарного дерева. Задача создания упорядоченного бинарного дерева при добавлении элемента Х к другому упорядоченному бинарному дереву формулируется следующим образом.

    Граничное условие:

    Добавление Х к nil дает бд(nil, Х, nil).

    Рекурсивные условия:

    При добавлении Х к бд(Лд, К, Пд) нужно рассмотреть два случая, чтобы быть уверенным, что результирующее дерево будет упорядоченным.

  • Х меньше, чем К. В этом случае нужно добавить Х к Лд, чтобы получить левое поддерево. Правое поддерево равно Пд, а значение корня результирующего дерева равно К.
  • Х больше, чем К. В таком случае нужно добавить Х к Пд, чтобы получить правое поддерево. Левое поддерево равно Лд, а значение корня — К.
  • Такой формулировке задачи соответствует программа:

    /* Граничное условие: включ_бд(nil, Х, бд(nil, Х, nil)). /* Рекурсивные условия: /*(1) включ_бд(бд(Лд, К, Пд), Х, бд(Лднов, К, Пд)) :- Х@К, включ_бд(Лд,Х,Лднов). /*(2) включ_бд(бд(Лд, К, Пд), Х, бд(Лд, К, Пднов)) :- Х@К, включ_бд(Пд, Х, Пднов). На запрос ?- включ_бд(nil, d, Т1), включ_бд(Т1, а, Т2). будут получены значения Т1=бд(nil, d, nil) Т2=бд(бд(nil, а, nil), d, nil) Процедуру включ_бд() можно использовать для построения упорядоченного дерева из списка:

    /* Граничное условие: список_в_дерево([], nil). /* Рекурсивное условие: список_в_дерево([Н | Т], Бд) :- список_в_дерево(Т, Бд2), включ_бд(Н, Бд2, Бд). Заметим, что включ_бд не обеспечивает построения сбалансированного дерева. Однако существуют алгоритмы, гарантирующие такое построение.

    задача поиска пути в лабиринте

    В качестве примера использования механизма возврата напишем процедуру для поиска пути в лабиринте. Лабиринт представлен фактами вида:
    стена(I, J) для позиции в I-м ряду и J-й колонке, где есть стена отсутств_стена(I, J) для позиции в I-м ряду и J-й колонке, где нет стены выход (I, J) для позиции в 1-м ряду и J-й колонке, являющейся выходом Рассмотрим небольшой лабиринт: задача поиска пути в лабиринте

    Последний ряд лабиринта описывается фактами:
    стена(4,1). стена(4,3). стена(4,4). отсутств_стена(4,2). Если задана исходная позиция, путь к выходу можно найти следующим образом.
    Граничное условие:
    Если исходная позиция является выходом, то путь найден.
    Рекурсивные условия:
    Ищем путь из исходной позиции в северном направлении. Если пути нет, идем на юг. Если пути нет, идем на запад. Если нельзя, идем на восток. Если соседняя позиция на севере (юге, западе, востоке) является стеной, то нет смысла искать путь из начальной позиции к выходу. Чтобы не ходить кругами, будем вести список позиций, в которых мы побывали.
    Изложенному способу решения задачи соответствует процедура путь: она ищет путь (второй аргумент) к выходу из некоторой позиции (первый аргумент). Третьим аргументом является список позиций, где мы побывали.
    /* Терм a(I, J) представляет позицию в /* I-м ряду и J-й колонке. /* Нашли путь ? путь(а(I, J),[а(I, J)], Были) :- выход(I, J). /* Пытаемся идти на север путь(а(I, J),[а(I, J) | Р], Были) :- К is I-1, можем_идти(a (K, J), Были), путь(а(I, J) ,Р, [a(K, J) | Были]). /* Пытаемся идти на юг путь(а(I, J),[а(I, J) | Р], Были) :- К is I+1, можем_идти(a (K, J), Были), путь(а(I, J) ,Р, [a(K, J) | Были]). /* Пытаемся идти на запад путь(а (I, J), [a (I, J) | P], Были) :- L is J-1, можем_идти(а(I, L), Были), путь(а(I, L), Р, [а(I, L)| Были]). /* Пытаемся идти на восток путь(а (I, J), [a (I, J) | P], Были) :- L is J+1, можем_идти(а(I, L), Были), путь(а(I, L), Р, [а(I, L)| Были]). /* в позицию a(I, J) можно попасть при /* условии, что там нет стены и мы /* не побывали в ней прежде можем_идти(а(I, J)), Были) :- отсутств_стена(I, J), not (принадлежит (a (I, J), Были)). Чтобы понять, каким образом процедура ищет путь к выходу, рассмотрим процесс согласования запроса с описанием лабиринта, описанного выше:

    ?-путь(а(4,2), Р, [а(4.2)]).
    Выходом из лабиринта является позиция выход (3,1).
    Выбор первого утверждения не приводит к согласованию целевого утверждения, поскольку а (4,2) — не выход. Во втором утверждении делается попытка найти путь в северном направлении, т.е. согласовать целевое утверждение
    путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]).
    Целевое утверждение не удается согласовать с первым утверждением
    путь(а(3, 2), Р2, [а(3, 2), а(4, 2)])
    так как а (3,2) не является выходом. Во втором утверждении предпринимается попытка найти путь, двигаясь на север, т.е. согласовать целевое утверждение
    путь(а(2,2), РЗ, [а(2, 2), а(3, 2), а(4, 2)]).
    Ни одно из утверждений не может согласовать
    путь(а(2, 2), РЗ, [а(2, 2), а(3, 2), а(4, 2)]).
    Первое утверждение — потому, что а (2, 2) не является выходом, второе — потому, что северная позиция является стеной, третье утверждение — потому, что в южной позиции мы уже побывали, а четвертое и пятое утверждения — потому, что западная и восточная границы — это стены.
    Неудача в согласовании
    путь(а(2, 2), РЗ, [а(2, 2), а(3, 2), а(4, 2)])
    заставляет Пролог-систему вернуться в ту точку, где было выбрано второе утверждение при попытке согласовать
    путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]).
    Решение пересматривается и выбирается третье утверждение.
    В третьем утверждении осуществляется попытка найти путь, двигаясь на юг, но она оказывается неудачной, поскольку мы уже побывали в позиции а (4, 2). Тогда, чтобы согласовать
    путь(а(3, 2), Р2, [а(3, 2), а(4, 2)]),
    выбирается четвертое утверждение. Мы успешно находим путь, двигаясь в западном направлении к позиции а(3,1), которая и является выходом. Рекурсия сворачивается, и в результате получается путь
    Р=[а(4, 2),а(3, 2), а(3,1)] другие решения(да/нет)? да Других решений нет Альтернативный путь [a(4,2), a(3,2), a(2,2), a(3,2), a(3,1)] мы получить не можем, потому что не разрешается дважды бывать в одной и той же позиции.
    Описанная процедура не обязательно находит кратчайший путь к выходу. Кратчайший путь можно найти, генерируя альтернативные пути с помощью вызова состояния неудачи и запоминая кратчайший из них.

    Синтаксический анализ языка и его порождение.

    Семантические сети могут помочь парсеру разрешить семантическую неоднозначность. Без такого рода представления вся тяжесть анализ языка падает на синтаксические правила и семантические тесты. Структура же семантической сети ясно показывает, как отдельные концепты соединены между собой. Когда парсер встречает какую-либо неоднозначность, он может использовать семантическую сеть для того, чтобы выбрать тот или иной вариант. При работе с семантическими сетями используется несколько техник парсинга.
    Парсинг, в основе которого лежит синтаксис. Работа парсера контролируется грамматикой непосредственных составляющих и операторами построения структур и их тестирования. В то время, как данные на входе анализируются, операторы построения структур создают семантическую сеть, а операторы тестирования проверяют ограничения на частично построенной сети. Если никакие ограничения не найдены, то используемое при этом грамматическое правило отвергается и парсер проверяет другую возможность. Это самый распространенный подход.
    Синтаксический анализатор с использованием семантики. Синтаксический анализатор с использованием семантики оперирует также как и парсер, в основе которого лежит синтаксис. Однако он оперирует не с синтаксическими категориями типа группа подлежащего и группа сказуемого, а с концептами высокого уровня типа КОРАБЛЬ и ПЕРЕВОЗИТЬ.
    Концептуальный парсинг. Семантическая сеть предсказывает возможные ограничения, которые могут встретится в отношениях между словами, а также прогнозировать слова, которые позже могут встретиться в предложении. Например, глагол давать требует одушевленного агента и а также прогнозирует возможность реципиента и объекта, который будет дан. Шенк был одним из самых активных сторонников концептуального парсинга.
    Парсинг, основанный на экспертизе слов. Вследствие существования большого количества неправильных образований в естественном языке, многие люди вместо того, чтобы обращаться к каким-либо универсальным обобщениям, используют специальные словари, представляющих собой совокупность некоторых независимых процедур, которые называются экспертами слов.
    Анализ предложения рассматривается как процесс, осуществляемый совместно различными словарными экспертами. Главным сторонником этого подхода был Смол.

    Аргументы за и против различных техник парсинга часто основывался не на конкретные данные, а больше на уже устоявшемся мнении. И лишь один проект на практике сравнил несколько видов парсинга — это Язык Семантических Репрезентаций, проект разработанный в Университете Берлина. В течение нескольких лет они создали четыре разных вида парсеров для анализа немецкого языка и его записи на Язык Семантических Репрезентаций, который представляет собой сеть.

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

    Второй парсер был семантически ориентированные расширенные сети перехода. В нем было легче обобщить синтаксис, однако аппарат синтаксиса работал медленнее, чем у первого рассмотренного парсера.

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

    Парсер, который был создан относительно недавно, — это синтаксически ориентированный парсер, основанный на общей грамматике фразовой структуры. Он наиболее систематичен и обобщен и относительно быстр.

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

    Порождение языка по семантической сети представляет собой обратный парсинг. Вместо синтаксического анализа некоторй цепочки с целью порождения сети генератор языка производит парсинг сети для получения некоторой цепочки.Существует два варианта порождения языка из семантической сети.

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

    Проектирование систем искусственного интеллекта

    Экспертные системы, базовые понятия

    Об экспертных системах (ЭС) можно говорить много и сложно. Но наш разговор очень упростится, если мы будем исходить из следующего определения экспертной системы. Экспертная система — это программа (на современном уровне развития человечества), которая заменяет эксперта в той или иной области.
    Отсюда вытекает простой вывод — все, что мы изучаем в курсе "Основы проектирования систем с ИИ", конечной целью ставит разработку ЭС. В этой лекции мы остановимся только на некоторых особенностях их построения, которые не затрагиваются в остальных лекциях.
    ЭС предназначены, главным образом, для решения практических задач, возникающих в слабо структурированной и трудно формализуемой предметной области. ЭС были первыми системами, которые привлекли внимание потенциальных потребителей продукции искусственного интеллекта.
    С ЭС связаны некоторые распространенные заблуждения.
    Заблуждение первое: ЭС будут делать не более (а скорее даже менее) того, чем может эксперт, создавший данную систему. Для опровержения данного постулата можно построить самообучающуюся ЭС в области, в которой вообще нет экспертов, либо объединить в одной ЭС знания нескольких экспертов, и получить в результате систему, которая может то, чего ни один из ее создателей не может.
    Заблуждение второе: ЭС никогда не заменит человека-эксперта. Уже заменяет, иначе зачем бы их создавали?

    Экспертные системы, методика построения

    В настоящее время сложилась определенная технология разработки ЭС, которая включает следующие шесть этапов: идентификация, концептуализация, формализация, выполнение, тестирование и опытная эксплуатация.
    Экспертные системы, методика построения
    Рис. 9.1.  Методика (этапы) разработки ЭС

    Экспертные системы, параллельные и последовательные решения

    Как мы можем заметить, в большинстве алгоритмов распознавания образов подразумевается, что к началу работы алгоритма уже известна вся входная информация, которая перерабатывается параллельно. Однако ее получение зачастую требует определенных усилий. Да и наши наблюдения за реальными экспертами подтверждают, что зачастую они задают два-три вопроса, после чего делают правильные выводы. Представьте себе, если бы врач (эксперт в области медицины) перед постановкой диагноза "ангина" заставлял бы пациента пройти полное обследование вплоть до кулоноскопии и пункции позвоночника (я не пробовал ни то, ни другое, но думаю, что это малоприятные вещи, а также значительная потеря времени).
    Соответственно большинство алгоритмов модифицируются, чтобы обеспечить выполнение следующих условий:
  • алгоритмы должны работать в условиях неполной информации (последовательно);
  • последовательность запроса информации должна быть оптимальна по критериям быстроты получения результата и (или) наименьшей трудоемкости (болезненности, стоимости и т.д.) получения этой информации.
  • Одной из возможных стратегий для оптимизирования запросов является стратегия получения в первую очередь той информации, которая подтверждает либо опровергает наиболее вероятный на текущий момент результат. Другими словами мы пытаемся подтвердить или опровергнуть наши догадки (обратный вывод).

    Этап формализации

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

    Этап идентификации

    Этап идентификации связан, прежде всего, с осмыслением тех задач, которые предстоит решить будущей ЭС, и формированием требований к ней. Результатом данного этапа является ответ на вопрос, что надо сделать и какие ресурсы необходимо задействовать (идентификация задачи, определение участников процесса проектирования и их роли, выявление ресурсов и целей).
    Обычно в разработке ЭС участвуют не менее трех-четырех человек — один эксперт, один или два инженера по знаниям и один программист, привлекаемый для модификации и согласования инструментальных средств. Также к процессу разработки ЭС могут по мере необходимости привлекаться и другие участники. Например, инженер по знаниям может пригласить других экспертов, чтобы убедиться в правильности своего понимания основного эксперта, представительности тестов, демонстрирующих особенности рассматриваемой задачи, совпадения взглядов различных экспертов на качество предлагаемых решений. Кроме того, для сложных систем считается целесообразным привлекать к основному циклу разработки несколько экспертов. Однако в этом случае, как правило, требуется, чтобы один из экспертов отвечал за непротиворечивость знаний, сообщаемых коллективом экспертов.
    Идентификация задачи заключается в составлении неформального (вербального) описания, в котором указываются: общие характеристики задачи; подзадачи, выделяемые внутри данной задачи; ключевые понятия (объекты), их входные (выходные) данные; предположительный вид решения, а также знания, относящиеся к решаемой задаче.
    В процессе идентификации задачи инженер по знаниям и эксперт работают в тесном контакте. Начальное неформальное описание задачи экспертом используется инженером по знаниям для уточнения терминов и ключевых понятий. Эксперт корректирует описание задачи, объясняет, как решать ее и какие рассуждения лежат в основе того или иного решения. После нескольких циклов, уточняющих описание, эксперт и инженер по знаниям получают окончательное неформальное описание задачи.
    При проектировании ЭС типичными ресурсами являются источники знаний, время разработки, вычислительные средства и объем финансирования.
    Для эксперта источниками знаний служат его предшествующий опыт по решению задачи, книги, известные примеры решения задач, а для инженера по знаниям — опыт в решении аналогичных задач, методы представления знаний и манипулирования ими, программные инструментальные средства. При определении времени разработки обычно имеется в виду, что сроки разработки и внедрения ЭС составляют, как правило, не менее года (при трудоемкости 5 чел.-лет). Определение объема финансирования оказывает существенное влияние на процесс разработки, так как, например, при недостаточном финансировании предпочтение может быть отдано не разработке оригинальной новой системы, а адаптации существующей.

    При идентификации целей важно отличать цели, ради которых создается ЭС, от задач, которые она должна решать. Примерами возможных целей являются: формализация неформальных знаний экспертов; улучшение качества решений, принимаемых экспертом; автоматизация рутинных аспектов работы эксперта (пользователя); тиражирование знаний эксперта.

    Этап концептуализации

    На данном этапе проводится содержательный анализ проблемной области, выявляются используемые понятия и их взаимосвязи, определяются методы решения задач. Этот этап завершается созданием модели предметной области (ПО), включающей основные концепты и отношения. На этапе концептуализации определяются следующие особенности задачи: типы доступных данных; исходные и выводимые данные, подзадачи общей задачи; применяемые стратегии и гипотезы; виды взаимосвязей между объектами ПО, типы используемых отношений (иерархия, причина — следствие, часть — целое и т.п.); процессы, применяемые в ходе решения; состав знаний, используемых при решении задачи; типы ограничений, накладываемых на процессы, которые применены в ходе решения; состав знаний, используемых для обоснования решений.
    Существует два подхода к процессу построения модели предметной области, которая является целью разработчиков ЭС на этапе концептуализации. Признаковый или атрибутивный подход предполагает наличие полученной от экспертов информации в виде троек объект—атрибут—значение атрибута, а также наличие обучающей информации. Этот подход развивается в рамках направления, получившего название "формирование знаний" или "машинное обучение" (machine learning).
    Второй подход, называемый структурным (или когнитивным), осуществляется путем выделения элементов предметной области, их взаимосвязей и семантических отношений.
    Для атрибутивного подхода характерно наличие наиболее полной информации о предметной области: об объектах, их атрибутах и о значениях атрибутов. Кроме того, существенным моментом является использование дополнительной обучающей информации, которая задается группированием объектов в классы по тому или иному содержательному критерию. Тройки объект—атрибут—значение атрибута могут быть получены с помощью так называемого метода реклассификации, который основан на предположении что задача является объектно-ориентированной и объекты задачи хорошо известны эксперту. Идея метода состоит в том, что конструируются правила (комбинации значений атрибутов), позволяющие отличить один объект от другого.
    Обучающая информация может быть задана на основании прецедентов правильных экспертных заключений, например, с помощью метода извлечения знаний, получившего название "анализ протоколов мыслей вслух".

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

    Структурный подход к построению модели предметной области предполагает выделение следующих когнитивных элементов знаний: 1. Понятия. 2. Взаимосвязи. 3. Метапонятия. 4. Семантические отношения.

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

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

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


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

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

    "Ролевой метод" состоит в том, что эксперту дается задание обучить инженера по знаниям решению некоторых задач предметной области. Таким образом, эксперт играет роль учителя, а инженер по знаниям — роль ученика. Процесс обучения записывается на магнитофон. Затем третий участник прослушивает магнитофонную ленту и выписывает на бумаге все понятия, употребленные учителем или учеником.

    При использовании метода "составления списка элементарных действий" эксперту дается задание составить такой список при решении задачи в произвольном порядке.

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

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

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


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

    "Метод свободных ассоциаций" основан на психологическом эффекте, описанном выше. Эксперту предъявляется понятие с просьбой назвать как можно быстрее первое пришедшее на ум понятие из сформированной ранее системы понятий. Далее производится анализ полученной информации.

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

    "Метод обнаружения регулярностей" основан на гипотезе о том, что элементы цепочки понятия, которые человек вспоминает с определенной регулярностью, имеют тесную ассоциативную взаимосвязь. Для эксперимента произвольным образом отбирается 20 понятий. Эксперту предъявляется одно из числа отобранных. Процедура повторяется до 20 раз, причем каждый раз начальные концепты должны быть разными. Затем инженер по знаниям анализирует полученные цепочки с целью нахождения постоянно повторяющихся понятий (регулярностей). Внутри выделенных таким образом группировок устанавливаются ассоциативные взаимосвязи.

    Кроме рассмотренных выше неформальных методов для установления взаимосвязей между отдельными понятиями применяются также формальные методы.


    Сюда в первую очередь относятся методы семантического дифференциала и репертуарных решеток.

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

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

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

    Существует около 200 базовых отношений, например, "часть — целое", "род — вид", "причина — следствие", пространственные, временные и другие отношения. Для каждой предметной области помимо общих базовых отношений могут существовать и уникальные отношения.

    "Прямой метод" установления семантических отношений основан на непосредственном осмыслении каждой взаимосвязи. В том случае, когда эксперт затрудняется дать интерпретацию выделенной взаимосвязи, ему предлагается следующая процедура. Формируются тройки: понятие 1 — связь — понятие 2. Рядом с каждой тройкой записывается короткое предложение или фраза, построенное так, чтобы понятие 1 и понятие 2 входили в это предложение. В качестве связок используются только содержательные отношения и не применяются неопределенные связки типа "похож на" или "связан с".


    Для " косвенного метода" не обязательно иметь взаимосвязи, достаточно лишь наличие системы понятий. Формулируется некоторый критерий, для которого из системы понятий выбирается определенная совокупность концептов. Эта совокупность предъявляется эксперту с просьбой дать вербальное описание сформулированного критерия. Концепты предъявляются эксперту все сразу (желательно на карточках). В случае затруднений эксперта прибегают к разбиению отобранных концептов на группы с помощью более мелких критериев. Исходное количество концептов может быть произвольным, но после разбиения на группы в каждой из таких групп должно быть не более десяти концептов. После того как составлены описания по всем группам, эксперту предлагают объединить эти описания в одно.

    Следующий шаг в косвенном методе установления семантических отношений — это анализ текста, составленного экспертом. Концепты заменяют цифрами (это может быть исходная нумерация), а связки оставляют. Тем самым строится некоторый граф, вершинами которого служат концепты, а дугами — связки (например, "ввиду", "приводит к", "выражаясь с одной стороны", "обусловливая", "сочетаясь", "определяет", "вплоть до" и т.д.) Этот метод позволяет устанавливать не только базовые отношения, но и отношения, специфические для конкретной предметной области.

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

    Этап опытной эксплуатации

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

    Этап тестирования

    В ходе данного этапа производится оценка выбранного способа представления знаний в ЭС в целом. Для этого инженер по знаниям подбирает примеры, обеспечивающие проверку всех возможностей разработанной ЭС.
    Различают следующие источники неудач в работе системы: тестовые примеры, ввод-вывод, правила вывода, управляющие стратегии.
    Показательные тестовые примеры являются наиболее очевидной причиной неудачной работы ЭС. В худшем случае тестовые примеры могут оказаться вообще вне предметной области, на которую рассчитана ЭС, однако чаще множество тестовых примеров оказывается слишком однородным и не охватывает всю предметную область. Поэтому при подготовке тестовых примеров следует классифицировать их по подпроблемам предметной области, выделяя стандартные случаи, определяя границы трудных ситуаций и т.п.
    Ввод-вывод характеризуется данными, приобретенными в ходе диалога с экспертом, и заключениями, предъявленными ЭС в ходе объяснений. Методы приобретения данных могут не давать требуемых результатов, так как, например, задавались неправильные вопросы или собрана не вся необходимая информация. Кроме того, вопросы системы могут быть трудными для понимания, многозначными и не соответствующими знаниям пользователя. Ошибки при вводе могут возникать также из-за неудобного для пользователя входного языка. В ряде приложения для пользователя удобен ввод не только в печатной, но и в графической или звуковой форме.
    Выходные сообщения (заключения) системы могут оказаться непонятны пользователю (эксперту) по разным причинам. Например, их может быть слишком много или, наоборот, слишком мало. Также причиной ошибок может являться неудачная организация, упорядоченность заключений или неподходящий пользователю уровень абстракций с непонятной ему лексикой.
    Наиболее распространенный источник ошибок в рассуждениях находится в правилах вывода. Важная причина здесь часто кроется в отсутствии учета взаимозависимости сформированных правил. Другая причина заключается в ошибочности, противоречивости и неполноте используемых правил.
    Если неверна посылка правила, то это может привести к употреблению правила в неподходящем контексте. Если ошибочно действие правила, то трудно предсказать конечный результат. Правило может быть ошибочно, если при корректности его условия и действия нарушено соответствие между ними.

    Нередко к ошибкам в работе ЭС приводят применяемые управляющие стратегии. Изменение стратегии бывает необходимо, например, если ЭС анализирует сущности в порядке, отличном от "естественного" для эксперта. Последовательность, в которой данные рассматриваются ЭС, не только влияет на эффективность работы системы, но и может приводить к изменению конечного результата. Так, рассмотрение правила А до правила В способно привести к тому, что правило В всегда будет игнорироваться системой. Изменение стратегии бывает также необходимо и в случае неэффективной работы ЭС. Кроме того, недостатки в управляющих стратегиях могут привести к чрезмерно сложным заключениям и объяснениям ЭС.

    Критерии оценки ЭС зависят от точки зрения. Например, при тестировании ЭС-1 главным в оценке работы системы является полнота и безошибочность правил вывода. При тестировании промышленной системы превалирует точка зрения инженера по знаниям, которого в первую очередь интересует вопрос оптимизации представления и манипулирования знаниями. И, наконец, при тестировании ЭС после опытной эксплуатации оценка производится с точки зрения пользователя, заинтересованного в удобстве работы и получения практической пользы

    Этап выполнения

    Цель этого этапа — создание одного или нескольких прототипов ЭС, решающих требуемые задачи. Затем на данном этапе по результатам тестирования и опытной эксплуатации создается конечный продукт, пригодный для промышленного использования. Разработка прототипа состоит в программировании его компонентов или выборе их из известных инструментальных средств и наполнении базы знаний.
    Главное в создании прототипа заключается в том, чтобы этот прототип обеспечил проверку адекватности идей, методов и способов представления знаний решаемым задачам. Создание первого прототипа должно подтвердить, что выбранные методы решений и способы представления пригодны для успешного решения, по крайней мере, ряда задач из актуальной предметной области, а также продемонстрировать тенденцию к получению высококачественных и эффективных решений для всех задач предметной области по мере увеличения объема знаний.
    После разработки первого прототипа ЭС-1 круг предлагаемых для решения задач расширяется, и собираются пожелания и замечания, которые должны быть учтены в очередной версии системы ЭС-2. Осуществляется развитие ЭС-1 путем добавления "дружественного" интерфейса, средств для исследования базы знаний и цепочек выводов, генерируемых системой, а также средств для сбора замечаний пользователей и средств хранения библиотеки задач, решенных системой.
    Выполнение экспериментов с расширенной версией ЭС-1, анализ пожеланий и замечаний служат отправной точкой для создания второго прототипа ЭС-2. Процесс разработки ЭС-2 — итеративный. Он может продолжаться от нескольких месяцев до нескольких лет в зависимости от сложности предметной области, гибкости выбранного представления знаний и степени соответствия управляющего механизма решаемым задачам (возможно, потребуется разработка ЭС-3 и т.д.). При разработке ЭС-2, кроме перечисленных задач, решаются следующие:
  • анализ функционирования системы при значительном расширении базы знаний;
  • исследование возможностей системы в решении более широкого круга задач и принятие мер для обеспечения таких возможностей;
  • анализ мнений пользователей о функционировании ЭС;
  • разработка системы ввода-вывода, осуществляющей анализ или синтез предложений ограниченного естественного языка, позволяющей взаимодействовать с ЭС-2 в форме, близкой к форме стандартных учебников для данной области.
  • Если ЭС-2 успешно прошла этап тестирования, то она может классифицироваться как промышленная экспертная система.

    Пример ЭС, основанной на правилах логического вывода и действующую в обратном порядке

    Допустим, вы хотите построить ЭС в области медицинской диагностики. В этом случае вам вряд ли нужно строить систему, использующую обучение на примерах, потому что имеется большое количество доступной информации, позволяющей непосредственно решать такие проблемы. К сожалению, эта информация приведена в неподходящем для обработки на компьютере виде.
    Возьмите медицинскую энциклопедию и найдите в ней статью, например, о гриппе. Вы обнаружите, что в ней приведены все симптомы, причем они бесспорны. Другими словами, при наличии указанных симптомов всегда можно поставить точный диагноз.
    Но чтобы использовать информацию, представленную в таком виде, вы должны обследовать пациента, решить, что у него грипп, а потом заглянуть в энциклопедию, чтобы убедиться, что у него соответствующие симптомы. Что-то здесь не так. Ведь необходимо, чтобы вы могли обследовать пациента, решить, какие у него симптомы, а потом по этим симптомам определить, чем он болен. Энциклопедия же, похоже, не позволяет сделать это так, как надо. Нам нужна не болезнь со множеством симптомов, а система, представляющая группу симптомов с последующим названием болезни. Именно это мы сейчас и попробуем сделать.
    Идеальной будет такая ситуация, при которой мы сможем в той или иной области предоставить машине в приемлемом для нее виде множество определений, которые она сможет использовать примерно так же, как человек-эксперт. Именно это и пытаются делать такие программы, как PUFF, DENDRAL, PROSPECTOR.
    С учетом байесовской системы логического вывода примем, что большая часть информации не является абсолютно точной, а носит вероятностный характер. Итак, начнем программирование:
    Симптомы
    1 Симптом_1
    2 Симптом_2
    N Симптом_N
    Полученный формат данных мы будем использовать для хранения симптомов. При слове "симптомы" создается впечатление, что мы связаны исключительно с медициной, хотя речь может идти о чем угодно. Суть в том, что компьютер задает множество вопросов, содержащихся в виде символьных строк <Симптом_1>, <Симптом_2> и т.д.

    Например, Симптом_1 может означать строку "Много ли вы кашляете?", или, если вы пытаетесь отремонтировать неисправный автомобиль, — строку "Ослаб ли свет фар?".
    Теперь оформим болезни:
    Болезнь p [j, py, pn]
    1 Болезнь_1 p1 [j, py, pn]1
    2 Болезнь_2 p2 [j, py, pn]2
    N Болезнь_N pn [j, py, pn]n
    В таком виде мы будем хранить информацию о болезнях. Это не обязательно должны быть болезни — могут быть любые результаты, и каждый оператор содержит один возможный исход и всю информацию, относящуюся к нему.
    Поле "болезнь" характеризует название возможного исхода, например "Грипп". Следующее поле — p — это априорная вероятность такого исхода P(H), т.е. вероятность исхода в случае отсутствия дополнительной информации. После этого идет ряд повторяющихся полей из трех элементов. Первый элемент — j — это номер соответствующего симптома (свидетельства, переменной, вопроса, если вы хотите назвать его по-другому). Следующие два элемента — P(E : H) и P(E : не H) — соответственно вероятности получения ответа "Да" на этот вопрос, если возможный исход верен и неверен. Например:
    2010Грипп0.01(1, 0.9, 0.01); (2, 1, 0.01); (3, 0, 0.01)
    Здесь сказано существует априорная вероятность P(H)=0.01, что любой наугад взятый человек болеет гриппом.
    Допустим, программа задает вопрос 1 (симптом 1). Тогда мы имеем P(E : H)=0.9 и P(E : не H)=0.01, а это означает, что если у пациента грипп, то он в девяти случаях из десяти ответит "да" на этот вопрос, а если у него нет гриппа, он ответит "да" лишь в одном случае из ста. Очевидно, ответ "да" подтверждает гипотезу о том, что у него грипп. Ответ "нет" позволяет предположить, что человек гриппом не болеет.
    Так же и во второй группе симптомов (2, 1, 0.01). В этом случае P(E : H)=0.9, т.е. если у человека грипп, то этот симптом должен присутствовать. Соответствующий симптом может существовать и при отсутствии гриппа (P(E : не H)=0.01), но это маловероятно.
    Вопрос 3 исключает грипп при ответе "да", потому что P(E : H)=0. Это может быть вопрос вроде такого: "наблюдаете ли вы такой симптом на протяжении большей части жизни?" — или что-нибудь вроде этого.
    Нужно подумать, — а если вы хотите получить хорошие результаты, то и провести исследование, — чтобы установить обоснованные значения для этих вероятностей. И если быть честным, то получение такой информации — вероятно, труднейшая задача, в решении которой компьютер также сможет существенно помочь Вам. Если вы напишите программу общего назначения, ее основой будет теорема Байеса, утверждающая:
    P(H : E) = P(E : H) * P(H) / (P(E : H) * P(H) +P(E : не H) * P(не H).
    Вероятность осуществления некой гипотезы H при наличии определенных подтверждающих свидетельств Е вычисляется на основе априорной вероятности этой гипотезы без подтверждающих свидетельств и вероятности осуществления свидетельств при условиях, что гипотеза верна или неверна.
    Поэтому, возвращаясь к нашим болезням, увидим:
    P(H : E) = py * p / (py * p + pn * (1 - p)) .
    В данном случае мы начинаем с того, что Р(Н) = р для всех болезней. Программа задает соответствующий вопрос и в зависимости от ответа вычисляет P(H : E). Ответ "да" подтверждает вышеуказанные расчеты, ответ "нет" тоже, но с (1 – py) вместо py и (1 – pn) вместо pn. Сделав так, мы забываем об этом, за исключением того, что априорная вероятность P(H) заменяется на P(H : E). Затем продолжается выполнение программы, но с учетом постоянной коррекции значения P(H) по мере поступления новой информации.
    Описывая алгоритм, мы можем разделить программу на несколько частей.
    Часть 1.
    Ввод данных.
    Часть 2.
    Просмотр данных на предмет нахождения априорной вероятности P(H). Программа вырабатывает некоторые значения массива правил и размещает их в массиве RULEVALUE. Это делается для того, чтобы определить, какие вопросы (симптомы) являются самыми важными, и выяснить, о чем спрашивать в первую очередь. Если вы вычислите для каждого вопроса RULEVALUE[I] = RULEVALUE[I] + ABS (P(H : E) – P(H : не E)), то получите значения возможных изменений вероятностей всех болезней, к которым они относятся.
    Часть 3.
    Программа находит самый важный вопрос и задает его. Существует ряд вариантов, что делать с ответом: вы можете просто сказать: "да" или "нет". Можете попробовать сказать "не знаю", — изменений при этом не произойдет. Гораздо сложнее использовать шкалу от –5 до +5, чтобы выразить степень уверенности в ответе.
    Часть 4.
    Априорные вероятности заменяются новыми значениями при получении новых подтверждающих свидетельств.
    Часть 5.
    Подсчитываются новые значения правил. Определяются также минимальное и максимальное значения для каждой болезни, основанные на существующих в данный момент априорных вероятностях и предположениях, что оставшиеся свидетельства будут говорить в пользу гипотезы или противоречить ей. Важно выяснить: стоит ли данную гипотезу продолжать рассматривать или нет? Гипотезы, которые не имеют смысла, просто отбрасываются. Те же из них, чьи минимальные значения выше определенного уровня, могут считаться возможными исходами. После этого возвращаемся к части 3.
    Пример ЭС, основанной на правилах логического вывода и действующую в обратном порядке

    Проектирование систем искусственного интеллекта

    Алгоритм конкурирующих точек

    Алгоритм конкурирующих точек в общем виде включает следующие операции.
  • По процедуре СДС синтезируется Алгоритм конкурирующих точек точек Алгоритм конкурирующих точек, в которых определяется значение минимизируемой функции (критерия сравнения). Из этих Алгоритм конкурирующих точек точек отбирается Алгоритм конкурирующих точек точек, имеющих наилучшие значения критерия, которые в дальнейшем называются основными. Запоминается наихудшее значение критерия основных точек Алгоритм конкурирующих точек. При этом считается, что совершен нулевой глобальный (групповой) шаг поиска (t = 0).
    Таким образом, на t-м групповом шаге поиска имеем основные точки
    Алгоритм конкурирующих точек (10)

    и, соответственно, невозрастающую последовательность чисел
    Алгоритм конкурирующих точек (11)

  • Каждая основная точка делает шаг локального поиска, в результате чего точки (10) переходят в новую последовательность
    Алгоритм конкурирующих точек (12)

  • Синтезируется Алгоритм конкурирующих точек дополнительных допустимых точек, каждой из которых разрешается сделать t+1 шагов локального поиска при условии, что после каждого шага с номером Алгоритм конкурирующих точек ее критерий не хуже, чем соответствующий член последовательности (11). При нарушении этого условия точка исключается и не участвует в дальнейшем поиске глобального экстремума. Таким образом, имеется Алгоритм конкурирующих точек дополнительных точек, сделавших t+1 шаг локального поиска:
    Алгоритм конкурирующих точек (13)

  • Среди точек (12) и (13) отбирается Алгоритм конкурирующих точек точек с лучшими критериями:
    Алгоритм конкурирующих точек (14)

    которые являются основными на t+1-м групповом шаге поиска. Значение худшего критерия точек из последовательности (14) дополняет последовательность (11) числом Алгоритм конкурирующих точек.
  • Цикл по пп. 2—4 повторяется до нахождения глобального экстремума по заданным условиям прекращения поиска. В качестве условий прекращения поиска могут быть использованы, например, выполнение заданного числа Т групповых шагов.
  • Считая параметры Алгоритм конкурирующих точек независимыми от i, будем иметь только два настраиваемых параметра алгоритма; Алгоритм конкурирующих точек — число основных точек и Алгоритм конкурирующих точек — число дополнительных точек.
    Проведенные исследования позволяют рекомендовать следующие оптимальные значения этих параметров: Алгоритм конкурирующих точек, Алгоритм конкурирующих точек. Для простоты реализации алгоритма можно брать постоянные значения Алгоритм конкурирующих точек и Алгоритм конкурирующих точек.
    В качестве процедуры ШЛП рекомендуется использовать следующие алгоритмы поиска локального экстремума:
  • алгоритм случайного поиска в подпространствах;
  • алгоритм случайного поиска с выбором по наилучшей пробе;
  • алгоритм сопряженных градиентов;
  • алгоритм Нельдера-Мида.


  • Алгоритм поиска глобального экстремума

    Алгоритм поиска глобально-оптимального решения можно использовать для решения задач как параметрической, так и структурной оптимизации. Укрупненная блок-схема алгоритма включает четыре процедуры:
  • синтез допустимой структуры (СДС), обеспечивающий выбор допустимого решения из любой подобласти всей области поиска;
  • шаг локального поиска (ШЛП), обеспечивающий переход от одного решения к другому допустимому решению, как правило, той же структуры, но с улучшенным значением критерия; под шагом локального поиска можно понимать некоторый условный шаг по какому-либо алгоритму поиска локального экстремума (например, одна итерация по методу наискорейшего спуска);
  • глобальный поиск, управляющий работой процедур СДС и ШЛП;
  • проверка условий прекращения поиска, определяющая конец решения задачи.
  • Алгоритм поиска глобального экстремума

    Приведем основные рекомендации построения процедур СДС и ШЛП.
    В некоторых случаях построение процедуры СДС можно свести к предварительному составлению набора допустимых структур, из которого выбирают структуры при каждом обращении к процедуре СДС. Если суть этой процедуры состоит в выборе по возможности допустимого набора переменных структурной оптимизации, то представляется полезным включать в нее правила выбора переменных, основанные на эвристических соображениях, аналитических и экспериментальных исследованиях, изучении опыта проектирования и эксплуатации аналогичных TО. Для некоторых сложных или малоизученных задач проектирования трудно построить процедуру СДС, обеспечивающую получение допустимых структур. В этом случае в процедуру целесообразно включать операции преобразования недопустимых структур в допустимые. Набор таких операций можно составить из подходящих эвристических приемов (для задач, связанных с техническими объектами, сборники таких приемов можно найти в соответствующей литературе, в которой решение изобретательских задач рассматривается более подробно). Преобразование недопустимых структур в допустимые можно также решать как задачу оптимизации. В диалоговом режиме работы санкцию процедуры СДС может взять на себя проектировщик.

    В целом по процедуре СДС можно дать следующие рекомендации, направленные на повышение вероятности выбора допустимых структур и снижение объема вычислений по оценке недопустимых:

  • способы выбора значений переменных должны содержать правила, отсекающие заведомо нерациональные и недопустимые значения переменных и их комбинации;
  • ограничения следует проверять не после построения структуры в целом, а по возможности в процессе построения, что позволяет сократить лишнюю работу по ненужным построениям и в ряде случаев сразу внести поправки по устранению дефектов структуры;
  • проверяемые ограничения должны быть упорядочены по снижению вероятности их нарушения; такое упорядочение иногда можно проводить автоматически в процессе решения задачи.
  • Процедуры ШЛП включают обычно способы изменения переменных, ориентированные на решение задач как структурной, так и параметрической оптимизации. Приведенные рекомендации по построению процедур СДС можно использовать и при построении способов локального изменения дискретных переменных. Для изменения непрерывных переменных, как правило, применяют различные алгоритмы локального поиска. Ниже указаны наиболее предпочтительные (о ГА смотри замечание ниже).

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

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

    Алгоритм конкурирующих точек — один из наиболее простых и эффективных по сравнению с другими распространенными алгоритмами поиска глобального экстремума. Так, например, трудоемкость поиска (затраты машинного времени) по этому алгоритму на порядок меньше по сравнению с алгоритмом случайного перебора локальных экстремумов и на два порядка меньше по сравнению с методом Монте-Карло.

    Для удобства изложения алгоритма решение будем называть также точкой (в многомерном пространстве поиска) и независимо от того, решается ли задача параметрической оптимизации (1)—(4) или задача структурной оптимизации (6)—(9), будем обозначать его X.

    Алгоритм случайного поиска в подпространствах

    Рекомендуемый алгоритм случайного поиска в подпространствах можно записать в виде следующих рекуррентных выражений:
    Алгоритм случайного поиска в подпространствах;
    Алгоритм случайного поиска в подпространствах при Алгоритм случайного поиска в подпространствах.
    Здесь h — число последовательно неудачных шагов поиска; Алгоритм случайного поиска в подпространствах определяется по формуле:
    Алгоритм случайного поиска в подпространствахгде a—максимальная величина рабочего шага поиска;
    Алгоритм случайного поиска в подпространствах — вектор случайных чисел; Алгоритм случайного поиска в подпространствах — векторы приращений на (i-1)-, i-, (i+1)-м шагах поиска; Алгоритм случайного поиска в подпространствах — векторы, описанные по формуле (1); Алгоритм случайного поиска в подпространствах— значения критериев качества после осуществления на (i-1)-, i-, (i+1)-го шагов поиска.
    Вектор случайных чисел
    Алгоритм случайного поиска в подпространствах
    Алгоритм случайного поиска в подпространствах
    где Алгоритм случайного поиска в подпространствах — случайное равномерно распределенное число, выбираемое из интервала [-1, 1]; k и L—случайные целые числа, распределенные на отрезке [1, n] и упорядоченные соотношением Алгоритм случайного поиска в подпространствах.
    Имеются и другие модификации этого алгоритма, которые могут оказаться более эффективными.

    Автоматический синтез технических решений

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

    Генетический алгоритм (ГА)

    Генетический алгоритм является самым известным на данный момент представителем эволюционных алгоритмов, и по своей сути является алгоритмом для нахождения глобального экстремума многоэкстремальной функции. ГА представляет собой модель размножения живых организмов.
    Для начала представим себе целевую функцию от многих переменных, у которой необходимо найти глобальных максимум или минимум:
    f(x1, x2, x3, …, xN)
    Чтобы ГА заработал, нам необходимо представить независимые переменные в виде хромосом. Как это делается?

    Эволюция

    Прежде всего, упомяну, что отнюдь не все ученые признают наличие эволюции. Многие религиозные течения (например, свидетели Иеговы) считают учение об эволюции живой природы ошибочным. Я не хочу сейчас вдаваться в полемику относительно доказательств за и против по одной простой причине. Даже если я не прав в своих взглядах, объясняя эволюционные алгоритмы как аналоги процессов, происходящих в живой природе, никто не сможет сказать, что эти алгоритмы неверны. Несмотря ни на что, они находят огромное применение в современной науке и технике и показывают подчас просто поразительные результаты.
    Основные принципы эволюционной теории заложил Чарльз Дарвин в своей самой революционной работе — "Происхождение видов". Самым важным его выводом был вывод об основной направляющей силе эволюции — ею признавался естественный отбор. Другими словами — выживает сильнейший (в широком смысле этого слова). Забегая вперед, замечу, что любой эволюционный алгоритм имеет такой шаг, как выделение самых сильных (полезных) особей. Вторым, не менее важным выводом Дарвина был вывод об изменчивости организмов. Аналогом данного закона у всех алгоритмов является шаг генерации новых экземпляров искомых объектов (решений, структур, особей, алгоритмов).
    Именно отбор наилучших объектов является ключевой эвристикой всех эволюционных методов, позволяющих зачастую уменьшить время поиска решения на несколько порядков по сравнению со случайным поиском. Если попытаться выразить эту эвристику на естественном языке, то скажем: сложно получить самое лучшее решение, модифицируя плохое. Скорее всего, оно получится из нескольких лучших на данный момент.
    Из основных особенностей эволюционных алгоритмов можно отметить их некоторую сложность в плане настройки основных параметров (вырождение, либо неустойчивость решения). Поэтому, экспериментируя с ними и получив не очень хорошие результаты, попробуйте не объявлять сразу алгоритм неподходящим, а попытаться опробовать его при других настройках. Данный недостаток следует из основной эвристики — можно "уничтожить" предка самого лучшего решения, если сделать селекцию слишком "жесткой" (не зря ведь биологам давно известно, что если осталось меньше десятка особей исчезающего вида, то этот вид сам по себе исчезнет из-за вырождения).

    Эволюционное (генетическое) программирование

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

    Как работает генетический алгоритм?

    В общем, генетический алгоритм работает следующим образом. В первом поколении все хромосомы генерируются случайно. Определяется их "полезность". Начиная с этой точки, ГА может начинать генерировать новую популяцию. Обычно размер популяции постоянен.
    Репродукция состоит из четырех шагов:
  • селекции и трех генетических операторов (порядок применения не важен)
  • кроссовера;
  • мутации;
  • инверсии.
  • Роль и значение селекции мы уже рассмотрели в обзоре эволюционных алгоритмов.
    Кроссовер является наиболее важным генетическим оператором. Он генерирует новую хромосому, объединяя генетический материал двух родительских. Существует несколько вариантов кроссовера. Наиболее простым является одноточечный. В этом варианте просто берутся две хромосомы и перерезаются в случайно выбранной точке. Результирующая хромосома получается из начала одной и конца другой родительских хромосом.
    001100101110010|11000-------->00110010111001011100
    110101101101000|11100
    Мутация представляет собой случайное изменение хромосомы (обычно простым изменением состояния одного из битов на противоположное). Данный оператор позволяет более быстро находить ГА локальные экстремумы, с одной стороны, и "перескочить" на другой локальный экстремум — с другой.
    00110010111001011000-------->00110010111001111000
    Инверсия инвертирует (изменяет) порядок бит в хромосоме путем циклической перестановки (случайное количество раз). Многие модификации ГА обходятся без данного генетического оператора.
    00110010111001011000-------->11000001100101110010
    Очень важно понять, за счет чего ГА на несколько порядков превосходит по быстроте случайный поиск во многих задачах. Дело здесь, видимо, в том, что большинство систем имеют довольно независимые подсистемы. Вследствие этого, при обмене генетическим материалом часто может встретиться ситуация, когда от каждого из родителей берутся гены, соответствующие наиболее удачному варианту определенной подсистемы (остальные "уродцы" постепенно вымирают). Другими словами, ГА позволяет накапливать удачные решения для систем, состоящих из относительно независимых подсистем (таковы большинство современных сложных технических систем и все известные живые организмы). Соответственно, можно предсказать, и когда ГА скорее всего даст сбой (или, по крайней мере, не покажет особых преимуществ перед методом Монте-Карло) — в системах, которые сложно разбить на подсистемы (узлы, модули), а также в случае неудачного порядка расположения генов (рядом расположены параметры, относящиеся к различным подсистемам), при котором преимущества обмена генетическим материалом сводятся к нулю. Последнее замечание несколько ослабляется в системах с диплоидным (двойным) генетическим набором.

    Как создать хромосомы?

    Первым Вашим шагом будет преобразование независимых переменных в хромосомы, которые будут содержать всю необходимую информацию о каждой создаваемой особи. Имеется два варианта кодирования параметров:
  • в двоичном формате;
  • в формате с плавающей запятой.
  • В случае если мы применяем двоичное кодирование, мы используем N бит для каждого параметра, причем N может быть различным для каждого параметра. Если параметр может изменяться между минимальным значением MIN и максимальным MAX, возьмем следующие формулы для преобразования:
    r = g*(MAX – MIN) / (2^N – 1) + MIN.
    g = (r – MIN) / (MAX – MIN) * (2^N – 1)
    где g – целочисленные двоичные гены, r – эквивалент генов в формате с плавающей запятой.
    Хромосомы в формате с плавающей запятой создаются при помощи размещения закодированных параметров один за другим.
    Если сравнивать эти два способа представления, то лучшие результаты дает вариант представления в двоичном формате (особенно при использовании кодов Грея). Правда, в этом случае мы вынуждены мириться с постоянным кодированием/декодированием параметров.

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

    Как Вы уже знаете, существуют задачи, для которых доказано отсутствие общего алгоритма решения (например, задача о разрешимости Диофантова множества). В то же время можно сказать, что, если бы мы обладали бесконечным запасом времени и соответствующими ресурсами, то мы могли бы найти решение любой задачи. Здесь имеется в виду не конструирование нового знания на основании имеющегося (вывод новых теорем из аксиом и уже выведенных теорем), а, прежде всего, "тупой" перебор вариантов.
    Еще в XVII столетии великий Лейбниц пытался раскрыть тайну "Всеобщего Искусства Изобретения". Он утверждал, что одной из двух частей этого искусства является комбинаторика— перебор постепенно усложняющихся комбинаций исходных данных. Второй частью является эвристика — свойство догадки человека. И сейчас вторая часть Искусства Изобретения все еще остается нераскрытой. На языке нашего времени эта часть — модель мышления человека, включающая в себя процессы генерации эвристик (догадок, изобретений, открытий).
    Однако прежде чем перейти к рассмотрению улучшенных переборных алгоритмов (улучшенных потому, что для простого перебора у нас в запасе нет вечности), я бы отметил еще один универсальный метод ускорения перебора — быстрое отсечение ложных (или вероятно ложных, что и используется большинством алгоритмов) ветвей перебора.

    МГУА

    Описанный в разделе алгоритмов распознавания образов метод группового учета аргументов так же относится к разряду эволюционных. Его можно представить как следующий цикл:
  • Берем самый последний слой классификаторов.
  • Генерируем из них по определенным правилам новый слой классификаторов (которые теперь сами становятся последним слоем).
  • Отбираем из них F лучших, где F — ширина отбора (селекции).
  • Если не выполняется условие прекращения селекции (наступление вырождения – инцухта), переходим на п. 1.
  • Самый лучший классификатор объявляется искомым решением задачи идентификации.
  • Как мы видим, налицо все признаки эволюционного алгоритма — отбор (селекция) и генерация нового поколения.

    Некоторые замечания относительно использования ГА

    Как можно заметить, ГА представляет собой смешанный алгоритм как для поиска глобального экстремума, так и для поиска локального. Это дает нам возможность упростить схему поиска глобально-оптимальных структур за счет использования в ней ГА как в качестве алгоритма СДС, так и в качестве алгоритма ШЛП. Каковы плюсы и минусы данной схемы? Плюсы — простота реализации, универсальность. Минусы — по сравнению со специальными алгоритмами СДС, которые будут давать нам гораздо больше жизнеспособных экземпляров, очень уменьшится скорость работы алгоритма. Таким образом, ГА предпочтительно использовать в следующих случаях: простые случаи, в которых программирование специального метода будет продолжаться гораздо дольше, чем поиск решения даже медленным методом; сложный случай, когда мы даже не знаем, с какой стороны подойти к задаче.
    Интересно также отметить общие стороны ГА и алгоритма случайного поиска в подпространствах. Оба эти алгоритма при поиске оптимума изменяют не все возможные переменные, а только часть их. Это, казалось бы, мелкое усовершенствование ведет к поразительным результатам — эти алгоритмы в среднем дают трудоемкость нахождения решения на порядок ниже, чем метод сопряженных градиентов, и на два порядка ниже, чем метод случайного поиска по всему пространству переменных. Другими словами, эти алгоритмы используют одно из свойств нашего мира — независимость различных подсистем объектов.
    Возвращаясь к основному вопросу данных лекций — интеллектуальным задачам, скажем, что данные алгоритмы ведут себя как опытные инженеры при поиске неисправностей (очень интеллектуальная по всем параметрам задача), и соблюдают заповедь — "никогда не трогать все сразу, только по очереди".
    Некоторые замечания относительно использования ГА

    Поиск оптимальных структур

    Постановка задачи параметрической оптимизации. Прежде чем рассматривать постановку задачи поиска оптимального ТР для заданного физического принципа действия, разберем задачу более низкого уровня, которую называют задачей поиска оптимальных значений параметров для заданного ТР или сокращенно — задачей параметрической оптимизации. Эти задачи неизбежно приходится решать при поиске оптимального ТР, а кроме того, они имеют и самостоятельное значение.
    Любое отдельное ТР, как правило, можно описать единым набором переменных (изменяемых параметров)
    Х = (x1, ..., xn), (1)
    которые могут изменять свои значения в некотором гиперпараллелепипеде
    Поиск оптимальных структур, i = l, ..., n, (2)
    где для расширения области поиска не рекомендуется накладывать жестких ограничений на ai, bi.
    Математическая модель проектируемого изделия ставит в соответствие каждому набору значений (1) некоторый критерий качества (функцию цели) f(х) и накладывает на переменные (1) дополнительные ограничения, представляемые чаще всего в виде системы нелинейных неравенств
    Поиск оптимальных структур (3)
    ,
    Тогда задача поиска оптимальных параметров ТР состоит в нахождении такого набора (1), который удовлетворяет неравенствам (2) и (3) и обеспечивает глобальный экстремум критерию качества. Для определенности будем считать, что отыскивается минимум, и, если обозначим через D область допустимых решений, удовлетворяющих неравенствам (2), (3), получим задачу математического программирования в n-мерном пространстве:
    найти точку Поиск оптимальных структур, такую, что
    Поиск оптимальных структур (4)

    Часто в задачах параметрической оптимизации на переменные или часть из них наложены условия целочисленности или дискретности. В этом случае область поиска D становится заведомо многосвязной, а сама задача с математической точки зрения — многоэкстремальной.
    Следует еще заметить, что задачи поиска оптимальных значений параметров в подавляющем большинстве случаев представляют собой многопараметрические многоэкстремальные задачи, в которых функциональные ограничения (3) "вырезают" замысловатые допустимые области. Объемы этих областей могут быть очень малыми по сравнению с объемами гиперпараллелепипедов (2).
    Однако, несмотря на такую сложность, большинство задач параметрической оптимизации можно вполне удовлетворительно решить существующими методами.

    Постановка задачи структурной оптимизации. Среди задач поиска оптимальных ТР рассмотрим только подкласс, называемый задачами поиска оптимальных многоэлементных структур ТО, или коротко — задач структурной оптимизации.

    Строгое определение понятия структуры ТО дать затруднительно, поэтому укажем лишь некоторые инженерные и математические свойства, которые связаны с этим понятием.

    С инженерной точки зрения, разные структуры рассматриваемого класса ТО отличаются числом элементов, самими элементами, их компоновкой, характером соединения между элементами и т. д. Понятие структуры в большой мере аналогично понятию технического решения, данному в п. 3 лек. 1, однако имеются различия, которые вызывают необходимость введения этого дополнительного понятия. Во-первых, в рамках заданного физического принципа действия, как правило, существует более широкое множество ТР по сравнению с множеством, которое можно формально описать при постановке и решений задачи структурной оптимизации. Во-вторых, между отдельными ТР подразумеваются более существенные различия по конструктивным признакам, чем различия между отдельными структурами, иногда формально отличающимися значениями несущественных дискретных переменных. Например, на рис. 10.1 показаны две фермы моста с решеткой в виде равнобедренных треугольников, которые имеют одинаковые ТР, но разные структуры. Короче говоря, для заданного физического принципа действия множества возможных ТР и множество возможных структур (для рассматриваемой задачи структурной оптимизации) пересекаются, но, как правило, не совпадают.

    При этом одно ТР можно представить несколькими близкими структурами.

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


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

    Постановку задач структурной оптимизации обычно начинают с определения набора переменных по следующей методике.

  • Задают такие переменные, чтобы они могли по возможности описать множество всех рациональных структур S0, которые в состоянии оценить существующая математическая модель в рассматриваемом классе ТО.
  • Просматривают и анализируют методы преобразования структур. Дополняют множество S0 подмножествами новых структур, которые можно синтезировать и оценить с помощью существующей или доработанной математической модели. В результате строится расширенное множество рассматриваемых структур S и описывающий его набор переменных, который обозначим вектором А. Пусть, например, задача структурной оптимизации допускает следующий набор А:

    Поиск оптимальных структур (5)
    где k — число элементов в структуре;

    L — число способов соединения элементов;

    Поиск оптимальных структур — вектор, описывающий геометрические, физические и другие свойства i-го элемента;

    i — номер элемента (1, ..., k),

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

    j — номер способа соединения (1,...,L);

    Поиск оптимальных структур — вектор, характеризующий положение i-го элемента в пространстве при j-м способе соединения (i = 1, ..., k, j = l, ..., L);

    Поиск оптимальных структур— другие переменные.

  • Из вектора А выделяют вектор А' независимых переменных, которыми можно варьировать при поиске оптимальных структур. Для зависимых переменных задают алгоритм их определения через независимые переменные.
  • Вектор А' разделяют на вектор переменных A'S, обеспечивающих изменение структуры, и вектор переменных А'P, с помощью которых ставят и решают задачи параметрической оптимизации для заданной структуры. Вектор А'P состоит из набора общих переменных А'0, которые присутствуют при изменении любой структуры, и набора переменных А'C, изменяющихся при переходе от структуры к структуре.


    При решении задачи параметрической оптимизации для заданной структуры используется только определенная часть переменных из набора Ас.
  • Так, если в задаче структурной оптимизации с указанным набором переменных структура определяется способом соединения, то можно считать, что A'S есть одна переменная

    Поиск оптимальных структур

    где Поиск оптимальных структур — собственные переменные j-й структуры; штрих означает, что среди соответствующих переменных выбраны независимые.

    Допустим, имеется алгоритм выбора из множества S подмножества всех допустимых структур {Si,..., Sm}, у которых существует хотя бы один набор значений параметров, удовлетворяющих заданным ограничениям. Допустим также, что для любой структуры SJ (j = 1, ..., m) можно решить задачу параметрической оптимизации, т. е. задать пространство переменных

    Поиск оптимальных структур , j = 1, …, m, (6)

    и по единому критерию качества найти допустимые оптимальные параметры структуры SJ. Оптимальные значения параметров структуры SJ будем обозначать через Поиск оптимальных структур.

    Тогда задаче структурной оптимизации можно дать следующую формулировку.

    Имеется m nJ-мерных параллелепипедов

    Поиск оптимальных структур , i = 1, …, nJ, j = 1, …, m, (7)

    как с непрерывным, так и с дискретным характером изменения переменных . Для каждого из параллелепипедов задана по единому критерию качества целевая функция

    Поиск оптимальных структур , j = 1, …, m, (8)

    и система ограничений

    Поиск оптимальных структур, r = 1, …, pJ, j = 1, …, m, (9)

    Требуется найти точку Поиск оптимальных структур, принадлежащую Поиск оптимальных структур-му параллелепипеду, для которой

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

    К задачам структурной оптимизации относится задача выбора оптимальной компоновки ТО.

    Отметим некоторые особенности задач структурной оптимизации. Во-первых, почти всегда в этих задачах одновременно присутствуют и дискретные, и непрерывные переменные, т. е. задачи структурной оптимизации в общем случае относятся к смешанным задачам математического программирования.Во-вторых, при структурных преобразованиях изменяются число и характер переменных и соответственно функции ограничений и целевые функции. Что касается характера многосвязной области поиска, то отдельные подобласти или имеют различную размерность, или (при совпадении размерности) образованы различными наборами переменных.

    Проектирование систем искусственного интеллекта

    Анализ текста

    В самых различных текстах можно обнаружить символы и аббревиатуры, которые не принадлежат к категории " правильно образованных слов". Такие символы, как "%" и "&", аббревиатуры типа "Mr" и "Nov", должны быть преобразованы в нормальную форму. Были разработаны подробные руководства по транскрибированию чисел, дат, сум денег. Иногда возникают двусмысленные ситуации, например, при использовании знака дефиса в конце строки. Человек в таких случаях, чтобы определить подходящее произношение, обращается к контексту и к практическим знаниям, которые не поддаются алгоритмизации.

    Фонд физико-технических эффектов

    Поиск физических принципов действия (ФПД) технических объектов и технологий — один из самых высоких уровней инженерного творчества, позволяющий получать принципиально новые решения, включая и пионерные. Однако разработка ФПД — это и наиболее сложная задача инженерного творчества, поскольку человек вынужден варьировать и оценивать не только конструктивные признаки, обычно хорошо обозримые и логически увязанные друг с другом. Здесь приходится абстрагироваться на уровне физико-технических эффектов (ФТЭ), не всегда очевидных и достаточно глубоко познанных. В отличие от новых комбинаций конструктивных признаков мысленно представить и оценить новые комбинации ФТЭ значительно труднее.
    Главная трудность состоит в том, что инженер обычно знает до 200, а достаточно свободно использует не более 100 ФТЭ, хотя в научно-технической литературе их описано более 3000. Кроме того, в связи с возрастающими темпами развития науки и техники, число ФТЭ постоянно увеличивается. Таким образом, в наше время у разработчиков новой техники существует очень большой и возрастающий дефицит информации, необходимой для решения задач поиска новых ФПД.
    Излагаемые в настоящей лекции методы автоматизированного поиска новых ФПД позволяют, во-первых, в большой мере устранить указанный дефицит информации по ФТЭ; во-вторых, значительно облегчить получение новых работоспособных комбинаций ФТЭ, т. е. новых ФПД изделий и технологий.
    Таблица 11.1. Пример карты описания физико-технических эффектов (ФТЭ)
    Тепловое расширение твердых тел3—21
    Тепловое расширение3
    Фонд физико-технических эффектов
    Сущность и схема ФТЭ Тепловое расширение твердых тел связано с несимметричностью (ангармонизмом) тепловых колебаний атомов, благодаря чему межатомные расстояния с ростом температуры увеличиваются, что приводит к изменению линейных размеров тела Фонд физико-технических эффектов


    Диапазоны изменения Диапазоны температур T1 и Т2 должны принадлежать одной аллотропической модификации и быть меньше температуры плавления.
    Математическая модель ФТЭ e=a*dT
    где e=dL/L1 – относительное удлинение
    dT = T2-T1 – разница температур
    a – коэффициент линейного расширения (берется из таблицы)
    Существование обратного ФТЭ Нет
    Применение ФТЭ в технике В приборостроении, электротехнической промышленности, энергетике; при конструировании установок, приборов и машин, работающих в переменных температурных условиях, а также использующих тепловое расширение тел.
    В основе этих методов лежит база данных, в которой каждый ФТЭ имеет трехуровневое описание. На первом уровне дается самое короткое качественное описание ФТЭ. Второй уровень — это стандартная карта описания ФТЭ размером в одну страницу, где дается наиболее важная и легко обозримая информация о ФТЭ и его использовании в технике. В табл. 11.1 приведен пример карты описания эффекта теплового расширения, из которого понятно содержимое рубрик описания, а также видно, что первый уровень описания включается в карту описания.
    Третий уровень описания совместно с информацией второго уровня дает более подробное описание ФТЭ, объем которого обычно составляет 5—10 машинописных страниц.

    Голосовой аппарат человека

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

    Конвертация текста в речь

    Синтез по правилам требует детального фонетического транскрибирования на входе. Хотя для запоминания этой информации требуется мало памяти, чтобы извлечь из нее необходимые параметры, необходимы знания эксперта. Для конвертации неограниченного английского текста в речь необходимо сначала проанализировать его с целью получения транскрипции, которая затем синтезируется в выходную речевую волну. Анализ текста по своей природе задача лингвистическая и включает в себя определение базовых фонетических, слоговых, морфемных и синтакисических форм, плюс вычленение семантической и прагматической информации. Системы конвертации текста в речь являются наиболее комплексными системами синтеза речи, включающие в себя знания об устройстве речевого аппарата человека и лингвистической структуре языка; они также должны учитывать ограничения, накладываемые областью применения системы, технико-технологической базой. Необходимо заметить, что и текст, и речь являются поверхностными пр едставлениями базовых лингвистических форм, поэтому задача преобразования текста в речь состоит в выявлении этих базовых форм, а затем в воплощении их в речи.

    Методы синтеза

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

    Модификация ударения и фонологические уточнения

    Последняя фаза анализа состоит в некоторых незначительных поправках к имеющейся уже фонетической транскрипции на основе анализа контекстного окружения. Простой пример — определение произношения артикля "the", которое зависит от начального звука последующего слова. Кроме того, на этом этапе используются некоторые эвристические методы проверки правильного соотношения общего контура предложения с контурами отдельных слов. На этом этапе заканчивается подготовка исходного текста собственно к самому процессу синтеза.

    Морфологический анализ

    В вводном тексте границы слов легко определяются. Можно хранить произношение всех английских слов. Размер словаря будет большим, но в таком подходе есть несколько привлекательных сторон. Во-первых, в любом случае необходим словарь слов, произношение которых является исключением из общих правил. Такими являются, например, заимствованные слова (parfait, tortilla). Более того, все механизмы преобразования цепочки букв в фонетические значки допускают ошибки. Интересный класс исключений составляют часто употребляемые слова. Например, звук /th/ в начале слова произносится как глухой фрикативный в большинстве слов (thin, thesis, thimble). Но в наиболее частотных, таких, как короткие функциональные слова the, this, there, these, those, etc., начальный звук произносится как звонкий. Также /f/ всегда произносится глухо, за исключением слова "of". Другой пример. В словах типа "shave", "behave" конечный /e/ удлиняет предшествующий гласный, но в таком частом слове, как "have", это правило не действует. Наконец, конечный /s/ в "atlas", "canvas" — глухой, но в функциональных словах is, was, has он произносится звонко. Таким образом, приходим к выводу, что все системы должны иметь такой словарь исключений. Что касается нормальных слов, то здесь имеется два варианта. Первый крайний случай состоит в том, чтобы составить полный словарь. Хотя число слов ограничено, составить абсолютно полный словарь невозможно, т.к. постоянно появляются новые слова. Кроме того, в словарь необходимо будет внести все изменяемые формы слова.
    Другой крайний подход состоит в установлении ряда правил, которые бы преобразовывали цепочки букв в фонетические значки. Хотя эти правила очень продуктивны, нельзя избежать ошибок, что ведет к созданию словаря исключений. Чтобы правильно определить фонетическую транскрипцию слова, нужно правильно разбить слово на структурные составляющие. Было обнаружено, что важную роль в определении произношения играет морфема, минимальная синтаксическая единица языка.
    Система MITalk использует морфемный лексикон, что может рассматриваться как некоторый компромиссный подход между двумя крайними, упомянутыми выше. Многие английские слова можно расчленить на последовательность морфов, таких, как префиксы, корни, суффиксы. Так, слово "snowplows" имеет два корня и окончание, "relearn" имеет приставку и корень. Такие морфы являются атомными составляющими слова и они относительно стабильны в языке, новые морфы формируются очень редко. Эффективный лексикон может иметь не более 10,000 морфов. Морфемный словарь действует вместе с процедурами анализа. Этот подход эффективен и экономичен, т.к. хранение морфемного словаря не занимает много места, а хранить все изменяемые формы слова не нужно. Так как морфы являются основными составляющими слова, проиллюстрируем их полезность при определении произношения. При соединении морфов часто меняется их произношение. Например, при образовании множественного числа существительных "dog" и "cat" конечный /s/ будет звонким в первом случае и глухим во втором. Это пример морфофонемного правила, касающегося реализации морфемы множественного числа в различных окружениях. Становится очевидным, что для эффективного и легкого определения произношения нужно распознать составляющие морфемы слова и обозначить их границы. Еще один плюс морфемного анализа — обеспечение подходящей базы для использования правил преобразования буква-звук. Большинство таких правил рассматривают слово как неструктурированную последовательность букв, используя окно сканирования для нахождения согласных и гласных кластеров, которые преобразуются в фонетические значки. Буквы "t" и "h" в большинстве случаев выступают как единый согласный кластер, но в слове "hothouse" кластер /th/ разрывается границей двух разных морфем. Гласный кластер /ea/ представляет много трудностей для алгоритмов буква-звук, но в слове changeable он явно разрывается. В системе MITalk морфемный анализ всегда проводится перед правилами преобразования букв в звуки.Лежащие в основе слова морфы не всегда очевидны. Например, некоторые морфы множественного числа не всегда легко определить: mice, fish. Подобные формы заносятся в словарь. При помощи морфемного лексикона и соответствующего алгоритма анализа 95-98% слов анализируется удовлетворительно. В результате им приписывается фонетическая транскрипция и часть речи.

    Оценка синтетической речи

    С точки зрения понятности, разборчивости качество синтезированной речи достаточно хорошее. Был проведен тест, где одна группа испытуемых прослушивала синтезированную речь с письменным вариантом перед глазами, а другая — без такового. Выяснилось, что результаты прослушивания мало отличаются друг от друга. Тем не менее, синтезированной речи не хватает живости и естественности, поэтому воспринимать ее на протяжении длительного времени трудно. Исследования показали, что фрикативные и назальные звуки требуют дальнейшего улучшения качества.
    Оценка синтетической речи

    Параметрическое представление

    С целью дальнейшего уменьшения требуемой памяти для хранения и обеспечения необходимой гибкости было разработано несколько способов, которые абстрагируются от речевой волны как таковой, а представляют ее в виде набора параметров. Эти параметры отражают наиболее характерную информацию либо во временной, либо в частотной области. Например, речевая волна может быть сформирована сложением отдельных гармоник заданной высоты и заданными спектральными выступами на данной частоте. Альтернативный путь состоит в том, чтобы форму речевого тракта описать в терминах акустики и искусственным путем создать набор резонансов. Этот метод синтеза экономичнее волнового, т.к. требует значительно меньшего объема памяти, но при этом ему нужно больше вычислений, чтобы воспроизвести исходный речевой сигнал. Данный способ позволяет манипулировать теми параметрами, которые отвечают за качество речи (значение формант, ширина полос, частота основного тона, амплитуда сигнала). Это дает воз можность склеивать сигналы, так что переходы на границах совершенно не заметны. Изменения таких параметров как частота основного тона на протяжении всего сообщения дают возможность существенно изменять интонацию и временные характеристики сообщения. Наиболее популярными в настоящее время методами кодирования в устройствах, использующих параметрическое представление сигналов, являются метод, основанный на формантных резонансах, и метод линейного предсказания (LPC — linear predictive coding). Для синтеза используются единицы речи различной длины: параграфы, предложения, фразы, слова, слоги, полуслоги, дифоны. Чем меньше единица синтеза, тем меньшее их количество требуется для синтеза. При этом требуется больше вычислений, и возникают трудности коартикуляции на стыках. Преимущества этого метода: гибкость, небольшие затраты памяти для хранения исходного материала, сохранение индивидуальных характеристик диктора. Требуется соответствующая цифровая техника и знание моделей речеобразования, при этом лингвистическая структура языка не используется.

    Парсинг

    Каждая схема преобразования неограниченного текста в речь должна включать синтаксический анализ. Необходимо определить синтаксическую роль слова, т.к. она часто влияет на произношение и ударение. Кроме того синтаксический анализ важен для определения правильного тонального контура и временных характеристик. Просодические характеристики важны для синтеза речи, чтобы она звучала живо и естественно. К сожалению, полный синтаксический анализ на уровне сложного предложения (clause-level parsing) осуществить нельзя. Тем не менее, возможно провести синтаксический анализ на уровне фразы (phrase-level parsing), в результате которого определяется большая часть необходимой для синтеза речи структуры, хотя в некоторых ситуациях неизбежны ошибки из-за отсутствия анализа целого предложения. Встречается множество синтаксически двусмысленных предложений, таких, как "he saw the man in the park with a telescope", для которых фразовый анализ достаточен.
    В английском языке существует ряд синтагматических маркеров, по которым можно формально разграничить фразы: это вспомогательные глаголы, детерминативы в номинативных фразах. Система MITalk широко использует это и проводит высокоточный грамматический анализ (augmented-transition-network grammas). Фразовый анализ показал удовлетворительные результаты, хотя эффективный анализатор предложений несомненно улучшил бы работу системы. Пока анализаторы предложений сталкиваются со значительными трудностями, когда встречают неполное или синтаксически омонимичное предложение. По завершении деятельности блока синтаксического анализа система приписывает словам маркеры функциональных частей речи и отмечает синтаксические паузы как основу для дальнейшего уточнения произношения, временных харатеристик, частоты основного тона.

    Правила "буква-звук" и лексическое ударение

    В системе MITalk нормализованный вводный текст подвергается морфологическому анализу. Может быть, что целое слово есть в словаре морфов, как, например, слово "snow". С другой стороны, слово может быть проанализировано как последовательность соединенных морфов. В английском языке среднее число морфов в слове — примерно два. В случае, если целое слово не может быть ни найдено в словаре морфов, ни проанализировано как последовательность морфов, применяются правила преобразования "буква-звук". Важно подчеркнуть, что этот метод никогда не применяется, если морфемный анализ удался. Конвертация последовательности букв в последовательность звуков при помощи этих правил проходит в три этапа. Первый этап — отделение префиксов и суффиксов. Возможность отделения аффиксов не такая сильная, как в морфемном анализе, но действует удовлетворительно. Предполагается, что после отделения префиксов и суффиксов остается одна центральная часть слова, которая состоит из одного морфа, подвергаемого затем правилам преобразования.
    Второй этап состоит в преобразовании согласных в фонетические значки, начиная с наиболее длинного согласного кластера до тех пор, пока все отдельные согласные не будут преобразованы. Последний этап — оставшиеся гласные преобразуются при помощи контекстов. Гласные преобразуются последними, потому что это наиболее трудная задача, зависящая от контекста. Например, гласный кластер /ea/ имеет 14 разных произносительных контекстов и несколько произношений (reach, tear, steak, leather).
    В системе MITalk правила преобразования букв в звуки действуют в паре с широким набором правил расстановки лексического ударения. Еще 25 лет назад лингвистам не удавалось обнаружить никакой системы расстановки ударений в английских словах. В настоящее время разработан ряд правил, эффективно справляющихся с этой задачей. Ударения зависят от синтаксической роли слова, например, прилагательное "invalid" отличается от существительного. Таких слов немного, но учитывать их необходимо. Кроме того, на некоторые суффиксы автоматически падают ударения в словах, как, например, в "engineer". Но бывают более сложные случаи, которые разрешаются применением циклических правил. В системе MITalk разработаны несколько наборов таких правил, некоторые из которых включают в себя до 600 правил. Конечно, большинство из них употребляются довольно редко. Подразумевается, что все сильные и неправильные формы преобразуются на стадии морфологического анализа. Правила же "буква-звук" используются для пр еобразования новых и неправильно написанных слов. Например, слово "recieved" получает правильную транскрипцию, благодаря этим правилам преобразования.

    Просодическая рамка

    Первый шаг в создании выходной речевой волны — создание временного контура и частоты основного тона ( основные корреляты интонации ), на основе которых строится детальная артикуляция отдельных фонетических элементов. Распределение ударения, которое было вычислено на стадии анализа, во многом ответственно за контур временного распределения и тональный контур. Часто интенсивность принимают за коррелят ударения, тогда как главными ключами являются длительность и изменения в тональном контуре. Согласные мало меняются по длительности, в то время как гласные более пластичны и могут легко сжиматься или растягиваться. Существует также тенденция растягивать слова на границе основных абзацев предложения, и наоборот, сжимать интервалы на относительно невыделенных участках. Кроме того, на основе временной рамки задается частота основного тона (или тональный контур). В утвердительных предложениях обычно высота тона резко поднимается на первом ударном слоге, затем плавно снижается до п оследнего ударного слога, где она резко падает. Вопросительные и повелительные предложения имеют различные тональные контуры. Кроме целостного контура предложения существуют еще локальные ударения. Большее ударение получают слова, выражающие отрицание или сомнение ( например, слово might ), значение частоты основного тона на них возрастает; новая информация в предложении также больше выделяется ударением. С другой стороны, высота тона используется в семантических и эмоциональных целях, что не может быть выведено из письменного текста. Необходимо лишний раз подчеркнуть важность составления правильного просодического контура, т.к. неправильный просодический контур может привести к трудностям в восприятии.

    Разделяй и властвуй

    Рассмотрим теперь построение алгоритмов оптимизации структуры и параметров. Несмотря на их огромное разнообразие, можно выделить основную черту: оптимизируемый объект является "черным ящиком", который оптимизируется целиком. Для полученного на очередном шаге набора параметров достигнутый результат оценивается только по общей оценочной функции. Это приводит к тому, что малые улучшения в работе отдельных локальных подсистем не закрепляются на фоне ухудшения работы остальных. Можно назвать еще некоторые недостатки подобной реализации — сложности в подборе шага, коэффициента мутаций и т. д., но это уже решаемые мелочи.
    Незакрепление малых улучшений в подсистемах при последовательной адаптации приводит к одному результату — в сложных системах, состоящих из большого количества подсистем, скорость обучения катастрофически снижается.
    Здесь примером могли бы служить N колес с буквами А и В на ободе, где буквы А занимали бы k-ю долю окружности, а В — остальную ее часть. Все колеса приводят во вращение и дают им остановиться; остановка колеса на букве А считается "успехом". Сравним три способа сложения этих частных успехов в Большой Успех, который будем считать достигнутым только тогда, когда все колеса остановятся на букве А.
    Случай 1. Приводятся во вращение все N колес; если все они дадут букву А, регистрируется Успех и пробы заканчиваются; в других случаях колеса снова приводятся во вращение — и так далее, пока все А не появятся сразу. В этом случае потребуется в среднем (1/k)*N проб.
    Случай 2. Вращается 1-е колесо; если оно остановится на А, оно остается в этом положении; в противном случае его вращают снова. Когда оно, наконец, остановится на А, таким же образом вращают 2-е колесо и т. д. Так поступают до тех пор, пока все N колес не остановятся на секторе А. Здесь в среднем потребуется N/k проб.
    Случай 3. Приводятся во вращение все N колес; те, которые покажут А, остаются в этом положении, а те, которые покажут В, вращаются снова. При дальнейших появлениях А соответствующие колеса также остаются в покое. Среднее число проб равно среднему числу проб в самой длинной серии из N серий проб с одним колесом и может быть найдено из распределения длин таких серий; оно будет несколько больше 1/k.
    Случайный поиск служит полным аналогом 1-го случая. Многие из остальных алгоритмы занимают промежуточное положение между первым и вторым случаем (случайный поиск в подпространствах, генетический алгоритм и т. д.). Очевидно, что человек, как правило, решает свои проблемы независимо одной от другой, что соответствует третьему случаю.
    Таким образом, перспективные алгоритмы должны предусматривать возможность разделения целей на подцели, которые не зависят друг от друга.

    Синтез физических принципов действия по заданной физической операции

    Существуют элементарные структуры ФПД, которые основываются на одном ФТЭ. Для поиска (синтеза) таких ФПД определяют соответствие между физической операцией, которую требуется реализовать, и ФТЭ, с помощью которого можно осуществить такую реализацию.
    Если принять во внимание формализованное описание физической операции и ФТЭ, можно отметить следующее соответствие компонент:
    Синтез физических принципов действия по заданной физической операции, Синтез физических принципов действия по заданной физической операции,
    где А и С — входные и, соответственно, выходные потоки вещества, энтропии и т.д.
    Так, например, для физической операции АТ — "сила", СТ — "линейная деформация" будет найден ФТЭ: закон Гука (А — сила, напряжение; С — линейная деформация, В—упругое тело), на котором основаны пружинные весы.
    В технике также распространен другой тип элементарной структуры ФПД, основанный на многократном или суммарном использовании одного и того же ФТЭ. Например, в катушках индуктивности каждый виток проводника реализует преобразование электрического тока в электромагнитное поле. Аналогичную структуру ФПД имеют аккумуляторные батареи, выпрямители, конденсаторы, усилители и т. д.
    Однако большинство ФПД изделий имеют сложную структуру, в которой используется одновременно несколько различных ФТЭ. Синтез и работа таких ФПД основывается на следующем правиле совместимости ФТЭ.
    Два последовательно расположенных ФТЭ
    (Ai, Bi, Ci), (Ai+1, Вi+1, Ci+1)
    будем считать совместимыми, если результат воздействия Ci предыдущего ФТЭ эквивалентен входному воздействию Аi+1 последующего ФТЭ, т. е. если Ci и Аi+1 характеризуются одними и теми же физическими величинами и имеют совпадающие значения этих величин.
    Два совместимых ФТЭ могут быть объединены, при этом входное воздействие Ai, будет вызывать результат Ci+1, т. е. получается преобразователь
    Синтез физических принципов действия по заданной физической операции (11.1)

    В связи с этим дадим следующее определение ФПД.
    Физическим принципом действия ТО будем называть структуру совместимых и объединенных ФТЭ, обеспечивающих преобразование заданного начального входного воздействия А1 в заданный конечный результат (выходной эффект) Сn. Здесь имеется в виду, что число используемых ФТЭ не менее n.

    Уточним понятие совместимости ФТЭ. Для имеющегося фонда ФТЭ существует три вида совместимости:

  • качественная совместимость по совпадению наименований входов и выходов (пример совместимости: "электрический ток — электрический ток");
  • качественная совместимость по совпадению качественных характеристик входов и выходов (пример несовместимости: "электрический ток переменный — электрический ток постоянный");
  • количественная совместимость по совпадению значений физических величин (пример совместимости: "электрический ток постоянный I=10A, U=110В — электрический ток постоянный I = 5—20 A, U = 60—127 В").
  • Поиск допустимых ФПД. Опишем порядок работы с учебной системой автоматизированного синтеза ФПД. Работа по поиску допустимых ФПД состоит из четырех этапов.

    1-й этап. Подготовка технического задания. При подготовке технического задания составляют описание функции разрабатываемого ТО и его физической операции. Описание физической операции рекомендуется делать с учетом синонимов в наименованиях "выходов" и "входов", т.е. в итоге может получиться несколько вариантов операции. Если имеется словарь технических функций, то эта работа выполняется значительно быстрее и правильнее.

    После формулировки вариантов физической операции по компонентам АТ, СТ, с помощью словаря "входов" и "выходов" (табл. 11. 2) описывают совпадающие или близкие по содержанию входы и выходы, т. е. выявляют соответствия

    Синтез физических принципов действия по заданной физической операции.

    Наличие таких соответствий позволяет сформулировать одно или несколько технических заданий

    Синтез физических принципов действия по заданной физической операции (11.2)


    2-й этап. Синтез возможных ФПД. По техническому заданию (11.2) ЭВМ выбирает из фонда ФТЭ такие, у которых одновременно выполняются условия

    Синтез физических принципов действия по заданной физической операции

    Все эти ФТЭ представляют ФПД, использующие один ФТЭ.

    Далее из фонда ФТЭ выбираются такие, которые обеспечивают выполнение условия

    Синтез физических принципов действия по заданной физической операции (11.3)


    или

    Синтез физических принципов действия по заданной физической операции (11.4)


    Из множеств ФТЭ (11.3) и (11.4) выбирают такие пары ФТЭ, у которых выполняется условие пересечения

    Синтез физических принципов действия по заданной физической операции ,

    указывающее на то, что эти пары ФТЭ совместимы и образуют ФПД из двух ФТЭ по формуле (15)


    Синтез физических принципов действия по заданной физической операции (11.5)


    Для множеств ФТЭ, отобранных по условиям (11.3) и (11.4), при невыполнении условия (11.5) проверяется возможность образования цепочек из трех ФТЭ:

    Синтез физических принципов действия по заданной физической операции ,

    где i = 1,…., k, j = 1, …, m, t = 1, …, km..

    Таблица 11.2. Фрагмент словаря "входов" ("выходов")№ п/пНаименование "входа" ("выхода")Качественная характеристика "входа" ("выхода")Физическая величина, характеризующая "вход" ("выход")Наименование Обозначение
    1Электрическое поле Постоянное

    Переменное

    Однородное

    Неоднородное

    Высокочастотное

    Напряженность электрического поля.

    Разность потенциалов ЭДС

    Синтез физических принципов действия по заданной физической операции

    Синтез физических принципов действия по заданной физической операции

    2Магнитное поле Постоянное

    Переменное

    Однородное

    Неоднородное

    Магнитная индукция

    Магнитный поток

    В

    Ф

    3Электромагнитное поле Ультрафиолетовое

    Видимое

    Инфракрасное

    Рентгеновское

    Линейно поляризованное

    Эллиптически поляризованное

    Интенсивность

    Частота

    Длина волны

    Амплитуда

    S

    Синтез физических принципов действия по заданной физической операции

    Синтез физических принципов действия по заданной физической операции

    A

    4Акустическая волна Звуковая

    Ультразвуковая

    Частота

    Мощность излучения

    Интенсивность

    f

    P

    J

    5Сила Сила F
    6Температура Температура T
    Далее для тех же множеств проверяется возможность образования цепочек из четырех и из пяти ФТЭ.

    Встречным наращиванием цепочек совместимых ФТЭ от A1 до Сn можно получать новые варианты ФПД, включающие и большее число ФТЭ. Однако при числе ФТЭ, превышающем пять, резко возрастает вычислительная сложность такого метода из-за комбинаторного характера задачи и существенного роста числа анализируемых промежуточных вариантов. Кроме того, ФПД с числом ФТЭ более пяти с практической точки зрения обычно не относятся к наиболее рациональным.

    Изложенный алгоритм представляет собой один из возможных простых способов синтеза ФПД. Можно использовать и другие алгоритмы, ориентированные на предварительно организованную базу данных по ФТЭ.

    Суть этой организации состоит в определенном построении сетевых графов из всех совместимых ФТЭ.

    Система синтеза ФПД по введенному техническому заданию позволяет получать варианты ФПД.Кроме того, в ней в качестве дополнительных исходных данных могут быть использованы следующие ограничения:

    максимальное число ФТЭ в цепочке (например, n < 4);

    число получаемых вариантов ФПД (например, m < 20);

    запрещение (или предпочтительность) использования определенных входов А и выходов С;

    запрещение (иди предпочтительность) использования определенных объектов В;

    другие ограничения.

    3-й этап. Анализ совместимости ФТЭ в цепочках. Полученные на 2-м этапе цепочки возможных ФПД удовлетворяют только .качественной совместимости по совпадению наименований входов и выходов. Хотя среди полученных ФПД ЭВМ может отсекать варианты по условию совместимости качественных характеристик, а в промышленной системе — по количественной совместимости, иногда бывает целесообразно данную работу выполнять в полуавтоматическом режиме

    4-й этап. Разработка принципиальной схемы.

    Синтез фонетических сегментов

    Когда завершено создание просодической рамки, создаются параметры, соответствующие модели речевого тракта. Обычно таких параметров 25, которые изменяются с интервалом 5—10 мсек. В настоящее время используются около 100 контекстных правил описания траектории изменения параметров. Когда значения параметров вычислены, они должны быть перенесены на соответствующую модель речевого тракта (обычно это формантная модель или LPC-модель). Выходная дискретная модель создается обычно на частоте 10 Кгц.

    Синтез по правилам

    Описанные выше методы синтеза ориентированы на такие речевые единицы, как слова, предварительно введенные в устройство с голоса диктора. Данный принцип лежит в основе функционирования синтезаторов с ограниченным словарем. В синтезаторах с неограниченным словарем элементами речи являются фонемы или слоги, поэтому в них применяется метод синтеза по правилам, а не простая компоновка. Данный метод весьма перспективен, т.к. обеспечивает работу с любым необходимым словарем, однако качество речи получается значительно ниже, чем при использовании метода компоновки.
    При синтезе речи по правилам также используются волновой и параметрический методы кодирования, но уже на уровне слогов.
    Метод параметрического представления требует компромисса между качеством речи и возможностью изменять параметры. Исследователи обнаружили, что для синтеза речи высокого качества необходимо иметь несколько различных произношений единицы синтеза (например, слога), что ведет к увеличению словаря исходных единиц без каких бы то ни было сведений о контекстной ситуации, оправдывающей тот или иной выбор. По этой причине процесс синтеза получает еще более абстрактный характер и переходит от параметрического представления к разработке набора правил, по которым вычисляются необходимые параметры на основе вводного фонетического описания.Это вводное представление само по себе содержит мало информации. Это обычно имена фонетических сегментов ( напр, гласные и согласные) со знаками ударения, обозначениями тона и временных характеристик. Таким образом, метод синтеза по правилам использует малоинформационное описание на входе ( менее 100 бит/сек). Этот метод дает полную свободу моделирования параметров, но необходимо подч еркнуть, что правила моделирования несовеншенны. Синтезированная речь хуже натуральной, тем не менее, она удовлетворяет тестам по разборчивости и понятности. На уровне предложения и параграфа правила предоставляют необходимую степень свободы для создания плавного речевого потока.

    Синтез речи

    Существуют различные методы синтеза речи. Выбор того или иного метода определяется различными ограничениями. Рассмотрим те 4 вида ограничений, которые влияют на выбор метода синтеза.

    Синтез

    Важно осознать, что в системе MITalk не используются готовые речевые волны даже в параметрическом представлении. Система не хранит параметрические представления множества морфов или слов. Вместо этого были разработаны правила контроля параметров, так что можно реализовать любую желаемую речевую волну на выходе.

    Система преобразования текста в речь MITalk

    На примере этой системы проиллюстрируем сильные и слабые стороны коммерческих версий. Разработка системы началась в конце 60-х гг. Изначально предполагалось разработать читающую машину для слепых, но система MITalk может применяться в любых ситуациях, где необходимо преобразовать текст в речь. Система имеет блок морфологического анализа, правила преобразования буква-звук, правила лексического ударения, просодический и фонематический синтез.

    Слабосвязанный мир

    Автор данного конспекта лекций является сторонником мнения, что мир, в котором мы живем, является миром со слабыми причинно-следственными связями. Что имеется в виду?
    Представим себе, что Вы пишете статью, а за окном упал осенний кленовый лист, которого Вы не видите. Если такое событие повлияет на текст, который вы пишете, то можно сказать, что наш мир настолько насыщен причинно-следственными связями, что любое событие окажет большое или малое влияние на события, произошедшие после него. Такой мир будем называть сильносвязанным.
    Однако весь наш опыт доказывает обратное. К примеру, на самолет не успел один из пассажиров. На подавляющее большинство остальных пассажиров это не окажет никакого влияния. Дело в том, что обычно реальные системы имеют так называемые "ступенчатые функции", которые при небольших вариациях возмущающих воздействий не дают им распространяться к другим системам. Более того, именно благодаря слабой связанности мира мы можем выделить в нем отдельные системы, а в них подсистемы. В противном случае весь мир представлял бы собой одну настолько сложную систему, что самый великий гений не мог бы разобраться и жить в этом безумном мире, не говоря уж об обычной амебе.
    Биологическим системам управления приходится адаптироваться к окружающей среде, принимая форму зеркального отражения ее структуры, поэтому в нашем мозгу всегда можно выделить подсистемы, которые никоим образом не должны влиять друг на друга в обученном состоянии. К примеру, рассмотрим человека, управляющего автомобилем с ручной коробкой передач. В тот момент, когда его правая рука переключает очередную передачу, левая должна продолжать удерживать руль в положении "прямо" независимо от того, что делает правая. Если данные подсистемы будут объединены, то при каждом переключении передачи автомобиль начнет вилять, что и случается у новичков. В процессе обучения вождению автомобиля происходит ослабление внутренних связей между нейронными ансамблями, управляющими процессами переключения передач и вращения руля, в результате чего устраняется эффект "виляния". Можно привести и более простой пример: человек с нормальной координацией движений продолжает двигаться прямо вне зависимости от того, ку да повернута его голова.
    Таких примеров можно привести множество.

    Структура языка

    Ряд возможных звуковых сочетаний опредляется природой той или иной языковой структуры. Было обнаружено, что еденицы и структуры, используемые лингвистами для описания и объяснения языка, могут также использоваться для характеристики и построения речевой волны. Таким образом, при построении выходной речевой волны используются основные фонологические законы, правила ударения, морфологические и синтаксические структуры, фонотактические ограничения.

    Технология

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

    Волновой метод кодирования

    Самый легкий путь — просто записать материал на пленку и по необходимости проигрывать. Этот способ обеспечивает высокое качество синтезируемой речи, т.к. позволяет воспроизводить форму естественного речевого сигнала. Однако этот путь синтеза не позволяет реализовать построение новой фразы, т.к. не предусматривает обращение к различным ячейкам памяти и вызов из памяти нужных слов. В зависимости от используемой технологии этот способ может давать задержки в доступе и иметь ограничения, связанные с возможностями записи. Никаких знаний об устройстве речевого тракта и структуре языка не требуется. Единственное серьезное ограничение в данном случае имеет объем памяти. Существуют способы кодирования речевого сигнала в цифровой форме, позволяющие в несколько раз уплотнять информацию: простая модуляция данных, импульсно-кодовая модуляция, адаптивная дельтовая модуляция, адаптивное предиктивное кодирование. Данные способы могут уменьшить скорость передачи данных от 50кби т/сек (нормальный вариант) до 10кбит/сек, в то время как качество речи сохраняется. Естественно, сложность операций кодирования и декодирования увеличивается со снижением числа бит в секунду. Такие системы хороши, когда словарь сообщений небольшой и фиксированный. В случае же, когда требуется соединить сообщения в более длинное, сгенерировть высококачественную речь трудно, т.к. значения параметров речевой волны нельзя изменить, а они могут не подойти в новом контексте. Во всех системах синтеза речи устанавливается некоторый компромисс между качеством речи и гибкостью системы. Увеличение гибкости неизбежно ведет к усложнению вычислений.

    Возможности синтезированной речи зависят от

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

    Заключительные замечания

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

    

        Нейросети: Нейролингвистика - Логика