neurális programindukció és programszintézisberenyi/lectures2018/nnprogind.pdf · program...

51
GPU Lab D. Berényi Modern Tudományos Programozás Wigner FK 20 November 2018 Neurális programindukció és programszintézis

Upload: others

Post on 02-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Modern Tudományos ProgramozásWigner FK

20 November 2018

Neurális programindukció és programszintézis

Page 2: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Motiváció

A neurális hálózatok alpajaiknál fogva nem képesek arra, hogy egzakt szabályokat figyelembe vegyenek

Ellenben nagyon jól tanulnak példákból.

Kérdés, lehet-e mégis olyan rendszerek építőköveikénthasználni őket, ahol vannak jól definiált szabályszerűségek, amiket tiszteletben kell tartani, ugyanakkor szükség van a tanulási és flexibilitási tulajdonságaikra.

Page 3: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Motiváció

Konkrét példa:

Szeretnénk programokat előállítani.

A programkód egy ASCII szövegfájl, ha elég sok létező kódon betanítunk pl.

egy RNN-t, akkor generálhatunk új kódokat

Példa: link

Kérdés:

Ki garantálja, hogy a szöveg értelmes kód?

Hogy lefordul-e?

Hogy értelmes dolgot csinál-e?

Page 4: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Motiváció

Példa: linkBetanítunk egy hálót a Linux forráskódján (474 MB)

Kérdés:Ki garantálja, hogy a szöveg értelmes kód?

Hogy lefordul-e?

Hogy értelmes dolgot csinál-e?

/** Increment the size file of the new incorrect UI_FILTER group information* of the size generatively.*/static int indicate_policy(void){int error;if (fd == MARN_EPT) {if (ss->segment < mem_total)unblock_graph_and_set_blocked();

elseret = 1;

goto bail;}for (i = 0; i < blocks; i++) {seq = buf[i++];bpf = bd->bd.next + i * search;if (fd) { current = blocked; }

}rw->name = "Getjbbregs";regs->new = blocks[(BPF_STATS << info->historidac)];return segtable;

}

Page 5: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Motiváció

Mit nyernénk, ha lenne egy ilyen rendszer?

Sokszor könnyebb egy programra elvárt működési példákat és megkötéseket mondani, mint teljes specifikációt

Ha ez működik, akkor akár a programírást is automatizálni lehet...

Page 6: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Különbségek a Deep Learninghez képest

Az egyik legfontosabb eltérés a Deep Learninghez képest,hogy itt az állapot tér nem folytonos.

Ennek messzemenő következményei vannak:az általánosítás nem simán „interpoláció”

Nyelvfeldolgozásban működik a beágyazás, de ilyen esetekben kevésbé:túl kicsi a probléma dimenziója.A konnekcionista megközelítés nem működik.

Sok szimbolikus feladat általában nem differenciálhatóak,a tanítás is nehéz...

Page 7: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Fogalmak

Programszintézis során konkrétan előállítunk egy programot egy adott nyelven

Programindukció során a program implicit marad a rendszerben, ami előállítja, csak futtatni tudjuk különböző bemenetekre, és kapunk kimeneteket

Page 8: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Fogalmak

Programszintézis:

• Ezt nehezebb megcsinálni, de a végeredmény könnyebben interpretálható, vizsgálható

Programindukció:

• Ezt könnyebb megvalósítani, de nehezen vizsgálható, pl. helyesség, garanciák szempontjából

Page 9: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Szimbolikus megközelítés

A nyelv építőkockáiból komponálunk össze programokat, és nézzük, hogy az elvárt bemenet-kimenet párokat és egyéb kényszereket teljesítik-e.

Legtöbbször valamilyen leszűkített

program téren teljes keresést hajtanak

végre.

Pl.: SMT megoldók

(Satisfiability Modulo Theories)amik alatt nyelv specifikus megoldók (pl. SAT solverek,

lineáris aritmetiksi solverek, stb. dolgoznak)

Page 10: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

A rekurrens hálózatokat sok féle képpen próbálták alkalmazni ezekre a problémákra.

Az elképzelés alapja, hogy a belső memóriában felépíthet a modell akár hosszú távú összefüggéseket is a feladatról.

Page 11: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

Kérdés: hogy igazodik el a rendszer, hogy mikor, mi a fontos, releváns információ a memóriából?

„Attention” (link):a bemenet, memória melyik része mennyire fontos az adott kimenet előállításához, ezt lépésről lépésre építi fel (2 féle módszer).

Page 12: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

Kérdés: hogy igazodik el a rendszer, hogy mikor, mi a fontos, releváns információ a memóriából?

Ptr-Net megközelítés (link):a bemenet elemei felett egy valószínűségi eloszlást vesz fel a rendszer, miután a teljes bemenetet látta.

Page 13: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

Kérdés: hogy igazodik el a rendszer, hogy mikor, mi a fontos, releváns információ a memóriából?

Több megközelítés is külső memória használatát vizsgálja

• Neural Turing Machine (link)

• Differentiable Neural Computer (link)

A közös bennük, hogy az RNN csak vezérlő, írási-olvasási utasításokat ad a memória felé, de nehezen taníthatóak.

Igazából ezek Turing Teljes modellek.

Page 14: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

Mindkettő csak kb. ugyan akkora méretű adatok feldolgozására működik, mint amennyi a bemenet volt (sokkal nagyobbra nem), azaz limitált az általánosítás.

Page 15: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

• Neural Programmer (link)

• Neural RAM (link)

Az RNN nem csak írás-olvasási parancsokat ad a memóriának, hanem választhat (softmax, tanulható súlyokkal) néhány alapművelet közül, amelyeket komponálhat, akár sokszor is.

Az RNN maga döntheti el,mikor állítsa le a futást,a bemenet méretétől függetlenül.

A programlogika az RNN belső állapotábanvan reprezentálva

Page 16: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

• Neural Programmer-Interpreter (link)

Itt már függvény hívások is léteznek (ilyenkor az RNN vezérlő belső állapota nullázódik), a hívó oldalról kap bemenetet. Visszatéréskor az előző belső állapot visszaállítódik.

Itt információ beágyazása (reprezentációja)az egyes függvények szintjén is történik, nem csak az RNN vezérlő belső állapotában.

Hátránya, hogy a tanításhoz teljes stack-traceket használtak, amik ritkán állnak rendelkezésre.

Page 17: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

• Neural Program Lattices (link)

Az előző nehézkes tanítását próbálja ellensúlyozni: ennek a tanításához nem kellenek stack-trace-k.

Itt a tanítás elemi utasítások sorozata,és a rendszer maga tanulja megfüggvényekbe szervezni őket.

Ezzel az NPI szintje elérhető.

Page 18: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

Milyen feladatokat tudnak ezek a rendszerek megoldani?

• Alap aritmetikapl.: összeadás

• Lista műveletek [kis elemszámra ~<50]pl.: másolás, permutálás, megfordítás

• ebből a rendezés a legizgalmasabb,milyen eljárást választ a rendszer?

• Kombinatorikus optimalizációpl.: legrövidebb út, utazó ügynök probléma kis méretű gráfokon

• Szemantikus lekérdezések értelmezése természetes nyelvi kérdésekből, és megvalósításuk

Page 19: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

Néhány trükk, amivel próbálkoztak a kutatók:

• Az „attention” struktúrálása(nem csak egyes elemek, hanem csoportok között is)

• Memória hierarchikus szervezése

• Rekurzió megvalósítása (link), bizonyítható helyesség

• Mohó algoritmusok – részleges megoldások kezelése,pl. reinforcement learning-el.

Page 20: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

• Rekurzió megvalósítása (link), általánosítás!

Page 21: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Rekurrens megközelítés

• A rekurrens megközelítések jelenlegi legnagyobb problémájának az általánosítás mértéke tűnik.

• Sokszor a tanítottnál nagyobb problémákra nem működik megfelelően a rendszer

Page 22: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Page 23: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

FlashFill (link)

Microsoft Excel:string manipulációs kifejezések szintetizálása példák alapján

(Megtámogatva sok heurisztikával…)

Page 24: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

• FlashExtract (link)Kevés példa alapján mezők kiválasztása szövegből, táblázatból, weboldalról.

• FlashMeta (link)Megpróbálja a példákból levezetni algebrailag, hogy milyen művelet eredményeként állhattak elő, így nagyon hatékonyan meg lehet mondani, milyen műveletek, milyen sorrendben kellenek a szintézis során

Linkek:

Video

paper

Eredmény:

30 perc python fejlesztés helyett 30 másodperc szintézis

(911 hívások nyers text adatából mezők kigyűjtése)

Page 25: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

A FlashFill továbbfejlesztései a

• RobustFill (link)• Mi van, ha elgépelések vannak a példákban?

• Neuro-Symbolic Program Synthesis (R3NN)(link)• Absztrakt Szintaxis Fa (AST) reprezentáció

• Abstract Syntax Networks (link)• Általános célú programozási nyelvre kódszintézis, kölcsönösen

rekurzív modulokkal megvalósítva

Page 26: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Neurális program nem-differenciálható gépen (link)

• Reinforcement learning alapú tanítás

• Cél: parser létrehozása: szövegből AST-be, úgy, hogy nem ismerjük a nyelvet.

• Az RNN rész a Parser gépen végrehajtandó utasításokat próbálja meg megtanulni, megjósolni

Eredmények: meg tud tanulni olyan

parsereket, amik komplexitása ekvivalens

50-100 sor python kóddal és sokkal

nagyobb bemenetekre is működnek, mint

amin tanították őket.

Page 27: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

DeepCoder (link)

• Megpróbál olyan szintű programozási feladatokat megoldani, mint a programozási versenyeken a legegyszerűbbek

• Három összetevő• Megfelelő DSL (Domain Specific Language)• Keresési technikák: hogyan szűrjünk a program-jelöltek között?• Rangsorolás: ha több megoldás is van, mi alapján választunk

• A leglényegesebb probléma:• Ha egyszerű a DSL és/vagy kevés megkötés van,

akkor át lehet képezni egy SMT megoldóra• Ellenben ha túl tág a DSL és/vagy túl sok a megkötés, egyszerűbb

lehet teljes enumerációt csinálni

Page 28: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

DeepCoder (link)

A rendszer „neurális” része azért felelős, hogy amikor a szintézis során meg akarjuk

jósolni, ki akarjuk terjeszteni a függvények terét, akkor melyik függvényt próbáljuk

meg alkalmazni a példák információi alapján.

Page 29: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

DeepCoder (link)

Nyelvtan:

• Alapműveletek számokon (pl.: (+1), (*3), (>0), (%2==0))

• Lista műveletek(head, last, take, drop, access, reverse, sort, min, max, sum)

• Magasabb rendű függvények(map, filter, count, zipWith, Scanl)

Page 30: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

DeepCoder (link)

Érdemes megfigyelni, hogy a neurális hálóval támogatott Depth First Search (DFS) és

Enumeráció a leggyorsabb

Page 31: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Reprezentatív példák kiválasztásának problémája (link)

• Az SMT alapú megoldók kevés példára jól működnek, de túl sok példa nagyon lelassítja őket.• Melyik példákat válasszuk ki?

Page 32: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Differentiable Inductive Logic

Logic Programming:if-then szabályok: 𝑏 ← 𝑎1…𝑎𝑛, ha 𝑎1…𝑎𝑛 kifejezések igazak, akkor 𝑏 is igaz.

Kifejezések: n-áris predikátumok 𝑝(𝑡1…𝑡𝑛)

„ground rule”: ha már minden változót konstansokra redukáltunk egy if-then szabályban.

Egy Inductive Logic Programming feladat 3 elemből áll:B: „ground rule”-k halmaza

P: pozitív példák, amiket a megtanulandó programnak meg kell jósolnia

N: negatív példák, amiket a megtanulandó programnak ki kell zárnia

32

Előadás

Page 33: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Differentiable Inductive Logic

A megoldás egy if-then ítélet halmaz.

Ez nem triviális: rekurzió is kell,és új predikátumot kell konstruálni

Ez átalakítható egy SAT problémára.Nyelvi keret: (a megtanulandó intenzionális predikátum, extenzionális predikátumok, aritások, konstansok)

ILP Nyelvtan:szabály sablon: egzisztenciális változók száma, lehet-e intenzionális predikátum az ítéletben?

Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási limit

33

Page 34: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Differentiable Inductive Logic

Ha az igaz hamis értékeket átalakítjuk az [0, 1]intervallumra és minden műveletet folytonossal helyettesítünk, akkor a gradiens módszerrel lehet optimalizálni.

„ground rule”-ok halmazából [0, 1]^n vektor lesz, minden if-then clause súlyt kap (mátrix a 2 template irányában: mennyire valószínű, hogy az adott clause pár jól definiálja a predikátumot).

A megfelelő költségfüggvénnyel egy bináris osztályozót tanítunk, ami a megfelelő igaz-hamis címkét adja a tanító halmazon.

34

Példa: fizzbuzz megoldása külön a fizzből, majd külön a

buzzból összerakva

Page 35: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Differentiable Inductive Logic

35

Page 36: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Differentiable Inductive Logic

A rendszer egyik előnye, hogy rosszul cimkézett adaton sem romlik el azonnal!

36

Page 37: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Question Asking as Program Generation

Torpedó játék:3 hajó ismeretlen méretűek és pozíciójúak.

Ha pár lépést tett a játék, fel lehet tenni egytetszőleges kérdést, aminek eredménye: bool | size | color | location

Egyszerű nyelvtan: színek, méretek, =, <, >, lambda, map, setKöltség függvény: 𝐸 𝑥 = σ𝑖 𝜃𝑖𝑓𝑖(𝑥), ahol x a kérdés, f egy tulajdonság.

A kérdés valószínűsége: 𝑝 𝑥; 𝜃 =𝑒−𝐸 𝑥

σ𝑥∈𝑋 𝑒−𝐸 𝑥

Tulajdonságok: információ tartalom (mennyi információt nyer a kérdéssel az adott szituációban), rövidség (ne legyen helyiérték kódolás), és hogy hivatkozik-e a táblára☺

37

Page 38: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Question Asking as Program Generation

Torpedó játék:

• Tanítás: emberi játékosok kérdéseinek jóslása

• Új kérdések generálása!

38

Page 39: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Problémák

Tanítási adatok:

• Példa feladatok és megvalósításukból nem állnak rendelkezésre nagy adatbázisok

• A végső rendszer teljesítménye új, nem látott feladatokon nagyon függ az adatok minőségétől

• Vagy nagyon sok bemenet-kimenet párt kell mutatnunk

Page 40: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Időrend

Forrás: link

Page 41: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Alternatív alkalmazások

Program hiányzó paramétereinek jóslása (link)

Programhibákra javítások jóslása (link)

Programok tesztelése (Fuzzing), de hogyan érdemes random bemeneteket előállítani? (link) (use-case: az Edge böngésző PDF parsere)

Hasonló, csak byte szinten (link)

Programnyelvek közötti fordítás, kihasználva a nyelvtant (link)

Page 42: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Alternatív alkalmazások

Grafikai kifejezések inferálása kézzel rajzolt képekből (link)

• Nyelv LaTeX részhalmaza

• DSLKézi:

Inferált LaTeX:Nyelvtan:

Page 43: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Alternatív alkalmazások

Grafikai kifejezések inferálása kézzel rajzolt képekből (link)

Page 44: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Alternatív alkalmazások

Képek előállítása programmal (link)

Ha van egy DSL-ünk a grafikai műveletekre, azt is tudjuk adott célra betanítani

Linkek:

Video

Cikk

Nem differenciálható

elem!

GAN rendszer: Az ágens zajt, vagy képet kap benetül és képet állít elő egy DSL-en keresztül. A diszkriminátornak el kell döntenie, hogy a kép generált, vagy nem. Nincs címkézés, az ágens tanítása reinforcement alapú: jutalomként a diszkriminátor kimenetét kapja meg.

Page 45: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Alternatív alkalmazások

Page 46: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Programszintézis

Összefoglalva az látszik körvonalazódni, hogy új eszközeink vannak születőben programok (formális rendszerekben felírt

kifejezések) előállítására és manipulációjára:

• A programokat felbontjuk egyszerű DSL primitívekre

• A keresési módszereket gyorsítjuk neurális hálókkal (heurisztika)

• Rangsorolunk (kimenetek tulajdonságai, komplexitás alapján)

Page 47: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Kitekintés

• Curry-Howard korrespondencia

• A programszintézis egyben bizonyításszintézis is

Logika Programozás

Tétel Típus

Bizonyítás Típusellenőrzés (fordítás)

Implikáció Függvény típus

És-kapcsolat Szorzat típus (~tuple, struct)

Vagy-kapcsolat Összegtípus

Igaz Egység típus

Hamis „Bottom” típus (nincs példánya)

Page 48: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Kitekintés

Interaktív bizonyítás segédek (mint pl. Coq)

Taktikák alapján végeznek bizonyításokat, interaktívan: a felhasználó választja ki, hogy hogyan bontja fel a problémát, milyen taktikákat alkalmaz, esetleg új, vagy speciális taktikákat ír.

• Reflektivitás (𝑥 = 𝑥)

• Alkalmazás (implikációs hipotézisek láncolása:

• Behelyesttesítés (szubsztitúció)

• Átírás (pl.: 𝑓 𝑥 = 𝑓 𝑦 ∧ 𝑓 𝑦 = 𝑓 𝑧 → 𝑓 𝑥 = 𝑓 𝑧)

• Egyszerűsítés

• Vágás (átmeneti hipotézis beszúrása)

• Inverzió (hipotézis extra előfeltételeinek felfedése)

• Indukció

Coq taktikák: linkLemma modus_ponens:forall p q : Prop, (p -> q) -> p -> q.Proof.intros.apply H.assumption.Qed.1 subgoalp : Propq : PropH : p -> qH0 : p------------------q

Page 49: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Kitekintés

• GamePad (link)• Coq-hoz taktika jósló rendszer

neurális alapokon

Page 50: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Kitekintés

• Lehetséges-e kitalálni, megjósolni, hogy mik lehetnek az érdekes tételek?

Page 51: Neurális programindukció és programszintézisberenyi/Lectures2018/NNProgInd.pdf · Program sablon: segéd predikátumok, aritások, predikátumok szabály sablonai (2 db), láncolási

GPU Lab

D. Berényi

Irodalom:

• Recent Advances in Neural Program Synthesis

• NAMPI (2018)