Hoe werkt een neuron en hoe wordt een neuraal netwerk getraind?
In de vorige les heb ik uitgelegd hoe een neuraal netwerk in de basis werkt. Ik wil dat nu wat verdiepen. In de vólgende les kan dan de stap gezet worden naar zogenaamde ‘Recurrent Neural Networks’ (RNN’s), die iets heel slims toevoegen aan het basisidee. Langzaam maar zeker kunnen we dan via zaken als o.a. ‘Transformers’ en ‘Self Attention’ toewerken naar zoiets als ChatGPT.
We weten al dat Neurale Netwerken (NN’s) eerst getraind moeten worden, liefst met grote hoeveelheden data, om vervolgens gebruikt te kunnen worden. We hebben ook gezien dat de kennis van het systeem opgeslagen ligt in de verbindingen tussen de neuronen.
Voordat het trainen gaat beginnen krijgen alle verbindingen een willekeurige waarde. Als er dan iets op de input van het NN wordt aangeboden (bijvoorbeeld de afbeelding van een kat), is de output dus ook willekeurig. Het zal bijvoorbeeld zeggen dat het een hond of een konijn is. Maar misschien ook wel per ongeluk dat het een kat is.
Stel dat dit het NN is, waarbij we een kat aan de input tonen (waarbij pixels of kenmerken eerst worden gecodeerd naar getallen voor de input, zodat het NN ermee kan rekenen).
Hier meent het NN dat de afbeelding waarschijnlijk een hond betreft (62% kans). Dit is duidelijk fout: het is 100% zeker een kat en absoluut geen hond. De fout bij het hond- en kat-outputneuron leiden via een speciaal algoritme (dat ‘backpropagation’ wordt genoemd) tot kleine aanpassingen van alle gewichten, vanaf betreffende outputneuronen helemaal terug tot de inputneuronen.
Vervolgens wordt de volgende afbeelding aangeboden. Dit kan een afbeelding zijn van een andere kat, een hond, of wat dan ook. Steeds wordt de fout berekend, die vervolgens via backpropagation leidt tot aanpassing van de gewichten. Als de som van alle fouten van de gehele trainingset beneden een bepaalde waarde is gekomen, is de training voltooid.
Bij dit alles moet je weten dat de werking van een individueel neuron als volgt is. Het telt simpelweg alle bij hem inkomende ‘signalen’ op en als die waarde boven een bepaalde drempel uitkomt, dan gaat het neuron ‘vuren’ (wordt de output 1). Als dat niet het geval is, blijft de output 0. Die output wordt vervolgens vermenigvuldigd met het gewicht (‘Weight’) van de verbindingen naar alle neuronen in de volgende laag.
In de afbeelding wordt de output van neuron a dus bijvoorbeeld vermenigvuldigd met het gewicht van de verbinding tussen neuron a en b. Dát resultaat vormt dan weer één van de inputsignalen bij neuron b. Neuron b telt álle inputsignalen weer op, gaat al dan niet vuren, etc. Zo propageert de input door het netwerk van input naar output.
Wordt vervolgd…
—————
Hoe kan het dat technologie tegenwoordig zó menselijk lijkt, bovenmenselijk bijna. In deze serie probeer ik dat wonder stapsgewijs te ontrafelen.
Volg de gehele serie op LinkedIn via: #HetWonderVanAI
Of ga naar: https://www.seoguru.nl/seo-blog/category/cursus-ai/
De schrijver van deze cursus is Alain Sadon. Hij is afgestudeerd op Neurale Netwerken, binnen de vakgroep Artificiële Intelligentie van prof. Koppelaar, aan de TU Delft.
Geef een reactie
Je moet inloggen om een reactie te kunnen plaatsen.