<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ondra[sej] Blog &#187; AI</title>
	<atom:link href="http://www.ondrejsykora.com/blog/category/ai/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ondrejsykora.com/blog</link>
	<description></description>
	<lastBuildDate>Sun, 21 Mar 2010 13:17:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Ještě jednou Sudoku</title>
		<link>http://www.ondrejsykora.com/blog/2008/01/26/jeste-jednou-sudoku/</link>
		<comments>http://www.ondrejsykora.com/blog/2008/01/26/jeste-jednou-sudoku/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 20:28:29 +0000</pubDate>
		<dc:creator>ondrasej</dc:creator>
				<category><![CDATA[AI]]></category>

		<guid isPermaLink="false">http://ondra.sykorky.cz/blog/2008/01/26/jeste-jednou-sudoku/</guid>
		<description><![CDATA[V minulém příspěvku o Sudoku solveru. -mt- v diskuzi pod příspěvkem namítal, že solver je podobně rychlý jako jeho naivní solver v C++. Že by chytré řešení v Javě bylo stejně rychlé jako naivní řešení v C++ zní trochu divně &#8212; ledaže by to s tou chytrostí nebylo tak horké&#8230; Nebylo. Při kontrole korektnosti pozice [...]]]></description>
			<content:encoded><![CDATA[<p>V <a href="http://ondra.sykorky.cz/blog/2008/01/05/rychlost-alokaci-v-jave/">minulém příspěvku</a> o <a href="http://ondra.sykorky.cz/projects/sudoku-solver">Sudoku solveru</a>. -mt- v diskuzi pod příspěvkem namítal, že solver je podobně rychlý jako jeho naivní solver v C++. Že by chytré řešení v Javě bylo stejně rychlé jako naivní řešení v C++ zní trochu divně &#8212; ledaže by to s tou chytrostí nebylo tak horké&#8230;</p>
<p>Nebylo. Při kontrole korektnosti pozice se testovalo, zda v některé skupině (tj. řádku, sloupci nebo podčtverci) nejsou dvě stejné hodnoty a že pro každé pole zbývá alespoń jedna možná hodnota. Přidáním dalšího testu, který kontroluje, jestli do každé skupiny stále lze vložit (nebo už je vloženo) všech devět číslic. Na úloze z <a href="http://ondra.sykorky.cz/blog/2008/01/05/rychlost-alokaci-v-jave/">předchozího příspěvku</a> klesl počet návratů při backtrackingu díky rychlejší detekci nekorektní pozice z 174844 na 35039.</p>
<p>Bez dalších technických optimalizací se čas nutný přo nalezení řešení výše zmíněné úlohy (na stejném stroji) snižil z průměrných 2940,3 ms na 392.16 (&plusmn; 16) ms. Nová verze solveru včetně zdrojových kódů je ke stažení na <a href="http://ondra.sykorky.cz/projects/sudoku-solver">stránce projektu</a>. Několik nápadů na zrychlení ještě zbývá, ale to zas někdy příště&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ondrejsykora.com/blog/2008/01/26/jeste-jednou-sudoku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MiniRisk &#8211; hra pro dlouhé zimní večery</title>
		<link>http://www.ondrejsykora.com/blog/2007/01/27/minirisk-hra-pro-dlouhe-zimni-vecery/</link>
		<comments>http://www.ondrejsykora.com/blog/2007/01/27/minirisk-hra-pro-dlouhe-zimni-vecery/#comments</comments>
		<pubDate>Sat, 27 Jan 2007 11:40:41 +0000</pubDate>
		<dc:creator>ondrasej</dc:creator>
				<category><![CDATA[AI]]></category>

		<guid isPermaLink="false">http://ondra.sykorky.cz/blog/2007/01/27/minirisk-hra-pro-dlouhe-zimni-vecery/</guid>
		<description><![CDATA[Minirisk je jednoduchá hra pro dva až pět hráčů, ve které soupeři draží karty s různou hodnotou pomocí zajímavého druhu aukce. Cílem hry je s omezenými prostředky získat karty s co možná nejvyšší hodnotou. To ale není vždy tak jednoduché, protože při sestavování nabídky hráči neznají nabídky svých soupeřů a navíc není vždy pravda, že [...]]]></description>
			<content:encoded><![CDATA[<p>Minirisk je jednoduchá hra pro dva až pět hráčů, ve které soupeři draží karty s různou hodnotou pomocí zajímavého druhu aukce. Cílem hry je s omezenými prostředky získat karty s co možná nejvyšší hodnotou. To ale není vždy tak jednoduché, protože při sestavování nabídky hráči neznají nabídky svých soupeřů a navíc není vždy pravda, že vítězí nejlepší nabídka.<br />
<span id="more-155"></span></p>
<p>Samozřejě nemám v úmyslu nikoho nutit, aby takovou jednoduchou a veskrze nezáživnou hru hrál osobně, hra ale dostane poněkud jiné dimenze, pokud se na ni podíváte očima člověka, který se zajímá o umělou inteligenci. Aukce v této hře je zajímavá tím, že vyhrává nejvýše jeden (vylučuje spolupráci hráčů) a co víc &#8211; nevyhrává nejlepší nabídka, ale nejlepší <strong>jedinečná</strong> nabídka. A aby toho nebylo málo, hraje se i o karty se zápornou hodnotou. Ty pochopitelně nikdo nechce, a proto je získá hráč, který dal nejnižší jedinečnou nabídku.</p>
<p>Ale proč o ní píšu &#8211; před Vánoci <a href="http://artax.karlin.mff.cuni.cz/~isa_j1am">Jirka</a> vytvořil <a href="http://artax.karlin.mff.cuni.cz/~isa_j1am/projects/minirisk/">jednoduchý server</a>, který umožńuje nechat proti sobě hrát přes síť několik hráčů. K Jirkovu serveru jsou přibaleni i tři počítačoví klienti, ale hlavně je součástí třída v Javě, do které stačí pro implementovat několik metod a máte vlastního agenta. O technické záležitosti jako je komunikace se serverem už se postará ona.</p>
<h2>Pravidla hry</h2>
<p>Hru hrají vždy alespoń dva hráči, zhora jejich počet omezený není, ale pět hráčů se ukazuje jako rozumné maximum. Každý hráč na začátku hry dostane <em>platební karty</em> v hodnotě 1 až 15 &#8211; jednu od každé hodnoty. Na stůl mezi všechny hráče se položí rubem nahoru promíchaný balíček 15 <em>výherních karet</em>, tentokrát v hodnotách -5, -4, &#8230;, -1, 1, 2, 3, &#8230;, 10.</p>
<p>Hra má vždy 15 kol. V každém kole se napřed otočí lícem nahoru vrchní výherní karta z balíčku. Poté všichni hráči vyberou, platební kartu, pomocí které chtějí otočenou výherní kartu vydražit, a tu položí rubem nahoru před sebe tak, aby ji ostatní hráči neviděli. Pak všichni najednou otočí své platební karty a vyřadí se platební karty, které nabídlo více hráčů najednou. Například pokud hrají tři hráči a za výherní kartu 10 nabídnou platební karty v hodnotě 15, 15 a 14, tak se karty s hodnotou 15 vyřadí a hráči, kteří je nabídli již výherní kartu 10 nemůžou získat.</p>
<p>Pokud je hodnota dražené karty kladná, získá výherní kartu hráč, který za ni nabízí nejvyšší cenu. Pokud hodnota dražené karty je záporná, získá ji hráč, který nabídl cenu nejnižší. Pokud po vyřazení duplicitních nabídek na stole nezbyde žádná platební karta, bude výherní karta vydražená v následujícím kole spolu s další otočenou výherní kartou (pro posuzování, jestli vyhrává nejvyšší, nebo nejnižší nabídka se používá součet hodnot obou dražených karet).</p>
<h2>Turnaje</h2>
<p>Protože ve hře je zastoupena náhoda (a kvůli učícím-se hráčům), nestačí pro posouzení hráče sehrát jednu partii. Jako rozumné minimum bych bral 200 her, kdy už se náhodné jevy začnou rozpouštět do pravděpodobnostních rozložení a kdy učící-se hráči dostanou šanci předvést, co všechno se dokážou naučit.</p>
<p>Každý účastník turnaje se účastní všech her a mezi jednotlivými hrami si zachovává paměť, takže si může (chce-li uspět, tak musí) pamatovat jak reagovali jeho soupeři a podle toho odhadovat jejich další kroky.</p>
<p>Vedení turnajů je zcela v režii serveru, stejně jako počítání celkového score, kontrola cheatování a vyhlášení vítězů na konci.</p>
<h2>Počítačoví hráči</h2>
<p>Teorii už známe, taže se můžeme pustit do praktického hraní. Chci říci programování. Pro testování kvalit nového hráče jsou k dispozici tři již existující.</p>
<p><strong>Hráč s pevnou strategií</strong><br />Je nejjednodušší hráč ve hře. Platební karty má předem přiřazené k výherním poměrně rozumným způsobem tak, aby vyhrál proti náhodnému hráči a proti hráčům hrajícím opravdu špatně. Pro hráče, kteří používají učící algoritmy by neměl být problém proti němu uhrát většinu karet.</p>
<p><strong>Hráč s náhodnou strategií</strong><br />Karty pro každý tah vybárá zcela náhodně z těch, které mu ještě zbyly. S trochou snahy by ho měl porazit každý&#8230; a pokud ne, je něco asi špatně <img src='http://www.ondrejsykora.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Na druhou stranu přítomnost několika náhodných hráčů někdy dokáže turnajem docela zahýbat.</p>
<p><strong>Hráč postavený na reinforcement learning</strong><br />Učí se reakce svých soupeřů pomocí reinforcement learning algoritmu a v každém kroku odhaduje nejpravděpodobnější kroky svých soupeřů.</p>
<h2>Prostor pro další zlepšení&#8230; a pro vás</h2>
<p>Rádi bychom udělali turnaj, ve kterém by bylo víc &quot;rozumných&quot; hráčů, kteří používají různé algoritmy a zkusili porovnat jejich výkonnost. V současné době je nejlepší hráč s reinforcement learningem, ale to je spíš jednooký mezi slepými &#8211; všichni naši hráči zatím hrají reaktivně bez toho, aby si plánovali akce pro další tahy.</p>
<p>My máme v plánu svoje hráče dál vylepšovat, ale budeme rádi když se do přidají i další  a pokusí se překonat naše výtvory a vytvořit co možná nejlepšího hráče. Tučné ceny na vítěze nečekají, ale nehynoucí slávy by se tu pro vás snad trochu našlo <img src='http://www.ondrejsykora.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ondrejsykora.com/blog/2007/01/27/minirisk-hra-pro-dlouhe-zimni-vecery/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Prezentace o Neural Darwinismu</title>
		<link>http://www.ondrejsykora.com/blog/2006/05/15/prezentace-o-neural-darwinismu/</link>
		<comments>http://www.ondrejsykora.com/blog/2006/05/15/prezentace-o-neural-darwinismu/#comments</comments>
		<pubDate>Sun, 14 May 2006 23:11:40 +0000</pubDate>
		<dc:creator>ondrasej</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Osobní]]></category>

		<guid isPermaLink="false">http://ondra.sykorky.cz/blog/2006/05/15/prezentace-o-neural-darwinismu/</guid>
		<description><![CDATA[V sobotu se konal poslední sobotní miniseminář o umělých bytostech tohoto akademického roku, pro mě to znamenalo hlavně to, že mám poslední možnost přednést svoji prezentaci představující teorii selekce skupin neuronů podle G. M. Edelmana. I když jsem dost neobvykle začal s přípravou hodně dlouho před prezentací (hodně dlouho v tomto případě znamená začátkem prosince), [...]]]></description>
			<content:encoded><![CDATA[<p>V sobotu se konal poslední sobotní miniseminář o umělých bytostech tohoto akademického roku, pro mě to znamenalo hlavně to, že mám poslední možnost přednést svoji prezentaci představující teorii selekce skupin neuronů podle G. M. Edelmana.<br />
<span id="more-150"></span></p>
<p>I když jsem dost neobvykle začal s přípravou hodně dlouho před prezentací (hodně dlouho v tomto případě znamená začátkem prosince), v případě autorů jako je pan Edelman to ale neznamená skoro nic &#8211; kniha Neural Darwinism: Theory of Neuronal Group Selection je jednou z mála, u kterých lze strávit čtením jedné dvoustrany celý večer a stejně její význam nepochopit. Když jsem později procházel zdroje na internetu a vyhledával další informace a aplikace, zjistil jsem, že stejný problém měla i většina ostatních čtenářů (a to z velké části byl jejich rodný jazyk angličtina). Už vím, proč se o té knize říká, že je <em>intellectually challenging</em>.</p>
<p>Neobvyklá čtenářská náročnost knihy se podle autora jedné z internetových referencí (se kterým se plně ztotožńuju) podepsala i na dalším rozvoji teorie a najít někoho, kdo se jí v současné době vážně zabývá, a nebo alespoń informační zdroj na internetu, který by obsahoval víc, než jen základní popis, je docela problém. I díky tomu jsem s prvním čtením knihy skončil asi týden před prezentací, na druhé čtení a ujasńování pojmů už mi moc času nezbylo a na přípravu slidů a prezentace zbyl vlastně jen páteční večer (který se zcela podle očekávání protáhl do sobotního rána). poslední úpravu jsem udělal chvíli po začátku semináře (ale přiznávám, mezitím jsem šel na několik hodin spát).</p>
<p>Od poslední úpravy slidů do začátku mojeho referátu ale pořád zbývalo několik hodin, spousta času na to pořádně se vystresovat a zapomenout všechno, co jsem chtěl říct. Stres se mi nakonec podařilo zvládnout docela dobře, se zapomínáním to bylo horší. Nevím jestli to je únavou z probdělé noci nebo trémou, ale celou dobu jsem si připadal jak s klapkama na očích a hrozně jsem se upínal na prezentování a nepodařilo se mi uvolnit se. Z akce sice existuje videozáznam, ale zatím jsem ho bohužel neviděl, a během prezentování jsem moc nevnímal, takže nemůžu posoudit svoji prezentaci s potřebným odstupem. Několik věcí si ale uvědomuju a budu je muset zlepšit</p>
<ul>
<li>pro příště s přípravou slajdů musim začít aspoń týden předem, při jejich přípravě mě napadá hodně otázek, na které neznám odpověď úplně přesně, při přípravě pomáhá klást si otázku &#8220;jak to vysvětlit jednodušeji&#8221; a často tak přijdu na spoustu dalších nejasností</li>
<li>skoro ke všem slajdům jsem si před prezentací připravil poznámky co všechno říct. To bylo dobré pro setřídění myšlenek, rukou psané poznámky se ale hodně špatně čtou a rychle je prolétnout očima je skoro nemožné. S mým písmem rozhodně. Příště se za papír s poznámkama nebudu tolik stydět a budu se do něj dívat o něco víc.</li>
<li>i s poznámkami bude nutné se naučit obsah všech slajdů nazpaměť, aby se mi nestávalo, že některý z bodů vynechám, protože se nechci moc často dívat na slajdy a nevšimnu si ho.</li>
<li>pravidelné pití je základ všech delších projevů, příště si asi budu muset lahev s pitím nejen připravit, ale asi si s sebou vzít i skleničku a na poznámky si ob slide napsat <em>Napij se!</em> Zadrhnutí uprostřed slova není příjemné pro mě a určitě ani pro posluchače.</li>
<li>budu muset zapracovat na neuspávavosti přednesu, zpětně mám pocit, že jsem mluvil dost monotonně a s přestávkami na nadechnutí a zamyšlení uprostřed věty. Zamýšlet by se mělo mezi slidy a i tam se hodí připravená mezislidová pojítka. A k tomu přidat trochu uvolněný postoj, ne tam stát a držet se stolku jak kdybych měl každou chvíli spadnout <img src='http://www.ondrejsykora.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>lépe si zjistit všechna fakta. V diskusi jsem pana Edelmana pohřbil, přestože podle všeho je stále mezi námi a aktivně věnuje vědecké práci. Rozhodně v tom nebyl žádný zlý úmyls a tímto se mu dodatečně omlouvám.</li>
<li>bezdrátová myš pro přepínání slajdů je ideální nástroj. Teda za předpokladu, že celou dobu nestojím u stolku s klávesnicí promítacího počítače&#8230;</li>
</ul>
<p>Narozdíl od jedné z minulých prezentací, na kterou jsem přišel s harddiskem protože těsně před vypálením slajdů ráno před odjezdem do školy u nás vypli na několik hodin proud, a místo prezentace jsme po škole hledali někoho, kdo by je z disku dostal, se tentokrát vše obešlo bez technických komplikací a dokonce mám pocit, že se posluchači dozvěděli něco zajímavého. Na pořádný úvod do teorie byla půhodina, kterou jsem měl k disposici hrozně krátká doba, takže se mi podařilo pokrýt jen základní pojmy a principy, na hlubší pochopení </p>
<p>I když podle popisu chyb přednáška musela vypadat dost tragicky, doufám, že tomu tak nebylo a mám pocit, že se to s postupem času zlepšuje &#8211; ale jinak než formou tréninku v praxi (dalším referátem) to asi zlepšovat nepůjde&#8230;</p>
<p>Pokud jste dočetli až sem a pořád čekáte, že se dozvíte o čem přednáška vlastně byla, tak vás musím zklamat, na jeden zápis by toho bylo trochu moc. Pokus vás ale téma zajímá a máte dost času, doporučuju přímo knihu pana Edelmana. Pokud čas nemáte, podívejte se na moje <a href="http://ondra.sykorky.cz/publications/neural-darwinism/">slidy</a> z prezentace &#8211; počítejte ale s tím, že ke čtení zamýšleny nejsou a můj přednes k nim je nenahraditelný <img src='http://www.ondrejsykora.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ondrejsykora.com/blog/2006/05/15/prezentace-o-neural-darwinismu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

