Méta-clustering avec minimisation des erreurs, et pourquoi je pense que le cerveau fonctionne de cette façon

Bonjour à tous! Je veux partager avec vous mon idée du machine learning.

Les grandes avancées de l'apprentissage automatique sont impressionnantes. Les réseaux convolutionnels et les LSTM sont cool. Mais presque toutes les technologies modernes sont basées sur la propagation inverse de l'erreur. Sur la base de cette méthode, il est peu probable de pouvoir construire une machine à penser. Les réseaux de neurones sont constitués de quelque chose comme un cerveau gelé, formé une fois pour toutes, incapable de changer la pensée.

J'ai pensé, pourquoi ne pas essayer de créer quelque chose comme un cerveau vivant. Une sorte de réingénierie. Étant donné que chez tous les animaux, malgré les différences d'intelligence, le cerveau est composé approximativement des mêmes neurones, un principe de base devrait être au cœur de son travail.

Ce que je ne sais pas sur les neurones


Il y a plusieurs questions auxquelles je n'ai pas trouvé de réponses sans ambiguïté dans la littérature populaire;

  • De toute évidence, un neurone répond en quelque sorte aux neurotransmetteurs, mais comment exactement? L'hypothèse simple selon laquelle plus le neurotransmetteur est grand, plus les adhérences sont fréquentes ne résiste évidemment pas à la critique. S'il en était ainsi, le déclenchement d'un neurone déclencherait le déclenchement de plusieurs voisins, ceux du suivant, et en peu de temps cette avalanche capturerait tout le cerveau. Mais en réalité, cela ne se produit pas, en même temps, seule une petite partie des neurones fonctionne dans le cerveau. Pourquoi?
  • Les neurones sont évidemment des unités de mémoire, mais comment stockent-ils les informations? La partie centrale du neurone n'a rien de spécial: le noyau des mitochondries et similaires. Axon ne peut pas influencer le pic, car les informations ne vont que dans une seule direction, depuis le noyau. Donc, la seule chose qui reste, ce sont les dendrites. Mais comment les informations y sont-elles stockées? Sous forme analogique ou numérique?
  • De toute évidence, les neurones apprennent en quelque sorte. Mais comment exactement? Supposons que les dendrites poussent dans des endroits où il y avait beaucoup de neurotransmetteurs juste avant le pic. Mais si c'est le cas, le neurone déclenché se développera un peu et la prochaine fois qu'un neurotransmetteur apparaîtra, ce sera le plus épais parmi les voisins, il absorbera la plupart du neurotransmetteur et fonctionnera à nouveau. Et encore un peu grandir. Et ainsi de suite à l'infini, jusqu'à ce qu'il étrangle tous ses voisins? Quelque chose ne va pas ici?
  • Si un neurone se développe, les voisins devraient diminuer, la tête n'est pas en caoutchouc. Quelque chose devrait faire sécher le neurone. Quoi?

Cluster juste


La réponse plausible à toutes ces questions me semble que le cerveau fonctionne comme beaucoup de clusters simples. Est-il possible d'exécuter un tel algorithme sur un groupe de neurones? Par exemple, la méthode K-means. Il suffit juste de le simplifier un peu. Dans l'algorithme classique, les centres sont calculés de manière itérative comme la moyenne de tous les exemples considérés, mais nous déplacerons le centre immédiatement après chaque exemple.

Voyons ce dont nous avons besoin pour implémenter l'algorithme de clustering.

  • Les centres de clusters, bien sûr, sont les dendrites des neurones de notre groupe. Mais comment retenir les informations? Supposons que la cellule unitaire pour stocker des informations dans la dendrite soit le volume de la branche dendrite dans la région de synapse. Plus la branche est épaisse, respectivement, son volume est plus grand, plus la valeur est enregistrée. Ainsi, chaque dendrite peut mémoriser plusieurs quantités analogiques.
  • Comparateurs pour calculer la proximité d'un exemple. C'est plus compliqué. Supposons qu'après la soumission des données (les axones ont éjecté un neurotransmetteur), chaque neurone fonctionnera plus vite, plus les données stockées (le centre du cluster) seront similaires à l'exemple donné (le nombre de neurotransmetteurs). Veuillez noter que le taux de réponse d'un neurone n'est pas affecté par la quantité absolue de neurotransmetteur, mais plutôt par la proximité de la quantité de neurotransmetteur avec la valeur stockée dans les dendrites. Supposons que si le neurotransmetteur est petit, alors la dendrite ne donne pas l'ordre de piquer. Rien ne se passe et s'il y a beaucoup de neurotransmetteur, le pic de la branche dendritique se produit plus tôt que dans les autres branches dendritiques et n'atteint pas le noyau. Mais si le neurotransmetteur est juste, alors toutes les branches dendritiques donneront un mini-pic à peu près au même moment, et cette onde se transformera en pic d'un neurone qui ira le long de l'axone.
  • Un comparateur à entrées multiples vous permet de comparer les résultats et de choisir le meilleur. Supposons que les neurones voisins ont un effet inhibiteur sur tous leurs voisins. Ainsi, dans un certain groupe de neurones, un seul peut être actif à tout moment. Celui qui a fonctionné en premier. Étant donné que les neurones du groupe sont proches, ils ont le même accès à tous les axones venant de ce groupe. Ainsi, le neurone dans lequel les informations stockées sont les plus proches de l'exemple en question fonctionnera dans le groupe.
  • Le mécanisme de déplacement du centre vers l'exemple. Eh bien, tout est simple. Après la pointe du neurone, toutes les dendrites de ce neurone changent de volume. Là où la concentration du neurotransmetteur était trop élevée, les branches se développent. Là où elle était insuffisante, les rameaux sont réduits. Là où la concentration est juste, le volume ne change pas. Les volumes de brindilles varient un peu. Mais tout de suite. Le prochain pic est le prochain changement.

Vérifions l'algorithme résultant dans la pratique. J'ai esquissé quelques lignes en Python. Voici ce qui se passe avec deux dimensions de nombres aléatoires:


Et voici MNIST:


À première vue, il semble que tout ce qui précède n'a rien changé. Eh bien, nous avions des données à l'entrée, nous les avons transformées d'une manière ou d'une autre, nous avons obtenu d'autres données.

Mais il y a vraiment une différence. Si avant la conversion, nous avions un tas de paramètres analogiques, alors après la conversion, nous n'avons qu'un seul paramètre, en même temps codé par un code unitaire. Chaque neurone du groupe peut être associé à une action spécifique.

Permettez-moi de donner un exemple: supposons qu'il n'y ait que deux neurones dans un groupe de clustering. Appelez-les «TASTY» et «SCARY». Afin de permettre au cerveau de prendre une décision, il suffit de connecter le neurone «EAT» au premier, et «RUN» au second. Pour cela, nous avons besoin d'un enseignant. Mais maintenant, ce n'est pas ça, enseigner avec un professeur est un sujet pour un autre article.

Si vous augmentez le nombre de clusters, la précision augmentera progressivement. Un cas extrême est le nombre de clusters égal au nombre d'exemples. Mais il y a un problème, le nombre de neurones dans le cerveau est limité. Il faut constamment compromettre, soit la précision, soit la taille du cerveau.

Meta clustering


Supposons que nous ayons non pas un groupe de clustering, mais deux. Dans ce cas, les mêmes valeurs sont appliquées aux entrées. De toute évidence, vous obtenez le même résultat.

Faisons une petite erreur aléatoire. Soit, parfois, chaque clusteriseur sélectionne non pas le centre le plus proche du cluster, mais lequel. Ensuite, les valeurs commenceront à différer, au fil du temps, la différence s'accumulera.


Et maintenant, calculons l'erreur de chaque cluster. L'erreur est la différence entre l'exemple d'entrée et le centre du cluster sélectionné. Si un cluster a sélectionné la valeur la plus proche et l'autre aléatoire, le second aura une erreur plus importante.

Allez-y, ajoutez un masque à l'entrée de chaque cluster. Un masque est un ensemble de coefficients pour chaque entrée. Pas zéro ou un, comme cela est couramment utilisé dans les masques, mais un certain nombre réel de zéro à un.

Avant de donner un exemple à l'entrée du cluster, nous multiplierons cet exemple par un masque. Par exemple, si un masque est utilisé pour une image, alors si pour un pixel le masque est égal à un, c'est comme s'il était complètement transparent. Et si le masque est nul, ce pixel est toujours noir. Et si le masque est 1/2, alors le pixel est à moitié assombri.

Et maintenant l'action principale, nous allons réduire la valeur du masque proportionnellement à l'erreur de clustering. Autrement dit, si l'erreur est importante, alors nous diminuerons la valeur plus fortement, et si elle est nulle, nous ne la réduirons pas du tout.

Afin que les valeurs des masques ne soient pas progressivement remises à zéro, nous les normaliserons. Autrement dit, la somme des valeurs de masque pour chaque paramètre d'entrée est toujours égale à un. Si quelque chose est enlevé dans un masque, il est ajouté à un autre.

Essayons de voir ce qui se passe avec l'exemple du MNIST. On voit que les masques divisent progressivement les pixels en deux parties.


Les masques résultants sont affichés sur le côté droit de l'image. À la fin du processus, le clusteriseur supérieur considère le coin inférieur droit et le clusteriseur inférieur le reste des exemples. Fait intéressant, si nous relançons le processus, nous obtiendrons une autre séparation. Mais en même temps, les groupes de paramètres sont obtenus non pas au hasard, mais de manière à réduire l'erreur de prédiction. Les clusters semblent essayer chaque pixel pour leur masque, et en même temps, le pixel prend le clusterizer auquel le pixel convient le mieux.

Essayons d'entrer deux chiffres, non superposés les uns aux autres, mais situés côte à côte, comme ceci (c'est un exemple, pas deux):

image

Maintenant, nous voyons qu'à chaque fois, la séparation se produit de la même manière. Autrement dit, s'il existe un seul, clairement la meilleure option pour séparer les masques, il sera sélectionné.


Une seule chose sera aléatoire, que le premier masque sélectionne le chiffre de gauche ou celui de droite.

J'appelle les méta-clusters de masques résultants. Et le processus de formation de masques par méta-clustering. Pourquoi meta? Parce que le clustering n'est pas des exemples d'entrée, mais des entrées elles-mêmes.

Un exemple est plus compliqué. Essayons de diviser 25 paramètres en 5 méta-clusters.

Pour ce faire, nous prenons cinq groupes de cinq paramètres codés par un code unitaire.

Autrement dit, dans chaque groupe, il y a une et une seule unité dans un endroit aléatoire. Il y a toujours cinq unités dans chaque exemple servi.

Dans les images ci-dessous, chaque colonne est un paramètre d'entrée et chaque ligne est un masque de méta-cluster. Les grappes elles-mêmes ne sont pas représentées.


100 paramètres et 10 méta-clusters:


Ça marche! À certains endroits, il ressemble même légèrement à une image d'une matrice du film du même nom.

L'utilisation du méta-clustering peut réduire considérablement le nombre de clusters.

Par exemple, prenez dix groupes de dix paramètres, chaque groupe a une unité.

Si nous avons un clusteriseur (pas de méta-clusters), alors nous avons besoin de 10 10 = 10000000000 clusters pour obtenir une erreur nulle.

Et si nous avons dix grappes, nous n'avons besoin que de 10 * 10 = 100 grappes. Ceci est similaire au système de nombres décimaux, vous n'avez pas besoin de trouver une notation pour tous les nombres possibles, vous pouvez le faire avec dix chiffres.

Le méta-clustering est très bien parallélisé. Les calculs les plus coûteux (en comparant l'exemple avec le centre du cluster) peuvent être effectués indépendamment pour chaque cluster. Veuillez noter, non pas pour le clustering, mais pour le cluster.

Comment ça marche dans le cerveau


Avant cela, je ne parlais que des dendrites, mais les neurones ont des axones. Et ils étudient aussi. Il est donc très probable que les axones soient les masques des méta-grappes.

Nous ajoutons une fonction supplémentaire à la description de l'opération dendrite ci-dessus.

Supposons que si un pic neuronal se produit, toutes les dendrites émettent d'une manière ou d'une autre dans la synapse une sorte de substance qui montre la concentration du neurotransmetteur dans la dendrite. Pas de l'axone à la dendrite, mais en arrière. La concentration de cette substance dépend de l'erreur de comparaison. Supposons que plus l'erreur est petite, plus la quantité de substance émise est grande. Eh bien, l'axone réagit à la quantité de cette substance et se développe. Et si la substance est petite, ce qui signifie une grosse erreur, alors l'axone est progressivement réduit.

Et si vous changez les axones dès la naissance même du cerveau, au fil du temps, ils n'iront que vers les groupes de neurones où leurs adhérences à ces axones sont nécessaires (ne conduisent pas à de grosses erreurs).

Exemple: souvenons-nous des visages humains. Que chaque visage soit représenté avec une image mégapixel. Ensuite, pour chaque visage, vous avez besoin d'un neurone avec un million de dendrites, ce qui est irréaliste. Maintenant, divisez tous les pixels en méta-clusters, tels que les yeux, le nez, les oreilles, etc. Seulement dix de ces méta-grappes. Soit dix grappes, dix options de nez, dix options d'oreille, etc. pour chaque méta-grappe. Maintenant, pour se souvenir du visage, un neurone avec dix dendrites suffit. Cela réduit la mémoire (et le volume du cerveau) de cinq ordres de grandeur.

Conclusion


Et maintenant, si nous supposons que le cerveau est constitué de méta-clusters, nous pouvons essayer de considérer de ce point de vue certains concepts inhérents au cerveau vivant:

Les clusters doivent être constamment formés, sinon les nouvelles données ne seront pas traitées correctement. Pour former des grappes dans le cerveau, un échantillon équilibré est nécessaire. Permettez-moi d'expliquer si l'hiver est maintenant, alors le cerveau n'apprendra que des exemples d'hiver, et les grappes résultantes deviendront progressivement pertinentes uniquement pour l'hiver, et en été, tout sera mauvais pour ce cerveau. Que faire à ce sujet? Il est nécessaire de soumettre périodiquement à tous les clusters non seulement de nouveaux, mais aussi d'anciens exemples importants (souvenirs d'hiver et d'été). Et pour que ces sentiments n'interfèrent pas avec les sentiments actuels, vous devez temporairement désactiver les sens. Chez les animaux, cela s'appelle un rêve .

Imaginez, le cerveau voit quelque chose de petit, GRIS, qui court. Après méta-clustering, nous avons trois neurones actifs dans trois méta-clusters. Et grâce à la mémoire, le cerveau sait que c'est délicieux. Ensuite, le cerveau voit quelque chose de petit, BLEU qui court. Mais le cerveau ne sait pas s'il est savoureux ou effrayant. Il suffit de désactiver temporairement le méta-cluster où se trouvent les couleurs, et seul le petit qui s'exécute restera. Et le cerveau sait que c'est délicieux. C'est ce qu'on appelle une analogie .

Supposons que le cerveau se souvienne de quelque chose, puis change le cluster de neurones actif dans un groupe en un autre, tandis que dans les méta-clusters restants, il y a une vraie mémoire. Et maintenant, le cerveau a déjà introduit quelque chose qui n'a jamais été vu auparavant. Et c'est déjà une imagination .

Merci de votre attention, le code est ici .

Source: https://habr.com/ru/post/fr427407/


All Articles