Opdracht 2 Het Multilayer Perceptron

Vergelijkbare documenten
Kunstmatige Intelligentie (AI) Hoofdstuk 18.7 van Russell/Norvig = [RN] Neurale Netwerken (NN s) voorjaar 2016 College 9, 19 april 2016

Tentamen Kunstmatige Intelligentie (INFOB2KI)

BSc Kunstmatige Intelligentie. : Bachelor Kunstmatige Intelligentie Studiejaar, Semester, Periode : semester 1, periode 2

succes. Door steeds opnieuw toernooien te blijven spelen evolueert de populatie. We kunnen dit doen onder ideale omstandigheden,

AI en Software Testing op de lange termijn

AI introductie voor testers

Inhoud. Neuronen. Synapsen. McCulloch-Pitts neuron. Sigmoids. De bouwstenen van het zenuwstelsel: neuronen en synapsen

Neurale Netwerken en Deep Learning. Tijmen Blankevoort

Inleiding Adaptieve Systemen Hoofdstuk 4: Neurale netwerken

Stroomschema s maken op papier

Opgave 2 ( = 12 ptn.)

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Matlab-Introductie (les 1)

Tentamen in2205 Kennissystemen

Inhoud. Informatica. Hoofdstuk 5 Scripting. Context. Editor voor Programmeercode. Scripting 1

Introductie in R.

AI Kaleidoscoop. College 12: Subsymbolische methoden. Twee scholen. Leeswijzer: Performance cliff (2) Performance cliff

Statistiek voor Natuurkunde Opgavenserie 1: Kansrekening

Aantekeningen over MATLAB

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

heten excitatory. heten inhibitory.

PC les 1: MATLAB gebruiken

Basistechnieken Microsoft Excel in 15 minuten

Stroomschema s maken in Word

Zelftest Inleiding Programmeren

Correcties en verbeteringen Wiskunde voor het Hoger Onderwijs, deel A.

Modeling Cognitive Development on Balance Scale Phenomena[4] Replicatie van Shultz et al.

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Kerstvakantiecursus. wiskunde B. Voorbereidende opgaven VWO. Haakjes. Machten

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren

aan te wijzen? Zo ja, noem de naam/namen en regelnummer(s).

Praktijkinstructie Dataverwerking 1 (CSE02.1/CREBO:50236)

Opzet onderwijsexperiment

Matlab introductie. Kees Vuik

Het XOR-Netwerk heeft lokale Minima

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Beknopte uitwerking Examen Neurale Netwerken (2L490) d.d

De tijd vliegt! Naam: Klas: School: Datum:

Stroomschema s maken op papier

25 Excel tips. 25 Handige Excel tips die tijd besparen en fouten voorkomen. Ir. Fred Hirdes. Excel-leren.nl.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Opdracht 3: Baanintegratie: Planeet in een dubbelstersysteem

AFVALPLAN. Je plan bevat de volgende onderdelen: Je voor- en nadelen van afvallen Je waarom. Je doelen Je als/dan-plannen Je Evaluatie

Inhoud leereenheid 12. Probleemoplossen met kunstmatige intelligentie. Introductie 225. Leerkern 226. Samenvatting 250.

Het warmteverlies van het lichaamsoppervlak aan de wordt gegeven door de volgende formule:

Gebruikershandleiding

Reducing catastrophic interference

Opdracht 2. Deadline maandag 28 september 2015, 24:00 uur.

Examen VWO. wiskunde B1 (nieuwe stijl)

Informatica: C# WPO 13

Uitwerkingen opgaven Kunstmatige intelligentie

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Vergeten wachtwoord in Windows 10

2. Het benaderen van nulpunten

Zelftest TSO/E REXX. Document: n0167test.fm 25/01/2017. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Korte handleiding Maple, bestemd voor gebruik bij de cursus Wiskunde

Informatica: C# WPO 12

Het Eindfeest. Algoritmiek Opgave 6, Voorjaar

Bachelor Project. Neuraal Winkelen

Studiekeuzedag CMD voorbereidingswerkboek

Het oplossen van goniometrische vergelijkingen een alternatieve handleiding voor HAVO wiskunde B

door Vaksectie Informatica Alberdingk Thijm College ACS-logo

Lessen wiskunde uitgewerkt.

11 september 2018, 11:40 Jolet Jung

Foutcontrole met Javascript

Wat schrijf je en voor wie: een gedicht voor op een. Hoe pak je het schrijven van een gedicht aan?

MACHINES. ... en kralenkettingen. Onderzoeksprogramma Vierkant voor Wiskunde. Wiskundeclubs. Tristan Cranendonk & Joost Langeveld

Machinaal leren, neurale netwerken, en deep learning

Simon de schildpad J van Weert 1

Schrijven - Controleren en verbeteren vmbo-b34

Algoritmisch Denken: Dodo s Bit Parity

Les 15 : updaten van gegevens in de database (deel2).

behorende bij de website hoeextreembenjij.nl

Javascript oefenblad 1

[7] Variabelen en constanten

Onder huiswerk verstaan we:

Exacte waarden bij sinus en cosinus

10. Mijn eerste programma

Tentamen in2205 Kennissystemen

Aantekeningen Ch. 4 Artificial neural networks

Oefeningenexamen Informatica: juni 2015

Opdrachten 2e week. Periode Goniometrie, klas 11.

Vervolgcursus Rekenen Vijfde bijeenkomst dinsdag 29 mei 2012 vincent jonker

Data Science and Process Modelling

Computerrekenpakket Maple zesde jaar

lesboek Jonker & Wu CAD support

Programmeeropdracht 1 Mastermind Algoritmiek, voorjaar 2019

Facebook Marketing Power

Opgave 1. (4 punten) Inleiding: Vraag: Hints: (maximaal 2 bonuspunten) Tentamen Algoritmiek voor Biologen

SPEELWIJZE LEIDERSCHAPSSPEL

Wetenschappelijk Rekenen

EXCEL GEGEVENSBEHEER

Weet jij een paar leuke lijstjes? Denk bijvoorbeeld aan alle kinderen in je klas of al je vriendjes of vriendinnetjes.

ALGEMENE STATISTIEK VOOR BWI COMPUTEROPGAVEN 2009/2010. A.W. van der Vaart en F. Bijma

2 Data en datasets verwerken

Informatica Software PO: Excel

Deelopdracht 1: Beginsituatie

Tentamen in2205 Kennissystemen

Hoe doe ik een onderzoeksproject. Hans Bodlaender Marjan vd Akker

SPSS VOOR DUMMIES+ Werken met de NSE: enkele handige basisbeginselen. Gebaseerd op SPSS21.0 & Benchmarkbestand NSE 2014

Transcriptie:

Opdracht 2 Het Multilayer Perceptron Doel: - Inzicht verkrijgen in een neuraal netwerk (het multilayer perceptron). - Begrijpen van het backpropagation algoritme. - Een toepassing van een neuraal netwerk zien. - Het begrijpen van generalisatie en overfitting. 1. Beantwoord de volgende vragen: a) Wat is het credit assignment problem? b) Als je de fout van een verborgen neuron wilt bepalen, welke twee factoren hebben hier dan invloed op? c) Geef de sigmoïde functie en de afgeleide ervan. (Gebruik evt. exp(x) voor е x.) d) Waarom mogen de willekeurige beginwaarden van de gewichten eigenlijk niet te dicht rond de extreme uitvoerwaarden (bijv. 0 en 1) zitten? e) Noem drie criteria die bepalen wanneer je kunt stoppen met het backpropagation algoritme. Geef bij elke manier een nadeel aan. f) Hoe kun je, naast het veranderen van de leersnelheid alpha, het leren van het netwerk versnellen? (Leg kort uit hoe dit werkt.) g) Wanneer zeggen we dat een netwerk gegeneraliseerd heeft van de trainings data? h) Wat is het probleem bij overfitting? 2. Maak je eigen netwerk (MLP) a) Teken voor jezelf een 2-laags neuraal netwerk (een verborgen en uitvoer laag) met 2 invoer neuronen, 2 verborgen neuronen en 1 uitvoer neuron. - Waarom wordt dit een 2-laags i.p.v. 3-laags netwerk genoemd? - Hoeveel gewichten heeft de verborgen laag? En de uitvoer laag? b) Voor deze opdracht moet je het Multilayer Perceptron afmaken. Gebruik hiervoor de aangeleverde code: http://www.ai.rug.nl/~jijssel/mlp.zip Lees eerst de toelichting door bij deze opgave (zie pagina 3)! Het is daarna de bedoeling dat je de volgende functies invult: neuron/activate.cc activeer een enkel neuron met de gegeven invoer. neuron/sigmoid.cc de sigmoïde functie (deel van de uitvoer). layer/activate.cc activeer de neuronen in de hele laag. network/activate.cc activeer het netwerk van begin tot eind. trainer/trainnetwork.cc bekijk hier slechts de feedforward pass. c) Als het eenmaal werkt, probeer dan pas om het trainingsalgoritme te implementeren. Kijk hiervoor in de volgende bestanden: network/train.cc (deel van) het backpropagation algoritme. trainer/trainnetwork.cc het begin en eind van het algoritme. d) Train nu het netwerk verschillende keren. Druk vervolgens de errors in een grafiek af! (Zie uitleg hoe.) - Er is altijd (gegarendeerd) een oplossing? - Leg uit waarom dit wel/niet zo is! Opdracht 2 van practicuminleiding Neurale Netwerken (mei 2005) 1/5

3. Een toepassing van een neuraal netwerk Een toepassing van neurale netwerken is function fitting. Hierbij proberen we het netwerk een bepaalde functie te leren. Voor een dergelijke taak maken we gebruik van het volgende netwerk: y is een functie van x, dus 1 invoer (x), n verborgen neuronen en 1 uitvoer neuron (y). Het aantal verborgen neuronen is afhankelijk van de complexiteit van de functie. Voor deze opdracht is een programma geschreven dat de sinus aan de hand van 9 punten probeert te leren (elk punt om ¼ л op het domein van [0, 2 л]). Je kunt zelf het aantal verborgen neuronen meegeven aan het programma. Zie de toelichting voor meer informatie over gnuplot en het aangeleverde programma. a) Voer het gegeven programma een keer uit met 1 verborgen neuron. Bekijk nu met gnuplot in hoeverre deze functie geleerd is. Doe nu ditzelfde experiment met 2 en 3 verborgen neuronen. - Wat valt je op aan de drie grafieken? - Hoeveel verborgen neuronen heb je minimaal nodig om de sinus te benaderen op het domein [0, 2 л]? b) Nu gaan we kijken naar de uitvoer van de verschillende verborgen neuronen (ten opzichte van de uitvoer van het netwerk). Doe dit voor een netwerk met 3 verborgen neuronen. - Verklaar de uitvoer van dit netwerk aan de hand van de uitvoerwaarden van de verborgen neuronen. - Theoretisch gezien, hoeveel verborgen neuronen heb je minimaal nodig om de sinus te benaderen op het domein [0, 3 л]? c) Bekijk een paar keer het verloop van de fout bij een netwerk met 2 verborgen neuronen. Hierbij zal je duidelijk iets opvallen. - Verklaar het verloop van de foutcurve bij 2 verborgen neuronen. d) Voer het programma ook een paar keer uit met 7 verborgen neuronen: Bekijk deze grafiek ten opzichte van de echte sinus en die van het netwerk met 3 verborgen neuronen. - Wat valt je op ten opzichte van het netwerk met 3 neuronen? e) Het leren van de sinus (gegeven een bepaald domein) is natuurlijk een nutteloze toepassing. Bij deze dan de vraag: - Waarvoor zou je function fitting kunnen gebruiken? Inleveren: - Voor deze opdracht krijg je 2 weken de tijd. (Deadline 25 mei om 5 uur.) - Geef antwoord op de vragen bij 1, 2 en 3. - Plaats al je zelfgeschreven code in hetzelfde document. - Stuur het document op naar: m.h.van.woudenberg@student.rug.nl Opdracht 2 van practicuminleiding Neurale Netwerken (mei 2005) 2/5

Toelichting 1. Voor het beantwoorden van de vragen: Zie hoofdstuk 6 van het boek An Introduction to Neural Networks. 2. Maak je eigen netwerk (MLP) (b) Het programma zit als volgt in elkaar. Let er goed op dat dezelfde informatie (en meer!) ook in de zogenaamde header-files staat! (Alle *.h bestanden.) Hieronder dan de belangrijkste variabelen en functies: Neuron d_ninputs // Het aantal invoeren/gewichten. *d_weights // Array van gewichten. d_threshold // De drempelwaarde of bias. ----------- activate(input_vector) -> output &weight(i) -> d_weights[i] &threshold() -> d_threshold Layer d_noutputs // Het aantal uitvoeren/neuronen *d_neurons // Array van neuronen. ---------- *activate(input_vector) -> output_vector ninputs() -> number of inputs &weight(i, j) -> d_neurons[i].weight(j) &threshold(i) -> d_neurons[i].threshold() Network d_hiddenlayer d_outputlayer // De verborgen laag // De uitvoer laag ------------- // Forward pass! *activate(input_vector) -> output_vector // Backward pass! train(input_vector, target, learning_rate) -> error hashiddenlayer() -> true/false Trainer ----- trainnetwork(learning_rate) // Begin en eind van het // backpropagation algoritme. Zoals te zien is bevat activate() in Network de forward pass. Bij de volgende vraag mag je aan de backward pass werken. In Trainer.trainNetwork() wordt het begin en eind van het backpropagation algoritme uitgevoerd. De activatie is helemaal terug te leiden tot een enkel neuron. Begin daarom makkelijk en bovenaan (bij Neuron). Er zijn nog meer handige steunfuncties zoals (last) output() in zowel Neuron als Layer, dus bekijk het rustig voordat je code gaat typen. Nog een handigheid: het commando make werkt intussen, dus gebruik dit voor het compileren van je code. Opdracht 2 van practicuminleiding Neurale Netwerken (mei 2005) 3/5

(c) Nu mag je aan de haal met het backpropagation algoritme. Een groot deel is al geschreven in trainnetwork. Aan jou de taak om de fout van een enkel patroon terug te laten voeren door het netwerk, de backward pass dus. Kijk hiervoor op pagina 67 van het boek. Er staan zes regels in de code (train.cc) die jij in moet vullen. Haal de volgende regel (in trainnetwork.cc) uit het commentaar: double error = network.train(input, &target[i], learning_rate); (d) Een grafiek genereren kan met gnuplot. Voer hiervoor de volgende commando s uit: > make (om te compileren als je code veranderd hebt) > mlp (om data/errors.dat te genereren) > gnuplot gnuplot> plot data/errors.dat with lines gnuplot> exit 3. Function Fitting (a) Haal het programma van http://www.ai.rug.nl/~jijssel/mlp_sinus.zip. De onderstaande regels voor gnuplot staan ook in een bijgeleverd tekstdocumentje, zodat je deze makkelijk kunt kopiëren en plakken. Een aantal gegevens van het programma wordt weggeschreven naar verschillende bestanden (zie onder). Let op dat deze bestanden na elke uitvoering van het programma veranderen! data/sinus#.dat de sinus volgens het netwerk in 64 stappen over het domein van [0, 2 л], waarbij # afhankelijk is van het aantal verborgen neuronen. data/sinus_errors.dat het verloop van de gemiddelde fout (afgedrukt na elke epoch). data/sinus_activations.dat de uitvoer van elke verborgen neuron, ook in 64 stappen. Om precies te zijn wordt de uitvoer nog eens vermenigvuldigd met het teken (+ of -) van het gewicht tussen dit neuron en het uitvoer neuron. Voer het programma uit met 1 verborgen neuron. Teken daarna de sinus en de uitvoer van het programma op het domein van [0, 2 л]. > mlp_sinus 1 > gnuplot gnuplot> plot [0:2*pi] sin(x), data/sinus1.dat Herhaal dit voor 2 en 3 verborgen neuronen. Let goed op of het patroon ook geleerd wordt in het maximaal aantal epochs. Bekijk eventueel de foutcurve. (b) Zoals hierboven al staat, bevat sinus_activations.dat de waarden van de uitvoer van de verborgen neuronen (gespiegeld aan de hand van een positieve of negatieve connectie). Type voor het tekenen van de uitvoerwaarden van de verborgen neuronen de volgende opdrachten in: > mlp_sinus 3 (voor het overschrijven van sinus3.dat) gnuplot> plot [0:2*pi] data/sinus3.dat, data/sinus_activations.dat using 1:2 title hidden output 1, data/sinus_activations.dat using 1:3 title hidden output 2, data/sinus_activations.dat using 1:4 title hidden output 3 Opdracht 2 van practicuminleiding Neurale Netwerken (mei 2005) 4/5

(c) > mlp_sinus 2 gnuplot> plot data/sinus_errors.dat with lines (d) > mlp_sinus 3 > mlp_sinus 7 gnuplot> plot [0:2*pi] sin(x), data/sinus3.dat, data/sinus7.dat Opdracht 2 van practicuminleiding Neurale Netwerken (mei 2005) 5/5