source: liacs/ai/poker/nn08.html@ 356

Last change on this file since 356 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

File size: 5.4 KB
RevLine 
[2]1<HTML>
2
3<HEAD>
4<TITLE>Kunstmatige intelligentie - Programmeeropgave 3 - Neurale netwerken</TITLE>
5</HEAD>
6
7<BODY BGCOLOR="#FFFFFF" TEXT="black" LINK="blue" VLINK="red" ALINK="green">
8
9<H1>Kunstmatige intelligentie<BR>Programmeeropgave 3 van 2008 &mdash; Neurale netwerken</H1>
10
11
12De derde programmeeropgave (in het voorjaar van 2008) behorende bij het vak
13<a href="index.html">Kunstmatige intelligentie</a> gaat over
14<em>Neurale netwerken</em>.
15<br>
16Het is de bedoeling een eenvoudig Neuraal netwerk (NN)
17te programmeren met &eacute;&eacute;n verborgen laag
18dat Poker-handen kan classificeren.
19(Als je geen Poker speelt, geen zorg.)
20We gebruiken files van de
21<a href="http://archive.ics.uci.edu/ml/">UCI Machine Learning Repository</A>,
22en wel in het bijzonder de
23<a href="http://archive.ics.uci.edu/ml/datasets/Poker+Hand">Poker Hand Data set</a>.
24We willen het soort hand te bepalen, gegeven (alle?) informatie over de kaarten.
25<p>
26Het NN heeft een twee- tot tiental invoerknopen
27(evenveel als er kenmerken zijn),
28&eacute;&eacute;n of meer (?) uitvoerknopen,
29en een tussen 1 en 40 in te stellen
30aantal verborgen knopen. Verder zijn er twee bias-knopen,
31&eacute;&eacute;n op invoernivo en
32&eacute;&eacute;n op verborgen nivo.
33Gebruik <em>BackPropagation</em> als leermethode;
34redelijke waarden zijn wellicht: leersnelheid 0.1 tot 0.9,
35aantal verborgen knopen 3 en 100000 voorbeelden in totaal.
36<br>
37Test allereerst het netwerk op een paar
38&quot;eenvoudige&quot; functies van twee variabelen,
39bijvoorbeeld
40<em>XOR(x,y)</em> voor <em>x,y=0,1</em>,
41respectievelijk
42<em>f(x,y) = sin(2&pi;x)&nbsp;cos(2&pi;y)</em> voor <em>0 &#10877; x &#10877; 1</em> en <em>0 &#10877; y &#10877; 1</em>.
43Besteed hier in het verslag <em>kort</em> aandacht aan.
44Het netwerk heeft hier dus &eacute;&eacute;n uitvoerknoop.
45
46<p>
47Schrijf vervolgens zonodig een klein
48<A HREF="../introperl.html">Perl</A>-programma
49(voor Perl, zie ook
50<A HREF="/home/avdberg/perl.ppt">Arjan's PowerPoint presentatie</A>
51of
52<A HREF="perl.pdf">acht sheets in PDF</A>)
53dat de benodigde kenmerken/attributen uit de poker-files opslaat
54in het gewenste formaat, bijvoorbeeld
55allemaal, of juist een samenspel van enkele.
56Kun je bijvoorbeeld twee combinaties van attributen maken,
57zodat het netwerk toch goed presteert?
58Waarden tussen 0 en 1, graag, wellicht gescheiden door spaties.
59<br>
60Train daarna het netwerk hierop met BackPropagation,
61en geef resultaten van de experimenten. Denk
62aan het gebruiken van aparte training-set en test-set,
63zie de UCI-website.
64Ook een simpel statistiekje over de invoerfile doet het goed.
65En hoe doet het naieve algoritme (gok de meest voorkomende) het?
66<br>
67Het is goed genoeg om &eacute;&eacute;n uitvoerknoop te nemen,
68waarbij bijvoorbeeld 6 (full house) als 0.6 wordt
69gerepresenteerd: locaal coderen. Het is ook mogelijk
70&mdash; voor liefhebbers &mdash; om 10 knopen
71te nemen, waarbij knoop 6 staat voor full house: gedistribueerd coderen.
72<p>
73Gebruik <a href="http://www.gnuplot.info/"><tt>gnuplot</tt></a>
74om voor het verslag
75enkele grafieken te plotten, bijvoorbeeld met verschillende
76aantallen verborgen knopen, leersnelheden en
77stopcriteria.
78<br>
79Maak een file <tt>plot.p</tt> met daarin bijvoorbeeld<br>
80<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set xrange [0:1]<br>
81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set yrange [0:1]<br>
82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set pm3d<br>
83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;splot sin(2*pi*x)*cos(2*pi*y)</tt><br>
84En laad deze file in <tt>gnuplot</tt> met <tt>gnuplot&gt; load "plot.p"</tt>.
85<br>
86Als je een netwerk hebt om deze functie te benaderen,
87kun je het beste aan het eind van je
88programma alle benodigde trio's <em>(x,y,netwerkuitvoer)</em> afdrukken in een file
89(zeg <tt>net.uit</tt>;
90&eacute;&eacute;n trio per regel),
91waarbij <em>x</em> met kleine stapjes door het interval <em>[0,1]</em> loopt,
92en <em>y</em> idem,
93terwijl <em>netwerkuitvoer</em> de bijbehorende
94uitvoer van het getrainde netwerk is.
95In
96<tt>gnuplot</tt> kun je eenvoudig een grafiekje
97van netuitvoer en beoogde functie maken met behulp van:<br>
98<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gnuplot&gt; splot "net.uit", sin(2*pi*x)*cos(2*pi*y)</tt>
99<br>
100Hierbij kun je zonodig PostScript-uitvoer genereren
101met behulp van<br>
102<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gnuplot&gt; set terminal postscript eps enhanced color</tt><BR>
103<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gnuplot&gt; set output "file.ps"</tt><br>
104vlak voor het <tt>(s)plot</tt>-commando te geven
105(of <tt>enhanced monochrome</tt> voor grijswaarden-plaatjes).
106En dat allemaal in een plot-file, dan hoef je het niet steeds
107over te tikken.
108<br>
109Op internet staat alles en meer over <tt>gnuplot</tt>, bijvoorbeeld
110<a href="http://www.gnuplot.info/">hier</a> of
111<a href="http://t16web.lanl.gov/Kawano/gnuplot/index-e.html">daar</a>.
112<br>
113Kijk verder in de
114<A HREF="../stuva1/lshort.pdf">LaTeX-handleiding</A>
115(Hoofdstuk 4.1) hoe je PostScript-files in LaTeX kunt importeren.
116<p>
117Leg in het verslag ook <em>kort</em> BackPropagation uit, met de formules,
118en een referentie naar Russell en Norvig.
119<br>
120In te leveren: geprint verslag (in LaTeX gemaakt; de C++-code als Appendix,
121zie verder
122<a href="index.html#practicum">hier</a>
123voor opmerkingen over het verslag),
124en per email: C++- en Perl-code.
125Stuur svp geen emails met LaTeX/PS/PDF.
126
127<p>
128Deadline: <b>dinsdag 8 april 2008</b>.
129
130<P>
131<hr>
132<p>
133Vragen en/of opmerkingen kunnen worden gestuurd
134naar: <em><A HREF="mailto:kosters@liacs.nl">kosters@liacs.nl</A></em>.
135<p>
13617 maart 2008 &mdash; <b>http://www.liacs.nl/home/kosters/AI/nn08.html</b>
137
138</BODY>
139
140</HTML>
141
Note: See TracBrowser for help on using the repository browser.