Cijfers herkennen |
Top Vorige Volgende |
Een van de eerste grote successen van AI was dat een neuraal netwerk in staat was de cijfers van de MSINT database vrijwel foutloos te herkennen. (De MNIST is een data-base van 60.000 handgeschreven cijfers die vaak gebruikt wordt om beeldverwerking processen te testen. Een gedeelte (10.0000 cijfers) wordt ingelezen biij het opstarten van deze app, vandaar dat enige tijd duurt voordat het eerste scherm goed verschijnt. Zodra de app is ingeladen gaat het netwerk al aan de slag om te trainen. Op het eerste scherm staat onder de knop info het aantal seconden dat de computer verwacht dat het trainen nog zal duren. Hieronder staat een kleine selectie uit de cijfers uit de database.
Bedoeling van de app Proberen duidelijk te maken dat neurale netwerken alleen maar rekenen. Dus dat op een of andere manier het beeld van een cijfer omgezet moet worden in getallen.
Verband werking hersenen en neuraal netwerk. Het neuraal netwerk is geïnspireerd door de manier waarop de hersenen werken. Er zijn maar drie soorten neuronen in onze hersenen, input neuronen die de signalen uit ons lichaam ontvangen, de neuronen die informatie verwerken en doorgeven en de output neuronen die door middel van elektrische signalen allerlei processen in het lichaam aansturen. Deze neuronen in de hersenen zijn heel flexibel, maar ook steeds hetzelfde. Neuronen werken ook samen. De dikte van de verbinding bepaalt de sterkte van het signaal dat doorgegeven wordt. Informatie die overdag wordt verzameld wordt tijdens de slaap nog verschillende gebruikt om de hersenen te trainen. Hoe onze hersenen werken is nog steeds een inspiratiebron voor de onderzoekers. Ook aan de ICT-kant is er speciale software ontwikkeld zodat computers supersnel "neuraal netwerk berekeningen" kunnen doen. Als gebruiker van deze software moet je opgeven hoeveel lagen je netwerk heeft en hoeveel neuronen in iedere laag en wat het netwerk moet optimaliseren. Bij dit probleem is dat het aantal correct voorspelde cijfers. Het gebruikte netwerk Hieronder staat het netwerk dat in deze app gebruikt wordt om te trainen. De invoerlaag bevat 784 cellen die allen zijn verbonden met de eerste laag met 32 neuronen. Deze 32 neuronen zijn allemaal verbonden de tweede laag van 18 neuronen. De laag daarna is de outputlaag. met 10 cellen. In de afbeelding hieronder wordt het cijfer 9 aangeboden. Je ziet dan in de verschillende lagen neuronen oplichten. In de achterste laag zie je het bolletje bij de 9 oplichten. In het computernetwerk zijn er 25818 parameters die zo aangepast kunnen worden om zo goed mogelijk te voorspellen.
Zodra het netwerk klaar is met het trainen, wordt er elke seconde een handgeschreven letter uit de database aangeboden aan het netwerk. Het netwerk berekend dan voor elk cijfer van 0 tot 9 de kans op dat cijfer. Het cijfer met de hoogste kans wordt dan het gekozen cijfer. De 10 kansen op de cijfers staan onder het voorspelde cijfer Als er een foute voorspelling door het netwerk gedaan wordt, wordt de voorspelling rood gekleurd. Als je wilt kun jet het proces stoppen en onderzoeken wat de reden zal zijn voor de fout.
Zelf cijfers tekenen.
Op het scherm staan 28*28=784 hokjes. In het begin zijn alle hokjes zwart en staat er het getal 0 in. Zodra je met de muis gaat tekenen, worden de hokjes waarin de muis komt wit (waarde 255). Eigenlijk wordt ieder hokje opgedeeld in een 16*16 hokjes. Alle hokjes die dichtbij de plek van de muis staan, worden gekleurd. Het totale aantal aangeraakte hokjes bepaald de grijswaarde van het hokje. Als je eenmaal een cijfer getekend hebt op het grote vierkant, kun je aan het netwerk vragen om zijn voorspelling te doen. Soms gaat het goed maar vaak zal je teleurgesteld zijn. Hoe kan het dat het netwerk zo slecht werkt? Het kan natuurlijk een programmeerfout zijn, maar de meest waarschijnlijke verklaring is dat deze cijfers net op een andere manier gemaakt worden dan in de oorspronkelijke database. Het is heel moeilijk om na te gaan waar het in het proces het fout gaat. Wij weten niet hoe het netwerk beslist. Ervaring leert wel dat als wij nog een behoorlijk aantal van cijfers gemaakt met deze app verzamelen en aan dit netwerk aanbieden, zodat het netwerk de parameters een beetje kan aanpassen, dat de resultaten snel verbeteren. |