Zie de video: Neurale netwerken: vierde programmeeropgave.
Het is 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.
Gebruik het skelet-programma
en bekijk deze hints.
Zorg er hierbij voor dat de voorbeelden in random volgorde
worden aangeboden.
Bestudeer de verschillen, gebruik verschillende leersnelheden, aantallen verborgen knopen, epochs, etcetera. Wanneer gaat het fout? Is er verschil tussen OR en XOR?
Leg duidelijk uit over welke fout gerapporteerd wordt. Werkt het ook nog als je de rectifier als activatie-functie gebruikt in plaats van "sigmoid"?
Rapporteer ook over een "serieuze" dataset, zoals Abalone, met 4177 voorbeelden en per voorbeeld acht attributen en een negende om te voorspellen;
deze schelpen-dataset is afkomstig van de UCI Machine Learning repository.
(Een andere dataset mag ook.)
Misschien is het verstandig de target tussen 0 en 1 te dwingen (deel door 30), of tussen -1 en +1.
Vanuit de skeletcode kan eenvoudig deze versie worden ingelezen
(in de eerste kolom uit de originele dataset is M door 1.0, F door 0.5 en I door 0.0 vervangen; komma's zijn
door spaties vervangen).
Tot slot: vergelijk het netwerk met een versie die met behulp van Keras gemaakt is, zie uitleg. De sample code staat hier. Zijn de resultaten vergelijkbaar? Als je dit onderdeel overslaat, kost dat één punt.
Voor gnuplot zie bij de vorige opgaven.
Leg in het verslag ook kort BackPropagation uit, met de formules,
en uiteraard een referentie naar het juiste hoofdstuk in Russell en Norvig.
In te leveren per e-mail: verslag (in LaTeX gemaakt; de eigen C++-code als Appendix,
zie verder
hier
voor opmerkingen over het verslag),
en C++-code.
Let op: nieuw e-mail-adres: aicollege@liacs.leidenuniv.nl
Deadline: donderdag 14 mei 2020, 11:00 uur.
Vragen en/of opmerkingen kunnen worden gestuurd naar: aicollege@liacs.leidenuniv.nl.
16 april 2020 — http://www.liacs.leidenuniv.nl/~kosterswa/AI/nn20.html