Comment écrire l'intelligence artificielle. Intelligence artificielle. Contradictions et problèmes de création. Pourquoi l'intelligence artificielle bat les humains

L'intelligence artificielle a créé un réseau de neurones 15 décembre 2017

Nous avons vécu pour voir le moment où l'intelligence artificielle crée son propre réseau de neurones. Bien que beaucoup de gens pensent que c'est la même chose. Mais en fait, tout n'est pas si simple, et maintenant nous allons essayer de comprendre ce que c'est et qui peut créer qui.


Les ingénieurs de la division Google Brain ont fait une démonstration d'AutoML ce printemps. Cette intelligence artificielle est capable de produire sa propre IA unique sans intervention humaine. Il s'est avéré récemment qu'AutoML a pu créer pour la première fois NASNet, un système de vision par ordinateur. Cette technologie surpasse de manière significative tous les analogues précédemment créés par l'homme. Ce système basé sur l'intelligence artificielle peut être un excellent assistant dans le développement, par exemple, de voitures autonomes. Il est également applicable en robotique - les robots pourront atteindre un tout nouveau niveau.

Le développement d'AutoML repose sur un système d'apprentissage par renforcement unique. Nous parlons d'un gestionnaire de réseau de neurones qui développe de manière indépendante des réseaux de neurones complètement nouveaux conçus pour certaines tâches spécifiques. Dans notre cas, AutoML vise à produire un système qui reconnaît les objets dans un tracé vidéo aussi précisément que possible en temps réel.

L'intelligence artificielle elle-même a pu former un nouveau réseau de neurones, surveiller les erreurs et corriger le travail. Le processus d'apprentissage a été répété plusieurs fois (des milliers de fois) jusqu'à ce que le système soit prêt à être utilisé. Curieusement, elle a pu contourner tous les réseaux de neurones similaires actuellement disponibles, mais développés et entraînés par des humains.

Dans le même temps, AutoML évalue les performances de NASNet et utilise ces informations pour améliorer le réseau des filiales ; ce processus est répété des milliers de fois. Lorsque les ingénieurs ont testé NASNet sur des ensembles d'images ImageNet et COCO, il a dépassé tous les systèmes de vision par ordinateur existants.

Google a officiellement annoncé que NASNet reconnaît avec une précision de 82,7%. Le résultat est supérieur de 1,2 % au record précédent, établi par des chercheurs des spécialistes de Momenta et d'Oxford au début de cet automne. NASNet est 4% plus efficace que ses homologues avec une précision moyenne de 43,1%.

Il existe également une version simplifiée de NASNet, adaptée aux plateformes mobiles. Il surpasse les analogues d'un peu plus de trois pour cent. Dans un futur proche, il sera possible d'utiliser ce système pour la production de véhicules autonomes, pour lesquels la disponibilité de la vision par ordinateur est importante. AutoML continue de produire de nouveaux réseaux de neurones héréditaires, s'efforçant de conquérir des sommets encore plus élevés.

Ceci, bien sûr, soulève des questions éthiques liées aux préoccupations concernant l'IA : et si AutoML construisait des systèmes à une vitesse telle que la société ne pourrait tout simplement pas les suivre ? Toutefois plusieurs grandes entreprises essayer de prendre en compte les problèmes de sécurité de l'IA. Par exemple, Amazon, Facebook, Apple et d'autres sociétés sont membres du Partenariat sur l'IA au profit des personnes et de la société. L'Institute of Electrical and Engineering (IEE) a proposé des normes éthiques pour l'IA, et DeepMind, par exemple, a annoncé la création d'un groupe qui traitera des questions morales et éthiques liées aux applications de l'intelligence artificielle.

Cependant, de nombreuses grandes entreprises tentent de prendre en compte les problèmes de sécurité de l'IA. Ceci, bien sûr, soulève des questions éthiques liées aux préoccupations concernant l'IA : et si AutoML construisait des systèmes à une vitesse telle que la société ne pourrait tout simplement pas les suivre ? L'Institute of Electrical and Engineering (IEE) a proposé des normes éthiques pour l'IA, et DeepMind, par exemple, a annoncé la création d'un groupe qui traitera des questions morales et éthiques liées aux applications de l'intelligence artificielle. Par exemple, Amazon, Facebook, Apple et d'autres sociétés sont membres du Partenariat sur l'IA au profit des personnes et de la société.

Qu'est-ce que l'intelligence artificielle ?

Le terme « intelligence artificielle » est inventé par John McCarthy, inventeur du langage Lisp, fondateur de la programmation fonctionnelle et lauréat du prix Turing pour son énorme contribution au domaine de la recherche sur l'intelligence artificielle.
L'intelligence artificielle est un moyen de créer un ordinateur, un robot contrôlé par ordinateur ou un programme capable de penser intelligemment comme un humain.

La recherche sur l'IA est réalisée en étudiant capacités mentales humain, puis les résultats obtenus de cette recherche sont utilisés comme base pour le développement de programmes et de systèmes intelligents.

Qu'est-ce qu'un réseau de neurones ?

L'idée derrière un réseau de neurones est d'assembler une structure complexe à partir d'éléments très simples. Une seule partie du cerveau peut difficilement être considérée comme raisonnable - mais les gens réussissent généralement étonnamment bien aux tests de QI. Néanmoins, jusqu'à présent, l'idée de créer un esprit «à partir de rien» était généralement ridiculisée: la blague sur un millier de singes avec des machines à écrire a déjà cent ans, et si on le souhaite, la critique des réseaux de neurones peut être trouvée même dans Cicéron, qui a suggéré sarcastiquement de lancer des jetons avec des lettres en l'air jusqu'à ce qu'il devienne bleu, de sorte que tôt ou tard un texte significatif apparaisse. Cependant, au 21ème siècle, il s'est avéré que les classiques se moquaient en vain: c'est l'armée de singes avec des jetons qui, avec la persévérance nécessaire, peut conquérir le monde.
En fait, un réseau de neurones peut même être assemblé à partir de boîtes d'allumettes : ce n'est qu'un ensemble de règles simples par lesquelles les informations sont traitées. Un "neurone artificiel", ou perceptron, n'est pas un appareil spécial, mais juste quelques opérations arithmétiques.

Le perceptron ne fonctionne nulle part plus facilement : il reçoit plusieurs nombres initiaux, multiplie chacun par la "valeur" de ce nombre (plus à ce sujet ci-dessous), additionne et, selon le résultat, donne 1 ou -1. Par exemple, nous photographions un champ ouvert et montrons à notre neurone un point de cette image - c'est-à-dire que nous lui envoyons des coordonnées aléatoires sous forme de deux signaux. Et puis nous demandons : « Cher neurone, y a-t-il le ciel ou la terre ? « Moins un », répond le mannequin en regardant sereinement le cumulus. - Il est clair que la terre.

« Pousser votre doigt dans le ciel » est l'occupation principale du perceptron. Vous ne pouvez attendre aucune précision de sa part : vous pouvez tout aussi bien lancer une pièce. La magie commence à l'étape suivante, appelée apprentissage automatique. Après tout, nous connaissons la bonne réponse - ce qui signifie que nous pouvons l'écrire dans notre programme. Il s'avère donc que pour chaque mauvaise estimation, le perceptron reçoit littéralement une pénalité, et pour la bonne, une prime : la « valeur » des signaux entrants augmente ou diminue. Après cela, le programme se déroule le long nouvelle formule... Tôt ou tard, le neurone "comprendra" inévitablement que la terre sur la photo est en dessous et que le ciel est au-dessus - c'est-à-dire qu'il commencera simplement à ignorer le signal du canal par lequel les coordonnées x sont transmises à ce. Si vous glissez une autre photo à un robot aussi sophistiqué, il se peut qu'il ne trouve pas la ligne d'horizon, mais il ne confondra certainement pas le haut avec le bas.

Dans la vraie vie, les formules sont un peu plus compliquées, mais le principe reste le même. Le perceptron ne peut faire qu'une seule tâche : prendre des nombres et les mettre en deux piles. La chose la plus intéressante commence lorsqu'il y a plusieurs de ces éléments, car les numéros entrants peuvent être des signaux d'autres "briques" ! Disons qu'un neurone essaiera de distinguer les pixels bleus des verts, le second continuera à bricoler les coordonnées et le troisième essaiera de juger lequel de ces deux résultats est le plus proche de la vérité. Si vous placez plusieurs neurones sur les pixels bleus à la fois et résumez leurs résultats, vous obtenez une couche entière dans laquelle les « meilleurs élèves » recevront des bonus supplémentaires. Ainsi, un réseau assez étendu peut pelleter toute une montagne de données et prendre en compte toutes ses erreurs.

Un réseau de neurones peut être créé à l'aide de boîtes d'allumettes - vous aurez alors une astuce dans votre arsenal avec laquelle vous pourrez divertir les invités lors de fêtes. Les éditeurs de MirF l'ont déjà essayé - et admettent humblement la supériorité de l'intelligence artificielle. Apprenons à la matière déraisonnable à jouer au jeu des 11 bâtons. Les règles sont simples : il y a 11 matchs sur la table, et à chaque coup, vous pouvez en prendre un ou deux. Le gagnant est celui qui a pris le dernier. Comment jouez-vous cela contre « l'ordinateur » ?

Très simple.

Nous prenons 10 boîtes ou gobelets. Sur chacun, nous écrivons un nombre de 2 à 11.

Nous mettons deux pierres dans chaque boîte - noir et blanc. Vous pouvez utiliser n'importe quel élément tant qu'il diffère les uns des autres. Ça y est, nous avons un réseau de dix neurones !

Le réseau de neurones marche toujours en premier. Tout d'abord, regardez combien d'allumettes il reste et prenez une case avec ce nombre. Au premier coup, ce sera la case #11. Prenez n'importe quel caillou de la boîte requise. Vous pouvez fermer les yeux ou lancer une pièce, l'essentiel est d'agir au hasard.
Si la pierre est blanche, le réseau de neurones décide de prendre deux matchs. Si noir - un. Placez un caillou à côté de la boîte pour ne pas oublier quel « neurone » a pris la décision. Après cela, une personne marche - et ainsi de suite jusqu'à la fin des matchs.

Et maintenant, le plaisir commence : apprendre. Si le réseau remporte la partie, alors il doit être récompensé : jetez un caillou supplémentaire de la même couleur dans ces "neurones" qui ont participé à ce jeu, qui sont tombés pendant le jeu. Si le réseau perd, prenez la dernière case utilisée et enlevez la pierre infructueuse de là. Il se peut que la boîte soit déjà vide - alors le "dernier" neurone est considéré comme le précédent neurone similaire. Lors du prochain jeu, en frappant une case vide, le réseau de neurones se rendra automatiquement.

C'est tout! Jouez à plusieurs jeux comme celui-ci. Au début, vous ne remarquerez rien de suspect, mais après chaque victoire, le réseau fera de plus en plus de mouvements réussis - et après environ une douzaine de parties, vous vous rendrez compte que vous avez créé un monstre que vous ne pouvez pas battre.

Sources:

Dans une série d'articles, nous explorerons de nouvelles approches de l'IA, de la modélisation de la personnalité et du traitement des BIG Data qui ne sont pas disponibles pour la plupart des professionnels de l'IA et du public. La valeur de ces informations est qu'elles sont toutes testées dans la pratique et que la plupart des développements théoriques sont mis en œuvre dans des projets appliqués.

Vous êtes nombreux à avoir entendu parler des technologies modernes qui sont aujourd'hui associées au concept d'intelligence artificielle, à savoir : les systèmes experts, les réseaux de neurones, les algorithmes linguistiques, les systèmes hybrides, les technologies cognitives, la simulation (chat bots), etc.

Oui, de nombreuses entreprises utilisent les technologies ci-dessus pour résoudre les problèmes de traitement de l'information de leurs clients. Certaines de ces entreprises écrivent qu'elles créent ou ont créé des solutions d'intelligence artificielle. Mais est-ce de l'intelligence ?

La première chose que nous allons faire est de définir ce qu'est l'intelligence.

Imaginez qu'un ordinateur doté d'intelligence existe. Et vous avez la possibilité de communiquer avec lui par la voix ou par SMS.
Des questions:
  • Est-il nécessaire d'intégrer des caractéristiques linguistiques dans le programme d'intelligence de l'ordinateur (pour décrire la sémantique, la grammaire, la morphologie) ou pourrait-il apprendre les langues par lui-même grâce à une interaction avec une personne ?
  • Si on vous confiait la tâche d'enseigner une langue à un ordinateur, que feriez-vous ?
  • Si seulement tu participais à la formation, à qui ressemblerait-il ?
Maintenant, répondez à ces questions à nouveau, avec la seule différence que vous auriez à enseigner :
  • Un perroquet pur-sang, théoriquement capable de communiquer.
  • Nouveau-né.
Vous et moi venons de faire un travail intellectuel, et j'espère que beaucoup d'entre vous ont acquis de nouvelles connaissances. Et c'est pourquoi:
  • Tout d'abord, je vous ai demandé d'imaginer (imaginer), "que se passera-t-il si ...". Vous avez agi dans un environnement modifié. Peut-être que vous manquiez d'informations et de connaissances, c'était difficile pour vous.
  • Deuxièmement, vous vous êtes avéré être capable d'apprendre, de cognition, vous avez trouvé vous-même une analogie qui vous est familière ou l'avez rencontrée dans le texte, ou peut-être avez-vous utilisé Internet ou demandé conseil à un ami.
Il existe de nombreuses approches pour définir l'intelligence. Nous allons définir ses principales caractéristiques...

D'abord l'intelligence est la capacité d'apprendre et d'imaginer.

Afin de créer un algorithme de modélisation de l'intelligence, la première chose à faire est de lui donner la capacité d'apprendre, aucune connaissance n'est nécessaire pour y investir.

Revenons à notre exemple enfant afin de décrire plus en détail le processus d'apprentissage.
Quels principes fonctionnent lorsqu'un enfant apprend à comprendre et à parler une langue ?

  1. Plus il entend un mot dans différents contextes, plus vite il s'en souviendra. Le mot qu'il prononcera en premier sera probablement « maman ».
    "Maman t'aime"
    "Maman va te laver les mains"
    "Maman t'embrasse"
    "Où est maman?"
    L'apprentissage se produit en raison de la redondance des données.
  2. Plus les canaux de circulation de l'information sont impliqués, plus la formation est efficace :
    l'enfant entend : « Maman t'aime.
    l'enfant voit le sourire de la mère.
    le bébé sent la chaleur venant de la mère.
    le bébé goûte et sent le lait maternel.
    l'enfant dit "Maman".
  3. L'enfant ne pourra pas reproduire le mot correctement tout de suite. Il va essayer, essayer. "M", "Ma", "Maman", "M" ... "Maman". L'apprentissage se fait dans l'action, chaque tentative ultérieure est ajustée jusqu'à ce que nous obtenions le résultat. Méthode d'essai et d'erreur. Obtenir un retour de la réalité est très important.
  4. N'éduquez pas vos enfants, ils seront toujours comme vous. L'enfant s'efforce d'être comme les gens qui l'entourent. Il les imite et apprend d'eux. C'est l'un des mécanismes de modélisation de la personnalité, dont nous parlerons plus en détail dans les articles suivants.

Quel est le rôle de l'imaginaire ?

Imaginez que vous conduisez sur une route inconnue. Passer le panneau de limitation de vitesse à 80 km/h. Continuez et vous voyez un autre panneau de limitation de vitesse, mais il est éclaboussé de boue et presque impossible à distinguer. Vous roulez à une vitesse de 95 km/h. Que ferez-vous? Pendant que vous preniez une décision, un policier a regardé de derrière les buissons et vous avez vu un sourire radieux sur son visage. L'«image du signe» s'est instantanément complétée dans votre tête, et vous avez compris pourquoi il y a un policier ici, et qu'il vous faut d'urgence appuyer sur le frein. Vous baissez la vitesse à 55 km/h, le sourire du visage du policier disparaît instantanément, et vous continuez à rouler.

Et un de plus exemple intéressant travail d'imagination du règne animal est l'observation des pies. La pie a enterré de la nourriture dans le désert devant les autres pies. Toutes les pies se sont envolées, mais notre pie est retournée dans le désert et a caché la nourriture. Que s'est-il passé? Elle a imaginé (imaginé), "ce qui se passera si" une autre pie arrive, qui a vu où elle a caché la nourriture. Elle a simulé la situation et a trouvé une solution pour l'éviter.

L'imagination modélise une situation en termes arbitraires.

Comme vous l'avez déjà vu, l'intelligence n'est pas une base de connaissances, ce n'est pas un ensemble de réactions programmées ou suivant des règles prédéfinies.

L'intelligence est la capacité d'apprendre, de connaître et de s'adapter à des conditions changeantes dans le processus de résolution de difficultés.

Il ne vous semble pas qu'en définissant l'intelligence nous ayons perdu de vue composants importants ou oublié de parler de quelque chose?

Oui, nous avons manqué de perception et oublié de parler de mémoire.

Imaginez que vous regardez à travers un judas et voyez une partie d'une lettre :

Quelle est cette lettre ?

Peut-être « K » ?

Bien sûr que non, c'est le hiéroglyphe japonais pour "éternité".

Vous venez de recevoir une tâche (problème). Très probablement, vous avez trouvé une image similaire de la lettre "K" dans votre tête et vous vous êtes calmé.

Votre intellect perçoit tout avec des images et recherche une image similaire en mémoire, si elle n'est pas là, alors une ancre se forme sur les images existantes et grâce à cela, vous vous souvenez de nouvelles informations, acquérez des compétences ou de l'expérience.

Une image est une vision subjective du monde réel, perçue à l'aide des sens (canaux de circulation de l'information).

La perception est subjective, car elle dépend de la séquence de formation, de la séquence d'apparition des images dans la vie d'une personne et de leur influence.

La perception commence par la reconnaissance des motifs clairs/sombres. Yeux ouverts - clairs, fermés - sombres. De plus, une personne apprend à reconnaître des images de plus en plus complexes - "maman", "papa", une balle, une table, un chien. Nous recevons des données de référence et toutes les images suivantes sont une superstructure au-dessus des précédentes.

De ce point de vue, l'apprentissage est le processus de construction de nouvelles relations entre des images perçues et des images déjà en mémoire.

La mémoire est utilisée pour stocker les images et leurs relations.

UNE l'imagination est la capacité de compléter une image inachevée.

Pour résumer, voici une autre expérience du monde animal :

Les chimpanzés ont été placés dans une cage et un régime de bananes a été suspendu à l'intérieur de la cage assez haut par rapport au sol. Le chimpanzé a d'abord sauté, mais s'est rapidement fatigué et a semblé se désintéresser des bananes et s'est assis, leur prêtant à peine attention. Mais au bout d'un moment, le singe a pris le bâton laissé dans la cage et a secoué les bananes jusqu'à ce qu'elles tombent. Une autre fois, pour obtenir des bananes, le chimpanzé a réussi à connecter deux bâtons, car chaque bâton individuellement ne suffisait pas pour les atteindre. L'animal a également fait face à une tâche plus difficile, plaçant de manière inattendue une boîte sous les bananes et l'utilisant comme marche.

On a montré aux chimpanzés l'image familière d'un « régime de bananes ». Mais l'image pour elle s'est avérée incomplète - ils ne peuvent pas être atteints et mangés. Mais comme il s'agissait de la seule source de nourriture disponible, l'image inachevée augmentait la tension intérieure et nécessitait d'être complétée.

Les moyens de résoudre le problème (compléter l'image) étaient toujours disponibles, mais l'émergence d'une solution nécessitait de transformer les images existantes (il fallait apprendre à l'aide de l'imagination). Le chimpanzé devait imaginer (mentalement lister toutes les options possibles) : « qu'arrivera-t-il si je prends un bâton », « qu'arrivera-t-il si… » et les hypothèses les plus probables à vérifier en pratique, essayer d'avoir des retours, encore imaginer , essayez, obtenez une communication de rétroaction et ainsi de suite jusqu'à ce que nous ayons terminé l'image (apprendre).

Si la reconnaissance de l'image du hiéroglyphe « éternité » était une question de vie ou de mort pour vous, alors vous trouverez sûrement un moyen de le faire.

D'un langage plus populaire, nous allons passer à un langage technique et formuler les concepts de base que nous utiliserons ci-dessous :

  • L'intersection d'informations redondantes provenant de différents canaux d'informations crée une image.
  • Apprendre est une transformation flux d'informations dans le domaine de l'information.
  • Champ d'information (mémoire) - stockage d'images et de leurs relations.
  • Imaginaire - ...
    - "Cher lecteur, complétez l'image de votre imagination par vous-même, en utilisant les informations redondantes de votre expérience de vie et de cet article."
  • L'intelligence est la capacité d'apprendre et d'imaginer.

Au début de l'article, nous avons répertorié les technologies associées à l'intelligence artificielle aujourd'hui, vous pouvez désormais évaluer de manière indépendante en quoi elles correspondent au concept d'intelligence.

Dans le prochain article, nous considérerons une tâche telle que la recherche intelligente d'informations sur Internet. Nous allons définir les critères d'intelligence, développer des approches pratiques et « ressentir » une application réelle qui met en œuvre les principes décrits dans cet article.

L'article ne prétend pas être vrai, il fait partie de notre développement et de notre recherche. Écrivez des commentaires, complétez le matériel avec vos exemples ou vos réflexions. Apprendre et imaginer...

Ce qui se cache derrière l'expression "intelligence artificielle" ou IA (Intelligence Artificielle), tout le monde ne le sait pas. La plupart des gens pensent probablement à l'IA comme à un ordinateur qui a été programmé pour « penser » par lui-même, prendre des décisions intelligentes et répondre aux stimuli. Cette idée n'est pas tout à fait correcte. Aucun ordinateur ni aucune machine ne peut vraiment penser - car cela nécessite une conscience qu'une "machine sans âme" n'a pas. Un ordinateur ne peut faire que ce qu'une personne lui dit de faire.

La programmation de l'IA en un coup d'œil

La programmation de l'IA ne consiste pas à apprendre à un ordinateur à penser. Au contraire, il sera programmé pour apprendre et résoudre des problèmes spécifiques par lui-même en fonction de son expérience. Mais ici aussi, nous ne parlons pas de leur propre pensée, mais d'imitation. Cela s'applique également aux décisions que prend l'IA. peut peser les options, puis faire des choix. Cependant, son choix sera toujours basé sur ces paramètres qui ont été préalablement programmés.

Ainsi, l'intelligence artificielle ne peut faire que ce qui a été prédéterminé pour l'ordinateur, mais mieux, plus précis et plus rapidement que les humains. Au fait, si vous voulez apprendre à programmer, consultez nos conseils pour les programmeurs débutants.

Utiliser l'intelligence artificielle

L'intelligence artificielle est déjà utilisée dans de nombreux domaines, tels que jeux d'ordinateur et les moteurs de recherche. Dans la programmation de l'IA, un ensemble de disciplines joue un rôle important, pas seulement l'informatique ou les mathématiques. La philosophie, la psychologie, la neurologie et la linguistique sont d'une grande importance.

L'intelligence artificielle est divisée en neuronale et symbolique (forte et faible). Le premier essaie d'imiter les structures et les fonctions du cerveau humain. Ce dernier se concentre sur le problème et le résultat correspondants.

Dans la vie de tous les jours, par exemple, l'intelligence artificielle est programmée et utilisée en robotique. Il sert à contrôler les processus de production ou effectue simplement tâches quotidiennes... également utilisé pour le rendu. L'exemple le plus populaire est la reconnaissance faciale ou d'empreintes digitales.

Les systèmes basés sur la connaissance constituent une autre étape dans la création de l'intelligence artificielle. Ensuite, les données de programmation sont entrées dans le programme. Cela permet à l'intelligence artificielle de fournir des réponses logiques et indépendantes aux questions posées... Cependant, même ces "réponses indépendantes" ne sont basées que sur les connaissances dont l'intelligence artificielle était initialement dotée.

Dans cette partie, ni plus ni moins, il est question de l'algorithme qui sous-tend l'activité intellectuelle. En parallèle, nous tenterons de répondre à la question de savoir comment des phénomènes similaires pourraient survenir dans l'intelligence naturelle. Bien sûr, nous ne révélerons pas tous les secrets de l'intelligence, nous ne créerons pas un cerveau crépusculaire, mais nous découvrirons les principes, la direction principale pour creuser davantage. Nous en apprendrons davantage sur l'intelligence humaine. Il y aura également des croquis pratiques d'algorithmes qui peuvent être programmés sur un ordinateur dès maintenant.

Mais d'abord, brièvement, où nous en sommes arrivés dans les parties précédentes (). J'ai moi-même déjà oublié ce qui était là, alors je vais devoir me le rappeler, sinon je ne pourrai même pas en dire plus. :) Qui se souvient - sautez cette section.

Ce qui était dans les parties précédentes

Penrose, dans ses merveilleux livres, croit que le cerveau est capable de porter des jugements absolument vrais et soutient qu'au cœur des processus de pensée se trouvent des processus physiques qui peuvent effectuer des calculs éternels dans un temps fini. De plus, ces processus sont calculés non seulement quoi, mais la vérité absolue et irréfutable dans le vrai sens du terme. Et le cerveau peut « tirer » ces processus pour réfléchir. Et c'est pourquoi de tels processus sont nécessaires au fonctionnement du cerveau. Et, bien que de tels processus soient inconnus de la physique d'aujourd'hui, Penrose pense qu'un niveau plus profond de l'univers est une réalité différente basée sur de tels processus.

À bien des égards, Penrose a raison sur cette autre réalité, et même plus que cela, d'une manière ou d'une autre, nous dirons des idées non moins intéressantes et similaires sur ce qui se trouve dans les fondements de l'univers. Mais tout de même, Penrose se dépêcha, sauta, pour ainsi dire, plusieurs pas. La grande majorité (sinon la totalité) de l'activité intellectuelle peut s'expliquer par des choses plus mondaines et mondaines.

Le mérite incontestable de Penrose est qu'il a expliqué de manière convaincante pourquoi activité intellectuelle ne peut en aucun cas reposer sur une logique formelle (ou en d'autres termes, sur des algorithmes stricts). Plus précisément, Penrose a montré qu'une logique absolument vraie (qui est, dans la compréhension de Penrose, une activité intellectuelle) est impossible sur la base de processus physiques connus. Mais nous l'avons compris à notre manière, à savoir que l'activité intellectuelle n'a pas besoin d'une logique absolument vraie. Ou, en d'autres termes, l'intelligence humaine est plausible, elle donne de bonnes approximations à la vérité, mais la probabilité d'erreur est toujours là. Et cela change radicalement la donne, à savoir que cela change complètement les approches sur la façon d'expliquer l'intelligence naturelle, et la façon de construire l'intelligence artificielle. Et une telle intelligence peut être modélisée sur une machine de Turing, programmée sur un ordinateur ordinaire, cependant, il est préférable d'avoir une architecture de plus grande puissance et avec un parallélisme inhérent, par exemple quantique ou optique.

Rappelons maintenant ce qui se cache derrière le tapage autour de la vérité et non de la vérité de la logique. Les calculs mathématiques et informatiques, les réflexions humaines, les constructions logiques et les inférences sont associés au concept d'algorithme ou de système formel (en fait, ils ne font qu'un). L'exécution d'un algorithme (c'est aussi l'application des règles d'un système formel) est un modèle de toutes sortes de calculs, réflexions et autres processus physiques (ou, du moins, une assez bonne approximation). Un algorithme est un ensemble d'instructions qui peuvent être exécutées étape par étape par un ordinateur abstrait (machine de Turing).

Il y a le concept d'algorithme strict (c'est aussi un système formel complet et cohérent). Sur le même ensemble de données d'entrée, un algorithme strict pour le final le nombre d'étapes donnera la même réponse. Appliqué aux systèmes formels et au raisonnement logique, cela signifie que dans un temps fini pour les conditions initiales, on peut trouver une réponse vraie (cohérente et sans ambiguïté). De tels calculs sont également appelés déterministes.

Mais il existe aussi des algorithmes non déterministes (non stricts) dans lesquels ces conditions ne sont pas remplies (ce sont des systèmes formels incomplets / contradictoires). Pour l'algorithme, le non-respect de la condition de finitude signifie qu'on ne sait pas si l'algorithme achèvera son calcul, et on ne sait pas comment le savoir à l'avance. Un algorithme non déterministe peut terminer son calcul, ou il peut errer pour toujours, mais ce qu'il fera exactement est une énigme qui peut être devinée pour toujours. Pour les systèmes formels, la preuve de la vérité ou de la fausseté de l'énoncé original est incompréhensible un jour ou continuera éternellement. L'incohérence signifie qu'au sein du système formel, vous pouvez choisir différentes chaînes de règles qui, pour l'énoncé initial, donneront à la fois une réponse vraie et une réponse fausse. Pour l'algorithme, cela signifie que des résultats différents peuvent être obtenus sur les mêmes données.

Beaucoup, y compris Penrose, disent que l'activité intellectuelle est basée sur une logique formelle stricte. Mais il y a une embuscade mondiale ici. Le théorème éprouvé de Gödel dit qu'un système formel ne peut pas être à la fois complet et cohérent. L'exhaustivité signifie que le système formel sait tout de son domaine d'expertise. Inclure un tel système peut juger de la vérité d'elle-même. Si un système formel est créé par quelqu'un de l'extérieur, alors il peut fonctionner, en donnant les bons résultats et sans se soucier du tout de savoir si cette personne l'a créé correctement. Si le système formel essaie de s'assurer qu'il est fait correctement, il échouera. Parce que notre système est cohérent, mais pas complet. Si le système est capable de juger de son exactitude (complète), alors un tel système aura des contradictions internes et les résultats de son activité ne sont pas nécessairement corrects. Pourquoi? Y compris parce que la question de l'auto-examen (connaissance de soi, auto-réflexion) appartient à la catégorie des calculs éternels.

Qu'est-ce qui en découle ? Il s'avère (selon Penrose) que l'intelligence humaine est un système complet et cohérent, car elle peut générer des déclarations vraies et en même temps contrôler son exactitude. Mais selon le théorème de Gödel, cela est impossible. Il est donc nécessaire d'impliquer des processus physiques inconnus pour le travail de l'intellect, qui en un court instant peut regarder autour de l'éternité, trouver la réponse et renvoyer cette réponse au cerveau. Mais comme nous l'avons déjà noté, l'intellect n'a pas besoin d'être complet et cohérent, bien qu'il puisse très vraisemblablement prétendre être vrai et infaillible.

La seconde embuscade est que la physique ne connaît pas les entités sur lesquelles opère la logique formelle. À savoir, le raisonnement formel est souvent basé sur les concepts de nombres naturels, les concepts de vérité et de fausseté. Les nombres naturels sont ceux dans lesquels 1 + 1 = 2, 2 + 1 = 3, et ainsi de suite. Vérité = 1, Faux = 0, Vérité négative = Faux. Toutes les unités sont absolument égales les unes aux autres, la permutation des termes de la somme ne change pas, et ainsi de suite. Mais le problème est qu'il n'y a pas de telles particules, de telles choses ou processus dans notre monde qui pourraient être associés sans ambiguïté aux nombres naturels, et en même temps, de sorte que les règles de l'arithmétique étaient remplies pour ces entités dans n'importe quelle gamme. Dans certaines plages, l'arithmétique est approximativement correcte, mais en dehors de la plage, des échecs globaux commencent. Donc, la logique formelle, grosso modo, s'opère sans comprendre quoi, des entités dont l'essence est assez vague. De plus, l'arithmétique elle-même n'appartient pas à des systèmes complets et cohérents, tel est fait amusant... Et en général, il semble que des concepts tels que la vérité absolue, les nombres naturels, en principe, ne puissent pas exister. Comment et pourquoi seront dans les prochaines parties.

Qu'est-ce qui en découle ? Tous les processus, tous les calculs qui ont lieu même dans le cerveau, même dans les ordinateurs, sont intrinsèquement soit incomplets, soit contradictoires, bien qu'en même temps ils donnent une bonne approximation plausible à des calculs complets et cohérents.

Pourquoi Penrose n'aime-t-il pas les systèmes formels conflictuels, pourquoi Penrose leur refuse-t-il le droit d'être la base de l'activité intellectuelle ? On s'en souvient, dans un système formel contradictoire, pour les mêmes données, on peut déduire à la fois des affirmations vraies et fausses, jusqu'au fait que 1 = 2, et ainsi de suite. Sur cette base, Penrose laisse entendre que des systèmes conflictuels toujours(!) produire des résultats contradictoires. À partir de là, Penrose a une interprétation très étroite des processus chaotiques, il pense que ce ne sont que des processus aléatoires qui, en moyenne, peuvent être modélisés par un système formel strict.

En fait, les systèmes contradictoires peuvent dans la plupart des cas converger vers le vrai résultat, il n'est pas du tout nécessaire que des contradictions internes dominent et détruisent immédiatement le système. Il peut y avoir des systèmes dans lesquels les contradictions sont minimisées. Et même lorsqu'ils sont exécutés sur un ordinateur abstrait, ils resteront non déterministes, incomplets et incohérents, mais dans la plupart des cas, ils produiront un résultat plausible. Pourquoi Penrose a-t-il décidé que les systèmes en conflit seront toujours détruits par leurs propres contradictions ? Penrose est silencieux à ce sujet...

En outre. Comme nous l'avons vu dans les parties précédentes, les processus de notre monde, que ce soit dans les ordinateurs ou dans le cerveau, sont tous intrinsèquement vagues et contradictoires. Mais dans la plupart des cas, ils émettent résultat correct... Ceci est dû au fait que ces processus consistent soit en répétitions multiples de calculs similaires, soit en un grand nombre d'éléments similaires, de telle sorte que la combinaison de ces répétitions ou éléments donne dans la plupart des cas un résultat stable et correct. En même temps, bien sûr, il reste une très faible chance qu'une petite contradiction interne se développe et détruise l'ensemble du système. Mais dans la plupart des cas, le système semble être harmonisé, les éléments, agissant les uns sur les autres, minimisent les contradictions internes. Tous les processus de notre monde ne sont pas hautement harmonisés, mais il existe de tels processus, et ce qui se passe dans les ordinateurs et dans le cerveau leur appartient. D'où vient une telle harmonisation dans notre monde - un sujet pièces suivantes... Il y a aussi une infime chance que dans nos visions du monde, dans notre activité intellectuelle, nous nous trompions globalement sur quelque chose, qu'il y ait un petit trou de ver dans nos jugements, qui puisse fondamentalement bouleverser toute notre idée de l'univers. Mais plus à ce sujet dans les parties suivantes.

Initialement, la pensée humaine est basée sur de tels processus. Il n'y a pas de longues chaînes logiques, pas de règles claires. Au lieu de cela, il existe des chaînes situation-réponse courtes, sans cycles de traitement longs. Les éléments de ces chaînes ont un grand nombre d'entrées, et à l'intérieur de l'élément, les données d'entrée sont divisées en de nombreux chemins parallèles, en double et flous, qui à la sortie donnent une solution claire. Nous appelons ces éléments des règles plausibles courtes et larges. De telles règles ne s'engagent pas dans l'inférence logique, elles "se souviennent" déjà solution toute faite sur des situations qu'ils connaissent. Le mécanisme d'apprentissage de telles règles est également loin d'être une conclusion logique claire et est décrit dans les parties précédentes.

De tels processus sont bons pour interagir avec le monde réel, mais la logique formelle leur est difficile. Cependant, l'intelligence humaine peut fonctionner en mode logique formel, elle peut émuler des calculs informatiques. Peut-être, mais au détriment de processus beaucoup plus "lourds". Pour chasser les calculs d'un simple schéma logique, un simple programme dans le cerveau, des myriades de règles floues courtes sont impliquées, qui, dans leur combinaison, donnent un résultat similaire au travail de la logique stricte. Et puisque ces règles ne sont pas du tout destinées à la logique formelle, leur nombre impliqué dans l'émulation de la logique formelle sera beaucoup plus grand que pour l'interaction avec le monde réel. Et par conséquent, différents animaux ne sont pas capables de penser logiquement, cela nécessite un cerveau humain sophistiqué. Bien que les tâches quotidiennes que différents animaux résolvent au passage dépassent la puissance d'un ordinateur.

Mais ces procédés "lourds" ont aussi un avantage. Elle consiste dans le fait que le cerveau peut produire de nouvelles constructions logiques et programmes informatiques avec haut degré plausibilité, alors qu'un algorithme simple mais efficace n'est capable de faire son travail que de manière insignifiante. La complexité des constructions dérivées est de plusieurs ordres de grandeur inférieure au degré des processus initialement impliqués dans le cerveau. C'est cette différence de complexité qui résout la contradiction selon laquelle des processus intellectuels contradictoires créent de véritables constructions logiques. Si cette différence de complexité n'est pas prise en compte, alors il n'y a aucun moyen de comprendre d'où viennent ces véritables constructions.

Tâches nécessitant des constructions logiques complexes, une personne résout littéralement par la méthode du « poke scientifique ». À savoir, proposer une option la plus simple, chasser son calcul dans le cerveau, voir les mauvais moments, proposer la suivante (pas nécessairement la bonne option), imiter à nouveau le calcul, et ainsi de suite. Avec une bonne formation, de telles constructions deviennent la catégorie des actions automatiques rapides qui ne nécessitent pas la participation de la conscience (et, néanmoins, leur complexité est de toute façon énorme), les situations typiques sont mémorisées et commencent sembler que le cerveau fonctionne comme un ordinateur normal (conformément à la logique formelle), bien que ce ne soit pas du tout le cas.

Cela se produit également lorsque le cerveau est "armé" pendant une longue période, "accéléré" pour une tâche, il y a un signet de données initiales, de tentatives infructueuses, de vagues prémonitions et de désirs que la vérité se trouve quelque part à proximité. Et puis bang, et un éclair de perspicacité, tout se met en place et une nouvelle vérité est née. Il peut sembler que cette vérité soit née instantanément et vienne des royaumes supérieurs. Mais en fait, l'effet est le même, un éclair de perspicacité a été précédé d'un travail long et acharné qui a impliqué, modifié et créé des myriades de règles courtes et crédibles, essayé de les combiner d'une manière ou d'une autre, de les harmoniser, la plupart du temps sans succès. Et maintenant vient le moment où toutes ces règles sont déjà harmonieusement combinées les unes avec les autres, fusionnent en un seul processus harmonieux, et toutes ensemble donnent une nouvelle vérité.

L'intelligence artificielle, suivant de tels principes, pourrait bien être programmée sur des ordinateurs conventionnels. Naturellement, ce programme visera dans un premier temps l'indétermination et la présence de contradictions internes. Alors que les programmes informatiques existants, bien qu'indéterminés et contradictoires, sont écrits programmes modernes visant à les rendre moins indéterminées et moins contradictoires. Bien sûr, il est préférable pour l'intelligence artificielle d'utiliser une architecture plus efficace qui permet un grand nombre de processus parallèles et interactifs. Par exemple, quantique ou optique. Les ordinateurs électroniques à processeur unique peuvent également être programmés pour être intelligents, mais ils manquent probablement de puissance.

Plus d'informations sur les processus "lourds" et l'harmonisation seront discutés en détail plus tard, et commençons maintenant à concevoir l'intelligence artificielle.

Briques d'intelligence

Commençons par rappeler brièvement ce que nous avons déjà réalisé dans ce domaine et ce qui manque. Tout cela est détaillé dans les parties précédentes. Nous vous le rappelons pour comprendre pourquoi il en est ainsi, et pas autrement. Après tout, l'algorithme d'intelligence lui-même n'est pas si compliqué, l'essentiel, ce sont les principes, vous devez comprendre dans quelle direction aller et à quels résultats s'attendre.

Langages de programmation... Il y a des procédures et des prédicats. Dans les langages procéduraux, un programme est écrit comme une séquence stricte d'instructions, entre lesquelles il peut y avoir des sauts conditionnels.

Les langages à prédicats ont un ensemble de règles indépendantes, chacune ayant sa propre portée. L'exécuteur dans les langues de prédicat vérifie toutes les règles de conformité avec la situation actuelle et applique règles nécessaires qui changent la situation (état interne), et peuvent ainsi construire de longues chaînes logiques à partir des règles. Naturellement, c'est plus difficile pour l'interprète que d'exécuter un programme procédural.

Les langages procéduraux sont bons là où l'algorithme est bien connu et nécessite des mise en œuvre efficace... Les langages de prédicats sont bons lorsqu'il est nécessaire de stocker des connaissances humaines, des règles logiques, puis de tirer des conclusions basées sur les connaissances (par exemple, évaluer diverses situations d'entrée). Il est pratique d'y ajouter de nouvelles connaissances, sans réécrire l'ensemble du programme dans son ensemble. Il existe même des modifications dans lesquelles, après l'introduction de nouvelles connaissances, l'ensemble de la base de connaissances est amené à un état cohérent. Jusqu'à récemment, les langages à prédicats (comme Prolog) étaient considérés comme l'avenir de l'intelligence artificielle.

Mais le fait est que les langages procéduraux et à prédicats s'expriment mutuellement et présentent les mêmes problèmes inhérents aux algorithmes (systèmes formels, voir ci-dessus et ci-dessous).

Premièrement, nous sommes confrontés au problème de l'arrêt. L'algorithme peut toujours errer à la recherche d'une solution, bien qu'il puisse se trouver à proximité, dans une branche voisine. Mais l'algorithme correspondra à un système formel complet et cohérent. Mais cela n'a aucun sens pour nous (jusqu'à présent, nous pensons que nous ne pouvons pas faire un calcul éternel en un temps fini). Si nous procédons à une sorte d'élagage des branches "longues", alors l'algorithme deviendra plus pratique, mais il perdra en exhaustivité et en cohérence, il deviendra non vrai, mais plausible. Et ici, nous ne parlons pas du fait que la probabilité d'une mauvaise décision augmentera légèrement, mais du fait que l'algorithme sera capable de produire des décisions fondamentalement fausses.

Deuxièmement, les règles de prédicat qui constituent les unités logiques sont trop « étroites ». Dans l'intelligence naturelle, les unités logiques ont sur ordres plus de conditions d'entrée et ces entrées sont traitées selon des critères flous. De plus, avec une telle représentation, la connaissance est « barbouillée », perd de sa clarté et de son formalisme.

La logique floue existante (il existe une telle section en science) ne convient pas à une utilisation dans les langages à prédicats, c'est pourquoi. Tout flou, lorsqu'il rencontre un autre flou dans l'inférence logique, peut générer de nombreuses options alternatives, différentes chaînes logiques. De plus, ces options peuvent facilement se développer comme une avalanche. La logique floue existante, pour autant que je sache, n'a rien à voir avec la parallélisation des chaînes ou leur combinaison à l'envers. Tout ce que la logique floue fait est d'opérer avec les mêmes expressions logiques, mais au lieu du zéro et un logique, elle utilise une plage réelle de zéro à un, et des opérations arithmétiques pour combiner les nombres de cette plage.

Il existe des variantes de la logique « complexe », dans laquelle lorsque l'implication est inversée, une incertitude apparaît, qui est exprimée comme quelque chose comme une unité imaginaire, et qui est impliquée dans des calculs ultérieurs, avec la possibilité de paralléliser et de fusionner des chaînes. Mais pour l'instant, ce sujet nécessite une divulgation supplémentaire.

Troisièmement, nous n'avons pas d'algorithme qui pourrait entraîner (créer) d'autres algorithmes, en l'absence d'une personne, mais lorsqu'il existe un ensemble de situations d'entraînement (un ensemble représentatif de paires de valeurs d'entrée et de sortie correctes).

Systèmes de reconnaissance de formes... Bien adapté comme unité logique pour notre intelligence artificielle. Ils sont capables de bien classer la situation d'entrée et d'émettre une solution à la sortie. Vrai, seulement si un traitement à long terme n'est pas nécessaire, car de tels systèmes n'ont pas de mémoire interne (états) et de transformations de cet état, étant plutôt un réflexe stimulus-réponse. Mais les reconnaisseurs gèrent parfaitement la classification. Ils peuvent même gérer des images complexes (comme la reconnaissance d'une personne à partir d'une image de visage). Les méthodes d'apprentissage des systèmes de reconnaissance de formes sont efficaces et bien connues. Formé sur un ensemble d'exemples connus, le module de reconnaissance peut détecter des schémas cachés et généraliser qualitativement l'expérience à des exemples inconnus.

Principes d'apprentissage... Lorsque vous connaissez le résultat (de référence) souhaité et le résultat réel du système intelligent, vous pouvez calculer l'erreur de ce système et corriger le système pour qu'il fonctionne dans le bon sens.

Les méthodes de correction (formation) sont précises (elles sont aussi appelées locales) et globales. Les méthodes locales sont capables de calculer les erreurs dans tout le système et sont donc rapides et efficaces. Les méthodes globales ne savent pas comment procéder, elles modifient accidentellement les paramètres de l'ensemble du système, voient avec quel succès le changement a affecté le fonctionnement du système et décident sur cette base s'il faut enregistrer ce changement.

La méthode locale fait référence à la méthode de descente de gradient, lorsque la direction de l'erreur peut être calculée et propagée à partir de l'entrée dans la direction opposée dans tout le système. Cette méthode, bien qu'elle soit "seulement" plausible, donne de bons résultats en pratique, par exemple, pour l'apprentissage de perceptrons multicouches (qui sont souvent appelés réseaux de neurones). Mais elle n'est pas toujours applicable (comme d'autres méthodes locales), car la structure de l'erreur et la manière de la corriger peuvent ne pas être connues.

Mais nous avons des méthodes d'enseignement globales, un algorithme génétique et une simulation de recuit, ils sont omnivores, mais très gourmands en ressources de calcul. Ils peuvent fonctionner quand on ne sait presque rien sur la façon de corriger l'erreur. L'algorithme génétique est plus efficace, surtout si vous savez quelque chose sur la structure du problème à résoudre.

Principe d'échelle... Signifie que par la répétition répétée de processus similaires ou une combinaison d'un grand nombre d'éléments similaires, un résultat hautement stable (ou hautement plausible) peut être obtenu. Un élément / processus similaire ne signifie pas similaire en moyenne, cela signifie que les éléments peuvent se contredire et se concurrencer, ils peuvent être instables, mais à la fin ils sont néanmoins combinés (harmonisés) en une solution avec un haut degré de plausibilité . Par exemple, dans les circuits logiques des ordinateurs, toutes les particules élémentaires sont instables, mais leur demi-vie est soit très longue, soit le nombre de particules dans un élément logique est très grand, de sorte que la désintégration d'une particule individuelle n'est pratiquement pas donner un échec dans les circuits logiques. Un autre exemple, dans les réseaux de neurones artificiels, une connexion neuronale distincte a peu d'effet sur les décisions, les connexions elles-mêmes peuvent être contradictoires, mais au final, le réseau neuronal produit pour la plupart des décisions correctes.

Résumons. Nous avons des langages de prédicats adaptés au raisonnement complexe et au traitement des états internes. Il existe des systèmes de reconnaissance de formes qui peuvent être utilisés comme unités logiques pour les langages de prédicat. Il existe des méthodes d'enseignement omnivores que nous espérons créer (entraîner) automatiquement de nouveaux algorithmes. Il existe un principe d'échelle, qui, avec la perte d'exhaustivité et de cohérence, nous permettra de maintenir une forte probabilité de nos solutions d'intelligence artificielle.

Algorithme de renseignement

Permettez-moi de rappeler brièvement l'essence de l'algorithme génétique. Il existe une telle méthode - la recherche aléatoire. Une solution aléatoire est générée, évaluée, puis modifiée de manière aléatoire. Si le résultat est meilleur, la décision est mémorisée. Ensuite, le cycle est répété. Cette méthode est utilisée lorsqu'il n'est pas clair comment calculer la solution "selon la science". Cela prend très longtemps. Et si vous démarrez un grand nombre en parallèle différentes solutions? Pour ceux d'entre eux qui progressent avec succès (la qualité des solutions est bonne ou s'améliore avec le temps ou par rapport aux "voisins"), nous créons des copies-copies, et modifions (accidentellement) ces instances en catimini. Celles des solutions qui semblent mauvaises par rapport aux autres ou qui n'améliorent pas la qualité de la solution au fil du temps, nous soumettons ces instances à de plus en plus de modifications aléatoires ou les supprimons complètement, et à leur place nous mettons le nouveau aléatoire généré solutions. Naturellement, les mauvaises décisions sont moins susceptibles de se propager. Il y a une opération supplémentaire (également appliquée de manière aléatoire), lorsqu'une pièce est mordue à partir de deux solutions différentes, et ces deux pièces sont collées ensemble dans une nouvelle solution. La traversée est appelée. Plus la solution est bonne, plus elle subira un croisement. En conséquence, on peut sauter pour obtenir une solution qui a meilleur résultat que ses deux parents. Mais cela peut aussi se produire dans l'autre sens. Si la solution s'est avérée meilleure, elle est encore multipliée, si elle est pire, alors une telle solution, avec très probable supprimé. Une telle recherche est plus efficace lorsque l'on connaît la structure de la solution, et que l'on applique les opérations de changement aléatoire (mutation) et de croisement, non pas en broyant la solution par bits, mais en tenant compte de cette structure.

Du fait que les solutions ne sont pas seulement menées en parallèle, mais sont constamment comparées et échangées les unes avec les autres, une telle recherche donne un fantastique saut de performance par rapport à la recherche aléatoire et s'avère capable de résoudre les problèmes les plus difficiles. Il semblerait qu'une solution aléatoire typique, en moyenne, n'ait rien d'intéressant, et son efficacité soit extrêmement faible. Mais dès que beaucoup de solutions commencent à interagir les unes avec les autres, un résultat atypique (une bonne solution) apparaît rapidement et progresse. C'est d'ailleurs ce que Penrose conseille d'étudier en moyenne les processus chaotiques, d'étudier des cas typiques, soulignant qu'en dehors des cas typiques ils ne peuvent rien générer, ce qui, bien sûr, est injuste. Cette recherche est une illustration du principe d'échelle, l'un des processus d'harmonisation typiques.

C'est ce qu'on appelle un algorithme génétique, qui permet de trouver des solutions efficaces dans des domaines variés, alors qu'on ne sait même pas trouver la bonne solution « selon la science ». Ou il n'y a pas du tout de telle manière "scientifique", comme c'est le cas avec l'écriture automatique de programmes. Pour l'efficacité de l'algorithme génétique, c'est avant tout le fait que la vie sur Terre (et ensuite l'esprit) est apparue selon de tels principes. Pourquoi un tel processus d'harmonisation est possible est le sujet des prochaines parties.

Il y a une telle direction dans l'intelligence artificielle - la programmation génétique. Chaque solution n'est pas un ensemble de paramètres, mais un programme entier écrit dans un langage de programmation procédural. Avec toutes ses boucles, ses sauts conditionnels et son état interne dans les variables. En conséquence, le résultat de la décision est le résultat de l'exécution de ce programme. Afin de créer un programme, un algorithme génétique a été utilisé, qui, à partir d'un grand nombre de programmes générés aléatoirement, a créé un programme, la meilleure façon résoudre ce problème. Dans cet article que j'ai vu, la tâche consistait à contrôler le volant de la voiture. Celles. le résultat d'une décision n'est pas une réponse unique à une entrée, mais un processus étalé dans le temps. L'algorithme génétique a réussi et a créé un programme qui contrôlait correctement le volant. La tâche n'est pas si compliquée, ils font la même chose sur les réseaux de neurones (bien qu'il y ait encore un état interne là-bas et que les règles d'interaction de l'état avec le réseau soient écrites par une personne). Mais il est indicatif que le programme a été créé automatiquement avec un état interne, des boucles et des branches différentes.

Malheureusement, je n'ai pas fait le suivi de l'état des lieux sur ce sujet, et je ne peux rien vous dire d'autre. Les personnes intéressées peuvent rechercher l'expression "programmation génétique". Par conséquent, nous allons plus loin au-delà de ce que nous avons étudié et entrons dans le domaine des hypothèses. Il est fort possible que certaines de ces hypothèses soient déjà connues, et je suis engagé dans l'invention de la roue. Mais ça reste intéressant. :)

Voyons quelles sont les propriétés des programmes obtenus à l'aide de l'algorithme génétique. De tels programmes peuvent contenir des boucles infinies (ou très longues). résultat visible... Le mouvement, en général, est correct, mais, malheureusement, il jette de longues chaînes logiques potentiellement intéressantes (comment les prendre en compte plus tard). De plus, lors du croisement, les branches du programme seront déchiquetées sans réfléchir, générant du code souvent dénué de sens. Et si pour une tâche simple ce n'est pas un problème, alors pour des tâches plus complexes, soit un grand nombre de solutions inadaptées se révéleront, car le plus petit changement peut complètement ruiner les performances du programme, et il sera probablement de peu d'utilité dans la fin. Ou le programme aura un grand nombre de branches redondantes, des « poubelles » qui se combineront de manière inimaginable les unes avec les autres dans la bonne solution. Ces "poubelles" dans le processus d'évolution pour apprendre à survivre aux changements introduits, afin que le changement ne brise pas fatalement le programme. Mais dans tous les cas, nous devrons dire adieu à l'idée de chaînes logiques "minces", qui représenteraient les mêmes programmes clairs qu'une personne écrit. Le résultat de l'écriture automatique des programmes sera loin de telles chaînes. Bien sûr, des algorithmes d'exploration de données apparaîtront qui seront capables de minimiser ce tas contradictoire en un algorithme clair, mais cet algorithme clair, pour une amélioration supplémentaire de mode automatique, vous devrez le ramener à la vue « étalé » (ou l'étalement se produira tout seul, dans le cadre de la formation continue). Et on soupçonne que l'algorithme extrait à l'aide de l'exploration de données aura une "perspective" plus étroite que sa version originale "barbouillée". Un phénomène similaire a été décrit dans les parties précédentes sur la reconnaissance de formes.

Comme on s'en souvient, les langages à prédicats sont plus flexibles aux changements et adaptés à l'enregistrement des connaissances humaines, car ils ne consistent pas en un cadre rigide du programme, mais en des règles indépendantes qui se déclenchent automatiquement lorsqu'une situation (conditions) appropriée se produit. Un algorithme génétique fonctionne plus efficacement si les opérations prennent en compte la structure de la solution. L'écriture sous une forme procédurale force l'algorithme génétique à déchiqueter le programme sans réfléchir, créant de nombreuses variantes impraticables. Par conséquent, nous allons écrire le programme sous forme de prédicat et ajuster l'algorithme génétique pour prendre en compte une telle structure. A savoir, différents programmes de solutions pourront échanger non pas des bits de bits, mais des règles entièrement indépendantes. Les changements aléatoires fonctionneront au niveau des règles. De plus, au sein d'un même programme, vous pouvez avoir un nombre différent de règles, quel que soit l'ordre. Et ces règles peuvent être très ami similaire sur un ami, et complètement différent. Vous pouvez multiplier et croiser non seulement les programmes eux-mêmes, mais aussi les règles au sein d'un même programme. Et tout cela parce que lorsque le programme est exécuté, ils s'aligneront eux-mêmes dans la bonne chaîne, car l'exécuteur ne parcourt pas bêtement les branches du programme (comme dans un langage procédural), mais sélectionne les règles en fonction de la situation actuelle ( chaque règle change la situation).

Mais le plus intéressant serait de rendre la banque de règles commune à tous les programmes. Dans ce cas, le programme représenterait des données sur les règles qu'il préfère de la banque générale, et il n'est pas exclu, des informations sur la séquence préférée de leur application. Dans ce cas, les critères de performance peuvent être appliqués non seulement aux programmes, mais aussi aux règles. Après tout, chaque règle contribue à plusieurs programmes différents, et vous pouvez calculer combien de ces programmes réussissent et combien ne le sont pas. Et sur cette base, tirez des conclusions sur l'efficacité des règles, et en conséquence faites évoluer non seulement les programmes, mais aussi les règles (c'est-à-dire multiplier, croiser, modifier accidentellement les règles elles-mêmes). Les gains d'efficacité proviennent du fait que des règles similaires ne sont plus dupliquées dans différents programmes, chaque programme a accès à une banque de règles plus large. Mais plus important encore, les règles sont évaluées ensemble, lorsqu'elles sont utilisées dans différents programmes, ce qui améliore (vraisemblablement) considérablement la qualité de l'évaluation et l'évolution des règles.

Nous avons donc obtenu la version la plus simple de l'intelligence artificielle, qui est tout à fait applicable dans jeux différents, y compris informatique, systèmes experts et systèmes de contrôle de processus. Cela convient aussi pour modéliser des processus de boîte noire avec mémoire interne, au lieu de modèles de Markov (ce sont des processus dans lesquels on peut voir ce qu'il y a en entrée et en sortie, mais l'état interne et les processus sont incompréhensibles, une boîte noire à notre avis ).

Ici, une proposition logique peut surgir selon laquelle l'algorithme génétique pourrait séparer des morceaux du programme en sous-programmes indépendants et prendre en compte leur structure lors du changement de programme. Pour l'écriture procédurale, cela peut augmenter l'efficacité, mais cela n'élimine toujours pas ses inconvénients inhérents, car vous avez toujours besoin d'une séquence rigide d'instructions, d'instructions conditionnelles et de boucles, qui peuvent être interrompues par un changement accidentel. Dans la notation des prédicats, les procédures en tant que telles n'existent pas du tout. Mais d'autre part, il est possible de découper la situation globale en un ensemble de situations hiérarchiques et en une séquence de situations, de sorte que seul son propre ensemble de règles traite chaque sous-situation. A court terme, une telle partition devrait en quelque sorte augmenter l'efficacité de l'algorithme génétique. Mais le fait est que dans l'intelligence réelle, l'interaction des règles est d'une nature plus complexe, à laquelle une telle division est à la fois inhérente et non inhérente. Par conséquent, en imposant une telle division de la situation, à court terme, nous pouvons obtenir des avantages, mais à l'avenir, cela interférera. Plus à ce sujet plus tard.

Intelligence artificielle, version 2.0

Dans les langages à prédicats (comme Prolog), il n'y a pas de séquence d'étapes dans un programme. Il n'y a qu'un ensemble de règles et la séquence de mise en œuvre de ces règles n'est initialement définie en aucune façon.

Cela ressemble à ceci :
règle n : résultat si condition ;
règle m : résultat si condition ;
etc.

La condition peut être assez complexe, comprenant à la fois les expressions les plus simples et d'autres règles, y compris l'application récursive mutuelle. Le résultat de l'exécution d'une règle est également une condition complexe, qui peut indiquer à la fois la situation finale et une partie de la condition pour vérifier l'applicabilité d'autres règles (et elle-même). Ces résultats sont clairs et sans ambiguïté.

Il n'y a pas de situation globale lors de l'exécution d'un programme de prédicat. Il existe une condition initiale, sous laquelle l'interpréteur recherche la première règle qu'il trouve avec une condition appropriée, le résultat de cette règle est ajouté à la condition initiale. La recherche d'une règle appropriée pour la nouvelle condition est répétée. Le résultat est une chaîne d'inférence qui peut conduire à une règle qui dénote l'atteinte du résultat final. Si l'interpréteur manque de toutes les chaînes disponibles, il commencera à revenir en arrière, pour chaque cycle à la recherche du suivant règle appropriée construire de nouvelles chaînes.

Notez encore qu'un état (situation) est une condition initiale plus une chaîne de règles appliquées. Lors de la restauration, la chaîne de règles appliquées change en conséquence.

Lors de l'enchaînement des règles, l'interprète peut bien tomber dans une recherche sans fin, même si la solution peut être proche. Par conséquent, si l'interprète est « intelligent », alors il peut soit reconnaître les lieux de bouclage potentiel, soit conduire plusieurs chaînes de décisions en parallèle, en choisissant parmi elles au final celle qui conduira le plus rapidement à la situation finale. D'un autre côté, la personne qui écrit l'ensemble de règles doit prendre soin de minimiser la probabilité d'une boucle.

Par exemple, un problème concernant les missionnaires et les cannibales, lorsque sur un bateau vous devez transporter une foule de missionnaires et de cannibales de l'autre côté. Le bateau ne peut accueillir que deux personnes. S'il y a plus de cannibales sur le rivage que de missionnaires, alors les missionnaires seront mangés. Lors de la résolution d'un problème dans un langage prédicat, les situations admissibles sont écrites de manière à ce que les missionnaires ne soient pas mangés (y compris de manière récursive) et les mouvements admissibles de la barque (il doit toujours y avoir une ou deux personnes dans la barque). Ensuite, l'interprète construit lui-même un arbre de décisions réalisables jusqu'à ce qu'il en arrive à une situation où toute la foule est de l'autre côté. La chaîne de règles dans ce cas porte la séquence de transport des missionnaires et des cannibales à travers le fleuve.

Puisque les règles sont clairement liées les unes aux autres dans le processus de recherche d'une solution, dans les langages à prédicats, déjà au niveau des règles, une hiérarchie et une séquence de leur application sont définies, quelque chose comme un regroupement en procédures dans les langages procéduraux. Mais dès qu'on rend moins clair l'enchaînement entre les règles, ce regroupement est perdu. Et comment exactement cela surgira-t-il à nouveau (ou comment l'aider à se former) est déjà une nouvelle question.

Dans les langages à prédicats, il n'y a pas de boucles, pas de sauts conditionnels, pas de séquence d'actions codée en dur. L'interprète « sait » toujours quoi faire, car il choisit la prochaine étape pour la situation actuelle. L'interprète ne sélectionne qu'une seule étape, car à l'étape suivante, il évaluera la situation modifiée et choisira une nouvelle étape, peu importe à quel point la situation change de manière inattendue. Cela aidera également l'artiste à sortir si une partie de son programme a échoué ou a pris la mauvaise décision. Au lieu de tomber de manière catastrophique dans la mauvaise direction, l'interprète évaluera à nouveau la situation et, très probablement, la prochaine étape améliorera encore cette situation.

Bien sûr, les processus impliqués sont beaucoup plus intensifs en calculs que l'écriture procédurale du programme. Et dans sa forme originale dans les langages de prédicat, tout n'est pas aussi fluide que décrit dans le paragraphe précédent.

L'inconvénient des langages à prédicats est que la portée des règles est très étroite et qu'elles s'alignent en chaînes trop longues. En intelligence, en revanche, prévalent des chaînes d'inférence courtes, dans lesquelles une unité logique évalue un très large éventail de conditions d'entrée, de plus, selon des critères flous et non linéaires.

Par conséquent, la prochaine étape dans la construction de l'intelligence artificielle consiste à remplacer les règles claires et étroites par des règles floues et larges, et à raccourcir la chaîne d'inférence.

Tout d'abord, créons l'état global du programme (un tableau ordinaire de nombres). Une partie de ce tableau est constituée de données d'entrée. Ils sont régulièrement mis à jour en externe. Permettre au programme de les modifier n'est pas une question de principe, l'essentiel est qu'ils soient régulièrement mis à jour. Une partie de ce tableau est l'état interne du programme. Le reste est sorti. Les cellules internes et de sortie ne diffèrent que par le fait que la solution est lue à partir des cellules de sortie. Les entrées et les sorties sont toujours utilisées pour écrire/lire le même paramètre. Par exemple, entrée n° 1 - vitesse, entrée n° 2 - capteur de carburant, sortie n° 3 - modification de la position du gouvernail, sortie n° 4 - modification de la vitesse. Nous attribuons des nombres arbitrairement, dans le processus d'apprentissage, le programme lui-même doit apprendre à comprendre où se trouvent l'entrée et la sortie.

Pour la base de la règle, prenons, par exemple, un perceptron multicouche (qui est souvent appelé simplement un réseau de neurones). Notez que l'algorithme d'entraînement d'un tel réseau de neurones à l'intérieur du programme nous est encore inconnu. Nous aurons beaucoup de tels réseaux de neurones. Ensemble, ils constitueront un ensemble de règles de programme. Chaque réseau de neurones reçoit en entrée l'intégralité de l'état global du programme (le nombre d'entrées est égal au nombre de cellules d'état). Le réseau de neurones a peu de sorties. Chaque sortie correspond également à l'une des cellules d'état. A chaque itération, la sortie de chaque réseau de neurones est ajoutée à l'état global (la sortie peut être négative). Tous les réseaux sont interrogés simultanément sur la base de l'état actuel, et créent un nouvel état par leur impact total.

Le nombre de sorties et leur affectation pour chaque réseau sont initialement sélectionnés de manière aléatoire. Nous construisons des changements évolutifs de telle sorte que dans la plupart des cas ils laissent inchangée la commutation entre les cellules de l'état global et les entrées/sorties du réseau de neurones. Et ce n'est qu'avec une faible probabilité que les modifications peuvent réorganiser l'entrée ou la sortie du réseau vers une autre cellule. Cela est nécessaire car jusqu'à présent nous pensons que chaque cellule est un certain paramètre (même s'il s'agit d'un paramètre interne), donc, si nous basculons l'entrée / sortie du réseau sur un autre paramètre, auquel il n'est pas habitué, alors le résultat sera plutôt infructueux. Malheureusement, avec une telle manœuvre, nous perdons à nouveau quelques propriétés intéressantes une véritable intelligence, mais nous obtenons de l'efficacité en ce moment. Nous reviendrons sur ces propriétés plus tard.

Au cours de l'évolution, le nombre de cellules dans l'état global peut également être modifié. Ensuite, tous les réseaux de neurones sont ajustés en conséquence. Si les cellules sont clonées, les entrées et sorties correspondantes des réseaux de neurones sont clonées. Si des cellules sont supprimées, alors les entrées/sorties correspondantes sont supprimées de tous les réseaux.

Il existe également des changements évolutifs qui peuvent augmenter ou diminuer le nombre de sorties d'un seul réseau de neurones.

Comment exactement un programme composé d'un ensemble de tels réseaux de neurones produira-t-il une solution ? Plus précisément, comment, après l'itération suivante, comprendre que le programme a pris sa décision, et lire cette décision dans les cellules d'entrée ? C'est aussi une question intéressante qui nécessite une expérimentation. Les premières considérations sont les suivantes. Les valeurs de sortie sont stabilisées. Ou il y a des sorties spéciales qui signalent que la réponse est prête. Ces sorties s'ajustent d'elles-mêmes au cours du processus d'évolution.

Après avoir supprimé les décisions, le programme devrait continuer à fonctionner et, très probablement, à partir de son état interne. Comment la pousser à aller plus loin, car le programme s'est stabilisé dans une solution précise ? Premièrement, après la suppression de la décision, les cellules d'entrée seront écrasées par les données réelles (nous pensons que pendant que le réseau prend une décision, les données d'entrée n'ont pratiquement pas changé). Deuxièmement, vous pouvez créer une cellule d'entrée spéciale dans laquelle placer un grand nombre au début de l'itération. De plus, il y a soit lui-même pour apprendre à changer ce nombre, soit vous pouvez le réduire de l'extérieur, laissant le réseau comprendre que le temps passe. En général, il y a suffisamment d'idées pour les expériences.

Maintenant, une explication de pourquoi il en est ainsi.

Tout d'abord, nous avons abandonné la construction de chaînes de règles et forcé chaque règle à écrire le résultat de son travail dans un état global. En faisant cela, nous avons rendu impossible la construction de longues chaînes de retrait et de retour en arrière, mais nous avons obtenu une réponse plus rapide et une évaluation large et floue de la situation. Notez que le traitement parallèle de plusieurs variantes, où chaque variante a son propre état global, n'a abouti à rien. Mais nous n'avons pas une ramification aussi large que dans l'interpréteur de prédicat original. Si nous essayions de brancher des chaînes d'inférence sur de larges règles floues, le nombre d'options sortirait catastrophiquement de l'échelle, même dans les premiers stades de la construction d'une solution.

En conséquence, nous avons obtenu quelque chose de complètement différent, bien que cela semble être similaire à l'inférence originale sur les prédicats. Ce quelque chose n'est plus capable de construire des conclusions complexes et claires, mais il est capable d'agir dans un environnement complexe et changeant rapidement, et a même quelques rudiments d'une conclusion logique plausible, ce que la version originale ne peut pas faire. La conclusion d'inférences complexes et claires nous reviendra, bien que d'une manière inattendue, en attendant, l'intelligence résultante sera sans elle.

Néanmoins, le quelque chose qui en résulte peut résoudre des problèmes logiques (comme jouer aux échecs) à sa manière, de la même manière qu'une personne le fait. Ce type de pensée peut être qualifié de situationnel. Cela ne part pas de la construction de longues chaînes logiques, mais de l'évaluation de la situation actuelle et de la manière de changer cette situation. La situation comprend à la fois des données externes et un état interne, ce que le système a "décidé" au moment présent. L'évaluation et la prise de décision pour aller plus loin sont effectuées sur tousétape, contrairement aux algorithmes procéduraux et à l'inférence, qui peuvent s'enterrer dans un long raisonnement et sortir de la réalité. Par conséquent, les modifications accidentelles dans un tel programme ne deviendront pas fatales pour les performances, contrairement à un enregistrement procédural. Même s'il se retrouve dans une situation incompréhensible, ou commet une erreur, un tel programme ne tombera pas dans la stupeur, mais essaiera de faire quelque chose, car pas une petite branche de l'algorithme n'est impliquée dans l'évaluation de la situation, mais l'ensemble de règles. Et même si le programme fait des lancers chaotiques au début, tôt ou tard il se retrouvera dans une situation familière et pourra le faire tourner dans la bonne direction.

La pensée situationnelle est basée sur trois choses. Premièrement, il s'agit d'une généralisation de la situation à un cas familier (comme dans les systèmes de reconnaissance de formes). Par exemple, à partir de la disposition variée des pièces sur l'échiquier, le système de pensée trouve quelque chose en commun, donne une évaluation de la situation, y a-t-il une menace pour ses pièces, y a-t-il une chance de faire une attaque sans perte, alors il peut être des situations-combinaisons plus spécifiques. La seconde est l'expérience (une bibliothèque de courtes règles plausibles qui sont appliquées pour améliorer une situation sans longue inférence). Sur la base de l'évaluation de la situation, des alternatives sont proposées pour changer cette situation, par exemple, des données approximatives sur la façon de déplacer les pièces. L'analyseur traduit ces données approximatives en mouvements corrects des pièces sur l'échiquier (si les mouvements corrects ne peuvent pas être trouvés, alors l'alternative suivante est prise). Des situations similaires (et, par conséquent, des solutions pour elles) peuvent se produire à n'importe quel stade du jeu, et nous obtenons immédiatement une solution pour elles, sans une longue énumération d'options pour divers mouvements. Oui, ces options sont "juste" plausibles, mais elles incluent une riche expérience de vrais partis et sont tout à fait applicables aux nouveaux partis. De plus, ces situations incluent une certaine connaissance de la façon dont le jeu développera de nombreux mouvements à venir, mais pas au niveau des pièces en mouvement, mais au niveau du changement de situation tactique (qui peut inclure des cycles sans fin, tels que le maintien de l'équilibre pour obtenir un match nul ) ... Et si, néanmoins, ils entraînent une perte, la bibliothèque sera complétée par de nouvelles règles qui fonctionneront dans leur situation. Troisièmement, il s'agit d'une vérification interne d'une solution probable de plusieurs pas en avant (c'est-à-dire de proposer quelque chose, puis de déterminer dans quelle mesure cela changera la situation, en maintenant plusieurs solutions alternatives, notre système ne sait pas encore comment faire cela , cela ne donne qu'une seule option, mais il y en aura plus à ce sujet).

À propos, peut-être vous êtes-vous demandé, lors de l'étude des réseaux de neurones, comment les faire fonctionner non seulement sur la base de données d'entrée, mais aussi leur apprendre à digérer l'état interne et à exécuter des programmes complexes ? C'était intéressant pour moi. Certes, pendant longtemps, je n'ai jamais rien trouvé d'intéressant pour former un tel réseau. Mais maintenant, il y a une réponse d'un côté légèrement différent.

Pourquoi avons-nous fait beaucoup de réseaux de neurones, au lieu d'un seul grand, qui pourrait mettre à jour l'ensemble de l'état ? Le fait est que pour que l'algorithme génétique fonctionne efficacement, il est souhaitable d'avoir un ensemble de règles indépendantes, dont chacune serait responsable d'une action spécifique (bien que cachée à notre compréhension). De plus, de telles règles peuvent être échangées entre les programmes, en faire différents ensembles de programmes, modifier et cloner des règles individuelles, et même former une bibliothèque des règles les plus réussies (ou même la future bibliothèque). Il sera difficile de le faire avec un seul grand réseau de neurones. De plus, pour les réseaux de neurones conventionnels, les collectifs ont tendance à faire mieux que les réseaux de neurones conventionnels.

Pour des raisons similaires, chaque réseau de neurones n'a qu'un petit nombre de sorties. Celles. chaque règle est compétente pour prendre sa propre petite décision. Mais en même temps, chaque réseau a des apports de l'ensemble de l'État, dans l'espoir d'avoir une vision globale de la situation, mais en même temps de ne pas répondre à la plupart des cas qui ne se rapportent pas au champ d'application d'une règle particulière. Chaque réseau doit apprendre cela dans le processus d'évolution. Par conséquent, même en influençant l'état global, exactement les règles applicables dans la situation actuelle fonctionneront. Il se peut bien que le nombre d'entrées soit également limité, sur ce point je n'ai pas d'idée, seule une expérience pourra aider ici.

En conséquence, après la formation, vous devriez obtenir un programme composé d'un ensemble de réseaux de neurones. Le programme démarre à partir de l'état initial, dans lequel les cellules d'entrée sont définies, le reste des cellules peut être mis à zéro (ou avoir de petites valeurs aléatoires). A chaque itération, l'état global est fourni à l'entrée de tous les réseaux, le résultat du fonctionnement de tous les réseaux est calculé et la sortie de tous les réseaux est immédiatement ajoutée à l'état global. L'itération suivante vient. Vous pouvez comprendre que la solution est prête, par exemple, par le fait que les valeurs de sortie se sont stabilisées ou qu'un signal a été envoyé à une sortie spéciale, signalant que la solution est prête. Après cela, les valeurs de sortie sont lues, de nouvelles valeurs d'entrée sont chargées et le programme continue de fonctionner avec les données mises à jour.

Ce programme est créé automatiquement à l'aide d'un algorithme génétique. L'essentiel est que nous ayons au moins un critère pour évaluer l'efficacité des programmes reçus (c'est-à-dire, un programme est-il meilleur qu'un autre), et cela suffit pour que l'algorithme génétique fonctionne. Pour les tâches du monde réel, un tel critère est généralement présent. Ceux-ci peuvent être des ensembles d'exemples de travail qui sont considérés comme bons et mauvais pour différentes situations (les systèmes de reconnaissance de modèles apprennent également à partir d'exemples). Ayant appris d'exemples bien connus, le programme, comme les systèmes de reconnaissance de formes, sera capable de généraliser son expérience à des exemples inconnus, y compris une telle généralisation peut être de nature qualitative, attraper des modèles cachés dans un ensemble d'exemples et dessiner des ( mais correcte) conclusions. Pour les tâches nécessitant une inférence logique précise et une solution claire, c'est plus difficile (mais il y aura plus à ce sujet). Il peut y avoir des options pour que les programmes se battent, par exemple, pour jouer aux échecs, et pour reconnaître celui qui joue le mieux comme étant efficace, alors une évaluation externe n'est pas nécessaire.

Un algorithme génétique génère aléatoirement un ensemble de règles (réseaux de neurones) et un ensemble de programmes. Toutes les règles sont situées dans un référentiel commun. Chacun de ces programmes se compose de son propre ensemble de règles spécifiques extraites d'un référentiel commun. Les règles elles-mêmes sont dans le référentiel, le programme ne fait référence qu'à elles. Pour évaluer l'efficacité, tous les programmes sont exécutés en parallèle (chacun a son propre état et un ensemble d'entrées-sorties). Les meilleures notes sont attribuées aux programmes qui fonctionnent plus rapidement et plus efficacement. Les programmes qui réfléchissent longtemps ou ne prennent aucune décision sont condamnés à une amende.

Mauvais programmes avec plus probable sont modifiés ou supprimés complètement. A leur place viennent soit des programmes nouvellement générés, soit clonés à partir de programmes existants. L'évaluation des programmes peut être cumulative, c'est-à-dire s'accumulent, donnant au programme un peu de répit pour évoluer. Les bons programmes sont plus susceptibles d'être clonés. Les programmes évoluent de mauvais à bons.

Une fois qu'une solution suffisamment bonne a été atteinte, le meilleur programme est sélectionné à la suite de l'algorithme génétique et, à l'avenir, ce programme est utilisé pour de vrais problèmes.

A quels changements évolutifs les programmes peuvent-ils être soumis ? Ajoutez ou supprimez une règle du référentiel. Croisement avec un autre programme, à savoir que deux programmes sont pris, sur leur base, un troisième est créé, qui se compose d'une partie des règles d'un programme et d'une partie des règles du deuxième programme. Les règles à ajouter, supprimer ou écrire dans le programme lors du croisement sont choisies au hasard. Bien que, si vous y réfléchissez, il y aura peut-être des moyens de le faire de manière plus ciblée, il y aura peut-être une évaluation de l'efficacité de la participation de la règle à un programme particulier.

À quels changements évolutifs les règles peuvent-elles être soumises (réseaux de neurones). Comme déjà mentionné, l'un de ces changements est un changement du nombre de cellules dans l'état interne, qui affecte toutes les règles. Le besoin d'augmenter ou de diminuer le nombre de cellules d'état peut être plus ou moins estimé par la dynamique du programme, par la fréquence à laquelle les états changent, leur corrélation, leur incidence sur les valeurs de sortie et leur efficacité. la population des programmes est en général. Les prochains changements évolutifs sont le clonage de règles, le changement aléatoire de règles (à savoir, "secouer les poids" du réseau de neurones, comme dans le recuit, plus l'efficacité est faible, plus le tremblement est fort). Le clonage ainsi que la modification ultérieure des règles peuvent s'accrocher au clonage de programmes. Par exemple, dans le programme d'origine, le lien vers la règle d'origine reste, dans le programme cloné - le lien vers la règle clonée. Ou, dans le programme source, un lien apparaît en plus vers un clone de la règle. Les règles peuvent être franchies lorsqu'une pièce est extraite de deux réseaux de neurones et collée dans un troisième réseau. Dans les règles (réseaux de neurones), le nombre de sorties peut changer de manière aléatoire, comme décrit ci-dessus, le nombre et la structure des connexions internes peuvent changer.

Pour chaque règle, son efficacité peut être calculée en fonction du succès des programmes qui incluent la règle. De plus, vous pouvez prendre en compte le fait que la règle peut être incluse dans le programme, mais être inactive, de sorte qu'elle n'affecte pas le fonctionnement du programme. Sur la base d'une telle évaluation, nous pouvons faire évoluer délibérément la banque de règles, à savoir reproduire plus souvent les règles réussies et être plus susceptible de supprimer ou de modifier les règles inefficaces. Nous pouvons également créer des programmes basés sur les règles les plus efficaces. Ou, dans le processus de changement, sont plus susceptibles d'inclure dans les programmes meilleures règles... Notez que la banque stocke des règles avec des portées différentes, mais résolvant néanmoins un problème commun.

Mais le plus intéressant, il semble que pour chaque règle, vous pouvez calculer non seulement l'efficacité, mais aussi l'erreur ! À savoir, pour comprendre comment cette règle doit agir correctement dans les conditions d'entrée données. Après tout, nous avons des exemples de règles de déclenchement (réseaux de neurones) dans bons programmes(nous pensons que ce sont les bonnes décisions des règles qui composent le programme) et des exemples de travail dans de mauvais programmes (nous pensons que ce sont les mauvaises décisions des règles qui composent le programme). En conséquence, vous pouvez essayer de renforcer les bonnes décisions que chaque réseau de neurones a produites et de minimiser les mauvaises décisions. Les valeurs des entrées et des sorties peuvent être reproduites sans aucun problème, et sur leur base un échantillon d'apprentissage peut être construit, qui est envoyé à l'algorithme de rétropropagation d'erreur. Le problème principal ici est de dérouler la séquence temporelle de ce qui était aux entrées et sorties de l'ensemble d'apprentissage, et ici il peut y avoir des ambiguïtés. Après tout, nous ne pouvons pas supposer que toutes les décisions (paires d'entrée-sortie) dans le bon réseau étaient idéalement correctes, et dans la mauvaise - idéalement incorrectes. Peut-être est-ce la faute d'une règle complètement différente, qui, à la toute fin, a « anéanti » la bonne décision ? S'impliquer dans le déroulement de toute la séquence de décisions est une entreprise désespérée. Par conséquent, vous devrez penser à former un échantillon basé sur ces séquences temporelles. Et même si, lors de la formation d'un échantillon d'apprentissage, nous jetons de nombreux exemples, ne laissant que les plus clairs, ce sera toujours un progrès.

Voyons maintenant ce que nous avons. Et maintenant, nous avons un outil pour écrire automatiquement des programmes qui peuvent naviguer dans les tâches du monde réel, agir avec souplesse dans un large éventail de situations, récupérer des erreurs, avoir une sorte de logique interne et prévoir/modéliser la situation. Ce qu'ils ne peuvent pas faire, c'est développer de fines chaînes logiques, faire de longues inférences. Bien que pour de nombreuses tâches, une telle intelligence puisse prétendre que des processus logiques profonds étaient en cours, bien qu'en fait, elle n'ait appliqué que les blancs obtenus lors de la formation. Ce genre d'intelligence et d'indépendance ne suffit pas, une personne a encore besoin d'en faire beaucoup. Et dans la partie matérielle, ce que nous avons obtenu n'est pas tout à fait similaire à ce que la nature a proposé.

Intelligence artificielle, version 3.0

Ajoutons maintenant un élément appelé émulateur d'environnement. Nous aurons besoin de deux variétés, l'une pour émuler l'environnement extérieur, la seconde pour la prévision. Il y aura également une troisième variété, mais nous y reviendrons plus tard.

L'émulateur en mode prévision doit être capable de générer le comportement attendu de l'environnement externe un petit nombre de pas en avant, connaissant l'historique des états précédents et l'impact actuel sur l'environnement à partir du programme de contrôle. Désormais, le programme n'agira pas immédiatement sur l'environnement externe, mais d'abord sur l'émulateur. Et sur l'émulateur, vous pouvez voir les prévisions, si l'environnement a changé dans la bonne direction en raison de l'impact du programme. Par conséquent, vous pouvez avoir plusieurs instances de programmes formés de manière similaire, mais différents les uns des autres. Pour chacun d'eux, démarrez votre propre émulateur d'environnement en temps réel. Et à chaque étape dans l'environnement externe d'émettre l'impact du programme qui recevra la meilleure note sur l'émulateur. Une autre option est de prendre cette décision (pas nécessairement la meilleure), qui sera acceptée par la "majorité des votes" par l'équipe du programme, alors cette décision sera fiable.

Un émulateur en mode émulation est similaire à la prévision, mais il est utilisé dans le cadre de programmes d'entraînement lorsqu'il n'y a pas de véritable environnement extérieur. Dans la version précédente, nous avons pris des exemples de slicing prêts à l'emploi tirés de l'environnement externe. Ainsi, au lieu de ces exemples, vous pouvez créer un émulateur formé pour recréer situations typiques environnement externe. Après tout, il peut y avoir beaucoup d'exemples, et il est plus efficace d'utiliser un émulateur compact au lieu de cette percée.

L'émulateur en mode entraînement peut être mis sur de vrais capteurs et laissé longtemps. Une question logique - pourquoi ne pas mettre tout de suite le programme nécessaire sur les capteurs pour l'entraînement ? Il y a plusieurs réponses ici. Tout d'abord, nous voudrons peut-être former la prochaine version du programme, puis nous devrons à nouveau piloter de vrais appareils. Deuxièmement, il est impossible d'expérimenter sur de vrais capteurs, que le programme ait appris correctement, ou de telles expériences peuvent être coûteuses, et l'émulateur peut fonctionner en mode prédiction.

De plus, l'émulateur peut être configuré pour qu'il puisse, d'une part, produire des écarts aléatoires par rapport au comportement de l'environnement, et, d'autre part, combiner différentes séquences temporelles du comportement de l'environnement. Étant donné que l'émulateur est entraîné dans un environnement externe, de telles combinaisons seront "inventées" de manière plausible. Ce qui élargit l'ensemble des exemples pour les programmes d'enseignement.

Naturellement, tout ce qui se passe en temps réel peut à nouveau être enregistré et utilisé pour une formation supplémentaire automatique des programmes.

Les programmes pour l'émulateur peuvent être créés en utilisant la même technologie que celle décrite ci-dessus.

Si l'environnement externe est très complexe (comme lorsque l'on joue aux échecs), alors l'émulateur sera construit en utilisant une technologie très proche du programme de contrôle lui-même. Dans la mesure où lors de l'apprentissage, les programmes joueront les uns avec les autres et le programme le plus fort survivra. L'émulateur de prédiction peut être modifié non seulement pour rechercher le meilleur coup, mais également pour s'adapter au style de jeu de l'adversaire. Ainsi, lorsqu'on joue avec une personne, toute une bataille se déroulera dans le "cerveau" de la machine entre de nombreux programmes et leurs adversaires, les émulateurs, avant de prendre la décision finale.

Ainsi, en utilisant l'émulateur de l'environnement externe, nous augmentons à la fois la qualité des programmes de formation et la qualité de la prise de décision en temps réel.

Existe-t-il une telle parallélisation en intelligence naturelle, avec prise de décision concurrentielle et environnement émulateur ? Je pense que oui, mais à peine dans ce forme directe... Ce qui s'est formé au cours de l'évolution naturelle est certainement plus complexe et efficace. Mais ici, pour la simplicité et la réalisation la plus rapide de l'effet, nous avons introduit artificiellement la concurrence et un émulateur.

Après l'introduction d'un émulateur de l'environnement extérieur et d'une solution collective compétitive, il est possible d'introduire de nouvelles propriétés de notre intelligence artificielle.

Solutions d'arrière-plan errantes... Après avoir pris une décision, il n'est pas nécessaire de forcer tous les programmes à se reconstruire pour comprendre l'étape suivante. Vous pouvez laisser certains programmes (bons selon certains critères) pour continuer à penser à des situations passées pendant longtemps. Il se peut très bien qu'ils pensent à quelque chose, et ce quelque chose sera utile soit dans la situation actuelle (même s'il a changé), soit sera utile pour un apprentissage ultérieur. Par exemple, un programme qui prend du retard peut démêler l'intention d'un ennemi ou trouver une solution tactique intéressante. Ensuite, il sera possible d'essayer de tourner la situation actuelle vers cette solution (l'intelligence artificielle "a changé d'avis"), et si le jeu est déjà terminé à ce moment-là (ou est allé dans une direction différente), alors le trouvé solution peut être utilisée dans la formation. La manière exacte dont ces deux options sont mises en œuvre fait l'objet d'études distinctes. Dans le même temps, l'intelligence artificielle sera en ligne tout le temps, et pensera, s'améliorera, dialoguera avec elle-même, presque comme une personne.

Explosion d'options... Vous pouvez essayer de détecter des situations lorsqu'un programme distinct (ou un groupe de programmes) est à une bifurcation, lorsqu'une situation ambiguë est détectée, et cette situation est forcée de se brancher sur de nouvelles branches de décision (programme + émulateur). Encore une fois, comment détecter de telles situations, comment les brancher est un sujet d'études distinctes, un champ non labouré. Jusqu'ici, ce n'est qu'au niveau d'une idée, l'idée qu'en cas d'ambiguïté, l'intellect devrait pouvoir ramifier des variantes. Mais le branchement n'est pas du tout la même chose que l'itération sur un arbre de décision. C'est un peu comme brouiller la fonction d'onde, comme l'arithmétique complexe, lorsque des opérations avec ambiguïté (unité imaginaire) produisent plusieurs options, qui à l'avenir, selon les règles d'une même arithmétique, interagissent les unes avec les autres. En outre, les solutions ramifiées en intelligence artificielle devraient continuer à coexister, continuer à communiquer les unes avec les autres (comment exactement est également une question), et dans bon moment temps, les branches peuvent converger en une seule solution. De plus, le branchement ne se produira pas bêtement, comme lors de la recherche d'options, mais précisément aux moments où il est le plus intéressant.

Comment exactement un point de branchement potentiel peut-il être détecté ? Pour les réseaux de neurones conventionnels, il existe des algorithmes qui augmentent la capacité du réseau de neurones s'il ne suffit pas de traiter des données, et réduisent la capacité du réseau si elle est excessive pour prendre des décisions. Modifier la capacité d'un réseau de neurones consiste à ajouter et à supprimer des poids-connexions entre les neurones et les neurones eux-mêmes (lire ajouter/supprimer des lignes dans une matrice non linéaire et mettre à zéro des éléments qui n'affectent pas la solution). Il y a toute une direction concernant les arbres neuronaux qui poussent selon les besoins. Ainsi, dans une équipe de programmes, vous pouvez vérifier à quoi différents programmes "pensent", minimiser les situations similaires et essayer de générer de nouvelles directions de "pensée". Pour évaluer cela, tout d'abord, les émulateurs nous aideront, nous devons examiner dans quelle mesure ils donnent une vision de l'environnement externe.

Les programmes individuels peuvent également être vérifiés pour voir dans quelle mesure ils apportent une solution sans ambiguïté. Si un programme erre entre plusieurs solutions, ou ne converge pas vers une solution, alors des programmes supplémentaires peuvent être lancés sur cette situation, initialisés par la même situation, mais avec des déviations aléatoires afin de stimuler le « cours de pensées alternatives ». Le branchement peut également être utile dans la formation, lorsqu'il sera possible de déterminer le degré d'ambiguïté du programme dans la solution et de diviser les cas ambigus en plusieurs programmes plus clairs afin qu'ils travaillent plus efficacement ensemble en équipe. Mais encore une fois, tout ce ne sont que de belles idées jusqu'à présent, des idées d'expériences.

ils rêveront

C'est bien quand nous avons des exemples de comportement correct, ou que nous pouvons imiter la réaction de l'environnement. Pour l'intelligence naturelle (et l'avenir de l'intelligence artificielle), ce luxe n'est pas toujours disponible. L'intellect essaie de faire quelque chose avec l'environnement, quelque chose en sort correctement, quelque chose ne le fait pas, quelque chose reste avec des conséquences incompréhensibles. Comment en tirer des leçons ?

Pour ce faire, nous allons introduire le troisième type d'émulateur d'environnement externe. Elle se souviendra des manifestations de l'environnement extérieur, de ce que l'intelligence artificielle a fait en réponse à ces manifestations, et à quoi cela a conduit. Cela n'exclut pas la possibilité qu'au fur et à mesure de l'expérience, un tel émulateur soit capable de combiner les deux variétés précédentes - émulation et prédiction de l'environnement, et soit construit sur des principes similaires à notre intelligence artificielle.

Comment apprendre quand il n'y a pas d'informations claires, quelles actions sont correctes et lesquelles ne le sont pas ? Une petite digression. Les réseaux Hopfield apprennent à partir d'exemples en « résumant » tous les exemples, sans évaluation critique, sans correction d'erreur. Un réseau de Hopfield entraîné dans une image partielle ou bruitée lors de l'itération (convergence vers le minimum d'énergie d'une image donnée) peut recréer l'image d'origine. Ainsi, après une formation sur le réseau, parfois de fausses images sont obtenues. Afin d'éliminer les fausses images, des exemples d'apprentissage sont lancés en entrée, et si le réseau converge vers une fausse image, alors une telle image est écrasée. D'une certaine manière, le réseau "rêve" sur la base d'informations reçues précédemment, et dans le rêve, les fausses informations sont remplacées par des informations correctes. Les réseaux Hopfield sont utilisés pour images simples, mais nous nous intéressons au principe.

Nous pouvons suivre un chemin similaire ici. Après l'accumulation d'informations provenant de l'environnement externe, l'intelligence est déconnectée de l'environnement externe et ne fonctionne qu'avec l'émulateur. L'émulateur reproduit des situations, et si l'intellect a donné une bonne solution, alors cette solution est renforcée, si elle est mauvaise, alors cette solution est remplacée par autre chose. Pour un aléatoire, par exemple. L'essentiel est que la nouvelle solution n'ait pas l'air mauvaise. En même temps, nous construisons des changements de manière à ce que les bonnes solutions accumulées ne soient pas perdues et que de nouvelles mauvaises solutions n'apparaissent pas.

Au minimum, une telle restructuration peut être effectuée à l'aide d'un algorithme génétique. Il est possible qu'une évaluation croisée de chaque règle qui compose le programme soit également possible, de sorte qu'il sera possible de calculer avec précision l'erreur et la correction pour chaque règle. Après tout, nous avons des informations pour savoir si le programme a bien ou mal fonctionné. C'est plus difficile ici dans le sens où si la décision a été prise par une équipe de programmes, alors les informations sur la justesse de la décision ne sont connues que pour le programme gagnant. Mais d'un autre côté, nous avons des informations sur le comportement des programmes, qui sont longues dans le temps, et il est déjà possible d'en extraire des détails.

Il s'avère donc que si l'intelligence artificielle est mise dans des conditions naturelles, de longues phases d'éveil apparaîtront, au cours desquelles des informations sont accumulées par essais et erreurs, et après elles, il y a des phases de sommeil, au cours desquelles ces informations sont digérées qualitativement. Ce processus lui-même s'avérera long et laborieux. Dans l'intelligence naturelle, un tel mécanisme, apparu une fois dans le processus d'évolution, a rapidement montré son utilité et s'est multiplié pour les générations suivantes. La chose, pour ainsi dire, n'est pas très difficile pour apparaître au cours de l'évolution.

Ils ressentiront de la douleur

Une autre option de formation lorsque les informations sur l'exactitude des actions ne sont pas disponibles. Permettez-moi de vous rappeler que lors de l'enseignement par la méthode de recuit, des changements aléatoires des paramètres sont utilisés dans leur ensemble sur l'ensemble de la solution pour reconstruire la solution. La force de ces changements (température) commence à un niveau élevé et diminue progressivement lorsque la solution converge vers la meilleure option... Si les changements ne nous conviennent pas, la force des changements (température de recuit) augmente à la recherche d'une option plus adaptée.

Par conséquent, au cours du processus d'évolution, un mécanisme de douleur s'est développé. La mauvaise action - et nous ressentons instantanément comment nos connexions neuronales sont dévorées par une flamme cruelle. Ce bouleversement ne passe pas inaperçu. Les conséquences d'une mauvaise action sont littéralement épuisées dans nos connexions neuronales. A tel point que nous évitons par tous les moyens la répétition de ces mauvaises actions. Le mécanisme est simple mais efficace.

En intelligence artificielle, l'apprentissage peut être complété par un taux de changement aléatoire plus intense, un taux plus élevé de changement intentionnel si l'intellect produit de mauvaises décisions. De tels ajouts peuvent être appliqués à la fois au niveau d'une équipe de programmes et au niveau de programmes ou de règles individuels. Les "mauvaises" règles ou programmes peuvent littéralement être brûlés à la suite d'actions incorrectes, en même temps bonnes règles et le programme sera sauvegardé et multiplié, mais ils auront "peur" des mauvaises actions comme le feu.

À un niveau d'intelligence supérieur, la « douleur » se manifestera également par le fait que « la tête se sépare des idées », « il est impossible de recueillir des pensées », etc. L'état d'une bonne décision s'accompagnera de clarté de pensée, d'harmonie et de "tranquillité d'esprit".

Ensembles de règles

Imaginez que dans le processus d'apprentissage évolutif, une partie des règles soit clonée afin qu'elles restent interconnectées avec l'instance parente. Par exemple, ils restent connectés aux mêmes entrées et sorties, et sont activés presque simultanément. Dans le même temps, les règles sont toujours différentes les unes des autres et leur évolution ultérieure peut se faire de différentes manières. Maintenant, nous allons faire en sorte que lors des changements, cette partie des règles reste principalement interconnectée, c'est-à-dire de sorte que les sorties, les sorties, l'activation et les décisions émises sont en grande partie les mêmes. Dans ce cas, les règles de l'ensemble peuvent participer à d'autres lieux, y compris dans d'autres ensembles.

Il s'avère que l'ensemble prend des décisions avec toutes ses règles. Grâce au travail collectif, la solution s'avérera de meilleure qualité (du moins, c'est le cas pour les réseaux de neurones ordinaires). Mais en même temps, l'ensemble aura aussi une nouvelle représentation qualitativement différente de la situation, il pourra agir bien au-delà de la situation initiale, du fait que les règles de l'ensemble interviennent en d'autres lieux (et ensembles) du programme (et c'est déjà une hypothèse, concernant les ensembles participant au programme). On peut dire que la vision de la situation sera plus élevée, plus généralisée, plus élargie et enrichie par l'expérience d'autres situations. Ainsi, dans des situations limites ou nouvelles, l'ensemble pourra générer (on pourrait même dire fantasmer) nouvelle réalité poursuivant le sens de l'ancien qu'il a vu pendant l'entraînement.

Ici, des choses telles que les catégories d'abstraction, la pensée associative commencent à apparaître en catimini. Des chaînes logiques « lourdes » commencent à apparaître, qui, grâce à une vision de la situation d'ordres de grandeur plus élevés, peuvent produire des chaînes logiques « fines » proches de la logique formelle et des algorithmes rigoureux.

Face à des situations nouvelles, le programme, ayant de tels ensembles en réserve, sera beaucoup plus facile à transférer et à généraliser son expérience à des situations nouvelles.

Tout cela est jusqu'ici de belles hypothèses, mais, très probablement, les choses vont dans ce sens. Comment exactement ces ensembles ont été formés et maintenus dans le cerveau n'est pas encore clair (mais d'accord, l'évolution semble assez simple). Comment les ensembles sont soutenus et enseignés dans le programme est également une question. Apparemment, il n'y a pas de fixation claire des règles sur les ensembles, tout est résolu dynamiquement, en combinant les règles qui sont compatibles pour une situation spécifique, le tout selon les mêmes principes de compétition et d'interaction. Dans le même temps, les règles et les ensembles peuvent également être construits dynamiquement dans une hiérarchie, et, néanmoins, il n'y aura pas de hiérarchie permanente, il n'y aura pas de méta-niveaux et de transitions entre eux, il n'y aura pas de formalisation claire avec l'attribution de liens système-sous-système. Plus de détails sur la façon dont cela peut être formé seront plus loin. Et il faut bien l'avouer, du point de vue du cours naturel des choses, tout a l'air bien simple.

Et encore des vagues, des fréquences et de l'holographie

Dans notre programme d'intelligence artificielle, la division en programmes concurrents et une vision alternative de la situation est fixée artificiellement. De la même manière, un état global est introduit artificiellement, auquel toutes les règles et un générateur d'horloge ont accès, qui à chaque nouvel instant active toutes les règles et met à jour la situation. Mais dans le cerveau il n'y a rien de tel, et pourtant quelque chose de très semblable s'y est formé naturellement.

Ce que nous avons, c'est la propriété d'un neurone naturel d'accumuler du potentiel, et lorsque le seuil critique est dépassé, il se décharge avec une série de signaux à ses sorties (rappelez-vous les réseaux de neurones fréquentiels dans les parties précédentes ?). Ces séries, à leur tour, élèvent (ou abaissent) à chaque fois les potentiels des neurones qui sont connectés aux entrées du neurone d'origine. Les potentiels de seuil, la fréquence et la durée de décharge sont des paramètres qui semblent être réglés dans le processus d'apprentissage.

Il s'avère donc que ni un générateur d'horloge, ni des boucles et transitions conditionnelles, ni un état global et une parallélisation forcée de la situation ne sont nécessaires.

Les collections de ces neurones portent déjà un état interne, une logique itérative complexe et un traitement conditionnel.

De plus, des packs de neurones peuvent être combinés en chaînes alternatives (parallèles), chacune avec sa propre vision de la situation, et à la sortie, toutes ces chaînes rivalisent entre elles pour la solution qui sera soumise à la sortie. Et un tel traitement se prête tout à fait à la modélisation sur des ordinateurs conventionnels. Une autre chose est qu'au début, il est susceptible d'être plus gourmand en ressources que le modèle d'intelligence avec parallélisation forcée, mais à long terme, le modèle le moins réglementé, semble-t-il, s'avérera plus efficace.

Rappelons maintenant les ensembles et les méta-ensembles. Il s'avère que des fronts d'onde entiers parcourent des ensembles individuels, qui dans différents ensembles, combinés, donnent des motifs d'ondes complexes, peut-être même plus compliqués que les images holographiques. Ce sont ces modèles d'ondes qui relient dynamiquement des neurones individuels (ou des réseaux de règles dans notre intelligence artificielle) en ensembles et méta-assemblages.

Voyez comment tout s'est déroulé naturellement et pourtant de manière pragmatique. Nul besoin d'inventer séparément des réseaux fréquentiels et holographiques, nul besoin de les torturer et de les forcer à reconnaître les images. Il suffit d'appliquer une méthode efficace et cours naturel les choses, comment toutes ces propriétés holographiques de fréquence se sont manifestées, comme effet secondaire.

La situation initiale, une fois dans le cerveau, se divise en de nombreuses chaînes alternatives, provoque des tempêtes entières de vagues de changements dans les potentiels neuronaux, et obtient par conséquent une représentation beaucoup plus complexe et qualitative. A la sortie, tout ce traitement s'effondre à nouveau dans des limites étroites qu'il faut délivrer en monde extérieur.

Associations, catégories, généralisations et autres philosophies

Dans la section sur les ensembles, nous avons mentionné qu'il serait bon que les règles participent à différentes parties du programme, afin que les règles apprennent à généraliser qualitativement l'expérience de situations complètement différentes. À savoir, ils seront sur la voie d'abstractions de haut niveau telles que la pensée associative et la catégorisation. Par exemple, ils sauront tirer un point commun des concepts de « blanc » et « duveteux » et l'appliquer dans la situation « mouches ». Un tel traitement rendra la réflexion beaucoup plus puissante et vous permettra de construire dynamiquement des ensembles de règles pour des situations complètement différentes.

Pour obtenir de telles propriétés, nous avons introduit artificiellement des ensembles et leur entretien. De quelles autres manières pouvez-vous obtenir les propriétés qui permettent à la règle, en étant entraînée pour certaines situations (concepts), de participer et de se recycler dans des situations complètement différentes (pour d'autres concepts, comme dans l'exemple à propos de blanc / duveteux / mouches) ?

Jusqu'à présent, deux options se présentent.

Option 1, combinaison dynamique d'entrées et de sorties... Rappelez-vous, au début, nous avons mis une correspondance dure des entrées et des sorties des règles (réseaux de neurones) avec les cellules de l'état global ? Dans le même temps, les changements évolutifs ont été réglés de manière à modifier au minimum ces correspondances. Dans la prochaine version, sans état global, les entrées et sorties des règles différentes-les filets étaient également étroitement connectés les uns aux autres.

Laissons maintenant dans le processus de travail et dans le processus d'apprentissage les entrées et les sorties pour changer leur position les unes par rapport aux autres. Deux questions se posent. Premièrement, comment déterminer dans quelle mesure les éléments de la combinaison résultante sont compatibles, dans quelle mesure ce composé résout-il efficacement le problème ? Deuxièmement, comment trouver rapidement des combinaisons d'entrées et de sorties compatibles/efficaces, car il y a beaucoup de combinaisons ?

L'option la plus simple est de faire correspondre chaque entrée et sortie de la règle avec une fonctionnalité de compatibilité, qui change au fil de l'évolution, et il existe peut-être un moyen d'affiner cette compatibilité plus précisément, dans le processus d'apprentissage, en fonction des résultats des règles. (La compatibilité des sorties peut-elle être calculée pendant le fonctionnement de la règle ? Serait-elle efficace ?) Pour les entrées et sorties vers l'environnement extérieur, un jeu de compatibilité est également nécessaire, qui fera partie du jeu général. Lors de l'exécution du programme, les règles seront connectées uniquement en tenant compte de la compatibilité des entrées-sorties. La tâche de sélection d'une telle compatibilité n'est pas facile sur le plan informatique, mais toujours pas entièrement difficile. Peut-être que les algorithmes du réseau Hopfield qui peuvent faire des choses similaires vous aideront dans cette sélection.

L'option suivante consiste à combiner de différentes manières dans le processus d'apprentissage les entrées et sorties de différentes règles et d'accumuler des informations sur l'efficacité (compatibilité) de différentes combinaisons. Dans le travail réel, procédez comme ci-dessus - combinez les entrées conformément à la compatibilité.

Les options précédentes conviennent à la mise en œuvre de l'intelligence artificielle, mais il ne semble pas y avoir une telle combinaison d'entrées et de sorties dans l'intelligence naturelle. Mais il existe des cartes de caractéristiques, voir sur les réseaux convolutifs et le néocognitron dans les parties précédentes. Et de telles cartes semblent exister dans l'intelligence naturelle.

La signification des cartes de caractéristiques est la suivante. Il y a un ensemble de règles, il y a un ensemble de cellules d'entrée. Chaque règle analyse les cellules d'entrée à l'aide d'une fenêtre mobile et toutes les cellules de la fenêtre vont à l'entrée de la règle. Le résultat de la règle est écrit dans la cellule de la carte des caractéristiques, qui correspond à la position de la fenêtre sur les cellules d'entrée. En conséquence, pour chaque règle, une carte de caractéristiques sera obtenue, dans laquelle les endroits du meilleur déclenchement de règle auront les valeurs les plus élevées. Dans la couche suivante, toutes les cartes de caractéristiques constituent l'entrée d'un nouvel ensemble de règles, qui composent à nouveau leurs cartes de caractéristiques. Les règles d'apprentissage peuvent rétropropager une erreur. Comment enseigner de telles règles dans le cadre d'un programme est une question ouverte.

Les cartes de caractéristiques ont bien montré dans la reconnaissance d'images, avec des distorsions associées à un changement d'échelle, de perspective, de rotation et à des déformations spécifiques à l'objet représenté.

Par conséquent, les cartes de caractéristiques sont un bon candidat pour les expériences de combinaison dynamique des entrées et des sorties pour les règles qui composent un programme.

Option deux, combinaison de fréquences d'entrées et de sorties... Dans ce cas, vous n'avez pas besoin de réorganiser les entrées et les sorties. Dans les réseaux de neurones fréquentiels (ou dans les programmes construits sur de tels réseaux), chaque neurone est à la fois le filtre de fréquence le plus simple et le générateur de fréquence le plus simple. De plus, ce filtre peut être réglé sur différentes harmoniques en même temps (ce qui fait que la capacité et les capacités des réseaux fréquentiels sont supérieures à celles des réseaux conventionnels). De même, toute combinaison de neurones est à la fois un filtre de fréquence complexe et un générateur de fréquence complexe. (Dans notre intelligence artificielle, un tel neurone est l'équivalent d'une seule règle représentée par un petit réseau de neurones.)

Par conséquent, des signaux liés à des entités complètement différentes peuvent se déplacer le long des mêmes neurones à des fréquences différentes. Mais comme différentes fréquences affectent les mêmes neurones (combinaisons de neurones), différentes fréquences (et les entités qu'elles traitent) s'affectent les unes les autres. Par conséquent, si notre intelligence est construite sur les principes du traitement du signal fréquentiel (comme mentionné ci-dessus dans la section sur les fréquences), alors cette intelligence semble déjà avoir la capacité de généraliser des entités hétérogènes et à une certaine abstraction philosophique. Cependant, il peut y avoir des solutions techniques supplémentaires qui accéléreront la formation de telles généralisations dans les réseaux de fréquences.

Et un peu en conclusion. De telles méthodes de recombinaison des entrées et des sorties donnent non seulement des propriétés de haut niveau, comme la pensée associative et les généralisations qualitatives, mais aussi des propriétés plus prosaïques. Que se passe-t-il si les fils sont mélangés dans le circuit électrique ? Cela sera très probablement fatal au circuit. Mais pour le cerveau, ce n'est pas nécessaire. Des expériences (sur des animaux) ont été réalisées lorsque le cerveau a été littéralement coupé en morceaux et mélangé, puis replié et l'animal a été relâché. Après un certain temps, l'animal est revenu à la normale et a survécu. Propriété utile, vérité?

Il n'y a pas de méta-niveaux

Une fois que je me suis creusé la tête sur la façon dont une hiérarchie logique est construite dans les systèmes intelligents, comment les constructions logiques ont lieu lorsqu'une autre est construite au-dessus d'un niveau cristallin, résumant plusieurs niveaux en dessous. Dans les travaux sur l'intelligence artificielle (et pas seulement), il a été magnifiquement décrit comment les systèmes évoluent, accumulent de la complexité, passent d'un niveau à un autre.

Dans les systèmes réels, il s'est toujours avéré que peu importe à quel point les niveaux inférieurs sont bien pensés, des divergences s'y accumulent toujours, des changements qui ne peuvent pas être coordonnés avec les niveaux supérieurs, ces changements rompent tôt ou tard l'ensemble du système, nécessitant un refonte majeure de toute la hiérarchie. La solution était la suivante : ne pas être fortement lié à de telles hiérarchies, laisser une liberté d'action afin que, si nécessaire, il soit possible de travailler en contournant la hiérarchie formelle. Et ce n'est pas le signe d'un système mal conçu, ce sont des réalités de la vie.

Bien sûr, le bon système minimisera le désordre, et c'est ce que c'est. Mais cela ne veut pas dire que les liens informels sont totalement absents dans un tel système. Un bon système, malgré toute sa justesse, doit comporter un élément de sa propre destruction. Un élément qui entre en vigueur lorsque le système ne peut plus faire face à ses tâches, un élément qui reconstruit complètement le système pour de nouvelles réalités.

De même, en intelligence artificielle, il ne semble pas y avoir de place pour des niveaux logiques et des méta-transitions (notamment au vu de la section précédente sur les associations et les généralisations). Toutes les règles (ce sont des neurones dans notre compréhension) sont simultanément impliquées dans la prise de décision à tous les niveaux. Les neurones de règles peuvent s'aligner dynamiquement dans divers ensembles, dans diverses hiérarchies. Mais même avec un alignement aussi dynamique, ils n'auront pas de rigueur hiérarchique, un élément du niveau inférieur peut facilement affecter le niveau supérieur, à tel point qu'il le reconstruira complètement.

Dans chaque cas particulier d'application des règles, vous pouvez construire votre propre hiérarchie. Mais cette hiérarchie n'est pas statique, comme c'est le cas avec diverses formalisations. En intelligence, tout dépend de quel côté tirer, de quel angle regarder. Chaque coin a sa propre hiérarchie, et il peut y avoir beaucoup de tels "angles de vue". Au sein de l'intellect, apparemment, il n'y a pas de hiérarchie claire (cela ne signifie pas le niveau « matériel » qui détermine quelle partie du cerveau est responsable de quels organes).

Génétique quantique

Beaucoup de choses intéressantes ont été dites sur l'informatique quantique et les propriétés quantiques de l'intelligence. Certains croient même que le cerveau peut directement « agiter » les processus quantiques pour penser.

En bref, l'essence de l'informatique quantique se résume à cela. Les données initiales sont appliquées à un petit nombre de particules élémentaires. Dans le processus de résolution des données, une énorme quantité de données commence à être traitée en même temps. différentes façons De plus, ces méthodes communiquent entre elles, apprennent de qui la solution est la meilleure, de qui est la pire, les mauvaises décisions sont affaiblies, les bonnes sont renforcées.

Cela est dû au fait que lors du démarrage des calculs quantiques, chaque particule « ressent » complètement l'état de toutes les autres particules participant au calcul, et cela se ressent instantanément, et sans dépense d'énergie significative. Lorsque la solution est lancée, les particules sont immergées dans un état « enchevêtré » (« enchevêtré »), qui ne peut pas être étudié depuis le monde extérieur. Dans un état barbouillé, chaque particule n'a pas d'état physique clair, chaque particule est simultanément dans plusieurs états et peut participer à plusieurs processus parallèles (de plus, ces processus se "sentent" l'un l'autre). De plus, plus les particules participent à la solution, plus la même particule peut avoir d'états simultanément.

Si nous essayons d'entrer dans un état maculé et de voir ce qu'il y a à l'intérieur, alors à tout moment nous obtiendrons des états physiques spécifiques de particules, sans la moindre allusion à de nombreux états simultanés. De plus, après une telle intervention, le cours de la décision sera complètement détruit, l'état multiple ne pourra pas être rétabli. Par conséquent, ce qui se passe dans l'intervalle entre la spécification des données d'entrée et la suppression du résultat de la solution est un mystère. Il s'avère qu'une petite quantité de données d'entrée en cours de résolution génère plusieurs ordres de grandeur d'état interne plus complexe, dont on ne sait pas exactement comment il évolue, ne se prête pas à la recherche et, néanmoins, donne la bonne solution. L'état capturé en essayant d'enquêter sur l'état souillé est de nature probabiliste. Avec la compilation correcte de l'algorithme quantique, il est possible de rendre la probabilité de supprimer la bonne solution beaucoup plus élevée que la probabilité de supprimer la mauvaise solution (c'est-à-dire que la solution doit être supprimée au moins plusieurs fois).

Il semblerait que de cette façon, vous puissiez obtenir une énorme puissance de calcul presque gratuitement. Mais il y a un problème - les particules de la solution doivent être complètement isolées du monde extérieur, sinon le monde extérieur renversera la justesse du cours de la solution (viole la cohérence). On pense qu'un isolement complet est impossible, car (comme le dit la physique quantique) chaque particule, chaque quantum, est initialement étalée dans tout l'univers et est étroitement liée à toutes les autres particules qui composent notre univers. Et, en conséquence de cette opinion, il s'avère que l'informatique quantique n'immerge pas les particules dans un état étalé sur des univers alternatifs, mais attire d'autres particules très spécifiques de notre propre univers pour paralléliser les calculs. Certes, cela n'élimine toujours pas les difficultés d'étude de l'état intérieur.

Plusieurs conclusions intéressantes en découlent. L'informatique quantique à hautes puissances ne pourra pas nous fournir une informatique absolument vraie, mais elle convient tout à fait à des solutions plausibles, par exemple, en intelligence artificielle, comme décrit ci-dessus. Et une autre conclusion, étroitement liée à la précédente - l'informatique quantique ne peut pas fournir la connaissance de soi, l'auto-réflexion, car elles font partie intégrante de l'univers, et ne peuvent donc pas se connaître elles-mêmes et l'univers dans son ensemble, car elles sont un partie intégrante de celui-ci. C'est pourquoi les incertitudes quantiques suivent en fait lorsqu'on essaie de mesurer les états des particules quantiques, comme nous l'avons noté dans les parties précédentes. Après tout, il est impossible de se connaître pleinement uniquement à l'aide de soi-même. L'incertitude quantique est en fait une conséquence directe du théorème de Gödel, qui stipule qu'un système formel ne peut pas se connaître avec une précision absolue.

Revenons maintenant à l'intelligence. De nombreux chercheurs ont correctement remarqué les similitudes entre les propriétés de l'informatique quantique et les processus intellectuels chez l'homme. Les propriétés les plus intéressantes pour nous sont les suivantes. L'entrée et la sortie de décision sont un ensemble d'états assez simple. Ces états simples plongent le cerveau dans un état beaucoup plus complexe qui ne peut être étudié de l'extérieur. Une tentative d'investigation de cet état, ou de suppression d'une solution, produit à nouveau un ensemble états simples, de plus, ces états sont également probabilistes et sont plus susceptibles de donner une solution correcte qu'une mauvaise. Il est difficile pour une personne de se rendre compte de cet état interne, contrairement à l'entrée/sortie, mais c'est un état interne, que l'on appelle « ressenti ». Comme en informatique quantique, la définition de l'état initial et la suppression de la solution sont des procédures assez chronophages. Il est donc facile pour une personne de penser "à l'intérieur d'elle-même", mais pour transmettre ses pensées à l'extérieur, à une autre personne, vous devez faire de gros efforts.

Maintenant, il ne reste plus qu'à noter que les propriétés ci-dessus de l'informatique quantique et de l'intelligence humaine sont pratiquement applicables une à une à l'algorithme d'intelligence artificielle décrit précédemment, qui était basé sur un algorithme génétique.

Après tout, en fait, il semblerait, où dans le cerveau, avec ses ondes, ses fréquences et ses neurones, un semblant d'algorithme génétique, avec ses chromosomes et ses solutions alternatives peut apparaître ? Il s'avère que, si vous regardez de l'autre côté, l'algorithme génétique n'est qu'une des manifestations de plus classe générale processus.

Il s'avère que le cerveau, pour présenter des propriétés quantiques intéressantes, n'a pas à tirer directement des processus quantiques, il existe des explications plus pragmatiques. Et même l'informatique quantique elle-même n'a pas à attirer le mysticisme sur les univers parallèles et les vérités absolues, car ils peuvent très bien être organisés au niveau micro dans une sorte d'algorithme génétique qui prétend seulement immerger les particules dans un état étalé, mais en fait contenu avec les ressources informatiques de son propre univers.

Il se pourrait bien qu'à la jonction de l'informatique quantique, des algorithmes génétiques et d'autres domaines de l'intelligence artificielle, une nouvelle théorie du calcul naît, qui permettra de fabriquer des ordinateurs quantiques plus puissants, et permettra, sur la base de l'appareil rigoureux de la physique quantique, pour expliquer plus précisément les processus se produisant dans l'intelligence. Après tout, ce à quoi nous sommes arrivés jusqu'à présent dans la compréhension de l'intelligence ressemble à une anecdote "Je sens dans mon intestin que 0,5 + 0,5 sera un litre, mais je ne peux pas le prouver mathématiquement", quand nous pouvons le faire, mais nous ne pouvons pas expliquer pourquoi il en est ainsi.

Représentation interne des choses

Comment le cerveau représente-t-il les choses extérieures ? Il peut sembler que le cerveau recrée un modèle physique d'objets et de phénomènes, ce qui conduit à de nombreuses conclusions erronées. En fait, la représentation interne n'est pas du tout la même que le modèle physique. Le modèle interne est plausible. Le modèle interne forme un analogue qui capture uniquement les propriétés d'un objet qui sont les plus importantes pour nous, ces propriétés qui sont utilisées dans l'expérience quotidienne. Ce modèle interne est parfois appelé « physique naïve ». Dans les limites de l'expérience quotidienne, un tel modèle donne des résultats, bien qu'inexacts, mais tout à fait pratiques. Mais dès que l'on dépasse les frontières de l'expérience quotidienne, un tel modèle échoue.

L'ensemble de règles qui forment un tel modèle peut être très éloigné de la représentation physique réelle. De ce fait, la représentation interne porte en appendice une multitude de propriétés « fantastiques » d'objets réels, la représentation interne commence à « vivre sa propre vie ». Par exemple, les dessins animés. Une personne peut facilement reconnaître un visage dessiné sur une caricature, des personnes entraînées peuvent dessiner des caricatures. Mais les systèmes de reconnaissance faciale déconcertent les dessins animés. Et à juste titre, bien qu'il existe un modèle plausible dans les reconnaisseurs, il est beaucoup plus proche du physique que de l'humain.

La représentation intrinsèque présente également le différentiel de complexité décrit précédemment. Elle consiste dans le fait qu'un objet ou un phénomène plus simple génère une représentation interne beaucoup plus complexe, qui est chargée de modéliser l'essence des choses. Après tout, l'intelligence ne peut pas simuler directement la physique. Une idée simple fait naître un "sentiment" de l'essence des choses, quand on sent pourquoi il en est ainsi, mais qu'on ne peut pas l'expliquer. Une représentation plus complexe peut amener la représentation des choses au niveau de la compréhension, de la fantaisie, au niveau de la pensée consciente (exemple avec les dessins animés).

bonjour la logique

Qu'est-ce que la logique et d'où vient la plus haute activité intellectuelle ?

Notre intellect est passé des réactions « d'entrée-sortie » les plus simples à la combinaison d'un grand nombre de processus concurrents qui décomposent la situation d'entrée en une représentation interne beaucoup plus complexe.

En conséquence, pour certaines choses, des complexes de règles d'une énorme complexité peuvent être formés (beaucoup plus compliqués que la physique de la chose originale), qui sont la représentation interne de cette chose. Le type exact de ces règles et la manière dont elles peuvent être formées sont décrits ci-dessus. Mais l'essentiel est qu'en raison d'une telle différence de complexité entre le phénomène initial et sa description, une représentation qualitativement différente de ce phénomène devient possible, ce qui permet de tirer de nouvelles connaissances sur ce phénomène avec un haut degré de plausibilité.

Permettez-moi de vous rappeler que le paradoxe de l'intelligence contre l'algorithme est qu'un algorithme ne peut que simuler bêtement la physique d'une chose, sans réaliser l'essence du phénomène, ne peut pas tirer de nouvelles connaissances sur le phénomène, et ne peut même pas garantir la vérité de son travail. . L'intelligence, grâce à une représentation interne beaucoup plus complexe de l'essence des choses, est capable non seulement de modéliser ces mêmes choses, mais aussi d'en déduire de nouvelles connaissances, et même d'évaluer la véracité des jugements sur cette chose, et avec une haute degré de plausibilité.

La transition de la complexité, qui développe la représentation de l'essence des objets et des phénomènes, en une représentation, de plusieurs ordres de grandeur plus compliquée que la « physique » originale des objets et des phénomènes, est un bon candidat pour le rôle de compréhension. Il y a une décomposition en une représentation interne complexe - il y a une compréhension et une gestion de haute qualité de l'essence des choses, une réponse flexible est possible lorsque des situations inattendues surviennent. Il n'y a pas une telle décomposition - seul un "cramming" stupide est possible, une adhésion aveugle à l'algorithme, qui ne donne pas de nouvelles connaissances et ne rend pas compte de l'essence ou de la vérité de son travail, et s'embrouille lorsque de nouveaux facteurs surviennent.

Une adhésion terne à l'algorithme n'attire pas l'activité intellectuelle la plus élevée, il est donc rapide et efficace, où seule une réaction claire aux situations typiques est nécessaire. Une activité intellectuelle plus élevée, avec l'attrait de la compréhension, est capable de riveter lentement différents algorithmes, mais n'est pas capable de les exécuter rapidement. Des combinaisons de ces méthodes sont également possibles.

La prochaine question logique est : est-il possible de comprendre ce qui se passe dans le processus de compréhension ? Et la même réponse logique - très probablement oui, mais cela nécessitera une telle représentation des processus se produisant dans l'intellect, qui serait de plusieurs ordres de grandeur supérieur à la complexité des processus intellectuels originaux. C'est-à-dire que nous pouvons apprendre quelque chose sur l'intellect, nous pouvons faire quelque chose, mais nous ne sommes pas capables de comprendre pleinement et qualitativement le travail de l'intellect humain - le pouvoir du cerveau ne suffit pas. Bien que nous puissions étudier et utiliser les modèles, comme nous utilisons actuellement les ordinateurs, sans être pleinement conscients des processus qui s'y déroulent. Il est irréaliste d'imaginer les processus qui se déroulent dans tous les millions de transistors, bien qu'il soit tout à fait possible de comprendre comment les unités logiques des circuits informatiques fonctionnent et comment elles sont combinées dans des niveaux supérieurs. Il en est de même pour l'intellect.

A partir de ce qui précède, il devient clair pourquoi la compréhension est difficile à expliquer, et pourquoi la compréhension est facile à ressentir, pourquoi il est possible d'élaborer des constructions logiques accompagnant la compréhension, et pourquoi il est très difficile de reproduire toute la base qui a conduit à la compréhension. lui-même. Il y aura toute une section à ce sujet ci-dessous. À partir de là, il devient clair ce qu'est un sentiment, ce qu'est un sentiment d'état, pourquoi les sentiments et les sensations sont difficiles à exprimer, mais faciles à ressentir. En général, il y a beaucoup de conséquences intéressantes qui intéressent - regardez dans la direction des propriétés quantiques de la conscience.

Une autre question est de savoir comment il s'avère exactement que nous sommes conscients de nous-mêmes, conscients du monde qui nous entoure ? Les machines pensantes auront-elles ce genre de conscience ? Cette fondamentale question philosophique sort du cadre de l'intelligence artificielle, mais nous essaierons tout de même d'y répondre dans la prochaine partie.

Poursuivant la réflexion sur les différences de complexité et de compréhension, nous arrivons à la conclusion qu'une représentation interne super-complexe, en fin de compte, sera capable de générer des arêtes très fines, on pourrait dire nettes, super-harmonisées à partir de la représentation interne de des choses. En d'autres termes, idéalisation, ou abstraction des choses originales.

Ces abstractions doivent leur naissance à une combinaison multiple d'un très grand nombre de processus internes, conflictuels et combinatoires. Mais contrairement aux résultats de l'interaction de la majorité processus internes, pour les abstractions, le résultat ne sera pas flou (large), mais sera en quelque sorte rassemblé, en un point, en un ou plusieurs bords ou pics très nets.

Naturellement, les abstractions sont générées, entre autres, par l'observation répétée des manifestations de leurs prototypes réels, et des réflexions répétées impliquant la représentation interne des objets. De plus, la répétition de ces observations et réflexions est certainement plus élevée que celle d'autres objets qui ne donnent pas d'abstractions. Et la nature des règles qui donnent une représentation interne des abstractions est probablement plus ordonnée, plus adaptée au pic d'harmonisation, de forme.

La prochaine étape est que de telles harmonisations de pointe pourront s'unir en de longues chaînes, agissant selon leurs propres lois. Ainsi, nous obtenons un nouveau niveau de pensée, abstrait ou logique. Naturellement, ce niveau est beaucoup plus difficile que la compréhension ordinaire, et toutes les créatures dotées de compréhension ne sont pas capables de constructions logiques complexes.

De telles chaînes abstraites vivront selon leurs propres lois, quelque part ressemblant aux prototypes originaux, quelque part s'en éloignant.

Faites attention à l'origine des constructions logiques. Ils ne sont pas au niveau algorithmique, et même pas au niveau suivant, le niveau de compréhension. Ils sont déjà le troisième niveau d'intelligence, une sorte de compréhension sur la compréhension.

Il reste à rappeler que dans le processus de constructions logiques, le cerveau « fait seulement semblant » de fonctionner comme un algorithme stupide, comme une machine à inférence primitive. En fait, les processus impliqués dans les constructions logiques sont d'énormes ordres de grandeur plus compliqués que les constructions logiques originales, et en raison d'un tel saut de complexité, l'intellect parvient à créer de nouvelles constructions logiques et à juger de leur vérité avec un haut degré de précision.

De la même manière, le cerveau peut imiter le travail des ordinateurs (machines de Turing), en raison de processus "lourds", bien qu'il semble que le cerveau suive des algorithmes "subtiles" (surtout s'il est entraîné à le faire).

Et un peu plus sur les constructions logiques et les algorithmes subtils. Pour les non-initiés, il peut sembler qu'en pensant à des vérités mathématiques ou lors de l'élaboration de programmes informatiques, un sage éclairé s'assoit dans un semblant de méditation, et avec l'aide d'un raisonnement correct arrive aux bonnes conclusions ou propose le bon programme . En fait, ce qui se passe ressemble plus au schéma suivant.

  • Est venu avec "quelque chose", une version initiale (ou même l'a généré accidentellement).
  • J'ai vérifié le travail de ce "quelque chose" en émulant un raisonnement logique, mémorisé zones à problèmes.
  • J'ai essayé d'améliorer les zones à problèmes en tapant (j'ai amélioré ce "quelque chose").
  • J'ai vérifié la version améliorée, et ainsi de suite.

Après tout, le cerveau n'est pas tant capable de générer des chaînes logiques correctes à la volée, mais de vérifier le travail de ces chaînes en émulant un raisonnement logique. Une autre chose est que le cerveau a une énorme "bibliothèque" de modèles pour différentes situations, ainsi qu'un tas de règles plausibles sur la façon de combiner ces modèles les uns avec les autres. En appliquant ces règles et modèles, avec un petit nombre de tentatives, il est possible de construire un bon raisonnement logique et de bons programmes. En particulier, de telles règles peuvent inclure des diagnostics du fonctionnement de différentes combinaisons de modèles, et peuvent et seront mises à jour dynamiquement, au lieu d'exécuter des constructions logiques sur la totalité des données à chaque fois.

Cette semaine, vous avez pu lire un cas extrêmement motivant d'un étudiant de GeekBrains qui a étudié la profession, où il a parlé de l'un de ses objectifs, qui a conduit à la profession - le désir d'apprendre le principe du travail et d'apprendre à créer vous-même des robots de jeu.

En effet, c'est le désir de créer une intelligence artificielle parfaite, qu'il s'agisse d'un modèle de jeu ou d'un programme mobile, qui a poussé nombre d'entre nous à emprunter la voie d'un programmeur. Le problème c'est ce qu'il y a derrière les tonnes Matériel d'apprentissage et la dure réalité des clients, ce désir même a été remplacé par un simple désir de développement personnel. Pour ceux qui n'ont pas encore commencé à réaliser leurs rêves d'enfant, voici un petit guide pour créer une véritable intelligence artificielle.

Étape 1. Déception

Lorsque nous parlons de créer au moins des robots simples, les yeux sont remplis d'étincelles et des centaines d'idées jaillissent dans sa tête sur ce qu'il devrait être capable de faire. Cependant, en ce qui concerne la mise en œuvre, il s'avère que les mathématiques sont la clé pour démêler le comportement réel. Oui, l'intelligence artificielle est beaucoup plus difficile que d'écrire des programmes d'application - la connaissance de la conception de logiciels à elle seule ne vous suffira pas.

Les mathématiques sont le tremplin scientifique sur lequel votre programmation future sera construite. Sans connaissance et compréhension de cette théorie, toutes les idées se briseront rapidement sur l'interaction avec une personne, car un esprit artificiel n'est en réalité rien de plus qu'un ensemble de formules.

Étape 2. Acceptation

Lorsque l'arrogance est un peu renversée par la littérature étudiante, vous pouvez commencer à pratiquer. Vous lancer dans LISP ou dans d'autres n'en vaut pas encore la peine - vous devez d'abord vous familiariser avec les principes de la conception de l'IA. Python est parfait à la fois pour un apprentissage rapide et un développement ultérieur - c'est le langage le plus souvent utilisé à des fins scientifiques, car vous trouverez de nombreuses bibliothèques qui faciliteront votre travail.

Étape 3. Développement

Passons maintenant directement à la théorie de l'IA. Ils peuvent être grossièrement divisés en 3 catégories :

  • IA faible - des bots que nous voyons dans les jeux informatiques, ou de simples assistants comme Siri. Soit ils exécutent des tâches hautement spécialisées, soit ils constituent un complexe insignifiant, et toute imprévisibilité de l'interaction les déconcerte.
  • L'IA forte est une machine dont l'intelligence est comparable à celle d'un cerveau humain. Aujourd'hui, il n'y a pas de véritables représentants de cette classe, mais des ordinateurs comme le Watson sont très proches d'atteindre cet objectif.
  • L'IA parfaite est l'avenir, un cerveau de machine qui surpassera nos capacités. C'est sur le danger de tels développements que Stephen Hawking, Elon Musk et la franchise de films Terminator mettent en garde contre le danger.

Naturellement, vous devriez commencer par les robots les plus simples. Pour ce faire, rappelez-vous bon vieux jeu"Tic-tac-toe" lors de l'utilisation du champ 3x3 et essayez de découvrir par vous-même les algorithmes de base des actions: la probabilité de gagner avec des actions sans erreur, les endroits les plus réussis sur le terrain pour la position de la pièce, le besoin de réduire le jeu à un match nul, et ainsi de suite.

Plusieurs dizaines de jeux et en analysant vos propres actions, vous pourrez probablement mettre en évidence tous les aspects importants et les réécrire en code machine. Sinon, continuez à réfléchir, et ce lien est ici juste au cas où.

Soit dit en passant, si vous avez toujours adopté le langage Python, vous pouvez créer un bot assez simple en vous référant à ce manuel détaillé. Pour d'autres langages, tels que C++ ou Java, vous n'aurez pas non plus de difficulté à trouver du matériel étape par étape. Sentant qu'il n'y a rien de surnaturel derrière la création de l'IA, vous pouvez fermer le navigateur en toute sécurité et commencer des expériences personnelles.

Étape 4. Excitation

Maintenant que les choses ont démarré, vous voulez probablement créer quelque chose de plus sérieux. Un certain nombre des ressources suivantes vous y aideront :

Comme vous le comprenez même à partir des noms, ce sont des API qui vous permettront de créer un semblant d'IA sérieuse sans perdre de temps.

Étape 5. Travail

Maintenant, lorsque vous comprenez déjà assez clairement comment créer une IA et quoi utiliser en même temps, il est temps de porter vos connaissances à un nouveau niveau. Premièrement, cela nécessite une étude disciplinaire appelée Machine Learning. Deuxièmement, vous devez apprendre à travailler avec les bibliothèques appropriées du langage de programmation sélectionné. Pour le Python que nous envisageons, il s'agit de Scikit-learn, NLTK, SciPy, PyBrain et Numpy. Troisièmement, le développement est indispensable. Et plus important encore, vous serez désormais en mesure de lire la littérature sur l'IA en toute connaissance de cause :

  • Intelligence artificielle pour les jeux, Ian Millington ;
  • Modèles de programmation de jeux, Robert Nystorm ;
  • Algorithmes d'IA, structures de données et expressions idiomatiques en Prolog, Lisp et Java, George Luger, William Stbalfield ;
  • Neuroscience cognitive computationnelle, Randall O'Reilly, Yuko Munakata;
  • Intelligence artificielle : une approche moderne, Stuart Russell, Peter Norvig.

Et oui, toute ou presque toute la littérature sur ce sujet est présentée dans une langue étrangère, donc si vous voulez créer de l'IA de manière professionnelle, vous devez améliorer votre anglais à un niveau technique. Cependant, cela est pertinent pour n'importe quel domaine de la programmation, n'est-ce pas ?