close

Вход

Забыли?

вход по аккаунту

?

Balonin

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
Н. А. Балонин, Н. В. Соловьёв, Т. Н. Соловьёва
ВВЕДЕНИЕ
В ИНТЕЛЛЕКТУАЛЬНЫЕ
СИСТЕМЫ
Учебное пособие
Санкт-Петербург
2014
УДК 004.8(075)
ББК 32.813я73
Б20
Рецензенты:
доктор технических наук, профессор Е. А. Крук;
доктор технических наук, профессор А. А. Шалыто
Утверждено
редакционно-издательским советом университета
в качестве учебного пособия
Балонин, Н. А.
Б20 Введение в интеллектуальные системы: учеб. пособие / Н. А. Балонин, Н. В. Соловьёв, Т. Н. Соловьёва. – СПб.: ГУАП, 2014. – 159 с.
ISBN 978-5-8088-0980-2
В учебном пособии рассматриваются основные вопросы, связанные с различными аспектами искусственного интеллекта. При
подготовке пособия авторы в основном использовали изданный ещё
в 2003 году в переводе на русский язык учебник Д. Ф. Люгера «Искусственный интеллект: стратегии и методы решения сложных проблем», добавив материалы из других источников, приведенных
в списке литературы.
Данное пособие предназначено для студентов, обучающихся по
направлению 09.04.01 «Информатика и вычислительная техника»,
а также для студентов родственных направлений и специальностей.
УДК 004.8(075)
ББК 32.813я73
ISBN 978-5-8088-0980-2
©
©
Балонин Н. А., Соловьёв Н. В.,
Соловьёва Т. Н., 2014
Санкт-Петербургский государственный
университет аэрокосмического
приборостроения, 2014
ВВЕДЕНИЕ
Стремительное по историческим меркам развитие вычислительной техники началось во второй половине XX века с громоздких
и медленных электронно-вычислительных машин, помогавших
человеку выполнять сложные и трудоемкие, многократно повторяющиеся вычисления. На сегодняшний день трудно назвать область деятельности, которую в той или иной степени не коснулась
бы компьютеризация. Резкое увеличение скорости и объема памяти компьютеров, разнообразие внешних устройств, возможность
представить информацию любого вида в цифровой форме привело
к тому, что в последние десятилетия создание систем, обладающих
искусственным интеллектом, из абстрактно-философской проблемы перешло в практическую плоскость и вызвало появление нового научного направления – искусственного интеллекта.
Прежде чем начать изучение интеллектуальных систем, необходимо попытаться определить сам термин «искусственный интеллект»
(ИИ), для того чтобы выделить круг проблем и областей приложения, рассматриваемых этой наукой. Можно сказать, что искусственный интеллект – это область компьютерной науки, занимающаяся
автоматизацией разумного или интеллектуального поведения. Тогда интеллектуальные системы – это компьютерные аппаратно-программные системы, способные решать интеллектуальные задачи.
Основной недостаток приведенных определений заключается в
использовании таких понятий, как «интеллектуальные задачи» и
«разумное поведение», которые, в свою очередь, тоже требуют определения. Причем именно определение термина «разумное поведение»
и позволяет очертить круг задач, рассматриваемых в данной науке.
Таким образом, проблема определения искусственного интеллекта
сводится к определению интеллекта или разумного поведения вообще, что само по себе является скорее философской проблемой.
Необходимо учесть, что интеллект представляет собой исключительно сложное явление, которое невозможно полноценно описать с помощью одной теории. Ученые, исследующие интеллект,
вынуждены строить иерархию подходов, описывающих разные
уровни интеллекта, от нейронных сетей до систем понимания естественного языка, причем все эти подходы объединяет то, что они
представляют некие процессы обработки информации. Таким образом, любые интеллектуальные системы обязательно занимаются
обработкой информации, но далеко не каждую систему, обрабатывающую информацию, можно назвать интеллектуальной.
3
Как известно, в такой строгой науке, как математика, определение любого понятия производится с использованием других, более
общих понятий. Учитывая, что понятие «разум» или «интеллект»
уже является достаточно общим, его определение через какие-то
другие понятия представляется трудновыполнимой задачей.
С практической точки зрения вполне допустимо вместо общего определения интеллекта привести некоторый набор признаков,
наличие которых у некоторого объекта позволяет говорить о его
способности к разумной деятельности. Исторически считалось, что
только человек обладает высокоразвитым разумом, способным к
абстрактному мышлению, выполнению сложных математических
операций и построению логических цепочек, а также к интуиции
и творчеству. Предполагалось, что наличие этих способностей и
определяет наличие интеллекта. Однако, хотя на сегодняшний
день большинство из этих действий вполне удовлетворительно выполняют компьютеры, нельзя сказать, что такие компьютеры уже
обладают искусственным интеллектом.
Еще в 1950 году британский математик Аллан Тьюринг предложил определять наличие интеллекта с помощью теста, в котором
участвуют компьютер с «интеллектуальным» программным обеспечением, человек-имитатор и человек-эксперт. Все они находятся в разных помещениях и связываются друг с другом посредством
терминалов. Эксперт на основании диалога на произвольную тему
должен решить: с кем он беседует – с человеком или компьютером.
Тьюринг утверждал, что если эксперт не сможет отличить компьютер от человека, то этот компьютер можно считать разумным. Довольно быстро специалистами был написан ряд программ, способных вести диалог на конкретную тему: о погоде, о семье и т. п., т. е.
в какой-то мере удовлетворяющих тесту Тьюринга.
Этот тест имеет ряд принципиальных особенностей:
− дает представление об интеллекте как о реакции на некоторый
набор вопросов или, в более широком плане, воздействий;
− исключает рассмотрение природы интеллекта, т. е. необходимость наличия каких-либо конкретных структур, внутренних процессов и самосознания;
− препятствует предвзятости эксперта в пользу человека или компьютера, фокусируя внимание на содержании вопросов и ответов.
Следует отметить, что похожая методика тестирования используется при проверке современных экспертных систем.
Основное возражение против принципиальной возможности
построения интеллектуальной программы сводится к тому, что
4
компьютеры могут выполнять только заранее заданные действия,
а создать набор правил поведения в любых ситуациях принципиально невозможно. Действительно, гибкость, позволяющая биологическим объектам приемлемым образом реагировать на практически бесконечное разнообразие ситуаций, является отличительной
чертой разумного поведения. Однако современные программы в
области ИИ обладают модульной структурой, причем модули активизируются и изменяются в зависимости от конкретной ситуации.
Например, робот, движущийся к заданной цели по пересеченной
местности, выбирает траекторию движения в зависимости от расположения препятствий согласно информации, полученной от различных датчиков.
В последнее время ученые пришли к выводу, что интеллект –
это, в первую очередь, способ обработки информации. В таком случае, не только человек, но и другие живые существа вполне способны проявлять интеллектуальное поведение. Нобелевский лауреат
Герберт Саймон говорил, что изменчивость поведения, присущая
живым существам, определяется скорее сложностью окружающей
их среды, а не сложностью их внутренних «программ». В самом
деле, стремящийся как можно быстрее вернуться в колонию муравей, как система, проявляющая разумное поведение по достижению поставленной цели, очень прост. Наблюдаемая сложность его
движения в большей степени отражает сложность поверхности, по
которой муравей вынужден ползти. Отсюда можно сделать важный
вывод о том, что для развития интеллекта необходимо взаимодействие с достаточно богатой окружающей средой.
Видимо, более подходящим с практической точки зрения определением интеллектуальной системы будет следующее: интеллектуальная система – это система, способная совершать целенаправленные действия в изменчивой окружающей среде.
С практической точки зрения основные задачи интеллектуальных систем состоят в том, что бы сделать процессы обработки
информации с использованием вычислительной техники более
эффективными, а также помочь ученым в понимании принципов,
лежащих в основе интеллектуальной деятельности объектов как
живой, так и неживой природы.
Перед разработчиками интеллектуальных систем, как правило,
стоят три фундаментальные проблемы:
− распознавание образов, т. е. получение знаний об окружающем мире и собственном состоянии на основе информации, поступающей от датчиков;
5
− представление знаний, т. е. разработка эффективных способов
описания свойств и отношений между объектами в некоторой предметной области;
− поиск, т. е. нахождение в пространстве состояний решаемой задачи оптимального в некотором смысле пути к поставленной цели.
В той или иной степени эти задачи приходится решать в любой области, из тех которые принято относить к искусственному интеллекту.
Более того, именно возникновение таких проблем при разработке некоторой системы и позволят отнести ее к разряду интеллектуальных.
Одними из первых интеллектуальных систем можно считать
программы автоматического рассуждения и доказательства теорем. Привлекательность таких систем заключается в одновременной строгости и общности логических построений. Самые разнообразные задачи можно попытаться решить, представив их исходную информацию в виде набора логических аксиом и правил вывода, а цель – в виде теорем, которые нужно доказать. К сожалению,
быстро выяснилось, что действительно сложные, имеющие практическое значение логические системы, управляемые чисто формальными синтаксическими методами поиска, в процессе работы
генерируют огромное количество доказуемых теорем, в подавляющем большинстве не относящихся к делу.
Современные программы автоматических рассуждений работают в интерактивном режиме, предоставляя человеку в процессе
работы разбивать сложную задачу на ряд более простых подзадач и
формулировать эвристические правила, существенно ограничивающие область поиска решения конкретной задачи.
К ранним интеллектуальным системам относятся и программы ведения логических игр, например шашки, шахматы, крестики-нолики, игра в пятнадцать. С одной стороны, эти игры, несомненно, являются интеллектуальными, с другой – все они имеют
ярко выраженный структурированный характер, так как ведутся
с использованием ясных правил, на ограниченном пространстве,
в пошаговом режиме и с полной информацией о сложившейся позиции на каждом шаге. Такие игры, как шашки и шахматы, могут
порождать практически бесконечные пространства состояний, для
поиска в которых требуются мощные эвристические методы. Их
разработка остается серьезной проблемой и на сегодняшний день,
хотя, как известно, шахматные компьютерные программы успешно конкурируют с чемпионом мира.
Отдельно следует отметить более сложные с точки зрения ИИ
игры, имеющие вероятностный характер, например различные
6
карточные игры, нарды, а также мультиагентные системы, моделирующие игры в реальном времени, например компьютерный
футбол, по которому регулярно проводятся международные соревнования как в виртуальном, так и в реальном пространстве.
Экспертные системы представляют собой одно из используемых
на практике достижений ИИ. Стратегия экспертных систем основана на знаниях человека-эксперта, представленных в форме, которая позволяет компьютеру применить их при решении похожих
проблем в специализированной предметной области. Основными
трудностями при разработке экспертных систем являются: проблема адекватной передачи знаний от эксперта к системе, недостаток
гибкости при выборе стратегии подхода к проблеме, трудности всестороннего тестирования и ограниченность обучения на опыте.
Принципиальным отличием экспертных систем от человека является тот факт, что с увеличение объема имеющейся информации
человек, как правило, быстрее находит решение, а скорость работы
экспертной системы в аналогичной ситуации падает. Последний
факт заставляет усомниться в разумности таких систем.
Еще одно важное направление ИИ – понимание естественного
языка, так как способность применять и понимать естественный
язык является фундаментальным аспектом человеческого интеллекта. Хотя в настоящее время компьютерные программы достигли
заметных успехов в понимании и переводе простых предложений на
ограниченных контекстах, но разработка системы, использующей
языки с гибкостью и общностью, характерной для человеческой
речи, все еще остается за пределами современных методологий.
Дело в том, что понимание естественного языка включает в себя
гораздо больше, чем просто синтаксический разбор предложений и
поиск соответствующих значений в словаре, т. е. фактически подстрочный перевод. Собственно понимание базируется на обширном
знании о предмете беседы и идиоматических выражениях, используемых в данной области, что позволяет понимать недомолвки и
многозначные выражения, характерные для естественной речи.
В последнее десятилетие заметных успехов удалось добиться в таком разделе ИИ, как робототехника и планирование. Исследования
в этой области начались с попыток создать роботов, способных достигать поставленной цели в изменяющейся окружающей среде. Планирование предполагает, что робот, умеющий выполнять ряд элементарных действий и оснащенный датчиками о внешней среде, должен
найти такую последовательность этих действий, которая приведет к
достижению поставленной перед ним достаточно общей цели.
7
Помимо проблем, связанных с анализом поступающей от различных датчиков информации об изменениях во внешней среде,
существенную сложность представляют разработка методов адекватного описания внешней среды и оптимальное разбиение общей
сложной задачи на более простые частные подзадачи. На сегодняшний день исследования в области планирования вышли за пределы
робототехники и включают в себя координацию любых сложных
систем задач и целей.
Моделирование человеческого сознания средствами ИИ является мощным средством познания для физиологов, психологов, лингвистов, социологов и философов, изучающих как непосредственно
структуру и механизмы работы мозга, так и весь спектр проблем
мышления.
8
1. ИСЧИСЛЕНИЕ ВЫСКАЗЫВАНИЙ И ПРЕДИКАТОВ
1.1. Гипотеза о физической символьной системе
Ведущим принципом ранней методологии искусственного интеллекта является сформулированная Ньюэллом и Саймоном в 1976 году
гипотеза о физической символьной системе, которая гласит:
− физически ограниченная система ведет себя соответственно
своим целям, приспосабливаясь к требованиям окружающей среды, проявляя при этом разумное в широком смысле поведение;
− физическая система проявляет разумное поведение тогда и
только тогда, когда она является физической символьной системой;
− достаточность означает, что разумность может быть достигнута каждой правильно организованной физической символьной системой;
− необходимость означает, что каждый объект, проявляющий
разумность, должен являться физической символьной системой,
т. е. разумное поведение объекта достигается путем физической реализации операций над символьными структурами.
Гипотеза о физической символьной системе привела к использованию символов в качестве средства для описания окружающего
мира, разработке механизмов перебора для нахождения решения
поставленной задачи и независимости системы ИИ от средств реализации. Возможность формализовать символьные модели в виде языка представления принципиальна для моделирования интеллекта
как выполняемой компьютерной программы. Математика формальных систем позволяет оценить их полноту, непротиворечивость,
сложность, а также организовать базу знаний об окружающем мире.
На основании гипотезы о физической символьной системе можно сделать вывод, что интеллектуальная деятельность как человека, так и машины осуществляется с использованием: символьных
шаблонов, предназначенных для описания области определения
задачи; операций над этими шаблонами, позволяющими генерировать возможные решения, и поиска наилучшего решения из числа
возможных. Таким образом, уровень интеллекта в значительной
мере определяется структурой системы символов, представляющих знания о некоторой предметной области.
Очевидно, схема представления знаний должна адекватно выражать всю необходимую информацию, поддерживать эффективное
выполнение конечного программного кода и обеспечивать естественный способ выражения необходимых знаний. Вообще говоря,
9
задачи ИИ связаны скорее с качественными, а не с количественными проблемами, с логической аргументацией, а не с вычислениями, с организацией больших объемов знаний, а не с реализацией
отдельного алгоритма.
Как следствие, язык представления знаний в ИИ должен обрабатывать знания, выраженные в качественной форме, получать
новые знания из набора фактов и правил, отображать общие принципы и конкретные ситуации. Такими свойствами в значительной
степени обладает язык исчисления предикатов, основное преимущество которого заключается в четко сформулированной формальной семантике, обоснованности и полноте правил вывода.
1.2. Исчисление высказываний
Исчисление высказываний, как и основанное на нем исчисление
предикатов, являются языками, состоящими из символов и предложений, обладающими определенной семантикой (значением) и
синтаксисом, используя которые можно представить свойства и отношения в окружающем мире.
Символы исчисления высказываний – это символы высказываний (P, Q, R, S, …), значения истинности (true, false), логические
связки (v, ^, ¬, ≡,→) и скобки, которые используются для группировки символов в подвыражения и управления порядком их оценки и присвоения значений.
Предложения в исчислении высказываний формируются из
символов по следующим правилам:
− каждый символ и значение истинности есть предложение;
− отрицание (¬) предложения есть предложение;
− конъюнкция (v) или логическое И двух предложений есть
предложение;
− дизъюнкция (^) или логическое ИЛИ двух предложений есть
предложение;
− эквивалентность (≡) двух предложений есть предложение;
− импликация (→) двух предложений есть предложение.
Следует отметить, что в импликации P→Q, единственной несимметричной связке, элементы называются предпосылкой (P) и
заключением (Q).
Предложение является правильно построенной формулой
(ППФ) исчисления высказываний тогда и только тогда, когда оно
состоит из некоторой последовательности допустимых символов со10
гласно установленным правилам, например ((Р^Q)→R)≡¬Pv¬QvR –
правильно построенное предложение.
Символы высказываний составляют истинные или ложные утверждения относительно некоторого мира, например P может означать «идет дождь», а Q – «земля мокрая».
Интерпретация предложения или семантика исчисления высказывания – это утверждение относительно правдивости предложения в некотором мире. Например, утверждение «если идет дождь,
то земля мокрая» можно представить в виде импликации P→Q.
Формально интерпретация набора высказываний – это присвоение значения истинности (T или F) каждому высказыванию, т. е.
отображение предложения на множество {T,F}. Символы T и F используются для того, чтобы отличить результат интерпретации от
символов true и false, которые могут использоваться в предложении.
Значение истинности предложений определяется таблицами истинности, которые содержат все возможные варианты значения истинности для элементарных суждений или атомарных формул, составленных из символов высказываний или элементов. В табл. 1.1
приведены значения истинности для логических связок.
Два выражения в исчислении высказываний эквивалентны,
если они имеют одни и те же значения при всех возможных значениях элементов, составляющих эти выражения. Эта эквивалентность может быть доказана сопоставлением таблиц истинности для
каждого выражения.
Для приведения высказываний к необходимому виду, например
к дизъюнкции конъюнкций, используются известные из булевой
алгебры законы отрицания-отрицания, Моргана, коммутативности, ассоциативности и дистрибутивности для конъюнкций и дизъюнкций, а также отношения эквивалентности для импликаций:
(PvQ)≡(¬P→Q), P→Q≡(¬Q→¬P).
Таблица 1.1
Значения истинности
P
Q
P^Q
PvQ
P≡Q
P→Q
T
T
T
T
T
T
T
F
F
T
F
F
F
T
F
T
F
T
F
F
F
F
T
T
11
1.3. Исчисление предикатов
В исчислении высказываний каждый элементарный символ
обозначает высказывание некоторой сложности, причем не существует способа получить доступ к компонентам этого суждения.
Кроме того, в высказываниях не используются переменные, т. е.
элементарные символы являются константами.
Исчисление предикатов предоставляет такие возможности. Например, вместо высказывания P – «всю неделю шел дождь» в исчислении предикатов можно создать предикат погода(X,Y), описывающий отношение между днем недели и погодой, где X – множество
дней недели, Y – множество вариантов погоды. Тогда можно заявить,
что для всех значений X и Y≡«дождь» утверждение погода(X,Y) есть
истина, что и будет эквивалентно высказыванию P. Посредством
правил вывода и с учетом синтаксиса предикатов можно изменять
выражения исчисления предикатов, обращаясь непосредственно к
их компонентам и выводя новые предложения. Таким образом, исчисление предикатов по сравнению с исчислением высказываний
увеличивает гибкость описания окружающего мира.
Алфавит исчисления предикатов состоит из следующих знаков:
букв (русских или английских) как строчных, так и прописных;
цифр и знака подчеркивания. Круглые скобки используются для
правильного построения выражений.
Символы начинаются с буквы, за которой следует последовательность знаков, например, День_недели, погода_вчера, plus.
Символы могут представлять константы, переменные, функции и
предикаты.
Константы соответствуют некоторым объектам или их свойствам из описываемого мира и должны начинаться со строчной
буквы или состоять только из цифр.
Переменные обозначают общие классы объектов или свойств и
должны начинаться с прописной буквы. Переменная должна быть
определена на некотором множество констант, имеющих общее
свойство, например переменная День_недели определена на множестве {пн, вт, ср, чт, пт, сб, вс}, т. е. может принимать любое из
этих значений. Теоретически область определения переменной может быть бесконечной.
Функция обозначает отражение одного или нескольких элементов множества, называемого областью определения, в однозначно определяемый элемент другого множества, называемый
областью значений функции. Функция состоит из символа, начи12
нающегося со строчной буквы, и заключенного в круглые скобки
списка аргументов. Число аргументов определяет арность функции, например, функция погода(День_недели) имеет арность 1, а
функция plus(7,минус_2) – арность 2. Замена функции ее значением называется оцениванием функции. Тогда значение функции
plus(7,минус_2) – целое число 5. Значение функции погода(День_
недели), можно определить, только заменив переменную День_недели константой из области ее определения. Например, если в понедельник шел дождь, то это значение и будет результатом оценивания функции погода(День_недели) для День_недели≡пн.
Предикаты определяют истинность отношения между несколькими объектами в мире, причем количество связанных таким образом объектов определяет арность предиката. Предикаты подобно
функциям состоят из предикатного символа, начинающегося со
строчной буквы, и заключенного в круглые скобки списка термов.
Термом исчисления предикатов может быть константа, переменная, или функция. Минимальная единица языка исчисления предикатов – это атомарное предложение или просто атом, представляющее собой предикат некоторой арности, например друг(иван,петр)
или друг(отец(вася),отец(маша)), причем в последнем случае аргументы предиката являются функциями. Если отец(вася)≡иван,
а отец(маша)≡петр, то после оценки функциональных выражений
приведенные в примере предикаты будут эквивалентны и означать
истинность факта дружбы двух людей – Ивана и Петра.
Из атомарных предложений можно формировать предложения
или выражения, также являющиеся предикатами, используя те же
логические связки, что и в исчислении высказываний. Составленное таким образом множество термов и предикатов представляет
собой базу знаний, описывающую объекты и их отношения в области определения некоторого мира, текущее состояние которого вычисляется путем интерпретации предикатов.
Интерпретация предикатов на некоторой области определения
D – это связывание логических объектов из D с каждым термом в
выражении исчисления предикатов согласно следующим правилам:
− каждой константе ставится в соответствие элемент из D;
− каждой переменной ставится в соответствие множество элементов из D, являющееся ее областью определения;
− каждая функция f арности n задает отображение из Dn в D;
− каждый предикат p арности m задает отображение из Dm в {T,F}.
При таком определении интерпретации для получения значения предложения, нужно присвоить ему значение истинности на
13
данной интерпретации, в результате чего предложение будет отображено в {T,F}.
Используемые в предложениях переменные относятся к некоторым объектам из своей области определения. Кванторы переменных
ограничивают значения предложения, содержащего переменную.
Квантор существования ∃ указывает, что предложение истинно,
хотя бы для одного значения из области определения переменной.
Квантор всеобщности ∀ указывает, что предложение истинно для
всех значений из области определения переменной. Например, высказывания: «Все любят мороженное» и «У Ивана есть друг» можно представить соответственно как: ∀X любить(X,мороженное) и
∃X друг(иван,Х), где X – множество людей.
Для указания области действия квантора используются круглые скобки, например ∀X(p(X)∨q(Y)→r(X)), указывает, что переменная Х связана квантором всеобщности в предложениях p(X) и
r(X). В исчислении предикатов все выражения должны быть связаны кванторами.
Следует отметить, что квантор всеобщности усложняет вычисление значения истинности предложения, так как необходимо проверить все возможные значения переменной. Если область определения переменной, связанной квантором всеобщности, бесконечна,
то полная проверка истинности путем последовательной подстановки в выражение значений переменной в принципе невозможна,
из-за чего проблему исчисления предикатов, строго говоря, считают в общем случае неразрешимой.
Проверка истинности выражений, содержащих связанные квантором существования переменные с бесконечной областью определения, может вызвать не меньшие сложности. Например, если выражение ложно при всех значениях переменной, то алгоритм проверки никогда не завершится.
На практике проверка истинности предложения, область определения переменной в котором хоть и ограничена, но достаточно
велика, тоже вызывает значительные трудности. Например, проверить истинность предиката ∃X друг(иван,Х), где X – множество
людей, живущих на Земле, практически невозможно.
В качестве примера базы знаний о некоторой предметной области,
основанной на исчислении предикатов, рассмотрим описание семейных отношений согласно библейской генеалогии. Отношения родителей и детей можно описать набором предикатов: мать(ева,авель);
мать(ева,каин); отец(адам,авель); отец(адам,каин), где имена являются константами. Для описания в общем виде родительских и
14
братских отношений можно использовать импликацию атомарных
предложений с участием переменных:
∀X∀Y(отец(X,Y)∨мать(X,Y)→родитель(X,Y));
∀X∀Y∀Z(родитель(X,Y)∧родитель(X,Z)→братья(Y,Z)),
где X={адам, ева}, Y, Z={авель, каин}.
Интерпретация путем подстановки соответствующих констант позволяет вывести новое правильное заключение, например
братья(авель,каин).
Интерпретация должна обеспечивать значение истинности для
всех выражений в базе знаний, а сами выражения должны достаточно детально описывать некоторую предметную область, предоставляя возможность логически выводить новые корректные выражения из набора первоначальных выражений по определенным
правилам. Именно эта возможность является достоинством исчисления предикатов.
Выражение Х логически следует из набора выражений S, если
каждая интерпретация, удовлетворяющая S, удовлетворяет и Х, а
правила вывода позволяют определить, когда новое выражение логически следует из имеющегося набора выражений. Выражение Х выполнимо, если существует интерпретация, при которой Х≡Т, в противном случае Х невыполнимо. Если выражение имеет значение Т
для всех возможных интерпретаций, то оно называется адекватным.
Правило вывода обосновано, если каждое выражение, полученное в соответствии с этим правилом из множества выражений, логически следует из этого множества. Например, правило отделения
или modus ponens и универсальное инстанцирование – обоснованные правила вывода.
Правило отделения гласит – если предложения P и P→Q истинны в некоторой интерпретации, то Q в этой интерпретации тоже
истинно. Например, если P означает «идет дождь», а Q – «земля
мокрая», то утверждение «если идет дождь, то земля мокрая» есть
импликация P→Q. При условии, что Р≡Т – сейчас идет дождь, получаем набор истинных предложений: P→Q, Р. Применив к ним
правило отделения, получаем, что Q≡T, т. е. можно добавить в набор новый факт – «сейчас земля мокрая».
Правило универсального инстанцирования гласит, что если в
истинном предложении любую переменную, стоящую под квантором всеобщности, заменить соответствующим термом из области
ее определения, то результирующее предложение останется истинным. Например, высказывание «все люди смертны» можно представить в исчислении предикатов как ∀X(человек(Х)→смертный(Х)),
15
а утверждение «Сократ – человек» как человек(сократ). Переменная Х в высказывании стоит под знаком квантора всеобщности, следовательно, согласно правилу универсального инстанцирования, ее можно заменить на любое значение из области определения и, применив правило отделения, получить утверждение
смертный(сократ), т. е. «Сократ – смертен».
Следует отметить, что рассуждения, использующие логику исчисления предикатов, основываются на следующих предположениях:
− предложения в базе знаний адекватно и полно описывают
предметную область, т. е. содержат всю необходимую информацию;
− предложения в базе знаний не противоречат друг другу.
Создание опирающихся на исчисление предикатов баз знаний
для реального мира сталкивается с существенными трудностями,
так в экспертных системах предпосылка в импликации часто является целью, а заключение – наблюдаемым состоянием мира. Например, в системе диагностики автомобиля может существовать
утверждение «если двигатель не вращается, и фары не горят, то
проблема в аккумуляторе или проводке». Оно напоминает обычное
предикатное выражение, используемое в правиле отделения, но это
не так. Невозможность завести двигатель и зажечь фары не обязательно означают неисправность аккумулятора или проводки. Это
только наиболее вероятная причина наблюдаемого состояния автомобиля. А вот обратное утверждение – истинно, но пользы от него,
с точки зрения экспертной системы, практически нет.
Данный случай является примером абдуктивного рассуждения,
когда из P→Q и Q выводится Р. Абдукция является необоснованным правилом вывода, означающим, что выведенное предложение
не обязательно истинно для каждой интерпретации. Однако это
правило широко применяется во многих экспертных системах, так
как хотя именно неисправности или болезни вызывают, т. е. имплицируют, симптомы, а не наоборот; но диагноз ставится от симптомов к причинам, их вызвавшим.
В экспертных системах, использующих исчисление предикатов,
для измерения степени доверия к заключению часто вводится коэффициент уверенности, определяющий вероятность ошибки для
абдуктивного рассуждения. Такой подход позволяет учесть в правилах меру достоверности данных и проводить нечеткие рассуждения или применять стохастические методы к нечеткому выводу.
Проблему изменения степени доверия в процессе работы системы
решают немонотонные рассуждения, которые делают наиболее обоснованные предположения в условиях неопределенности инфор16
мации. Затем выполняется уже логический вывод на основе этих
предположений, принимаемых за истинные. При изменении меры
доверия к некоторому утверждению производится перепроверка
всех заключений, выведенных с его использованием. Цена такого
подхода – необходимость постоянно отслеживать весь ход рассуждений, основанных на неточных знаниях, с помощью систем поддержки истинности, сохраняющих непротиворечивость базы знаний в процессе поиска решения поставленной задачи.
Еще одной проблемой, возникающей при попытке создания баз
знаний о реальной предметной области на основе исчисления предикатов, является значительный объем предикатов, описывающих
как существующие отношения между объектами, так и возможные
изменения этих отношений, что хорошо видно в приведенном ниже
примере.
1.4. «Мир блоков»
В качестве примера использования исчисления предикатов для
сознания базы знаний о некоторой предметной области рассмотрим
описание «мира блоков» с целью планирования действий робота.
«Мир блоков» ограничен множеством одинаковых блоков на поверхности стола и действиями руки робота, который имеет информацию о координатах расположения блоков на столе. Рука робота
имеет захват, который может схватить свободный блок, т. е. блок
со свободной верхней гранью, и переместить его в любую точку стола или установить на свободный блок.
Состояние блоков и их отношение можно описать следующими
предикатами:
− на_столе(Х) – блок Х находится непосредственно на столе;
− на(Х,Y) – блок Х находится на верхней грани блока Y;
− чисто(Х) – верхняя грань блока Х свободна, т. е. блок свободен
и может быть захвачен;
− захват(Х) – захват удерживает блок Х;
− пусто( ) – захват свободен.
Тогда «Мир блоков» в состоянии 1, показанном на рис. 1.1, можно представить конъюнкцией следующих предикатов: на_столе(b);
на_столе(c); на_столе(e); на(a,b); на(d,e); чисто(a); чисто(c);
чисто(d); пусто( ).
Для состояний блоков можно составить правила, позволяющие
проверять их истинность, например:
17
− ∀X(¬(∃Y)на(Y,X)→чисто(X)) – если не существует блока Y,
находящегося на блоке Х, то блок X свободен;
− ∀X(¬захват(X)→пусто( )) – если в захвате нет блока, то он
свободен.
Команды робота, воздействующие на положение блоков и приводящие их к новому состоянию можно описать как операторы:
− взять(X) – взять со стола блок Х и держать его в захвате, причем ∀X(взять(Х)→(захват(Х)¬(пусто( )∧чисто(Х)∧на_столе(Х));
− поместить(Х) – поместить в некоторую точку стола блок Х,
находящийся в захвате, причем ∀X(поместить(Х)→((пусто( )
∧чисто(Х)∧на_столе(Х)¬захват(Х));
− снять(Х,Y) – снять свободный блок Х, стоящий на блоке Y,
причем (∀X∀Y)(снять(Х,Y)→((чисто(Y)∧захват(Х))¬(на(Х,Y)∧ 
чисто(Х)∧пусто( )));
− поставить(Х,Y) – поставить блок Х, находящийся в захвате, на свободный блок Y, причем (∀X∀Y)(поставить(Х,Y)→
((на(Х,Y)∧чисто(Х)∧пусто( ))¬(чисто(Y)∧захват(Х ))).
Правило А→(В¬С) означает, что из оператора А следует новый
предикат В, если условие С истинно. Во всех предикатах предполагается наличие информации о координатах блоков и возможность
перемещения руки робота в заданную точку.
Используя операторы для изменения положения и отношения
блоков, следует учитывать проблему границ, т. е. сформулировать
правила, определяющие предикаты, инвариантные к данному оператору. В наиболее компактной форме каждый оператор можно
представить виде списков предусловий (П), которым должен удовлетворять «Мир блоков» для применения оператора, дополнений
(Д) к описанию состояния блоков и удалений (У) из этого описания,
которые являются результатом применения данного оператора.
Эти списки приведены в табл. 1.2.
Как видно из табл. 1.2, списки добавления и удаления обладают некоторой избыточностью, например предусловия и удаления,
a
b
c
d
b
e
c
Состояние 1
e
Состояние 2
Рис. 1.1. «Мир блоков»
18
d
a
Таблица 1.2
Возможные команды
Команда
взять(X)
поместить(Х)
снять(Х,Y)
поставить(Х,Y)
Условия
П: пусто( )∧чисто(Х)∧на_столе(Х)
Д: захват(Х)
У: пусто( )∧чисто(Х)∧на_столе(Х)
П: захват(Х)
Д: пусто( )∧чисто(Х)∧на_столе(Х)
У: захват(Х)
П: на(Х,Y)∧чисто(Х)∧пусто( )
Д: чисто(Y)∧захват(Х)
У: на(Х,Y)∧чисто(Х)∧пусто( )
П: чисто(Y)∧захват(Х)
Д: на(Х,Y)∧чисто(Х)∧пусто( )
У: чисто(Y)∧захват(Х)
описывая аксиомы границ, дублируют друг друга. Однако преимущество такой избыточности в том, что каждый предикат из описания состояния, который не упоминается в списках П и У, остается
истинным в описании нового состояния.
Используя описание текущего состояния блоков и правила исчисления предикатов, система управления робота может планировать
его действия для выполнения поставленной задачи. Например, переход от состояния 1 к состоянию 2, приведенному на рис. 1.1, может
быть выполнен при помощи следующей последовательности операций: снять(a,b); поместить(a); взять(b); поставить(b,c); снять(d,e);
поставить(d,a). Следует отметить, что вопрос автоматического поиска этой последовательности относится уже к проблеме поиска пути
в пространстве состояний и будет рассмотрен во втором разделе.
1.5. Язык логического программирования
Среди языков программирования, используемых для компьютерной реализации описаний окружающего мира на основе исчисления предикатов, наибольшее распространение получил язык
логического программирования PROLOG (Programming in Logic).
Программа, написанная на этом языке, представляет собой набор
спецификаций из логики предикатов первого порядка, описывающих объекты и отношения между ними в предметной области задачи. Такой набор называется базой знаний и может легко попол19
няться и модифицироваться при каких-либо изменениях в окружающем мире. Применение теории предикатов в языке программирования обеспечивает прозрачный интерфейс и хорошо определенную семантику.
PROLOG относится к классу интерпретируемых языков, работающих в интерактивном режиме. Интерпретатор в диалоговом
режиме ищет ответ на запрос пользователя, касающийся элементов базы знаний, выполняя поиск в базе в глубину слева направо
и определяя, является ли данный запрос логическим следствием
содержимого базы. Запросы представляют собой шаблоны, выполненные в том же логическом синтаксисе, что и записи в базе знаний. Следует отметить, что существуют версии языка, позволяющие проводить компиляцию набора спецификаций для ускорения
выполнения программы.
В качестве примера рассмотрим описание «Мир Вани, Оли и
Тани», используя предикаты любит(X,Z) и друг(X,Y). База знаний
может иметь следующий вид:
X,Y={ваня,оля,таня} – переменная «люди»;
Z={мороженное,чай,кофе} – переменная «предметы»;
любит(ваня,чай); любит(ваня,мороженное); любит(оля,кофе);
любит(оля,мороженное); любит(таня,кофе); друг(оля,таня).
После занесения этих записей в базу знаний, интерпретатору
можно задавать вопросы и получать ответы:
? – любит(ваня,чай); ответ – да
? – любит(оля,Z); ответ– Z = мороженное, кофе
? – друг(ваня,оля); ответ – нет
Как видно, при вводе запроса с конкретными значениями термов интерпретатор отвечает да, если находит в базе запись, совпадающую с запросом, или нет, если такая запись отсутствует. В ответ на запрос с переменной выводятся все записи, в которых подстановка констант из области определения переменной приводит к
отображению в true.
При обработке запросов язык PROLOG опирается на допущение
о замкнутости мира, которое подразумевает, что любое выражение
считается ложным, если нельзя доказать истинность его отрицания.
Это допущение приводит к некоторым трудностям, так как фактически означает ложность любого факта, который не включен в базу
знаний. Например, на запрос ? – друг(ваня,оля) получен ответ – нет,
хотя информация о таком факте просто отсутствует в базе.
Как видно из примера, в базу данных языка PROLOG можно записать не только спецификации фактов, но и спецификации пра20
вил, описывающих взаимосвязи между фактами путем использования логических операций. В различных диалектах языка PROLOG
в качестве условных обозначений логических операций используются разные символы. В первом стандарте языка C-PROLOG,
разработанном в 1975–1980 годах на кафедре искусственного интеллекта университета Эдинбурга Дэвидом Уорреном и Фернандо
Перейрой, логическое И (and) обозначалось запятой, ИЛИ (or) –
точкой с запятой, а логическая импликация – двоеточием с тире.
В таком случае спецификацию, определяющую понятие друг, как
логическую импликацию результата логического И двух термов
любит, можно представить с использованием этих обозначений как
друг(Х,Y):– любит(X,Z), любит(Y,Z).
Если к набору спецификаций из приведенного выше примера
добавить спецификацию друг, и снова задать интерпретатору вопрос ? – друг(ваня,оля), то ответ изменится, так как интерпретатор попробует применить спецификацию друг к имеющимся фактам. В данном случае переменные соответствуют X=ваня, Y= оля.
Вначале интерпретатор ищет значение переменной Z, при которой
любит(ваня,Z) истинно. Первая удовлетворяющая этому условию
запись – любит (ваня,чай), т. е. Z=чай. Далее интерпретатор пытается найти запись вида – любит(оля,чай), не находит ее и возвращается к поиску другого Z в записи любит(ваня,Z). Следующее значение Z, для которой запись существует в базе данных, мороженное.
Дальнейший поиск записи вида любит (оля,мороженное) заканчивается успехом, что подтверждает истинность запроса. Таким образом, интерпретатор установил, что Ваня и Оля являются друзьями
на почве обоюдной любви к мороженному.
Следует отметить, что, как видно из этого примера, в языке
PROLOG организован поиск в глубину с возвратами, подробно описанный в следующем разделе, причем последовательность просмотра записей определяется их порядком в базе данных.
21
2. ПОИСК В ПРОСТРАНСТВЕ СОСТОЯНИЙ
2.1. Граф пространства состояний
Вторым аспектом гипотезы о символьной системе является поиск решения задачи, поставленной перед интеллектуальной системой, в пространстве состояний, в которых может находиться окружающий систему мир. Часто человек именно так решает проблемы,
например, шахматист ищет наилучший ход или врач рассматривает ряд возможных диагнозов, выбирая из них наиболее вероятный.
Пространство состояний удобно представлять в виде графа, узлы
которого соответствуют различным состояниям окружающего мира
или состояниям решаемой задачи, а дуги – допустимым операциям,
переводящим мир из одного состояния в другое, или шагам, выполняемым в процессе решения задачи. Практически любую задачу
можно представить в виде такого графа, выбрав соответствующее
описание для состояний и операций. В таком случае для решения
поставленной задачи необходимо найти на графе пространства состояний путь от исходного состояния к требуемому. Представление
задачи в виде графа пространства состояний позволяет использовать теорию графов как для анализа структуры и степени сложности задачи, так и для разработки процедуры ее решения.
Швейцарский математик Леонард Эйлер разработал теорию графов для решения «Задачи о кенигсбергских мостах». На рис. 2.1
изображена схема расположения города на двух берегах реки и
двух островах, соединенных между собой семью мостами. Задача – найти такой маршрут обхода города, при котором каждый
мост проходится только один раз. Обозначив берега реки (b1, b2),
острова (o1, o2), мосты (m1, m2, m3, m4, m5, m6, m7) и задав предикат соединяет(X,Y,Z), где X,Y – переменная «место» (остров или
берег); Z – переменная «мост», можно представить систему мостов
в терминах предикатов: cоединяет(о1,о2,m1); cоединяет(о1,b1,m2);
cоединяет(о1,b1,m3); cоединяет(о2,b1,m4); cоединяет(о1,b2,m5);
cоединяет(о1,b2,m6); cоединяет(о2,b2,m7). Представление системы
мостов в виде графа также приведено на рис. 2.1.
Следует отметить, что предикатное представление, описывая отношения между мостами, берегами и островами, не обеспечивает
однозначную связь каждой вершины с дугами и, как следствие, не
позволяет ввести понятие степени вершины. Следовательно, представление окружающего мира в виде графа повышает информативность по сравнению с предикатным представлением.
22
b1
Берег реки 1
4
3
2
1
Остров 1
m2
Остров 2
o1
Река
5
m4
m3
6
Берег реки 2
7
o2
m1
m6
m7
m5
b2
Рис. 2.1. Задача о кенигсбергских мостах
Чтобы доказать невозможность существования искомого маршрута, Эйлер ввел понятие степени вершины графа, которая равна
числу дуг, соединяющих данную вершину с другими вершинами.
Эйлер показал, что если число вершин нечетной степени не равно
нулю или двум, то маршрут невозможен, так как если вершин нечетной степени две, то маршрут можно начать в одной из них, а закончить в другой. Если вершин с нечетной степенью нет, то маршрут должен начинаться и заканчиваться в одной и той же вершине.
Из рис. 2.1 видно, что данное условие не выполняется, следовательно, искомый маршрут не существует.
Напомним некоторые понятия теории графов. Граф – это множество вершин или узлов N1, N2, … Nn и дуг или ребер, соединяющих некоторые пары вершин. На графе состояний каждая вершина
именована, а если имена двух вершин совпадают, то они считаются
одинаковыми.
Дуги графа обычно идентифицируются именами вершин, которые они соединяют, т. е. обозначаются упорядоченной парой вершин, например (N2, N3). Дуга может иметь собственную метку, характеризующую данную дугу, например расстояние между узлами
транспортной сети. Если каждой дуге приписано направление, то
граф называется ориентированным, а пара вершин, соединяемых
направленной дугой, называются соответственно родителем и потомком. У одной вершины-родителя может быть несколько вершин-потомков, которые называются братьями. Вершина, не имеющая потомков, называется концевой. Вершина, не имеющая предков, называется корнем, а граф с такой вершиной – корневой граф.
23
Упорядоченная последовательность вершин (N1, N2, … Nn), где
каждая пара (Ni, Ni+1) является дугой, называется путем длины
n-1 от вершины N1, к вершине Nn. Если путь включает какую-то
промежуточную вершину более одного раза, то путь содержит петлю. Две вершины называются связанными, если существует путь,
содержащий эти вершины. Если в графе для каждой пары вершин
существует единственный путь, то такой граф называется деревом
и, как следствие, не содержит петель. В корневом дереве каждая
вершина имеет единственного родителя. Пример корневого дерева – каталог файловой системы.
Пространство состояний задачи представляется четырьмя множествами:
− множество вершин графа N, определяющих возможные состояния задачи, возникающие в процессе ее решения;
− множество дуг между вершинами A, соответствующих возможным шагам в процессе решения задачи;
− множество начальных состояний задачи S;
− множество целевых состояний D.
Допустимым считается любой путь из вершины множества S в
вершину множества D, причем множества S и D являются подмножествами множества N.
Целевое состояние может задаваться разными способами. Первый способ – описание конкретного состояния, например как в
«мире блоков» на рис. 1.1 (множество D состоит из одного элемента). Второй способ – описание свойств состояний, например матовое положение в шахматах. Третий способ – характеристика пути
от исходного состояния к цели, например стоимость перемещения
по дугам, составляющим данный путь (множество D невозможно
сформировать до решения задачи). Наиболее просто проверяется достижение целевого состояния в первом способе – достаточно
сравнить описание достигнутого состояния с описанием цели.
Одно и то же состояние может быть достигнуто разными путями,
что иногда может привести к возникновению петель на графе. В результате возникает проблема выбора оптимального в некотором смысле пути. Например, граф пространства состояний игры в «крестики-нолики» корневой, так как имеет одно начальное состояние. Он не является деревом, так как очевидно, что некоторые состояния могут быть
достигнуты разными путями, но не имеет петель, так как все дуги
ориентированные и направлены от корневых вершин к потомкам.
Граф пространства состояний игры «8-головоломка» или игры
в «пятнашки», приведенный на рис. 2.2, тоже корневой, но, в от24
личие от предыдущего, может иметь циклы. Цель игры – для начальной расстановки фишек с номерами от 1 до 8 найти такую последовательность их перемещения на пустое место, в результате
которой фишки займут заданное положение. Полное число возможных состояний достаточно велико (8! = 40320), если учитывать
симметричные отражения. Заметим, что определение очередного
хода значительно удобнее задавать перемещением пустой клетки в
одно из допустимых положений, как это показано на рис. 2.2.
Следует отметить, что полное пространство состояний этой игры
распадается на два несвязанных подграфа одинакового размера, из
чего следует, что половина состояний недостижимы из любой заданной начальной вершины.
Для мира блоков, описанного в предыдущем разделе, тоже может быть сформирован граф пространства состояний, фрагмент
которого приведен на рис. 2.3. Вершины графа соответствуют возможным состояниям мира блоков. Дуги графа помечены операциями, которые могут быть выполнены в состоянии, соответствующем
родительской вершине. Планирование операций, которые необхо1
4
7
6
5
вверх
1
7
4
6
5
8
2
8
влево
3
2
вниз
1
5
вверх
3
вправо
4
3
1
4
3
1
4
7
6
7
8
6
7
6
8
2
5
2
5
8
влево
вниз
2
вправо
4
3
1
4
3
1
4
3
1
4
3
1
7
6
5
7
6
7
8
6
7
8
6
5
8
2
8
2
5
2
5
8
2
5
3
Рис. 2.2. Фрагмент пространства состояний игры в «пятнашки»
25
a
b
снять (a,b)
b
d
c
e
взять (c)
a
d
a
c
e
b
поставить (a,c)
c
снять (d,e)
d
a
d
e
b
c
поставить (a,d)
e
поместить (a)
a
b
a
d
c
e
d
b
c
e
d
a
b
c
e
Рис. 2.3. Фрагмент графа пространства состояний мира блоков
димо выполнить для получения требуемого расположения блоков,
можно представить как поиск пути на графе возможных состояний
от текущего расположения блоков к целевому расположению.
Примером задачи, в которой цель задается характеристикой
пути, является «задача коммивояжера», заключающаяся в том,
что необходимо найти кратчайший путь, соединяющий все вершины некоторого графа. Вершины этого графа – пункты, которые
должен посетить коммивояжер, например города. Помеченные
дуги – возможность непосредственного перемещения между этими
пунктами, например длина пути между городами в километрах. На
рис. 2.4 приведен такой граф для шести городов и фрагмент графа
состояний задачи при условии, что начальный пункт – A.
Любой маршрут удобно представить последовательностью пунктов назначения, например (A, B, C, E, F, D) и его длиной. Полное
число вершин графа состояний составляет N!, где N – число пунктов
назначения, (6! = 720), при условии, что коммивояжер не должен
возвращаться в исходный пункт и каждый пункт имеет непосредственную связь со всеми другими пунктами. В данном случае целью
является не некоторое состояние в пространстве поиска, а нахождение на графе состояний пути минимальной длины, что в принципе
требует полного перебора всех состояний. Однако с ростом N чис26
B
С
11
25
4
31
28
10
A
33
17
A
12
D
21
13
B
C
D
24
F
12
E
Граф возможных путей
между городами
F
E
D
C
17
30
E
E
D
E
F
F
83
E
76
F
D
F
F
D
94
82
E
D
E
96
D
91
Фрагмент графа
пространства состояний
Рис. 2.4. Задача коммивояжера
ло вершин графа состояний растет так быстро, что прямой перебор
всех возможных вариантов становится неосуществимым.
Следует отметить, что задача коммивояжера используется на
практике, например, при разводке электронных схем и маршрутизации при производстве СБИС.
2.2. Алгоритмы поиска с последовательным перебором
Поиск в пространстве состояний можно вести как в прямом направлении, т. е. от исходного состояния к цели, так и в обратном направлении. При прямом поиске к исходному состоянию задачи применяются возможные операции, приводящие к другим состояниям,
причем процесс продолжается до получения требуемого состояния.
При обратном поиске анализируются операции, которые могут привести к заданному состоянию, в результате чего получается множество промежуточных целей. Процесс повторяется, пока не буден получено состояние, соответствующие исходному состоянию задачи.
Например, необходимо определить: является ли человек А прямым потомком человека В, при условии, что полные генеалогиче27
ские деревья для A и В известны. Прямой поиск на таком графе
требует просматривать всех потомков В, до тех пор пока не будет
найден А. Если считать, что в генеалогическом дереве существует
10 поколений и каждая семья имеет в среднем трех детей, то при
прямом поиске потребуется просмотреть до 310 вершин. При обратном поиске потребуется просмотреть не более 210 вершин, так как
каждый человек имеет только прямых двух предков.
Процесс поиска от цели может быть более эффективен, чем прямой поиск в тех случаях когда, цель поиска явно сформулирована,
имеется большое число правил, позволяющих эффективно ограничить множество возможных ветвей на каждом шаге, или исходные
данные приведены не полностью и могут добавляться в процессе решения задачи. Например, при диагностике болезни, как правило, в
начальный момент имеются результаты далеко не всех возможных
анализов и тестов. Рассматривая возможные диагнозы в качестве
целей, можно проводить поиск в обратном направлении, получая
необходимые анализы в зависимости от выбранной гипотезы о диагнозе для его подтверждения или отмены.
Любой поиск в пространстве состояний основан на алгоритме
поиска с возвратами, который заключается в том, что в процессе
поиска последовательно генерируются новые возможные состояния и формируются три списка состояний:
− список еще нерассмотренных состояний, для того чтобы можно было вернуться к любому из них;
− список просмотренных состояний, для того чтобы исключить
их повторный просмотр;
− список узлов текущего просматриваемого пути, который возвращается в качестве результата поиска при достижении цели.
Каждое новое состояние, сгенерированное в процессе поиска,
проверяется на вхождение в эти списки для предотвращения зацикливания.
Алгоритм поиска с возвратами запускается из начального состояния и следует по некоторому пути до тех пор, пока не будет достигнуто целевое состояние или концевая вершина графа состояний.
В последнем случае алгоритм возвращается в какую-либо из пройденных вершин и просматривает ее вершины-братья, спускаясь по
одной из ветвей.
Существует две возможные стратегии определения порядка просмотра вершин-потомков – поиск в глубину и поиск в ширину, а
также основанный на сочетании этих стратегий метод итерационного заглубления.
28
При поиске в глубину необходимо сформировать всех потомков
текущего состояния и затем рассматривать одного из них как следующее состояние. Если дальнейшие потомки не найдены, то рассматриваются вершины-братья. Например, на графе состояний,
приведенном на рис. 2.5, последовательность просмотра вершин,
при условии, что цель – состояние U и очередность просмотра вершин-братьев соответствует порядку их генерации будет следующая:
A,B,E,K,S,L,T,F,M,C,G,N,H, O,P,U (найденный путь – A,C,H,P,U).
Как видно из алгоритма, поиск в глубину не гарантирует нахождение кратчайшего пути от начального состояния к цели (в примере кратчайший путь – A,D,U). Этот алгоритм следует использовать, если известно, что путь к цели будет длинным, так как поиск
в глубину не будет тратить время на просмотр большого количества
близких к начальному состояний. Однако он может затеряться
в глубинах графа, пропуская более короткие пути к цели или застрять на не ведущем к цели длинном пути. Поиск в глубину эффективен для графов с высокой степенью связности, так как он не
требует запоминания всех узлов каждого уровня. В этом случае
степень использования пространства состояний является линейной
функцией длины пути.
Поиск в ширину формирует всех потомков для всех имеющихся
на текущем уровне вершин и просматривает их. Если цель не достигнута, то формируется следующий уровень вершин. Например,
для графа на рис. 2.5 последовательность просмотра вершин при
поиске в ширину будет следующая: A,B,C,D,E,F,G,H,I,U.
A
B
C
E
F
K
L
S
T
M
D
H
G
N
O
I
J
Q
P
R
U
Рис. 2.5. Граф, иллюстрирующий алгоритмы поиска
29
Из алгоритма видно, что поиск в ширину гарантирует нахождение кратчайшего пути от начального состояния к цели. Его следует
использовать при низком коэффициенте ветвления, так как если
состояния имеют высокое средне число потомков, то экспоненциальный характер зависимости числа узлов графа от числа уровней
приводит к недопустимому увеличению пространства состояний.
Метод итерационного заглубления заключается в последовательном увеличении глубины поиска на единицу на каждой итерации. На первом шаге глубина поиска – один уровень, т. е. просматриваются все возможные состояния, являющиеся непосредственными потомками начального состояния. Если цель не найдена, то
выполняется следующий шаг с предельной глубиной поиска – два
уровня и т. д. На каждой итерации алгоритм выполняет поиск в глубину с учетом текущего предельного числа уровней. Например, для
графа на рис. 2.5 последовательность просмотра вершин при поиске с итерационным заглублением будет следующая: A,B,C,D,E,
K,L,F,M,C,G,N,H,O,P,I,U (найденный путь – A,D,U). Поиск с итерационным заглублением гарантирует нахождение кратчайшего
пути от начального состояния к цели, так как в процессе поиска
узлы просматриваются по уровням.
Все описанные методы поиска представляют собой итерационные, т. е. пошаговые процессы, причем на каждом шаге необходимо проверять принадлежность нового состояния одному из списков
для исключения зацикливания. Наиболее эффективным и компактным алгоритмом, решающим эту задачу, является рекурсивный алгоритм. Процедура проверки принадлежности элемента
списку в рекурсивном алгоритме заключается в следующем:
function member(item, list) of Boolean; // item – проверяемый элемент, list- список
begin
if список пуст then return False
else
if item = первый элемент списка then return True
else
begin
tail:= список после удаления первого элемента;
return member(item,tail) // рекурсия
end
end.
Рекурсия представляет собой эффективный инструмент для
управления массивами данных, имеющих неопределенный размер,
30
например, списками, стеками, графами. Любая итерационная процедура может быть реализована рекурсивно, следовательно, рекурсивные по своей природе алгоритмы поиска на графе пространства
состояний целесообразно реализовывать рекурсивно. Например, рекурсивная форма алгоритма поиска в глубину имеет следующий вид:
function depth_search(current_state) of Boolean; // current_state –
текущий узел графа состояний; список closed – глобальная переменная
begin
if current_state = целевое состояние then return True;
добавить current_state в список closed;
while current_state имеет непроверенные потомки
begin
child:= следующий непроверенный потомок current_state;
if child не член списка closed then
if depth_search(child) = True then return True // рекурсия
end;
return False // граф исчерпан
end.
Данный алгоритм рассматривает потомков текущего состояния
по одному, для каждого из них рекурсивно находятся и рассматриваются потомки, причем процесс продолжается до тех пор, пока не
будет найдено целевое состояние или просмотрен весь граф.
2.3. Эвристические алгоритмы поиска
На первый взгляд, рассмотренные выше, исчерпывающие методы поиска, т. е. последовательный перебор всех возможных путей
на графе до тех пор, пока не будет найден искомый путь, достаточно продуктивны. Однако, во-первых, такой подход трудно назвать
интеллектуальным, а во-вторых, огромный размер пространства
состояний для большинства практических задач делает этот подход неприемлемым с практической точки зрения. Например, игре
в шахматы соответствует около 10120 различных состояний игровой доски. Формирование графа таких размеров и тем более поиск в
нем выигрышной последовательности ходов выходит за рамки возможностей любого компьютера, размеры и время работы которого
должны быть ограничены.
Для выбора подходящего направления движения на графе состояний интеллектуальные системы, использующие для решения
31
поставленной перед ними задачи метод поиска в пространстве состояний, применяют набор направляющих правил или эвристик.
Следует иметь в виду, что эвристики не абсолютно надежны, так как
основываются на знаниях о природе задачи и опыте разработчиков
интеллектуальной системы. Эвристический алгоритм может привести к субоптимальному решению или даже не найти решение вообще, причем это ограничение носит принципиальный характер и
не может быть полностью устранено улучшением алгоритма поиска.
Таким образом, представление задачи в виде поиска в пространстве состояний обеспечивает формализацию процесса решения, а
эвристики вносят в этот формализм интеллектуальную составляющую. Отметим, что разработка алгоритмов для эвристического поиска и сегодня остается одним из основных объектов исследования
в области ИИ.
Эвристику приходится использовать в двух случаях:
− когда проблема не имеет точного решения в связи с неопределенностью в постановке задачи или в исходных данных (например,
медицинская диагностика или система технического зрения);
− когда задача имеет точное решение, но стоимость его поиска
неприемлема из-за размеров пространства состояний, например, в
игровых задачах рост пространства состояний с увеличением числа
анализируемых ходов носит экспоненциальный характер (например, игра в шахматы).
Эвристические алгоритмы включают в себя вычисление некоторой оценки для точки в пространстве состояний и использование
этой оценки для выбора следующего шага в процессе поиска решения. Выбор эвристики во многом зависит от конкретной задачи,
например для поиска наилучшего хода в игре «крестики-нолики»
можно использовать следующий алгоритм – для каждого возможного хода подсчитать число потенциально выигрышных линий (на
рис. 2.6 приведены выигрышные линии при первом ходе), после
чего выбрать в качестве наилучшего ход с максимальным числом.
Согласно такой эвристике наилучший первый ход – центральная
клетка, что совпадает с общеизвестной стратегией.
Приведенная эвристика является примером стратегии, основанной на поиске экстремума, при которой для дальнейшего поиска
выбирается наилучший потомок, а его братья из дальнейшего рассмотрения исключаются, причем если оценка всех потомков ниже,
чем текущее состояние, то алгоритм останавливается. Основная проблема таких алгоритмов – это остановка при достижении локального
максимума функции оценки узлов. Например, если при игре в «пят32
Х
Х
Х
Рис. 2.6. Выигрышные линии при первом ходе в игре «крестики-нолики»
нашки» в качестве оценки позиции используется число правильно
расположенных фишек, то ход, ухудшающий текущую позицию, не
будет признан лучшим. Хотя часто для передвижения фишки в нужную позицию необходимо сдвинуть правильно стоящую фишку, временно ухудшая позицию, с точки зрения приведенной выше оценки.
«Жадный» алгоритм поиска использует список нерассмотренных состояний, присваивая каждому его члену некоторую оценку.
При выборе следующего шага алгоритм сортирует список нерассмотренных состояний по уменьшению или увеличению оценки,
формируя приоритетную очередь, и выбирает рассматриваемый
узел из начала очереди.
В качестве примера на рис. 2.7 приведено дерево пространства
состояний с оценками узлов, сгенерированными в процессе поиска. Если целью является состояние U, причем сортировка списка
нерассмотренных состояний производится по уменьшению, то последовательность шагов с учетом состава списков нерассмотренных
(open) и рассмотренных (closed) узлов будет следующая:
1) оценка начального состояния А; open: A-5; closed: пусто;
2) для A формируются и оцениваются потомки (B,C,D); open:
B-4, C-4, D-6; closed: A;
3) для B формируются и оцениваются потомки (E,F); open: C-4,
E-5, F-5, D-6; closed: B, A;
4) для C формируются и оцениваются потомки (G,H); open: Н-3,
G-4, E-5, F-5, D-6; closed: С, B, A;
5) для H формируются и оцениваются потомки (O,P); open: O-2,
Р-3, G-4, E-5, F-5, D-6; closed: Н, С, B, A;
6) для O потомков нет, цель не достигнута, выбирается узел P из
очереди; open: Р-3, G-4, E-5, F-5, D-6; closed: O, Н, С, B, A;
7) для P формируется и оценивается потомок (U); open: U-2, G-4,
E-5, F-5, D-6; closed: P, O, Н, С, B, A;
8) для U – цель достигнута.
33
A-5
E-5
K
S
D-6
C-4
B-4
F-5
H-3
G-4
I
J
Q
L
T
M
N
O-2
R
P-3
U-2
Рис. 2.7. Эвристический поиск «жадным» алгоритмом
Из приведенного примера видно, что «жадный» алгоритм, вопервых, позволяет выходить из тупикового состояния (узел O), а вовторых, стремится прийти к цели кратчайшим путем (путь алгоритма при просмотре узлов показан на рис. 2.7 жирными стрелками).
Основной недостаток «жадного» алгоритма – выбор следующего шага только на основе некоторой оценки всех ранее сформированных состояний, без оценки цепочек возможных последующих
состояний, что может привести к получению неоптимального решения. Например, в случае поиска решения «задачи коммивояжера», граф которой приведен на рис. 2.4, в качестве оценки можно
использовать расстояние от выбранного на текущем шаге города до
еще не пройденных городов. В таком случае «жадный» алгоритм
выбирает в качестве следующего шага город, расстояние до которого минимально. Очевидно, результат применения этого алгоритма
будет следующий: A – B – D – F – E – C (85), что явно не является
маршрутом, минимальным по длине. Основная причина неудачи
«жадного» алгоритма при поиске решения в «задаче коммивояжера» заключается в отсутствии в данном случае описания цели в
пространстве состояний.
Более гибкая стратегия поиска используется в минимаксном
алгоритме, применяемом в играх с двумя участниками, каждый
из которых стремится к победе и имеет одинаковую информацию
о текущем состоянии игры. Метод минимакса основан на предположении, что на каждом шаге противник выбирает наилучший из
возможных для него ходов.
34
В данном алгоритме противников принято называть MIN и
MAX, причем MAX – игрок, стремящийся выиграть, т. е. максимизировать свое преимущество, а MIN – его противник, стремящийся
соответственно минимизировать преимущество своего соперника,
т. е. достичь наихудшего для MAX состояния.
В качестве примера приведем игру «Ним», пространство состояний которой можно сформировать в полном объеме. В начале
игры на стол перед двумя участниками выкладывается кучка из
некоторого числа фишек. Игрок, делающий первый ход, должен
разделить эту кучку на две неравные части. Следующий игрок должен также разделить одну из уже имеющихся кучек. Проигрывает тот, кто не может сделать хода, т. е. не одна из имеющихся на
столе кучек не может быть разделена на неравные части. Пример
пространства состояний для игры «Ним» с семью фишками приведен на рис. 2.8. Каждый уровень пространства состояний помечен
1
7
MIN
1
1
6–1
1
5–2
4 –3
MAX
1
0
5 –1 – 1
1
0
3–2 –2
4 –2 –1
3 –3 –1
MIN
1
0
4 –1 – 1 – 1
0
3 – 2 –1 – 1
2 – 2 –2 –1
MAX
0
1
3 –1 – 1–1 –1
2 –2 –1–1 – 1
MIN
0
MAX
2 –1 – 1 – 1–1 –1
Рис. 2.8. Пространство состояний для игры в «Ним»
с применением минимаксного алгоритма
35
именем игрока, выполняющего очередной ход (в примере первый
ход делает MIN, т. е. противник). Каждой конечной вершине графа
присвоено значение 1, если победитель MAX, или 0, если победитель MIN, что является оценками конечных состояний. В процессе реализации минимаксного алгоритма эти значения передаются
снизу вверх по графу согласно следующим правилам:
− если родительский узел относится к уровню MAX, то ему присваивается максимальное значение из значений его потомков;
− если родительский узел относится к уровню MIN, то ему присваивается минимальное значение из значений его потомков.
В результате с каждым состоянием связывается значение, показывающее наилучший результат, который игрок MAX может достичь, если игрок MIN будет выбирать наилучшее продолжение из
данного состояния.
На рис. 2.8 показаны значения узлов, полученные в результате применения минимаксного алгоритма. Жирные стрелки демонстрируют последовательность выигрышных ходов. Очевидно, что в
«Ним» игрок, делающий первый ход, может выиграть только, если
его противник сделает ошибочный ход.
В более сложных играх построить полный граф пространства
состояний практически невозможно. В таком случае для выбора
наилучшего из всех возможных на данный момент ходов строится
семейство графов с фиксированной глубиной поиска, причем число
графов равно числу возможных ходов, а каждый граф состоит из
всех возможных состояний до заданной глубины. Далее для каждого графа производится оценка конечных узлов, которые передаются корневой вершине согласно приведенным выше правилам.
В качестве наилучшего хода выбирается тот ход, оценка которого
максимальна. Эвристика, основанная на минимаксном алгоритме,
интегрирует отдельные оценки состояний на заданной глубине в
значение, которое присваивается родительскому состоянию.
На рис. 2.9 приведен граф некоторого пространства состояний
глубиной три с оценками концевых вершин и значениями остальных вершин, полученных по минимаксному алгоритму.
Из сказанного выше следует, что минимаксный алгоритм фактически реализует просмотр в ширину, не выполняя оценок состояний на промежуточных уровнях, причем требует двух проходов по
области поиска. На первом проходе (вниз) формируется полное дерево состояний на заданную глубину, где и применяется эвристическая оценка. На втором проходе (вверх) происходит последовательное присвоение этих оценок узлам, вплоть до корневой вершины
36
3
MIN
MAX
MIN
3 C
3
MAX
3
2
1
9
1
7
2
3
6
2 3 5 9 1 7 4 2 1 5 6
Минимаксный алгоритм
A
3
2 3 5
E
1 D
B 1
2
2
1
2
1
Алгоритм альфа-бета-усечения
Рис. 2.9. Оценка пространства состояний различными алгоритмами
графа. Основное достоинство алгоритма в том, что не выполняется
оценка узлов на промежуточных уровнях, недостаток – необходимость формирования полного дерева возможных ходов.
Сократить число как формируемых, так и рассматриваемых узлов позволяет алгоритм альфа-бета-усечения, являющийся расширением минимаксного алгоритма. Идея алгоритма альфа-бета-усечения заключается в том, что вместо формирования полного графа
состояний следует выполнить поиск в глубину до заданного уровня
и вычислить эвристические оценки для состояний этого уровня.
Если это узлы уровня MIN, то максимальная из этих оценок передается предыдущему родительскому состоянию, т. е. на уровень
MAX, и далее на уровень MIN как граничное значение бета. Затем
алгоритм опускается к потомкам этого уровня, игнорируя те состояния, оценка которых больше или равна данному значению бета.
Аналогичные процедуры выполняются на уровне MAX для вычисления максимального уровня отсечения альфа. Алгоритм прекращает просмотр состояний на промежуточном уровне, если для узла
уровня MIN значение бета меньше или равно значению альфа любого из его предков MAX, а для узла уровня MAX значение альфа
больше или равно значению бета любого из его предков MIN. Таким образом, значение альфа, связанное с узлами MAX, никогда не
уменьшается, а значение бета, связанное с узлами MIN, никогда не
увеличивается. В результате из рассмотрения могут быть исключены как отдельные узлы, так и целые поддеревья, что значительно
сужает область поиска, причем поиск производится за один проход.
На рис. 2.9 приведен результат применения алгоритма альфабета-усечения (состояния без числовых меток не оценивались, отсеченные ребра помечены). Для узла А β = 3, т. е. оценка узла А будет
не больше чем 3. Тогда узел В является β-усеченным, так как 5 > 3.
37
Для узла С α = 3, т. е. оценка узла С будет не меньше чем 3. Тогда узел
D является α-усеченным, так как 1 < 3. Узел Е тоже α-усеченный,
так как 2 < 3. Как видно из рис. 2.9, результат оценки корневой вершины с применением алгоритма альфа-бета-усечения совпадает с
результатом оценки минимаксным алгоритмом, но число сформированных и просмотренных вершин значительно меньше.
Следует отметить, что в алгоритме альфа-бета-усечения число
сформированных и просмотренных вершин зависит от направления просмотра в глубину. Например, если на графе, приведенном
на рис. 2.9, начинать просмотр в глубину не с левого крайнего узла,
а с правого крайнего, то число сформированных и просмотренных
вершин увеличится, хотя результат оценки корневой вершины
останется прежним.
Из анализа приведенных выше алгоритмов можно сделать вывод,
что разработка хорошей эвристики – сложная эмпирическая проблема, требующая учета возможно большей информации об особенностях конкретной задачи как при вычислении оценки состояний,
так и при выборе последовательности просмотра узлов. Разработчик
вынужден искать оптимальное сочетание количества просматриваемых узлов и сложности вычисления их оценки. Сложная эвристика,
учитывающая множество различных факторов, позволяет сократить число просматриваемых состояний, но объем необходимых при
этом вычислений может привести к таким же временным затратам,
как и более простая эвристика с увеличенной глубиной поиска.
2.4. Язык обработки списков
Среди языков программирования, используемых для компьютерной реализации методов поиска на графе пространства состояний, широкое распространение получил язык обработки списков
LISP (Lisp Processing), который был предложен Джоном Маккарти
в конце 50-х годов XX века и предназначался в первую очередь для
символьных вычислений. Язык LISP построен на теории рекурсивных функций, основным структурным блоком программ и данных
в нем является список.
Изначально LISP был компактным языком, состоящим из процедур формирования и обработки списков, позволяющим определять
новые функции для работы со списками, проверять равенства и оценивать выражения. Единственными средствами управления данными были рекурсия и условные операторы. Развиваясь, язык стал
38
поддерживать все большее число встроенных функций для работы со
списками как со связанными структурами указателей. Во-первых,
это освободило программиста от необходимости явно управлять указателями и реализовывать операции над ними, а во-вторых, привело
к появлению многочисленных диалектов, один из которых – Common
LISP был принят в 1983 году в качестве стандарта языка.
Синтаксическими элементами языка программирования LISP
являются символьные выражения или s-выражения, в виде которых представляются и программы и данные. S-выражение может
быть или списком, или атомом. Атомы – это базовые единицы языка, включающие числа и символы, а список – это последовательность атомов или других списков, разделенных пробелами и заключенных в скобки. Например, (1 2 3 4), (a (b c) (3 (e f))), (+ 14 5). Отметим, что последний пример интерпретируется в LISP как операция
сложения в префиксной форме записи. Аргументы функции сами
могут быть списками. К примеру, выражение (– (+ 3 4) 7) представляет собой композицию функций и интерпретируется так: «вычесть 7 из результата сложения 3 и 4».
В стандарт LISP включен полный спектр арифметических
функций, функции организации циклов, работы со списками, выполнения ввода-вывода данных и многие другие. Новые функции
определяются с помощью стандартной функции defun,первым аргументом которой является имя определяемой функции, вторым –
список ее формальных параметров, а остальные – s-выражения,
составляющие тело новой функции. Например, (defun square (x)
(* x x)) определяет функцию x2. После определения новую функцию можно использовать как любую другую функцию языка, в том
числе и для построения новых функций. Например, функцию вычисления длины гипотенузы прямоугольного треугольника можно
определить как (defun hypotenuse (x y) (sqrt (+ (square x) (square
y)))), где sqrt – стандартная функция LISP.
В приведенном ниже примере используется еще несколько
функций и специальных обозначений из стандарта языка.
Функция quote или апостроф (‘) зависит от одного аргумента и возвращает его без изменений. Например, (+ 1 3) → 4, а ‘(+ 1 3) → (+ 1 3).
Функция list принимает любое количество аргументов и строит
на их основе список. Например, (list (+1 3) (+3 4)) → (4 7), а (list ‘(+ 1)
(+3 4)) → (+ 1 7).
Параметрами функции cons являются два s-выражения, которые оцениваются функцией. В результате возвращается список,
первым элементом которого является значение первого параметра,
39
а хвостом – значение второго. Например, (cons 1 ‘(2 3 4)) → (1 2 3 4),
a (cons ‘(1 2) ‘(3 4)) → ((1 2) 3 4).
Функция nth получает в качестве аргументов номер и список,
а возвращает элемент списка с указанным номером, причем нумерация элементов начинается с нуля. Например, (nth 2 (a b c d)) →
c, a (nth 2 ((a 1) (b 2) (c 3) (d 4))) → (c 3). Если элемент с указанным
номером отсутствует, то выводится пустой список, обозначаемый
служебным словом nil, которое является одновременно и атомом и
s-списком.
Функция member определяет принадлежность s-выражения списку и возвращает nil, если это выражение не является элементом
списка, или список, содержащий s-выражение в качестве первого
аргумента. Например, (member 4 ‘(1 2 3 4 5 6)) → (4 5 6), a (member
4 ‘(1 2 3)) → nil.
Функция cond реализует ветвление. Аргументом этой функции
является множество пар списков «условие – действие». Например,
функцию «абсолютная величина» можно определить так: (defun
abs_value (x) (cond ((< x 0) (–x)) (t x))). Здесь атом t – служебное слово, которому всегда соответствует истина. В качестве условий оператора cond можно использовать любые оцениваемые s-выражения.
Существуют и стандартные функции, возвращающие логическое
значение t или nil в зависимости от результата сравнения: =, >,
>=, <, <=, null. Последняя функция получает в качестве аргумента
список и возвращает t, если он пуст.
Функция equal возвращает значение «истина», т. е. t, если два
списка, полученные в качестве аргументов, синтаксически идентичны. В противном случае возвращается nil.
Функция not зависит от одного аргумента и возвращает t, если
этот аргумент равен nil, и nil – в противном случае. Функции and
и or могут иметь любое число аргументов и ведут себя так же, как
и соответствующие им логические операторы. Это означает, что
функция and возвращает значение последнего аргумента или nil,
если один из аргументов имеет значение nil, а функция or возвращает значение первого отличного от nil аргумента или nil, если все
аргументы имеют это значение.
Существует изоморфное соответствие между списками и деревьями, что открывает широкие возможности по применению списков для представления любой древовидной структуры, в том числе
и дерева поиска в пространстве состояний. Простейшим способом
построения соответствия между списком и деревом является создание для каждого списка узла без метки, потомками которого явля40
ются элементы списка. В результате атомарные элементы становятся листовыми узлами дерева, а самый внешний список – его корнем.
Задачи ИИ требуют обработки больших объемов знаний о предметной области, причем используемые для представления этих
знаний иерархические структуры данных достаточно сложны. Поскольку LISP легко позволяет определять новые функции для работы с символьными списками путем рекурсивной обработки он
является одним из лучших языков для реализации программного
обеспечения интеллектуальных систем.
В качестве примера рассмотрим поиск решения известной задачи о переправе через реку с использование возможностей LISP. Задача формулируется следующим образом. Фермеру (farmer) нужно
с помощью лодки переправить волка (wolf), козу (goat) и капусту
(cabbage) с западного (w) берега на восточный (e) берег реки. Лодка
одновременно может перевозить не более двух пассажиров, один из
которых сам фермер. Если волк останется на берегу с козой, то он
ее съест. Если коза останется на берегу с капустой, то она ее съест.
В присутствии фермера поедание невозможно.
Состояние задачи (state) можно представить списком из четырех
элементов, каждый из которых обозначает берег, на котором находится соответственно человек, волк, коза и капуста. Например,
список (e w e w) означает, что человек и коза находятся на восточном берегу, а волк и капуста – на западном.
Процесс поиска решения на графе состояний представлен на
рис. 2.10. Здесь используется алгоритм поиска в глубину с возвратами и проверкой возможности существования сгенерированного
состояния. Для исключения зацикливания формируются списки
исследованных состояний.
Как видно из рис. 2.10, существует практически единственная
последовательность действий фермера, приводящая к нужному результату:
− фермер перевозит на восточный берег козу и возвращается один;
− перевозит волка или капусту и возвращается с козой;
− если на западном берегу осталась капуста, то перевозит ее,
если волк – то его;
− возвращается за оставшейся козой и перевозит ее.
Базовыми функциями, определяющими состояние списка, являются конструктор make_state и четыре функции доступа farmer_side,
wolf_side, goat_side, cabbage_side, которые можно определить как:
(defun make_state (f w g c) (list f w g c))
(defun farmer_side (state) (nth 0 state))
41
wwww
eeww
ewww
ewew
ewwe
wwew
wwww
eeew
ewew
weew
wwew
eeww
eeew
wwwe
weww
eewe
weww
wewe
eewe
eeee
ewee
wwee
wwew
ewwe
ewee
wwwe
Рис. 2.10. Поиск решения задачи о переправе в пространстве состояний
(defun wolf_side (state) (nth 1 state))
(defun goat_side (state) (nth 2 state))
(defun cabbage_side (state) (nth 3 state))
Функция opposite, возвращающая местоположение, противоположное исходному, имеет вид: (defun opposite (side) (cond ((equal
side ‘e) ‘w) ((equal side ‘w) ‘e)))).
Функция safe, проверяющая состояние на возможность «опасных» позиций, когда фермер находится на противоположном берегу от козы и капусты или от волка и козы, возвращает состояние без
изменений, если оно безопасно, и nil в противоположном случае.
Функция имеет вид:
(defun safe (state) cond
((and (equal (goat_side state) (wolf_side state)) // волк съест козу //
(not (equal (farmer_side state) (wolf_side state)))) nil)
((and (equal (goat_side state) (cabbage_side state)) // коза съест
капусту //
(not (equal (farmer_side state) (goat_side state)))) nil)
(t state)))
42
Функция safe используется при определении четырех функций
возможных переходов:
(defun farmer_takes_self (state)
(safe (make_state (opposite (farmer_side state)) (wolf_side state)
(goat_side state) (cabbage_side state))))
(defun farmer_takes_wolf (state) (cond ((equal (farmer_side state)
(wolf_side state))
(safe (make_state (opposite (farmer_side state)) opposite (wolf_side state))
(goat_side state) (cabbage_side state)))) (t nil)))
(defun farmer_takes_goat (state) (cond ((equal (farmer_side state)
(goat_side state))
(safe (make_state (opposite (farmer_side state)) (wolf_side state)
(opposite (goat_side state)) (cabbage_side state)))) (t nil)))
(defun farmer_takes_cabbage (state) (cond ((equal (farmer_side
state) (cabbage_side state))
(safe (make_state (opposite (farmer_side state)) (wolf_side state)
(goat_side state)
(opposite (cabbage_side state))))) (t nil)))
Функция path реализует поиск с возвратами в пространстве состояний и одновременно генерирует эти состояния путем рекурсивных вызовов. Для предотвращения попадания в замкнутые циклы
используется список просмотренных состояний been_list. Для проверки отсутствия текущего состояния в списке используется функция member. Последовательность состояний, приводящая к цели
(goal), находится в списке been_list, причем в обратном порядке.
Для инверсии этого списка используется функция reverse.
(defun path (state goal been_list) (cond ((null state) nil)
((equal state goal) reverse (cons state been_list))) ((not (member
state been_list))
(or (path (farmer_takes_self state) goal (cons state been_list))
(path (farmer_takes_wolf state) goal (cons state been_list))
(path (farmer_takes_goat state) goal (cons state been_list))
(path (farmer_takes_cabbage state) goal (cons state been_list))))))
Для вызывающей функции solve_fwgc параметрами являются
начальное и целевое состояния, причем been_list при первом вызове функции path присвоено значение nil: (defun solve_fwgc (state
goal) (path state goal nil).
Следует отметить, что в LISP программисту приходится реализовывать стратегию поиска в явном виде, однако данный недостаток компенсируется возможностью наглядного представления «поведения»
программы в процессе поиска решения в пространстве состояний.
43
3. РАСПОЗНАВАНИЕ ОБРАЗОВ
3.1. Описание объектов набором признаков
Одним из важнейших направлений искусственного интеллекта является распознавание образов. Любая биологическая система, существующая в изменчивой среде, вынуждена распознавать
окружающие объекты, например, выделяя из них съедобные или
опасные. Методы распознавания находят широкое применение в
экспертных системах, в робототехнике, в системах идентификации
и контроля доступа, а также являются необходимым элементом эвристического поиска решений, позволяя провести ранжирование
возможных состояний.
Длительное время вопросы распознавания рассматривались человеком лишь с позиций методов биологии и психологии, причем
целью изучения являлись в основном качественные характеристики, не позволяющие вскрыть и точно описать соответствующий
механизм принятия решений. Появление кибернетики позволило
ввести в изучение психологического процесса распознавания образов, лежащего в основе принятия любых решений, количественные
методы, что открыло принципиально новые возможности в исследовании и проектировании систем распознавания.
Исторически сложилось так, что многие задачи распознавания,
например распознавание текста, устной речи, оценка авиационной
ситуации в районе аэропорта авиадиспетчером, распознавание посадочной полосы летчиком в сложных условиях и т. п., человек, как
правило, решает достаточно быстро и эффективно. Примечательно,
что в процессе такой деятельности число принимаемых решений по
результатам распознавания ситуаций конечно, а число состояний
внешней среды, оцениваемых в процессе распознавания и собственно приводящих к принятию решения, может быть практически
бесконечным. Например, машинистка, печатающая под диктовку,
из множества вариантов произношения одного и того же звука выбирает только один, ударяя по соответствующей клавише пишущей
машинки. В результате она безошибочно печатает слова, несмотря
на некоторое их искажение при устном произнесении. Конечно, правильность печатаемого теста зависит от степени искажений, причем,
начиная с какого-то их уровня, число ошибок резко возрастает.
К принятию такого конечного числа решений человек подготовлен всем своим жизненным опытом. Попытка автоматизации процессов, необходимым элементом которых является распознавание,
44
привела к тому, что, прежде всего, были созданы автоматы, способные реагировать на множество изменений характеристик внешней
среды некоторым ограниченным числом рациональных решений
(реакций) исполнительных органов этих автоматов. Например,
автомат, управляющий технологическим процессом выпуска какой-либо продукции, реагирует на случайные изменения качества
продукции путем регулирования количества той или иной компоненты исходного материала, режима работы и т. п., но только при
достижении определенного уровня этих изменений. Таким образом, реакция осуществляется не на любое изменение, а на их множество, превышающее некоторый порог, что похоже на возбуждение нейронов.
Основными целями замены человека в системах, требующих
распознавания, являются:
− освобождение человека от однообразных или опасных операций;
− повышение качества выполняемых работ;
− повышение скорости решения задач.
В течение достаточно продолжительного времени проблема распознавания привлекает внимание специалистов в области прикладной математики и информатики. Следует отметить работы
Р. Фишера, выполненные в 20-х годах XX века и приведшие к формированию дискриминантного анализа как одного из разделов
теории и практики распознавания. В 50–60-е годы ХХ века на основе теории статистических решений были найдены алгоритмы,
обеспечивающие отнесение нового объекта к одному из заданных
классов. В рамках кибернетики начало формироваться новое научное направление, связанное с разработкой теоретических основ
и практической реализацией систем распознавания объектов, явлений, процессов. Новая научная дисциплина получила название
«Распознавание образов».
Таким образом, базой для решения задач распознавания послужили результаты классической теории статистических решений.
В последующем математический аппарат теории распознавания
образов расширился за счет применения разделов прикладной математики, теории информации, методов алгебры логики, математического программирования и системотехники.
Любой физический объект или процесс характеризуется набором некоторых параметров (характеристик, свойств), которые,
собственно, и позволяют отличать один объект от другого. Объекты, имеющие похожие параметры, можно объединить в группу или
45
класс. Отнесение некоторого объекта к одной из известных групп
называется распознаванием или классификацией.
Измеряемые или вычисляемые свойства объектов, позволяющие как классифицировать объекты, так и отличить классы друг
от друга, называются признаками. Совокупность конкретных значений признаков, относящихся к одному объекту, называется образом объекта. Можно сказать, что образ это информационная модель объекта, позволяющая отличить его от других объектов в процессе распознавания.
Понятие класс в распознавании образов можно определить как
множество образов, обладающих близкими значениями признаков. Такие образы называются элементами класса.
В пределе каждый класс может состоять только из одного элемента, как, например, при распознавании человека. В таком случае принято говорить не о распознавании или классификации, а
об опознавании или идентификации образа. С другой стороны, все
множество распознаваемых образов может быть разделено всего на
два класса, например «свой» и «чужой».
Разработчикам системы распознавания необходимо решить целый ряд достаточно трудных задач.
В первую очередь следует определить полный перечень признаков, характеризующих объекты, для распознавания которых
разрабатывается система. Главное в решении этой задачи – найти
все возможные признаки, характеризующие существо распознаваемых объектов. Любые ограничения, любая неполнота, могут
привести к ошибкам или даже полной невозможности правильной
классификации объектов. Выбор признаков – сугубо эвристическая операция, зависящая от изобретательности разработчика, так
как не существует способов их автоматической генерации.
Все возможные признаки можно разделить на следующие типы:
детерминированные, вероятностные, логические и структурные.
Детерминированные признаки – это такие характеристики относящихся к одному классу образов, которые имеют конкретные
и постоянные числовые значения. Примером детерминированных
признаков являются сведенные в единую таблицу технические характеристики компьютеров. Следует отметить, что при таком представлении число характеристик по каждому компьютеру одинаково.
Необходимо иметь в виду, что в задачах распознавания с детерминированными признаками ошибки измерения этих признаков
не играют роли, если точность измерений признака значительно
выше, чем различие этого признака у образов, отнесенных к раз46
ным классам. В системе, использующей только детерминированные признаки, распознавание производится путем сравнения полученных значений признаков распознаваемого образа с имеющимися значениями признаков уже классифицированных образов. Решение принимается только при полном совпадении этих значений.
Вероятностные признаки – это характеристики образа, носящие
случайный характер. Отличаются эти признаки тем, что в силу
случайности соответствующей величины признак у различных образов, относящихся к одному классу, может принимать различные
значения. В противном случае признак следует считать детерминированным. Возможны и такие случаи, когда значение признака
образа из одного класса практически совпадает со значением признака у образа из другого класса, т. е. области изменения признака
у разных классов пересекаются.
Для того чтобы можно было в условиях случайности говорить о
достоверности распознавания, следует потребовать, чтобы вероятности наблюдения конкретных значений признака в своем классе
были существенно больше, чем в других классах. В противном случае эффективность такого признака недостаточна для достоверного
решения, и следует искать другие признаки, имеющие большую
разделительную способность.
Как известно из теории вероятностей, случайная величина характеризуется законом распределения вероятностей, который
определяется функцией распределения случайной величины
Fab(x), т. е. вероятностью нахождения случайной величины x в диапазоне a – b, или плотностью распределения вероятностей (ПРВ)
b
p(x), которые связаны следующим образом: Fab (x) = ò p(x)dx.
a
В частности ПРВ нормального или Гауссова закона распределения
имеет вид p(x) =
1
-
(x-m)2
2σ2
, где m – математическое ожидание
σ 2π
или среднее значение случайной величины x, σ – среднеквадратичное отклонение x.
Нахождение ПРВ значений признака для образов из одного
класса представляет собой достаточно сложную задачу, особенно
в части формирования репрезентативной выборки, которая бы гарантировала достаточную достоверность ПРВ.
Логические признаки – это характеристики образа, представленные в бинарном виде (0 или 1), т. е. не имеющие количественe
47
ного выражения, являющиеся качественными суждениями о наличии либо об отсутствии некоторых свойств у данного образа.
К логическим признакам можно отнести также такие признаки,
у которых важна не величина, а лишь факт попадания или непопадания этой величины в некоторый заданный интервал.
Следует отметить, что при наличии нескольких интервалов
признак является детерминированным, но при необходимости его
вполне можно преобразовать в совокупность логических признаков. Для этого каждый интервал детерминированного признака
нужно представить как отдельный логический признак, который
получит значение 1 при попадании в него значения признака конкретного образа. Например, одним из признаков, связанных с риском заболевания гипертонией, является избыточный вес. Пусть
этот признак может попадать в один из четырех диапазонов – недостаточный, нормальный, повышенный, избыточный вес, т. е. при
таком представлении признак является детерминированным. Заменив его четырьмя логическими признаками, получим с одной
стороны увеличение числа признаков у распознаваемого образа, а
с другой стороны – возможность использовать методы распознавания образов, описываемых логическими признаками.
Структурные признаки обязаны своим появлением проблеме распознавания изображений и представляют собой непроизводные, т. е.
элементарные, не производимые из других элементарных признаков
элементы или примитивы изображения объекта распознавания.
Следует отметить, что традиционно для описания изображений
используются его разложения в ряды по ортогональным функциям, например ряды Фурье, полиномы Эрмита, Лежандра, Чебышева, разложения Карунена–Лоэва. Однако преимущества структурного описания в отличие от разложений состоит в том, что оно понятнее для человека, решающего задачу распознавания объекта по
его изображению, более приемлемо для компьютерной реализации
системы распознавания, менее трудоемко в вычислительном плане
и лишено потерь информации, свойственных разложениям.
Отличающиеся объекты могут состоять из одинаковых непроизводных элементов. Введение правил комбинирования, определяющих способы построения различных объектов из ограниченного
числа непроизводных элементов, позволяет получить описание
разнообразных объектов.
Для описания какого-либо объекта непроизводные элементы
объединяются в цепочки (предложения) по своему, характерному
только для этого объекта, набору правил. В результате связки из
48
непроизводных элементов (структурных признаков) образуют образ, аналогично тому, как предложения языка строятся путем соединения слов, в свою очередь состоящих из букв, что аналогично
синтаксису естественного языка. Отсюда структурные признаки
носят еще название лингвистических или синтаксических признаков, а распознавание образов, описываемых структурными признаками, называют лингвистическим. Далее такие образы и методы
распознавания не рассматриваются.
Признаки, характеризующие образ, могут относиться к разным
типам. Например, образы плоских многоугольных объектов с отверстием или без него могут включать в себя вероятностный (площадь), детерминированный (число вершин контура) и логический
(наличие отверстия) признак.
3.2. Метрики в пространстве признаков
Числовые значения признаков по каждому из образов можно
интерпретировать как координаты точек, представляющих эти образы в многомерном пространстве признаков. Если число признаков, используемых при распознавании, равно n, то образ можно
представить в виде некоторого упорядоченного набора значений
признаков или вектора признаков вида x = (x1,..., xn), где xi – значение i-го признака данного образа.
В многомерном пространстве, осями координат которого являются отдельные признаки, каждый образ определяется точкой. Соответственно каждый класс занимает некоторую область в
n-мерном пространстве признаков. Форма этой области определяется степенью отличия элементов класса и может задаваться границами, например плоскостями, или характеристиками признаков
класса, например векторами средних значений и среднеквадратичных отклонений признаков.
Важную роль в распознавании образов играет определение понятия меры близости или расстояния как непосредственно между
образами, так и между отдельным образом и множеством образов
(классом), а также между множествами образов. Выбор меры близости во многом зависит от характера признаков, причем разные
меры близости часто дают разные результаты распознавания.
Существуют как метрические меры близости, например Евклидово расстояние или расстояние Махаланобиса, так и неметрические меры, например косинусное расстояние или мера Танимото.
49
Мера близости считается метрической, если вычисленное с ее помощью расстояние dlp между точками l и p в пространстве признаков
обеспечивает выполнение следующих аксиом:
− симметричность расстояния (dlp = dpl);
− правило треугольника (dlh + dhp > = dlp);
− положительность расстояния (dlp > = 0, причем dlp = 0 только
если l = p).
Наиболее часто в пространстве признаков используется Евклидово расстояние между точками:
dlp =
n
å (xil - xip )2 , (3.1)
i=1
где xil, xip – i-е координаты точек l и p соответственно. Так как при
распознавании важно не абсолютное, а относительное расстояние
между точками в пространстве признаков, то для ускорения процесса квадратный корень в (3.1) при распознавании не вычисляется. Тогда в векторной форме Евклидово расстояние между двумя
образами в пространстве признаков можно представить как:
dlp = (xl – xp) × (xl – xp)T,
(3.2)
где × – операция умножения матриц (вектор – частный случай матрицы), xl, xp – вектор-строка признаков для образов l и p соответственно.
Евклидово расстояние является частным случаем расстояния
Минковского, которое вычисляется как
n
λ
dlp = å xil - xip , (3.3)
i=1
где λ – целое положительное число.
Если в (3.3) принять λ = 1, то получим сумму абсолютных значений разности двух образов по каждому признаку, которая называется Манхеттенским расстоянием:
n
dlp = å xil - xip . (3.4)
i=1
За расстояние доминирования между двумя образами принимается максимальная разность значений признаков, т. е.
50
(
)
dlp = max xil - xip . i=1,n
(3.5)
Если значения разных признаков по всему множеству образов
существенно отличаются, например число углов замкнутого контура и его длина в миллиметрах, то признаки следует нормировать.
Если этого не сделать, то одинаковые отклонения отличающихся
по величине признаков будут оказывать одинаковое влияние на
результат. Например, пусть три образа описываются двумя признаками x1, x2, причем первый образ имеет значения – x1 = 9,
x2 = 1000, второй – x1 = 4, x2 = 1010, а третий – x1 = 10, x2 = 986.
По Манхеттенскому расстоянию (3.4) без нормирования признаков второй и третий образы находятся на одинаковом расстоянии
от первого образа (d12 = |9 – 4| + |1000 – 1010| = 5 + 10 = 15; d13 =
= |9 – 10| + |1000 – 986| = 1 + 14 = 15), хотя из сравнения значений
признаков видно, что отклонение в признаке x2 у разных образов
вполне может быть в пределах погрешности его определения.
Нормированное значение признака x′ вычисляется как –
x - xmin
x¢ =
, где xmax, xmin – возможные максимальное и миxmax - xmin
нимальное значения признака x. В результате все признаки получают одинаковый диапазон изменения – от нуля при x = xmin до
единицы при x = xmax.
Нормированные значения признаков для образов из при9-4
1000
= 0,833, x2¢ =
веденного выше примера: первый образ – x1¢ =
10 - 4
1010
4
1000 - 986
= 0,833, x2¢ =
= 0,583; второй образ – x1′ = 0, x2′ = 1; третий об4
1010 - 986
раз – x1′ = 1, x2′ = 0. Теперь по Манхеттенскому расстоянию второй
образ находится дальше от первого, чем третий (d12 = |0,833 – 0| +
+ |0,583 – 1| = 1,25; d13 = |0,833 – 1| + |0,583 – 0| = 0,75), что больше
соответствует реальности.
Учесть различие диапазонов изменений признаков позволяет и
расстояние Канберра:
n
xil - xip
i=1
xil + xip
dlp = å
,
(3.6)
которое не требует предварительного нормирования признаков. Из
(3.6) следует, что чем меньше абсолютное значение признака, тем
большее влияние он оказывает на результат вычисления расстояния. Для рассмотренного выше примера расстояние Канберра меж51
ду первым и вторым образами (d12 =
9-4
1000 -1010
= 0,39)
9 + 4 1000 + 1010
будет больше, чем расстояние между первым и третьим образами
9 -10 1000 - 986
(d13 =
+
= 0,06), что соответствует соотношению
9 + 10 1000 + 986
между образами по Манхеттенскому расстоянию с нормированными признаками.
Признаки могут оказывать разное влияние на результат распознавания. Например, отличие в числе вершин на единицу более
существенно, чем такое же по величине отличие в длине контура.
Чтобы учесть этот момент иногда применяют весовые коэффициенты признаков, что приводит к изменению формул (3.1)–(3.6).
Например, формула для вычисления Евклидова расстояния будет
иметь вид dlp =
n
å ηi (xil - xip )2 ,
i=1
+
где ηi – весовой коэффициент i-го
признака.
Косинусное расстояние не является метрическим, т. е. представляет собой угол αlp между векторами xl и xp. В векторной форме оно
вычисляется как
æ
ö÷
xl ´ xTp
ç
÷÷,
α lp = ArcCosçç
(3.7)
çç (x ´ xT )1/2 (x ´ xT )1/2 ÷÷÷ l
l
p
p
è
ø
и дает хорошие результаты при распознавании классов, образы
которых вытянуты вдоль радиус-вектора в пространстве признаков. Так как расстояние (3.7) основано на скалярном произведении
1/2
(x p ´ xTp )1/2 ños(α ), то в качестве альвекторов xl ´ xTp = (xl ´ xT
l )
тернативы косинусному расстоянию можно использовать обратное
значение скалярного произведения векторов.
Если все признаки рассматриваемых образов логические, т. е.
могут принимать только значения {0,1}, то в качестве меры близости можно использовать расстояние Хемминга
n
dlp = å xil Å xip , i=1
(3.8)
где Å – сложение по модулю два. Из (3.8) следует, что расстояние
Хемминга есть число признаков, значения которых у сравниваемых образов не совпадают.
52
Неметрической мерой близости для образов, описываемых логическими признаками, является мера Танимото
dlp =
xl ´ x pT
xl ´ xlT + x p ´ x pT - xl ´ x pT
.
(3.9)
Здесь числитель характеризует число совпадающих единичных
признаков в сравниваемых образах, а знаменатель – число несовпадающих единичных признаков. Мера Танимото изменяется в
пределах от единицы (вектора xl и xp совпадают) до нуля (совпадающие единичные признаки в векторах xl и xp отсутствуют). Эта мера
широко применяется в информационном поиске, классификации
болезней, животных или растений.
При разработке систем распознавания кроме способа определения меры близости между точками в пространстве признаков часто
приходится задавать и способ определения расстояния между точкой и множеством точек, которые относятся к некоторому классу.
Как правило, при задании этого способа используются статистические характеристики признаков класса: вектор средних значений
(математических ожиданий) m и матрица ковариации (ковариационная матрица) Cov.
Статистические характеристики признаков класса вычисляются следующим образом. Пусть набор n-мерных векторов, описывающих в пространстве признаков множество образов, относящихся к
æ x11 x12 ... ... x1m ö÷
çç
÷
одному классу, задан в виде матрицы X = ççç ... ... ... ... ... ÷÷÷,
÷
ç
çèxn1 xn2 ... ... xnm ÷÷ø
где m – число образов, составляющих данный класс.
Тогда
1 m
m = (µ1, µ2 ,..., µn ) : µ i = å xik , (3.10)
m k=1
m
ï
... D1n ö÷ ì
ïD = 1
(xik - µ i )2
÷÷ ï
å
ï ii m
... D2n ÷÷ ï
k=1
÷÷ : ï
, (3.11)
í
m
... ... ÷÷ ï
1
÷÷ ï
ïDij = å (xik - µ i )(xjk - µ j )
... Dnn ÷ø ï
ï
m k=1
ï
î
где xik – значение i-го признака k-го образа (k = 1, …, m); µi –
среднее значение i-й компоненты вектора признаков; Dii – дис-
æ D11
çç
çç D
21
Cov = çç
çç ...
çç
èç Dn1
D12
D22
...
Dn2
53
персия i-го признака; Dij – коэффициент ковариации i-го и j-го
признаков.
Из (3.11) видно, что ковариационная матрица симметрична относительно главной диагонали и, следовательно, необходимо вычислять только половину ее элементов. Ковариация характеризует
степень линейной зависимости случайных величин. Если ковариация равна нулю, то величины называются некоррелированными.
Необходимо отметить важный факт, касающийся ковариационной матрицы. Если число образов, относящихся к некоторому
классу, меньше или равно числу признаков, то ковариационная
матрица, вычисляемая по этому множеству образов, будет вырожденной при любых значениях признаков каждого образа. Справедливость данного утверждения легко показать, если представить
ковариационную матрицу как результат матричного умножения
Cov = Xc×XcT, где Xc = (x1–m, ... xm–m); x=(x1k, ... xnk) – вектор
признаков k-го образа. Как известно из линейной алгебры, определитель матрицы, полученной таким образом, равен нулю, если
m ≤ n, следовательно, обратная ковариационная матрица существует только при выполнении условия m > n.
Наиболее простой способ определения расстояния между точкой и классом в пространстве признаков состоит в использовании
формул (3.1)–(3.7) с заменой вектора признаков одной из точек на
вектор средних значений признаков класса. Однако такой подход
не учитывает степень компактности класса, которая определяется
дисперсиями его признаков. Следующие два расстояния – Евклидово с учетом дисперсии и Махаланобиса позволяют устранить этот
недостаток.
Евклидово расстояние с учетом дисперсий между точкой и классом в пространстве признаков:
d = (x – m) D–1 (x –m)T,
(3.12)
где, x – вектор признаков точки; m – вектор средних значений признаков класса; D – диагональная матрица (диагональные элементы – дисперсии признаков).
Более полно учесть статистические особенности признаков позволяет расстояние Махаланобиса:
d = (x–m) Cov–1 (x–m)T,
(3.13)
где Cov–1 – обратная ковариационная матрица признаков.
Расстояния (3.12) и (3.13) дают хорошие результаты для классов, имеющих эллипсоидную форму в пространстве признаков. Для
54
классов, имеющих более сложную форму, в качестве расстояния
между точкой и классом часто используется расстояние от точки
до ближайшего представителя класса или среднее значение расстояний от точки до всех точек класса, что существенно увеличивает
время вычислений, особенно при большом количестве точек, принадлежащих классу.
Третьим видом расстояний, которое иногда приходится задавать при разработке системы распознавания, является расстояние
между множествами точек. Наиболее простой способ – использование расстояний (3.1)–(3.7) с заменой векторов признаков точек на
вектора средних значений признаков множества точек. Такой способ дает хорошие результаты для компактных множеств, имеющих
эллипсоидную форму. Для множеств точек сложной формы можно
использовать приведенные ниже расстояния.
Расстояние ближнего соседа – расстояние между ближайшими
точками, принадлежащими разным множествам w1 и w2, т. е.
d(w1,w2) = min(dlp), (l = 1,m1; p = 1,m2),
(3.14)
где m1, m2 – число точек в w1 и w2 соответственно.
Расстояние дальнего соседа – расстояние между самыми дальними точками, принадлежащими разным множествам w1 и w2, т. е.
d(w1,w2) = max(dlp), (l = 1,m1; p = 1,m2),
(3.15)
К-расстояние или расстояние по Колмогорову между множествами определяется как
1/ λ
m1 m2
æ
ö
λ
d(w1,w2 ) = ç 1 å å dlp
çè m1m2 l=1 p=1 ÷÷÷ø
,
(3.16)
где λ – целое число в диапазоне ± ∞. При λ –> ∞ К-расстояние вырождается в расстояние дальнего соседа, а при λ –> –∞ – в расстояние ближнего соседа.
Отметим, что в (3.14)–(3.16) способ определения расстояние
между точками dlp выбирается разработчиком системы распознавания, например из (3.1)–(3.7).
3.3. Методы кластеризации
При разработке системы распознавания используется некоторое
множество образов, признаки которых известны. Такое множество
55
принято называть обучающим. После выбора признаков, по которым будет выполняться распознавание, возникает необходимость
классификации образов из обучающего множества и составление
априорного алфавита классов. Если число классов задано и известна принадлежность классам образов из обучающего множества, то
решение поставленной задачи тривиально.
Однако иногда возникает необходимость разбиения совокупности
образов на группы, причем число групп необязательно известно заранее. Например, классификация различных видов бабочек в биологии или классификация языков Новой Гвинеи в лингвистике. Задача разделения предъявленных образов на группы с близкими значениями признаков в образах каждой группы называется кластеризацией, а каждую полученную группу часто называют кластером.
Таким образом, различие между классом и кластером состоит
в том, что кластер получен в результате разбиения на подмножества множества образов с заранее неизвестной классификацией, а в
классе собраны образы, принадлежность которых к данному классу задана изначально. Если процесс создания системы распознавания включает в себя кластеризацию обучающего множества и ее результат удовлетворяет разработчиков, то в дальнейшем различие
между кластером и классом стирается.
Существуют разные математические методы и подходы к решению задачи кластеризации, причем многие основаны на анализе
распределения образов в пространстве признаков. Далее рассмотрены некоторые из них.
Пороговый алгоритм кластеризации состоит в следующем.
Пусть в пространстве признаков задано множество образов M = {x1,
…, xk, …, xm }, где xk – вектор признаков k-го образа, m – мощность
множества. Будем считать, что центр первого кластера w1 совпадает
с любым из образов множества, например с x1, т. е. w1 = {x1}. Далее
вычисляется расстояние d21 между образом x2 и центром кластера
w1. Если значение расстояния больше заранее заданной пороговой
величины t, то образ x2 принимается за центр нового кластера w2.
В противном случае образ x2 включается в кластер w1. Далее для
каждого следующего образа из M оцениваются расстояния от него
до уже имеющихся кластеров. Если все расстояния больше порога,
то образ относится к новому кластеру. Если часть расстояний меньше порога, то образ относится к ближайшему кластеру. Процедура
продолжается пока не будут исчерпаны все образы из множества M.
Следует отметить, что при добавлении образа в кластер характеристики кластера должны пересчитываться. Результат кластери56
зации зависит от значения порога, выбора центра первого кластера, порядка предъявления образов из множества М, и способов вычисления расстояния между отдельными точками и между точкой
и кластером.
Для кластеров сложной формы, например вытянутой или кольцеобразной, можно применить метод цепной кластеризации, являющийся разновидностью порогового алгоритма кластеризации.
В данном методе за расстояние между точкой и кластером в пространстве признаков принимается расстояние от точки до ближайшего представителя кластера, а способ определения расстояния
между точками выбирается разработчиком.
Метод заключается в следующем. В начале кластеризации некоторый образ считается принадлежащим к первому кластеру.
К данному кластеру присоединяются все образы, принадлежность
которых к какому-либо кластеру еще не установлена и расстояние
от которых до исходного образа меньше заранее заданного порога
t. Затем для каждого из присоединенных образов данная процедура повторяется. После того как к первому кластеру больше нельзя
отнести ни одного образа, в качестве исходного образа для второго
кластера из оставшихся в M образов берется произвольный образ.
Процедура повторяется до тех пор, пока не будут исчерпаны все образы из множества M.
Метод кластеризации слиянием тоже достаточно прост. В начале
каждый образ считается отдельным кластером, далее вычисляются
расстояния между всеми кластерами, т. е. формируется квадратная,
диагонально-симметричная таблица расстояний, строки и столбцы
которой – имеющиеся кластеры. На каждом шаге кластеризации
сливаются два самых близких кластера, после чего размер табл.
уменьшается на единицу, и вычисляются новые расстояния между
изменившимися по составу кластерами. Процесс прекращается,
если достигнуто заранее заданное число кластеров или расстояние
между ближайшими кластерами больше заранее заданного порога.
Данный метод требует задания способов определения расстояний между точками и между множествами точек, а также многократных вычислений изменяющихся на каждом шаге характеристик кластеров и расстояний между ними, что может стать достаточно трудоемкой задачей при большом количестве образов.
Метод кластеризации по k средним требует задания числа кластеров – k. На первом шаге в пространстве признаков произвольно выбирается положение k центров кластеров, необязательно совпадающих с какими-либо образами. Далее на каждом шаге, во57
первых, каждый образ относится к тому кластеру, расстояние до
центра которого для него минимально, а во-вторых, после распределения всех образов по кластерам производится перерасчет положения центров кластеров. Процесс продолжается до тех пор, пока
не стабилизируется состав кластеров.
Цель метода – минимизировать суммарное расстояние от центров кластеров до отнесенных к ним образов по всем кластерам.
Возможно схождение процесса к локальному минимуму, а также
отсутствие образов в некоторых кластерах, но, изменяя k и сравнивая результаты, можно найти подходящее число кластеров.
Результат кластеризации по k средним зависит не только от числа k, но и от способа выбора первоначального расположения центров кластеров. Один из способов их выбора из множества образов
M состоит в следующем. В качестве первого центра c1 выбирается
произвольный образ из M. В качестве второго центра c2 выбирается
образ, который находится на наибольшем расстоянии от c1. В качестве следующего центра cj выбирается образ x p Î M, который
находится на наибольшем расстоянии от ближайшего к нему уже
c=1,j-1
выбранного центра, т. е. d pj = max(min(dlc )). Процесс прекращаетl= j-1,m
ся после выбора k-го центра.
Существуют и более сложные методы кластеризации. Например,
в процессе кластеризации по k средним на каждом шаге возможна
оценка сформированных кластеров. По ее результатам кластеры с
недостаточным числом образов удаляются (их элементы распределяются по другим кластерам), расположенные близко друг к другу
кластеры сливаются в один, а кластеры со значительным разбросом точек в пространстве признаков разделяются на несколько более компактных.
3.4. Информативность признаков
Следующий важный этап в процессе разработки системы распознавания – разработка априорного словаря признаков. Располагая полным перечнем признаков и априорным алфавитом классов,
необходимо провести анализ диапазона возможного измерения
признаков, определить сложность и точность их расчета или измерения, а также оценить информативность выбранных признаков.
Сокращение числа признаков за счет удаления малоинформатив58
ных позволяет сократить время и повысить эффективность распознавания.
Информативность i-го признака для пары классов wl и wp можно
оценить по критерию Фишера
F (i) (wl ,w p ) =
(µ l - µ p )2
Dl + D p
,
(3.17)
где µl, µp и Dl, Dp – математические ожидания и дисперсии i-го признака для классов wl и wp соответственно.
На рис. 3.1 приведено сравнение плотностей распределения вероятности значения p(x) по одному признаку для двух пар классов – w1, w2 и w1, w3 при одинаковых значениях математического
ожидания (µ2 = µ3) и разных дисперсиях (D2 < D3) для данного признака. Из рис. 3.1 видно, что вероятность правильного распознаваp (x)
p1 (x)
p2 (x)
µ2
µ1
x
Область ошибочного распознавания
p (x)
p1 (x)
µ1
p3 (x)
µ3
x
Рис. 3.1. Плотность распределения вероятности значения признака
59
ния для пары классов w1, w2 несколько больше чем для пары w1,
w3, причем вычисленные для этих пар классов по (3.17) критерии
Фишера F(w1,w2) > F(w1,w3).
Таким образом, с увеличением критерия Фишера растет вероятность правильного распознавания по данному признаку, т. е.
критерий Фишера позволяет оценить информативность отдельного признака для пары классов. Информативность признака можно считать недостаточной, если критерий Фишера имеет слишком
низкие значения для всех пар классов. Такой признак можно исключить из априорного словаря признаков.
Следует отметить, что вполне возможно некоторый признак будет иметь низкие значения критерия Фишера для всех пар классов
кроме одной пары, причем значения критерия Фишера для этой
пары по всем другим признакам будут очень низкие. В таком случае данный признак не следует исключать из словаря признаков,
так как только он позволяет эффективно распознавать данную пару
классов.
Определить информативность признака можно и на основе вычисления его энтропии. Энтропия множества событий x = {x1, x2,
N
… xN}, где xi – отдельное событие, равна H(x) = -å pi log2 pi , где
i=1
pi – вероятность события xi. Энтропию можно интерпретировать
как «среднюю неопределенность источника информации».
В теории распознавания образов используются разные критерии
оценки информативности признака x с возможными значениями
x = {x1, x2, … xN} на всем множестве классов W = {w1, w2, … wK}.
Например, I(x) – информативность признака x, можно определить
как средневзвешенное количество информации по всем значениям
признака на множестве классов W, т. е.
ö÷
N æ
K
ç
I (x) = 1 + åçç p(xi ) å p(xi / wj )log2 p(xi / wj )÷÷÷, (3.18)
ç
÷÷
i=1çè
j=1
ø
где p(xi/wj) – условная вероятность наличия у относящегося к классу wj образа, значения признака xi, p(xi) – вероятность появления
значения xi у признака x на всем множестве классов W.
Другой способ определения I(x) основан на суммировании уровней функциональной зависимости значения признака xi и класса
wj по всем значениям признака на всем множестве классов с использованием p(xi,wj) – совместной вероятности появления значения признака xi и класса wj, т. е.
60
N K
p(xi ,wj )
i=1 j=1
p(xi ) p(wj )
I (x) = åå p(xi ,wj )log2
,
(3.19)
где p(wj) – вероятность появления образа, относящегося к классу
wj. Используемые в формулах (3.18) и (3.19) априорные вероятности можно оценить по частоте соответствующих событий в обучающем множестве.
Оба подхода к определению I(x) дают минимальное значение
информативности признака, если отсутствует какая-либо связь
между ним и распознаваемыми классами, а максимальное значение информативность признака достигает при выраженном наличии такой связи.
Рассмотрим простейший пример определения наиболее информативного признака из трех {x, y, z}, каждый из которых может
принимать значения {1, 2, 3, 4}, на приведенном в табл. 3.1 множестве из 16 образов, относящихся к четырем классам W {I, II, Ш, IV}.
Из табл. 3.1 видно, что значения признака x функционально связаны с соответствующими классами, для признака y такая
связь отсутствует, а у признака z эта связь носит статистический
характер. Таким образом, признаки должны иметь соответственно максимальную, минимальную и промежуточную информативность. Проверим это утверждение для двух приведенных выше способов вычисления информативности признаков, выполнив необходимые вычисления по формулам (3.18) и (3.19) с учетом данных из
табл. 3.1.
Вероятности появления образов, относящихся к классам I, II, III
и IV, p(I) = p(II) = p(III) = p(IV) = 4/16 = 0,25. У признака x значение
1 наблюдается на четырех эталонах, следовательно, p(x = 1) = 1/4 =
= 0.25. Аналогично, p(x = 2) = p(x = 3) = p(x = 4) = 0,25. У признаков
y и z вероятности появления соответствующих значений совпадают
с данными, полученными для признака x.
Таблица 3.1
Образы для определения информативности признаков
Образ
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16
x
y
z
W
1
1
1
I
1
2
1
I
1
3
2
I
1
4
4
I
2
1
2
II
2
2
2
II
2
3
3
II
2 3 3 3 3 4 4 4 4
4 1 2 3 4 1 2 3 4
1 3 3 4 2 4 4 1 3
II III III III III IV IV IV IV
61
Определим информативность признака x. Условная вероятность
наличия у образа, относящегося к классу I, значения признака
x = 1 p(1/I) = 1/4 = 1. Аналогично, p(2/II) = p(3/III) = p(4/IV) = 1, а
остальные условные вероятности p(1/II) = p(1/III) = p(1/IV) = p(2/I) =
= p(2/III) = p(2/IV) = p(3/I) = p(3/II) = p(3/IV) = p(4/I) = p(4/II) =
= p(4/III) = 0/4 = 0. Согласно (3.18) информативность I(x) = 1.
Совместная вероятность появления образа, относящегося к
классу I, со значением признака x = 1 p(1,I) = 4/16 = 0,25. Аналогично p(2,II) = p(3,III) = p(4,IV) = 0,25, а остальные совместные вероятности p(2,I) = p(3,I) = p(4,I) = p(1,II) = p(3,II) = p(4,II) = p(3,I) =
= p(3,II) = p(3,IV) = p(4,I) = p(4,II) = p(4,III) = 0/16 = 0. Согласно
(3.19) информативность I(x) = 2.
Определим информативность признака y. Условная вероятность
наличия у образа, относящегося к классу I, значения признака
у = 1 p(1/I) = 1/4 = 0,25. Аналогично, p(1/II) = p(1/III) = p(1/IV) =
= p(2/I) = p(2/II) = p(2/III) = p(2/IV) = p(3/I) = p(3/II) = p(3/III) =
= p(3/IV) = p(4/I) = p(4/II) = p(4/III) = p(4/IV) = 1/4 = 0,25. Согласно
(3.18) информативность I(y) = –1.
Совместная вероятность появления образа, относящегося к
классу I, со значением признака y = 1 p(1,I) = 1/16 = 0,0625. Аналогично p(2,I) = p(3,I) = p(4,I) = p(1,II) = p(2,II) = p(3,II) = p(4,II) =
= p(3,I) = p(3,II) = p(3,III) = p(3,IV) = p(4,I) = p(4,II) = p(4,III) =
= p(4,IV) = 1/16 = 0,0625. Согласно (3.19) информативность I(y) = 0.
Определим информативность признака z. Условная вероятность
наличия у образа, относящегося к классу I, значения признака
z = 1 p(1/I) = 2/4 = 0,5. Аналогично, p(2/II) = p(3/III) = p(4/IV) =
= 0,5. Остальные условные вероятности p(2/I) = p(4/I) = p(1/II) =
= p(3/II) = p(3/I) = p(4/III) = p(2/III) = p(1/IV) = p(3/IV) = 1/4 = 0,25;
p(3/I) = p(4/II) = p(1/III) = p(2/IV) = 0/4 = 0. Согласно (3.18) информативность I(z) = –0,5.
Совместная вероятность появления образа, относящегося к
классу I, со значением признака z = 1 p(1,I) = 2/16 = 0,125. Аналогично p(2,II) = p(3,III) = p(4,IV) = 0,125, а остальные совместные
вероятности p(2,I) = p(4,I) = p(1,II) = p(3,II) = p(2,III) = p(4,III) =
= p(1,IV) = p(3,IV) = 1/16 = 0,0625; p(3,I) = p(4,II) = p(1,III) = p(2,IV) =
= 0. Согласно (3.19) информативность I(z) = 0,5.
Из примера видно, что соотношения информативности признаков, вычисленных по (3.18) и (3.19), в целом совпадают, хотя
конкретные значения и отличаются, что обусловлено различными
подходами к определению информативности признака в (3.18) и
(3.19).
62
Существуют и другие, более трудоемкие способы выявления
малоинформативных признаков, например метод главных компонент, часто применяемый для понижения размерности пространства признаков при распознавании изображений. Он основан на
вычислении матрицы ковариации исходного вектора признаков
по имеющемуся множеству образов и анализе собственных чисел
полученной матрицы. В качестве наиболее информативных отбираются признаки с наибольшими собственными числами, после
чего выполняется преобразование имеющихся образов из исходного пространства признаков в пространство меньшей размерности.
3.5. Построение классификаторов
После формирования набора признаков необходимо выполнить
описание классов на языке априорного словаря признаков. Описание классов – достаточно трудоемкая задача, требующая глубокого
изучения свойств объектов распознавания. В результате каждому
классу необходимо поставить в соответствие числовые параметры
детерминированных и вероятностных признаков и определить значения логических признаков. Значения этих параметров можно
получить в результате: обработки данных, полученных в ходе специально поставленных экспериментов; математического моделирования; извлечения необходимой информации из литературных
источников или выбранного ранее обучающего множества.
После получения описания распознаваемых классов необходимо выбрать алгоритм классификации, обеспечивающий отнесение
распознаваемого образа к соответствующему классу с максимальной вероятностью.
Наиболее простым подходом к решению данной задачи является
классификация по расстоянию в пространстве признаков. В таком
случае необходимо выбрать только способ определения расстояния
между точкой, соответствующей распознаваемому образу в пространстве признаков, и множеством точек, соответствующих одному из классов. Примеры определения таких расстояний приведены
ранее при рассмотрении различных метрик пространства признаков (см. п. 3.2).
После определения расстояний от распознаваемого образа до
всех классов образ относится к тому из них, расстояние до которого
минимально. Если это расстояние превышает некоторый порог, то
образ классифицируется как нераспознанный (в системах распоз63
навания принято резервировать нулевой номер за классом – «нераспознанные образы»).
Такой подход к классификации образа дает хорошие результаты для классов, имеющих компактную эллипсоидную форму в пространстве признаков, но требует значительных расходов времени
на определения расстояний, особенно при большом числе классов.
Например, вычисление расстояния Махаланобиса по (3.13) требует
для каждого класса выполнить умножение матицы на вектор-столбец, что достаточно трудоемко при большом количестве признаков.
Еще один недостаток заключается в том, что при таком подходе
сложно учитывать априорную вероятность появления образов для
каждого класса и стоимость ошибки распознавания. Например,
классификация сотрудников, входящих в охраняемое помещение,
должна учитывать как вероятность появления чужого, так и возможные потери при его пропуске в помещение.
Наиболее простым, но достаточно трудоемким, особенно при большой мощности обучающего множества, методом распознавания по
расстоянию в пространстве признаков можно признать метод, в котором находятся расстояния от распознаваемого образа до всех образов
из обучающего множества, после чего он относится к классу ближайшего образа. Следует отметить, что именно такой метод распознавания применяется, если в обучающем множестве каждый класс представлен только одним образом, т. е. при идентификации образа.
Разновидность этого метода, позволяющая учесть статистические характеристики классов, заключается в том, что распознаваемый образ относится к тому классу, представителей которого
больше всего находится вокруг него в некоторой области заранее
заданной формы и размерами, например в сфере заданного радиуса. Следует отметить, что в данном случае могут потребоваться достаточно сложные вычисления из аналитической геометрии многомерных пространств, причем возможно с неевклидовой метрикой.
Другой подход к решению задачи классификации неизвестного
образа заключается в разбиении пространства признаков на области D1, D2,..., Dm, соответствующие классам, причем разбиение
должно быть выполнено таким образом, чтобы обеспечить минимальную вероятность ошибки распознавания. В таком случае результатом классификации является отнесение образа, имеющего
вектор признаков x, к g-му классу, если эта точка лежит в соответствующей классу области Dg пространства признаков.
Разбиение пространства признаков на области, соответствующие разным классам, можно представить как построение границ,
64
описываемых функциями Sg(x). Эти функции должны обладать
следующим свойством: если образ, описывамый вектором признаков x, фактически относится к g-му классу, то Sg(x) > Sj(x) для всех
j≠g. Отсюда легко определить выражение для разделяющей поверхности границы между областями Dg и Dk, соответствующих g-му и
k-му классам: Sg(x) – Sk(x) = 0. Очевидно, что форма границы зависит от вида разделяющей функции, например полиномиальной или
линейной, причем в последнем случае граница представляет собой
гиперплоскость в многомерном пространстве признаков или линию
в двумерном.
На первый взгляд, взаимное расположение классов в пространстве признаков, можно представить как пересекающиеся или непересекающиеся множества. В последнем случае разделяющие
границы могут быть проведены так, что распознавание, по крайней
мере, образов обучающего множества будет выполняться без ошибок. В случае пересекающихся классов от системы распознавания
можно добиться только минимизации среднего риска при ошибочном распознавании.
Выяснение вопроса – пересекаются ли классы в пространстве
признаков, часто сталкивается со значительными трудностями.
Дело в том, что в пространстве признаков класс представляет собой множество точек, соответствующих образам обучающего множества из данного класса, причем граница этого множества зачастую имеет достаточно сложную форму. Визуальное представление
классов в пространстве признаков, превышающем трехмерное, невозможно, а их проекции на признаковые плоскости не позволяют
однозначно определить – пересекаются ли классы.
Тесно связана с вопросом о пересечении классов и проблема аналитического описания разделяющих классы границ. Наиболее часто для этого используются полиномы заранее выбранной размерности, а также кусочно-линейное описание, при котором граница
описывается многоугольником сложной формы. Основная трудность заключается даже не в определении коэффициентов полинома, а в выборе его размерности, ведь вполне возможно подобрать такие математические представления поверхностей, которые сделают
разделимым любое множество образов из обучающего множества.
Например, если описать границы каждого класса в многомерном пространстве признаков как совокупность гиперсфер, центрами которых являются точки, относящиеся к данному классу, а внутри сферы не содержатся точки из других классов, то практически
любое множество классов будет разделимым, но практическое при65
менение данного разделения для распознавания будет малоэффективно. Фактически мы получим излишне усложненный метод распознавания по расстоянию до ближайшего образа из обучающего
множества, описанный выше.
Даже отказавшись от таких методов построения межклассовых
границ как в приведенном выше примере, мы все равно сталкиваемся с проблемой «истинной» границы, как показано в примерах
на рис. 3.2. С одной стороны, можно считать, что два класса, показанные на рис. 3.2, а пересекаются, так как невозможно провести прямую линию, разделяющую эти классы. С другой стороны,
проведенная на рис. 3.2, а кривая линия вполне может считаться
границей, разделяющей множества точек, относящихся к разным
классам, а вот ее «истинность» вызывает вполне обоснованные сомнения. На рис. 3.2, б также показаны два линейно неразделимых
класса, но кривая, описываемая уравнением параболы, вполне может быть принята за разделяющую их границу.
Следует отметить, что в большинстве случаев нелинейную границу между классами в пространстве признаков можно линеаризовать, вводя дополнительные признаки. Например, пусть граница
между классами на плоскости в двумерном пространстве признаков описывается полиномом ax12 + bx22 + cx1x2 + dx1 + ex2 + f = 0.
Введем еще три признака, значения которых вычисляются через значения первых двух следующим образом: x3 = x12, x4 = x22,
x5 = x1x2. Тогда уравнение границы примет вид ax3 + bx4 + cx5 +
+ dx1 + ex2 + f = 0., т. е. парабола в двухмерном пространстве признаков станет в пятимерном пространстве гиперплоскостью.
В табл. 3.2 приведен простой пример обучающего множества из
четырех образов, относящихся к двум классам и неразделяемых
линейно в пространстве двух исходных признаков x1,x2.
а – пересекающиеся классы
б – линейно неразделимые классы
Рис. 3.2. Разделение классов обучающего множества:
а – пересекающиеся классы; б – линейно неразделимые классы
66
Таблица 3.2
Линейно неразделимые классы
№ образа
Признак x1
Признак x2
Класс wi
1
2
3
4
0
0
1
1
0
1
0
1
0
1
1
0
Приведенная в табл. 3.2 классификация образов соответствует
результату логической операции «сложение по модулю два» или
«исключающее или». На рис. 3.3 образы из табл. 3.2 представлены
на плоскости исходных признаков. Из рис. 3.3 видно, что не существует уравнения прямой вида ax1+bx2+c = 0, которая бы разделяла образы на классы в соответствии с табл. 3.2.
Изменим систему координат пространства признаков, сместив
начало координат в точку (0,5;0,5), повернув оси координат на 45
градусов и выполнив масштабирование по каждой из осей, как показано на рис. 3.3. Полученные в результате преобразования значения признаков приведены в табл. 3.3.
Хотя классы по-прежнему линейно неразделимы, но из табл. 3.3
видно, что образы, относящиеся к нулевому классу, имеют нулевое
значение признака y2, а образы, относящиеся к первому классу,
имеют нулевое значение признака y1. Разделяющую классы границу можно представить в виде эллипса, описываемого уравнением
X2
Y1
Y2
2
4
1
3
X1
Рис. 3.3. Линеаризация границы классов
67
Таблица 3.3
Результат преобразования признаков
№ образа
Признак y1
Признак y2
Класс wi
1
2
3
4
–1
0
0
1
0
1
–1
0
0
1
1
0
dy12 + ey22 + f = 0. Соответствующая ему замена переменных, приводящая границу к линейному виду dz1 + ez2 + f = 0, имеет следующий вид: z1 = y12, z2 = y22. В результате в пространстве признаков
z1, z2 совмещаются образы, относящиеся к одному классу (соответственно, 1 и 4, 2 и 3). Отметим, что промежуточное преобразование
признаков x1, x2 в y1, y2 существенно упрощает линеаризацию линии, разделяющей классы.
Таким образом, любую разделяющую поверхность в пространстве признаков можно привести к линейному виду заменой переменных в описывающем поверхность уравнении с введением соответствующих дополнительных признаков.
В простейшем случае разделения двух классов по одному признаку разделяющая их граница в одномерном пространстве признаков превращается на признаковой оси в точку, положение которой согласно байесовской стратегии, позволяющей обеспечить
минимизацию среднего риска или стоимости потерь, находится
следующим образом.
Пусть требуется произвести разделение образов на два класса w1
и w2 по одному вероятностному признаку х. Тогда вектор признаков каждого образа состоит из одного элемента, а описания классов
представляют собой функции условной плотности распределения
вероятности значений признака p1(x), p2(x) для классов w1 и w2 соответственно.
Пусть кроме p1(x) и p2(x) известны априорные вероятности появления образов разных классов Р1, Р2 и матрица стоимости потерь
æc11 c12 ÷ö
÷÷, где с11, с22 – потери при правильных решениях, с12
C = ççç
èçc21 c22 ø÷
и с21 – потери при ошибочной классификации, когда образ, относящийся к первому классу, ошибочно распознан как образ, относящийся ко второму классу, и, соответственно, наоборот. Первый случай
называется ошибкой первого рода, а второй – ошибкой второго рода.
68
Условная вероятность ошибки первого рода определяется как
¥
Q1 = ò p1 (x)dx.
x0
Соответственно условная вероятность ошибки второго рода
Q2 =
x0
ò
p2 (x)dx, где х0 – пороговое значение признака, т. е. образ
-¥
распознается как относящийся к первому классу, если для него
х < x0, и образ распознается как относящийся ко второму классу
в противном случае. Графическое представление условных вероятностей и порогового значения признака приведено на рис. 3.4.
Байесовский классификатор минимизирует потери при распознавании R, которые можно оценить как R = P1c11(1 – Q1) + P1c12Q1 +
+ P2c22(1 – Q2) + P2c21Q2. Чтобы найти минимум функции R от х,
необходимо подставить в нее выражения для Q1 и Q2, взять производную по х и приравнять ее к нулю, положив х = х0:
dR
= P1 [c11 p1 (x0 ) - c12 p1 (x0 )] + P2 [c21 p2 (x0 ) - c22 p2 (x0 )] = 0.
dx x=x
0
p2 (x0 ) P1 (c12 - c11 )
=
= λ 0 , где λ0 – пороговое значение
p1 (x0 ) P2 (c21 - c22 )
p (x)
коэффициента правдоподобия λ(x) = 2 , обеспечивающее миниp1 (x)
мальные потери при классификации.
Откуда
p (x)
p1 (x)
p2 (x)
область ошибочного
распознавания
x0
x
Рис. 3.4. Функции условной плотности распределения вероятности
значений признака для двух классов
69
Конкретные значения априорных вероятностей Р1, Р2 и элементов матрицы стоимости потерь определяют отношение условных
плотностей распределения при пороговом значении признака. Так,
для Р1 = Р2, с11 = с22, и с12 = с21 λ0 = 1, т. е. пороговое значение x0 соответствует абсциссе точки пересечения функций p1(x) и p2(x), как
показано на рис. 3.4. При нормальном законе распределения для
p1(x), p2(x) с равными среднеквадратичными отклонениями σ и маm + m2
.
тематическими ожиданиями m1, m2 соответственно x0 = 1
2
В более общем случае множества классов риск, связанный
с решением о принадлежности объекта к классу wj (j = 1, 2,
..., m), описывается платежной матрицей С следующего вида:
c11 c12 ... c1m
c21 c22 ... c21
C=
. Здесь на главной диагонали расположены
...
... ... ...
cm1 cm2 ... cmm
потери при правильных решениях, которые обычно принимаются
Сjj = 0 или Cjj < 0. По обеим сторонам от главной диагонали стоят
потери при ошибочных решениях, т. е. Сjg – потери от принятия решения о принадлежности распознаваемого образа к классу wg, когда на самом деле он принадлежит классу wj.
Если признак распознаваемого образа равен x, то риск, связанный с принятием решения о принадлежности этого образа к классу
wg, когда на самом деле он может принадлежать любому другому
классу wj, наиболее целесообразно определять как среднее значение потерь, стоящих в g-м столбце платежной матрицы. Тогда этот
средний риск можно представить как
m
R (wg / x) = å p(wj / x)cjg , (3.20)
j=1
где p(wj/x) – условная вероятность того, что распознаваемый образ
со значением признака x принадлежит классу wj.
Условная вероятность p(wj/x) заранее неизвестна, но может
быть вычислена по формуле Байеса
p(x / wj ) Pj
,
(3.21)
p(x)
где Pj – априорная вероятность появления образа, относящегося к
классу wj; p(x/wj) – условная вероятность появления образа со знаp(wj / x) =
70
чением признака x в классе wj; p(x) – априорная вероятность появления признака со значением x.
После вычисления средних рисков для каждого возможного
значения признака выбирается класс, в котором это значение минимально, что позволяет минимизировать потери при ошибочном
распознавании.
Далее приводится пример определения для каждого возможного значения признака класса, соответствующего минимальному
риску ошибочного распознавания. Пусть имеются один признак
x – вес человека, разделенный на четыре диапазона (A – недостаточный вес, B – норма, C – превышение, D – избыточный вес) и два
класса (w1 – у человека нет гипертонии, т. е. он здоров, w2 – есть,
т. е. он болен). Результаты обследования 100 человек приведены
в табл. 3.4. Необходимо по значению признака x отнести образ
к одному из двух классов с минимальным риском ошибки.
Вероятность появления образа, принадлежащего классу w1,
P1 = 78/100; соответственно классу w2 – P2 = 22/ 100. Вероятность
наличия у образа, относящегося к любому классу, значения признака x = A – p(A) = 20/100. Вероятность наличия у образа, принадлежащего классу w1, значения признака x = A – p(A/w1) = 19/78.
Вероятность принадлежности образа классу w1, при наличии у
него значения признака x = A по (3.21) – p(w1/A) = (19/78 · 78/100)/
(20/100) = 19/20, что соответствует данным табл. 3.4. Результаты
вычисления остальных вероятностей, а также суммарных рисков
при разных значениях стоимости потерь сведены в табл. 3.5.
Риск при принятии решения о принадлежности образа со значением признака x = A к классу w1 (здоров), когда на самом деле
образ относится к классу w2 (болен), R(w1/A) = p(w2/x) с21. Соответственно, риск при принятии решения о принадлежности образа
со значением признака x = A к классу w2, когда на самом деле образ
относится к классу w1, R(w2/A) = p(w1/x) с12.
Пусть риск здорового человека отнести к больному равен риску
больного человека отнести к здоровому, т. е. c12 = c21 = 0,5. РезульТаблица 3.4
Результаты обследования
x (вес)
w1 (здоров)
w2 (болен)
A
B
C
D
Всего
20
19
1
30
27
3
40
30
10
10
2
8
100
78
22
71
таты вычисления рисков приведены в табл. 3.5. Тогда к классу w2
(человек болен) согласно принятой мере близости относятся только образы с x = D. Если риск ошибки разный, например c21 = 0,8;
c12 = 0,2, т. е. лучше отнести к больным здорового, чем пропустить
больного, то к больным будут отнесены образы с x = С и D, как показано в табл. 3.5.
Принципиальных отличий в подходе к классификации по минимальному риску в случае описания образа одним или несколькими
признаками нет. В формуле (3.20) для вычисления среднего риска
при отнесении распознаваемого образа к классу wg значение единственного признака x заменяется значениями вектора признаков x,
m
т. е. формула принимает вид R (wg / x) = å p(wj / x)cjg .
j=1
Основной проблемой становится достоверность определения используемой в формуле Байеса (3.21) p(x/wj) – условной вероятности
появления образа с конкретными значениями вектора признаков x
в классе wj. Даже при сравнительно небольшом числе признаков,
ограниченном наборе их возможных значений и распознаваемых
классах эта задача может потребовать получения значительного объема статистических данных. Пусть мощность вектора признаков n = 10, каждый признак может принимать только десять
различных значений (k = 10), а число возможных классов m = 10.
Тогда число возможных комбинаций значений признаков в векторе x N = nk = 100, а число условных вероятностей p(x/wj) по всем
классам, которые необходимо найти, M = kN = 1000. Учитывая необходимость обеспечения достоверности каждого значения p(x/wj),
может потребоваться сбор информации о сотнях тысяч образов, что
далеко не всегда выполнимо.
Таблица 3.5
Результаты вычислений
x
px
p(w1/x)
p(w2/x)
R(w1/x)
R(w2/x)
R(w1/x)
R(w2/x)
72
A
B
C
D
Всего
20/100
19/20
1/20
0,025
0,475
0,04
0,19
30/100
27/30
3/30
0,05
0,45
0,08
0,18
40/100
30/40
10/40
0,125
0,375
0,2
0,15
10/100
2/10
8/10
0,4
0,1
0,64
0,04
1
С12 = 0,5
С21 = 0,5
С12 = 0,2
С21 = 0,8
Разработкой алгоритма классификации заканчивается создание системы распознавания, но на практике процесс разработки
является итерационным приближением к минимально возможной
ошибке распознавания. В этом ряду последовательных приближений главную роль играют признаки распознавания, так как от их
выбора зависит эффективность системы в целом. В процессе совершенствования системы набор признаков пополняется, а неинформативные признаки из него исключаются. В некоторых случаях
может возникнуть необходимость изменения алгоритма классификации и способов определения расстояний в пространстве признаков, что в свою очередь приведет к существенному изменению
словаря признаков, а возможно и алфавита классов.
73
4. ЭКСПЕРТНЫЕ СИСТЕМЫ
4.1. Экспертная система с детерминированными признаками
В сложных задачах распознавания образов требуется учитывать большое количество различных по типу и диапазону изменений признаков. Определение значения каждого из них может быть
достаточно трудоемкой задачей, а полное сравнение неизвестного
вектора признаков с классами, к которым может относиться распознаваемый образ, может потребовать много времени. Например,
в системе медицинской диагностики количество возможных диагнозов исчисляется тысячами, а в качестве признаков используются результаты различных лабораторных анализов, число которых
может достигать нескольких десятков, причем многие из них требуют проведения сложных, длительных и дорогостоящих, а иногда
и болезненных процедур, а их полный набор требуется далеко не
при всех диагнозах. В таких случаях более эффективным, с точки
зрения затрат на получение информации о значениях признаков у
распознаваемого образа и скорости распознавания, будет применение экспертных систем, являющихся разновидностью систем распознавания образов.
Основное отличие рассмотренных в предыдущем разделе систем
распознавания от экспертных систем состоит в том, что в системе
распознавания, как правило, распознаваемый образ представляется вектором признаков, в котором перед началом распознавания
все значения элементов известны. В экспертных системах процесс
распознавания совмещен с процессом получения информации об
объекте, причем последовательность получения значений признаков меняется в зависимости от полученных ранее данных о предыдущих признаках. Такой подход к распознаванию применяется при большом количестве признаков и классов, иерархической
структуре классов, а также отсутствии в описании каждого класса
всех возможных признаков. Кроме этого, в экспертных системах
часто требуются большие затраты на получение значений отдельных признаков, как в приведенном выше примере с медицинской
диагностикой.
Экспертные системы, основанные на построенном в процессе их
создания дереве решений, как правило, используются для отнесения распознаваемых образов к классам, представленным в обучающем множестве единственным эталонным образом. Использование
при распознавании дерева решений позволяет совместить процесс
74
определения значений признаков с классификацией распознаваемого образа и в некоторых случаях прийти к ответу до получения
значения всех возможных признаков. С каждым узлом дерева решений связана функция выбора, которая определяет какой дочерний узел следует обрабатывать далее. Каждый листовой узел связан
с конкретным классом. Если процедура обхода дерева достигает листа, то неизвестный образ считается принадлежащим тому классу,
который связан с данным листом. Известное программное средство
поиска неисправностей в ОС Windows основано на дереве решений,
заранее построенном разработчиками этого средства.
В качестве примера построения дерева решений рассмотрим распознавание изображений рукописных цифр на основе следующих
признаков:
− число замкнутых областей (озера);
− число незамкнутых областей (заливы);
− расположение залива (в верхней или нижней части изображения цифры);
− направление открытой части залива (четыре возможные стороны).
Например, цифра «8» характеризуется двумя озерами, а цифра
«5» – заливом вверху, открытым вправо, и заливом внизу, открытым влево. В табл. 4.1 приведены указанные признаки для всех
десяти цифр. Конечно, признаки не учитывают всех особенностей
рукописных цифр, например, «четверка» может иметь вместо залива озеро, но для демонстрации распознавания по дереву решений
приведенных признаков достаточно.
Таблица 4.1
Признаки рукописных цифр
Цифра
Число озер
0
1
2
3
4
5
6
7
8
9
1
–
–
–
–
–
1
–
2
1
Число заливов Расположение заливов
–
1
2
2
1
2
1
–
–
1
–
верх
верх, низ
верх, низ
верх
верх, низ
верх
–
–
низ
Направление
–
вниз
влево, вправо
влево, влево,
вверх
вправо, влево
вправо
–
–
влево
75
Один залив вверху
да
123456
нет
Число озер
0
1
7890
Число озер
0
1
1 23 4 5
6
Залив внизу
14
да
4
да
нет
Открыт вверх
235
Нижний вправо
нет
1
7
нет
5
Залив внизу
да
нет
9
0
8
да
35
Верхний вправо
да
2
90
2
нет
3
Рис. 4.1. Дерево решений для распознавания рукописных цифр
На рис. 4.1 приведено дерево решений, позволяющие однозначно классифицировать цифры. В каждом узле дерева указан запрашиваемый признак, над каждой ветвью приведено значение признака, которому эта ветвь соответствует, а над узлами приведены
множества образов, которые соответствуют данному значению признака. На каждом шаге определяется запрашиваемый признак и в
зависимости от его значения выбирается соответствующая ветвь,
что позволяет изменять порядок определения значений признаков
в зависимости от распознаваемой цифры.
В данном случае дерево построено вручную, а выбор признаков
для каждого узла, начиная с корня, был сделан достаточно произвольно. Не составляет труда построить и более эффективное дерево, которое позволит распознавать большинство цифр по меньшему
числу признаков, а также учесть трудоемкость определения различных признаков, например, как приведенное на рис. 4.2 дерево.
В системах распознавания, предназначенных для решения
практических задач, используются сотни признаков, десятки классов и тысячи эталонных образов, причем для любого набора эталонных образов и признаков может быть построено более одного дерева
решений. В таких случаях выбор признаков, дающих наилучшее,
согласно некоторому критерию, дерево решений, становится акту76
Число озер
1
0
069
Число заливов
Число заливов
0
69
да
9
нет
6
1
235
Залив внизу
14
Нижний вправо
да
Открыт вверх
нет
35
2
Верхний вправо
да
5
8
0
2
1
0
2
123457
да
нет
4
1
7
нет
3
Рис. 4.2. Оптимизированное дерево решений
альной задачей. В качестве критерия можно использовать минимальное число уровней дерева решений для большинства распознаваемых образов, стоимость определения значений признаков или
их информативность.
В последнем случае на каждом шаге создания дерева решений в
качестве анализируемого признака используется наиболее информативный признак и разделение множества эталонных образов на
подмножества производится по данному признаку в данном узле
дерева. Формирование дерева заканчивается, когда множество эталонных образов полностью разделяется, т. е. число листьев дерева
становится равным числу классов.
4.2. Экспертная система с вероятностными признаками
Цель экспертной системы, в которой информация о распознаваемых объектах носит вероятностный характер, не отличается от
цели любой экспертной системы. На основании имеющейся в базе
данных экспертной системы информации о связях между признаками и возможными классами и полученных в процессе распознавания данных о неизвестном объекте система должна сделать вывод
о его принадлежности какому-то классу. В зависимости от области
применения экспертная система с вероятностными признаками
77
может на основании симптомов поставить диагноз больному, выяснить причину неисправности устройства, по геологическим характеристикам местности предсказать наличие полезных ископаемых, по психофизическим характеристикам человека подобрать
подходящую сферу деятельности и т. д.
Экспертная система состоит из двух достаточно независимых
частей – программы-оболочки для хранения и обработки информации и базы данных с необходимыми для работы системы сведениями о конкретной области знаний. Рассматриваемая система является достаточно универсальной, т. е. способной диагностировать
объект в некоторой области знаний после заполнения базы данных
системы соответствующей информацией. Система должна последовательно задавать вопросы о состоянии объекта, причем их количество и порядок могут меняться в зависимости от полученных ранее
ответов, и после анализа имеющихся данных принять решение,
т. е. отнести объект к одному из известных системе классов.
Процесс создания экспертной системы включает в себя следующие этапы:
– разработка структуры базы данных;
– разработка алгоритма выбора последовательности запросов и
принятия решения;
– разработка диалогового интерфейса;
– заполнение базы данных;
– тестирование.
Если интерфейс экспертной системы соответствует требованиям пользователя и тестирование системы дает удовлетворительные
результаты, то система принимается в опытную эксплуатацию. Во
время опытной эксплуатации экспертной системы информация,
заложенная в базу данных, корректируется с целью получения
адекватных ответов.
4.3. Структура базы данных экспертной системы
При построении экспертной системы одной из основных проблем является формализация представления знаний о связях между признаками (в дальнейшем будем называть их симптомами) и
классами образов (в дальнейшем будем называть их диагнозами).
Заметим, что в нашей системе эти связи носят вероятностный характер, т. е. одно и то же значение симптома может с разной вероятностью соответствовать нескольким диагнозам. Например, в ме78
дицинской сфере боль в горле является симптомом как ангины, так
и наличия инородного тела, или в сфере технической диагностики
отсутствие света фар у автомобиля может быть следствием как севшего аккумулятора, так и неисправности проводки.
Проблему представляет и количественное описание симптомов.
Например, если с температурой, весом, ростом или давлением проблем на первый взгляд не будет, то такие характеристики, как уровень головной боли или износ покрышек количественно оценить
труднее. В таком случае возможно задание нескольких диапазонов.
Например, при вопросе об уровне боли ответ может выбираться из
трех вариантов – легкая боль, средняя, острая. Симптомы могут
быть и бинарными, т. е. иметь только два возможных значения – да
или нет, например наличие света фар.
Рассмотрим один из возможных способов представления в экспертной системе знаний о конкретной области ее применения.
Симптомы xi (i = 1... n), где n – число симптомов, удобно представить в виде списка вопросов, которые система будет задавать
в процессе работы, т. е. всего один вопрос на каждый симптом. Например, «Ваш вес?», «Уровень боли в горле», «Включаются ли
фары автомобиля?» и т. п.
Диагнозы wj(j = 1 … m), где m – число диагнозов, можно представить в виде списка со строками разной длины. Каждая строка
списка описывает один диагноз и состоит из следующих полей:
– название диагноза wj;
– априорная вероятность диагноза pa(wj);
– связь данного диагноза с симптомами в виде массива из трех
элементов – номер строки симптома xi, условная вероятность наличия данного симптома при данном диагнозе p(xi/wj), условная вероятность наличия данного симптома при другом диагнозе p(xi/nowj).
Под априорной вероятностью диагноза понимается вероятность
наличия данного диагноза у объекта при отсутствии информации
о симптомах. Например, у людей ангина встречается чаще, чем
инфаркт, а у автомобилей севший аккумулятор встречается чаще,
чем обрыв в проводке.
Заметим, что сумма последних двух вероятностей не равна единице. Например, при гриппе головная боль присутствует в 80%
случаев, а в 30% случаев присутствие головной боли вызвано
другим диагнозом. Сумма априорных вероятностей по всем диагнозам должна быть меньше единицы, так как показывает вероятность наличия у объекта какого-либо диагноза (неисправности,
болезни).
79
Между симптомами не должно быть корреляции, т. е. они должны быть статистически независимы. Только при соблюдении этого
условия можно применять приведенные далее формулы для вычисления условных вероятностей диагнозов. Два симптома x1 и x2
статистически независимы, если для диагноза wj условная вероятность p(x1&x2/wj) = p(x1/wj)p(x2/wj). Например, пусть из 100 автомобилей у двадцати не горят фары, а у десяти не заводится двигатель. Эти события можно считать статистически независимыми,
если у двух автомобилей одновременно не горят фары и не заводится двигатель (20/100 · 10/100 = 2/100).
При выборе симптомов необходимо проверять их статистическую независимость. Например, существует корреляция между
симптомами «наличие озноба» и «высокая температура». Использование таких симптомов делает некорректным использование статистических формул для вычисления условных вероятностей диагнозов, связанных с этими симптомами.
При необходимости можно дополнить базу данных и списком
рекомендаций по каждому диагнозу, которые будут выдаваться
пользователю после принятия системой решения о наиболее вероятном диагнозе.
4.4. Алгоритм работы экспертной системы
Алгоритм работы рассматриваемой экспертной системы является циклическим. В каждом цикле анализируется один симптом
(напомним – в нашей структуре базы данных имеется один вопрос
на каждый симптом). Для этого выполняется следующая последовательность шагов:
– выбирается наиболее информативный симптом и задается соответствующий ему вопрос;
– полученный ответ используется для вычисления вероятностей
диагнозов, а вопрос (симптом) исключается из дальнейшего рассмотрения;
– по результатам вычисления некоторые диагнозы исключаются;
– если вероятность какого-то диагноза достаточна для принятия
решения, то система заканчивает работу, если нет – то цикл повторяется.
Как уже отмечалось, особенностью экспертных систем является
то, что не все признаки (симптомы) используются в описании каждого класса (диагноза). При таком подходе можно считать наибо80
лее информативным вопрос о симптоме, ответ на который изменит
вероятность максимального числа диагнозов. Вычислить этот показатель довольно легко – для каждого еще не заданного вопроса
определяется количество еще не исключенных диагнозов, в которых он учитывается. Вопрос с максимальным значением считается
самым информативным в текущем цикле.
В зависимости от вопроса ответ может иметь разный вид (целочисленный, перечисляемый, бинарный), но желательно перед
дальнейшей обработкой привести его к универсальному виду. Рассмотрим один из вариантов такого приведения.
Будем считать, что ответ на вопрос xi изменяется в пределах
xi = –5 … +5. При этом –5 означает твердое «нет», т. е. отсутствие
симптома, +5 – твердое «да», т. е. безусловное наличие симптома,
0 – отсутствие информации о симптоме. Промежуточные значения
можно интерпретировать как степень уверенности в наличии (положительные значения) или отсутствии (отрицательные значения)
симптома.
Если для такого симптома, как наличие боли в горле ответ хорошо интерпретируется и его можно сразу использовать для дальнейших вычислений, то для некоторых симптомов полученный ответ
необходимо обработать. Например, для такого симптома, как давление крови общепринятый ответ в форме пары целых чисел следует перевести в заданный диапазон по заранее разработанной шкале.
Другой подход к универсализации ответов заключается в том,
чтобы переложить оценку уровня симптома на пользователя, задав
в вопросе возможные варианты ответа. Например, варианты ответа
о давлении крови могут быть: сильно пониженное (–5), пониженное (–3), нормальное (0), повышенное (+3), высокое(+5).
Получив ответ на заданный вопрос, необходимо использовать
его для вычисления вероятностей диагнозов, в описании которых
он присутствует. При этом подтверждать диагноз может как положительный, так и отрицательный ответ. Для вычисления условной
вероятности диагноза при наличии данного симптома используется
формула Байеса в виде:
p(wj ) p(xi / wj )
(4.1)
p(wj / xi ) =
,
p(wj ) p(xi / wj ) + (1 - p(wj )) p(xi / nowj )
где p(wj) – вероятность диагноза wj на текущем шаге. До получения ответа на первый вопрос p(wj) = pa(wj), а после обработки ответа
на вопрос xi можно считать p(wj) = p(wj/xi). Однако подставлять в
формулу (4.1) непосредственно значения p(xi/wj) и p(xi/nowj) мож81
но только в том случае, когда ответ интерпретирован как твердое
«да». При твердом «нет»
p(wj / xi ) =
p(wj )(1 - p(xi / wj ))
p(wj )(1 - p(xi / wj )) + (1 - p(wj ))(1 - p(xi / nowj ))
.
(4.2)
Учесть возможность получения ответа xi в заданном диапазоне
(±5) можно линейной аппроксимацией значения условной вероятности. В таком случае формулы (4.1) и (4.2) усложняются (xi берется со своим знаком):
если xi > 0, то
æ æ p(xi / wj )
ö x ö÷
-1÷÷÷ i ÷÷,
p(wj / xi ) = p(wj )ççç1 + ççç
÷ø 5 ÷÷ø
çè çè p(xi )
если xi < 0, то
æ æ
p(xi )(1 - p(xi / wj ) ö÷ xi ö÷
÷ ÷, (4.3)
p(wj / xi ) = p(wj )ççç1 + ççç p(xi / wj ) ÷ø÷ 5 ÷ø÷÷
1 - p(xi )
çè çè
если xi = 0 p(wj / xi ) = p(wj ),
где p(xi) = p(wj)p(xi/wj) + (1 – p(wj))p(xi/nowj) – вероятность положительного ответа на вопрос xi.
Если вероятность p(wj/xi), вычисленная по (4.3), близка к нулю,
то диагноз wj можно исключить из дальнейшего рассмотрения.
Если вероятность p(wj/xi) близка к единице, то диагноз wj можно
считать истинным и закончить работу системы. Порог близости
устанавливается заранее и его точное значение подбирается экспериментально в процессе настройки экспертной системы.
После того как будут пересчитаны вероятности всех диагнозов,
в описании которых используется симптом, связанный с заданным
вопросом, необходимо для каждого из них оценить возможные максимальную и минимальную вероятности. Для этого у каждого диагноза просматривается список еще не рассмотренных симптомов и
по каждому из них выполняется следующая последовательность
действий (при первом цикле эта последовательность выполняется
для всех диагнозов).
Во-первых, необходимо определить какой ответ – положительный или отрицательный, увеличивает вероятность диагноза wj.
Если p(xi/wj) > p(xi/nowj), то положительный ответ увеличивает
p(wj/xi) и при оценке возможных вероятностей диагноза расчетные
условные вероятности p′(xi/wj) и p′(xi/nowj) не изменяются, т. е.
82
p′(xi/wj) = p(xi/wj) и p′(xi/nowj) = p(xi/nowj). Если же p(xi/wj) < p(xi/
nowj), то p(wj/xi) увеличивается при отрицательном ответе и для
оценки следует использовать обратные значения условных вероятностей, т. е. считать
p′(xi/wj) = 1 – p(xi/wj), p′(xi/nowj) = 1 – p(xi/nowj).
(4.4)
Если между симптомами нет корреляции, т. е. они статистически независимы, то максимально и минимально возможные вероятности диагноза вычисляются как произведение условных вероятностей по всем еще не заданным вопросам, связанным с симптомами данного диагноза, при условии соответственно положительных и отрицательных ответов на них.
Во-вторых, с учетом (4.4) вычисляются четыре условные вероятности (k – число еще не рассмотренных симптомов диагноза wj):
− вероятность диагноза wj при всех положительных ответах
k
p(wj / xÕ ) = Õ p ¢(xi / wj );
i=1
− вероятность недиагноза wj при всех положительных ответах
k
p(nowj / xÕ ) = Õ p ¢(xi / nowj );
i=1
− вероятность wj диагноза при всех отрицательных ответах
k
p(wj / noxÕ ) = Õ (1 - p ¢(xi / wj ));
(4.5)
− вероятность недиагноза wj при всех отрицательных ответах
i=1
k
p(nowj / noxÕ ) = Õ (1 - p ¢(xi / nowj )).
i=1
В-третьих, используя результаты вычисления вероятностей
(4.5), по формуле Байеса определяются максимально возможная
вероятность диагноза wj:
p(wj ) p(wj / xÏ )
(4.6)
pmax (wj ) =
p(wj ) p(wj / xÏ ) + (1 - p(wj )) p(nowj / xÏ )
и минимально возможная вероятность диагноза wj:
p(wj ) p(wj / noxÏ )
pmin (wj ) =
. (4.7)
p(wj ) p(wj / noxÏ ) + (1 - p(wj )) p(nowj / noxÏ )
83
Если pmax(wj) < p(wj), то диагноз wj можно исключить из дальнейшего рассмотрения, так как его максимально возможная вероятность при всех положительных симптомах меньше вероятности
наличия данного диагноза у объекта до получения каких-либо данных о еще не рассмотренных симптомах.
После оценки возможных максимальных и минимальных вероятностей всех еще не исключенных из рассмотрения диагнозов
выполняется поиск наиболее вероятного диагноза. Для этого находится диагноз wd, у которого минимально возможная вероятность
максимальна, т. е. pmin(wd) ≥ pmin(wj) для всех j = 1…k, где k – число еще не исключенных диагнозов. Если минимально возможная
вероятность этого диагноза больше максимально возможной вероятности любого другого диагноза, т. е. pmin(wd) ≥ pmax(wj) для всех
j = 1…k (j ≠ d), то диагноз wd считается наиболее вероятным и сообщается пользователю. Если такой диагноз не находится, то цикл
повторяется.
Процесс выполняется до тех пор, пока не будет найден наиболее
вероятный диагноз, или не рассмотрены все симптомы, или не исключены все диагнозы. В двух последних случаях система не принимает никакого решения, но может выдавать пользователю вероятности диагнозов после последнего цикла.
Минимальный диалоговый интерфейс экспертной системы должен обеспечивать возможность задавать пользователю вопросы,
получать от него ответы в требуемой форме и сообщать результат
работы – наиболее вероятный диагноз и соответствующую рекомендацию, если она имеется. Полезной для пользователя будет информация о количестве уже заданных и еще оставшихся вопросов,
число и наименование исключенных из рассмотрения диагнозов, а
по окончании работы системы – наименования ближайших диагнозов, со значениями их вероятностей.
Для анализа работы системы и внесения необходимых изменений в алгоритм и базу данных необходимо обеспечить в отладочном
режиме на каждом шаге возможность просмотра результатов вычислений и при необходимости их сохранения, а также фиксации
последовательности заданных вопросов и полученных ответов. Эта
информация облегчает выявление причин неадекватной реакции
системы и внесение необходимых изменений в базу данных перед
повторным прохождением последовательности вопросов и ответов.
Для облегчения ввода априорных вероятностей диагнозов и условных вероятностей симптомов можно предусмотреть ввод только
начальных статистических данных, переложив на экспертную си84
стему вычисление соответствующих вероятностей и проверку корректности введенных данных. Например, вводится общее число обследованных объектов, число объектов, имеющих данный диагноз,
и число объектов, имеющих данный симптом при заданном диагнозе. Из этой информации можно вычислить априорные вероятности
диагнозов, условные вероятности, связывающие симптомы и диагнозы, а также проверить корректность исходных данных.
Заполнение базы данных, пожалуй, наиболее ответственный,
сложный и трудоемкий этап создания экспертной системы. От его
результатов в основном зависит правильность работы экспертной
системы. Основные трудности заключаются в сборе и обработке
статистической информации. Например, на первый взгляд, при
подготовке экспертной системы в области медицины достаточно
взять справочник по болезням и выписать из него диагнозы с соответствующими симптомами. Однако вряд ли в справочнике найдутся данные об априорных вероятностях заболеваний и тем более
условные вероятности симптомов по каждому диагнозу.
При подготовке вопросов по симптомам наибольшую сложность
представляет требование их статистической независимости, так
как именно это требование заложено в основу оценки возможных
вероятностей диагнозов по (4.6) и (4.7). Только собрав статистическую информацию, как по отдельным симптомам, так и по их сочетанию, можно оценить их статистическую независимость. Если
между симптомами есть корреляция, то приходится задавать условные вероятности всех возможных сочетаний симптомов для
каждого диагноза, что резко увеличивает объем базы данных.
Формирование списка, связывающего диагноз с симптомами,
с указанием условных вероятностей также представляет собой серьезную проблему. Для каждого диагноза необходимо учесть все
связанные с ним симптомы. Не следует забывать, что на повышение вероятности диагноза влияют как положительный, так и отрицательный ответы. Таким образом, для одного и того же вопроса
положительный ответ может быть связан с одним диагнозом, а отрицательный – с другим.
Обычно применяется следующий порядок подготовки базы данных экспертной системы – на первом этапе формируется список
диагнозов с соответствующими им симптомами, а по нему составляется список симптомов с соответствующими вопросами. На втором этапе собирается необходимая статистическая информация,
что требует изучения имеющихся источников, а возможно и проведения специальных исследований.
85
4.5. Тестирование экспертной системы
Тестирование экспертной системы производится для обнаружения недостатков в ее работе и внесения необходимых изменений. На
первом этапе проверяется работоспособность системы, т. е. корректность работы алгоритма и удобство интерфейса, на втором – полнота и непротиворечивость информации, заложенной в базу данных.
Для проверки работоспособности системы база данных заполняется тестовой информацией минимально необходимого объема.
Данные подготавливаются таким образом, чтобы можно было на
каждом шаге следить за процессом решения и проверить реакцию
системы в критических ситуациях.
Правильность заполнения базы данных проверить значительно
сложнее, так как количество возможных сочетаний симптомов не
позволяет проверить реакцию системы на них в полном объеме. Например, пусть имеется всего 100 симптомов и каждый может принимать 10 значений. Тогда число возможных комбинаций симптомов с разными значениями составляет 10100. Конечно реальное число комбинаций несколько меньше этой оценки, но в целом порядок
сохраняется.
Разработчики экспертных систем вынуждены очень тщательно готовить исходные данные и проверять правильность их внесения в систему. После проверки некоторого количества комбинаций
симптомов с заранее известным результатом система переводится
в опытную эксплуатацию, в процессе которой могут продолжать
выявляться некорректные результаты и приниматься меры к их
устранению.
Рассмотрим пример работы системы, построенной по изложенному выше алгоритму. В качестве исходных данных возьмем не
связанную с конкретной областью абстрактную информацию, приведенную в табл. 4.2.
Таблица 4.2
Исходные значения p(xi/wj) и p(xi/nowj)
pa(wj)
Симптом 1
Симптом 2
Симптом 3
Симптом 4
86
Диагноз 1
Диагноз 2
Диагноз 3
0,3
0,6/0,01
0,7/0,02
0,1/0,2
–
0,2
–
0,8/0,01
0,9/0,02
0,01/0,07
0,1
0,8/0,03
0,02/0,1
0,9/0,01
0,7/0,04
В базе данных всего четыре симптома или признака (i = 1…4) и
три возможных диагноза или класса (j = 1…3). Первый диагноз связан с первыми тремя симптомами, второй – с последними тремя, а
третий – со всеми четырьмя симптомами. Напомним, что pa(wj) –
априорная вероятность диагноза wj, p(xi/wj) – условная вероятность наличия симптома xi при диагнозе wj, p(xi/nowj) – условная
вероятность наличия симптома xi при отсутствии диагноза wj.
Информация в табл. 4.2 не является статистически полной, так
как сумма априорных вероятностей всех диагнозов меньше единицы и для некоторых комбинаций «диагноз – симптом» информация отсутствует. Например, неизвестна статистика по первому
симптому при первом диагнозе, что неэквивалентно отсутствию
первого симптома при первом диагнозе, так как такая информация
(отсутствие симптома) подтверждала бы первый диагноз. В нашем
случае для этой пары отсутствуют статистические данные, что не
помешает разработке экспертной системы, но может сказаться на
результатах ее работы. В случае появления недостающей статистики она может быть добавлена в базу данных, и после переобучения
результаты работы, скорее всего, улучшатся.
До начала первого цикла «вопрос-ответ» текущую вероятность
каждого диагноза принимаем равной его априорной вероятности
p(wj) = pa(wj). Далее определим максимально и минимально возможные вероятности диагнозов.
Для этого при условии независимости симптомов вычислим по (4.5)
условные вероятности для диагноза w1 (в данный момент еще не задано ни одного вопроса и ни один диагноз не исключен из рассмотрения):
p(w1/xП) = 0,6 · 0,7 · 0,9 = 0,378; p(now1/xП) =
= 0,01 · 0,02 · 0,8 = 0,00016;
p(w1/noxП) = 0,4 · 0,3 · 0,1 = 0,012; p(now1/noxП) =
= 0,99 · 0,98 · 0,2 = 0,19404.
Заметим, что у третьего симптома согласно (4.4) используются
обратные условные вероятности p′(x3/w1) и p′(x3/now1), так как
p(x3/w1) < p(x3/now1).
Далее согласно (4.6) и (4.7) найдем:
pmax(w1) = (0,3 · 0,378)/(0,3 · 0,378+0,7 · 0,00016) = 0,999;
pmin(w1) = (0,3 · 0,012)/(0,3 · 0,012+0,7 · 0,19404) = 0,02582.
Аналогично вычисляются pmax и pmin для двух других диагнозов. Результаты расчетов приведены в табл. 4.3.
87
Таблица 4.3
Начальные pmax и pmin
Диагноз 1
Диагноз 2
Диагноз 3
p(wj/xП)
0,378
0,7128
0,49392
p(nowj/xП)
0,00016
0,00019
0,00119
p(wj/noxП)
0,012
0,0002
0,00012
p(nowj/noxП)
0,19404
0,06791
0,09219
pmax(wj)
0,99901
0,99893
0,97878
pmin(wj)
0,02582
0,00074
0,00014
При выборе наиболее информативного симптома можно сравнить их информативность по уровню энтропии. К сожалению, как
уже отмечалось выше, приведенные в табл. 4.2 данные статистически неполные и из них невозможно извлечь значения всех условных вероятностей p(xi/wj), необходимых для вычисления I(xi) согласно (3.18). Тогда в качестве критерия информативности симптома можно выбрать среднюю вероятность диагнозов, в описание которых входит данный симптом. Чем эта средняя вероятность выше,
тем информативнее симптом.
В нашем случае второй и третий симптомы присутствуют в описании всех диагнозов, и задаваемый вопрос приходится выбирать
случайным образом. Пусть это будет вопрос о втором симптоме и на
него получен ответ «5», т. е. x2 = 5.
Исключим второй симптом из списка и согласно (4.3) вычислим
текущие значения вероятностей тех диагнозов, в описании которых он входит:
p(w1/x2) = (0,3 · 0,7)/(0,3 · 0,7+0,7 · 0,02) = 0,9375;
p(w2/w2) = (0,2 · 0,8)/(0,2 · 0,8+0,8 · 0,01) = 0,95238;
p(w3/x2) = (0,1 · 0,02)/(0,1 · 0,02+0,9 · 0,1) = 0,02174.
После обработки ответа на второй вопрос наибольшая вероятность у второго диагноза, но если принять порог достоверности
0,99, то вероятность p(w2) = 0,95238 недостаточна для принятия
решения.
Повторим вычисление pmax и pmin для всех диагнозов, не забывая, что второй симптом исключен. Результаты расчетов приведены в табл. 4.4.
Из табл. 4.4 видно, что пока ни один диагноз нельзя исключить.
Максимальное значение pmin имеет первый диагноз, но pmax(w2) >
88
Таблица 4.4
p(wj), pmax и pmin после ответа на второй вопрос
p(wj)
Диагноз 1
Диагноз 2
Диагноз 3
0,9375
0,95238
0,02174
p(wj/xП)
0,54
0,891
0,504
p(nowj/xП)
0,008
0,0186
0,00001
p(wj/noxП)
0,04
0,001
0,006
p(nowj/noxП)
0,198
0,0686
0,92189
pmax(wj)
0,99901
0,99896
0,99893
pmin(wj)
0,75188
0,22573
0,00015
pmin(w1), следовательно, первый диагноз пока нельзя считать наиболее вероятным.
Из оставшихся трех симптомов наиболее информативным будет
третий. Пусть на него получен ответ «–5», т. е. x3 = –5.
Исключим третий симптом из списка и согласно (4.3) вычислим
текущие значения вероятностей тех диагнозов, в описании которых он входит, учитывая отрицательный ответ:
p(w1/x3) = (0,9375 · 0,3)/(0,9375 · 0,3+0,0625 · 0,98) = 0,94406;
p(w2/x3) = (0,2 · 0,8)/(0,2 · 0,8+0,8 · 0,01) = 0,67114;
p(w3/x3) = (0,1 · 0,02)/(0,1 · 0,02+0,9 · 0,1) = 0,0022.
После обработки ответа на третий вопрос наибольшая вероятность у первого диагноза, но порог достоверности не преодолен.
Повторим вычисление pmax и pmin для всех диагнозов, не забывая, что второй и третий симптомы исключены. Результаты расчетов приведены в табл. 4.5.
На этот раз значение pmin снова имеет первый диагноз, но
pmax(w2) < pmin(w1) и pmax(w3) < pmin(w1), следовательно, первый
диагноз можно считать наиболее вероятным.
Если на каждый вопрос отвечать (+5), то экспертная система
задаст все вопросы и будет вынуждена выбрать в качестве наиболее вероятного третий диагноз, хотя его вероятность почти совпадает с вероятностью второго диагноза (после окончания работы
p(w3) = 0,99893; p(w2) = 0,99228).
Необходимо отметить, что рассмотренная в примере экспертная
система представляет собой довольно грубую модель реальной экспертной системы, способную распознавать сильно отличающиеся
89
Таблица 4.5
p(wj), pmax и pmin после ответа на третий вопрос
Диагноз 1
Диагноз 2
Диагноз 3
0,94406
0,67114
0,00022
p(wj/xП)
0,6
0,99
0,56
p(nowj/xП)
0,01
0,93
0,012
p(wj)
p(wj/noxП)
0,4
0,01
0,06
p(nowj/noxП)
0,99
0,07
0,9312
pmax(wj)
0,99901
0,68479
0,51160
pmin(wj)
0,87209
0,22573
0,00015
диагнозы при отсутствии корреляции симптомов. Реальные экспертные системы должны уметь различать близкие диагнозы при
условии корреляции некоторых симптомов, что требует подстройки программы-оболочки под конкретную область знаний. В таких
случаях часто применяются экспертные системы, сочетающие в
себе вероятностные и детерминированные признаки. В процессе
разработки системы строится дерево решений, в котором выходящие из каждого узла ветви выбираются в зависимости от результатов, полученных в этом узле, а в нем применяется описанный выше
алгоритм работы с вероятностными признаками.
Например, в случае экспертной системы разрабатываемой для
медицинской диагностики, такой подход позволяет в узлах верхних уровней принимать решение о наиболее вероятной группе
(опорно-двигательный аппарат, сердечно-сосудистая система и
т. п.), к которой относится заболевание диагностируемого пациента. При переходе к узлам более низкого уровня в соответствии
с выбранной группой заболеваний запрашиваются дополнительные симптомы и диагноз постепенно уточняется.
90
5. МАШИННОЕ ОБУЧЕНИЕ
5.1. Обучение поиску в пространстве состояний
Способность к обучению является характерным свойством любой системы, обладающей интеллектом. Герберт Симон в 1983 году
определил обучение следующим образом: «Обучение – это любое
изменение в системе, приводящее к улучшению решения задачи
при ее повторном предъявлении или к решению другой задачи на
основе тех же данных».
Обучение предполагает некоторое обобщение на основе анализа полученных результатов, т. е. количество правильных ответов системы
должно возрастать при решении аналогичных задач из той же предметной области, что и рассмотренные при обучении. В большинстве
случаев обучаемая система не может правильно решить все возможные задачи, следовательно, она должна корректно распространить
полученный опыт на похожие задачи, что приводит к необходимости
индуктивного обучения и, как следствие, к проблеме индуктивного
порога. Вообще говоря, индукция как способность обобщения на основе множества частных случаев – одна из фундаментальных задач
обучения. Типичной задачей индуктивного обучения является формирование понятий, позволяющее корректно относить отдельные
объекты к тому или иному понятию. Близкие задачи приходится решать и в такой области ИИ как распознавание образов.
В индуктивном обучении обучающие примеры являются лишь
подмножеством множества всех возможных исходных данных.
Обоснование ограничения на размер обучающего множества и выбор входящих в него примеров, типичных для формируемого представления, в общем случае является сложной эвристической задачей, решать которую приходится разработчику системы обучения.
Основная проблема заключается в том, что на любом множестве обучающих примеров можно построить неограниченное количество
обобщений, большинство из которых окажутся или неадекватными или бессмысленными. Использование индуктивных порогов обучения и априорных знаний о предмете обучения позволяют формировать обобщения, имеющие практическое значение.
Возможны два подхода к обучению – обучение с учителем и самообучение или обучение с подкреплением.
В первом подходе система получает от учителя инструкции, определяющие ее действия в тех или иных случаях, т. е. настройка системы производится явным образом самим обучающим. Например, ме91
тод оценки узлов графа пространства состояний формируется на основе знаний и опыта эксперта. Результат работы системы во многом
зависит от адекватности этой оценки. Собственно говоря, процесс
введения в компьютер программы, предназначенной для решения
конкретной задачи, вполне можно считать обучением с учителем.
В таком случае формирование обучающего множества не требуется,
а некоторое количество примеров исходных данных с известными
ответами используется для тестирования построенной системы.
При самообучении или обучении с подкреплением система получает только исходные данные из обучающего множества и оценку
результата ее действий. Конечно, сам алгоритм обучения создается
и закладывается в систему разработчиком, но изменения в системе
(можно сказать, ее настройка) в процессе обучения системы происходит в автоматическом режиме и учитель не знает ее результатов заранее. Например, в самообучающуюся программу для игры
в «крестики-нолики» не закладывается методика оценки качества
возможных ходов в заданной позиции, т. е. перед началом обучения
все возможные ходы равноценны. По результатам игры программа
самостоятельно производит перераспределение ценностей возможных ходов по заданному разработчиком программы алгоритму.
Особенности обучения с подкреплением заключаются в следующем:
− разработчик программы не знает выигрышной стратегии и закладывает в программу только правила игры и алгоритм изменения оценки возможных ходов;
− в процессе работы программа изменяет ценность возможных
ходов в зависимости от результатов игры, т. е. предсказать ее ход
практически невозможно;
− применение данного метода к более сложным играм вызывает
существенные трудности, так как с усложнением игры во многом
исчезает явная зависимость между конкретным ходом и результатом всей игры.
В общем случае обучение с подкреплением основано на формировании оценок возможных действий, в результате выполнения которых вознаграждение максимально. Система не получает явных инструкций, но на основе собственного опыта узнает, какие действия
приводят к наибольшему вознаграждению. Таким образом, обучение с подкреплением определяется действиями интеллектуальной
системы в окружающей среде и откликом этой среды. В процессе
обучения система с одной стороны опирается на полученные ранее
знания об окружающей среде, а с другой – самостоятельно исследу92
ет еще неизвестную часть этой среды, что принципиально отличает
данный метод от обучения с учителем.
Алгоритм обучения с подкреплением включает в себя четыре основных компонента:
− π – политика выполнения действий в зависимости от состояния, т. е. функция отображения пространства состояний в пространство возможных действий;
− r – функция вознаграждения в момент времени t зависит от состояния задачи s и действия a в предыдущий момент времени, т. е.
определяет отображение пары «состояние-действие» в меру вознаграждения, характеризующую степень эффективности данного
действия для достижения цели;
− функция ценности V, определяющая ценность состояния s при
использовании политики π; т. е. величину вознаграждения, на которое может рассчитывать система, продолжая действовать из этого состояния;
− модель внешней среды, т. е. механизм реализации существенных аспектов поведения внешней среды.
Различие между функцией вознаграждения r и функцией ценности V заключается в том, что функция r определяет текущую
эффективность пары «состояние-действие», а функция V задает
значение состояния среды в перспективе. Оно определяется как на
основе качества текущего состояния среды, так и на основе качества состояний, вероятно последующих за данным состоянием, т. е.
вознаграждения получаемого при переходе в эти состояния. Например, для шахматной игры пара «состояние-действие» в случае
жертвы фигуры приводит к низкому текущему вознаграждению,
но может иметь высокую ценность, так как за ней обычно следуют
состояния с высоким вознаграждением.
Низкая ценность соответствует состояниям, не приводящим к
успешному решению задачи, чего нельзя сказать о вознаграждении.
Однако без функции вознаграждения нельзя определить значение
ценности состояния. Фактически вознаграждение предоставляется
непосредственно внешней средой и определяется результатом решения поставленной перед системой задачи. Ценность состояния может многократно изменяться на основе полученного опыта, причем
наиболее сложным моментом в обучении с подкреплением является
создание метода эффективного определения ценности.
Рассмотрим один из возможных алгоритмов определения ценности состояния – метод временных разностей на примере игры
«крестики-нолики».
93
Вначале необходимо создать таблицу, в которой каждому возможному состоянию игры соответствует число, определяющее
ценность состояния, т. е. оценку текущей вероятности победы,
если игра начинается с этого состояния. Например, 1 – состояния,
приводящие к победе, 0 – состояния, приводящие к ничьей или
поражению, и 0,5 – неизвестные позиции (первоначально все состояния, кроме конечных, инициализируются значением 0,5). Эта
таблица используется для выработки стратегии победы, при которой ничья или победа соперника рассматриваются как поражение.
Во время игры из всех возможных ходов выбирается тот, который
имеет максимальную ценность.
Если партию выиграла программа, то повышается ценность всех
сделанных ею в этой партии ходов, а если программа проиграла, то
ценность всех ходов уменьшается. Если игра закончилась в ничью,
то ценность ходов уменьшается в меньшей степени. В результате
многократных повторений программа улучшает качество игры и
начинает в каждой ситуации выбирать наиболее правильный ход.
В процессе многократного повторения игры с противником значения функции ценности состояний будут меняться, отражая вероятность принадлежности данного состояния к победному. Для
этого ценность каждого выбранного состояния V′ определяется как
функция от ценности следующего выбранного состояния и результата игры, т. е. V′(sn) = V(sn)+c(V(sn+1)–V(sn)), где – sn состояние
в момент времени n, а sn+1 – состояние в момент времени n+1,
с – шаговый множитель.
Отметим, что с увеличением числа сыгранных партий целесообразно уменьшать множитель с, для того чтобы обеспечить сходимость функции ценности для каждого состояния к значению вероятности победы при игре с данным противником. Целесообразно
также при вычислении ценности учитывать «обесценивание» вознаграждения по мере удаления текущего состояния от цели.
Применение подобных методов к разработке систем, самообучающихся более сложным играм, наталкивается на существенные трудности. Проблема не только в том, что дерево возможных состояний
для таких игр слишком велико. Главное – в большинстве случаев
связь между конкретным ходом и результатом игры не слишком явная, что особенно относится к начальным ходам. Даже сделав не самый лучший ход в начале или середине игры, можно в дальнейшем
поправить положение сильными ходами. В результате ценность первых ходов в процессе обучения практически не меняется, а изменение
ценности остальных ходов носит во многом хаотический характер.
94
5.2. Обучение распознаванию образов
Обучение интеллектуальной системы распознаванию образов относится к обучению с подкреплением. Каждый элемент обучающего множества состоят из вектора признаков образа X = (x1, …, хn),
где n – число признаков, и номера класса j, к которому образ относится (j = 1, …, m, где m – число распознаваемых классов). Каждый
класс может быть представлен в обучающем множестве как одним,
так и несколькими отличающимися образами. В процессе обучения
изменяются значения элементов сji (i = 1, …, n) решающей матрицы
C, используемой при распознавании неизвестного образа. Каждая
j-я строка решающей матрицы соответствует одному из распознаваемых классов.
Для распознавания образа, описываемого вектором признаков
X, с помощью матрицы C находится вектор решений R, каждый
элемент которого rj, соответствует одному из распознаваемых классов и вычисляется по формуле
n
rj = å cji xi . (5.1)
i=1
В матричной форме – R = CXT. Образ относится к классу с максимальным значением rj. Если таких классов несколько, то выбирается класс с минимальным номером, т. е. при rp = rl = max(rj) и
p < l образ относится к классу p.
Обучение распознаванию возможно несколькими способами,
которые отличаются подходом к коррекции элементов матрицы C,
последовательностью предъявления образов и соответственно скоростью обучения. При всех способах обучения вначале выполняется инициализация матрицы C (как правило, обнуление), после чего
на вход обучаемой системы распознавания последовательно подаются образы из обучающего множества. Для каждого вектора X по
матрице C вычисляется вектор решений R, определяется класс, к
которому относится предъявленный образ, и при необходимости
выполняется коррекция матрицы C. Если система правильно распознает все образы из обучающего множества, то обучение заканчивается успешно.
Возможны две последовательности предъявления образов:
− если при распознавании произошла ошибка, то образ предъявляется повторно, а если ошибки нет, то предъявляется следующий
по порядку образ;
95
− при любом исходе распознавания предъявляется следующий
по порядку образ из обучающего множества.
Возможны и два подхода к порядку предъявлению образов из
разных классов:
− образы из одного класса предъявляются до тех пор, пока система не научится их распознавать;
− образы предъявляются в произвольном порядке, независимо
от классов, к которым они относятся.
Рассмотрим несколько способов обучения системы распознаванию образов.
В первом способе обучения при ошибке распознавания изменяются только две строки матрицы С, соответствующие ошибочно
выбранному и правильному классам. Пусть t – правильный номер
класса, к которому относится вектор X, k – номер класса, к которому он отнесен при распознавании, и t ≠ k. Тогда элементы строк t и
k матрицы C изменяются следующим образом:
c′ti = cti + xi,
(5.2)
где c′ti – новое значение элементов строки t матрицы C.
c′ki = cki – xi,
(5.3)
где c′ki – новое значение элементов строки k матрицы C.
Во втором способе обучения при ошибке распознавания и, как
следствие, коррекции элементов матрицы C c′ti вычисляется аналогично (5.2), а формула (5.3) для c′ki применяется ко всем k-м строкам матрицы C, для которых rk ≥ rt и k ≠ t.
В третьем способе обучения после вычисления элементов вектора R формула (5.3) для c′ki применяется ко всем k-м строкам матрицы C, для которых rk ≥ rt. Если хотя бы одна строка матрицы C
на этом шаге обучения корректировалась, то выполняется и коррекция элементов c′ti по формуле (5.2). Фактически единственное
отличие этого способа обучения от второго – отсутствие проверки
k ≠ t. В результате после окончания обучения при распознавании
вектора X из обучающего множества среди вычисленных по формуле (5.1) элементов вектора R не будет совпадающих.
Четвертый способ обучения называется «прямое оценивание». Для
каждого предъявленного образа элементы матрицы C корректируется
сразу без нахождения вектора R. Для строк k ≠ t c′ki вычисляется по
формуле (5.3), а c′ti вычисляется по формуле (5.2). После однократного
предъявления всех образов обучение заканчивается и проводится проверка правильности распознавания элементов обучающего множества.
96
При любом способе обучения и порядке предъявления образов
обучение рано или поздно будет закончено, но общее число предъявлений зависит от выбранного способа обучения и порядка предъявления образов. Следует отметить, что последний цикл предъявлений каждого образа из обучающего множества не должен вызывать изменения решающей матрицы C. Именно этот факт и означает успешное окончание процесса обучения.
Может случиться и так, что процесс обучения никогда не закончится успешно, т. е. при предъявлении всех образов из обучающего
множества хотя бы один из них распознается с ошибкой, что соответственно приводит к корректировке матрицы C и повторению
цикла предъявления всех образов из обучающего множества. Следя за числом циклов предъявления образов и анализируя изменения матрицы C, можно обнаружить такую ситуацию и принять соответствующие меры, например, изменить обучающее множество
образов или множество признаков.
В качестве примера рассмотрим обучение системы распознаванию летающих объектов, относящихся к трем классам – птица, самолет, планер (m = 3) и описываемых четырьмя бинарными (есть –
1, нет – 0) признаками – крылья, оперенье, мотор, шасси (n = 4).
В табл. 5.1 приведено обучающее множество, состоящее из четырех
образов, причем два последних образа относятся к одному классу.
Внимательный читатель заметит, что первый признак (крылья)
имеет одинаковое значение во всех четырех образах и, на первый
взгляд, может быть исключен, как не несущий информации, полезной для распознавания. Однако в данном случае этот признак необходимо оставить, так как его наличие повышает вероятность успешного окончания обучения, что и будет продемонстрировано далее.
Матрица С после инициализации обнулением приведена в табл. 5.2.
Используя обучающее множество из табл. 5.1, продемонстрируем различные способы обучения и проанализируем их результаты.
Таблица 5.1
Обучающее множество
Образ
Класс \ X
1 (крылья)
2(оперенье)
3(мотор)
4(шасси)
1
2
3
4
1 – птица
2 – самолет
3 – планер
3 – планер
1
1
1
1
1
0
0
0
0
1
0
0
0
1
0
1
97
Таблица 5.2
Матрица C после инициализации
x1
x2
x3
x4
Класс 1
0
0
0
0
Класс 2
0
0
0
0
Класс 3
0
0
0
0
Будем обучать систему по первому способу, когда в случае ошибки распознавания корректируются только две строки матрицы С.
Обучим систему различать два класса – птицу и самолет, причем
в случае ошибки будем предъявлять образ повторно. Система будет
обучена после шести предъявлений образов из обучающего множества. Процесс обучения показан на рис. 5.1.
Повторим обучение распознаванию двух классов, но изменим
порядок предъявления образов – при любом исходе будем предъявлять следующий образ. Система будет обучена после пяти предъявлений, причем матрицы С, полученные после первого и второго
обучения, совпадают. Процесс обучения показан на рис. 5.2.
Теперь обучим систему распознавать третий образ из обучающего множества с его повторным предъявлением в случае ошибки
(матрица C перед первым предъявлением третьего образа соответствует результату обучения первым двум классам).
Система будет обучена после девяти предъявлений образов из
обучающего множества (общее число предъявлений – 6 + 9 = 15).
Процесс обучения показан на рис. 5.3.
1. Предъявлен образ 1 (1100)
3. Предъявлен образ 2 (1011)
R = 0,0,0; ответ 1 – да; С не меняется R = –3,3,0; ответ 2 – да; С не меняется
2. Предъявлен образ 2 (1011)
4. Предъявлен образ 1 (1100)
R = 0,0,0; ответ 1 – нет; стр. 1 «–», R = –1,1,0; ответ 2 – нет; С стр.1«+»,
2 «+»
2«–»
Матрица С после образа 2
Матрица С после образа 1
1
2
3
4
1
2
3
4
1
–1
0
–1
–1
1
0
1
–1
–1
2
1
0
1
1
2
0
–1
1
1
3
0
0
0
0
3
0
0
0
0
5. Предъявлен образ 1 (1100)
6.Предъявлен образ 2 (1011)
R = 1,–1,0; ответ 1 – да; С не меняется R = –2,2,0; ответ 2 – да; С не меняется
Рис. 5.1. Обучение распознаванию двух классов
с повторным предъявлением
98
1. Предъявлен образ 1 (1100)
3. Предъявлен образ 1 (1100)
R = 0,0,0; ответ 1 – да; С не меняется R = –1,1,0; ответ 2 – нет; стр.1
2. Предъявлен образ 2 (1011)
«+», 2 «–»
R = 0,0,0; ответ 1 – нет; стр. 1 «–», Матрица С после образа 1
2 «+»
1
2
3
4
Матрица С после образа 2
1
0
1
–1
–1
1
2
3
4
2
0
–1
1
1
1
–1
0
–1
–1
3
0
0
0
0
2
1
0
1
1
5. Предъявлен образ 1 (1100)
3
0
0
0
R = 1, –1,0; ответ 1 – да; С не меняется
4. Предъявлен образ 2 (1011)
R = –2,2,0; ответ 2 – да; С не меняется
Рис. 5.2. Обучение распознаванию двух классов
1. Предъявлен образ 3 (1000)
R = 0,0,0; ответ 1 – нет; С стр.1
«–», 3«+»
Матрица С после образа 3
3. Предъявлен образ 1 (1100)
R = 0, –1,1; ответ 3 – нет;
С стр.1«+»,3«–»
Матрица С после образа 1
1
2
3
4
1
2
3
1
–1
1
–1
–1
1
0
2
–1
2
0
–1
1
1
2
0
–1
1
3
1
0
0
0
3
0
–1
0
2. Предъявлен образ 3 (1000)
4. Предъявлен образ 1 (1100)
R = –1,0,1; ответ 3 – да; С не меняется R = 2, –1, –1; ответ 1 – да;
5. Предъявлен образ 2 (1011)
С не меняется
R = –2,2,0; ответ 2 – да; С не меняется 6. Предъявлен образ 3 (1000)
7. Предъявлен образ 3 (1000)
R = 0,0,0; ответ 1 – нет; С стр.
R = –1,0,1; ответ 3 – да; С не меняется 3«+»
8. Предъявлен образ 1 (1100)
Матрица С после образа 3
R = 1, –1,0; ответ 1 – да; С не меняется
1
2
3
9. Предъявлен образ 2 (1011)
1
–1
2
–1
R = –3,2,1; ответ 2 – да; С не меняется
2
0
–1
1
3
1
–1
0
4
–1
1
0
1«–»,
4
–1
1
0
Рис. 5.3. Обучение распознаванию трех классов
с повторным предъявлением
Повторим обучение системы распознавать третий образ и опять
изменим порядок предъявления образов – при любом исходе будем
предъявлять следующий образ. Система будет обучена после семи
предъявлений (общее число предъявлений – 5 + 7 = 12), причем ма99
1. Предъявлен образ 3 (1000)
R = 0,0,0; ответ 1 – нет; С стр.1
«–», 3«+»
Матрица С после образа 3
2. Предъявлен образ 1 (1100)
R = 0,–1,1; ответ 3 – нет;
С стр.1«+»,3«–»
Матрица С после образа 1
1
2
3
4
1
2
3
4
1
–1
1
–1
–1
1
0
2
–1
–1
2
0
–1
1
1
2
0
–1
1
1
3
1
0
0
0
3
0
–1
0
0
3. Предъявлен образ 2 (1011)
4. Предъявлен образ 3 (1000)
R = –2,2,0; ответ 2 – да; С не меняется R = 0,0,0; ответ 1 – нет; С стр.1«–»,
5. Предъявлен образ 1 (1100)
3 «+»
R = 1,–1,0; ответ 1 – да; С не меняется Матрица С после образа 3
6. Предъявлен образ 2 (1011)
1
2
3
4
R = –3,2,1; ответ 2 – да; С не меняется
1
–1
2
–1
–1
7. Предъявлен образ 3 (1000)
2
0
–1
1
1
R = –1,0,1; ответ 3 – да; С не меняется
3
1
–1
0
0
Рис. 5.4. Обучение распознаванию трех образов
трицы С, полученные после первого и второго вариантов обучения,
совпадают. Процесс обучения показан на рис. 5.4.
Сравнив число предъявлений, можно сделать вывод – для уменьшения числа предъявлений в процессе обучения при любом исходе
должен предъявлять следующий по порядку образ.
Обучим систему распознавать последний образ из обучающего
множества, причем при любом исходе будем предъявлять следующий образ (матрица C перед первым предъявлением образа соответствует результату обучения первым трем образам). Система будет
обучена после 13 предъявлений образов из обучающего множества
(общее число предъявлений – 5 + 7 +13 = 25). Процесс обучения показан на рис. 5.5.
Система обучена распознавать все образы из обучающего множества, причем обучение каждому образу проводилось последовательно.
Теперь обучим систему распознавать сразу все классы, последовательно предъявляя образы из обучающего множества (матрица C
перед обучением нулевая). Система будет обучена после 13 предъявлений образов из обучающего множества (столько же предъявлений сделано при обучении последнему образу в предыдущем случае). Процесс обучения показан на рис. 5.6.
100
1. Предъявлен образ 4 (1001), класс 3 2. Предъявлен образ 1 (1100)
R = –2,1,1; ответ 2 – нет; C стр.2
R = 1,–2,1; ответ 1 – да; C не меняется
«–»,3«+»
3. Предъявлен образ 2 (1011)
Матрица C после образа 3
R = –3,0,3; ответ 3 – нет; C
стр.2«+»,3«–»
1
2
3
4
Матрица C после образа 2
1
–1
2
–1
–1
1
2
3
4
2
–1
–1
1
0
1
–1
2
–1
–1
3
2
–1
0
1
2
0
–1
2
1
4. Предъявлен образ 3 (1000), класс 3
3
1
–1
–1
0
R = –1,0,1; ответ 3 – да; C не меняется
5. Предъявлен образ 4 (1001), класс 3 6. Предъявлен образ 1 (1100)
R = –2,1,1; ответ 2 – нет; C стр.2
R = 1,–2,1; ответ 1 – да; C не меняется
«–»,3«+»
7. Предъявлен образ 2 (1011)
Матрица C после образа 3
R = –3,1,2; ответ 3 – нет; C
стр.2«+»,3«–»
1
2
3
4
Матрица C после образа 2
1
–1
2
–1
–1
1
2
3
4
2
–1
–1
2
0
1
–1
2
–1
–1
3
2
–1
–1
1
2
0
–1
3
1
8. Предъявлен образ 3 (1000)
3
1
–1
–2
0
R = –1,0,1; ответ 3 – да; C не меняется
9. Предъявлен образ 4 (1001), класс 3 10. Предъявлен образ 1 (1100)
R = –2,1,1; ответ 2 – нет; C стр.2
R = 1,–2,1; ответ 1 – да; C не меняется
«–»,3«+»
11. Предъявлен образ 2 (1011)
Матрица C после образа 4
R = –3,2,1; ответ 2 – да; C не меняется
12. Предъявлен образ 3 (1000)
1
2
3
4
R = –1,–1,2; ответ 3 – да; C не
1
–1
2
–1
–1
меняется
2
–1
–1
3
0
13. Предъявлен образ 4 (1001) Кл 3
3
2
–1
–2
1
R = –2,–1,3; ответ 3 – да; C не
меняется
Рис. 5.5. Обучение распознаванию всех образов последовательно
Сравнив число предъявлений, можно сделать вывод – для уменьшения числа предъявлений в процессе обучения следует предъявлять последовательно все образы из обучающего множества.
Сравнивая показанные на рис. 5.5. и 5.6 матрицы C, можно видеть, что они отличаются, хотя и та и другая позволяют правильно
распознавать все образы из обучающего множества. Вывод – значения элементов решающей матрицы обученной системы распознавания зависят от порядка предъявления образов из обучающего
множества.
101
1. Предъявлен образ 1 (1100)
3. Предъявлен образ 3 (1000)
R = 0,0,0; ответ 1 – да; C не меняется R = –1,1,0; ответ 2 – нет; стр.2 «–»,
2. Предъявлен образ 2 (1011)
3 «+»
R = 0,0,0; ответ 1 – нет; стр.1«– Матрица C после образа 3
»,2«+»
1
2
3
4
Матрица C после образа 2
1
–1
0
–1
–1
1
2
3
4
2
0
0
1
1
1
–1
0
–1
–1
3
1
0
0
0
2
1
0
1
1
5. Предъявлен образ 1 (1100)
3
0
0
0
0
R = –1,–1,2; ответ 3 – нет; стр.1«+»,
4. Предъявлен образ 4 (1001)
3 «–»
R = –2,1,1; ответ 2 – нет; стр.2 «–», Матрица C после образа 1
3 «+»
1
2
3
4
Матрица C после образа 4
1
0
1
–1
–1
1
2
3
4
2
–1
0
1
0
1
–1
0
–1
–1
3
1
–1
0
1
2
–1
0
1
0
7. Предъявлен образ 3 (1000)
3
2
0
0
1
R = 0,0,0; ответ 1 – нет; стр. 1 «–»,
6. Предъявлен образ 2 (1011)
3 «+»
R = –2,0,2; ответ 3 – нет; стр.2«+», Матрица C после образа 3
3 «–»
1
2
3
4
Матрица C после образа 2
1
–1
1
–1
–1
1
2
3
4
2
0
0
2
1
1
0
1
–1
–1
3
1
–1
–1
0
2
0
0
2
1
9. Предъявлен образ 1 (1100)
3
0
–1
–1
0
R = 0,–1,1; ответ 3 – нет; столб.1
8. Предъявлен образ 4 (1001)
«+», 3 «–»
R = –2,1,1; ответ 2 – нет; столб.2 «–», Матрица C после образа 1
3 «+»
1
2
3
4
Матрица C после образа 4
1
0
2
–1
–1
1
2
3
4
2
–1
0
2
0
1
–1
1
–1
–1
3
1
0
–1
1
2
–1
0
2
0
12. Предъявлен образ 4 (1001)
3
2
–1
–1
1
R = –1,–1,2; ответ 3 – да; C не
10. Предъявлен образ 2 (1011)
меняется
R = –2,1,1; ответ 2 – да; C не меняется 13. Предъявлен образ 1 (1100)
11. Предъявлен образ 3 (1000)
R = 2,–1,1; ответ 1 – да; C не меняется
R = 0,–1,1; ответ 3 – да; C не меняется
Рис. 5.6. Обучение распознаванию всех образов первым способом
102
Учитывая сделанные выводы, обучим систему вторым способом,
в котором корректируются все k-е строки матрицы С с rk ≥ rt, предъявляя подряд все образы из обучающего множества. Система будет
обучена после 9 предъявлений, что меньше чем число предъявлений при обучении первым способом. Процесс обучения показан на
рис. 5.7.
Продолжая предъявлять подряд все образы из обучающего множества, обучим теперь систему третьим способом, в котором после
вычисления значений вектора R корректируются все k-е строки матрицы С с rk ≥ rt без проверки правильности распознавания, причем
в случае хотя бы одной коррекции изменяется и строка t. Система
будет обучена только после 20 предъявлений, что объясняется более строгим требованием – максимальное значение элемента в векторе R должно быть единственным. Процесс обучения показан на
рис. 5.8 и 5.9.
1. Предъявлен образ 1 (1100)
3. Предъявлен образ 3 (1000)
R = 0,0,0; ответ 1 – да; C не меняется R = –1,1,–1; ответ 2 – нет; 1«–»,2
2. Предъявлен образ 2 (1011)
«–»,3«+»
R = 0,0,0; ответ 1 – нет; 1
Матрица C после образа 3
«–»,2«+»3«–»
1
2
3
4
Матрица C после образа 2
1
–2
0
–1
–1
1
2
3
4
2
0
0
1
1
1
–1
0
–1
–1
3
0
0
–1
–1
2
1
0
1
1
5. Предъявлен образ 1 (1100)
–1
0
–1
–1 R = –2,–1,1; ответ 3 – нет; 1«+»,2
4. Предъявлен образ 4 (1001)
«–»,3«–»
R = –3,1,–1; ответ 2 – нет; 1«0»,2
Матрица C после образа 1
«–»,3«+»
1
2
3
4
Матрица C после образа 4
1
–1
1
–1
–1
1
2
3
4
2
–2
–1
1
0
1
–2
0
–1
–1
3
0
–1
–1
0
2
–1
0
1
0
7. Предъявлен образ 3 (1000)
3
1
0
–1
0
R = –1,–2,0; ответ 3 – да; C не
6. Предъявлен образ 2 (1011)
меняется
R = –3,–1,–1; ответ 2 – да; C не
9. Предъявлен образ 1 (1100)
меняется
R = 0,–3,–1; ответ 1 – да; C не
8. Предъявлен образ 4 (1001)
меняется
R = –2,–2,0; ответ 4 – да; C не
меняется
Рис. 5.7. Обучение распознаванию всех образов вторым способом
103
1. Предъявлен образ 1 (1100)
R = 0,0,0;стр. 1 «+», 2 «–», 3 «–»
Матрица C после образа 1
2. Предъявлен образ 2 (1011)
R = 1,–1,–1; стр. 1 «–», 2 «+», 3 «–»
Матрица C после образа 2
1
2
3
4
1
1
1
0
0
2
–1
–1
0
0
3
–1
–1
0
0
3. Предъявлен образ 3 (1000)
R = 0,0,–2; стр. 1 «–», 2 «–», 3 «+»
Матрица C после образа 3
1
2
3
4
1
0
1
–1
–1
2
0
–1
1
1
3
–2
–1
–1
–1
4. Предъявлен образ 4 (1001)
R = –2,0,–2; стр. 1 «–», 2 «–», 3 «+»
Матрица C после образа 4
1
2
3
4
1
2
3
4
1
–1
1
–1
–1
1
–2
1
–1
–2
2
–1
–1
1
1
2
–2
–1
1
0
3
–1
–1
–1
–1
3
0
–1
–1
0
5. Предъявлен образ 1 (1100)
6. Предъявлен образ 2 (1011)
R = –1,–3,–1; стр. 1 «+», 2 «0», 3 «–» R = –4,–1,–2; C не меняется
Матрица C после образа 1
7. Предъявлен образ 3 (1000)
R = –1,–2,–1; стр. 1 «–», 2 «0», 3 «+»
1
2
3
4
Матрица C после образа 3
1
–1
2
–1
–2
1
2
3
4
2
–2
–1
1
0
1
–2
2
–1
–2
3
–1
–2
–1
0
2
–2
–1
1
0
8. Предъявлен образ 4 (1001)
3
0
–2
–1
0
R = –4,–2,0; C не меняется
9. Предъявлен образ 1 (1100)
11. Предъявлен образ 3 (1000)
R = 0,–3,–2; C не меняется
R = –2,–1,–1; стр. 1 «0», 2 «–», 3 «+»
10. Предъявлен образ 2 (1011)
Матрица C после образа 3
R = –5,–1,–1; стр. 1 «0», 2 «+», 3 «–»
1
2
3
4
Матрица C после образа 2
1
–2
2
–1
–2
1
2
3
4
2
–2
–1
2
1
1
–2
2
–1
–2
3
0
–2
–2
–1
2
–1
–1
2
1
13. Предъявлен образ 1 (1100)
3
–1
–2
–2
–1 R = 0,–4,–1; C не меняется
12. Предъявлен образ 4 (1001)
14. Предъявлен образ 2 (1011)
R = –4,–1,–1; стр. 1 «0», 2 «–», 3 «+» R = –5,–1,–1; стр. 1 «0», 2 «+», 3 «–»
Матрица C после образа 4
Матрица C после образа 2
1
2
3
1
–2
–3
1
2
2
–1
–2
3
–1
2
–2
4
–2
0
0
1
2
3
1
–2
–2
0
2
2
–1
–2
Рис. 5.8. Обучение распознаванию всех образов
третьим способом (начало)
104
3
–1
3
–3
4
–2
1
–1
15. Предъявлен образ 3 (1000)
17. Предъявлен образ 1 (1100)
R = –2,–2,0; C не меняется
R = 0,–4,–1; C не меняется
16. Предъявлен образ 4 (1001)
18. Предъявлен образ 2 (1011)
R = –4,–1,–1; стр. 1 «0», 2 «–», 3 «+» R = –5,0,–2; C не меняется
Матрица C после образа 4
19. Предъявлен образ 3 (1000)
R = –2,–3,1; C не меняется
1
2
3
4
20. Предъявлен образ 4 (1001)
1
–2
2
–1
–2
R = –4,–3,1; C не меняется
2
–3
–1
3
0
3
1
–2
–3
0
Рис. 5.9. Обучение распознаванию всех образов третьим способом (конец)
Обучим систему последним из приведенных выше способов –
прямым оцениванием, при котором после предъявления образа из
обучающего множества вектор R вообще не вычисляется, а выполняется только корректировка элементов матрицы C, причем после
однократного предъявления всех образов обучение заканчивается.
Процесс обучения показан на рис. 5.10. Система будет обучена уже
после четырех предъявлений, что доказывают следующие после
них четыре предъявления, после которых матрица не изменяется.
1. Предъявлен образ 1 (1100)
стр. 1 «+», 2 «–», 3 «–»
Матрица C после образа 1
1
2
3
1
1
–1
–1
2
1
–1
–1
3
0
0
0
3. Предъявлен образ 3 (1000)
стр. 1 «–», 2 «–», 3 «+»
Матрица C после образа 3
1
2
3
1
–1
1
–1
2
–1
–1
1
3
–1
–1
–1
5. Предъявлен образ 1 (1100)
R = –1,–3,–1; ответ 1 – да
7. Предъявлен образ 3 (1000)
R = –2,–2,0; ответ 3 – да
2. Предъявлен образ 2 (1011)
стр. 1 «–», 2 «+», 3 «–»
Матрица C после образа 2
4
0
0
0
4
–1
1
–1
1
2
3
1
0
0
–2
2
1
–1
–1
3
–1
1
–1
4. Предъявлен образ 4 (1001)
стр. 1 «–», 2 «–», 3 «+»
Матрица C после образа 4
1
2
3
1
–2
1
–1
2
–2
–1
1
3
0
–1
–1
4
–1
1
–1
4
–2
0
0
6. Предъявлен образ 2 (1011)
R = –5,–1,–1; ответ 2 – да
8. Предъявлен образ 4 (1001)
R = –4,–2,0; ответ 4 – да
Рис. 5.10. Обучение распознаванию прямым оцениванием
105
Следует отметить, что обучение прямым оцениванием дает положительный результат не всегда. Проверим это утверждение
на обучающем множестве из шести образов, относящихся к двум
классам, с положительными целочисленными значениями двух
признаков, как показано в табл. 5.3.
Из табл. 5.3 видно, что информативным является только второй
признак, но при обучении используются оба. Изменение в процессе
обучения матрицы C после предъявления каждого образа приведено в табл. 5.4.
Согласно описанию способа обучения прямым оцениванием обучение закончено после однократного предъявления всех образов
из обучающего множества, т. е. последняя матрица C должна обеспечивать правильное распознавание любого образа из обучающего
множества. Предъявляя эти образы, получим ошибочное распознавание всех образов, относящихся к первому классу.
Попробуем обучить систему на обучающем множестве из
табл. 5.3 другим рассмотренным ранее способом, при котором после
предъявления образа вычисляется вектор R и изменения строк матрицы C производится только в случае ошибочного распознавания.
Изменение матрицы C в процессе обучения приведено в табл. 5.5.
Система обучена после 13 предъявлений, причем последние шесть
предъявлений не вызывали изменения матрицы C, т. е. являлись
проверкой правильности обучения.
Обучение при котором изменения матрицы C производится только в случае ошибочного распознавания тоже дает положительный
результат не всегда. В табл. 5.6 в качестве примеров приведены обТаблица 5.3
Обучающее множество с положительными значениями
Признак /
образ
1
1
4
Класс 1
2
5
3
6
4
4
Класс 2
5
5
6
6
2
1
2
3
7
8
9
Таблица 5.4
Изменение решающей матрицы при прямом оценивании
Начальное состояние
1
2
106
0
0
0
0
4 1 (1)
5 2 (1)
6 3 (1)
4 7 (2)
5 8 (2)
4 1 9 3 15 6 11 –1 6 –9
–4 –1 –9 –3 –15 –6 –11 1 –6 9
6 9 (2)
0 –18
0 18
Таблица 5.5
Изменение решающей матрицы при обучении первым способом
Начальное
состояние
R
1
2
R
1
2
0
0
0
0
4 1 (1)
–6
6
4
–5
–4
5
4 1 (1)
5 2 (1)
0
0 22 –22
4
1
4
1
–4 –1 –4 –1
5 2 (1)
6 3 (1)
10 –10 9 –9
4 –5 4 –5
–4 5 –4 5
6 3 (1)
4 7 (2)
5 8 (2)
6 9 (2)
27 –27 23 –23 –48 48 –54 54
4
1
0 –6 0 –6 0 –6
–4 –1 0
6
0
6
0
6
4 7 (2)
5 8 (2)
6 9 (2)
4 1 (1)
–19 19 –20 20 –21 21 9 –9
4 –5 4 –5 4 –5 4 –5
–4 5 –4 5 –4 5 –4 5
Таблица 5.6
Изменение решающей матрицы при обучении первым способом
Пример 1
Признак Класс 1
1
1 2 3
2
1 2 3
Класс 2
9 8 7
9 8 7
Пример 2
N нет
Класс 1
1 2 1
2 3 4
N нет
Класс 1
1 2 2
3 2 3
Пример 3
Признак Класс 1
1
1 1 2
2
1 2 1
Класс 2
9 9 8
9 8 9
Класс 2
9 7 9
9 8 7
N = 30
–7 6
7 –6
Пример 4
Класс 2 N = 78
9 9 8 –14 15
7 8 7 14 –15
учающие множества и соответствующие им матрицы C, если обучение закончилось успешно, а также N – число предъявлений образов.
Попробуем ответить на вопрос, каким условиям должно отвечать обучающее множество, чтобы процесс обучения закончился
успешно? Представим образы из обучающего множества как точки
в пространстве признаков (для образов из табл. 5.6 это будут точки
на плоскости, как показано на рис. 5.11).
Во всех рассмотренных выше способах обучения условием его
успешного окончания является правильное распознавание всех
образов из обучающего множества. Из чего следует, что первое условие – отсутствие пересечения классов в обучающем множестве.
В противном случае невозможно создать систему, правильно распознающую все образы из обучающего множества, а можно только
минимизировать число ошибок при их распознавании.
Во всех примерах обучающих множеств, представленных на рис.
5.10, классы не пересекаются и даже линейно разделимы, но для
107
множеств из первого и третьего примеров сформировать матрицу C
не удалось. Проблема в том, что уравнения (5.1) для значений вектора R описывают гиперплоскости в пространстве признаков, проходящие через начало координат (в случае двух признаков и двух
классов, как на рис. 5.11, это линия). Отсюда следует, что если все
образы, как в примере 1 из табл. 5.6 лежат на одной прямой, проходящей через начало координат, то не существует такой матрицы С,
что вычисленные по формуле (5.1) значения r1 для образов первого
класса были больше чем r2 для образов второго класса и наоборот.
Аналогично, расположение образов в третьем примере из табл. 5.6
тоже не позволяет найти такую матрицу C. Следовательно, второе
условие успешного обучения – возможность линейного разделения
классов из обучающего множества гиперплоскостью, проходящей
через начало координат в пространстве признаков.
Рассмотрим простейший пример с одним признаком x и двумя
классами: класс 1 (–1, –2, –3) и класс 2 (1, 2, 3). После обучения элементы матрицы C (в данном случае это вектор): с1 = –1, с2 = 1. Все образы из обучающего множества распознаются. Сместим образы обучающего множества в положительную часть оси признака x: класс
Х2
9
8
7
6
5
4
3
2
1
0
1
2
– Пример 1
3
4
5
– Пример 2
6
7
8
– Пример 3
9
Х1
– Пример 4
Рис. 5.11. Обучающие множества в пространстве признаков
108
1 (3, 2, 1) и класс 2 (5, 6, 7). Обучение заканчивается неудачей. Причина заключается в том, что согласно способу распознавания коэффициенты с1 и с2 должны одновременно удовлетворять следующим
условиям: с1х1 > с2х1 и с1х2 < с2х2, где х1, х2 – значение признака
x для образов, относящихся к первому и второму классам соответственно. Отсюда, (с1 – с2)х1 > 0 для всех х1 и (с1 – с2)х1 < 0 для всех
х2, что выполнимо только при условии – все х1 > 0 и все х2 < 0.
Решение проблемы состоит в смещении гиперплоскости относительно начала координат за счет добавления фиктивного признака с постоянным значением. Например, после добавления второго
признака с постоянным единичным значением для всех образов из
обучающего множества из предыдущего примера после 36 предъæ-2 7 ö÷
÷.
явлений получим следующую матрицу C =çç ç
çè 2 -7÷ø÷
В новом пространстве признаков (для двух признаков это плоскость) точки, соответствующие образам обучающего множества
лежат на линии, параллельной оси первого признака и находящейся от нее на единичном расстоянии. Разделяющая образы, относящиеся к первому и второму классам, линия теперь проходит через
начало координат.
Вывод – добавление фиктивного признака с постоянным значением для всех образов из обучающего множества может помочь
успешному обучению системы распознавания.
5.3. Обучение экспертной системы
Как уже отмечалось выше, экспертная система представляет собой систему распознавания, которая при распознавании неизвестного образа получает информацию о значениях признаков последовательно, причем следующий признак выбирается в зависимости
от его информативности и значений уже полученных признаков.
Таким образом, в экспертной системе процесс получения информации о значениях признаков распознаваемого образа совмещен с
процессом его классификации.
Обучение экспертной системы распознаванию образов относится к обучению с подкреплением, а структура обучающего множества и принцип действия системы на основе вычисления вектора
решений R с помощью решающей матрицы C практически ничем
не отличаются от описанных ранее в п. 5.2.
109
Основное отличие заключается в том, что на каждом шаге система выбирает наиболее информативный в данный момент признак
и запрашивает его значение у распознаваемого образа. Если после
получения этого значения система может отнести распознаваемый
образ к одному из известных ей классов, то она сообщает этот класс.
Если нет, то система пытается исключить некоторые классы из
дальнейшего рассмотрения и запрашивает значение наиболее информативного признака еще не запрошенных признаков. Процесс
распознавания заканчивается тогда, когда будет выбран класс, к
которому, по мнению системы, следует отнести распознаваемый
образ, или получена информация о значениях всех признаков и система выберет для распознаваемого образа наиболее подходящий
класс. Если система ошиблась, то выполняется коррекция матрицы C одним из способов, приведенных в п. 5.2. Например, корректируются строка t матрицы, соответствующая правильному классу, а также все k-е строки, для которых rk ≥ rt, где rk, rt – элементы
вектора R.
Определить информативность pi для одного из еще не запрошенных признаков i можно как
pi = (max(xi ) - min(xi )å abs(cji ), (5.4)
j
где max(xi), min(xi) – максимальное и минимальное значения признака xi у образов обучающего множества, j – номера еще не исключенных из рассмотрения классов.
Можно определить информативность pi и через дисперсию
элементов матрицы C, соответствующих i-му признаку, как
pi = (max(xi ) - min(xi )å (ccp - cji )2 , где сср – среднее значение элеj
ментов матрицы C для i-го признака по всем j-м классам.
Если признаков с максимальным значением информативности
несколько, то из них выбирается признак с наименьшим номером.
После получения значения запрошенного признака вычисляются
элементы rj вектора решений R по формуле (5.1), причем учитываются только те признаки, информация о которых уже получена.
Далее находится класс d, для которого rd = max(rj). Если в векторе
R элементов с максимальным значением несколько, то выбирается
класс с наименьшим номером.
Для определения наиболее подходящего на данный момент
класса для распознаваемого образа вычисляются fj – возможные
значения элементов вектора R по еще не полученным признакам xi:
110
(5.5)
fj = rj + å hi , i
где hj – возможное значение для j-го класса. Для j = d fd = rd, т. е.
сумма hi не вычисляется. Для остальных j значения hi вычисляются следующим образом:
если cji > cdi, то
hi = max(xi)(cji – cdi);
если cji < cdi, то
hi = min(xi)(cji – cdi);
(5.6)
если cji = cdi, то
hi = 0.
В качестве класса, к которому возможно относится распознаваемый образ, выбирается класс k с максимальным значением fj.
Если таких классов несколько, то выбирается класс с наименьшим
номером.
Если k = d, т. е. номера классов с max(rj) и max(fj) совпадают, то
ввод значений признаков для распознаваемого образа заканчивается, а сам образ относится к k-му классу. В противном случае решение не принимается, из дальнейшего рассмотрения исключаются
j-е классы, для которых fj < fd и процесс повторяется – находится
наиболее информативный из оставшихся признаков, вводится его
значение, вычисляется множество значений rj и fj, по которым находится наиболее подходящий класс для распознаваемого образа.
Если система приняла правильное решение, т. е. k = t, где t –
номер класса, к которому действительно относится распознаваемый образ из обучающего множества, то матрица C не изменяется.
В противном случае выполняется коррекция элементов матрицы
C – c′ti вычисляется согласно (5.2), а формула (5.3) для c′ki применяется ко всем k-м строкам матрицы C, для которых rk ≥ rt и k ≠ t.
Далее системе предъявляется следующий образ из обучающего
множества и описанный выше цикл повторяется. Обучение заканчивается, если система правильно распознает все имеющиеся в обучающем множестве образы.
Для примера возьмем первые три образа из обучающего множества, приведенного в табл. 5.1 (класс планер представлен одним образом). Теперь в обучающем множестве каждый класс представлен
только одним образом.
Определим информативность признаков по формуле (5.4). У первого признака (крылья) разность максимальных и минимальных
111
значений нулевая – его можно исключить из дальнейшего рассмотрения при выборе информативного признака и запрашивать его
значение в последнюю очередь. У остальных признаков разность
максимальных и минимальных значений совпадает и равна единице. Следовательно, информативность j-го признака определяется
только значениями матрицы C, т. е. pi = å abs(cji ).
j
Предъявлен первый образ (1100 – птица). Пока исключенных из
рассмотрения классов и признаков нет. Согласно (5.4) информативность признаков 2, 3 и 4 равна нулю, так как перед началом обучения матрица C обнулена. Выбираем для ввода значение признака 2,
как признака с наименьшим номером. Вычисляем элементы вектора R (0, 0, 0), из чего следует – возможный класс d = 1 (класс с
наименьшим номером).
Вычисляем значения fj по признакам 1, 3, 4, значения которых
еще не введены. Согласно (5.5) и (5.6): f1 = 0, так как j = d; f2 = 0,
так как c2i = c1i; f3 = 0, так как c3i = c1i. В качестве класса, к которому возможно относится распознаваемый образ, выбирается первый класс (k = 1), как класс с наименьшим номером (все значения
fj равны между собой). Окончательное решение – образ относится к
первому классу (d = k), что соответствует информации из обучающего множества (t = 1). Матрица C сохраняется.
Предъявлен второй образ (1011 – самолет). Исключенных из рассмотрения классов и признаков нет, информативность признаков
после предыдущего предъявленного образа не изменилась. Выбираем для ввода значение признака 2, как признака с наименьшим
номером. Вычисляем элементы вектора R (0, 0, 0), из чего следует,
что возможный класс d = 1, как класс с наименьшим номером.
Вычисляем значения fj по признакам 1, 3, 4, значения которых
еще не введены. Согласно (5.5) и (5.6): f1 = 0, так как j = d; f2 = 0,
так как c2i = c1i; f3 = 0, так как c3i = c1i. В качестве класса, к которому возможно относится распознаваемый образ, выбирается первый класс (k = 1), как класс с наименьшим номером (все значения
fj равны нулю).
Окончательное решение – образ относится к первому классу
(d = k), что не соответствует информации из обучающего множества (t = 1). Матрица C изменяется – вторая строка согласно (5.2), а
первая и третья строки согласно (5.3). Матрица C после коррекции
приведена в табл. 5.7.
Предъявлен третий образ (1000 – планер). Исключенных из рассмотрения классов и признаков нет, информативность признаков
112
Таблица 5.7
Коррекция матрицы C после первого предъявления второго образа
Класс 1
Класс 2
Класс 3
x1
x2
x3
x4
–1
1
–1
0
0
0
–1
1
–1
–1
1
–1
после предыдущего предъявленного образа изменилась, так как
изменились элементы матрицы C. Теперь согласно (5.4) p2 = 0 +
+ 0 + 0 = 0; p3 = 1 + 1 + 1 = 3; p4 = 1 + 1 + 1 = 3. Выбираем для ввода
значение признака 3 (x3 = 0), как признака с наименьшим номером
из признаков 3 и 4, имеющих максимальное значение рi. Вычисляем элементы вектора R (0, 0, 0), из чего следует, что возможный
класс d = 1, как класс с наименьшим номером.
Вычисляем значения fj по признакам 1, 2, 4, значения которых
еще не введены: f1 = 0, так как j = d = 1; f2 = r2 + max(x1)(c21 – c11)
+ 0 + max(x4)(c24 – c14) = 0 + 2 + 0 + 2 = 4;
f3 = r3 + 0+ 0 + 0 = 0. Нулевые значения в суммах для f2 и f3
соответствуют равенству cji = c1i, т. е. c22 = c12, и c3i = c1i. В качестве класса, к которому возможно относится распознаваемый образ, выбирается второй класс (k = 2), как класс с максимальным
значением fj. Образ нельзя отнести к какому-либо классу, так как
d ≠ k. Нельзя и исключить из дальнейшего рассмотрения какие-либо классы, так как нет классов с fj < fd.
Из дальнейшего рассмотрения для вводимого образа исключен
признак 3. Из признаков 2 и 4 в качестве наиболее информативного
согласно сделанной ранее оценки (p2 = 0, p4 = 3) выбираем признак
4 (x4 = 0). Вычисляем элементы вектора R (0, 0, 0), из чего следует,
что возможный класс d = 1.
Вычисляем значения fj по признакам 1 и 2, значения которых
еще не введены: f1 = 0; f2 = 0 + 2 + 0 = 2; f3 = 0. В качестве класса, к
которому возможно относится распознаваемый образ, выбирается
второй класс (k = 2). Образ нельзя отнести к какому-либо классу
(d ≠ k), нельзя и исключить из дальнейшего рассмотрения какиелибо классы.
Вводим значение признака 2 – единственного оставшегося в списке информативных признаков (x2 = 0). Вычисляем элементы вектора R (0, 0, 0). Возможный класс d = 1.
Вычисляем значения fj по значению признака 1, который еще
не введен: f1 = 0; f2 = 0 + 2 + 0 = 2; f3 = 0. В качестве класса, к
113
которому возможно относится распознаваемый образ, выбирается
второй класс (k = 2). Образ нельзя отнести к какому-либо классу
(d ≠ k), нельзя и исключить из дальнейшего рассмотрения какиелибо классы.
Вводим значение последнего признака (x1 = 1). Вычисляем элементы вектора R (-1, 1, -1). Возможный класс d = 2. Признаки в
предъявленном образе закончились.
Окончательное решение – образ относится ко второму классу
(k = 2), что не соответствует информации из обучающего множества (t = 3). Матрица C изменяется – третья строка согласно (5.2), а
первая и вторая строки согласно (5.3). Матрица C после коррекции
приведена в табл. 5.8.
Образы в обучающем множестве закончились. Система распознавала их с ошибками, поэтому следует повторить предъявление
образов, используя последнюю матрицу С, приведенную в табл. 5.8.
Предъявлен первый образ (1100 – птица). Пока исключенных из
рассмотрения классов и признаков нет. Согласно (5.4) информативность признаков p2 = 0 + 0 + 0 = 0; p3 = 1 + 1 + 1 = 3; p4 = 1 + 1 + 1 = 3.
Выбираем для ввода значение признака 3 (x3 = 0). Вычисляем элементы вектора R (0, 0, 0). Возможный класс d = 1.
Вычисляем значения fj по признакам 1, 2, 4, значения которых
еще не введены: f1 = 0; f2 = 0 + 2 + 0 + 2 = 4; f3 = 0 + 2+ 0 + 0 = 2.
В качестве класса, к которому возможно относится распознаваемый образ, выбирается второй класс (k = 2). Образ нельзя отнести
к какому-либо классу (d ≠ k), нельзя и исключить из дальнейшего
рассмотрения какие-либо классы.
Из признаков 2 и 4 в качестве наиболее информативного выбираем признак 4 (x4 = 0). Вычисляем элементы вектора R (0, 0, 0).
Возможный класс d = 1.
Вычисляем значения fj по признакам 1 и 2, значения которых
еще не введены: f1 = 0; f2 = 2; f3 = 2. В качестве класса, к которому возможно относится распознаваемый образ, выбирается второй
класс (k = 2). Образ нельзя отнести к какому-либо классу (d ≠ k),
Таблица 5.8
Коррекция матрицы C после первого предъявления третьего образа
Класс 1
Класс 2
Класс 3
114
x1
x2
x3
x4
–2
0
0
0
0
0
–1
1
–1
–1
1
–1
Таблица 5.9
Коррекция матрицы C после второго предъявления третьего образа
Класс 1
Класс 2
Класс 3
x1
x2
x3
x4
–1
–1
–1
1
–1
–1
–1
1
–1
–1
1
–1
нельзя и исключить из дальнейшего рассмотрения какие-либо
классы.
Вводим значение признака 2 – единственного оставшегося в списке информативных признаков (x2 = 1). Вычисляем элементы вектора R (0, 0, 0). Возможный класс d = 1.
Вычисляем значения fj по значению признака 1, который еще
не введен: f1 = 0; f2 = 2; f3 = 2. В качестве класса, к которому возможно относится распознаваемый образ, выбирается второй класс
(k = 2). Образ нельзя отнести к какому-либо классу (d ≠ k), нельзя и
исключить из дальнейшего рассмотрения какие-либо классы.
Вводим значение последнего признака (x1 = 1). Вычисляем элементы вектора R (–2, 0, 0). Возможный класс d = 2. Признаки в
предъявленном образе закончились.
Окончательное решение – образ относится ко второму классу
(k = 2), что не соответствует информации из обучающего множества (t = 1). Матрица C изменяется – первая строка согласно (5.2), а
вторая и третья строки согласно (5.3). Матрица C после коррекции
приведена в табл. 5.9.
Далее предъявление образов из обучающего множества продолжается до тех пор, пока система не станет правильно их распознавать или не будет сделан вывод о невозможности обучить систему
распознаванию данного множества образов.
Следует отметить, что алгоритм работы экспертной системы,
приведенной в рассмотренном выше примере, отличается от алгоритмов работы экспертных систем, описанных в разделе 4. Данный
алгоритм, сохраняя основные принципы построения экспертных
систем, позволяет проводить обучение с подкреплением, а после его
успешного окончания распознавать предъявляемые образы, совмещая процесс получения информации о признаках с классификацией предъявленного образа.
115
6. НЕЙРОННЫЕ СЕТИ
6.1. Естественные и искусственные нейроны
Рассмотренные в предыдущих разделах подходы к решению задач ИИ базируются на гипотезе о физической символьной системе, т. е. используют явные представления знаний об окружающем
мире и детально разработанные алгоритмы поиска в пространстве
состояний. Другая точка зрения на проблему создания систем, обладающих ИИ, состоит в том, что их построение должно опираться
на изучение механизмов естественного мышления и анализ данных
о способах формирования разумного поведения интеллектуальных
систем, созданных природой. Причем это построение должно осуществляться, прежде всего, как воспроизведение техническими
средствами принципов и конкретных особенностей функционирования биологических объектов. Развитие данного направления базируется на математической интерпретации деятельности нервной
системы во главе с мозгом различных живых существ, в первую
очередь, человека, и реализуются в виде нейронных сетей на базе
нейроподобного элемента – аналога нейрона.
Мозг человека является, пожалуй, самой сложной из известных
на сегодняшний день систем переработки информации. Достаточно
сказать, что в нем содержится около 100 миллиардов нейронов, каждый из которых имеет в среднем 10 000 связей. При этом мозг чрезвычайно надежен – ежедневно погибает большое количество нейронов, а мозг продолжает функционировать. Обработка огромных объемов информации осуществляется мозгом очень быстро, за доли секунды, несмотря на то, что нейрон является медленнодействующим
элементом со временем реакции не менее нескольких миллисекунд.
Пока не слишком понятно, как мозгу удается получить столь
впечатляющее сочетание надежности и быстродействия. Современной наукой довольно хорошо изучена структура и функции отдельных нейронов, имеются данные об организации внутренних и
внешних связей между нейронами некоторых структурных образований мозга, и совсем мало что известно об участии различных
структур в процессах переработки информации.
Нервные клетки, или нейроны, представляют собой особый вид
клеток в живых организмах, обладающих электрической активностью, основное назначение которых заключается в оперативном
управлении организмом. Как показано на рис. 6.1, нейрон имеет
тело (сому), дерево входов (дендриты) и выходов (аксон и его окон116
Синапс
Аксон
Тело клетки
Дендрит
Рис. 6.1. Схема биологического нейрона
чания). Сома, как правило, имеет поперечный размер в несколько
десятков микрон. Длина дендритов может достигать 1 мм, причем
дендриты сильно ветвятся, пронизывая сравнительно большое пространство в окрестности нейрона. Длина аксона может достигать
сотен миллиметров. На соме и на дендритах располагаются окончания аксонов, идущих от других нервных клеток, причем каждое
такое окончание имеет вид утолщения, называемого синаптической бляшкой, или синапсом. Поперечные размеры синапса, как
правило, не превышают нескольких микрон, чаще всего эти размеры составляют около 1 мкм.
Входные сигналы дендритного дерева суммируются в соме, причем если результат не превышает некоторого порога, то выходной
сигнал не формируется вовсе – нейрон «не срабатывает». Выходной
сигнал проходит по ветвям аксона и достигает синапсов, которые
соединяют аксоны с дендритными деревьями других нейронов. Через синапсы сигнал трансформируется в новый входной сигнал для
смежных нейронов. Этот входной сигнал может быть положительным и отрицательным, т. е. возбуждающим или тормозящим в зависимости от вида синапсов. Величина входного сигнала, генерируемого синапсом, может быть различной даже при одинаковой величине
сигнала, приходящего в синапс. Эти различия определяются эффективностью или весом синапса, причем синаптический вес может
изменяться в процессе функционирования синапса. Многие ученые
считают такое изменение нейрофизиологическим коррелятом, т. е.
следом памяти. В таком случае роль механизмов молекулярной памяти заключается в долговременном закреплении этих следов.
Нейроны можно разбить на три большие группы: рецепторные,
промежуточные и эффекторные. Рецепторные нейроны обеспечивают ввод в мозг сенсорной информации. Они трансформируют сигналы, поступающие на органы чувств (оптические сигналы в сетчатке глаза, акустические в ушной улитке или обонятельные в хе117
морецепторах носа), в последовательность электрических импульсов своих аксонов. Эффекторные нейроны передают приходящие
на них сигналы исполнительным органам. На конце их аксонов
имеются специальные синаптические соединения с исполнительными органами, например мышцами, где возбуждение нейронов
трансформируется в сокращения мышц. Промежуточные нейроны
осуществляют обработку информации, получаемой от рецепторов,
и формируют управляющие сигналы для эффекторов. Именно они
образуют центральную нервную систему и в основном содержатся в
коре головного мозга.
В основу искусственных нейронных сетей положены следующие
свойства естественных нейронных сетей:
− простой обрабатывающий элемент – нейрон;
− очень большое число нейронов участвует в обработке информации;
− один нейрон связан с большим числом других нейронов;
− изменяющиеся по весу связи между нейронами;
− параллельность обработки информации.
На каждый включенный в нейронную сеть искусственный нейрон, схема которого приведена на рис. 6.2, поступает вектор входных сигналов x = (x1, …, хn), представляющий собой выходные
сигналы других нейронов сети, которые соответствуют сигналам,
поступающим в синапсы биологических нейронов. Каждый входной сигнал умножается на соответствующий элемент вектора весовых коэффициентов или просто весов связей w = (w1, …, wn), где
n – число связей. Взвешенные входные сигналы поступают на блок
суммирования, соответствующий телу клетки, где их суммироваn
ние и определяет уровень возбуждения нейрона s: s = å wi xi или в
i=1
x1
w1
x2
w2
.......
xn
Σ
s
f
y
wn
Рис. 6.2. Схема искусственного нейрона
118
векторной форме: s = wxT. Отметим, что являющийся аналогом эффективности синапса вес связи имеет положительное значение для
возбуждающих и отрицательное значение для тормозящих связей.
Выходной сигнал нейрона у определяется путем пропускания
уровня возбуждения s через нелинейную функцию f: y = f(s–θ), где
θ – некоторое постоянное смещение, являющееся аналогом порога
возбуждения биологического нейрона. Обычно в качестве функции
f используются простейшие нелинейные функции, графики которых приведены на рис. 6.3:
− бинарная
ìï1, s - θ ³ 0
(6.1)
y = ïí
;
ïïî0, s - θ < 0
− сигмоидальная
y = 1 (1 + e-(s-θ) ). (6.2)
Порог возбуждения θ у каждого нейрона индивидуален и настраивается в процессе обучения вместе с элементами вектора весовых коэффициентов. Для придания процессу обучения единообразия к вектору входных сигналов нейрона добавляется единичный
сигнал x0 = 1, а соответствующий ему весовой коэффициент w0 после обучения данного нейрона становится равным θ. В таком случае
порог возбуждения в формулах (6.1) и (6.2) для каждого нейрона
принимается равным нулю.
Поведение искусственного нейрона в сети зависит как от значения весовых параметров, так и от функции возбуждения. Нейроны
с сигмоидальным возбуждением имеют больше сходства с реальными нейронами, чем нейроны с бинарной функцией возбуждения, но
любой из этих типов можно рассматривать лишь как грубое приближение к биологическому нейрону.
y
y
1
1
0,5
0
θ
Бинарная
s
0
θ
s
Сигмоидальная
Рис. 6.3. Функции возбуждения нейронов
119
6.2. Топология нейронных сетей
Нейронная сеть представляет собой совокупность большого числа нейронов, топология соединения которых зависит от типа сети.
Чтобы создать нейронную сеть для решения какой-либо конкретной задачи, необходимо выбрать способ соединения нейронов друг
с другом и соответствующим образом подобрать значения весов на
этих связях, причем возможность влияния одного нейрона на другой определяется установленными связями, а их вес определяет
степень влияния.
В искусственной нейронной сети пренебрегают многими известными характеристиками биологического прототипа, которые некоторые исследователи считают критическими. Например, в ней не
учитывается пространственно-временная нелинейность суммирования, которая особенно проявляется для сигналов, приходящих
по возбуждающим и тормозящим синапсам, различного рода временные задержки, эффекты синхронизации и частотной модуляции и т. п. Несмотря на это, нейронные сети, простроенные на основе таких простых элементов, демонстрируют ассоциативные свойства, напоминающие свойства биологических нейронных сетей.
Теоретические основы нейронных сетей были заложены в начале 40-х годов XX века, когда У. Мак-Каллок и У. Питтс сформулировали основные положения теории деятельности головного мозга.
Ими была разработана модель нейрона как простейшего процессорного элемента, выполняющего вычисление переходной функции
от скалярного произведения вектора входных сигналов и вектора
весовых коэффициентов, предложена конструкция сети таких нейронов для выполнения логических и арифметических операций.
И главное – сделано основополагающее предположение о том, что
такая сеть способна обучаться распознавать образы, т. е. обобщать
получаемую информацию.
В модели Мак-Каллока – Питтса нейроны имеют два состояния – 0 или 1 и бинарную функцию возбуждения. Каждый нейрон
в сети определяет взвешенную сумму состояний всех других нейронов и сравнивает ее с порогом, чтобы определить свое собственное
состояние. На рис. 6.4 представлены одиночные нейроны с тремя
входами и соответствующими весовыми коэффициентами для вычисления логических функций И и ИЛИ. На два первых входа подаются аргументы логической функции, а на третий нейрон (нейрон смещения) постоянно подается единица (его весовой коэффициент соответствует индивидуальному порогу срабатывания ней120
x1 +1
x1 +1
x2 +1
1–2
∧
x1 + x2 –2 x1 x2
x1∧ x2 –1
x2 +1
(x ∨x )–
x1 + x2
x ∨x x ∨x +1 1 2
x1 + x2 –1 1 2 1 2
(x1∧ x2 ) –1
1–1
1–1
Рис. 6.4. Вычисление логических функций с помощью нейронов
рона). Пороговое значение для любого нейрона – 0, т. е. нейрон «не
срабатывает», если уровень возбуждения меньше нуля.
Основной недостаток модели Мак-Каллока – Питтса состоит в
том, что бинарная функция перехода не предоставляет нейронной
сети достаточную гибкость при обучении и настройке на заданную
задачу. Если значение вычисленного скалярного произведения
даже незначительно не достигает до заданного порога, то выходной
сигнал не формируется вовсе, т. е. нейрон «не срабатывает». В результате теряется интенсивность выходного сигнала данного нейрона и, следовательно, формируется невысокое значение уровня на
взвешенных входах в следующем слое нейронов.
Дальнейшее развитие теория нейронных сетей получила в
1958 году благодаря Френсису Розенблату, добавившему в модель
Мак-Каллока – Питтса способность связей к модификации, что сделало нейронную сеть обучаемой. Эта модель была названа персептроном. Первоначально персептрон представлял собой однослойную структуру с жесткой пороговой функцией и бинарными или
многозначными входами. Персептрон применялся для решения
задачи автоматической классификации образов, которая в общем
случае состоит в разделении пространства признаков между заданным количеством классов. Значения признаков распознаваемого
образа подаются на входы персептрона, а значения выходов обученного персептрона должны соответствовать классу, к которому
относится распознаваемый образ. Первые персептроны были способны распознавать некоторые буквы латинского алфавита.
Пример однослойной сети с n входами и m выходами, позволяющей распознавать соответственно m классов, приведен на рис. 6.5.
В данной сети каждый нейрон соответствует одному из распознаваемых классов. Следовательно, при правильном распознавании
выходной вектор состоит из m–1 нулей и одной единицы – выход
единственного активного нейрона.
Теоретически можно сократить число выходных нейронов,
представляя номера распознаваемых классов в двоичном коде. На121
Выходной вектор y
Входной вектор x
x1
I1
y1
w11
N1
w12
w01
x2
y2
I2
N2
w02
wn1
xn
w1m
In
xо =1
I0
wnm
w0m
Nm
ym
Постоянная смещения
Рис. 6.5. Однослойная нейронная сеть
пример, для распознавания восьми классов понадобится всего три
выходных нейрона (23 = 8). Однако такое представление классов
резко снижает надежность распознавания, так как любая комбинация активности нейронов соответствует некоторому распознаваемому классу. Если же каждый нейрон соответствует одному из
распознаваемых классов, то получение в результате распознавания
нескольких активных нейронов считается ошибкой. Это позволяет
сети адекватно реагировать на образы, значительно отличающиеся
от обучающего множества.
В процессе обучения персептрону последовательно предъявляются образы из обучающего множества, каждый из которых
представляет собой вектор активностей входных сигналов x, вместе с желаемым вектором активностей выходных нейронов t. Обучение заключается в таком изменении весов связей wij, которое
приводит в итоге к максимуму правильного распознавания. Если
после предъявления очередного образа из обучающего множества
выходные нейроны срабатывают правильно (t = y), то веса связей
122
не изменяются, а если неправильно, то весам дается небольшое изменение в сторону улучшения распознавания. В результате такой
процедуры получаются значения весовых коэффициентов, минимизирующие среднюю ошибку на всем обучающем множестве образов. Предъявление образов продолжается, пока сеть не научится
их распознавать.
Начальные значения часто устанавливаются нулевыми. Веса на
шаге k+1 корректируются по следующим формулам:
wij(k+1) = wij(k) + Δwij(k+1);
(6.3)
Δwij(k+1) = ηδjxi; δj = tj – yj,
(6.4)
где wij(k) – вес связи между i-м нейроном входного слоя (i = 1, …,
n) и j-м нейроном выходного слоя (j = 1, …, m) на k-м шаге обучения, η – скорость обучения (η = 1,0 – 0,1), δj – ошибка j-го нейрона
выходного слоя, tj и yj – соответственно желаемое и полученное на
данном шаге значение на выходе j-го нейрона выходного слоя.
Если элементы входного вектора могут принимать только бинарные значения (0, 1), а в качестве функции возбуждения нейронов выходного слоя используется бинарная функция (6.1), то скорость обучения η = 1, а формула (6.4) принимает вид
Δwij(k+1) = (tj – yj) xi.
(6.5)
В таком случае весовые коэффициенты могут принимать только
целочисленные значения.
В качестве примера рассмотрим обучение двух нейронов с бинарной функцией возбуждения распознаванию двух бинарных изображений, показанных на рис. 6.6. Согласно рис. 6.6 у нас имеется
два класса, каждый из которых состоит из одного эталонного образа, представленного вектором признаков из девяти элементов (нумерация признаков приведена на рис. 6.6). В таком случае каждый
нейрон выходного слоя должен иметь 10 входов, включая нулевой
1
4
7
x(1)
2
5
8
3
6
9
темная клетка – 1,
1
4
7
x(2)
2
5
8
3
6
9
w(1/2)
0/0 –1/1 0/0
0/0 0/–1 0/0
–1/1 0/0 0/0
светлая – 0
w01 = 0, w02 = 0
Рис. 6.6. Распознаваемые бинарные изображения
и весовые коэффициенты после обучения
123
вход с постоянной единицей, вес которого и определяет смещение.
Пусть первому изображению соответствует единичный выходной
сигнал только первого нейрона, т. е. y(1) = (1,0), а второму изображению – только второго нейрона, т. е. y(2) = (0,1).
Шаг 1 – инициализация.
Задается обучающее множество: M = {(x(1) = (1,0,1,1,1,1,0,0,1),
(1)
t = (1,0)); (x(2) = (1,1,1,1,0,1,1,0,1), t(2) = (0,1))}. Матрица весовых коэффициентов обнуляется: w(0) = 0, т. е. wi1 = 0, wi2 = 0 (i = 0, …, 9).
Шаг 2 – ввод очередного образа из обучающего множества и коррекция весов.
На входы нейронов подается вектор x, выходной вектор y сравнивается с t и веса связей корректируются согласно (6.3) и (6.5).
Результаты вычислений векторов s и y, а также коррекция весовых
коэффициентов приведены в табл. 2.
Шаг 3 – проверка условий окончания обучения.
Из табл. 6.1 видно, что после двух последних предъявлений коррекция W не производилась, следовательно, обучение закончено.
При наличии нескольких различных образов, относящихся к
одному классу, обучение продолжалось бы до тех пор, пока нейронная сеть не научилась бы правильно различать все образы из обучаемого множества.
Полученные в результате обучения веса связей приведены на
рис. 6.6. Обратите внимание, что нулевые веса соответствуют одинаковым значениям признаков образов x(1) и x(2), т. е. эти признаки
не используются при распознавании. Для упрощения структуры
нейронной сети после обучения можно удалить связи между нейТаблица 6.1
Изменение весовых коэффициентов
x
t
s
y
t–y
w0j
w1j
w2j
w3j
w4j
w5j
w6j
w7j
w8j
w9j
1
1
0
0
1
1
0
0
1
1
0
0
0
0
–6
–6
–1
–2
2
0
–1
1
1
1
0
0
0
0
1
1
0
0
–1
–1
1
1
0
0
0
0
0
0
–1
–1
0
0
0
0
0
0
0
0
–1
–1
0
0
0
0
0
0
0
0
0
–1
1
–1
1
–1
1
–1
1
0
–1
–1
0
0
0
0
0
0
0
0
–1
–1
0
0
0
0
0
0
0
0
–1
0
–1
0
–1
0
–1
0
–1
0
–1
–1
0
0
0
0
0
0
0
0
0
–1
1
–1
1
–1
1
–1
1
0
0
0
0
0
0
0
0
0
0
0
–1
–1
0
0
0
0
0
0
0
2
1
2
1
124
ронами с нулевыми весами и сократить вектор признаков x до трех
элементов.
Проверим, способна ли обученная нейронная сеть распознать
образы, отличающиеся от эталонных значениями признаков x2, x5
или x7, у которых веса связей с нейронами выходного слоя отличны
от нуля.
Пусть надо распознать образ x = (1,1,1,1,1,1,1,0,1), отличающийся от x(2) значением x5. Тогда s1 = –2, s2 = 1, следовательно
у1 = 0, у2 = 1. Распознаваемый образ относится ко второму классу.
Пусть надо распознать образ x = (1,0,1,1,0,1,0,0,1), отличающийся от x(1) тоже значением x5. Тогда s1 = 0, s2 = 0, следовательно
у1 = 1, у2 = 1. Образ не распознан.
Пусть надо распознать образ x = (1,1,1,1,1,1,0,0,1), отличающийся от x(1) значением x2. Тогда s1 = -1, s2 = 0, следовательно
у1 = 0, у2 = 1. Распознаваемый образ ошибочно отнесен ко второму
классу.
Таким образом, однослойная сеть обладает свойствами обучения
и обобщения, правда в минимальной степени. Для увеличения надежности распознавания необходимо ввести в обучающее множество М несколько различных образов, относящихся к одному классу, что со своей стороны приведет к увеличению времени обучения.
Еще один серьезный недостаток построенной сети заключается в том, что в распознавании участвует только небольшая
часть (33%) элементов входного вектора x. В результате образ
x = (0,0,0,0,1,0,0,0,0) будет отнесен к первому классу, что явно является ошибкой, так как данный вектор не похож на x(1) или x(2).
Для устранения таких ошибок можно ввести дополнительный
нейрон, выдающий на выходе единицу при наличии во входном
векторе числа единиц больше порогового значения, например
пять и более единиц. Настройка весов такого нейрона имеет вид:
w0 = 5, w1 = w2 = w3 = w4 = w5 = w6 = w7 = w8 = w9 = 1. После ввода
в сеть дополнительного нейрона распознаваемый образ будет отнесен к первому классу, если y = (1,0,1), и ко второму классу, если
y = (0,1,1). При y = (1,0,0) или y = (0,1,0) образ можно считать нераспознанным.
Серьезным недостатком персептрона является то, что не всегда
существует такая комбинация весовых коэффициентов, при которой имеющееся множество образов будет распознаваться. Например, невозможно подобрать весовые коэффициенты персептрона для
реализации логической функции «исключающего ИЛИ» (сложение
по модулю два). Причина этого недостатка состоит в том, что одно125
слойный персептрон реализует только линейную разделяющую
поверхность в пространстве признаков. Однако лишь небольшое
количество задач распознавания предполагает линейную разделимость пространства признаков. Выходом из этого положения является использование многослойного персептрона, способного строить
ломаную границу между распознаваемыми образами, но в таком
случае возникает проблема обучения многослойного персептрона.
На рис. 6.4 представлен вариант двуслойной сети из трех нейронов, реализующей логическую операцию сложения аргументов
x1, x2 по модулю два, результат которой, как известно, не является
линейно разделимым в пространстве аргументов. В данном случае
веса связей установлены эвристически без обучения.
В 70-е годы XX века интерес к нейронным сетям значительно
упал, однако работы по их исследованию продолжались. Был предложен ряд интересных разработок, например, когнитрон, способный хорошо распознавать достаточно сложные образы независимо
от поворота и изменения масштаба изображения. Автором когнитрона является японский ученый И. Фукушима.
Начало современному математическому моделированию многослойных нейронных сетей было положено в 1982 году работами
Хопфилда, в которых была разработана математическая модель
ассоциативной памяти на нейронной сети и введена функция вычислительной энергии нейронной сети. Показано, что для однослойной нейронной сети со связями типа «все на всех» характерна
сходимость к одной из конечного множества равновесных точек,
которые являются локальными минимумами функции энергии,
содержащей в себе всю структуру взаимосвязей в сети. Привлекательность подхода Хопфилда состоит в том, что нейронная сеть для
конкретной задачи может быть запрограммирована без обучающих
итераций, так как веса связей вычисляются на основании вида
функции энергии, сконструированной для этой задачи.
Развитием модели Хопфилда для решения комбинаторных оптимизационных задач и задач искусственного интеллекта является машина Больцмана, предложенная и исследованная Джефери
Е. Хинтоном и Р. Земелом. В ней, каждое состояние сети характеризуется определенным значением функции консенсуса, являющейся аналогом функции энергии. Максимум функции консенсуса и соответствует оптимальному решению задачи, однако следует
признать, что проблема представления функции энергии или консенсуса является не менее сложной, чем разработка эффективного
алгоритма обучения многослойной нейронной сети.
126
В классических многослойных нейронных сетях связи между
собой имеют только соседние слои, при этом каждый нейрон предыдущего слоя связан со всеми нейронами последующего слоя.
Нейроны обычно имеют сигмоидальную функцию возбуждения
(6.2), так как от этой функции можно найти производную по s. Как
и в однослойной сети первый слой нейронов называется входным
и содержит число нейронов равное числу признаков распознаваемых образов, а последний слой нейронов называется выходным и
содержит число нейронов, равное числу распознаваемых классов.
Между входным и выходным слоями располагается один или более
скрытых слоев. Определение числа скрытых слоев и числа нейронов в каждом слое для конкретной задачи производится эвристическими методами.
Предположим, что необходимо научить нейронную сеть распознавать рукописные цифры. Можно воспользоваться матрицей из
256 сенсоров, каждый из которых регистрирует присутствие или
отсутствие чернильного пятнышка в пределах маленькой площадки – фрагмента одной цифры. В таком случае для сети потребуется 256 входных нейронов, 10 выходных нейронов (по одному на
каждую возможную цифру) и некоторое количество скрытых слоев нейронов. Для каждой цифры, регистрируемой сенсорами, сеть
должна генерировать высокую активность в соответствующем выходном нейроне и низкую в остальных выходных нейронах.
В процессе обучения системы ей предъявляется изображение
цифры и сравнивается действительная активность на 10 выходных
нейронах с желаемой активностью, затем подсчитывается ошибка
между действительным и желаемым выходом, после чего вес каждой связи изменяется так, чтобы уменьшить ошибку. Описанный
цикл повторяется со многими различными написаниями каждой
цифры до тех пор, пока сеть не научится правильно распознавать
все возможные изображения.
6.3. Алгоритм обратного распространения
Основной проблемой при проектировании многослойных нейронных сетей является разработка алгоритма изменения весовых
коэффициентов при обучении. Например, можно изменять вес
каждой связи на величину, пропорциональную скорости, с которой
изменяется ошибка по мере изменения веса. Эту величину, называемую производной ошибки по весу и обозначаемую EW, в общем
127
случае вычислить достаточно сложно. Один из способов вычисления EW заключается в том, чтобы изменить вес связи на очень маленькую величину и посмотреть, как изменится ошибка. Однако
такой способ мало эффективен, поскольку требует отдельных вариаций для каждого из многих весов.
В 1974 году Поль Дж. Вербос изобрел значительно более эффективную процедуру для нахождения EW, известную теперь как алгоритм обратного распространения (back propagation algorithm).
Этот алгоритм стал одним из наиболее важных инструментов в обучении многослойных нейронных сетей.
Алгоритм находит EW для каждой связи, сначала вычисляя
d – скорость, с которой изменяется ошибка при изменении уровня активности нейрона. Для выходных нейронов d является просто разностью между действительным и желаемым выходом, умноженным на производную dy/ds. Для нейронов с сиг-моидальной
функцией возбуждения (6.2) dy/ds = y(1 – y). Чтобы вычислить d
для скрытого нейрона в слое, непосредственно предшествующем
выходному слою, сначала выделяются все связи между этим скрытым нейроном и выходными нейронами, с которыми соединен данный скрытый нейрон. Затем веса связей умножаются на величины
d соответствующих выходных нейронов, а полученные произведения складываются. Эта сумма, умноженная на dy/ds для данного
нейрона, и есть его d. Вычислив d для всех нейронов скрытого слоя,
прилегающего к выходному, можно аналогичным образом рассчитать d и для других слоев, перемещаясь в направлении, обратном
тому направлению, в котором активность нейронов распространяется по сети. Отсюда и название алгоритма обратного распространения. После того как значение d для нейрона вычислено, подсчитать
EW для каждой входной связи нейрона уже несложно. Величина
EW является произведением d и активности во входной цепи.
Таким образом, для j-го нейрона выходного слоя: δj = yj(1 – yj)
(tj – yj), а для i-го нейрона промежуточного слоя p–1:
δ (i p-1) = yi (1 - yi )
N ( p)
å δ(j p)wij( p) , (6.6)
j=1
где N(p) – число нейронов в слое p (для выходного слоя N(p) = m);
yi – выход i-го нейрона из слоя p–1; δj(p) – ошибка j-го нейрона в
слое p; wij(p) – вес связи между i-м нейроном слоя p–1 и j-м нейроном слоя p.
128
На шаге k+1 весовые коэффициенты j-го нейрона слоя p корректируются по следующей формуле:
wij(p)(k+1) = wij(p)(k) + Δwij(p)(k+1); Δwij(p)(k+1) = = ηδj(p)yi(p–1) + αΔwij(p)(k),
(6.7)
(p–1)
где α – коэффициент коррекции (α = 0 – 0.5), yi
– выход i-го
нейрона из слоя p–1.
При корректировке весового коэффициента w0j j-го нейрона
слоя p y0(p–1) = 1, так как это вес связи между нейроном смещения,
постоянно выдающим единицу на все нейроны всех слоев, и j-м
нейроном слоя p.
В качестве примера рассмотрим нахождение ошибки i-го нейрона
промежуточного слоя, соединенного с двумя нейронами выходного
слоя, как показано на рис. 6.7, и его новых весовых коэффициентов
wi1’, wi2’ на данном шаге обучения (скорость обучения h = 0,4).
Ошибки нейронов вычисляются согласно (6.6) следующим образом:
– δ1 = y1(1 – y1) (t1 – y1) = 0,83(1 – 0,83)(0,58 – 0,83) = –0,035;
– δ2 = y2(1 – y2) (t2 – y2) = 0,23(1 – 0,23)(0,46 – 0,23) = 0,041;
– δi = yi(1 – yi)(wi1δ1 + wi2δ2) =
= 0,57(1 – 0,57) ((–0,42) · (–0,035) + 0,27 · 0,041) = 0,0063.
Новые весовые коэффициенты связей i-го нейрона wi1’, wi1’ вычисляются согласно (6.7) следующим образом:
– wi1’ = wi1 +ηδ1yi = –0,42 + 0,4(–0,035)0,57 = –0,428;
– wi2’ = wi2 + ηδ2yi = 0,27+0,4(0,041)0,57 = 0,279.
y1 = 0,83
wi1 = –0,42
wi2 = 0,27
i-й нейрон
скрытого слоя
yi = 0,57
t1 = 0,58
1
y2 = 0,23
t2 = 0,46
2
Выходной слой (2 нейрона)
Рис. 6.7. Соединение нейрона скрытого слоя с выходными нейронами
129
Алгоритм обратного распространения продемонстрировал значительную эффективность при обучении многослойных нейронных
сетей решению широкого класса задач, в которых отношения между входом и выходом нелинейны, а количество обучающих данных
велико. Такие сети вполне способны распознавать рукописные
цифры, предсказывать изменения валютного курса и оптимизировать химические процессы, идентифицировать переродившиеся
предраковые клетки в аннализируемых образцах ткани и регулировать положение зеркал в телескопах, чтобы исключить атмосферные искажения.
Р. Андерсен из Массачусетского технологического института и
Д. Зипсер из Калифорнийского университета в Сан-Диего показали, что алгоритм обратного распространения представляет собой
весьма эффективный инструмент для понимания функций некоторых нейронов в коре головного мозга. Применив алгоритм обратного распространения, они научили нейронную сеть реагировать на
зрительные стимулы, после чего обнаружили, что реакция скрытых нейронов удивительно схожа с реакцией реальных нейронов,
выполняющих преобразование зрительной информации, поступающей от сетчатки, в форму, необходимую для более глубоких областей мозга, перерабатывающих зрительную информацию.
Алгоритм обратного распространения оказался достаточно хорош при создании представлений о распознаваемом образе в скрытых нейронах сети и показал эффективность процедур обучения
нейронных сетей, основанных на постепенном изменении весов
связей нейронов с целью уменьшить ошибку распознавания. Ранее
многие ученые полагали, что подобные методы окажутся безнадежными, поскольку должны неизбежно приводить к локально оптимальным, но в более широком масштабе ошибочным решениям.
Например, сеть для распознавания цифр может устойчиво сходиться к набору весовых коэффициентов, при котором она будет путать
единицы с семерками, хотя и существует набор весов, позволяющий
различать эти цифры наряду с другими. Из-за опасений подобного
рода распространилось убеждение, что процедура обучения представляет практический интерес только в том случае, если она гарантирует сходимость к глобально оптимальному решению. Успешное использование метода обратного распространения показало, что
для многих задач глобальная сходимость не является необходимым
условием достижения вполне приемлемых результатов.
Необходимо отметить, что с биологической точки зрения, как
подобие работы головного мозга, метод обратного распространения
130
представляется не слишком убедительным. Наиболее очевидная
трудность заключается в том, что информация должна проходить
по тем же самым связям в обратном направлении, от каждого последующего уровня к предыдущему. Ясно, что в реальных нейронах этого не происходит. Однако в мозге существует множество путей, ведущих от следующих слоев нервных клеток к предыдущим
слоям, и эти пути могут использоваться для передачи информации,
необходимой для обучения.
Всем весам связей нейронов перед обучением следует придать
начальные значения. Обычно каждому весовому коэффициенту
задается небольшое случайное значение (процесс рандомизации
весов). Часто применяемое при обучении однослойных сетей с бинарной функцией активации нейронов обнуление всех весовых коэффициентов в данном случае применить нельзя, так как на первом
же шаге обучения согласно (6.6) d = 0, что приведет к отсутствию
коррекции весов связей всех нейронов согласно (6.7).
При использовании алгоритма обратного распространения для
обучения многослойной сети существует опасность выхода в области насыщения функции активации нейрона промежуточного слоя
на одном из шагов обучения. В таком случае выход нейрона y становится практически равным нулю или единице и согласно (6.6) d = 0,
что приведет к отсутствию коррекции весовых коэффициентов.
Серьезную проблему представляет собой и падение быстродействия алгоритма обратного распространения по мере возрастания
размеров сети. Время, требующееся для вычисления производных
от ошибки по весовым коэффициентам на заданном обучающем
множестве, пропорционально размерам сети, поскольку объем вычислений пропорционален количеству весов. Однако более крупные сети требуют большего объема обучающего множества, и им
приходится изменять весовые коэффициенты большее число раз.
Следовательно, время обучения растет значительно быстрее, чем
размеры сети.
Еще одна существенная проблема метода обратного распространения заключается в том, что такая нейронная сеть требует учителя, предоставляющего желаемый выход для каждого образа из обучающего множества. Если сеть сталкивается с большим набором
образов, но не имеет никакой информации о желаемой реакции на
них, то задачу, поставленную перед сетью можно представить как
задачу кластеризации, для решения которой разработано несколько неконтролируемых процедур настройки весовых коэффициентов сети. Одной из таких сетей является самоорганизующаяся сеть
131
Кохонена или сеть SOFM (Self-Organizing Feature Map) и построенная на ее основе сеть встречного распространения.
6.4. Сеть встречного распространения
Значительными преимуществами перед сетью, обучающейся по
алгоритму обратного распространения, обладает сеть встречного
распространения (Counter Propagation), функционирующая подобно столу справок, способному к обобщению. Сеть состоит из входного слоя, одного скрытого слоя, называемого слоем Кохонена, и
выходного слоя – слоя Гроссберга. Ее название связано с тем, что
первая подобная сеть, разработанная Р. Хехт-Нильсеном, состояла из двунаправленного отображения между входным и выходным
слоями. В настоящее время в основном используются сети с одним
прямым путем распространения возбуждения нейронов, как показано на рис. 6.8.
Нейроны входного или нулевого слоя, показанные кружками
служат лишь точками разветвления входного вектора и, как и в
других сетях, не выполняют вычислений. Число нейронов в нулевом слое n равно размерности входного вектора x. Каждый нейрон
Входной
вектор x
x1
x2
w11
I1
v 11
K1
w12
v 21
K2
I2
wn1
xn
v1
w1
In
G2
Km
Слой
Кохонена
v mp
Gp
Слой
Гроссберга
Рис. 6.8. Сеть встречного распространения
132
y2
w1m
wnm
Входной
слой
G1
Выходной
вектор yG
y1
yp
нулевого слоя соединен с каждым нейроном слоя Кохонена связью
с весовым коэффициентом wij (i = 1, …, n, j = 1, …, m). Число нейронов в слое Кохонена m равно или несколько больше числа классов
распознаваемых образов. Весовые коэффициенты каждого нейрона
слоя Кохонена можно рассматривать как вектор wj. Каждый нейрон слоя Кохонена соединен с каждым нейроном в слое Гроссберга
связью с весовым коэффициентом vji (j = 1, …, m, i = 1, …, p), которые в совокупности образуют вектор весовых коэффициентов данного нейрона слоя Гроссберга vi. Число нейронов в слое Гроссберга
p равно размерности выходного вектора yG.
Как и другие, сеть встречного распространения работает в двух
режимах: в рабочем режиме, при котором подается входной вектор
x и выдается выходной вектор yG, и в режиме обучения, при котором подается входной вектор и весовые коэффициенты корректируются так, чтобы получить требуемый выходной вектор.
В рабочем режиме слой Кохонена функционирует по алгоритму
«победитель забирает все», который заключается в следующем. Для
каждого j-го нейрона слоя вычисляется уровень возбуждения s: sj =
wjxT. Нейрон с максимальным значением s выдает на выходе логическую единицу, все остальные выдают ноль, формируя выходной
вектор слоя Кохонена yК. Фактически для реализации данного алгоритма в слой Кохонена необходимо добавить блок сравнения, на
вход которого подаются уровни возбуждения всех нейронов слоя
Кохонена, а с выхода снимается сформированный блоком вектор yK.
Выход нейрона слоя Гроссберга является взвешенной суммой
выходов нейронов слоя Кохонена, т. е. для i-го нейрона слоя Гросберга si = viyКT. Учитывая режим работы слоя Кохонена, каждый
нейрон слоя Гроссберга выдает вес связи между этим нейроном и
единственным ненулевым нейроном слоя Кохонена.
В процессе обучения входные векторы ассоциируются с соответствующими выходными векторами. Эти векторы могут быть
двоичными, т. е. состоящими из нулей и единиц, целочисленными
или непрерывными. Если сеть обучена, то поступление на ее вход
входного вектора приводит к появлению на выходе требуемого выходного вектора. Обобщающая способность сети позволяет получать правильный выходной вектор даже для искаженного входного
вектора, что дает возможность использовать данную сеть не только
для распознавания образов, но и для восстановления информации
и усиления сигналов.
В результате обучения слой Кохонена выполняет кластеризацию входных векторов. Это достигается с помощью такой под133
стройки весовых коэффициентов слоя Кохонена, что близкие в пространстве признаков входные векторы активизируют один и тот же
нейрон данного слоя. Задачей слоя Гроссберга является получение
требуемого выходного вектора.
Обучение сети, состоящей только из слоя Кохонена, является
самообучением, протекающим без учителя. Поэтому трудно, да и
не нужно предсказывать, какой именно нейрон Кохонена будет активизироваться для заданного входного вектора. Необходимо лишь
гарантировать, чтобы в результате обучения непохожие входные
векторы активизировали разные нейроны.
Вектор весовых коэффициентов j-го нейрона слоя Кохонена wj
можно интерпретировать как точку в пространстве признаков с координатами wij. Известно, что максимизация функции s = wxT равнозначна минимизации функции d = (w–x)(w–x)T, где d – Евклидово
расстояние в пространстве признаков между точками, соответствующими векторам w и x. Тогда изменение весовых коэффициентов
каждого нейрона слоя Кохонена можно представить как перемещение соответствующей ему точки в пространстве признаков в положение, наиболее близкое к центру соответствующего кластера.
Весьма желательно, хотя и не обязательно, нормализовать входные векторы перед тем, как предъявлять их сети. Эта операция выполняется с помощью деления каждой компоненты входного вектора
на его длину, которая находится извлечением квадратного корня из
суммы квадратов компонент вектора. В результате входной вектор
превращается в единичный вектор с тем же самым направлением,
т. е. в вектор единичной длины в n-мерном пространстве признаков,
который графически можно представить стрелкой, оканчивающейся
на поверхности единичной гиперсферы в пространстве признаков.
На шаге k+1 обучения слоя Кохонена выполняется следующая
последовательность действий. Для каждого j-го нейрона слоя вычисляется расстояние между точками в пространстве признаков,
соответствующими вектору x и вектору весов j-го нейрона wj:
n
dj = å (wij - xi )2 . (6.8)
i=1
Находится нейрон с минимальным расстоянием dj и для всех
нейронов, находящимся от него на расстоянии не более радиуса активации r, выполняется коррекция весов
wij(k+1) = wij(k) + h(xi – wij(k)),
где h – скорость обучения (h = 0,7…0,1).
134
(6.9)
Радиус активации r и скорость обучения h в процессе обучения
постепенно уменьшаются, что позволяет делать большие начальные шаги для быстрого грубого обучения и уменьшать шаги при
подходе к окончательной величине. Возможно использование и
других метрик при определении расстояния d.
Согласно (6.9) вес каждой связи нейронов слоя Кохонена в радиусе активации от победителя изменяется пропорционально разности между его величиной и величиной входа, с которым соединен
данный нейрон. Направление изменения минимизирует разность
между весом связи и уровнем входа. На рис. 6.9 этот процесс показан геометрически для случая двумерного входного вектора. Сначала находится вектор x–w, для чего проводится отрезок из конца
вектора w в конец вектора x. Затем этот вектор укорачивается умножением его на скалярную величину h, меньшую единицы, в результате чего получается вектор изменения Δ. Новый вектор весов
w’ представляет собой отрезок, направленный из начала координат
в конец вектора Δ. На рис. 6.9 видно, что обучение состоит во вращении вектора весовых коэффициентов в направлении входного
вектора без существенного изменения его длины.
Если бы с каждым нейроном Кохонена ассоциировался один
входной вектор, то слой Кохонена мог бы быть обучен с помощью
одного вычисления весовых коэффициентов, так как компоненты
вектора весов нейрона-победителя просто приравнивались бы к соответствующим компонентам обучающего вектора (h = 1).
Как правило, обучающее множество включает достаточно много
сходных между собой входных векторов, и сеть должна быть обучеη(x–w) = ∆
w
x–w
w′
x–входной вектор
Рис. 6.9. Вращение весового вектора w в процессе обучения
135
на активировать один и тот же нейрон слоя Кохонена для каждого
из них. В таком случае веса связей каждого нейрона должны получаться усреднением тех входных векторов, которые должны его активировать. Постепенное уменьшение величины h уменьшает воздействие каждого шага обучения на изменение весовых коэффициентов. В результате веса связей каждого нейрона примут значение
вблизи от «центра» входных векторов, для которых данный нейрон
является «победителем».
В качестве примера рассмотрим несколько шагов обучения слоя
Кохонена, состоящего из двух нейронов, кластеризации в трехмерном пространстве признаков множества M: = (0.8, 0.7, 0.4); (0.6,
0.9, 0.9); (0.3, 0.4, 0.1); (0.1, 0.1, 0.3).
Пусть на k-м шаге обучения векторы весовых коэффициентов
имеют следующие значения: w1(k) = (0.5, 0.6, 0.8); w2(k) = (0.4, 0.2,
0.5). Радиус активации r = 0, скорость обучения h = 0.5.
После подачи на вход сети первого элемента из множества M расстояния d1 и d2 согласно (6.8):
d1 = (0.5 – 0.8)2 + (0.6 – 0.7)2 +(0.8 – 0.4)2 = 0.26;
d2 = (0.4 – 0.8)2 + (0.2 – 0.7)2 +(0.5 – 0.4)2 = 0.42.
d1 < d2, следовательно, по формуле (6.9) корректируется вектор
w1: w1(k+1) = (0.65, 0.65, 0.60). Вектор весовых коэффициентов
второго нейрона не изменяется, т. е. w2(k+1) = w2(k).
После подачи на вход сети второго элемента множества M:
d1 = (0.65 – 0.6)2 + (0.65 – 0.9)2 +(0.60 – 0.9)2 = 0.155;
d2 = (0.4 – 0.6)2 + (0.2 – 0.9)2 +(0.5 – 0.9)2 = 0.69.
d1 < d2, следовательно, корректируется вектор w1: w1(k+1) =
(0.625, 0.775, 0.750). Вектор весовых коэффициентов второго нейрона не изменяется.
После подачи на вход сети третьего элемента множества M:
d1 = (0.625 – 0.3)2 + (0.775 – 0.4)2 +(0.75 – 0.1)2 = 0.67;
d2 = (0.4 – 0.3)2 + (0.2 – 0.4)2 +(0.5 – 0.1)2 = 0.21.
d2 < d1, следовательно, корректируется вектор w2: w2(k+1) =
(0.35, 0.3, 0.3). Вектор весовых коэффициентов первого нейрона не
изменяется.
После подачи на вход сети четвертого элемента множества M:
d1 = (0.625 – 0.1)2 + (0.775 – 0.1)2 +(0.75 – 0.3)2 = 0.93;
d2 = (0.35 – 0.1)2 + (0.3 – 0.1)2 +(0.3 – 0.3)2 = 0.
136
d2 < d1, следовательно, корректируется вектор w2: w2(k+1) =
(0.225, 0.2, 0.3). Вектор весовых коэффициентов первого нейрона
не изменяется.
Обучающее множество M явно разделяется на два кластера
I: = (0.8, 0.7, 0.4); (0.6, 0.9, 0.9) и II: = (0.3, 0.4, 0.1); (0.1, 0.1, 0.3).
Средние значения признаков в кластере I = (0.7, 0.8, 0.65), в кластере II = (0.2, 0.25, 0.2). После четырех шагов обучения веса нейронов w1 = (0.625, 0.775, 0.750) и w2 = (0.225, 0.2, 0.3) стали ближе
к средним значениям признаков кластеров I и II соответственно.
Всем весам связей нейронов слоя Кохонена перед обучением следует придать начальные значения. Обычно каждому весовому коэффициенту задается небольшое случайное значение (процесс рандомизации весов). При обучении слоя Кохонена случайно выбранные векторы весовых коэффициентов следует нормализовать. Дело
в том, что окончательные значения весовых векторов после обучения близки к усредненным значениям нормализованных входных
векторов. Следовательно, нормализация перед началом обучения
приближает векторы весовых коэффициентов к их окончательным
значениям, таким образом, сокращая процесс обучения.
Рандомизация весов слоя Кохонена может породить серьезные
проблемы при обучении, так как в результате ее векторы весовых
коэффициентов распределяются равномерно по поверхности гиперсферы в пространстве признаков. Из-за того, что входные векторы, соответствующие множеству разделяемых сетью образов,
распределены неравномерно и имеют тенденцию группироваться
на относительно малой части поверхности гиперсферы, большинство векторов весовых коэффициентов будут так удалены от любого
входного вектора, что соответствующие им нейроны никогда не будут давать наилучшего соответствия. Такие нейроны будут всегда
иметь нулевой выход и окажутся бесполезными при кластеризации. Более того, оставшихся нейронов, дающих лучшие соответствия, может оказаться слишком мало, чтобы разделить входные
векторы на кластеры, расположенные на поверхности гиперсферы
близко друг от друга.
Если на гиперсфере пространства признаков начальная плотность векторов весовых коэффициентов в окрестности входных
векторов слишком мала, то может оказаться невозможным разделить близкие множества образов. Причина в том, что не будет достаточного количества векторов весовых коэффициентов в окрестности разделяемых множеств, чтобы приписать по одному вектору
каждому множеству.
137
Наоборот, если несколько входных векторов получены незначительными изменениями из одного и того же образца и должны быть
объединены в один кластер, то они должны активизировать один и
тот же нейрон Кохонена. Если же плотность векторов весовых коэффициентов очень высока вблизи группы слегка различных входных векторов, то в результате обучения каждый входной вектор
будет активировать отдельный нейрон Кохонена. Такой эффект называется переобучением.
Одно из решений данной проблемы, называемое методом выпуклой комбинации, состоит в том, что веса связей всех нейронов
слоя Кохонена при инициализации приравниваются одной и той
1
же величине wij =
, где п – число входов и, следовательно, чисn
ло компонент каждого вектора. Благодаря этому все векторы весовых коэффициентов перед обучением совпадают и имеют единичную длину.
Каждой компоненте входного вектора x из разделяемого множества придается значение xi¢ = αxi +
1– α
n
. В начале обучения a очень
мало, вследствие чего все входные векторы имеют длину, близкую
к 1
, и почти совпадают с векторами весовых коэффициентов.
n
В процессе обучения сети a постепенно возрастает, приближаясь к
единице. Это позволяет разделять входные векторы и окончательно приписывает им их истинные значения. В результате векторы
весовых коэффициентов отслеживают один или небольшую группу
входных векторов и в конце обучения дают требуемые выходные
векторы. Метод выпуклой комбинации хорошо работает, но замедляет процесс обучения, так как векторы весовых коэффициентов
подстраиваются к цели, изменяющейся в процессе обучения.
Все сказанное выше относится к обучению сети, состоящей только
из слоя Кохонена, т. е. к процессу кластеризации обучающего множества, элементы которого состоят только из входных векторов x. Для
сети встречного распространения элементы обучающего множества
представляют собой пары, состоящие из входного вектора x и соответствующего ему выходного вектора y. В таком случае число нейронов слоя Кохонена должна быть равно числу классов в обучающем
множестве, причем соответствие между этими нейронами и распознаваемыми классами устанавливается перед обучением. Обучение
каждого нейрона слоя Кохонена сводится к настройке его весовых
138
коэффициентов путем нахождения в пространстве признаков центра
класса, соответствующего данному нейрону, и приравниванию вектора признаков данного центра вектору весовых коэффициентов.
Настройка нейронов слоя Гроссберга очень проста и представляет собой установку значений весов тех связей, который связывают
нейроны слоя с единственным ненулевым в данный момент нейроном слоя Кохонена, соответствующим входному вектору x, так чтобы на выходе сети получить требуемый вектор y.
Рассмотрим простой пример обучения сети встречного распространения для хранения и восстановления частично искаженной
информации. Пусть нам необходимо сохранять два 6-элементных
вектора с бинарными значениями элементов следующего вида:
x1 = (1,1,1,0,0,0) и x2 = (0,0,0,1,1,1). Число нейронов нулевого
слоя равно числу элементов входного вектора (n = 6), число нейронов слоя Кохонена равно числу различаемых входных векторов
(m = 2), число нейронов слоя Гроссберга в данном случае равно
числу элементов входного вектора (p = 6). Установим первоначальную настройку весовых коэффициентов первого нейрона слоя
Кохонена: w11 = 0.1, w21 = 0.2, w31 = 0.3, w41 = 0.4, w51 = 0.5,
w61 = 0.6, а второго нейрона – w12 = 0.6, w22 = 0.5, w32 = 0.4, w42 = 0.3,
w52 = 0.2, w62 = 0.1. Входных векторов всего два, следовательно,
скорость обучения можно приравнять к единице. Подадим на вход
вектор x1 и получим значения s1 = 0.6, s2 = 1.5, т. е. «победитель» –
второй нейрон. Изменим вектор весовых коэффициентов этого нейрона: w2′ = w2 + 1.0(x1 – w2). Получим новые весовые коэффициенты: w12 = 1.0, w22 = 1.0, w32 = 1.0, w42 = 0.0, w52 = 0.0, w62 = 0.0.
Подадим на вход вектор x2 и получим значения s1 = 1.5, s2 = 0.0,
т. е. «победитель» – первый нейрон. Изменим вектор весовых коэффициентов этого нейрона w1′ = w1 + 1.0(x2 – w1). Получим новые
весовые коэффициенты: w11 = 0.0, w21 = 0.0, w31 = 0.0, w41 = 1.0,
w51 = 1.0, w61 = 1.0. На этом настройка слоя Кохонена закончена.
Настройка слоя Гроссберга в данном случае заключается в установлении таких весовых коэффициентов, чтобы выходной вектор
совпадал с соответствующим ему входным вектором, т. е. v21 = 0.0,
v21 = 0.0, v31 = 0.0, v41 = 1.0, v51 = 1.0, v61 = 1.0, v12 = 1.0, v22 = 1.0,
v32 = 1.0, v42 = 0.0, v52 = 0.0, v62 = 0.0. Настроенная таким образом
сеть выдает на выходе правильный вектор, даже при незначительных ошибках во входном векторе. Например, если во входном векторе одна единица ошибочно заменена на нуль или наоборот, то на выходе будет получен исправленный вектор, в чем можно убедиться,
подставив соответствующие входные векторы в настроенную сеть.
139
6.5. Практическая реализация нейронных сетей
Нейронные сети могут быть реализованы двумя путями: первый – программная, второй – аппаратная. На современном рынке
изделия, использующие нейронные сети, первоначально появились в виде нейроплат. Типичный пример – плата МВ 86232 японской фирмы Fujitsu. На плате размещены – процессор цифровой
обработки сигналов и оперативная память емкостью 4 Мбайт, что
позволяет использовать такую плату для реализации сети, содержащей до тысячи нейронов.
В настоящее время основные коммерческие изделия на базе нейросетей – нейро-БИС, (выпускаются более 20 типов), параметры
которых существенно различаются. Например, модель ETANN
фирмы Intel, выполненная по микронной технологии, является
реализацией сети с 64000 нейронами и 10240 синапсами. Ее цена
2000$. К более дешевым нейро-БИС (400$) относится модель MD
1220 фирмы Micro Devices (8 нейронов и 120 синапсов).
Большинство сегодняшних нейрокомпьютеров представляют
собой персо-нальный компьютер или рабочую станцию, в состав которых входит допол-нительная нейроплата. К их числу относятся,
например, компьютеры серии FMR фирмы Fujitsu. Такие системы
имеют бесспорное право на существование, поскольку их возможностей вполне достаточно для разработки новых алгоритмов и решения большого числа прикладных задач на основе технологии
нейросетей.
Однако наибольший интерес представляют специализированные
нейро-компьютеры, реализующие принципы нейронных сетей на
аппаратном уровне. Типичными представителями таких систем являются компьютеры семейства Mark фирмы TRW. Модель Mark III
представляет собой рабочую станцию, содержащую до 15 процессоров семейства Motorola 68000 с математическими сопроцессорами.
Все процессоры объединены шиной VME. Архитектура системы,
поддерживающая до 65000 виртуальных нейронов с более чем 1 млн
настраиваемых соединений, позволяет обрабатывать до 450 тыс.
соединений/с. Mark IV – это однопроцессорный суперкомпьютер с
конвейерной архитектурой. Он поддерживает до 236 тыс. виртуальных процессорных нейронов, что позволяет обрабатывать до 5 млн
соединений/с. Компьютеры семейства Mark имеют общую программную оболочку ANSE (Artificial Neural System Environment),
обеспечивающую программную совместимость моделей. Фирма
предлагает и пакет Mark II – эмулятор нейронной сети.
140
Другой интересной моделью является нейрокомпьютер NETSIM,
созданный фирмой Texas Instruments на базе разработок Кембриджского университета. Его топология представляет собой трехмерную
решетку стандартных вычислительных узлов на базе процессоров
80188, а производительность достигает 450 млн соединений/с. Компьютер NETSIM используется для моделирования сети Хопфилда –
Кохонена и алгоритма обратного распространения.
Фирма Computer Recognitiion Systems (CRS) продает серию нейрокомпьютеров WIZARD/CRS 1000, предназначенных для обработки видеоизображений. Размер входного изображения 512 × 512
пикселей. Модель CRS 1000 уже нашла применение в промышленных системах автоматического контроля.
Чтобы применение нейронной сети было оправдано, и она могла
бы решить поставленную задачу, последняя должна обладать следующими признаками:
− отсутствует алгоритм или не известны принципы решения задачи, но накоплено достаточное число примеров;
− проблема характеризуется большими объемами входной информации;
− данные неполны или избыточны, зашумлены, частично противоречивы.
Таким образом, нейронные сети хорошо подходят для распознавания образов и решения задач классификации, оптимизации и
прогнозирования. Ниже приведены некоторые области применения нейронных сетей, на базе которых либо уже созданы коммерческие продукты, либо реализованы демонстрационные прототипы:
− банки и страховые компании: автоматическое считывание чеков и финансовых документов, проверка достоверности подписей,
оценка риска для займов, прогнозирование изменений экономических показателей;
− административное обслуживание: автоматическое считывание документов, автоматическое распознавание штриховых кодов;
− нефтяная и химическая промышленность: анализ геологической информации, идентификация неисправностей оборудования,
разведка залежей минералов по данным аэрофотосъемок, анализ
составов примесей, управление процессами;
− военное дело и аэронавтика: разделение, идентификация, локализация, устранение шума, интерпретация звуковых сигналов, обработка звуковых сигналов, распознавание целей, идентификация и локализация источников радарных сигналов, обобщение информации и
прогнозирование развития ситуации, автоматическое пилотирование;
141
− промышленность: управление манипуляторами, адаптивная
робототехника, обнаружение неисправностей, управление качеством, управление процессами;
− биомедицина: анализ рентгенограмм, обнаружение отклонений в ЭКГ;
− телевидение и связь: адаптивное управление сетью связи, сжатие и восстановление изображения.
служба безопасности: распознавание лиц, голосов, отпечатков
пальцев.
Представленный перечень далеко не полон. Ежемесячно средства массовой информации сообщают о новых коммерческих продуктах на базе нейронных сетей. Так, фирма LIAC выпускает аппаратуру для контроля качества воды. Нейросистемы фирмы SAIC
находят пластиковые бомбы в багаже авиапассажиров. Специалисты инвестиционного банка Citicomp (Лондон) с помощью программного нейропакета делают краткосрочные прогнозы колебаний курсов валют.
142
7. ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ
7.1. Методологическая основа генетических алгоритмов
Подобно нейронным сетям, генетические или эволюционные
алгоритмы основываются на свойствах биологических систем и их
популяций. В рамках такого подхода поиск решения некоторой интеллектуальной задачи рассматривается как конкуренция внутри
популяции между эволюционирующими кандидатами на роль решения. Каждое возможное решение-кандидат оценивается согласно критерию отбора. По результатам оценки определяется, будет
ли этот экземпляр участвовать в следующем поколении решений.
Затем с помощью операций, аналогичных трансформации генотипа в процессе биологического воспроизводства, создается новое поколение решений-кандидатов.
Методологическая основа генетических алгоритмов базируется на гипотезе селекции, которая в самом общем виде может быть
сформулирована так – чем выше приспособленность особи, тем
выше вероятность того, что в потомстве, полученном с ее участием, признаки, определяющие приспособленность, будут выражены
еще сильнее. Поскольку генетические алгоритмы имеют дело с популяциями постоянной численности, особую актуальность наравне
с критериями отбора родительских особей приобретают критерии
отбора особей на удаление из популяции. Чаще всего особи, обладающие низкой приспособленностью, не только не участвуют в генерации нового поколения, а удаляются из популяции на текущем
дискретном шаге эволюции.
В самом общем виде генетический алгоритм можно представить
следующим образом.
Пусть Р(t) — поколение особей, т. е. решений-кандидатов, хit
в момент времени t Р(t) = (х1t,х1t, ..., хпt). В момент времени t = 0
инициализируется популяция Р(0). Далее циклически на каждом
шаге t вычисляется значение критерия качества для каждого члена популяции P(t), на основе значений критерия качества из P(t)
выбирается нужное число родительских особей и с помощью генетических операций создается следующее поколение, после чего,
с учетом значений критерия качества, особи популяции P(t) заменяются их потомками, и цикл повторяется. Процесс завершается
после получения особи (решения) с требуемыми характеристиками.
Конкретные реализации генетических алгоритмов могут отличаться в зависимости от задачи. Какое процентное соотношение
143
особей выживает в следующем поколении? Сколько особей участвует в скрещивании? Как часто и к кому применяются генетические операторы?
Процедуру замены особей популяции P(t) можно реализовать
простейшим образом, заменив фиксированное процентное соотношение слабейших кандидатов сильнейшими из полученных на данном шаге потомков. Более сложный подход состоит в упорядочении
популяции согласно критерию качества и удалении особей с учетом
вероятности, обратно пропорциональной значению критерия качества. Такой алгоритм замены известен под многими именами, в
том числе как метод Монте-Карло (Monte-Carlo), правило рулетки
(roulette wheel) или алгоритм отбора пропорционально критерию
качества (fitness proportionate selection). В этих алгоритмах существует шанс удаления самых «сильных» особей популяции, хотя вероятность их исключения очень низка. Преимущество применения
данного подхода в генетических алгоритмах состоит в возможности
сохранения некоторых «слабых» особей, которые в дальнейшем могут внести свой вклад в получение более «сильных» потомков.
Кандидатов на решение задачи, т. е. особей популяции, можно
описывать с помощью обычных битовых строк, хотя в генетических алгоритмах существуют и более сложные принципы представления особей. Предположим, что необходимо с помощью генетического алгоритма научиться классифицировать строки, состоящие из единиц и нулей. В такой задаче популяцию битовых строк
можно описывать с помощью шаблона, состоящего из символов: 1,
0 и #, последний из которых может соответствовать как 1, так и 0.
Следовательно, шаблон 1##00##1 представляет все восьмибитовые строки, начинающиеся, заканчивающиеся 1 и содержащие в
середине строки два нуля подряд.
При работе генетического алгоритма популяция кандидатов
Р(0) некоторым образом инициализируется. Обычно инициализация выполняется с помощью датчика случайных чисел. Для оценки решений-кандидатов вводится критерий качества f(хit), определяющий меру соответствия каждого кандидата в момент времени t.
Так при классификации мерой соответствия кандидатов является
процентное соотношение правильных ответов на множестве обучающих примеров. При таком критерии качества каждому решениюt
кандидату соответствует значение: f (xi , где т(Р,t) – среднее знаm(P,t)
чение критерия качества для всех членов популяции. Обычно мера
144
соответствия изменяется во времени, поэтому критерий качества
может быть функцией от стадии решения всей проблемы или f(хit).
После анализа каждого кандидата выбираются пары для рекомбинации. При этом используются генетические операторы, в результате выполнения которых новые решения получаются путем
комбинации свойств родителей. Как и в естественном процессе эволюции, степень участия в репродуктивном процессе для каждого
кандидата определяется значением критерия качества: кандидаты
с более высоким значением критерия качества участвуют в процессе воспроизводства с более высокой вероятностью. Как уже отмечалось, выбор осуществляется на основе вероятностных законов,
когда слабые члены популяции имеют меньшую вероятность воспроизводства, однако такая возможность не исключается. Выживание некоторых слабейших особей имеет большое значение для
развития популяции, поскольку они могут содержать некоторые
важные компоненты решения, например фрагмент битовой строки, которые могут извлекаться при воспроизводстве.
Существуют различные операторы получения потомства, обладающего свойствами своих родителей. Наиболее типичный из
них называется скрещиванием (crossover). При скрещивании два
решения-кандидата делятся на несколько частей и обмениваются этими частями, результатом становятся два новых кандидата.
Например, пусть входными данными для операции скрещивания
являются шаблонов битовых строк длины 8 следующего вида: 11#
0101# и #110#0#1. Эти строки делятся на две равные части, после
чего формируются два потомка, содержащих по одному сегменту
каждого из родителей, причем правая половина одного родителя
соединяется с левой половиной другого родителя. В рассматриваемом примере родители делятся на такие части: 11#0 | 101# и #110
| #0#1, а потомки имеют вид: 11#0#0#1 и #110101#. Заметим,
что родители могут разбиваться в любой точке, которую можно выбирать и изменять случайным образом в ходе решения задачи.
Если целевой класс – набор всех восьмибитных строк, которые
начинаются и заканчиваются единицей, а искомое решение – шаблон, позволяющий выявлять такие строки, то обе родительские
строки подходят достаточно хорошо. Однако первый их потомок
гораздо точнее соответствует критерию качества, чем любой из родителей, так как с помощью этого шаблона не будет пропущена ни
одна из нужных строк. Заметим также, что его «собрат» гораздо
хуже, чем любой из родителей, поэтому эта особь, скорее всего, будет исключена из популяции.
145
Мутация (mutation) — это еще один важный генетический оператор. Она состоит в случайном выборе кандидата и случайном изменении некоторых его свойств. Например, мутация может состоять в случайном выборе бита в шаблоне и изменении его значения
на 1, 0 или #. Значение мутации состоит в возможном восполнении
важных компонентов решения, отсутствующих в исходной популяции. Если в рассмотренном выше примере ни один из членов исходной популяции не содержит 1 в первой позиции, то в процессе
скрещивания нельзя получить потомка, обладающего этим свойством. Значение первого бита может измениться лишь вследствие
мутации. Этой цели можно также достичь с помощью другого генетического оператора — инверсии (inversion).
Работа генетического алгоритма продолжается до тех пор, пока
не будет достигнуто условие его завершения, например для одного
или нескольких кандидатов значение критерия качества не превысит некоторого порога.
7.2. Представление задачи
в конъюнктивной нормальной форме
Основными проблемами при разработке генетического алгоритма для решения интеллектуальной задачи являются вопросы представления пространства состояний задачи в терминах кодирования
особей и выбор критериев качества особей. Во-первых, не все задачи естественно и легко описать на уровне битового представления.
Во-вторых, генетические операторы должны предотвращать появление нежелательных взаимоотношений внутри популяции, например обязаны обеспечивать присутствие и уникальность всех городов в маршруте коммивояжера. Кроме этого, следует учитывать
взаимосвязи между значением критерия качества для различных
состояний и методом кодирования, выбранным для данной задачи.
Одним из способов описания задачи является конъюнктивная
нормальная форма представления. Описание в конъюнктивной
нормальной форме (КНФ) – это представление выражения в виде
последовательности операторов, связанных отношением И (&).
Каждый из этих операторов должен представлять собой дизъюнктивное выражение, определяемое отношением ИЛИ (v), или литерал. Например, для литералов а, b, с, d, е и f выражение (avc) &
(avcve) & (bvcvdve) & (avbvc) & (evf) (“а» это инверсия а) является конъюнктивной нормальной формой. Это выражение пред146
ставляет собой конъюнкцию пяти операторов, каждый из которых
является дизъюнкцией двух или нескольких литералов.
Представимость в конъюнктивной нормальной форме означает существование таких логических значений (1 или 0 либо true
и false) для каждого из шести литералов, при которых КНФвыражение принимает значение true. Несложно проверить, что для
доказательства представимости рассмотренного выше выражения
в конъюнктивной нормальной форме достаточно присвоить значение false литералам a, b и е. Еще одно решение – присвоение литералу е значения false, а с – true.
Естественным представлением особи в задаче с КНФ-описанием
является последовательность из шести битов, каждый из которых представляет значение одного из шести литералов а, b, с, d, е
и f. Например, выражение 101010 означает, что литералы а, с и е
принимают значение true, a b, d и f – false. Для такой комбинации
значений литералов приведенное выше выражение принимает значение false. В процессе выполнения генетических операторов над
особями популяции требуется получить потомка, для которого
КНФ-выражение является истинным, т. е. в результате выполнения каждого генетического оператора должна получаться битовая
строка, которая может рассматриваться как кандидат на решение
задачи. Таким свойством обладают все рассмотренные до сих пор
генетические операторы. Например, в результате скрещивания и
мутации получаются битовые строки, которые могут стать решением задачи. Обмен (exchange), т. е. перемена мест двух произвольных битов, тоже обеспечивает получение возможного решения.
Как видно, данное представление особей в задаче с КНФ-описанием
является очень полезным.
Однако выбор критерия качества для популяции битовых строк
как потенциальных решений достаточно сложен. Задача считается решенной, если найдена комбинация битов, при которой КНФвыражение принимает значение true, причем КНФ-выражение
представляет собой конъюнкцию пяти операторов, т. е. для получения искомого решения все пять операторов должны иметь значение
true. Тогда можно определить рейтинг решения по шкале от 0 до 5
в зависимости от количества операторов, принимающих значение
true. Например, следующие особи будут иметь рейтинг: 110010 – рейтинг 1, 010010 – рейтинг 1, 010011 – рейтинг 3, 001011 – рейтинг 5.
Последняя особь и является решением. Такой генетический алгоритм обеспечивает разумный подход к решению КНФ-проблемы,
причем одним из важнейших свойств этого подхода является неяв147
ный параллелизм, обеспечиваемый за счет одновременной обработки целой популяции решений. Этому представлению естественным
образом соответствуют генетические операторы.
Более сложным является представление в виде генетического
алгоритма «задачи коммивояжера» – классической тестовой задачи для систем искусственного интеллекта, описанной в разделе 1.
Одним из способов поиска минимального пути является генерирование и оценка всех возможных перестановок из N элементов в списке городов. Поэтому представление особи и генетические операторы должны обеспечить возможность получения этих перестановок.
Основная сложность состоит в выборе представления для маршрута посещения городов и подборе подходящих генетических операторов. В то же время выбор критерия качества особи в данном случае достаточно прост – это длина пути, т. е. чем короче маршрут, тем лучше.
Возможно несколько представлений маршрута как отдельной
особи. Пусть необходимо посетить девять городов 1, 1,..., 9, тогда
путь можно представить упорядоченным списком из девяти целых
чисел. Если представить порядковый номер каждого города четырехбитной строкой: 0001,0010,..., 1001, то выражение 0001 0010 0011
0100 0101 0110 0111 1000 1001 представляет последовательность посещения городов по возрастанию их порядковых номеров (пробелы в
этом выражении поставлены только для простоты восприятия).
Далеко не все генетические операторы можно использовать при
данном описании особи. При скрещивании некоторые города могут
выпасть из последовательности, другие встретятся в ней дважды
или будут получены номера несуществующих городов, т. е. скрещивание использовать нельзя. Тоже можно сказать и про мутацию. Предположим, что крайний слева бит в обозначении шестого
города изменится на 1. Тогда полученное число 1110 будет соответствовать порядковому номеру 14, который не входит в допустимый
перечень городов. Обмен городов является допустимой операцией,
только когда он производится четырехбитными блоками, иначе полученная особь может не являться маршрутом.
Если проигнорировать битовое представление и присвоить городам обычные порядковые номера 1, 1,..., 9, то путь между этими
городами будет представлять собой некоторую последовательность
девяти цифр. В этом случае мутация как случайный обмен двух
городов в маршруте будет допустимой операцией, но скрещивание
по-прежнему окажется бесполезным. Обмен фрагментов маршрута
на другие фрагменты того же пути или любой оператор, меняющий
местами номера городов маршрута без удаления, добавления или
148
дублирования городов, окажется достаточно эффективным. Однако при таких подходах невозможно обеспечить сочетание лучших
родительских свойств в потомке, так как его требуется формировать на основе двух родителей.
Некоторые исследователи разработали операторы скрещивания, устраняющие эти проблемы и позволяющие работать с упорядоченным списком посещаемых городов, например оператор упорядоченного скрещивания (order crossover). В нем потомок строится путем выбора подпоследовательности городов в пути одного из
родителей, причем сохраняется относительный порядок городов
другого родителя.
Сначала выбираются две точки сечения, обозначенные символом |, которые случайным образом устанавливаются в одних и тех
же позициях каждого из родителей. Например, если для двух родителей p1 и р1 точки сечения располагаются после 3-го и 7-го городов
р1 = (191|4657|83), р1 = (459| 1876|13), то два потомка с1 и с1 получаются следующим образом. Сначала для каждого из потомков копируются фрагменты строк родителей, расположенные между точками сечения: с1 = (ххх|4657|хх), с1 = (ХХХ| 1876| хх). Затем после
второй точки сечения одного из родителей помещаются города, соответствующие другому родителю, с сохранением порядка их следования, при этом уже имеющиеся города пропускаются. При достижении конца строки операция продолжается сначала. Так, последовательность подстановки городов из р1 имеет вид 134591876.
Поскольку города 4, 6, 5 и 7 не учитываются, так как они уже входят в состав первого потомка, получается укороченный ряд 13918,
который и подставляется в cl с сохранением порядка следования
этих городов в р1: с1 = (139|4657|18). Аналогично получается второй потомок с1 = (391|1876|45).
Алгоритм упорядоченного скрещивания гарантирует однократное посещение всех городов, так как фрагменты пути передаются
от одного родителя р1 потомку cl, при этом порядок посещения городов наследуется и от другого родителя р1. Такой подход основан
на интуитивном предположении о том, что порядок обхода городов
играет важную роль в поиске кратчайшего пути, поэтому информация о порядке следования сохраняется для потомков.
Операция мутации в данном случае сводится к перемене мест
двух городов в рамках одного маршрута, что вполне допустимо. Такой оператор мутации можно применять и для фрагмента пути, например, выбрав фрагмент трех городов и поместив его в новое случайно выбранное положение.
149
Инвертирование фрагмента маршрута тоже может дать хороший результат. Например, путь с1 = (139|4657|18) после инвертирования его средней части примет вид с1 = (139|7564|18).
7.3. Проблемы реализации генетических алгоритмов
Приведенные примеры демонстрируют характерные для генетических алгоритмов проблемы, связанные с представлением
данных, определением операторов и выбором критерия качества.
Представление данных должно соответствовать используемым генетическим операторам. Если, как в КНФ-задаче, используется
битовое представление, то для получения новых особей популяции
наиболее эффективны такие традиционные генетические операторы, как скрещивание и мутация. В задаче коммивояжера битовое
представление данных не подходит, а при определении операторов
мутации и скрещивания для каждого потомка необходимо отслеживать присутствие в маршруте всех городов при однократном посещении каждого из них.
Еще одна проблема реализации генетических операторов состоит в том, что существенная информация должна передаваться
следующему поколению особей. Если эта информация, как в КНФзадаче, связана со значением истинности, то в результате выполнения генетических операторов это свойство должно сохраняться
в следующем поколении. В задаче коммивояжера критичной является последовательность городов в маршруте, поэтому потомкам
должны передаваться фрагменты этой информации. Для обеспечения такого наследования свойств необходимо соответствующим образом выбрать способ представления данных и генетические операторы в каждой конкретной задаче.
«Хороший» способ представления данных во многом определяет эффективность генетического алгоритма. Пусть необходимо из
множества цифр выделять цифры 6, 7, 8 и 9. Естественным представлением, обеспечивающим сортировку данных, является обычное целочисленное описание, поскольку среди десяти цифр каждая
следующая на 1 больше предыдущей, но при переходе к двоичному
описанию эта естественность исчезает. Из битового представления
цифр 6, 7, 8 и 9 (01100111 1000 1001) видно, что 6 и 7, а также 8 и
9 отличаются друг от друга на один бит, но 7 и 8 не имеют между
собой ничего общего. Такое представление данных может вызвать
большие проблемы при решении задач, требующих систематиза150
ции образов. Использование кодов Грея, в которых каждое число
отличается от своих соседей ровно на один бит, позволяет сделать
переходы между состояниями при реализации генетических операторов более естественными и гладкими.
Важным источником эффективности генетических алгоритмов
является неявный параллелизм эволюционных операторов. В отличие от поиска в пространстве состояний, в данном случае операции на каждом шаге развития популяции выполняются параллельно для всех особей. Ограничивая репродуктивные свойства слабых
особей, генетические алгоритмы приводят к исключению не только данной особи, но и всех ее потомков. Например, если строка
101#0##1 отброшена в процессе работы алгоритма, то она уже не
сможет породить строки вида 101#. Вероятностный характер процесса исключения особей из популяции оставляет даже плохим
особям шанс оставаться в популяции и вносить свой вклад в формирование последующих поколений.
Работу генетического алгоритма можно представить как процесс поиск решения, при котором множество особей (решенийкандидатов) сходится к точкам экстремума в пространстве поиска.
На рис. 7.1 горизонтальная ось представляет возможные точки в
пространстве решений, а по вертикали показано качество этих решений. Точки на кривой — это члены текущей популяции решений-кандидатов, полученные при работе генетического алгоритма.
Изначально решения равномерно распределялись в пространстве
поиска. После нескольких итераций они группируются в областях,
соответствующих наиболее высокому качеству решения.
Качество решения
Качество решения
Пространство поиска
Пространство поиска
Исходное пространство поиска
Пространство поиска
после n поколений
Рис. 7.1. Генетический алгоритм как параллельный поиск экстремума
151
Представление генетического алгоритма как алгоритма поиска экстремума неявно предполагает перемещение по поверхности,
определяемой критерием качества, на которой существуют локальные максимумы и минимумы. Неэффективный выбор представления и генетических операторов для конкретной задачи приводит к
нарушению непрерывности этой поверхности, что существенно усложнит работу алгоритма.
В работе Холланда, опубликованной в 1975 году, вводится понятие схемы как общего шаблона и строительного блока особи. Схема – это шаблон битовых строк, описываемый символами 1, 0 и #.
Например, схема 10##01 представляет семейство шестибитовых
строк, начинающихся с фрагмента 10 и завершающихся символами 01. Поскольку центральный фрагмент ## описывает четыре возможные комбинации битов, 00, 01, 10, 11, то вся схема представляет
четыре битовые строки, состоящие из 1 и 0. Традиционно считается, что каждая схема описывает гиперплоскость. В этом примере
данная гиперплоскость пересекает множество всех возможных шестибитовых представлений. Центральным моментом традиционной
теории генетических алгоритмов является утверждение, что подобные схемы являются строительными блоками семейств особей. Генетические операторы скрещивания и мутации оперируют такими
схемами в процессе создания новых особей. По Холланду, для повышения производительности в некоторой среде адаптивная система должна идентифицировать, проверить и реализовать некоторые
структурные свойства, формализуемые с помощью схем.
Анализ схем Холланда предполагает, что алгоритм выбора по
критерию качества сводится к поиску подмножеств в пространстве
поиска, наилучшим образом удовлетворяющих данному критерию. Следовательно, эти подмножества описываются схемами, для
которых значение критерия качества выше среднего. При выполнении генетических операторов скрещивания строительные блоки
с высоким показателем качества складываются вместе и формируют «улучшенные» строки. Мутации позволяют гарантировать, что
генетические особенности не будут утеряны в процессе поиска, т. е.
эти операторы обеспечивают переход к новым областям поверхности поиска. Таким образом, генетические алгоритмы можно рассматривать как некое обобщение процесса поиска с сохранением
важных генетических свойств. Холланд изначально анализировал
генетические алгоритмы на битовом уровне. Более современные
работы распространяют результаты этого анализа на другие схемы
представления.
152
Существенным отличием генетических алгоритмов от эвристического поиска в пространстве состояний является отсутствие
необходимости анализа степени соответствия текущего и целевого состояний. Такая информация учитывается в алгоритмах, требующих оценки «усилий» для перехода из текущего состояния в
целевое, а при работе генетических алгоритмов каждое поколение
особей оценивается критерием качества. Не требуется и строгая систематизация последующих состояний, как при поиске в пространстве состояний, так как генетические операторы на каждом шаге
формируют поколение особей, каждая из которых может внести
свой вклад в получение новых возможных решений.
Расширение области применения генетических алгоритмов для
решения прикладных задач и математического моделирования повышает интерес к осмыслению их теоретических основ, требующих
ответа на следующие вопросы:
– Можно ли охарактеризовать типы задач, для которых генетические алгоритмы работают наиболее эффективно?
– Для каких типов задач они работают плохо?
– Что означает высокая и низкая эффективность генетического
алгоритма для решения некоторого типа задач?
– Существуют ли законы, описывающие поведение генетических алгоритмов на макроуровне, например, можно ли спрогнозировать изменения значений критерия качества для элементов популяции?
– Существует ли способ описать результаты таких различных
генетических операторов, как скрещивание, мутация, инвертирование и т. д.?
– При каких условиях (для каких задач и генетических операторов) генетические алгоритмы работают лучше, чем традиционные
методы поиска?
В теоретическом осмыслении генетических алгоритмов пока
еще больше открытых вопросов, чем приемлемых ответов. Тем не
менее с момента появления генетических алгоритмов исследователи пытаются сформулировать общие принципы их работы и найти
задачи, для решения которых применение генетических алгоритмов было бы более эффективно, чем другие подходы.
153
КОНТРОЛЬНЫЕ ВОПРОСЫ
Введение
1. Что представляет собой тест Тьюринга?
2. Сравните различные определения интеллектуальных систем.
3. Какие проблемы необходимо решить при разработке системы
ИИ?
4. Перечислите основные области применения интеллектуальных систем.
Раздел 1
1. В чем значение гипотезы о физической символьной системе?
2. Как производится интерпретация набора высказываний?
3. Дайте определение предиката.
4. В чем преимущества исчисления предикатов перед исчислением высказываний?
5. Приведите примеры оценивания функций.
6. Что показывают кванторы существования и всеобщности?
7. В чем заключается правило отделения?
8. Приведите пример применения правила инстанцирования.
9. Что такое абдуктивное рассуждение?
10. В чем состоят трудности применения высказывания предикатов в интеллектуальных системах?
11. Какой язык программирования основан на исчислении предикатов первого порядка?
12. В каком порядке происходит поиск предикатов в базе данных языка PROLOG?
Раздел 2
1. Какое решение задачи о кенигсбергских мостах предложил
Эйлер?
2. Приведите определения понятий «граф», «ориентированный
граф», «корневой граф», «путь», «дерево».
3. Как пространство состояний представляется в виде графа?
4. Приведите примеры задания цели.
5. В чем заключается алгоритм поиска с возвратами?
6. Получение какого результата гарантируется при поиске в ширину?
7. Приведите пример рекурсивного алгоритма.
154
8. Почему при поиске решения на графе состояний необходимо
применять эвристические методы?
9. Приведите пример работы «жадного» алгоритма.
10. В чем преимущество минимаксного алгоритма по сравнению
с «жадным»?
11. Поясните основную идею алгоритма альфа-бета-усечения.
12. Что является основным синтаксическим элементом языка
LISP?
13. Как в языке LISP задаются новые функции?
14. С помощью какой функции производится управление процессом ветвления?
15. Приведите пример представления дерева состояний в виде
списка.
Раздел 3
1. Какой смысл вкладывается в понятие «распознавание»?
2. На каком разделе математики в основном базируются методы
классификации объектов?
3. Дайте определение понятий «образ» и «вектор признаков».
4. Приведите классификацию признаков.
5. Что означает термин «кластеризация образов»?
6. Какие меры близости используются в пространстве признаков?
7. Когда можно использовать расстояние Махаланобиса?
8. Для чего используется нормирование признаков?
9. Какие метрики используются для бинарных признаков?
10. Какие расстояния между множествами точек вы знаете?
11. Поясните работу алгоритма кластеризации с фиксированным порогом.
12. Какая метрика применяется в методе цепной кластеризации?
13. В чем разница между алгоритмами кластеризации слиянием
и по k средним?
14. Для чего используется критерий Фишера?
15. Как определяется информативность признаков по энтропии?
16. Как производится разбиение пространства признаков на области, соответствующие классам?
17. Опишите метод линеаризации граничной поверхности.
18. Что представляет собой платежная матрица?
19. Какие проблемы возникают при увеличении количества
признаков и классов?
155
Раздел 4
1. В чем основное отличие экспертных систем от других систем
распознавания?
2. Сформулируйте принципы построения дерева решений.
3. Перечислите этапы разработки экспертной системы.
4. Опишите структуру базы данных системы с вероятностными
признаками.
5. Как выбирается текущий признак, информацию о котором запрашивает система?
6. Какие операции выполняются после получения значения текущего признака?
7. В каких случаях экспертная система заканчивает работу?
8. Приведите пример экспертной системы, сочетающей в себе
дерево решений и вероятностные признаки.
Раздел 5
1. Дайте определение понятию «обучение».
2. В чем состоят отличия методов обучения с учителем и без учителя?
3. Поясните принцип работы алгоритма с подкреплением.
4. Приведите пример алгоритма определения ценности состояния.
5. Что представляет собой решающая матрица?
6. Опишите известные вам способы обучения распознаванию.
7. Какая последовательность предъявления образов наиболее
эффективна?
8. Каким условиям должно отвечать обучающее множество, чтобы процесс обучения закончился успешно?
9. Как обучается экспертная система?
Раздел 6
1. Сравните структуры биологического и искусственного нейронов.
2. Какие функции используются для определения уровня возбуждения нейрона?
3. Опишите нейронную сеть МакКаллока–Питтса.
4. Как обучается однослойная нейронная сеть?
5. В чем основные недостатки персептрона?
6. Как устроены многослойные сети, в чем сложность их настройки?
156
7. Опишите алгоритм обратного распространения.
8. Из каких слоев состоит сеть обратного распространения?
9. Как производится настройка нейронов слоя Кохонена?
10. Перечислите методы первоначальной установки весов слоя
Кохонена.
11. Какие нейрокомпьютеры вам известны?
12. В каких областях применение нейронных сетей наиболее
перспективно?
Раздел 7
1. Сформулируйте принцип работы генетического алгоритма.
2. Какая последовательность операций выполняется на каждом
шаге генетического алгоритма?
3. Какие проблемы необходимо решить при создании генетического алгоритма?
4. Опишите способ битового представления данных.
5. Перечислите и опишите принцип действия генетических операторов?
6. Приведите пример КНФ-представления данных.
7. Какие проблемы возникают при решении «задачи коммивояжера» генетическим алгоритмом? Как они решаются?
8. Опишите генетический алгоритм как параллельный поиск
экстремума.
9. В чем состоят преимущества и недостатки генетических алгоритмов?
10. Какие вопросы в теории генетических алгоритмов еще требуют ответа?
157
Список литературы
1. Люгер Д. Ф. Искусственный интеллект: стратегии и методы
решения сложных проблем; пер. с англ. М.: Вильямс, 2003. 864 с.
2. Рассел С. Искусственный интеллект: современный подход;
пер. с англ. М.: Вильямс, 2006. 1408 с.
3. Потапов А. С. Искусственный интеллект и универсальное
мышление. СПб.: Политехника, 2012. 711 с.
4. Тей А. и др. Логический подход к искусственному интеллекту; пер. с франц. М.: Мир, 1990. 432 с.
5. Братко И. Программирование на языке Пролог для искусственного интеллекта; пер. с англ. М.: Мир, 1990. 560 с.
6. Марр Д. Зрение: Информационный подход к изучению представления и обработки зрительных образов; пер. с англ. М.: Радио
и связь, 1987. 400 с.
7. Форсайт Д. Компьютерное зрение: современный подход; пер.
с англ. М.: Вильямс, 2004. 928 с.
8. Левин Р. Практическое введение в технологию искусственного интеллекта и экспертных систем; пер. с англ. М.: Финансы и
статистика, 1990. 239 с.
9. Джексон П. Введение в экспертные системы; пер. с англ. М.:
Вильямс, 2001. 624 с.
10. Нейлор К. Как построить свою экспертную систему; пер. с
англ. М.: Энергоатомиздат, 1991. 286 с.
11. Калан Р. Основные концепции нейронных сетей; пер. с англ.
М.: Вильямс, 2001. 470 с.
12. Хайкин С. Нейронные сети; пер. с англ. М.: Вильямс, 2006.
1104 с.
13. Рутковская Д. и др. Нейронные сети, генетические алгоритмы и нечеткие системы; пер. с польск. М.: Горячая линия-Телеком,
2008. 52 с.
14. Искусственный интеллект: теория и практика. URL: http//
www.iskint.ru (дата обращ. 20.11.2014).
15. Все об экспертных системах. URL: http//www.expertsys.ru
(дата обращ. 20.11.2014).
158
ОГЛАВЛЕНИЕ
Введение.................................................................................. 1. Исчисление высказываний и предикатов.................................. 1.1. Гипотеза о физической символьной системе........................ 1.2. Исчисление высказываний............................................... 1.3. Исчисление предикатов.................................................... 1.4. «Мир блоков»................................................................. 1.5. Язык логического программирования................................ 2. Поиск в пространстве состояний.............................................. 2.1. Граф пространства состояний............................................ 2.2. Алгоритмы поиска с последовательным перебором............... 2.3. Эвристические алгоритмы поиска...................................... 2.4. Язык обработки списков................................................... 3. Распознавание образов........................................................... 3.1. Описание объектов набором признаков............................... 3.2. Метрики в пространстве признаков.................................... 3.3. Методы кластеризации.................................................... 3.4. Информативность признаков............................................ 3.5. Построение классификаторов............................................ 4. Экспертные системы.............................................................. 4.1. Экспертная система с детерминированными признаками...... 4.2. Экспертная система с вероятностными признаками............. 4.3. Структура базы данных экспертной системы....................... 4.4. Алгоритм работы экспертной системы................................ 4.5. Тестирование экспертной системы..................................... 5. Машинное обучение............................................................... 5.1. Обучение поиску в пространстве состояний......................... 5.2. Обучение распознаванию образов....................................... 5.3. Обучение экспертной системы........................................... 6. Нейронные сети..................................................................... 6.1. Естественные и искусственные нейроны............................. 6.2. Топология нейронных сетей.............................................. 6.3. Алгоритм обратного распространения................................ 6.4. Сеть встречного распространения...................................... 6.5. Практическая реализация нейронных сетей........................ 7. Генетические алгоритмы........................................................ 7.1. Методологическая основа генетических алгоритмов............. 7.2. Представление задачи
в конъюнктивной нормальной форме....................................... 7.3. Проблемы реализации генетических алгоритмов................. Контрольные вопросы................................................................ Библиографический список........................................................ 3
9
9
10
12
17
19
22
22
27
31
38
44
44
49
55
58
63
74
74
77
78
80
86
91
91
95
109
116
116
120
127
132
140
143
143
146
150
154
158
159
Учебное издание
Балонин Николай Алексеевич,
Соловьёв Николай Владимирович,
Соловьёва Татьяна Николаевна
ВВЕДЕНИЕ
В ИНТЕЛЛЕКТУАЛЬНЫЕ
СИСТЕМЫ
Учебное пособие
Редактор А. В. Подчепаева
Компьютерная верстка С. Б. Мацапуры
Сдано в набор 04.06.14. Подписано к печати 24.12.14.
Формат 60×84 1/16. Бумага офсетная. Усл. печ. л. 9,3.
Уч.-изд. л. 10,00. Тираж 100 экз. Заказ № 692.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
Документ
Категория
Без категории
Просмотров
7
Размер файла
3 909 Кб
Теги
balonin
1/--страниц
Пожаловаться на содержимое документа