Archiv verlassen und diese Seite im Standarddesign anzeigen : Neuronen basteln
Biologische Neuronen funktionieren ganz anders als die Neuronen, die normalerweise in der KI verwendet werden.
Es ist ziemlich interessant, die Funktionsweise von biologischen Neuronen in elektronische Schaltungen umzusetzen und damit z.B. einen Roboter zu steuern. Damit erhält man Rechenwerke, die ganz anders als die üblichen Mikrocontrollerschaltungen funktionieren.
In dieser Anleitung gibt es ein paar praktische Schaltungsbeispiele, wie man so was angeht:
https://www.epubli.de/preview/92362
Ein paar Schmitttrigger oder NE555 reichen.
Was haltet Ihr davon?
Rumgucker
14.11.2019, 06:38
Hallo stochri,
gestern abend glaubte ich noch, dass ich ein Held bin, weil ich bei meinem "GI"-System erkannt hab, wie genau das "Feuern" ablaufen muss. Und nun lese ich bei Dir was von "spiking" und noch vieles andere, was ich zwar in meinem System anders benannt hab, was aber offensichtlich state-of-the-art ist.
Naja... wie Helmut schon schreibt. Es ist nicht falsch, das Rad neu zu erfinden. Dann hat man zumindest begriffen, warum es rund ist.
Viele Grüße
Wolfgang
gestern abend glaubte ich noch, dass ich ein Held bin, weil ich bei meinem "GI"-System erkannt hab, wie genau das "Feuern" ablaufen muss. Und nun lese ich bei Dir was von "spiking" und noch vieles andere, was ich zwar in meinem System anders benannt hab, was aber offensichtlich state-of-the-art ist.
Ich halte das Gebiet der "Spiking Neurons" ( die ich lieber Pulsneuronen nenne, damit es nicht so Denglisch klingt ) für das interessanteste Gebiet überhaupt.
Ich beschäftige mich jetzt seit 30 Jahren mit Computer und Mikrocontrollern und mittlerweile ist bei mir eine gewisse Langeweile eingetreten, weil sich die Grundfunktionen der CPUs eigentlich nie wirklich geändert hat. Statt 8- gibt es 32- oder 64 Bit, Pipelining, Multicore, DSP-Funktionen, Branch-Prediction, SIMD Instruktionen und was weiß ich nicht noch alles. Aber grundlegend Neues war nie dabei. Selbst die ganzen neuronalen Netze werden auf klassischen Rechnerstrukturen gerechnet ( auch in den KI-Beschleunigern der FPGAs und MCUs ).
Mit den Pulsneuronen ändert sich das: Hier tut sich im Moment gerade ein riesiges Fenster auf. Die Verarbeitung funktioniert dort vollständig anders und sie wird in der obigen Schrift ziemlich kompakt zusammen gefasst.
Wenn man allerdings die Frage nach der Anwendbarkeit der Pulsneuronentechnik stellt, dann ist das ein wenig wie beim Verbrennungs- gegen Elektromotor: Der Verbrennungsmotor liegt vorne, weil er einfach eine viel längere Entwicklungsgeschichte hinter sich hat. Genau so ist es mit der KI: die klassische Rechnertechnik wird noch eine Ganze Zeit einen Vorsprung haben ( aufgrund der hoch optimierten Hardware ), wer sich aber für die nächste Generation interessiert, der sollte sich mal die Pulsneuronen ansehen.
Das Schöne bei den Pulsneuronen ist auch, dass noch nicht alle Verfahren bekannt sind. Hier tut sich als ein großes, ergiebiges Gebiet für eigene Experimente auf.
Rumgucker
14.11.2019, 10:00
Hallo stochri,
die Nerven in der Natur arbeiten simultan und ihre Dendriten können wachsen und verkümmern.
Parallelität geht mit CPLD/FPGA - aber nur ganz wenig. Und Dendriten-Wachstum können CPUs mühsam mit ihren GPU-Matrizenmultiplikationen simulieren. Leider gibts noch keine FPGA-GPUs, so dass die Lösung beider Probleme auf einen Schlag gelingt.
Die Struktur unserer Chips passt einfach nicht richtig zur Natur. Daran können auch die Pulsneuronen nicht wirklich was verbessern, denn sie verbessern nicht die beiden großen Einschränkungen.
Entweder man konstruiert Chips, die die Hirne besser nachbilden können oder man erschafft sich ein gänzlich neuartiges Verarbeitungsmodell. Wendet sich also ab von der Nachahmung der Natur und hin zu einer Darstellung, die besser zu den vorhandenen Chips passt.
Viele Grüße
Wolfgang
Das stimmt (Nerven in der Natur) : ihre Dendriten können wachsen und verkümmern.
Bei Feed-Forward und Backpropagation-NNs macht man das so, dass man zunächst alle möglichen denkbaren Verbindungen ("Dendriten") aufspannt, und dann im Training entweder einzelne Verknüpfungen aktiviert ("wachsen") oder deaktiviert ("absterben" lässt). "Abgestorbene" Dendriten haben dann ein Aktivierungsgewicht=0, sie können aber bei neuem Training erneut aktiviert werden ("neu wachsen") oder bislang aktivierte dann auch deaktiviert werden ("absterben").
Parallelität/Simultanität von Funktionen und Prozessen ist bei single-Thread Programmen nicht möglich, Pseudoparallelität auf Singlecore-cpus geht aber mit preemptivem Multithreading (z.B. pthread oder std::thread) und echte Paralleltät geht auf Multicore-cpus (ebenfalls pthread oder std::thread, z.B. auf Dualcore ESP32 oder Quadcore-Raspis).
die Nerven in der Natur arbeiten simultan und ihre Dendriten können wachsen und verkümmern.
Parallelität geht mit CPLD/FPGA - aber nur ganz wenig. Und Dendriten-Wachstum können CPUs mühsam mit ihren GPU-Matrizenmultiplikationen simulieren. Leider gibts noch keine FPGA-GPUs, so dass die Lösung beider Probleme auf einen Schlag gelingt.
Genau so ist es. Im SNN-Pulsneuronenbuch wird das ziemlich genau heraus gearbeitet. Dort werden ein paar Neuronen im FPGA implementiert um zu sehen, wie viele Logikblöcke sie brauchen. Allerdings merkt man bald, dass FPGAs ( obwohl sehr flexibel und schnell ) doch strukturelle Einschränkungen haben. Deshalb beschäftigt sich die Arbeit auch mehr mit verschiedenen Analogschaltungen, welche die Neuronen nachbilden.
Die Struktur unserer Chips passt einfach nicht richtig zur Natur.
Soweit OK, aber
Daran können auch die Pulsneuronen nicht wirklich was verbessern, denn sie verbessern nicht die beiden großen Einschränkungen.
Das wiederum sieht man anders, wenn man das SNN-Pulsneuronenbuch gelesen hat. Die Neuronen selbst sind ja nicht die Verkabelung.
Entweder man konstruiert Chips, die die Hirne besser nachbilden können oder man erschafft sich ein gänzlich neuartiges Verarbeitungsmodell. Wendet sich also ab von der Nachahmung der Natur und hin zu einer Darstellung, die besser zu den vorhandenen Chips passt.
Das wiederum ist richtig. Es gibt ziemlich intensive Forschungsanstrengungen von IBM und Intel zu Struktur neuer Chips, die ebenfalls im SNN-Pulsneuronenbuch beschrieben werden.
Neuronen-Netze in der Natur sind allerdings auch nicht immer identisch gebaut oder gar lernfähig wie die in Wirbeltieren:
Der Fadenwurm Caenorhabditis elegans z.B. hat ein neuronales Netz aus ca. 300 Nervenzellen, die NICHT lernfähig sind (Ihre Verbindungen samt Gewichten sind/werden fest vererbt (CMIIW) ): so gesehen sind lernfähige KNN diesen sogar in dieser Beziehung überlegen.
Sein Nervensystem wurde inzwischen auch schon komplett als KNN nachgebaut.
In Wirbeltieren allerdings gibt es neben lernfähigen Neuronen samt ihrer neu wachsenden und/oder absterbenden Dendriten durchaus auch neu wachsende Nervenzellen (aus Stammzellen), und ntl können sie auch unwiederbringlich endgültig absterben, und außer trainierbaren, hemmenden oder aktivierenden Zwischenneuronen gibt es auch noch hemmende oder aktivierende Gliazellen, die ebenfalls wachsen oder sterben können, aber nicht trainierbar sind.
Wie man sieht, ist alles deutlich komplizierter als man auf den ersten Blick denken mag 8)
Rumgucker
14.11.2019, 12:41
Hallo stochri,
gepulste neuronale Netze gibts angeblich schon seit 1952. Das scheint nur eine spezielle Spielart von ganz vielen zu sei. Aber interessanter Satz in Wikipedia:
So ist beispielsweise nicht abschließend geklärt, ob die Informationen durch die Feuerrate oder durch eine zeitliche Codierung übertragen werden.
Beim GI hab ich erkannt, dass die zeitliche Nähe eines Impulses an einer kurz vor dem Abfeuern stehenden hocherregten Zelle wichtig ist. So hat das Neuron eine Chance, sich an die Axone anzukoppeln, deren Impulse ihr bestmöglich "nützlich" sind.
Ein Autofahrer dreht das Lenkrad nicht nach links, weil er am gleichen Morgen die Milch vor die Tür gestellt bekam, sondern weil ihm ne halbe Sekunde vorher ein Kind von rechts vor den Wagen lief.
Diese Information "Kind kommt von rechts" befindet sich nicht unbedingt in der Schicht davor, sondern kann sich irgendwo in einem ganz anderen Cluster des Hirns befinden. Wahrscheinlich sogar sehr nah dran an den Sensoren, denn eine Mustererkennung "Kind" oder "Auto" oder "Oma" oder "Tiger" ist eigentlich unbedeutend. Wichtig ist doch nur, dass "etwas" von rechts kommt, dem ich ausweichen muss.
Weiterhin erkennt man bei diesem Gedankenexperiment, dass es nicht nur auf zeitliche Korrelation sondern auch auf Deltas ankommt. "Es kommt etwas von rechts" ist viel wichtiger als die Information, dass "rechts etwas steht". Unser Hirn scheint also auf den unteren Ebenen viel mit Differentiation zu arbeiten. Diese Impulsflanken müssen zeitlich exakt sein.
Viele Impulse entstehen im Netzwerk automatisch, weil auch andere Zellen in angespannter Situation gleich mitfeuern. Ein vors Auto springendes Kind kann ein regelrechtes Nervengewitter auslösen, bei dem man sein ganzes Leben an sich vorbeihuschen sieht. Ob eine Zelle bei Erregung mehrfach feuern muss, weiß ich noch nicht so genau. In der fehlerhaften Natur sicher. Aber auch in einem störungsfreien Computer, bei dem jede Aktivität das Netzwerk belastet?
Auf höheren, abstrakteren Ebenen des Hirns gehts dagegen nicht mehr um Impulse. Da scheints um ruhige Integration zu gehen. Hier "reifen" Pläne und Strategien. Von dem Areal bin ich noch ganz weit weg. Außerdem müsste man, um sowas programmieren zu können, intelligenter als das Objekt sein. Da komm ich schnell an meine Grenzen. Aber Impulse spielen "da oben" nicht mehr die Rolle, wie in den untereren animalischeren Regionen der Nerverei.
Spiked neuronal networks sind in meinen Augen nicht die universellen Problemlöser. Sie werden einige Spezialaufgaben gut lösen können. Nach meinem Dafürhalten in den zeitkritischen Bereichen. Auch das simple Perceptron löst einige Spezialaufgaben bestens. Hauptsächlich im Bereich der Mustererkennung. Und andere Topologien werden auch ihre speziellen Domänen nachgewiesen haben.
Gesucht ist aber eine Standardlösung. Seit zig Jahrzehnten.
Viele Grüße
Wolfgang
die zeitliche Dimension wird bei mehr- oder vielschichtigen BP Netzen durch zusätzliche rückkoppelnde Neuron-Schichten modelliert (z.B. Jordan- oder Elman Netz).
Wird ein natürliches Neuron erregt, so werden dann auch nicht alle Vesikel mit Neurotransmittern in der Synapse seines Axons komplett geleert, sondern nur einige (und diese auch nur teilweise), wodurch die Neurotransmitter u.U. noch nicht in ausreichender Menge an die postsynaptischen Rezeptoren binden, und erst wiederholte Erregung(en) führt(en) dann zu einer so starken Neurotransmitter-Konzentration im synaptischen Spalt, sodass dann auch der Dendrit des nachgeschalteten Neurons erregt (depolarisiert) wird.
- - - Aktualisiert - - -
PS
auch hier kommt noch eine weitere zeitliche Kompenente hinzu:
Die Neurotransmitter im synaptischen Spalt werden laufend wieder rückresorbiert oder enzymatisch inaktiviert, so dass nur sehr kurzfristige schnelle Wieder-Erregungen zu einer ansteigenden Neurotransmitter-Konzentration führen - ist die Zeit dazwischen zu lang, werden die Karten neu gemischt...
Rumgucker
14.11.2019, 13:53
Hallo HaWe,
mal ein zentrales "Danke"!
Dieses Forum wäre bzgl. der KI regelrecht entkernt, wenn Du nicht bei uns wärst.
Viele Grüße
Wolfgang
- - - Aktualisiert - - -
Hallo stochri,
LTSpice kennt vermutlich jeder. Kostenloses Schaltungssimulationsprogramm, problemlos zu laden und extrem weit verbreitet.
Eigentlich müsste man damit auch unschwer KNN und Neuronen unterschiedlicher Technologie simulieren können. Ohne 555- und ST-Rumgelöte.
Gabs hier im Forum mal Arbeiten in dieser Richtung?
Das wär doch ne feine und höchst anschauliche Sache, finde ich.
Ich wär dabei. LTSpice und ich verstehen uns recht gut.
Viele Grüße
Wolfgang
Beim GI hab ich erkannt, dass die zeitliche Nähe eines Impulses an einer kurz vor dem Abfeuern stehenden hocherregten Zelle wichtig ist. So hat das Neuron eine Chance, sich an die Axone anzukoppeln, deren Impulse ihr bestmöglich "nützlich" sind.
Das wäre im Kapitel 2.6.8 "Synaptische Plastizität" unter dem genaueren Begriff "STDP Spike Time Dependent Plasticity" im Pulsneuronenbuch zu finden.
Ich finde aber, dass es heutzutage etwas zu viel KI-Hype gibt. Wenn man immer nur die Frage stellt, wie kann ich möglichst viel Intelligenz in meine Maschine bekommen, übersieht man möglicherweise grundlegende Zusammenhänge.
Die Entwicklung der Computer entstand mathematischen Überlegungen mit den Zahlen 0 und 1. Man hat dann Schaltungen wie UND, ODER, NICHT gebaute und dann später alles daraus folgende.
Man könnte die Frage ja auch abändern und fragen: Brauche ich zum Bau von Computern eigentlich diese Art von Mathematik und den dazu gehörigen Schaltungen? Kann ich vielleicht auch in die Natur schauen, dort sehe ich Neuronen und könnte ich damit einen Taschenrechner bauen? Was wäre, wenn zum Beginn der Computerentwicklung die heutigen Erkenntnisse zur Funktion der Neuronen bekannt gewesen wäre? Hätte sich dann die Computertechnologie völlig anders entwickelt? Was brächte es für Vorteile?
Wer sich für diese Art der Fragestellung und deren Auflösung interessiert, ist mit dem SNN-Pulsneuronenbuch richtig ( ich schreibe den Titel hier immer aus, weil die Forensoftware sonst immer auf Amazon auf irgend ein anderes Werk verlinkt ).
Rumgucker
14.11.2019, 14:35
Die Forensoftware hat meinen letzten Beitrag auf der Seite 1 noch ungefragt um einen Nachtrag erweitert, in dem ich die Frage stellte, ob wir nicht mal Neuronen bzw. kleine Netze mit LTSpice basteln wollen?
für mich persönlich nicht interessant:
Ich bleibe vorerst bei C++ und den BP Netzen, künftig eher auf ESP32 und Raspi, und hier fehlt zum Training und zum Erkennen von Mustern ein leistungsfähiges Userinterface/Dashboard samt "echter" Inputs wie z.B. über eine USB-Cam.
Die Forensoftware hat meinen letzten Beitrag auf der Seite 1 noch ungefragt um einen Nachtrag erweitert, in dem ich die Frage stellte, ob wir nicht mal Neuronen bzw. kleine Netze mit LTSpice basteln wollen?
Ja, das Forum wird wohl über Werbeeinnahmen mit Links finanziert und so versucht es halt, überall einen Link zu setzen.
Was LtSpice betrifft: klar man die Neuronen auf ein Modellsymbol reduzieren. Das wird im B-u-c-h ;-) auch so gemacht, weils ein wenig umständlich ist, immer die ganze Schaltung für jedes einzelne Neuron zu zeichnen.
Rumgucker
14.11.2019, 17:08
Hallo stochri,
die "archaischen" Quellen von LT-Spice können mehrdimensionale Polynome berechnen. Nichts anderes wird bei den KNN-Matrizenoperationen gerechnet. LTSpice müsste also Mustererkennung trainieren können.
Man kann aber auch das "Einlernen" einfach durch das Ziehen von Verbindungen durchführen, wenn man das ganze iterative Matrixrumgerechne umgehen will. Das geht in Spice natürlich viel eleganter als mit dem Lötkolben.
In Deiner Leseprobe kann ich kaum was entziffern. Aber Du sprachst von Timern und Triggern. Und offensichtlich hat der Autor damit irgendeine Kiste zusammengedröselt, die irgendwas tut. Auch das kann man mit Spice unschwer simulieren.
Ich halte LTSpice für geeignet, um damit KNN zu probieren. Ohne Programmierung und ohne Lötkolben und bei optimaler Überprüfbarkeit aller Signale.
Wie man das dann aufzeichnet und zu Modulen vereinigt, ist zweitrangig. Es geht einfach um ein kostenloses Lernsystem für KNN ganz unterschiedlicher Technologie. Ideal zum rumspielen und probieren. Eben "Neuronen basteln", wie im Thread angeregt.
So hatte ich mir das gedacht.
Viele Grüße
Wolfgang
für mich persönlich nicht interessant:
Ich bleibe vorerst bei C++ und den BP Netzen, künftig eher auf ESP32 und Raspi, und hier fehlt zum Training und zum Erkennen von Mustern ein leistungsfähiges Userinterface/Dashboard samt "echter" Inputs wie z.B. über eine USB-Cam.
Ich hatte mir auch lange überlegt, alles auf dem Mikrocontroller zu machen. Man ist dann sehr flexibel und kann die Programme schnell ändern, ohne das man löten muss ( Das war tatsächlich der Grund, warum ich mir als junger Elektronikbastler einen Computer gekauft habe: weniger löten ).
Ich habe aber festgestellt, dass den Neuronen nachgebildeten Schaltungen auf dem Labortisch ganz andere Eigenschaften entwickeln, an die man vorher so nicht denkt. Mit Elektroniksimulationen wie LtSpice kommt man schon ein ganzes Stück weit, vor allem weil es einem auch zwingt, nicht in den gewohnten Strukturen der Programmiertechnik zu denken. Aber am Schluss kann man dann am realen Versuchsaufbau doch noch ganz unerwartete Eigenschaften entdecken. Klar, wenn man die dann hat, kann man die auch wieder in Softwaremodelle gießen, falls die Rechenleistung des Controllers dann noch reicht ;-) .
Hier der Link auf Wolfgangs Beitrag, in dem er intuitiv ein neuronales Netz aus Integrate-And-Fire Neuronen entworfen hat:
https://www.roboternetz.de/community/threads/74213-GI-Guckis-Intelligenz/page4?p=656399&viewfull=1#post656399
Rumgucker
17.11.2019, 10:22
Hallo stochri,
vielen Dank für die Lorbeeren.
Das ist mir aber angesichts der nur 20 relevanten Zeilen und angesichts der Bugs und Eseleien, die ich auf diesen nur 20 Zeilen mittlerweile repariert hab, schon peinlich.
Wir sollten skeptisch bleiben, bis die Zeilen nachprüfbar funktionieren. Als Dekoder oder autonomes System oder sonstwas. Denn es wurde schon viel von Laien erdacht, was sich im Ansatz gut anhörte, sich dann aber letztlich als nur warme Luft herausstellte.
Aber zum Glück bin ich ja nicht allein sondern weiß Euch an meiner Seite. Die Chancen für das GI-Projekt stehen also bestens.
Viele Grüße
Wolfgang
vielen Dank für die Lorbeeren.
Das ist mir aber angesichts der nur 20 relevanten Zeilen und angesichts der Bugs und Eseleien, die ich auf diesen nur 20 Zeilen mittlerweile repariert hab, schon peinlich.
Dein Vorgehen halte ich für ziemlich gut: Reduktion auf das Wesentliche.
Falls Du doch noch mal etwas Inspiration brauchst...
Gestern habe ich dieses Video gefunden:
https://www.youtube.com/watch?v=gX9NqDuwTnA
In Minute 12 wird das Lernen der Synapsen erklärt und ab Minute 21 sieht man, dass das "Zahl der Links" Problem auch dort vorhanden ist.
Rumgucker
19.11.2019, 13:02
Moin stochri,
vielen Dank für Deine Anregungen und auch den Link.
Aber ich bin so voll von Kopfkino, dass ich erstmal mit eigenen Anregungen, Fragen und Faszinationen komplett ausgelastet bin.
Ich steh praktisch mit großen Kinderaugen inmitten eines Süßigkeitengeschäftes. Faszination pur. Da hab ich noch keinen Sinn für das Süßigkeitengeschäft auf der anderen Straßenseite. Erstmal wird hier alles weggefuttert, was ich bekommen kann.
Ich hab mir aber ein Lesezeichen gesetzt und gucks mir an, wenn ich meinen internen Stack abgearbeitet hab...
---------
Die Versuchung ist sehr groß, den Mini-Code mit kleinen Spezialitäten verwachsen zu lassen. Aber das würde nicht lange dauern und man hat ein Code-Monster erschaffen, das man nicht mehr pflegen kann. Lieber zehn Stunden nachdenken, damit man eine Codezeile weglassen kann als schnell eine Zeile hinzutippen und dann zehn Stunden lang zu analysieren, warum das System plötzlich Mist baut.
---------
Zur Zeit finde ich die Mutation der Undierung zur Oderierung faszinierend:
Ich hab z.B. eine Zelle mit zwei Links, die nur gemeinsam die Zelle zünden können. Aber dadurch werden die Links immer "nützlicher". Und so dauert es nicht lange, bis die Zelle von einem einzigen Link gezündet werden kann.
Ich weiß nicht, ob das ein prinzipielles Problem bei den KNN-Gewichtungs-Zündungsmechanismen ist. Aber zumindest bei Klatschi ist der bisherige Mechanismus Schrott.
Natürlich kann man dieser Mutation entgegenwirken. Durch variable Feuerschwellen-funktionen oder durch trickreichere Strategien bei der Gewichtung. Aber all diese Entgegenwirkungen werden nutzlos bleiben, wenn man nicht die Anzahl der aktiven Links am Zelleingang kennt.
Es fehlt mir also eine Mittelung. Die Zelle muss wissen, von wieviel Dendriten sie Signale bekommt.
Es geht also nicht darum, mit Gewichtungen einen Schwellwert zu überschreiten. Es geht eher darum, mit dem Mittelwert aller Gewichtungen einen Schwellwert zu überschreiten. Dann sollte es keine Verknüpfungsmutationen mehr geben.
Nun guck ich natürlich etwas dumm aus der Wäsche, denn dann müsste ich ja vor dem Zellfeuern einmal im ganzen Netz die Eingangslinks an dieser Zelle durchzählen. Nicht gerade elegant.
Viele Grüße
Wolfgang
Es fehlt mir also eine Mittelung. Die Zelle muss wissen, von wieviel Dendriten sie Signale bekommt.
Es geht also nicht darum, mit Gewichtungen einen Schwellwert zu überschreiten. Es geht eher darum, mit dem Mittelwert aller Gewichtungen einen Schwellwert zu überschreiten. Dann sollte es keine Verknüpfungsmutationen mehr geben.
Ich würde anders herum denken: Man braucht keine Mittelung, sondern die Links müssen mit Gewichten versehen werden. Bei 2 Links bekommt jeder 0,5.
Rumgucker
19.11.2019, 15:44
Hallo stochri,
das ist anfänglich bei mir ja auch genauso. Aber je öfter die Links synchron mit der Zelle feuern, desto größer wird ihre Gewichtung. Bis irgendwann aus dem UND ein ODER wird und schon ein Link zum Zünden der Zelle reicht.
--------
Meine Idee mit der Mittelung ist aber trotzdem Schrott. Denn damit mache ich ein gewünschtes ODER zu einem UND.
Also weitergrübeln....
Viele Grüße
Wolfgang
---------------
Idee: Ich brauch einen Gap zwischen Feuern und Nichtfeuern, in dem nichts an den Gewichten geändert wird. Das krieg ich gut ohne Suche programmiert.
Rumgucker
05.12.2019, 07:03
Moin stochri,
in dem GI-Thread konnte ich das XOR-Problem des einschichtigen Perzeptron-Netzes mit einem einzigen Neuron ohne backpropagtion durch zwei Maßnahmen lösen:
1. kindgerechtes Lernen
2. Abänderung der Aktivierungsfunktion
Der Aktivierungsfunktion hab ich einen Bereich eingeprägt, in dem gefeuert wird. Zell-Summen darunter oder darüber führen zum Schweigen.
Das erinnert mich stark an Deine pulsierenden Zellen, die ich mir als PWM-Modulatoren vorstelle. Unterhalb einer Schwelle komnt nur ab und an ein kurzer (positiver) Impuls aus der Zelle heraus. Oberhalb einer Schwelle kommt ebenso nur ab und an ein kurzer (negativer) Impuls heraus. Nur dazwischen feuert die Zelle heftig.
Wenn ich meine GI-Kenntnis mal übertrage, dann geht es also bei den feuernden Neuronen nicht um eine simple Integration. Sondern um eine Integration der Impulse, also Integration der Differentiation.
Bei diesem Vorgang verschwindet der störende Nullpegel der PWM ganz automatisch. Unter der Strich kommt dann das gleiche heraus, wie beim statischen GI-System.
Demnach muss es also im Hirn so zugehen, dass unsere Synapsen weniger auf konstante Axon-Erregungen als viel mehr auf Erregungs-Änderungen reagieren. Praktisch kleine Kondensatörchen. Und deren differenzierten Impulse mit unterdrücktem Nullwert werden dann in der Zelle integriert.
Und schon passt alles harmonisch zusammen.
Ich fühle mich in der Lage, ein GI-System nicht nur statisch auszugestalten (wie zur Zeit), sondern auch als PWM-Modulator. Es wird sich in beiden Fällen ganz gleich verhalten, wenn man auf dieses Differentiations-Detail achtet. Was natürlich den Charme hätte, dass man ein kleines Stück näher ans natürliche Vorbild heranrückt als ich mit meiner derzeitigen Aktivierungsfunktion.
Eine diffententielle Abarbeitung hätte zusätzlich den Vorteil des "natürlichen NOT". Das Neuron arbeitet wie gewohnt. Aber das ihr nachgeschaltete Kondensatörchen produziert zwei Impulse. Ein Impuls, wenn die Katze auf den Stuhl springt. Und einen weiteren Impuls, wenn die Katze den Stuhl wieder verlässt.
Zur Zeit verwende ich im Gi-System ein unnatürliches NOT. Ich muss dem System erst das Bild von Katze und Stuhl zeigen. Und dann dann das Bild vom Stuhl ohne Katze. Das ist stumpf.
Ich bin also gerade am Scheideweg. Verfolge ich weiter den Weg der statischen Neuronen mit komischer Aktivierungsfunktion. Der allerdings den Vorteil der einfachen Analyse hat.
Oder stelle ich um auf dynamische Zellimpulse. Selbst auf die Gefahr hin, dass ich das System dadurch erstmal wieder unverständlich mach.
Die Zukunft liegt jedenfalls ganz klar im dynamischen System. Dahin soll mein Weg führen.
Viele Grüße
Wolfgang
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.