
- •Искусственный интеллект. Лабораторная работа №1
- •Искусственный интеллект. Лабораторная работа № 2
- •Тип слота
- •Вопрос слота
- •Значение слота
- •Номер правила
- •Условие и заключение
- •Отношение
- •Имя слота
- •Значение слота
- •Коэффициент достоверности
- •Искусственный интеллект. Лабораторная работа №3
- •If список open пуст
- •Искусственный интеллект. Лабораторная работа №4
- •Искусственный интеллект.
- •Редактирование файла данных и создание нейронной сети.
- •Выбор алгоритма обучения, назначение требуемой точности прогноза, настройка параметров нейронной сети.
- •Обучение нейронной сети решению задачи предсказания или классификации.
- •Искусственный интеллект. Лабораторная работа №6
- •Искусственный интеллект. Лабораторная работа №7
- •Задание.
Искусственный интеллект. Лабораторная работа №6
«Генетические алгоритмы».
Цель работы: Получить практические навыки в создании и использовании генетических алгоритмов.
Теоретические сведения:
Подобно нейронным сетям, генетические алгоритмы основываются на свойствах биологического прототипа. В рамках этого подхода обучение рассматривается как конкуренция внутри популяции между эволюционирующими кандидатами на роль решения задачи. Каждое решение оценивается согласно критерию отбора. По результатам оценки определяется, будет ли этот экземпляр участвовать в следующем поколении решений. Затем с помощью операций, аналогичных трансформации биологического воспроизводства, создается новое поколение решений-кандидатов.
Пусть Р(t) — поколение
решений-кандидатов
в момент времени t P(t)
= {
,
,…,
}.
В общем виде генетический алгоритм можно представить следующим образом.
procedure genetic algorithm;
begin
установить t:=0;
инициализировать популяцию P(t);
while не достигнуто условие завершения
begin
вычислить значение критерия качества для каждого члена
популяции P(t);
на основе значений критерия качества выбрать из Р(t) нужное
число членов;
создать следующее поколение с помощью генетических операций;
заменить с учётом значений критерия качества особей
популяции P(t) их потомками;
установить время t: = t+1
end.
end.
Этот алгоритм отражает основные принципы генетического обучения. Его конкретные реализации могут отличаться в зависимости от задачи. Какое процентное соотношение особей выживает в следующем поколении? Сколько особей участвуют в скрещивании? Как часто и к кому применяются генетические операторы? Процедуру "заменить особей популяции P(t)" можно реализовать простейшим образом, заменив фиксированное процентное соотношение слабейших кандидатов. Более сложный подход состоит в упорядочении популяции согласно критерию качества и удалении особей с учетом вероятности, обратно пропорциональной значению критерия качества. Такую меру можно использовать для выбора исключаемых особей. И хотя для наилучших особей популяции вероятность их исключения очень низка, все же существует шанс удаления самых "сильных" особей популяции. Преимущество этой схемы состоит в возможности сохранения некоторых "слабых" особей, которые в дальнейшем могут внести свой вклад в получение более точного решения.Такой алгоритм замены известен под многими именами, в том числе как метод Монте-Карло (Monte-Carlo), правило рулетки (roulette wheel) или алгоритм отбора пропорционально критерию качества (fitness proportionate selection).
Решение задачи будем описывать с помощью обычных битовых строк. Предположим, что необходимо с помощью генетического алгоритма научиться классифицировать строки, состоящие из единиц и нулей. В такой задаче популяцию битовых строк можно описывать с помощью шаблона, состоящего из 1, 0 и символов #, которые могут соответствовать как 1, так и 0. Следовательно, шаблон 1##00##1 представляет всё восьмибитовые строки, начинающиеся, заканчивающиеся 1 и содержащие в середине строки два нуля подряд.
При работе генетического алгоритма популяция кандидатов Р(0) некоторым образом инициализируется. Обычно инициализация выполняется с помощью датчика случайных чисел. Для оценки решений-кандидатов вводится критерий качества f( ), определяющий меру соответствия каждого кандидата в момент времени t. При классификации мерой соответствия кандидатов является процентное соотношение правильных ответов на множестве обучающих примеров. При таком критерии качества каждому решению-кандидату соответствует значение
f ( ) / m (Р, t) ,
где m (Р, t) — среднее значение критерия качества для всех членов популяции. Обычно мера соответствия изменяется во времени, поэтому критерий качества может быть функцией от стадии решения всей проблемы или f( ).
После анализа каждого кандидата выбираются пары для рекомбинации. При этом используются генетические операторы, в результате выполнения которых новые решения получаются путем комбинации свойств родителей. Как и в естественном процессе эволюции, степень участия в репродуктивном процессе для каждого кандидата определяется значением критерия качества: кандидаты с более высоким значением критерия качества участвуют в процессе воспроизводства с более высокой вероятностью. Как уже отмечалось, выбор осуществляется на основе вероятностных законов, когда слабые члены популяции имеют меньшую вероятность воспроизводства, однако такая возможность не исключается. Выживание некоторых слабейших особей имеет важное значение для развития популяции, поскольку они могут содержать некоторые важные компоненты решения, например, фрагмент битовой строки, которые могут извлекаться при воспроизводстве.
Генетические операторы.
Существует множество генетических операторов получения потомства, обладающего свойствами своих родителей. Основными являются селекция, кроссовер и мутация.
Оператор селекция отбирает в популяции наилучшие хромосомы для воспроизводства. Основной принцип селекции – чем выше приспособленность особи, тем больше потомства она даст.
Собственно воспроизводство ведется с помощью оператора кроссовера - скрещивания (crossover). При скрещивании два решения-кандидата делятся на несколько частей и обмениваются этими частями, результатом становятся два новых кандидата.
На рис.1 показана операция скрещивания шаблонов битовых строк длины 8. Эти строки делятся на две равные части, после чего формируются два потомка, содержащих по одному сегменту каждого из родителей. Заметим, что разбиение родительских особей на две равные части— это достаточно произвольный выбор. Решения-кандидаты могут разбиваться в любой точке, которую можно выбирать и изменять случайным образом в ходе решения задачи.
Предположим, что целевой класс — это набор всех строк, которые начинаются и заканчиваются единицей. Обе родительские строки, показанные на рис.1, достаточно хорошо подходят для решения этой задачи. Однако первый их потомок гораздо точнее соответствует критерию качества, чем любой из родителей: с помощью этого шаблона не будет пропущен ни один из целевых примеров, а нераспознанными останутся гораздо меньше строк, чем в реальном классе решения. Заметим также, что его "собрат" гораздо хуже, чем любой из родителей, поэтому этот экземпляр, скорее всего, будет исключен в одном из ближайших поколений.
Мутация (mutation) — это еще один важный генетический оператор. Она состоит в случайном выборе кандидата и случайном изменении некоторых его свойств. Например, мутация может состоять в случайном выборе бита в шаблоне и изменении его значения с 1 на 0 или #. Значение мутации состоит в возможном восполнении важных компонентов решения, отсутствующих в исходной популяции. Если в рассмотренном выше примере ни один из членов исходной популяции не содержит 1 в первой позиции, то в процессе скрещивания нельзя получить потомка, обладающего этим свойством. Значение первого бита может измениться лишь вследствие мутации. Этой цели можно также достичь с помощью другого генетического оператора — инверсии (inversion), который заключается в том, что хромосома делится на две части, и затем они меняются местами.
Работа генетического алгоритма продолжается до тех пор, пока не будет достигнуто условие его завершения, например, для одного или нескольких кандидатов значение критерия качества не превысит некоторого порога.
Операции селекции, кроссовера, мутации и инверсии относятся к операторам классического генетического алгоритма, однако имеется еще один, очень важный оператор введенный позже – оператор элитизма, позволяющий особям обладающим наибольшей приспособленностью, без изменения переходить в следующее поколение.
Задание.
Напишите программу, иллюстрирующую пример использования генетического алгоритма.
Варианты задания:
Применить оператор селекции и кроссовера.
Применить оператор мутации.
Применить оператор инверсии.
Применить оператор селекции и кроссовера.
Применить оператор мутации.
Применить оператор инверсии.
Применить оператор селекции и кроссовера.
Применить оператор мутации.
Применить оператор инверсии.
Применить оператор селекции и кроссовера.
Применить оператор мутации.
Применить оператор инверсии.
Применить оператор селекции и кроссовера.