


Reproduisez la touche magique d'AlphaGo à l'époque ! La nouvelle IA de DeepMind a découvert un algorithme de tri accéléré de 70 % et la bibliothèque C++ qui n'a pas été mise à jour depuis dix ans a été mise à jour
DeepMind est de nouveau apparu dans Nature avec des résultats majeurs !
Cette fois, ils ont créé une autre IA d'apprentissage par renforcement, réalisant de nouvelles percées dans les deux algorithmes les plus fondamentaux dans le domaine informatique :
L'un est l'algorithme de tri, qui a découvert une nouvelle implémentation qui peut augmenter la vitesse jusqu'à 70 % ;
Un autre est l'algorithme de hachage, qui a également trouvé un nouveau moyen d'augmenter la vitesse de 30 %.
Non seulement cela, la méthode utilisée par cette IA s'appelle "recréer la touche magique d'AlphaGo à l'époque", qui est l'époque qui semblait violer l'intuition, mais qui a en fait vaincu le maître humain Lee Sedol en d'un seul coup.
Dès que la nouvelle est sortie, elle a immédiatement fait exploser le cercle universitaire. Certains internautes ont crié :
Je ne m'attendais pas à ce qu'un algorithme aussi ancien et basique puisse être encore amélioré.
Et c'est précisément grâce à cette dernière réalisation que la bibliothèque C++ standard LLVM, qui n'a pas été mise à jour depuis dix ans, a été mise à jour, et des milliards de personnes en bénéficieront.
Car, qu'il s'agisse de tri ou de hachage, leurs scénarios d'application peuvent être utilisés dans divers scénarios allant des achats en ligne, du cloud computing à la gestion de la chaîne d'approvisionnement, etc., et ils sont appelés des centaines de millions de fois chaque jour !
Cependant, comme l'a dit DeepMind :
Ne soyez pas trop excité, le pouvoir de l'IA pour améliorer l'efficacité du code ne fait que commencer.
Le "parvenu" de la famille Alpha découvre un algorithme de tri plus rapide
Cette IA s'appelle AlphaDev, qui appartient au "parvenu" de la famille Alpha et est basée sur AlphaZero (l'IA d'échecs qui a vaincu le champion du monde en 2017).
Sa découverte ne repose pas sur des algorithmes existants, mais part des instructions d'assemblage du niveau le plus bas.
Les chercheurs de DeepMind ont conçu pour cela un jeu « d'assemblage » solo :
Tant que vous pouvez rechercher et sélectionner les instructions appropriées (processus A dans la figure ci-dessous), organisez les données correctement et rapidement (processus B dans la figure ci-dessous). figure ci-dessous), vous pouvez obtenir des récompenses.
Mais l'enjeu de ce jeu ne réside pas seulement dans la taille de l'espace de recherche (le nombre d'instructions combinables équivaut au nombre de particules dans l'univers), mais aussi dans la nature de la récompense fonction, car une mauvaise instruction peut faire échouer l’ensemble de l’algorithme. Invalide.
AlphaDev comporte deux composants principaux : l'algorithme d'apprentissage et la fonction de représentation.
Parmi eux, l'algorithme d'apprentissage est principalement étendu sur le puissant AlphaZero, qui peut combiner des algorithmes DRL et d'optimisation de recherche aléatoire pour effectuer d'énormes recherches d'instructions ; la fonction de représentation principale est basée sur Transformer, qui peut capturer la structure sous-jacente de l'assembleur. , et exprimé sous la forme d'une séquence spéciale.
Alors qu'AlphaDev continue de combattre des monstres et de se mettre à niveau, les chercheurs limiteront également le nombre d'étapes qu'il peut effectuer et la longueur de la séquence à trier.
Enfin, AlphaDev a découvert un nouvel algorithme de tri :
Si la séquence est courte, elle peut augmenter la vitesse de 70 % par rapport à l'algorithme de tri de base humain, si la longueur de la séquence dépasse 25 000 éléments, elle augmentera de 1,7 % ; .
Le tri par séquence courte est largement utilisé dans la pratique, notamment en tant que composant important de fonctions de tri plus vastes et est appelé plusieurs fois. Tant que les séquences courtes sont améliorées, la vitesse de tri de toutes les séquences peut être améliorée. )
Concrètement, l'innovation de cet algorithme réside principalement dans deux séquences d'instructions :
(1) AlphaDev Swap Move (swap move)
(2) AlphaDev Copy Move (copy move)
Comme le montre la figure ci-dessous, sur la gauche L'implémentation originale sort3 de min(A,B,C) est utilisée. Le côté droit passe par "AlphaDev Swap Move", qui ne nécessite que l'implémentation de min(A,B). On peut constater qu'une étape d'instruction peut être omise et que seule la valeur minimale de A et B doit être calculée.
L'auteur a déclaré que cette nouvelle méthode rappelle le "Move 37" d'AlphaGo - une méthode contre-intuitive qui a directement vaincu le légendaire joueur de Go Lee Sedol, choquant le public.
De même, AlphaDev saute une étape en échangeant et en copiant des mouvements, atteignant ainsi l'objectif d'une manière qui semble erronée mais qui est en réalité un raccourci.
Comme le montre la figure ci-dessous, dans l'algorithme de tri de 8 éléments, AlphaDev utilise également "AlphaDev Copy Move" pour remplacer le max plus complexe dans l'implémentation d'origine par max (B, min (A, C)) (B, min (A, C, D)), et le nombre total d'instructions de l'ensemble de l'algorithme est également réduit d'un pas.
Après avoir découvert un algorithme de tri plus rapide, l'auteur a également essayé l'algorithme de hachage avec AlphaDev pour prouver sa polyvalence.
Les résultats n'ont pas déçu, AlphaDev a également obtenu une augmentation de vitesse de 30 % dans la plage de longueur de 9 à 16 octets.
Comme l'algorithme de tri, ils ont intégré la nouvelle méthode dans la bibliothèque Abseil, désormais disponible pour des millions de développeurs à travers le monde.
Enfin, l'auteur a déclaré que la mise en œuvre de deux nouveaux algorithmes montre qu'AlphaDev a une forte capacité à découvrir des solutions originales, et nous fera réfléchir davantage à la manière d'améliorer les algorithmes de base dans le domaine informatique.
Cependant, en raison des limites du langage assembleur utilisé dans cette étude, ils prévoient ensuite d'essayer la capacité d'AlphaDev à optimiser les algorithmes dans des langages de haut niveau (tels que C++).
Internautes : Sans compter la découverte d'un nouvel algorithme de tri
Beaucoup de personnes sont très enthousiasmées par cette réalisation.
Comme l'a dit cet internaute :
Après qu'AlphaGo ait étonné le monde, que peut faire d'autre l'apprentissage par renforcement ? Peut-on faire quelque chose d’important d’un point de vue pratique ? C'est la réponse.
Mais cette fois, de nombreuses personnes ont souligné que DeepMind semblait soupçonné d'exagérer le titre.
Il calcule le retard de l'algorithme, et non la complexité temporelle au sens traditionnel. Si vous calculez réellement la complexité temporelle, les données risquent de ne pas paraître bonnes.
Son amélioration ne réside pas dans l'algorithme de tri lui-même, mais dans une nouvelle optimisation du tri pour les processeurs modernes (notamment pour les séquences courtes). Cette approche est en fait très courante. Par exemple, des bibliothèques telles que FFTW et ATLAS ont adopté cette méthode.
D'accord, ils viennent de trouver une optimisation machine plus rapide pour un processeur spécifique, pas un nouvel algorithme de tri, la méthode elle-même est cool, mais pas une recherche révolutionnaire.
Qu'en pensez-vous ?
Adresse papier :https://www.php.cn/link/a3fefe83288ecb0e40ebe40b2bde29fe
Blog officiel :https://www.php.cn/link/f5b2aa928f940f3f09a0d14f45a27875
Lien de référence :
[1]https https://www.php.cn/link/5383c7318a3158b9bc261d0b6996f7c2
[2]https://www.php.cn/link/ecf9902e0f61677c8de25ae60b654669
[3]https://www.php.cn/ lien /0383314bf626052313b8275638fcccce
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Lors de la conversion des chaînes en objets dans vue.js, JSON.Parse () est préféré pour les chaînes JSON standard. Pour les chaînes JSON non standard, la chaîne peut être traitée en utilisant des expressions régulières et réduisez les méthodes en fonction du format ou du codé décodé par URL. Sélectionnez la méthode appropriée en fonction du format de chaîne et faites attention aux problèmes de sécurité et d'encodage pour éviter les bogues.

L'article présente le fonctionnement de la base de données MySQL. Tout d'abord, vous devez installer un client MySQL, tel que MySQLWorkBench ou le client de ligne de commande. 1. Utilisez la commande MySQL-UROot-P pour vous connecter au serveur et connecter avec le mot de passe du compte racine; 2. Utilisez Createdatabase pour créer une base de données et utilisez Sélectionner une base de données; 3. Utilisez CreateTable pour créer une table, définissez des champs et des types de données; 4. Utilisez InsertInto pour insérer des données, remettre en question les données, mettre à jour les données par mise à jour et supprimer les données par Supprimer. Ce n'est qu'en maîtrisant ces étapes, en apprenant à faire face à des problèmes courants et à l'optimisation des performances de la base de données que vous pouvez utiliser efficacement MySQL.

Il existe de nombreuses raisons pour lesquelles la startup MySQL échoue, et elle peut être diagnostiquée en vérifiant le journal des erreurs. Les causes courantes incluent les conflits de port (vérifier l'occupation du port et la configuration de modification), les problèmes d'autorisation (vérifier le service exécutant les autorisations des utilisateurs), les erreurs de fichier de configuration (vérifier les paramètres des paramètres), la corruption du répertoire de données (restaurer les données ou reconstruire l'espace de la table), les problèmes d'espace de la table InNODB (vérifier les fichiers IBDATA1), la défaillance du chargement du plug-in (vérification du journal des erreurs). Lors de la résolution de problèmes, vous devez les analyser en fonction du journal d'erreur, trouver la cause profonde du problème et développer l'habitude de sauvegarder régulièrement les données pour prévenir et résoudre des problèmes.

Résumé: Il existe les méthodes suivantes pour convertir les tableaux de chaîne Vue.js en tableaux d'objets: Méthode de base: utilisez la fonction de carte pour convenir à des données formatées régulières. Gameplay avancé: l'utilisation d'expressions régulières peut gérer des formats complexes, mais ils doivent être soigneusement écrits et considérés. Optimisation des performances: Considérant la grande quantité de données, des opérations asynchrones ou des bibliothèques efficaces de traitement des données peuvent être utilisées. MEILLEUR PRATIQUE: Effacer le style de code, utilisez des noms de variables significatifs et des commentaires pour garder le code concis.

Traiter efficacement 7 millions d'enregistrements et créer des cartes interactives avec la technologie géospatiale. Cet article explore comment traiter efficacement plus de 7 millions d'enregistrements en utilisant Laravel et MySQL et les convertir en visualisations de cartes interactives. Exigences initiales du projet de défi: extraire des informations précieuses en utilisant 7 millions d'enregistrements dans la base de données MySQL. Beaucoup de gens considèrent d'abord les langages de programmation, mais ignorent la base de données elle-même: peut-il répondre aux besoins? La migration des données ou l'ajustement structurel est-il requis? MySQL peut-il résister à une charge de données aussi importante? Analyse préliminaire: les filtres et les propriétés clés doivent être identifiés. Après analyse, il a été constaté que seuls quelques attributs étaient liés à la solution. Nous avons vérifié la faisabilité du filtre et établi certaines restrictions pour optimiser la recherche. Recherche de cartes basée sur la ville

La défaillance de l'installation de MySQL est généralement causée par le manque de dépendances. Solution: 1. Utilisez System Package Manager (tel que Linux Apt, YUM ou DNF, Windows VisualC Redistribuable) pour installer les bibliothèques de dépendance manquantes, telles que SudoaptInstallLiBMysQlClient-Dev; 2. Vérifiez soigneusement les informations d'erreur et résolvez les dépendances complexes une par une; 3. Assurez-vous que la source du gestionnaire de package est correctement configurée et peut accéder au réseau; 4. Pour Windows, téléchargez et installez les bibliothèques d'exécution nécessaires. Développer l'habitude de lire des documents officiels et de faire bon usage des moteurs de recherche peut résoudre efficacement les problèmes.

Afin de définir le délai d'expiration de Vue Axios, nous pouvons créer une instance AxiOS et spécifier l'option Timeout: dans les paramètres globaux: vue.prototype. $ Axios = axios.create ({timeout: 5000}); Dans une seule demande: ce. $ axios.get ('/ api / utilisateurs', {timeout: 10000}).

L'optimisation des performances MySQL doit commencer à partir de trois aspects: configuration d'installation, indexation et optimisation des requêtes, surveillance et réglage. 1. Après l'installation, vous devez ajuster le fichier my.cnf en fonction de la configuration du serveur, tel que le paramètre innodb_buffer_pool_size, et fermer query_cache_size; 2. Créez un index approprié pour éviter les index excessifs et optimiser les instructions de requête, telles que l'utilisation de la commande Explication pour analyser le plan d'exécution; 3. Utilisez le propre outil de surveillance de MySQL (ShowProcessList, Showstatus) pour surveiller la santé de la base de données, et sauvegarde régulièrement et organisez la base de données. Ce n'est qu'en optimisant en continu ces étapes que les performances de la base de données MySQL peuvent être améliorées.
