Алгоритм оценки распределения
Алгоритм оценки распределения (англ. Estimation of distribution algorithm, EDA[1]) — это класс стохастических оптимизационных методов, направленных на поиск оптимума путём построения и выборки явных вероятностных моделей перспективных кандидатных решений. Оптимизация здесь рассматривается как последовательность инкрементальных обновлений вероятностной модели: начальное распределение кодирует неинформативное априорное знание о допустимых решениях, а финальное распределение — генерирует лишь глобальные оптимумы[2][3][4].
Алгоритмы оценки распределения относятся к классу эволюционных алгоритмов. Главное отличие EDA от большинства традиционных эволюционных алгоритмов в том, что новые кандидатные решения порождаются не неявным распределением, определяемым вариационными операторами, а явным вероятностным распределением, кодируемым Байесовской сетью, многомерным нормальным распределением либо другой моделью. Как и другие эволюционные алгоритмы, EDA применимы для оптимизации задач в различных представлениях — от векторов до S-выражений в стиле LISP, а качество решений обычно оценивается одной или несколькими целевыми функциями.
Общая схема работы EDA следующая:
t := 0
инициализировать модель M(0) равномерным распределением по допустимым решениям
пока (критерий завершения не достигнут) делать
P := сгенерировать N>0 кандидатов путём выборки из M(t)
F := вычислить значения целевых функций для всех кандидатов из P
M(t + 1) := adjust_model(P, F, M(t))
t := t + 1
Использование явных вероятностных моделей позволяет EDA эффективно решать сложные задачи оптимизации, труднопреодолимые для классических эволюционных алгоритмов, например, задачи с высокой эпистазией. Кроме того, важным преимуществом EDA является то, что последовательность построенных моделей предоставляет пользователю большое количество информации о структуре решаемой задачи. Эти сведения могут быть использованы при проектировании специализированных эвристик для локального поиска, при дальнейшем применении EDA для схожих задач или для создания эффективной вычислительной модели задачи.
Например, если популяция представлена битовыми строками длины 4, EDA может моделировать вероятности появления 1 в каждом бите через вектор (p1, p2, p3, p4), где pi — вероятность наличия 1 на i-м месте. Используя этот вектор вероятностей, можно генерировать сколь угодно много новых решений.
Алгоритмы оценки распределения (EDA)
В этом разделе описаны вероятностные модели, используемые в различных известных EDA разной степени сложности. Во всех случаях предполагается популяция на поколении , оператор выбора , оператор построения модели и оператор генерации .
Одномерные факторизации
Простейшие EDA предполагают независимость переменных, то есть . Соответственно, одномерные EDA используют только одномерную статистику, а многомерное распределение представляется произведением одномерных вероятностных распределений:
Такие факторизации применяются во многих различных EDA, далее приведены отдельные из них.
UMDA[5] — это простой EDA, где оператор оценивает маргинальные вероятности по выбранной популяции . Пусть содержит элементов, тогда вычисляет вероятности:
Каждый шаг UMDA можно описать так:
PBIL[6] представляет популяцию неявно через её модель, из которой выполняется выборка новых решений и обновление самой модели. На каждом поколении выбирается индивидов и из них отбирается . Эти индивиды используются для обновления модели по формуле:
где — параметр скорости обучения; маленькое значение означает минимальные изменения текущей модели при добавлении новых решений. PBIL можно записать так:
CGA[7] также использует неявно определяемые популяции через одномерные распределения. На каждом поколении берутся две особи , , их сортируют по убыванию приспособленности, лучшая обозначается , худшая — . Оценка одномерных вероятностей производится так:
где — постоянная, обычно . CGA определяется так:
Двумерные факторизации
Несмотря на эффективность одномерных моделей, зачастую они недостаточно хорошо отображают структуру задачи для достижения превосходства над стандартными ГА. Для устранения этого недостатка предлагается двумерная факторизация, учитывающая пары связанных переменных. Такую факторизацию можно записать так, где — связанная переменная для , :
Двумерные и многомерные распредления, как правило, отображаются в виде вероятностных графических моделей, где рёбра соответствуют зависимостям (условным вероятностям), а вершины — переменным. Для обучения структуры графа из данных используется linkage-learning.
MIMIC[8] факторизует совместное распределение вероятностей как цепочку зависимостей между переменными. Находится перестановка переменных, минимизирующая дивергенцию Кульбака — Лейблера, то есть . Итоговое распределение:
Новые решения генерируются последовательно слева направо по цепочке переменных. Так как распределение пересчитывается на каждом поколении, работа MIMIC выражается так:
BMDA[9] разбивает совместное распределение на несколько двумерных. Сначала случайно выбранная переменная включается как узел в граф, далее по мере обхода к имеющимся узлам добавляются наиболее зависимые переменные из ещё не включённых, пока не останется неродственных. Итоговая модель представляет собой лес из деревьев, где корневые переменные формируют независимые компоненты, остальные — условные.
Каждый шаг BMDA:
Многомерные факторизации
Дальнейшее развитие EDA опирается на многомерные факторизации. Совместное распределение разлагается на компоненты ограниченного размера :
Построение и обучение многомерных графических моделей трудозатратно, поэтому часто используют приближение многомерной статистики на основе двумерной. Это обеспечивает вычислимость за полиномиальное время, но ограничивает универсальность.
ECGA[10] — один из первых EDA с явной многомерной факторизацией, учитывающий высокоуровневые зависимости между переменными. Здесь совместное распределение представлено произведением многомерных маргинальных, для кластера (linkage set) , :
ECGA популяризировал термин linkage-learning — процедуры определения зависимостей. Обучение связываний опирается исключительно на две меры: сложность модели (MC) и степень компрессии популяции (CPC):
где — совместная энтропия группы переменных . Модель связываний строится путём последовательного объединения кластеров, максимизирующих прирост метрики , до тех пор пока дальнейшие улучшения невозможны. Ход ECGA:
BOA[11][12][13] использует байесовские сети для построения и выборки перспективных решений. Байесовские сети — ориентированные ациклические графы, где узлы — переменные, а рёбра — условные вероятности. Максимальная размерность условного множества — переменных. BOA строит графическую модель вероятностной факторизации, параметры которой (условные вероятности) оцениваются по выбранной популяции методом максимального правдоподобия:
Структура самой сети настраивается итеративно, на каждом шаге добавляя рёбра, максимизирующие некую меру качества (например, BIC либо метрика Бая–Дирихле)[14]. После построения сети BOA генерирует решения в упорядочении по предшественникам: каждая переменная выбирается условно по "родителям". Формально:
LTGA[15] отличается тем, что не строит явное вероятностное распределение, а лишь модель связей — семейство подмножеств (FOS):
Обучение дерева связей — определение иерархической кластеризации: на каждом шаге объединяются два "ближайших" кластера, в поддеревья, которые и сохраняются как подмножества .
LTGA использует для процедуры "оптимального смешивания" (революционный модифицированный оператор рекомбинации), обозначаемой : перенос блоков генетического материала только если улучшение качества. Формально:
Вход: семейство подмножеств и популяция Выход: популяция . для каждого в делать для каждого в делать выбрать случайный := := если то вернуть
В LTGA нет классического оператора отбора — отбор интегрирован в процедуру смешивания. Подобные идеи широко используются в локальных поисковых эвристиках; таким образом, LTGA — гибридный подход. Один шаг LTGA:
Другие варианты
- Probability collectives (PC)[16][17]
- Hill climbing with learning (HCwL)[18]
- Estimation of multivariate normal algorithm (EMNA)
- Estimation of Bayesian networks algorithm (EBNA)
- Стохастический подъём на холм с обучением по векторам нормальных распределений (SHCLVND)[19]
- Real-coded PBIL
- Selfish Gene Algorithm (SG)[20]
- Compact Differential Evolution (cDE)[21] и её варианты[22][23][24][25][26]
- Компактный рой частиц (cPSO)[27]
- Компактная бактериальная поисковая оптимизация (cBFO)[28]
- Вероятностная инкрементальная эволюция программ (PIPE)[29]
- Estimation of Gaussian networks algorithm (EGNA)
- Estimation multivariate normal algorithm with thresheld convergence[30]
- Genetic Algorithm with Matrix of Dependences (DSMGA)[31][32]