Semantyki w programowaniu genetycznym
Nowe podejścia i wyniki
Krzysztof Krawiec Bartosz Wieloch
12 kwiecień 2011
Plan
1 Wprowadzenie Programowanie genetyczne Semantyki 2 Zastosowania Mutacja Krzyżowanie Problemy pokrewneWprowadzenie Programowanie genetyczne
Wprowadzenie
Programowanie genetyczne
Wprowadzenie Programowanie genetyczne
Programowanie genetyczne
Co to jest?
metoda ewolucyjna której celem jest znalezienie pewnego
programu komputerowego rozwiązującego pewien zadany problem
(np. klasyfikacji)
program (rozwiązanie) — wyrażenie reprezentowane w postaci drzewa
ewolucja osobników w (dużej) populacji potencjalnych rozwiązań operacje:
Wprowadzenie Programowanie genetyczne
GA ↔ GP
Główne różnice pomiędzy algorytmami genetycznymi (GA) a programowaniem genetycznym (GP):
różnica metodyczna
GA: szukamy rozwiązania konkretnej instancji konkretnego problemu GP: szukamy algorytmu rozwiązującego dowolne instancje
konkretnego problemu różnica praktyczna
GA: stała długość genotypu (łańcuch genów)
GP: zmienna (z reguły ograniczona) wielkość programu – genotyp w formie drzewa
Wprowadzenie Programowanie genetyczne
Budowa programu w GP
Program w GP ma formę drzewa: terminale:
argumenty – dane które chcemy przetwarzać (np. w klasyfikacji to atrybuty obiektu) inne – np. stałe numeryczne, logiczne itp.
nieterminale – funkcje (instrukcje) przetwarzające, zwracające wartość na podstawie wartości wyliczonych przez swoje poddrzewa (np. add, sin, if-then-else, itp.)
Typy węzłów:
wszystkie węzły mają taki sam typ (zwracają np. liczby rzeczywiste) różne węzły mogą mieć różne typy (np. część zwraca wartości
Wprowadzenie Programowanie genetyczne
Problem
W programowaniu genetycznym problem definiuje się przez podanie: funkcji oceniającej rozwiązanie (obliczającej fitness) – pośrednio również zbioru danych uczących / testów na których programy będą sprawdzane
zbioru dostępnych terminali
zbioru dostępnych funkcji (nieterminali)
ewentualnych ograniczeń (np. na maksymalną głębokość akceptowalnego drzewa)
Wprowadzenie Programowanie genetyczne
Wyzwania dla GP
chaotyczne odwzorowanie budowy programu na jego działanie (mapowanie genotyp fenotyp)
wysoka epistaza — różne, oddalone od siebie geny bardzo mocno wzajemnie na siebie oddziaływują
zmiana pojedynczej instrukcji może zupełnie zmienić zachowanie całego programu
kolejność instrukcji determinuje ich znaczenie
duży odsetek mutacji obojętnych (introny) w szczególności dla dużych programów boolowskich
Wprowadzenie Semantyki
Wprowadzenie
Semantyki
Wprowadzenie Semantyki
Semantyka programu
Semantyka
pewna forma opisu działania i/lub właściwości programu Przykładowe rodzaje semantyk:
fitness – skrajnie uproszczony przypadek opisu poprzez jedną liczbę wektor odpowiedzi programu na pewien zbiór testów (semantyka częściowa) — ocena rozwiązania (fitness) może być liczony jako odległość semantyki programu od pożądanej semantyki
forma kanoniczna programu (semantyka zupełna), np. w funkcjach logicznych ROBDD (reduced ordered binary decision diagrams) lista cech wyliczanych na podstawie działania programu, niekoniecznie związanych bezpośrednio z funkcją oceny (np.
Wprowadzenie Semantyki
Przykład
x wynik -0.5 0.5 1.0 2.0 1.5 4.5 2.0 8.0 semantyka=[0.5, 2.0, 4.5, 8.0]Wprowadzenie Semantyki
Zastosowania semantyk
Semantyki można zastosować na wszystkich etapach ewolucji, czyli tam gdzie zwykle uwzględniało się tylko składnię lub fitness:
generowania populacji początkowej podczas selekcji
mutacji krzyżowania
Zastosowania Mutacja
Zastosowania
Mutacja
Zastosowania Mutacja
Zastosowania Mutacja
Jak działa mutacja GROW
Zastosowania Mutacja
Zastosowania Mutacja
Jak działa mutacja GROW
Zastosowania Mutacja
Zastosowania Mutacja
Jak działa mutacja GROW
Zastosowania Mutacja
Zastosowania Mutacja
Semantyczna mutacja
Problem
Standardowa metoda generowania losowych poddrzew często tworzy programy o pewnych semantykach a bardzo rzadko programy o innych.
0 2000 4000 6000 8000 10000
1e+01
1e+03
1e+05
Rozklad semantyk miliona losowo wygenerowanych drzew
semantyka
ile r
azy wyloso
w
ana
Zastosowania Mutacja
Semantyczna mutacja
Idea
Zmienić rozkład prawdopodobieństwa semantyk generowanych poddrzew na bardziej równomierny.
Motywacja
Krzyżowanie osobników z poddrzewami o rzadziej występujących semantykach daje większą szansę na otrzymanie potomka o nowej, jeszcze nie spotkanej semantyce.
Zastosowania Mutacja
Algorytm
zapamiętuj wszystkie minimalne poddrzewa o unikalnych semantykach jakie pojawią się podczas ewolucji
zliczaj liczbę wystąpień każdej unikalnej semantyki (tylko raz na jednego osobnika)
zamiast generować losowe poddrzewo w trakcie mutacji wybierz jedno z wcześniej zapamiętanych
losowanie odbywa się wg. rozkładu “geometrycznego” –
prawdopodobieństwo wylosowania i -tej najczęstszej semantyki P(si)
jest równe q · P(si −1)
Właściwości:
rozkład prawdopodobieństwa zmienia się w trakcie ewolucji mutacja wstawia tylko takie poddrzewa które już wcześniej się pojawiły
Zastosowania Mutacja
Zadania
Zadanie regresji symbolicznej: Sextic: x6− 2x4+ x2 Septic: x7− 2x6+ x5− x4+ x3− 2x2+ x Nonic: x9+ x8+ x7+ x6+ x5+ x4+ x3+ x2+ x R1: (x + 1)3/(x2− x + 1) R2: (x5− 3x3+ 1)/(x2+ 1) R3: (x6+ x5)/(x4+ x3+ x2+ x + 1)
Zastosowania Mutacja
Rozkłady prawdopodobieństwa
0 20 40 60 80 100 0.01 0.05 0.50 5.00 50.00 najczestsze semantyki pr a wdopodobienstw o wyloso w ana [%] zwykla mutacja q=0.8 q=0.999Zastosowania Mutacja
Rozkłady prawdopodobieństwa
1e−02 1e+00 1e+02 pr a wdopodobienstw o wyloso w ana [%] zwykla mutacja q=0.8 q=0.999Zastosowania Mutacja
Wyniki
Prawdopodobieństwo sukcesu (success rate) [%]:
Problem q ctrl 0.8 0.85 0.9 0.95 0.99 0.999 Sextic 80 79 83 80 79 78 81 Septic 37 33 33 31 32 24 32 Nonic 46 47 46 42 45 37 40 R1 3 3 4 4 4 3 4 R2 6 7 7 12 8 8 5 R3 18 21 22 22 18 15 20
Zastosowania Mutacja
Wyniki
Minimalna liczba osobników potrzebna do znalezienia idealnego rozwiązania z prawdopodobieństwem 99% (computational effort):
Problem q ctrl 0.8 0.85 0.9 0.95 0.99 0.999 Sextic 49629 52647 44919 50999 55365 54655 53611 Septic 395213 410476 466163 488859 506387 750395 475250 Nonic 291522 289768 262723 290758 265365 354466 378030 R1 3513140 2268111 5193086 4918395 2810512 9853360 8485079 R2 4215954 3282170 3011396 1940097 2237037 2574205 4536222
Zastosowania Krzyżowanie
Zastosowania
Krzyżowanie
Zastosowania Krzyżowanie
Zastosowania Krzyżowanie
Jak działa krzyżowanie
Zastosowania Krzyżowanie
Zastosowania Krzyżowanie
Krzyżowanie semantyczne
Uy et al. opisał dwie proste metody krzyżowania które wykorzystują informacje o semantykach poddrzew:
Semantic Aware Crossover (SAC) – zabrania wymiany poddrzew o takich samych (bardzo podobnych) semantykach co powodowałoby wygenerowanie potomków o semantykach identycznych z
semantykami rodziców
Semantic Similiarity-based Crossover (SSC) – zabraniaj wymiany poddrzew zarówno zbyt podobnych jak i zbyto różnych semantykach co powodowałoby wygenerowanie potomków bardzo podobnych lub zupełnie różnych od rodziców (metoda minimalizuje destrukcyjne działanie zwykłej mutacji)
Zastosowania Krzyżowanie
Zadania
Zadanie regresji symbolicznej:
F 1 = x3+ x2+ x F 2 = x4+ x3+ x2+ x F 3 = x5+ x4+ x3+ x2+ x F 4 = x6+ x5+ x4+ x3+ x2+ x F 5 = sin(x2)cos(x ) − 1 F 6 = sin(x ) + sin(x + x2) F 7 = log (x + 1) + log (x2+ 1) F 8 =√x
Zastosowania Krzyżowanie
Wyniki
Prawdopodobieństwo sukcesu: F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 SC 48 22 7 4 20 35 35 16 7 18 SAC2 53 25 7 4 17 32 25 13 4 4 SAC3 56 19 6 2 21 23 25 12 3 8 SAC4 53 17 11 1 20 23 29 14 3 8 SAC5 53 17 11 1 19 27 30 12 3 8 SSC8 66 28 22 10 48 56 59 21 25 47 SSC12 67 33 14 12 47 47 66 38 37 51 SSC16 55 39 20 11 46 44 67 29 30 59 SSC20 58 27 10 9 52 48 63 26 39 51Zastosowania Problemy pokrewne
Zastosowania
Zastosowania Problemy pokrewne
Idea
Mamy trudny problem dla GP którego ewolucja nie potrafi rozwiązać — co można zrobić?
Przekształć dany problem w inny tak aby był on potencjalnie prostszy (przez zmianę krajobrazu przystosowania na łatwiejszy do przeszukania dla GP)
Jak to zrobić (pół)automatycznie? — można wykorzystać funkcje (instrukcje) które są dane w definicji problemu
Zastosowania Problemy pokrewne
Problemy pokrewne
Oryginalny problem dany jest jako zbiór testów C0= {(xi, yi)}
Problem pokrewny dany jest jako zbiór testów Ct = {(xi, t(xi, yi))}
powstały z przekształcenia oryginalnego zbioru C0
Transformer t jest to wyrażenie zbudowane z tych samych funkcji (instrukcji) co dopuszczalne rozwiązania
Transformer powinien być odwracalny
x1 t(x1,y1) x1 y1 t(x,y) RELATED PROBLEM ORIGINAL PROBLEM TRANSFORMER
Zastosowania Problemy pokrewne
Problemy pokrewne - wykorzystanie
PROBLEM RELATEDPROBLEM
#1
...
EVOLUTION PROBLEM SOLUTION
#k
SOLUTION transformer #1 transformer #T inverter #k RELATED PROBLEM#T
Zastosowania Problemy pokrewne
Algorytm NA
Dla każdego problemu Ci przypisz osobną populacja Pi.
Utwórz nowe pokolenie osobników (przez krzyżowanie i mutację) w każdej populacji z osobna.
Dla każdej z populacji Pi wykonaj:
stwórz listę Ai składającą się ze wszystkich osobników
z pozostałych populacji Pj, j 6= i
oceń osobniki z listy Ai na problemie Ci
zastąp najgorsze α|Pi| osobników w populacji Pi najlepszymi
Zastosowania Problemy pokrewne
Eksperyment
Zadanie regresji symbolicznej: Sextic: x6− 2x4+ x2 Septic: x7− 2x6+ x5− x4+ x3− 2x2+ x Nonic: x9+ x8+ x7+ x6+ x5+ x4+ x3+ x2+ x R1: (x + 1)3/(x2− x + 1) R2: (x5− 3x3+ 1)/(x2+ 1) R3: (x6+ x5)/(x4+ x3+ x2+ x + 1) Zbiór siedmiu transformerów:
T = {x ∗ y , x /y , y /x , x + y , x − y , y − x , 1/y }
Zastosowania Problemy pokrewne
Problemy
−1.0 0.0 1.0 0.00 0.10 −1.0 0.0 1.0 −0.05 0.05 −1.0 0.0 1.0 −2000 0 2000 −1.0 0.0 1.0 −0.3 0.0 0.2 −1.0 0.0 1.0 −1.0 0.0 1. 0 −1.0 0.0 1.0 −1.0 0.0 1. 0 −1.0 0.0 1.0 −1.0 0.0 1. 0 −1.0 0.0 1.0 0 4000 1000 0 −1.0 0.0 1.0 −8 −4 0 −1.0 0.0 1.0 0 4 8 −1.0 0.0 1.0 0 400 800 −1.0 0.0 1.0 0 4 8 −1.0 0.0 1.0 −10 −6 −2 −1.0 0.0 1.0 0 2 4 6 8 −1.0 0.0 1.0 −8 −4 0 −1.0 0.0 1.0 0 500 −1.0 0.0 1.0 0 4 8 −1.0 0.0 1.0 0 2 4 6 8 −1.0 0.0 1.0 0.5 1. 0 1.5 −1.0 0.0 1.0 2 4 6 8 −1.0 0.0 1.0 −2 2 6 10 −1.0 0.0 1.0 −8 −4 0 −1.0 0.0 1.0 0 2 4 6 8 −1.0 0.0 1.0 −100 0 50 −1.0 0.0 1.0 0 2 4 6 8 −1.0 0.0 1.0 0 2 4 6 8 −1.0 0.0 1.0 −3000 000 −500000 −1.0 0.0 1.0 −100 0 50 −1.0 0.0 1.0 0 4 8 −1.0 0.0 1.0 −7 −5 −3 −1 −1.0 0.0 1.0 1 3 5 7 −1.0 0.0 1.0 0 150 0000 1. 5 Se xt ic Sep ti c No n ic R1Zastosowania Problemy pokrewne
Wyniki
GP1 GP8
NA.00 NA.01 NA.02 NA.03 NA.05 NA.10 NA.20 NA.25 NA.50 NA.75 NA.80 NA.90 NA.95 NA.98 NA.99 NA1.0
FR
Success ratio of Sextic
0
40
80
GP1 GP8
NA.00 NA.01 NA.02 NA.03 NA.05 NA.10 NA.20 NA.25 NA.50 NA.75 NA.80 NA.90 NA.95 NA.98 NA.99 NA1.0
FR
Success ratio of Septic
0 20 40 60 80 GP1 GP8
NA.00 NA.01 NA.02 NA.03 NA.05 NA.10 NA.20 NA.25 NA.50 NA.75 NA.80 NA.90 NA.95 NA.98 NA.99 NA1.0
FR
Success ratio of Nonic
0
40
80
GP1 GP8
NA.00 NA.01 NA.02 NA.03 NA.05 NA.10 NA.20 NA.25 NA.50 NA.75 NA.80 NA.90 NA.95 NA.98 NA.99 NA1.0
FR Success ratio of R1 0 10 20 30 40 GP1 GP8
NA.00 NA.01 NA.02 NA.03 NA.05 NA.10 NA.20 NA.25 NA.50 NA.75 NA.80 NA.90 NA.95 NA.98 NA.99 NA1.0
FR Success ratio of R2 0 5 15 25 GP1 GP8
NA.00 NA.01 NA.02 NA.03 NA.05 NA.10 NA.20 NA.25 NA.50 NA.75 NA.80 NA.90 NA.95 NA.98 NA.99 NA1.0
FR
Success ratio of R3
0
40
80
Zastosowania Problemy pokrewne
Wyniki
Częstość znalezienia idealnego rozwiązania w poszczególnych populacjach – wyniki uśrednione po wszystkich eksperymentach
NA i wszystkich wartościach α
Problem Transformer
y x*y x/y y/x x+y x-y y-x 1/y Sextic 36.7 19.9 2.1 34.2 4.6 5.8 3.6 2.1 Septic 25.4 9.9 1.4 21.3 14.0 14.6 12.1 0.7 Nonic 13.9 9.3 1.2 16.3 8.1 7.6 40.6 1.7 R1 13.0 9.0 32.1 4.9 1.5 2.5 2.1 33.7 R2 29.5 13.4 1.7 17.7 18.6 5.6 10.3 2.3
Podsumowanie
Podsumowanie
W podejściach semantycznych widać możliwość przezwyciężenia słabości GP:
trudności z mapowaniem genotyp – fenotyp
słabej skalowalności – GP zawodzi dla “dużych” problemów Plany na przyszłość:
opracowanie innych mechanizmów, np. generycznego tworzenia programów (np. semantic building blocks)
zbadanie “semantycznego GP” integrującego podejścia semantyczne na każdym etapie ewolucji