Genetické programování nad typovaným lambda kalkulem. Tomáš Křen

Podobné dokumenty
Typované funkcionální genetické programovaní

Genetické programování

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

ANALYTICKÉ PROGRAMOVÁNÍ

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Evoluční výpočetní techniky (EVT)

SPECIFICKÝCH MIKROPROGRAMOVÝCH ARCHITEKTUR

Formální jazyky a gramatiky Teorie programovacích jazyků

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Rekurentní rovnice, strukturální indukce

Geneticky vyvíjené strategie Egyptská hra SENET

Úvod do kvantového počítání

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Rekurentní rovnice, strukturální indukce

Výroková a predikátová logika - II

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na:

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Funkcionální programování. Kristýna Kaslová

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Výroková a predikátová logika - V

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Výroková a predikátová logika - VI

Výroková a predikátová logika - II

Typed Functional Genetic Programming

Věta 12.3 : Věta 12.4 (princip superpozice) : [MA1-18:P12.7] rovnice typu y (n) + p n 1 (x)y (n 1) p 1 (x)y + p 0 (x)y = q(x) (6)

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

1. Úvod do genetických algoritmů (GA)

Výroková a predikátová logika - II

Lineární algebra : Polynomy

Interpolace, ortogonální polynomy, Gaussova kvadratura

Stromy, haldy, prioritní fronty

Základní datové struktury III: Stromy, haldy

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Substituce. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 2 1

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

2 Zpracování naměřených dat. 2.1 Gaussův zákon chyb. 2.2 Náhodná veličina a její rozdělení

Rekurzivní algoritmy

Úvod do optimalizace, metody hladké optimalizace

Výroková logika syntaxe a sémantika

Symbolická regrese: Jak získat kvalitní a

Výroková a predikátová logika - X

Pravděpodobně skoro správné. PAC učení 1

Martin Milata, Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od

Grammar-based genetic programming

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

Strukturální rozpoznávání

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Další (neklasické) logiky. Jiří Velebil: AD0B01LGR 2015 Predikátová logika 1/20

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Binární vyhledávací stromy pokročilé partie

Genetické algoritmy. Informační a komunikační technologie ve zdravotnictví

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Vztah jazyků Chomskeho hierarchie a jazyků TS

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Genetické programování 3. část

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Matematická logika. Rostislav Horčík. horcik

Rezoluční kalkulus pro logiku prvního řádu

Logika a logické programování

Integrace relačních a grafových databází funkcionálně

Algoritmy a datové struktury

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Organizace. Zápočet: test týden semestru (pátek) bodů souhrnný test (1 pokus) Zkouška: písemná část ( 50 bodů), ústní část

Hardy-Weinbergův zákon - cvičení

Markovovy modely v Bioinformatice

ALGORITMIZACE A PROGRAMOVÁNÍ

Jednoznačné a nejednoznačné gramatiky

Výroková a predikátová logika - III

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

NÁHODNÉ VELIČINY JAK SE NÁHODNÁ ČÍSLA PŘEVEDOU NA HODNOTY NÁHODNÝCH VELIČIN?

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

Gramatická evoluce a softwarový projekt AGE

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

Fuzzy množiny, Fuzzy inference system. Libor Žák

Kapitola 11: Lineární diferenciální rovnice 1/15

Úvod do lineární algebry

Náhodné jevy. Teorie pravděpodobnosti. Náhodné jevy. Operace s náhodnými jevy

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

EUKLIDOVSKÉ PROSTORY

A0M33EOA: Evoluční optimalizační algoritmy

INTERNETOVÉ ZKOUŠKY NANEČISTO - VŠE: UKÁZKOVÁ PRÁCE

Deskripční logika. Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Deskripční logika 37 / 157

Množiny, relace, zobrazení

Jak se matematika poučila v biologii

Tableaux metody. Jiří Vyskočil 2011


1 REZOLUČNÍ FORMÁLNÍ DŮKAZY

Stavební fakulta Katedra mechaniky. Jaroslav Kruis, Petr Štemberk

postaveny výhradně na syntaktické bázi: jazyk logiky neinterpretujeme, provádíme s ním pouze syntaktické manipulace důkazy

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Výroková a predikátová logika - IX

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

Masarykova univerzita. Fakulta informatiky. Evoluce pohybu

Dynamické datové struktury III.

Predikátová logika dokončení

+ n( 1)n+1 (x 7) n, poloměr konvergence 6. 3.Poloměr konvergence je vždy +. a) f(x) = x n. (x 7) n, h(x) = 7 + 7(n+1)( 1) n. ( 1)n

Naproti tomu gramatika je vlastně soupis pravidel, jak

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Transkript:

Genetické programování nad typovaným lambda kalkulem Tomáš Křen

Co je to Genetické programování? Metoda AI inspirovaná biologickou evolucí umožňující k zadanému problému vygenerovat program, který nějak řeší tento problém. Autor GP : John Koza (1992 bible GP) Hlavní vstupy : Fitness funkce mn. stavebních bloků Vedlejší (číselné) vstupy : Počet generací a jedinců Pravděpodobnosti křížení, mutace, reprodukce Parametry, které nemusíme moc měnit napříč problémy : Metody generování, křížení, mutace či selekce jedinců

Jak funguje GP? Množina stavebních bloků Alg. Generování jedinců Populace 0 Fitness funkce Pr Reprodukce Populace t Selekce Pc Křížení Populace t+1 Pm Mutace

Jak vypadá jedinec? Jedinec je syntaktický strom programu. Nelistové uzly jsou jména funkcí. (mn. F) Listové uzly jsou jména proměnných, konstanant, nebo konkrétních hodnot (mn. T = Terminály) Mn. stavebních bloků Γ = T F + + pi * * function(x,y){ return 6*x*x+(2+3)*x*y+pi ;} 6 + * * x x 2 3 x y

Omezení jedince v klasickém GP T a F musejí být nad jediným typem: Všechny prvky T jsou toho samého typu A (např. Int) Všechny funkce mají typ tvaru A A... A A Tzn. mohou mít rúzné počty vstupů, ale všechny jsou typu A Výstup je typu A

Jak se generuje počáteční populace? Koza : Ramped half-and-half Nejdřív si hodíme mincí zda tento strom bude full nebo ne Pak si hodíme kostkou čímž určíme max. hloubku stromu (tzn. Z {1,..,6}) Do kořene (hloubka 0) stromu dáme náhodný prvek z mn. F Pokud jsme už v maximální hloubce, dám tam něco z mn. T Pro prostřední hloubky: Pokud je tento strom full : přidej náhodný prvek z F Jinak : přidej náhodný prvek z T F

Jak se kříží? V obou stromech (rodičích) vybereme náhodně libovolný uzel a podstromy s těmito uzly jako kořeny prohodíme. Táta Dcera Máma Syn

Jak se mutuje? (Koza ani nemutuje.) Náhodně vybereme uzel stromu a následně z Γ vybereme jiný uzel se stejným typem (tzn. se stejnou aritou), kterým vybraný uzel nahradíme.

Apikace GP Hlavním cílem Kozovy první knihy (alespoň si myslím) je ukázat, jak moc rozličná škála problémů se dá řešit, zadáním prakticky jen fitness funkce a množiny stavebních bloků. Jsou zde ukázány problémy sice jednoduché, ale opravdu rozličné. Optimlal control strategy (hledání strategie vyrovnávání různých vozíků) Planning ( např navádění mravence s minimálním výhledem po šachovnici s jídlem) Symbolic regression Discovering game-playing strategies Emperical discovery and forcasting (např. Keplerovo 3. pravidlo, nebo nějaký ekonomický vzorec) Symbolic integration and differentiation Induction of decision trees Hraní pac-mana...

36 Human-Competitive Results Produced by Genetic Programming http://www.genetic-programming.com/humancompetitive.html These human-competitive results include 15 instances where genetic programming has created an entity that either infringes or duplicates the functionality of a previously patented 20th-century invention, 6 instances where genetic programming has done the same with respect to a 21stcentry invention, and 2 instances where genetic programming has created a patentable new invention. These human-competitive results come from the fields of : computational molecular biology, cellular automata, sorting networks, and the synthesis of the design of both the topology and component sizing for complex structures, such as analog electrical circuits, controllers, and antenna.

Nám se nelíbí omezení jediného typu Abychom to vyřešili hezky obecně, zavoláme si na pomoc lambda kalkul. Ten nám následně umožní zvolit si Γ libovolně.

Lambda kalkulus : nejjednoduší prog. jazyk na světě Programu se v lambda kalkulu říká term. Term můžeme dostat 3 způsoby: (Nechť je x nějaký řetězec písmen.) x je term. (= proměnná (nebo konstanta)) Pokud M je term (λx.m) je term. (= λ abstrakce ) Pokud M a N jsou termy (M N) je term (= aplikace funkce) function(x){return M;} M(N)

Syntaktický cukr Místo λx.(λy.m) můžeme psát λx y.m Místo ((f x) y) můžeme psát f x y z function(x,y){return M;} f(x,y,z)

Příklady lambda termů λ x. x λ x y. x λ x y z. x z (y z) Zase můžeme termy chápat jako stromy: λx λy λx x λx λy x λz @ @ @ x z y z

Jak probíhá výpočet lamda programu Výpočet můžeme chápat jako sérii redukcí (6*7)+8 42+8 50 Každou redukci můžeme chápat jako použití redukčního pravidla V lambda kalkulu je jediné redukční pravidlo β : (λx.m)n M[x:=N] Tzn: pokud má náš term podterm tvaru (λx.m)n, můžeme ho nahradit za term M ve kterém nahradíme všechny výskyty proměnné x za N. Tzn např: (λx.x x)(λy.y) (λy.y)(λy.y) (λy.y) Pokud term neobsahuje již žádný redukovatelný podterm, říkáme že je v Normální Formě a chápeme ho jako výsledek.

Program a jeho Typ Na program a jeho typ se dá koukat různě. Např těmito 3 způsoby: Program Typ Typ je informace o Programu Program je důkazem Typu jakožto tvrzení (Curry-Howardova korespondence)

Typ Obdobně jako pro lambda term můžeme induktivně definovat co je to typ: (Nechť α je nějaký textový řetězec) α je typ. (=atomický typ) Pokud A a B jsou typy, (=typ funkce z A do B) pak (A B) je typ.

Γ M:A Teorie typovaného λ kalkulu nám umožňuje odvozovat tvrzení následujícího tvaru: Γ M:A Kde: Γ je báze (nebo také kontext) : Mn. dvojic (proměnná,typ) Odopvídá náší množině stavebních prvků z GP. M je lambda term. A je typ. Čteme to: Z báze Γ můžeme odvodit, že M je typu A.

3 odovozovací pravidla

Generování lambda termů Nám při generování termů jde o něco trochu jiného, než produkovat tvrzení tvaru Γ M:A. My chceme pro zadané Γ a A (tzn. mn. stavebních prvků a typ generovaného programu) vygenerovat takové M aby platilo: Γ M:A

Z odvozovacích pravidel gramatiku Řekl jsem si, že by se hodilo vzít naše odvozovacích pravidla, a jen je přeformulovat na přepisovací pravidla gramatiky :

Výhody a nevýhody tohoto generování Výhoda: Jednoduše se tam přidávají nové typové konstrukty (kartézský součin atd.), protože typové konstrukty mají k sobě definovaná odvozovací pravidla, která lze lehce převést na ta gramatická. Nevýhoda: Generované programy nemusí být v normální formě.

Trochu jinak V knize od Barendregt z roku 2010 [http://www.cs.ru.nl/~henk/book.pdf] je něco co se dá přepsat v té mé notaci jako: A na základě těchto dvou pravidel následně popisuje koncept Inhabitation Machine.

Co je to Inhabitation Machine? Je to graf, který ma krom klasických hran ještě navíc vidličkovité hrany. A B A λx α f B B Vrcholy odpovídají typům, hrany odpovídají kusům kódu, které dáme na výstup. Začínáme ve vrcholu odpovídajícím typu generovaného programu. C (f:a B C α)

Příklad IM Γ = { foldr : (B B B) B Bs B, True:B, not:b B, xor:b B B, head':b Bs B, tail': Bs Bs } A = Bs B

Jak křížit? Problém: Volné proměnné! 2 řešení: Vymyslet řešení počítající s proměnnými Zbavit se proměnných

SKI Libovolný term s proměnnými lze převést na term bez proměnných pomocí kombinátorů S,K a I. S = λ x y z. x z (y z) K = λ x y. x I = λ x. x ( Přičemž ale I = S K K )

Jak probíhá převod T(x) = x (x proměnná) T( M N) = T(M) T(N) T(λ x. M) = K T(M) (x není v M volně) T(λ x. x) = I T(λ x y. M) = T(λ x. T(λ y. M) ) T( λ x. (M N) ) = S T(λ x. M) T(λ x. N)

Mámeli například několik řešení různě relaxovaných problémů napsaných člověkem,mohli bychom tyto programy nějakým automatickým způsobem rozpadnout na stavební bloky a ty pak skusit šlechtit. Na co to jde použít? Díky tomu, že je to rozšíření/zobecnění GP tak na všechny předchozí aplikace, nyní však s možností pohodlně používat libovolnou sadu stavebních bloků. Dobrodružnější aplikace: Univerzální sada stavebních bloků Můžeme se snažit o to, spojovat stavební sady pro různé problémy, tak aby GP stále našlo dobré řešení. Zlatý grál by pak byla univerzální sada stavebních bloků Šlechtění fitness funkcí: Ať už pro problém, kde je přirozená ff nevhodná. Nebo při šlechtění kritiků - např v computer generated art Šlechtění samotných střev GP algoritmu. Implementaci píšu v Haskellu a generované programy jsou také v Haskellu. Metoda: rozpadni známé řešení a skus vymyslet lepší.