Hallo an alle! Ich möchte meine Vorstellung vom maschinellen Lernen mit Ihnen teilen.
Die großen Fortschritte beim maschinellen Lernen sind beeindruckend. Faltungsnetzwerke und LSTMs sind cool. Fast alle modernen Technologien basieren jedoch auf der Rückausbreitung des Fehlers. Basierend auf dieser Methode ist es unwahrscheinlich, dass eine Denkmaschine gebaut werden kann. Neuronale Netze bestehen aus so etwas wie einem gefrorenen Gehirn, das ein für alle Mal trainiert wird und nicht in der Lage ist,
das Denken zu
ändern .
Ich dachte, warum nicht versuchen, so etwas wie ein lebendiges Gehirn zu erschaffen? Eine Art Reengineering. Da das Gehirn bei allen Tieren trotz unterschiedlicher Intelligenz aus ungefähr denselben Neuronen besteht, sollte ein Grundprinzip im Mittelpunkt seiner Arbeit stehen.
Was ich über Neuronen nicht weiß
Es gibt mehrere Fragen, auf die ich in der Populärliteratur keine eindeutigen Antworten gefunden habe;
- Natürlich reagiert ein Neuron irgendwie auf Neurotransmitter, aber wie genau? Die einfache Annahme, dass Adhäsionen umso häufiger auftreten, je größer der Neurotransmitter ist, hält der Kritik offensichtlich nicht stand. Wenn dies so wäre, würde die Auslösung eines Neurons die Auslösung mehrerer Nachbarn auslösen, die des nächsten, und in kurzer Zeit würde diese Lawine das gesamte Gehirn erfassen. Aber eigentlich passiert das nicht, gleichzeitig arbeitet nur ein kleiner Teil der Neuronen im Gehirn. Warum?
- Neuronen sind offensichtlich Speichereinheiten, aber wie speichern sie Informationen? Der zentrale Teil des Neurons ist nichts Besonderes: der Kern der Mitochondrien und dergleichen. Axon kann die Spitze nicht beeinflussen, da die Informationen vom Kern nur in eine Richtung gehen. Das einzige, was übrig bleibt, sind Dendriten. Aber wie werden Informationen in ihnen gespeichert? In analoger oder digitaler Form?
- Offensichtlich lernen Neuronen irgendwie. Aber wie genau? Angenommen, Dendriten wachsen an Stellen, an denen sich kurz vor der Spitze viel Neurotransmitter befand. Wenn dies jedoch so ist, wächst das ausgelöste Neuron ein wenig und wenn ein Neurotransmitter das nächste Mal erscheint, ist es das dickste unter den Nachbarn, es absorbiert den größten Teil des Neurotransmitters und funktioniert wieder. Und wieder ein bisschen erwachsen werden. Und so weiter bis ins Unendliche, bis er alle seine Nachbarn erwürgt? Stimmt hier etwas nicht?
- Wenn ein Neuron wächst, sollten die Nachbarn abnehmen, der Kopf ist kein Gummi. Etwas sollte das Neuron austrocknen lassen. Was?
Nur Clustering
Die plausible Antwort auf all diese Fragen scheint mir, dass das Gehirn wie viele einfache Cluster funktioniert. Ist es möglich, einen solchen Algorithmus für eine Gruppe von Neuronen auszuführen? Zum Beispiel die K-Mittel-Methode. Ich muss es nur ein bisschen vereinfachen. Im klassischen Algorithmus werden die Zentren iterativ als Durchschnitt aller betrachteten Beispiele berechnet, aber wir werden das Zentrum unmittelbar nach jedem Beispiel verschieben.
Mal sehen, was wir brauchen, um den Clustering-Algorithmus zu implementieren.
- Cluster-Zentren sind natürlich die Dendriten der Neuronen in unserer Gruppe. Aber wie kann man sich an die Informationen erinnern? Angenommen, die Einheitszelle zum Speichern von Informationen im Dendriten ist das Volumen des Dendritenzweigs in der Synapsenregion. Je dicker der Zweig ist, desto größer ist sein Volumen. Somit kann jeder Dendrit mehrere analoge Größen speichern.
- Komparatoren zur Berechnung der Nähe eines Beispiels. Es ist komplizierter. Angenommen, nachdem die Daten geliefert wurden (Axone haben einen Neurotransmitter ausgestoßen), arbeitet jedes Neuron umso schneller, je mehr gespeicherte Daten (das Zentrum des Clusters) dem angegebenen Beispiel (Anzahl der Neurotransmitter) ähnlich sind. Bitte beachten Sie, dass die Antwortrate eines Neurons nicht durch die absolute Menge des Neurotransmitters beeinflusst wird, sondern durch die Nähe der Menge des Neurotransmitters zu dem in den Dendriten gespeicherten Wert. Angenommen, wenn der Neurotransmitter klein ist, gibt der Dendrit keinen Befehl zum Spike. Es passiert nichts und wenn viel Neurotransmitter vorhanden ist, tritt die Spitze des dendritischen Zweigs früher auf als in anderen dendritischen Zweigen und erreicht den Kern nicht. Aber wenn der Neurotransmitter genau richtig ist, geben alle dendritischen Zweige ungefähr zur gleichen Zeit eine Mini-Spitze ab, und diese Welle verwandelt sich in eine Spitze eines Neurons, das entlang des Axons verläuft.
- Mit einem Komparator mit mehreren Eingängen können Sie die Ergebnisse vergleichen und die besten auswählen. Angenommen, nahe gelegene Neuronen wirken hemmend auf alle Nachbarn. In einer bestimmten Gruppe von Neuronen kann also immer nur eine aktiv sein. Derjenige, der zuerst funktionierte. Da sich die Neuronen in der Gruppe in der Nähe befinden, haben sie den gleichen Zugang zu allen Axonen, die zu dieser Gruppe kommen. Somit arbeitet das Neuron, in dem die gespeicherten Informationen dem fraglichen Beispiel am nächsten sind, in der Gruppe.
- Der Mechanismus der Verschiebung des Zentrums zum Beispiel. Nun, alles ist einfach. Nach der Neuronenspitze ändern alle Dendriten dieses Neurons ihr Volumen. Wo die Konzentration des Neurotransmitters zu hoch war, wachsen die Zweige. Wo es nicht ausreichte, werden Zweige reduziert. Wenn die Konzentration genau richtig ist, ändert sich das Volumen nicht. Das Volumen der Zweige variiert etwas. Aber sofort. Die nächste Spitze ist die nächste Änderung.
Lassen Sie uns den resultierenden Algorithmus in der Praxis überprüfen. Ich habe ein paar Zeilen in Python skizziert. Folgendes passiert mit zwei Dimensionen von Zufallszahlen:
Und hier ist MNIST:
Auf den ersten Blick scheint sich an all dem nichts geändert zu haben. Nun, wir hatten einige Daten am Eingang, wir haben sie irgendwie transformiert und andere Daten erhalten.
Aber es gibt wirklich einen Unterschied. Wenn wir vor der Konvertierung eine Reihe von analogen Parametern hatten, haben wir nach der Konvertierung nur einen Parameter, der gleichzeitig durch einen einheitlichen Code codiert ist. Jedes Neuron in der Gruppe kann einer bestimmten Aktion zugeordnet werden.
Lassen Sie mich ein Beispiel geben: Angenommen, eine Clustergruppe enthält nur zwei Neuronen. Nennen Sie sie "TASTY" und "SCARY". Damit das Gehirn eine Entscheidung treffen kann, muss nur das Neuron „EAT“ mit dem ersten und „RUN“ mit dem zweiten Neuron verbunden werden. Dafür brauchen wir einen Lehrer. Aber jetzt geht es nicht darum, mit einem Lehrer zu unterrichten, ist ein Thema für einen anderen Artikel.
Wenn Sie die Anzahl der Cluster erhöhen, erhöht sich die Genauigkeit allmählich. Ein Extremfall ist die Anzahl der Cluster, die der Anzahl der Beispiele entspricht. Aber es gibt ein Problem, die Anzahl der Neuronen im Gehirn ist begrenzt. Man muss ständig Kompromisse eingehen, entweder Genauigkeit oder Gehirngröße.
Meta-Clustering
Angenommen, wir haben nicht eine Clustergruppe, sondern zwei. In diesem Fall werden die gleichen Werte auf die Eingänge angewendet. Offensichtlich erhalten Sie das gleiche Ergebnis.
Machen wir einen kleinen zufälligen Fehler. Manchmal wählt jeder Clusterizer nicht das nächstgelegene Zentrum des Clusters aus, sondern welches. Dann beginnen sich die Werte zu unterscheiden, im Laufe der Zeit wird sich die Differenz ansammeln.
Und jetzt berechnen wir den Fehler jedes Clusterers. Der Fehler ist die Differenz zwischen dem Eingabebeispiel und der Mitte des ausgewählten Clusters. Wenn ein Clusterer den nächstgelegenen Wert und der andere zufällig ausgewählt hat, hat der zweite einen größeren Fehler.
Fügen Sie der Eingabe jedes Clusterers eine Maske hinzu. Eine Maske ist eine Reihe von Koeffizienten für jede Eingabe. Nicht Null oder Eins, wie es üblicherweise in Masken verwendet wird, sondern eine reelle Zahl von Null bis Eins.
Bevor wir der Eingabe des Clusterers ein Beispiel geben, multiplizieren wir dieses Beispiel mit einer Maske. Wenn beispielsweise eine Maske für ein Bild verwendet wird und die Maske für ein Pixel gleich eins ist, ist sie vollständig transparent. Und wenn die Maske Null ist, ist dieses Pixel immer schwarz. Und wenn die Maske 1/2 ist, ist das Pixel halb abgedunkelt.
Und jetzt die Hauptaktion, werden wir den Wert der Maske proportional zum Clustering-Fehler reduzieren. Das heißt, wenn der Fehler groß ist, werden wir den Wert stärker verringern, und wenn er Null ist, werden wir ihn überhaupt nicht verringern.
Damit die Werte der Masken nicht allmählich auf Null zurückgesetzt werden, werden sie normalisiert. Das heißt, die Summe der Maskenwerte für jeden Eingabeparameter ist immer gleich eins. Wenn etwas in einer Maske weggenommen wird, wird es einer anderen hinzugefügt.
Versuchen wir zu sehen, was am Beispiel von MNIST passiert. Wir sehen, dass die Masken die Pixel allmählich in zwei Teile teilen.
Die resultierenden Masken werden auf der rechten Seite des Bildes angezeigt. Am Ende des Prozesses betrachtet der obere Clusterizer die untere rechte und der untere Clusterizer den Rest der Beispiele. Interessanterweise erhalten wir eine weitere Trennung, wenn wir den Prozess neu starten. Gleichzeitig werden die Parametergruppen jedoch nicht zufällig erhalten, sondern so, dass der Vorhersagefehler verringert wird. Cluster scheinen jedes Pixel ihrer Maske anzuprobieren, und gleichzeitig nimmt das Pixel den Clusterizer auf, für den das Pixel am besten geeignet ist.
Versuchen wir, zweistellige Zahlen einzugeben, die nicht übereinander liegen, sondern wie folgt nebeneinander liegen (dies ist ein Beispiel, nicht zwei):
Jetzt sehen wir, dass die Trennung jedes Mal gleich erfolgt. Das heißt, wenn es eine einzelne gibt, die eindeutig die beste Option zum Trennen von Masken ist, wird sie ausgewählt.
Nur eines ist zufällig, unabhängig davon, ob die erste Maske die linke oder die rechte Ziffer auswählt.
Ich nenne die resultierenden Masken Meta-Cluster. Und der Prozess der Maskenbildung durch Meta-Clustering. Warum Meta? Denn das Clustering besteht nicht aus Eingabebeispielen, sondern aus den Eingaben selbst.
Ein Beispiel ist komplizierter. Versuchen wir, 25 Parameter in 5 Meta-Cluster zu unterteilen.
Dazu nehmen wir fünf Gruppen von fünf Parametern, die durch einen einheitlichen Code codiert sind.
Das heißt, in jeder Gruppe gibt es eine und nur eine Einheit an einem zufälligen Ort. In jedem Beispiel werden immer fünf Einheiten bedient.
In den folgenden Bildern ist jede Spalte ein Eingabeparameter und jede Zeile eine Meta-Cluster-Maske. Die Cluster selbst werden nicht angezeigt.
100 Parameter und 10 Meta-Cluster:
Es funktioniert! An einigen Stellen ähnelt es sogar leicht einem Bild einer Matrix aus dem gleichnamigen Film.
Durch die Verwendung von Meta-Clustering kann die Anzahl der Cluster drastisch reduziert werden.
Nehmen Sie zum Beispiel zehn Gruppen mit zehn Parametern, jede Gruppe hat eine Einheit.
Wenn wir einen Clusterizer haben (keine Meta-Cluster), benötigen wir 10
10 = 10000000000 Cluster, um einen Nullfehler zu erhalten.
Und wenn wir zehn Cluster haben, brauchen wir nur 10 * 10 = 100 Cluster. Dies ähnelt dem Dezimalzahlensystem. Sie müssen nicht für alle möglichen Zahlen eine Notation erstellen, sondern können zehn Ziffern verwenden.
Meta-Clustering ist sehr gut parallelisiert. Die teuersten Berechnungen (Vergleich des Beispiels mit der Mitte des Clusters) können für jeden Cluster unabhängig durchgeführt werden. Bitte beachten Sie, nicht für das Clustering, sondern für das Clustering.
Wie funktioniert es im Gehirn?
Vorher habe ich nur über Dendriten gesprochen, aber Neuronen haben Axone. Und sie lernen auch. Es ist also sehr wahrscheinlich, dass Axone die Masken von Meta-Clustern sind.
Wir fügen der obigen Beschreibung der Dendritenoperation eine weitere Funktion hinzu.
Angenommen, wenn eine Neuronenspitze auftritt, emittieren alle Dendriten irgendwie eine Substanz in die Synapse, die die Konzentration des Neurotransmitters im Dendriten anzeigt. Nicht vom Axon bis zum Dendriten, sondern zurück. Die Konzentration dieser Substanz hängt vom Vergleichsfehler ab. Angenommen, je kleiner der Fehler ist, desto größer ist die Menge der emittierten Substanz. Nun, das Axon reagiert auf die Menge dieser Substanz und wächst. Und wenn die Substanz klein ist, was einen großen Fehler bedeutet, wird das Axon allmählich reduziert.
Und wenn Axone von Geburt an auf diese Weise verändert werden, gelangen sie im Laufe der Zeit nur zu den Gruppen von Neuronen, bei denen ihre Adhäsionen an diese Axone benötigt werden (führen Sie nicht zu großen Fehlern).
Beispiel: Erinnern wir uns an menschliche Gesichter. Lassen Sie jedes Gesicht mit einem Megapixel-Bild darstellen. Dann braucht man für jedes Gesicht ein Neuron mit einer Million Dendriten, was unrealistisch ist. Teilen Sie nun alle Pixel in Meta-Cluster wie Augen, Nase, Ohren usw. ein. Nur zehn solcher Meta-Cluster. Für jeden Meta-Cluster gibt es zehn Cluster, zehn Nasenoptionen, zehn Ohroptionen usw. Um sich an das Gesicht zu erinnern, reicht ein Neuron mit zehn Dendriten. Dies reduziert das Gedächtnis (und das Gehirnvolumen) um fünf Größenordnungen.
Fazit
Und wenn wir nun annehmen, dass das Gehirn aus Meta-Clustern besteht, können wir versuchen, unter diesem Gesichtspunkt einige Konzepte zu betrachten, die dem lebenden Gehirn innewohnen:
Cluster müssen ständig geschult werden, da sonst neue Daten nicht korrekt verarbeitet werden. Um Cluster im Gehirn zu trainieren, wird eine ausgewogene Probe benötigt. Lassen Sie mich erklären, wenn der Winter jetzt ist, dann wird das Gehirn nur aus Winterbeispielen lernen, und die resultierenden Cluster werden allmählich nur für den Winter relevant, und im Sommer wird alles schlecht für dieses Gehirn sein. Was tun? Es ist notwendig, regelmäßig allen Clustern nicht nur neue, sondern auch alte wichtige Beispiele (Erinnerungen an Winter und Sommer) vorzulegen. Und damit diese Gefühle die aktuellen Gefühle nicht beeinträchtigen, müssen Sie die Sinne vorübergehend ausschalten. Bei Tieren spricht man von einem
Traum .
Stellen Sie sich vor, das Gehirn sieht etwas Kleines, GRAU, das läuft. Nach dem Meta-Clustering haben wir drei aktive Neuronen in drei Meta-Clustern. Und dank des Gedächtnisses weiß das Gehirn, dass es köstlich ist. Dann sieht das Gehirn etwas Kleines, BLAUES, das läuft. Aber das Gehirn weiß nicht, ob es lecker oder unheimlich ist. Es reicht aus, den Meta-Cluster, in dem sich die Farben befinden, vorübergehend zu deaktivieren, und es bleibt nur der kleine Cluster übrig, der ausgeführt wird. Und das Gehirn weiß, dass es köstlich ist. Dies nennt man
eine Analogie .
Angenommen, das Gehirn hat sich an etwas erinnert und dann den aktiven Neuronencluster in einer Gruppe in eine andere geändert, während in den verbleibenden Meta-Clustern ein echtes Gedächtnis vorhanden ist. Und jetzt hat das Gehirn bereits etwas eingeführt, was noch nie zuvor gesehen wurde. Und das ist schon eine
Einbildung .
Vielen Dank für Ihre Aufmerksamkeit, der Code ist
hier .