5
КОМПЬЮТЕРНЫЕ СИСТЕМЫ И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
УДК 004.4'242
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКОГО ПРОГРАММИРОВАНИЯ ДЛЯ ПОСТРОЕНИЯ АВТОМАТОВ УПРАВЛЕНИЯ СИСТЕМАМИ СО СЛОЖНЫМ ПОВЕДЕНИЕМ НА ОСНОВЕ ОБУЧАЮЩИХ ПРИМЕРОВ
И СПЕЦИФИКАЦИИ К.В. Егоров, Ф.Н. Царев, А.А. Шалыто
Предлагается метод машинного обучения, основанный на совместном применении генетического программирования и верификации моделей для построения автоматов управления системами со сложным поведением на основе обучающих примеров. Приводится описание структуры хромосом, генетического алгоритма, операций мутации и скрещивания. Изложены результаты экспериментального исследования на задаче построения конечного автомата управления дверьми лифта.
Ключевые слова: генетическое программирование, машинное обучение, верификация моделей, автоматное программирование.
Автоматное программирование - это парадигма программирования, в рамках которой программы предлагается проектировать в виде совокупности взаимодействующих автоматизированных объектов управления [1]. В автоматных программах выделяют три типа объектов: поставщики событий, система управления и объекты управления. Система управления представляет собой конечный автомат или систему взаимодействующих конечных автоматов. Поставщики событий генерируют события, а система управления по каждому событию может совершить переход из рассматриваемого состояния, считывая значения входных переменных у объектов управления для проверки условия перехода, в другое состояние.
Для многих задач автоматы удается строить эвристически, однако существуют задачи, для которых такое построение затруднительно [2-4]. Одним из авторов настоящей работы был предложен метод построения автоматов с помощью генетического программирования на основе тестов (обучающих примеров) [5]. Однако, как известно, тесты не могут полностью описывать поведение программы, а их выполнимость не является критерием ее корректности.
Цель настоящей работы - расширение возможностей указанного метода построения автоматных программ за счет использования обучающих примеров и верификации в процессе работы алгоритма генетического программирования.
Для описания спецификации управляющего конечного автомата будем применять язык логики линейного времени LTL (Linear Temporal Logic). Алгоритм верификации основан на проверке пустоты языка, задаваемого пересечением рассматриваемого конечного автомата и автомата Бюхи, соответствующего отрицанию LTL-формулы, представляющей требование к автомату [6, 7]. Эта проверка осуществляется с помощью алгоритма двойного обхода в глубину.
Верификатор получает на вход модель автоматной программы и LTL-формулу [8]. После проверки модели верификатор либо сообщает, что формула выполняется, либо приводит контрпример - путь в модели, опровергающий утверждение [9].
Построение управляющих конечных автоматов на основе обучающих примеров с помощью
генетического программирования
При использовании метода построения управляющих конечных автоматов на основе обучающих примеров, каждый из них содержит последовательность входных событий (входная последовательность, соответствующая /-ому тесту, будет обозначаться как Input[/]) и соответствующую ей последовательность выходных воздействий (в дальнейшем будет обозначаться, как Answer[/]). Отметим, что в настоящей работе в обучающих примерах не используются входные переменные.
Функция приспособленности основана на редакционном расстоянии [10]. Для этой функции выполняются следующие действия: на вход автомату подается каждая из последовательностей Input[/].
Введение
Верификация автоматных программ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКОГО ПРОГРАММИРОВАНИЯ ДЛЯ ПОСТРОЕНИЯ АВТОМАТОВ..
Обозначим последовательность выходных воздействий, которую сгенерировал автомат на входе Шриф'] как Оириф]. После этого вычисляется функция ББ вида:
У (1 ED(Output[/],Answer[/]) )
1 тах(| ОШрШ:[г] |, | Answer[/] |)
ББ1 = —-.
п
Здесь ED(A, В) - редакционное расстояние между строками А и В, а Answer[/] - эталонная выходная последовательность, которую должен генерировать автомат на входе 1прШ;[г]. Отметим, что значения этой функции лежат в пределах от 0 до 1. При этом чем «лучше» автомат соответствует тестам, тем больше значение функции приспособленности.
Функция приспособленности должна зависеть не только от того, насколько «хорошо» автомат работает на тестах, но и числа переходов, которые он содержит. Предлагается ее вычислять по формуле
ББ2 - ББ1 + — • (М - сП), М
где cnt - число переходов в рассматриваемом конечном автомате, а М - некоторое число, большее максимально возможного числа переходов в автомате с заданным числом состояний. При этом отметим, что все рассматриваемые в процессе работы алгоритма генетического программирования автоматы имеют одинаковое наперед заданное число состояний.
Функция приспособленности построена так, что при одинаковом значении функции ББ1, учитывающей «прохождение» тестов автоматом, преимущество имеет автомат, содержащий меньшее число переходов. Учет числа переходов в функции приспособленности необходим, так как минимизация их числа приводит к тому, что в результирующем автомате отсутствуют переходы, неиспользуемые в тестах.
Совместное применение генетического программирования и верификации
Предлагается при вычислении функции приспособленности учитывать как поведение автомата при обработке тестов, так и число выполняемых (верных) для автомата ЬТЬ-формул, составляющих спецификацию. При этом, чем больше число выполняемых формул и успешно пройденных тестов, тем больше значение функции приспособленности.
Для вычисления функции приспособленности конечный автомат, задаваемый рассматриваемой особью, запускается на всех тестах и проверяется на соответствие всем темпоральным формулам, составляющим спецификацию. Для учета указанных особенностей необходимо изменить введенную выше функцию приспособленности:
ББ - ББГ (1 + -П1) + — • (М - сй).
п2 М
Здесь п2 - общее число темпоральных формул в спецификации, а п1 - число формул, которые выполняются для рассматриваемого конечного автомата.
Структура хромосомы в алгоритме генетического программирования
Конечный автомат в алгоритме генетического программирования представляется в виде объекта, который содержит описания переходов для каждого состояния и номер начального состояния. Для каждого состояния хранится список переходов. В свою очередь, каждый переход описывается событием, при поступлении которого этот переход выполняется, и числом выходных воздействий, которые должны быть сгенерированы при выборе этого перехода. Таким образом, в особи кодируется только «скелет» управляющего конечного автомата, а конкретные выходные воздействия, вырабатываемые на переходах, определяются с помощью алгоритма расстановки пометок, который аналогичен предложенному в работе [11].
Идея алгоритма расстановки пометок состоит в том, что пометки на переходах (вырабатываемые на них выходные воздействия) расставляются на основе тестов. При этом расстановка пометок происходит таким образом, чтобы получившийся в результате автомат достаточно хорошо соответствовал тестам.
Опишем более формально алгоритм расстановки пометок на переходах, применяемый в настоящей работе. Подадим на вход конечному автомату последовательность событий, соответствующую одному из тестов, и будем наблюдать за тем, какие переходы выполняет автомат. Зная эти переходы и информацию о том, сколько выходных воздействий должно быть сгенерировано на каждом переходе, можно определить, какие выходные воздействия должны вырабатываться на переходах, использовавшихся при обработке входной последовательности (рис. 1).
На рис. 1 буквами А, Н, М и Т обозначены события, поступающие на вход конечного автомата, а как 73, 74 и 75 обозначены выходные воздействия.
Рис. 1. Применение алгоритма расстановки пометок
Для случая нескольких тестов этот принцип можно обобщить следующим образом. Для каждого перехода Тг и каждой последовательности выходных воздействий вычисляется величина С[Тг][78] -число раз, когда при обработке входной последовательности, соответствующей одному из тестов, на переходе Тг должны быть выработаны выходные воздействия, образующие последовательность Далее, каждый переход помечается той последовательностью для которой величина С[Тг] ^о] максимальна.
Операции мутации и скрещивания
Операция мутации может выполняться двумя способами - традиционным и учитывающим результат верификации. Традиционный способ используется в методе построения управляющих автоматов на основе обучающих примеров [5].
Операция скрещивания может быть осуществлена тремя способами - традиционным, с учетом тестов и с учетом результата верификации. Первые два способа также описаны в работе [5].
Опишем методы мутации и скрещивания, учитывающие верификацию. Как отмечалось выше, алгоритм верификации основан на двойном обходе в глубину автомата, задаваемого особью, и автомата Бюхи, построенного по отрицанию ЬТЬ-формулы. При использовании такого алгоритма, та часть модели, которая была помещена в процессе первого обхода в глубину, удовлетворяет ЬТЬ-формуле и может быть использована в процессе скрещивания точно так же, как в методе скрещивания с учетом тестов (помеченные переходы копируются в новые особи напрямую). Иными словами, подграф переходов, которые обошел верификатор в процессе верификации, может перейти без изменений в новую особь.
В то же время, должна быть обеспечена возможность не только сохранять часть модели, на которой выполняется темпоральное свойство, но и удалять те переходы, которые входят в контрпример, возвращаемый верификатором. Такой контрпример представляет собой путь в модели. Поэтому при мутации можно либо удалить переход из этого пути, либо изменить его конечное состояние, число генерируемых выходных воздействий или событие, инициирующее переход.
Экспериментальное исследование
Экспериментальное исследование предлагаемого метода машинного обучения проводилось на задаче построения автомата управления дверьми лифта. Эта система содержит пять входных событий (е11 - нажата кнопка «Открыть двери»; е12 - нажата кнопка «Закрыть двери»; е2 - открытие или закрытие дверей успешно завершено; е3 - препятствие мешает закрыть дверь; е4 - дверь сломалась) и три выходные воздействия (21 - начать открытие дверей; 22 - начать закрытие дверей; 2 3 - позвонить в аварийную службу).
При построении управляющего автомата использовались девять тестов (табл. 1).
Входная последовательность Выходная последовательность
е11, е2, е12, е2 21, 22
е11, е2, е12, е2, е11, е2, е12, е2 21, 22, 21, 22
е11, е2, е12, е3, е2, е12, е2 21, 22, 21, 22
е11, е2, е12, е2, е11, е2, е12, е3, е2, е12, е2 21, 22, 21, 22, 21, 22
е11, е2, е12, е3, е2, е12, е3, е2, е12, е2 21, 22, 21, 22, 21, 22
е11, е4 21, 23
е11, е2, е12, е4 21, 22, 23
е11, е2, е12, е2, е11, е4 21, 22, 21, 23
е11, е2, е12, е3, е4 21, 22, 21, 23
Таблица 1. Тесты для системы управления дверьми лифта
Спецификация управляющего автомата содержит 11 темпоральных свойств (табл. 2).
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКОГО ПРОГРАММИРОВАНИЯ ДЛЯ ПОСТРОЕНИЯ АВТОМАТОВ...
Формула Комментарий
G( wasEvent(ep.e11) => wasAc-tion(co.z1) ) Если было событие е11, то было вызвано действие z1
G( wasEvent(ep.e12) <=> wasAc-tion(co.z2) ) Событие е12 обрабатывается тогда и только тогда, когда вызывается z2
G( wasEvent(ep.e4) <=> wasAc-tion(co.z3)) Событие е4 обрабатывается тогда и только тогда, когда вызывается z3
G( wasEvent(ep.e3) => wasAc-tion(co.z1) ) Если было событие е3, то было вызвано действие z1
G( wasEvent(ep.e2) => X(wasEvent(ep.e11) эг wasEv-ent(ep.e12)) ) Если было событие е2, то следующим обработанным событием будет е11 или е12
G( wasEvent(ер.е11) => X(wasEvent(ep.e4) ог wasEvent(ep.e2)) ) Если было событие е11, то следующим обработанным событием будет е4 или е2
G( wasAction(со.z1) => X(wasEvent(ep.e2) ог wasEvent(ep.e4)) ) Если было вызвано действие z1, то следующим обработанным событием будет е2 или е4
G( wasEvent(ер.е12) => X(wasEvent(ер.е2) ог wasEvent(ер.е3) ог wasEvent(ep.e4)) ) Если было событие е12, то следующим обработанным событием будет е2, или е3, или е4
G( wasAction(со.z1) => Х( U(!wasAction(co.z1), wasAction(co.z2) ог wasEvent(ep.e4)) ) ) Если было вызвано действие z1, то оно не будет больше вызвано, пока не будет вызвано z2 или обработано событие е4
G( wasAction(со.z2) => Х( U(!wasAction(co.z2), wasAction(co.z1) ог wasEvent(ep.e4)) ) ) Если было вызвано действие z2, то оно не будет больше вызвано, пока не будет вызвано z1 или обработано событие е4
!Е(wasEvent(ер.е4) and X(Е(wasEvent(ер.е11) ог wasEv-еп^ер.е12) ог wasEvent(ep.e2) || wa-sEvent(ep.e3)))) Не верно, что в будущем будет после события е4 когда либо будут обработаны е11, е12, е2 или е3 (лифт не может самостоятельно починиться)
Таблица 2. Темпоральные свойства, составляющие спецификацию системы управления дверьми лифта
Целью экспериментального исследования было сравнение метода построения управляющих конечных автоматов на основе тестов с предлагаемым в настоящей работе методом, использующим верификацию моделей на различных стадиях работы алгоритма генетического программирования (вычисление функции приспособленности, скрещивание и мутация). Для оценки трудоемкости сравниваемых методов было проведено по 1000 экспериментов, и для каждого эксперимента записывалось число вычислений функции приспособленности. Эксперименты показали, что при построении автоматов только на основе тестов, очень редко (всего в девяти случаях из 1000) результатом являлся автомат, который полностью удовлетворяет спецификации. Пример автомата, построенного только на основе тестов, приведен на рис. 2.
Лх.7
е12/г2
Рис. 2. Автомат управления дверьми лифта, построенный только на основе обучающих примеров
Это автомат обладает тем недостатком, что может отдать команду на закрытие дверей после того, как они сломаются или же начать открывать (закрывать) двери, когда они уже открыты (закрыты). Отметим, что некоторые из построенных в этом эксперименте автоматов обладали и другими недостатками.
При использовании предлагаемого метода (с применением верификации моделей) построение автомата (рис. 3) занимало больше времени, но построенный автомат удовлетворял всем требованиям спецификации.
Рис. 3. Автомат управления дверьми лифта, построенный с использованием верификации
При построении конечного автомата управления дверьми лифта только на основе тестов, среднее значение вычислений функции приспособленности оказалось равным 7,479 104 (минимальное число вычислений - 2,184-104, максимальное - 2,999 105, среднеквадратичное отклонение - 2,54 104).
При использовании верификации моделей совместно с тестами, среднее значение числа вычислений функции приспособленности оказалось равным 7,246-105 (минимальное число вычислений -7,054-104, максимальное - 5,492 106, среднеквадратичное отклонение - 7,729 105).
Таким образом, использование верификации хоть и замедляет процесс построения управляющего конечного автомата примерно в десять раз, но если принять во внимание то, что при построении только на основе тестов процент правильно построенных автоматов меньше 1%, то применение предлагаемого в настоящей работе метода оправдывает себя.
Заключение
Предложен метод машинного обучения для построения управляющих конечных автоматов на основе обучающих примеров. Предложенный метод основан на совместном применении генетического программирования и верификации моделей программ. Применение верификации в процессе работы алгоритма генетического программирования позволяет говорить об автоматизированном построении автоматов с гарантированным поведением.
Исследование проводится в рамках Федеральной целевой программы «Научные и научно-педагогические кадры инновационной России на 2009-2013 годы», а также финансируется по гранту РФФИ № 10-01-00654а.
Литература
1. Поликарпова Н.И., Шалыто А.А. Автоматное программирование. - СПб: Питер, 2009.
2. Angeline P.J., Pollack J. Evolutionary Module Acquisition // Proceedings of the Second Annual Conference on Evolutionary Programming. 1993. [Электронный ресурс]. - Режим доступа: http://www.demo.cs.brandeis.edu/papers/ep93.pdf, свободный. Яз. англ. (дата обращения 17.06.2010).
3. Jefferson D., Collins R., Cooper C., Dyer M., Flowers M., Korf R., Taylor C., Wang A. The Genesys System. 1992. [Электронный ресурс]. - Режим доступа: http://www.cs.ucla.edu/~dyer/Papers/AlifeTracker/Alife91Jefferson.html, свободный. - Яз. англ. (дата обращения 17.06.2010).
4. Chambers L. Practical Handbook of Genetic Algorithms. Complex Coding Systems // CRC Press, 1999. -V. III. - Р. 659.
5. Царев Ф.Н. Метод построения автоматов управления системами со сложным поведением на основе тестов с помощью генетического программирования // Материалы международной научной конференции «Компьютерные науки и информационные технологии». - Саратов: СГУ, 2009. - С. 216-219.
6. Кларк Э., Грамберг О., Пелед Д. Верификация моделей программ: Model Checking. - M.: МЦНМО, 2002.
7. Gerth R., Peled D., Vardi M.Y., Wolper P. Simple On-the-fly Automatic Verification of Linear Temporal Logic // Proc. of the 15th Workshop on Protocol Specification, Testing, and Verification, Warsaw. - 1995. -Р. 3-18.
8. Разработка технологии верификации управляющих программ со сложным поведением, построенных на основе автоматного подхода. Второй этап. СПбГУ ИТМО, 2007 [Электронный ресурс]. - Режим доступа: http://is.ifmo.ru/verification/_2007_02_report-verification.pdf, свободный. - Яз. рус. (дата обращения 17.06.2010).
9. Егоров К.В., Шалыто А.А. Методика верификации автоматных программ // Информационно-управляющие системы. - 2008. - № 5. - С. 15-21.
АЛГОРИТМ ВОССТАНОВЛЕНИЯ ТРЕХМЕРНОЙ МОДЕЛИ ЛИЦА..
10. Левенштейн В.И. Двоичные коды с исправлением выпадений, вставок и замещений символов // Доклады Академии наук СССР. - 1963. - № 4. - С. 845-848.
11. Lucas S., Reynolds T. Learning Finite State Transducers: Evolution versus Heuristic State Merging // IEEE Transactions on Evolutionary Computation. - 2007, June. - V. 11. - Is. 3. - Р. 308-325.
Егоров Кирилл Викторович - Санкт-Петербургский государственный университет информационных
технологий, механики и оптики, магистр прикладной математики и информатики, kegorof@gmail.com Царев Федор Николаевич - Санкт-Петербургский государственный университет информационных
технологий, механики и оптики, аспирант, fedor.tsarev@gmail.com Шалыто Анатолий Абрамович Санкт-Петербургский государственный университет информационных
технологий, механики и оптики, доктор технических наук, профессор, зав. кафедрой, shalyto@mail.ifmo.ru
УДК 004.021
АЛГОРИТМ ВОССТАНОВЛЕНИЯ ТРЕХМЕРНОЙ МОДЕЛИ ЛИЦА
ПО ФОТОГРАФИИ А.В. Шлянников
Предложен метод построения трехмерной модели лица на основе одной входной фотографии. Алгоритм основывается на выделении контрольных точек и характерных особенностей на представленном изображении и переносе их на модель. Для получения характерных особенностей фотографии применяется специальное wavelet-преобразование, выделяющее наиболее информативные признаки. Полученная модель может быть использована в дальнейшем в задачах визуализации и распознавания образов.
Ключевые слова: распознавание лица, 3Б-моделирование, wavelet-обработка.
Введение
Задача построения трехмерных моделей лица в настоящее время широко востребована в задачах визуализации трехмерных объектов и в системах распознавания и контроля доступа, поэтому ей посвящено большое количество работ. Однако решенной данную проблему считать нельзя.
Известно несколько подходов для решения поставленной задачи. Наиболее точными являются методы, при которых модель лица строится при помощи специального оборудования. В работе [1] предложен алгоритм обработки информации, полученной с лазерного сканера, для построения моделей и идентификации лиц. Данный подход дает наибольшую эффективность в решении проблемы, однако сужает область применения за счет необходимости использования специального оборудования.
В данной работе применяется подход, основанный на обработке только одного монокулярного изображения, что уменьшает идентичность модели и реального лица на фотографии, но позволяет расширить область применения алгоритма.
В работе [2] предложен метод идентификации лиц по характерным признакам, присутствующим на лице. В текущей работе этот метод был использован для выделения характерных признаков лица на фотографии и построения модели по этим признакам.
Задача формально описывается следующим образом: дается некоторое изображение лица, и требуется построить приближенную пространственную фигуру, отражающую лицо на фотографии. На формат входного изображения накладываются следующие ограничения: фотография содержит только одно лицо и должна быть сделана в анфас. Результатом работы алгоритма является набор точек/полигонов в пространстве, представляющий собой модель лица на фотографии, что и является решением задачи.
Описание алгоритма
Алгоритм решения задачи строится по итеративному принципу. В качестве исходной итерации выбирается некоторая усредненная модель головы человека, и производится пошаговое ее улучшение. На каждом шаге процесса итеративной модификации выполняются следующие действия.
1. Генерируется изображение модели, которое затем используется для сравнения с входным изображением.
2. На входной фотографии и на сгенерированном изображении модели в автоматическом режиме выделяются контрольные точки, содержащие данные о точном положении лица на фотографии, его общей форме и о точных координатах конкретных черт лица на фотографии.
3. Используя координаты контрольных точек, производится аппроксимация конкретных регионов на обоих изображениях с помощью шаблонов, находящихся в специальном словаре.