1 / 18

Střední hra v go na 9x9

Střední hra v go na 9x9. Zápočtový projekt z Neuronových sítí Tomáš Kozelek & Dominik Fran ěk. Co je go?. Nejstarší a nejsložitější desková hra Pochází z Číny, cca 4000 let stará Hraje se na desce 19x19, tj. 361 polí Stupeň komplexnosti 36 ( šachy 20 ) Populárnější než šachy

Download Presentation

Střední hra v go na 9x9

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Střední hra v go na 9x9 Zápočtový projekt z Neuronových sítí Tomáš Kozelek & Dominik Franěk

  2. Co je go? • Nejstarší a nejsložitější desková hra • Pochází z Číny, cca 4000 let stará • Hraje se na desce 19x19, tj. 361 polí • Stupeň komplexnosti 36 ( šachy 20 ) • Populárnější než šachy • Zatím naprosto mimo možnosti počítačů • Obrovský stavový prostor – nejde propočítat • Vyžaduje velkou kreativitu – v tom se AI člověku zdaleka nevyrovná • Nejlepší program cca stupeň 12 (8. kyu)

  3. Pravidla go • Jednoduchá pravidla • Efektivita vs. riziko

  4. Rozehraná hra Konec Ukázka partie

  5. Jak může hrát počítač go? • Hru je nutné rozložit na části a každou řešit jiným přístupem • Konvenčně • Joseki (zahajovací sekvence v rozích) • Databáze tvarů • Život skupin • AI • Rozeznání tvarů • Propojení skupin • Určení vlivu a směru hry • Rozeznání kritických oblastí

  6. Vliv v programu TurboGo

  7. Co jsme zavrhli • Síť se bude učit jen pozice->tah • Ukáže x nejlepších tahů • Složitá chybová funkce • Ohodnotí každé pole „zajímavostí“ pro tah • Šlo by to taky • S předzpracováním vstupu • Bude umět odůvodnit své tahy • Vyžaduje ruční zpracování

  8. Co jsme zvolili a proč • Učení sítě na některou z podůloh by vyžadovalo velmi složité předzpracování dat • Vyzkoušeli jsme nejjednodušší přístup - pozice -> tah v rozmezí 8.-12. tahu (pozice je dostatečně jednoduchá)

  9. První úvahy • Výhody • NN je ideální na rozeznávání tvarů • Měla by být schopná hrát zajímavé tahy i bez znalosti pravidel • Nevýhody • Síť netuší co je živá skupina • V partii je víc dobrých tahů, uvidí jen jeden

  10. Co jsme očekávali • Pozitivní • Dobré navrhované tahy • Poměrně snadné hodnocení • Obavy • Bude hrát pořád do středu – průměr tahů • Stalo se při malém počtu skrytých neuronů (30-30) • Příliš velká síť – 9x9 vstupů + skryté n. • Síť navrhne dobrý tah, ale jiný než byl v partii, což se pozná jen ručně

  11. Vstupní partie • partie ve formátu SGF ( zápis partie ) • přibližně 1600 partií pokročilých hráčů ( věnují se hře několik let ) ze serveru Little Golem • problém s ,,ortogonalitou“ partií - ve velmi podobných ( příp. stejných pozicích ) hráli různí hráči ( strategicky ) různé tahy • příklad partie ve formátu sgf: • (;FF[4]PB[tasuki]PW[Xaver]KM[5.5]SZ[9]B[ee];W[ff];B[ef];W[fe];B[fd];W[gd];B[gc];W[ed];B[fc];W[dd];B[fg];W[gg];B[eg])

  12. Preprocesing • Bash script/awk • simulace jednotlivých tahů dle pravidel Go • zmenšení pozice z 9x9 na 7x7 odstraněním 1. linky ( v zahájení a střední hře nepodstatná ) • transformace pozice do řetězce 0, 1, -1 • odstranění redundantních a neplatných pozic • výstup: matice pozic a odp. matice správných tahů • výsledek preprocesingu pro 1 partii: • 3 7;0000000010000-11000100000000000-1-10001-100 100-100000

  13. Algoritmus • Rozdělení vstupů • asi 7000 pozic rozděleno na učící (7/10) a testovací množinu • Učení na různých architekturách vrstevnatých sítí • varianty algoritmu Back Propagation • výstup sítě je souřadnice doporučeného tahu • Testování • definované ohodnocení výstupu sítě ( ,,pošťácká metrika“ ) umožňuje statistické určení úspěšnost • rychlé ohodnocení, ale vůči ,,lidskému posouzení“ nepřesné ( dobré tahy v jiné části desky nežli tah v partii jsou ohodnoceny špatně )

  14. Ohodnocení doporučeného tahu • neplatné tahy • mimo desku, na obsazenou pozici ~ 0 b. • ohodnocení platných tahů pošťáckou metrikou • správný tah ~ 5 b., vzdálenost 1 ~ 4 b., … vzdálenost >= 5 ~ 0 b. • úspěšnost sítě • získaných bodů / možných bodů • ( vyjádřeno v procentech )

  15. Architektury použité VNS • Vyzkoušeno 6 různých architektur • algoritmy učení: trainlm (mnoho paměti), trainrp (rychlý ale potřebuje stovky epoch) • dvou až čtyř vrstevné sítě • různé parametry učení, různé cíle • příklady: • [50,40,2], {tansig, tansig, purelin}, trainlm, l=0.05, g=0.07 • [30,30,15,2], {tansig, tansig, tansig, purelin}, trainrp, l=0.03, g=0.05

  16. Statistické výsledkyI • Úspěšnost • velmi podobné výsledky všech architektur • díky použití učícího algoritmu trainrp ( pomalejší konvergence, ale menší paměťové nároky než trainlm ) dosažení horších hodnot MSE (okolo 0.5) nežbylypožadovanéhodnoty (okolo 0.01 – 0.05) • 95% úspěšnost na známých datech při učení na menší množině ( okolo 2000 pozic ) • 55% úspěšnost na známých datech při učení na velké množině ( 4500 pozic ) ( neortogonalita ) • 30% úspěšnost dle definovaného ohodnocení na testovacích (neznámých) datech při 4500 pozic na učení a 1800 na testování

  17. Statistické výsledky II • Výsledky na arch. [30,30,15,2] trainrp • 4500 učících pozic, 1888 neznámých test. pozic • >>distance 0 --> 73 results • >>distance 1 --> 146 results • >>distance 2 --> 218 results • >>distance 3 --> 283 results • >>distance 4 --> 207 results • >>distance >=5 --> 961 results • >>>Out of bounds 131 • >>>Stone already there 577 • >>>Efficiency: 30%:

  18. Myšlenky do budoucna • Zamezit nekorektním tahům • znatelné procento neúspěchu tvoří kameny hrané na obsazené pozice/na pozice mimo desku • vylepšit operátor porovnání s požadovaným výstupem při učení aby zohledňoval nekorektní tahy • Lépe připravit vstupní množinu • pokusit se vynutit ortogonalitu vstupních pozic • případně ručně předzpracovat partie ( označit živé/mrtvé skupinky, oblasti vlivu, více možných tahů – náročné, ale síť má více informací o pozici => může lépe simulovat tahy

More Related