Un nouveau programme d'intelligence artificielle, Viv, est en cours de création pour remplacer Siri. Laissez l'ordinateur prendre la décision lui-même ou écrivez l'IA pour jouer ensemble

Où il a parlé de l'un de ses objectifs qui l'ont conduit à exercer ce métier : le désir d'apprendre le principe du travail et d'apprendre à créer lui-même des robots de jeu.

Mais en réalité, c'est précisément le désir de créer une intelligence artificielle parfaite, qu'il s'agisse d'un modèle de jeu ou programme mobile, a inspiré beaucoup d’entre nous à devenir programmeurs. Le problème est que derrière des tonnes de matériel pédagogique 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 leur rêve d’enfant, voici un petit guide pour créer une véritable intelligence artificielle.

Étape 1. Déception

Lorsque nous parlons de créer des robots, même simples, nos yeux se remplissent d’étincelles et des centaines d’idées nous traversent l’esprit sur ce qu’ils devraient être capables de faire. Cependant, lorsqu'il s'agit de mise en œuvre, il s'avère que la clé pour démêler le modèle de comportement réel réside... dans les mathématiques. Pour être un peu plus précis, voici une liste de ses sections qui doivent être étudiées au moins sous la forme d'une formation universitaire :

    Algèbre linéaire;

  • La théorie des graphes;

    Théorie des probabilités et statistiques mathématiques.

C’est le tremplin scientifique sur lequel s’appuiera votre programmation ultérieure. Sans connaissance et compréhension de cette théorie, toutes les idées s'effondreront rapidement en raison de l'interaction avec une personne, car l'intelligence artificielle 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 à apprendre les langues. Cela ne vaut pas la peine de se précipiter vers LISP ou autres ; vous devez d'abord apprendre à travailler avec des variables et des états à valeur unique. À la fois pour un apprentissage rapide et la poursuite du développement est parfait, mais en général, vous pouvez utiliser n'importe quel langage disposant des bibliothèques appropriées comme base.

É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 : les robots que nous voyons dans jeux d'ordinateur, ou de simples assistants comme Siri. Soit ils accomplissent des tâches hautement spécialisées, soit ils en constituent un complexe insignifiant, et toute imprévisibilité de l’interaction les déroute.

    Les IA fortes sont des machines dont l’intelligence est comparable à celle du cerveau humain. Il n'existe actuellement pas de véritables représentants de cette classe, mais des ordinateurs comme Watson sont sur le point d'atteindre cet objectif.

    L’IA parfaite est l’avenir, un cerveau machine qui dépassera nos capacités. Ce sont les dangers de tels développements contre lesquels Stephen Hawking, Elon Musk et la franchise cinématographique Terminator mettent en garde.

Naturellement, vous devriez commencer par les robots les plus simples. Pour ce faire, souvenez-vous du bon vieux jeu « Tic Tac Toe » lorsque vous utilisez un terrain 3x3 et essayez de comprendre par vous-même les algorithmes d'actions de base : la probabilité de victoire avec des actions sans erreur, les endroits les plus réussis sur le terrain pour placer une pièce, la nécessité de réduire le jeu à un match nul, etc.

Comme vous le comprenez même d'après les noms, ce sont des API qui vous permettront de coûts supplémentaires il est temps de créer un semblant d’IA sérieuse.

Étape 5. Travail

Maintenant que vous avez une idée claire de la manière de créer une IA et de ce qu'il faut utiliser, il est temps d'apporter vos connaissances à nouveau niveau. Tout d’abord, cela nécessitera d’étudier une discipline appelée « Machine Learning ». Deuxièmement, vous devez apprendre à travailler avec les bibliothèques appropriées du langage de programmation choisi. Pour le Python que nous examinons, il s'agit de Scikit-learn, NLTK, SciPy, PyBrain et Nump. Troisièmement, dans le développement, il n'y a aucun moyen de contourner

Dernièrement Heure Samsung fournit des services communication vocale basé sur l'intelligence artificielle, que ses clients peuvent utiliser dans tous les appareils et produits Samsung, des smartphones aux téléviseurs en passant par les machines à laver.

Samsung est le premier fabricant mondial de smartphones fonctionnant avec le logiciel Android gratuit de Google. L'un des principaux produits phares Appareils Samsung cette année, c'était le smartphone Galaxy S8, équipé d'une intelligence artificielle (IA). Les représentants de l'entreprise et de la startup Viv qu'elle a acquise l'ont annoncé lors d'une conférence de presse à Séoul.

Dans cette revue, nous examinerons quelques applications pour Téléphones Android, qui sont l’intelligence artificielle (IA).

Usage intelligence artificielle croissance. L’intelligence artificielle peut rendre notre vie meilleure et plus facile. Voici une liste des meilleurs applications pour l'intelligence artificielle, que vous pouvez utiliser sur votre smartphone Android.

Nous savons tous que l’utilisation de l’intelligence artificielle se développe. L’IA peut rendre notre vie meilleure et plus facile. Actuellement, l’utilisation traditionnelle de l’IA repose sur des applications intelligentes holographiques qui tentent de servir d’assistant sur les téléphones mobiles.

Robin - Assistant vocal IA

Robin est à toi assistant vocal sur la route, il te le lira des messages texte, informations locales, navigation GPS et même des blagues. Il a également plus de personnalité que les autres produits de traitement vocal, assistants, chats ou robots. Robin donne à votre smartphone un caractère plus intelligent.

Google Allo est une application de messagerie intelligente qui vous aide à parler davantage et à en faire plus. La meilleure partie de cette application est qu'elle vous aidera facilement à résoudre vos tâches. Cette application répond non seulement à vos questions, mais elle peut même faire des blagues.

Cortana est une application célèbre parmi toutes Utilisateurs Windows. Une application qui était auparavant disponible sur Téléphone Windows, désormais disponible sur Android. Vous pouvez utiliser Cortana pour envoyer e-mails, en recherchant les produits dont vous avez besoin sur Internet.

HOUND - recherche vocale et assistant

Chien- La meilleure façon recherchez par votre voix. Le moyen le plus rapide et le plus simple d'obtenir les services d'information, de divertissement et de communication que vous souhaitez, Hound est conçu pour votre vie bien remplie, vous permettant d'obtenir ce dont vous avez besoin et de passer à autre chose. Cette application est similaire à Recherche vocale Google.

Nouvelles récentes

Récent est une application d'actualités intelligente qui fournit vos actualités. Il est alimenté par une intelligence artificielle qui apprend vos intérêts, suggère des articles pertinents et suggère des sujets que vous pourriez vouloir lire. C'est le moyen le plus rapide et le meilleur de rester informé des sujets que vous aimez.

  • Didacticiel

Avez-vous déjà pensé à quel point il est facile d'écrire votre propre intelligence artificielle qui prendra des décisions dans le jeu ? Mais c'est vraiment simple. Laissez-le prendre des décisions aléatoires au début, mais plus tard, vous pourrez l'éduquer, lui apprendre à analyser la situation, puis il commencera à prendre des décisions conscientes. Dans cet article, je vais vous expliquer comment j'ai écrit mon bot et vous montrer également comment vous pouvez écrire le vôtre en quelques minutes. Notre ordinateur jouera un clone du jeu Tron, ou plutôt la partie où vous devrez vaincre des ennemis à moto.

Sous la coupe se trouvent 10 mégaoctets de fichiers GIF.

À propos du jeu

Dans le jeu, vous contrôlez une moto qui laisse derrière elle un mur de lumière. Le terrain de jeu est limité et vos adversaires possèdent les mêmes motos. La moto bouge constamment, on ne peut que tourner. Place libre le terrain se termine et éviter les obstacles devient plus difficile. Celui qui dure le plus longtemps gagne. J'ai créé le clone du jeu multijoueur basé sur un navigateur en utilisant node.js et socket.io. Contrôle de deux boutons - tournez à gauche et tournez à droite.

Interface du robot

Depuis que j'utilise socket.io, j'ai traité les joueurs sur le serveur en travaillant sur un tableau d'objets socket spéciaux créés par socket.io. Parmi ces objets, je n'ai utilisé que les fonctions d'identification, d'émission et de diffusion. Cela signifie qu'il est simple pour le jeu lui-même d'implémenter une interface socket et de l'utiliser dans le traitement, comme si un autre utilisateur jouait. J'ai nommé la classe BotSocket.
Méthode émettre (événement, données) Le bot effectue presque les mêmes actions que le client lors de la réception des données entrantes du serveur, à savoir :
  1. Enregistre les données sur toutes les motos en jeu lors de leur ajout
  2. Enregistre un lien vers votre moto lorsque vous l'ajoutez
  3. Met à jour les données sur toutes les motos en jeu
  4. Réinitialise les états lors du redémarrage du jeu
Pour envoyer des commandes de contrôle de votre moto au serveur, vous deviez enregistrer un lien vers l'objet de jeu qui traite ces commandes depuis utilisateurs ordinaires. Méthode de classe Jeu j'ai un nom onControl (socket, données) j'ai donc ajouté une méthode à BotSocket
BotSocket.prototype.control = function(data) ( this.game.onControl(this, data); );
Lorsqu'une commande est reçue du serveur pour mettre à jour les données des motos (elles ont été déplacées), je vérifie si j'ai une moto sous mon contrôle, si elle n'est pas encore entrée en collision et si elle a été déplacée, et, si réussi, j'appelle la méthode principale pour que l'IA fonctionne - mise à jour().
L'interface est prête, vous pouvez maintenant ajouter l'IA elle-même.

Intelligence artificielle

Aussi fort que cela puisse paraître, dans les jeux, les joueurs pour lesquels l'ordinateur joue sont généralement appelés IA ou robots. L'objet BotSocket dispose des données de jeu nécessaires pour prendre une décision. Il ne peut y avoir que trois solutions possibles :
  1. Rien à faire, va tout droit
  2. Tournez à droite
  3. Tourner à gauche

Quand j’ai décidé d’écrire un bot, je n’avais aucune idée de comment cela pouvait être fait. J'ai essayé un code très simple :
BotSocket.prototype.update = function() ( var r = Math.random(); if (r > 0.95) ( this.control(("button": "right")); ) else if (r >
Le comportement ressemblait à ceci :

Je l'ai regardé et j'ai ressenti une grande joie ; il me semblait qu'il était désormais indépendant. Il semblait qu'il essayait lui-même de survivre, luttant là-bas comme s'il était vivant. Un spectacle touchant.

Mais je voulais qu'il vive le plus possible. J'ai commencé à chercher des informations sur la manière dont l'IA est écrite pour les jeux. J'ai trouvé des articles décrivant différentes approches. Mais je cherchais quelque chose d'extrêmement simple. J'ai trouvé sur Habré dans l'un des articles sur un bot pour un jeu comme Zuma une mention de la méthode wave. L'algorithme d'Aka Lee. Je l'ai trouvé très simple et approprié. Il s'agit d'un algorithme permettant de trouver le chemin le plus court d'un point à un autre du champ, où les cellules peuvent être soit libres, soit occupées. Le problème est simple. Nous partons du point de destination, lui attribuons la valeur 1 et marquons toutes les cellules libres adjacentes avec un numéro supérieur d'une unité. Ensuite, nous prenons tous les voisins marqués gratuitement et les marquons à nouveau un autre. Nous nous développons donc sur tout le terrain jusqu'à atteindre notre destination. Et on construit le chemin en recherchant parmi les voisins en diminuant le nombre jusqu'à atteindre 1. J'ai regardé des algorithmes pour trouver les chemins les plus courts dans les graphiques, mais celui-ci m'a semblé le plus adapté.

J'ai transféré l'algorithme par copier-coller de la page vers le wiki, lui ai donné un nom BotSocket.prototype.algorithmLee. Pour le champ j'ai d'abord créé un objet champ de bataille, dans lequel, à chaque mise à jour, les points occupés étaient marqués de leurs coordonnées. Et dans l’algorithme de Lee, il a réduit ce champ au même, mais avec un pas de 1.

Il fallait en quelque sorte déterminer la destination. J'ai décidé de le sélectionner au hasard à certains intervalles. J'ai créé une méthode pour rechercher un point libre aléatoire sur le terrain :
BotSocket.prototype.getDesiredPoint = function() ( var point = ; var H = Object.keys(this.battleground).length - 1; var W = Object.keys(this.battleground).length - 1; var x, y , je, j; var trouvé = faux; var iter = 0; faire ( je = this.getRandomInt(1, W); j = this.getRandomInt(1, H); x = i * this.moveStepSize; y = j * this.moveStepSize; if (this.battleground[x][y] === this.BG_EMPTY) ( found = true; ) iter++; ) while (!found && iter< 100); point = ; return point; };

Maintenant, je pourrais réécrire la mise à jour :
BotSocket.prototype.update = function() ( if (!this.desiredPoint || this.movements % this.updDestinationInterval === 0) ( this.desiredPoint = this.getDesiredPoint(); ) if (!this.desiredPoint) ( return; ) var currentPoint = ; var path = this.algorithmLee(currentPoint, this.desiredPoint); if (path && typeof path !== "undefined") ( this.moveToPoint(path); ) else ( this.desiredPoint = this .getDesiredPoint(); ) );
Méthode mentionnée ici déplacerVersPoint, qui tourne au besoin pour atteindre le premier point du chemin le plus court étant donné la direction actuelle.

Plus tard, j'ai décidé de rendre les robots plus agressifs et au lieu d'un point souhaité aléatoire, j'ai cherché un point devant les ennemis pour bloquer leur chemin. Ou alors, ils ne jouent pas avec eux-mêmes pendant si longtemps.

Bot côté client

J'ai décidé d'essayer de déplacer le bot côté client. Étant donné que le projet est dans node.js, je peux également utiliser le code écrit pour le bot côté client. Pour ce faire, j'ai étendu BotSocket avec un fichier client distinct qui remplace les méthodes émettre() Et contrôle() pour interagir correctement avec le serveur sans référence au jeu.
Tout a bien fonctionné localement, mais après le déploiement sur serveur distant il y avait une image étrange :

Après avoir longuement réfléchi, j'ai réalisé que c'était un retard. Le robot a envoyé une commande de virage, mais celle-ci est arrivée après avoir mis à jour sa position sur le serveur, c'est pourquoi il ne pouvait souvent pas suivre le chemin direct vers le point souhaité. Mais je voulais un bot normal côté client. J’ai donc décidé de prendre en compte le retard. Pour ce faire, j'ai réécrit l'extension BotSocket. L’article devient long, je vais donc décrire les principales solutions. Avant d'appeler l'algorithme de Lee, au lieu du point actuel, j'ai remplacé la position prédite, en tenant compte de la position et de la direction actuelles, ainsi que du multiplicateur de retard. Le multiplicateur de latence est le nombre de fois la latence multiplié par le taux de mise à jour de la position du serveur. J'avais aussi besoin de prédire le point futur de la méthode déplacerVersPoint().

La prédiction fonctionnait si vous jouiez seul. Mais s'il y avait d'autres participants, le bot n'en tenait pas compte et se dirigeait vers l'endroit où, après un certain temps, un autre joueur était déjà passé. Pour résoudre ce problème, j'ai modifié la méthode qui marque les cellules du champ comme occupées. J'ai commencé à les marquer comme étant occupés dans un certain rayon de circulation des motos. Le rayon dépend du multiplicateur de retard.
Auparavant, j'équipais le bot de fonctions de débogage, qui dessinaient le point souhaité et occupaient les points sur le terrain. Ma version basée sur la latence du bot client se déplace désormais comme ceci :


Mon petit, le reste sont des serveurs.

Le plus important est d'essayer de créer un bot vous-même

L'objectif principal de cet article est de susciter l'intérêt pour l'écriture d'un bot. J'ai fait beaucoup pour vaincre votre paresse. Pour ce faire, j'ai ajouté la possibilité de charger mon propre script avec un bot, ce qui étendra ma classe client de base. Allez sur le projet et cliquez sur le texte « Afficher les options pour la salle avec votre propre bot », puis sur le bouton « Créer une salle pour tester votre propre bot ». Une salle sera créée où vous pourrez facilement utiliser des bots, par défaut votre bot sera un bot sans latence. Il est maintenant temps de passer à votre code.
Deux options simples pour utiliser votre code en action, utilisez n'importe lequel :
  1. Téléchargez le fichier js sur n’importe quel serveur accessible à votre navigateur. Collez l'URL de votre script dans le jeu à côté du bouton « Charger votre script AI ». Après avoir cliqué sur ce bouton, un nouvel objet botSocket, dont la méthode sera appelée commencer().
  2. Utilisez la console du navigateur (Firebug – F12, Firefox – Ctrl+Shift+K, Chrome – Ctrl+Shift+J, autres – ).

Si vous avez décidé de la méthode de saisie de votre code, essayez de remplacer les méthodes de classe BotSocket. La chose la plus simple pour commencer :
BotSocket.prototype.update = function() ( var r = Math.random(); if (r > 0,95) ( this.control(("button": "right")); ) else if (r > 0,90) ( this.control(("bouton": "gauche")); ) )

Après cela, recréez l'objet botSocket en entrant
botSocket = nul ;
Dans ce cas, le code sur la page va lui-même recréer et remplir l'objet. Cela changera le comportement standard du bot en aléatoire. Et puis cela dépend de votre imagination ou de vos connaissances approfondies.
Vous pouvez également connecter le script de mon bot amélioré, en tenant compte du délai, en insérant https://raw.github.com/rnixik/tronode-js/master/public/javascripts/MyBotSocketClient.js dans l'url du bot

Conclusion

J'ai raconté comment j'ai créé mon IA sur le serveur, puis comment je l'ai transférée au client et comment j'ai essayé de lui apprendre à jouer en tenant compte Haut débit. J'espère vraiment que j'ai pu vous intéresser et que vous avez essayé d'écrire votre propre IA, si vous ne l'avez jamais fait auparavant. Bien sûr, les jeux haut de gamme utilisent des approches complètement différentes, mais cela vaut la peine de commencer petit.

Si vous n'avez pas node.js à portée de main, vous pouvez utiliser les applications que j'ai déployées :

1) tronode.livelevel.net - le VPS le moins cher sur DigitalOcean,
2) tronode-js.herokuapp.com - unité virtuelle gratuite sur Heroku.

Le premier, très probablement, n'est peut-être pas le premier à faire face à la charge, et le second sur certains ordinateurs réinitialise le transport socket.io en xhr-polling, de ce fait, le jeu est très en retard.
Si vous voulez en savoir plus sur la façon dont j'ai programmé la logique du jeu, vous pouvez lire. Il y a aussi des informations sur le déploiement de node.js et un peu sur la partie graphique.

Si vous n'avez pas de compte sur Habré, alors posez des questions ou envoyez le vôtre offres intéressantes peux-tu m'envoyer un e-mail [email protégé].

Balises : Ajouter des balises

Le système d'intelligence artificielle ELIS est logiciel capable de parler comme un humain dans un langage simple, gérer les appareils et apprendre. En utilisant ce programme, vous pouvez communiquer avec un ordinateur et interagir avec le monde physique. Le programme utilise également la connectivité Arduino pour créer des systèmes Maison intelligente, automatisation, etc.

Téléchargez le programme d'intelligence artificielle ALICE

Description:

Programme d'intelligence artificielle ALICE - Electroniquement Logique Système intelligent. Le système d'intelligence artificielle ELIS est un programme. C'est un logiciel qui peut parler comme une personne dans un langage simple, contrôler dispositifs, et aussi apprendre. Ce système n'est pas un assistant, puisque l'accent est mis sur le développement d'un système humanoïde capable d'apprendre comme un enfant et de mener un dialogue éclairé.

En utilisant ce programme, vous pouvez communiquer avec ordinateur, et interagissent également avec le monde physique. Le programme utilise également la connectivité Arduino pour créer des systèmes de maison intelligente, des systèmes d'automatisation, etc.

Système d'intelligence artificielle ELIS est construit sur un principe modulaire. Le système est universel et ses fonctionnalités peuvent être étendues à l'aide modules. Les modules peuvent être différents, du simple au complexe.

Le programme d'intelligence artificielle ALICE mène de manière indépendante un dialogue avec une personne.

Elle peut entamer un dialogue de manière autonome, elle peut le faire plusieurs fois, ce qui la distingue déjà des assistants vocaux qui travaillent selon une structure questions-réponses. Le programme d’intelligence artificielle ALICE prend sa propre décision en fonction de ce que dit une personne, et si elle ne le sait pas, elle peut être entraînée.

Grâce au dialogue avec l'utilisateur, le système apprend tout seul. Le système est capable de mémoriser plusieurs réponses à une ou plusieurs questions et d'avoir plusieurs questions pour une ou plusieurs réponses.

Le programme d'intelligence artificielle ALICE est entièrement compatible avec la plateforme Arduino, vous pouvez donc contrôler n'importe quel appareil. Vous pouvez demander au système d'allumer la lumière, le système vous demandera où exactement l'allumer, mais vous pouvez demander d'allumer la lumière immédiatement à un certain endroit, puis il ne demandera plus.

Le programme d'intelligence artificielle ALICE est également capable d'exécuter applications tierces etc.

Modules:

DANS actuellement le programme d'intelligence artificielle ALICE comprend les modules suivants :

module "Connaissances" - module de recherche d'informations sur WIKIPEDIA. Le système connaît n'importe quel appareil, objet, etc. Demandez, par exemple, ce qu'est un vélo ou ce qu'est une pomme et le système vous dira de quoi il s'agit.

module "Actualités". Dernières nouvelles aux intérêts de l’utilisateur. Demandez simplement quelle nouvelle ou racontez la nouvelle, le système vous le dira et vous demandera si vous avez besoin d'en dire plus, en répondant oui, il vous en dira plus,

Module "Météo". Météo d'aujourd'hui et de demain dans ma ville. Vous pouvez connaître la température, l'humidité, la vitesse du vent, s'il pleut ou s'il gèle. Vous pouvez demander si vous devez prendre un parapluie aujourd'hui ou si vous pouvez porter un short aujourd'hui,

module "Calculatrice". Utiliser ceci module, le système peut ajouter, soustraire, multiplier et diviser des objets, etc. Par exemple, si vous demandez combien font deux pommes plus deux pommes, le système répondra quatre pommes. Module en cours de développement,

module "Réveil". Le module vous permet de définir n'importe quel nombre d'alarmes. Régler le réveil système Cela vous réveillera. Je dois juste dire, réveille-moi à 7 heures du matin. Module en cours de développement,

module « Ajustement des réponses ». Placement correct des connaissances dans la base de données,

module « Jours fériés, fêtes, événements ». Ce module vous permet de savoir de qui il s'agit ou de quel jour férié il s'agit,

Module "Toast". Le module permet au système de faire divers toasts. Il faut demander, porter un toast,

module "Anecdotes". Le système connaît des milliers de blagues. Demandez-lui simplement de raconter une blague, vous pouvez également lui demander de raconter une blague pour les adultes,

module "Poèmes". Ce module transforme le système en poète. Demandez simplement à réciter un verset, vous pouvez également demander à réciter un verset pour adultes,

module "Aphorismes". Le système connaît des milliers d'aphorismes. Demandez-lui simplement de dire un aphorisme, vous pouvez aussi lui demander de dire un aphorisme pour adultes,

Module "Contrôle de l'éclairage". Grâce à ce module, le système peut contrôler l'éclairage d'un appartement ou d'une maison. Pour ce faire, vous devez connecter Arduino et Ethernet Shield,

module « Deviner les nombres ». Le système essaie de deviner le numéro caché. Nomme le chiffre attendu, puis vous devez lui dire si c'est plus ou moins. Module en cours de développement,

module "Utilisateur". Le module vous permet de modifier les données utilisateur, le nom, la ville, etc. Par exemple, pour changer le nom, vous devez dire, rappelez-vous que je m'appelle Oleg et elle s'en souviendra,

module "Dialogue". Analyse des dialogues. Un module qui traite le dialogue au quotidien, l'analyse de l'utilisateur, l'apprentissage, etc.

Remarque : description de la technologie à l'aide de l'exemple du programme d'intelligence artificielle ALICE.

Panneaux CLT

Charbon sans fumée

Lunettes intelligentes

Machines électrochimiques

Nanomodificateur pour la restauration des surfaces de tuyaux...

Système d'information et d'analyse multi-niveaux...

Conteneurs en fibre de verre

Stanen

Hydrofoil

Générateur électromagnétique à aimants permanents...

Peinture purificatrice d'air