Kijk eerst de sheets en volg het bijbehorende college.
Het is allereerst de bedoeling een eenvoudig Neuraal netwerk (NN) te programmeren met één verborgen laag dat simpele Booleaanse functies, zoals XOR, kan leren.
Maak een netwerk voor 2-inputs (X)OR- en AND-problemen. Houd het wel algemeen.
Gebruik het skelet-programma
en bekijk deze hints.
Zorg er altijd voor dat de voorbeelden in random volgorde
worden aangeboden.
Bestudeer de verschillen, gebruik verschillende leersnelheden, activatiefuncties, aantallen verborgen knopen, epochs, etcetera. Wanneer gaat het fout? Is er verschil tussen OR en XOR?
Leg duidelijk uit over welke fout gerapporteerd wordt.
Rapporteer ook over een "serieuze" dataset, zoals Chess (King-Rook vs. King), met per voorbeeld drie coordinaatparen (witte koning en toren, zwarte koning) en het aantal zetten tot en met mat;
deze dataset is afkomstig van de UCI Machine Learning repository.
(Een andere dataset mag ook, dat kan tot een bonus aanleiding geven.)
Vanuit de skeletcode kan eenvoudig deze versie van de dataset worden ingelezen:
de voorbeelden met "draw" zijn weggelaten; en a..h is vervangen door 1..8; en voor de "target"
is one..sixteen vervangen door 1..16.
In totaal 25260 voorbeelden.
Misschien is het verstandig de attributen tussen 0 en 1 te dwingen (deel bij het inlezen door 8.0 of 16.0).
Voor gnuplot zie bij de vorige opgaven.
Leg in het verslag ook kort BackPropagation uit, met de formules (geen bewijs),
en uiteraard een referentie naar het juiste hoofdstuk in Russell en Norvig.
En een referentie voor de dataset.
In te leveren: een geprint exemplaar van het verslag
(alleen eigen C++-code in de appendix)
tijdens het college,
en de volledige C++-code via Brightspace => Assignments.
Het verslag moet aan verschillende
eisen voldoen.
Deadline: woensdag 24 mei 2023, 13:15 uur.
Vragen en/of opmerkingen kunnen worden gestuurd naar: aicollege@liacs.leidenuniv.nl.
6 april 2023 — https://www.liacs.leidenuniv.nl/~kosterswa/AI/nn23.html