Voor ons hebben onze hersenen geen moeite om naar afbeeldingen van lage kwaliteit (bijv. 28 bij 28 pixels) te kijken en hun betekenis te ontcijferen. We zijn in wezen 'hard bedraad' om patronen te vinden in alles wat we zien.
Elke invoer, in een neuron, wordt vermenigvuldigd met een gewicht (belangrijkheidsfactor) voordat het samen met een afwijking wordt opgeteld.
Om dit getal vervolgens binnen een bepaald bereik te houden, wordt het getal ingevoerd in een activeringsfunctie om de output van het neuron te produceren.
In een feed-forward neuraal netwerk zijn neuronen georganiseerd in lagen, waarbij elk neuron in een laag alleen verbinding maakt met de neuronen van aangrenzende lagen, waardoor een opeenvolgende stapel lagen wordt gevormd.
Gewoonlijk zal elk neuron in een laag verbinding maken met elk neuron van de aangrenzende laag, waardoor een volledig onderling verbonden (dichte) laag van verbindingen wordt gevormd.
784 input neurons (28 x 28 pixels matrix) via dichte laag van 512 neurons naar uitvoer laag van 10 neurons.
512 is een ietwat willekeurige beslissing waar de auteur op terechtkwam tijdens het testen (spelen).
Voor de activeringsfunctie gebruiken we de softmax-functie, waarmee we de activering van de 10 uitvoerneuronen ten opzichte van elkaar kunnen berekenen. (bijvoorbeeld: "Ik ben er 20% zeker van dat dit een 4 is")
Daarna trainen met de trainingsdata
Als we naar het laatste deel kijken, kunnen we zien dat ons neurale netwerk een nauwkeurigheid van 99,08% heeft bereikt met onze trainingsgegevens.
De MNIST-dataset wordt beheerd door Yann LeCun en bevat de 70.000 afbeeldingen van handgeschreven cijfers die we zullen gebruiken om ons neurale netwerk te trainen en te testen.
NIST Special Database 19 - NIST Handprinted Forms and Characters Database. Ze bevat het volledige corpus aan trainingsmateriaal van NIST voor handgedrukte documenten en tekenherkenning. Het publiceert handgedrukte voorbeeldformulieren van 3600 schrijvers, 810.000 karakterafbeeldingen geïsoleerd van hun vormen, grondwaarheidsclassificaties voor die afbeeldingen, referentieformulieren voor verdere gegevensverzameling en softwarehulpprogramma's voor beeldbeheer en -verwerking.
Neurale netwerken De beslissende kracht achter internet Hoe werkt een neuraal netwerk? Tweakers.net 18-12-2017
Een van de eenvoudigste neurale netwerken, in de ruime zin van het begrip, is een netwerk dat handgeschreven cijfers kan herkennen. Uiteraard is input nodig, in dit geval een afbeelding die een raster van 28 bij 28 pixels naar het neurale netwerk stuurt. Niet geheel toevallig bevatten de grootste datasets voor het trainen van neurale netwerken op handschriften ook cijfers in afbeeldingen van 28 bij 28 pixels. Elke pixel heeft een grijswaarde en wij mensen herkennen zonder problemen elke variatie van een cijfer.
Ons neurale netwerk moet echter gaan rekenen en dat doet het allereerst door alle inputs, 28 maal 28, dus 784 grijswaarden, een waarde tussen 0 en 1 te geven (0 - 255 . Let op dat een neuraal net dus niet binair is, maar analoog; een neuron is niet 1 of 0, maar een willekeurige waarde tussen 1 en 0 (0 - 255).
Dit is waar neurale netwerken te hulp schieten. Het idee achter moderne neurale netwerken en alle toepassingen voor machine learning is om gegevens te analyseren en algemene patronen in die gegevens te ontdekken, zodat het voorspellingen kan doen over nieuwe gegevens die het nog niet eerder heeft gezien. [1] Dit betekent dat we een neuraal netwerk kunnen gebruiken om onze computer de patronen in onze afbeeldingen te laten ontdekken, en dat patroon vervolgens kunnen gebruiken om elk beeld te sorteren in het cijfer dat het weergeeft.
Het afdrukken van enkele statistieken over onze NumPy-array vertelt ons dat elke afbeelding (60.000 afbeeldingen in de trainingsset) zich in een matrix van 28 bij 28 pixels bevindt, waarbij elke pixel een waarde heeft tussen 0 en 255 (een 8-bits getal) om onze computers te vertellen hoe "aan" die pixel moet zijn. Hoe hoger de waarde van de pixel, hoe meer "aan" die pixel zal zijn.
Onderzoekers bedachten het concept van CNN of Convolutional Neural Network terwijl ze werkten aan algoritmen voor beeldverwerking. Traditionele volledig verbonden netwerken waren een soort zwarte doos - die alle input opnam en elke waarde doorgaf aan een dicht netwerk dat volgde in een hot output. Dat leek te werken met een kleine set inputs.
Dit begrip leidde tot de convolutionele neurale netwerken. De eerste laag van het netwerk bestaat uit kleine stukjes neuronen die over het beeld scannen en een paar pixels tegelijk verwerken. Meestal zijn dit vierkanten van 9 of 16 of 25 pixels.
Links is een bitmap van een 16x16 monochrome afbeelding. Elke waarde in de matrix vertegenwoordigt de helderheid van de corresponderende pixel. Zoals we kunnen zien, is dit een eenvoudige grijze afbeelding met een vierkant blok in het midden. Wanneer we het proberen te convolueren met het 3x3 filter (in het midden), krijgen we een matrix van 14x14 (aan de rechterkant).
Maar als we werken aan een afbeelding van 1024x768 pixels, hebben we een invoer van 3x1024x768 = 2359296 getallen (RGB-waarden per pixel). Een dicht meerlaags neuraal netwerk dat een invoervector van 2359296 getallen verbruikt, zou ten minste 2359296 gewichten per neuron in de eerste laag zelf hebben - 2 MB aan gewichten per neuron van de eerste laag. Dat zou gek zijn! Zowel voor de processor als voor het RAM. In de jaren negentig en begin jaren 2000 was dit bijna onmogelijk.
https://towardsdatascience.com/convolutional-neural-networks-... Convolutional Neural Networks 18.02.2019
https://www.nist.gov/srd/shop/special-database-catalog Special Database Catalog. NIST develops and provides as free downloads, or sells, Special Databases and Special Software. These databases contain digital data objects such as images, software, and videos. Some of these databases will be designated as SRD Databases.
https://bryanbrattlof.com/you-me-machines-learning/ You, Me & Machines... Learning - Developing our first neural network with Keras 28 August 2019.
In dit essay introduceren we de termen en hoe elk onderdeel van een neuraal netwerk samenwerkt om een klassiek computervisieprobleem aan te pakken: analyseer duizenden MNIST-afbeeldingen van handgeschreven getallen en sorteer ze (met een nauwkeurigheid van 97,88%) in de cijfers die ze vertegenwoordigen .
https://tweakers.net/reviews/5901/3/neurale-netwerken-de-beslissende-kracht-achter-internet-hoe-werkt-een-neuraal-netwerk.html. De beslissende kracht achter internet Hoe werkt een neuraal netwerk? Tweakers.net 18-12-2017
Denk ook aan vroegere keyboard scan-codes waar ik drivers voor heb geschreven. De toetsen van het toetsenbord waren in een matrix opgenomen en elke toetsindruk gaf een unieke (hexadecimale) code welke in een tabel werd omgezet naar een (ASCII-) teken-code als inver voor de computer. Bijv. mijn keyboard op delaptop heeft 102 toetsen zodat 8-bits voldoende zijn. Middels combinaties van Shift, Control en Alt kunnen meer varianten worden gecreeerd zoals kleine / grote letters.
The scancodes in translated scancode set 2 are given in hex. Between parentheses the keycap on a US keyboard. The scancodes are given in order, grouped according to groups of keys that are usually found next to each other.
00 is normally an error code
01 (Esc)
02 (1!), 03 (2@), 04 (3#), 05 (4$), 06 (5%E), 07 (6^), 08 (7&), 09 (8*), 0a (9(), 0b (0)), 0c (-_), 0d (=+), 0e (Backspace)
0f (Tab), 10 (Q), 11 (W), 12 (E), 13 (R), 14 (T), 15 (Y), 16 (U), 17 (I), 18 (O), 19 (P), 1a ([{), 1b (]})
1c (Enter)
1d (LCtrl)
Update 17.05.2023