Een flinke uitdaging bij neurale netwerken is het toenemende formaat en de hoeveelheid data die nodig lijkt om steeds betere resultaten te krijgen. Zo bestaat gpt-3 al uit 175 miljard parameters. Net iets te groot om op een huiscomputer te proberen :-)
Via SingularityHub kom ik op een nieuwe benadering van neurale netwerken, losjes gebaseerd op het neurale systeem van C. elegans, een klein wormpje. (onderzoek van MIT e Austria’s Institute of Science and Technology). In dit onderzoek lijkt met een veel kleinere configuratie heel goede resultaten te worden bereikt. Met name hebben ze de mogelijkhden voor zelfrijdende systemen uitgetest.
Hier is een eenvoudig voorbeeld van zo'n netwerkstructuur:
In dit geval dus input van 2 sensoren, 3 'inter neuronen', 4 'commondo neuronen' en 1 'motor neuron'. Het lijkt erop dat de 'inter neuronen' gezien kunnen worden als de 1e 'hidden layer' en de 'command neuronen' als de laatste hidden layer. Voor de rest zijn er maar een beperkt aantal, maar specifiek georganiseerde verbindingen. Dit is de definitiencp_arch = wirings.NCP(
inter_neurons=3, # Number of inter neurons
command_neurons=4, # Number of command neurons
motor_neurons=1, # Number of motor neurons
sensory_fanout=2, # How many outgoing synapses has each sensory neuron
inter_fanout=2, # How many outgoing synapses has each inter neuron
recurrent_command_synapses=3, # Now many recurrent synapses are in the
# command neuron layer
motor_fanin=4, # How many incomming synapses has each motor neuron
)
Eens kijken wat er gebeurd als we het model wat vergroten.
Interessant. Ik verwachtte een regelmatiger verdeling van de verbindingen tussen de sensors en de interneurons maar sensor2 wordt nu gelijk aan sensor1 verbonden. (Wat de rood en groene verbindingen betekenen weet ik nog niet. Het is een speciale weergave functie die voor deze nn's is ontwikkeld)
Sensor2 wordt vergelijkbaar verbonden als sensor0. En dat wordt ook gedaan als we nog meer sensoren toevoegen. In de rest van het model worden hier en daar wat extra verbindingen gelegd. O.a.tussen neuron3 en neuron1. Met ook een extra interneuron krijgen we deze configuratie:
Interessant. Ik verwachtte een regelmatiger verdeling van de verbindingen tussen de sensors en de interneurons maar sensor2 wordt nu gelijk aan sensor1 verbonden. (Wat de rood en groene verbindingen betekenen weet ik nog niet. Het is een speciale weergave functie die voor deze nn's is ontwikkeld)
Voor een 1e spoorzoekende robot is deze NCP gebruikt:
Dus het kan wel complexer als je wil :-) Toch zijn er veel minder verbindingen (en neuronen) als in een gangbaar 'fully connected netwerk.' Hier vind ik de verklaring van de groene en rode verbindingen:
synapse_colors = {"excitatory": "tab:green", "inhibitory": "tab:red"}
Nu nog uitzoeken wat dat inhoud.