Maison >Périphériques technologiques >IA >Utilisant Transformer comme ordinateur à usage général, il peut également exécuter des algorithmes d'apprentissage en contexte. Cette recherche est très imaginative.
Transformer est devenu un choix populaire pour diverses tâches d'apprentissage automatique et a obtenu de bons résultats, alors comment peut-il être utilisé autrement ? Des chercheurs dotés d’une grande imagination souhaitent en effet l’utiliser pour concevoir des ordinateurs programmables !
Les auteurs de cet article sont issus de l'Université de Princeton et de l'Université du Wisconsin. Il est intitulé "Les transformateurs en boucle en tant qu'ordinateurs programmables" et vise à explorer comment utiliser Transformer pour implémenter des ordinateurs généraux.
Plus précisément, les auteurs proposent un cadre pour utiliser les réseaux de transformateurs comme ordinateurs à usage général en les programmant avec des poids spécifiques et en les plaçant dans des boucles. Dans ce cadre, la séquence d'entrée agit comme une carte perforée, composée d'instructions et de mémoire pour la lecture/écriture des données.
Les auteurs ont démontré qu'un nombre constant de couches d'encodeurs peuvent simuler des blocs de calcul de base. À l’aide de ces éléments de base, ils ont simulé un petit ordinateur à jeu d’instructions. Cela leur a permis de mapper l'algorithme itératif sur un programme pouvant être exécuté par un transformateur en boucle à 13 couches. Ils montrent comment ce transformateur peut émuler une calculatrice de base, une bibliothèque d'algèbre linéaire de base et un algorithme d'apprentissage en contexte utilisant la rétropropagation, guidé par ses entrées. Ce travail met en évidence la polyvalence des mécanismes d’attention et démontre que même les transformateurs superficiels peuvent exécuter des programmes à part entière à usage général.
Transformer (TF) est devenu un choix populaire pour diverses tâches d'apprentissage automatique et a obtenu des résultats de pointe sur de nombreux problèmes dans des domaines tels que le traitement du langage naturel et la vision par ordinateur. L'une des principales raisons du succès de Transformer réside dans sa capacité à capturer les relations d'ordre supérieur et les dépendances à long terme grâce à des mécanismes d'attention. Cela permet à TF de modéliser des informations contextuelles et la rend plus efficace dans des tâches telles que la traduction automatique et la modélisation linguistique, où Transformer surpasse systématiquement les autres méthodes.
Les modèles de langage avec des centaines de milliards de paramètres, tels que GPT-3 (paramètres 175B) et PaLM (paramètres 540B), ont atteint des performances de pointe sur de nombreuses tâches de traitement du langage naturel. Il est intéressant de noter que certains de ces grands modèles de langage (LLM) peuvent également effectuer un apprentissage en contexte (ICL), en adaptant et en exécutant des tâches spécifiques à la volée, sur la base d'une courte invite et de quelques exemples. Les capacités ICL des LLM sont disponibles sans avoir à les former et permettent à ces grands modèles d'effectuer efficacement de nouvelles tâches sans mettre à jour les pondérations.
Étonnamment, grâce à ICL, LLM peut effectuer des tâches algorithmiques et des inférences, et [Nye et al [2021], Wei et al. [2022c], Lewkowycz et al. Zhou et al. [2022]] et d’autres ont prouvé sa faisabilité. Les travaux de [Zhou et al. [2022] ] et d'autres démontrent que LLM peut effectuer avec succès des opérations d'addition sur des cas d'utilisation inconnus lorsqu'on lui donne une invite avec un algorithme d'addition multi-bits et quelques exemples d'addition. Ces résultats montrent que LLM peut exécuter des commandes pré-instruites sur des entrées données au moment de l'inférence, sur la base de principes algorithmiques, comme s'il interprétait le langage naturel comme du code.
Il existe des preuves que Transformer peut simuler des machines de Turing avec une profondeur suffisante ou des liens récursifs entre les couches d'attention [Pérez et al. [2021], Pérez et al. Cela démontre le potentiel des réseaux Transformer pour suivre précisément les instructions algorithmiques spécifiées par l’entrée. Cependant, ces constructions sont relativement générales et ne permettent pas de comprendre en profondeur comment créer un Transformer capable d'effectuer des tâches algorithmiques spécifiques.
Cependant, une conception plus professionnelle permet à TF d'exécuter des programmes plus avancés. Par exemple, [Weiss et al. [2021]] ont conçu un modèle de calcul et un langage de programmation qui mappent des commandes simples de sélection et d'agrégation pour indexer les jetons d'entrée. Ce langage peut être utilisé pour créer une variété d'algorithmes intéressants, tels que le comptage de jetons, le tri, la création d'histogrammes et l'identification des langages Dyck-k. Les programmes écrits en langage RASP (Restricted Access Sequence Processing Language) peuvent ensuite être mappés dans des réseaux Transformer, dont la taille évolue généralement en fonction de la taille du programme.
Une autre étude démontre une méthode de sélection des poids du modèle Transformer à utiliser comme algorithme d'optimisation pour l'apprentissage dynamique de modèles de régression linéaire, en effectuant un entraînement implicite au moment de l'inférence en fonction des données d'entraînement en entrée. Ces méthodes nécessitent généralement un nombre de couches proportionnel au nombre d'itérations de l'algorithme d'apprentissage et sont limitées à une seule fonction de perte et à un seul ensemble de modèles.
La possibilité de programmer des modèles Transformer pour émuler les calculs abstraits des machines de Turing, des commandes spécialisées pour des langages comme RASP et des algorithmes spécifiques pour ICL, mettent en évidence le potentiel des réseaux Transformer en tant qu'ordinateurs programmables polyvalents.
Les recherches de l'auteur visent à explorer cette perspective prometteuse et à révéler comment le mécanisme Attention peut simuler un ordinateur à usage général inspiré de l'architecture du jeu d'instructions.
Dans cet article, les auteurs montrent que les réseaux de transformateurs peuvent simuler des algorithmes et des programmes complexes en les codant en dur avec des poids spécifiques et en les plaçant dans une boucle. Les auteurs y sont parvenus en faisant de l'ingénierie inverse pour simuler des blocs de calcul de base, tels que des opérations d'édition sur des séquences d'entrée, des fonctions non linéaires, des appels de fonction, des compteurs de programme et des branches conditionnelles. L'article des auteurs démontre l'importance d'utiliser une seule boucle ou récursivité pour concaténer la séquence de sortie d'un transformateur à son entrée, évitant ainsi le besoin d'un modèle approfondi.
Adresse papier : https://arxiv.org/pdf/2301.13196.pdf
L'auteur y parvient en concevant un Transformer capable d'exécuter une version universelle écrite en une seule instruction Le programme , appelé SUBLEQ (A,B,C), soustrait et branche s'il est inférieur ou égal à zéro. SUBLEQ est un langage à instruction unique qui définit un ordinateur à jeu d'instructions unique (OISC). SUBLEQ se compose de trois opérandes d'adresse mémoire Lors de l'exécution, la valeur de l'adresse mémoire B est soustraite de la valeur de l'adresse mémoire A et le résultat est stocké dans B. Si le résultat de B est inférieur ou égal à 0, passez à l'adresse C, sinon passez à l'instruction suivante. Mais cette instruction définit un ordinateur à usage général.
L'auteur a construit un Transformer explicite qui implémente un programme de type SUBLEQ, une instruction unique plus flexible que l'auteur appelle FLEQ, sous la forme
où f_m peut être obtenu à partir d'un ensemble de fonctions (multiplication matricielle / fonction non linéaire / polynôme, etc.), qui peuvent être codées en dur dans le réseau. La profondeur d'un Transformer en boucle capable d'exécuter un programme FLEQ ne dépend pas de la profondeur du programme ou du nombre de lignes de code, mais plutôt de la profondeur requise pour implémenter une seule instruction FLEQ, qui est constante. Ceci est réalisé en exécutant le transformateur en boucle sur la séquence d'entrée, de la même manière que fonctionne un processeur.
En utilisant ce cadre, les auteurs démontrent la capacité de simuler une variété de fonctions au moment de l'inférence, y compris une calculatrice de base, une bibliothèque d'algèbre linéaire de base (transposition matricielle, multiplication, inversion, itération de puissance) et une ICL implicite qui implémente la rétropropagation. sur un réseau entièrement connecté. La séquence d'entrée ou l'invite agit comme une carte perforée, contenant les instructions que le Transformer doit exécuter, tout en fournissant de l'espace pour stocker et gérer les variables utilisées dans le programme. Les réseaux de Transformateurs utilisés pour réaliser ces procédures ont tous une profondeur inférieure ou égale à 13, et les matrices de poids de tous ces modèles sont fournies. Le théorème suivant résume les principales conclusions de l'auteur :
Théorème 1 : Il existe un Transformateur cyclique de moins de 13 couches, qui peut simuler un ordinateur général (Section 5 de l'article), une calculatrice de base (Section 7 de l'article ), les méthodes numériques d'algèbre linéaire, telles que l'inversion matricielle approximative et l'itération de puissance (section 8 de l'article), et les algorithmes ICL basés sur les réseaux neuronaux (tels que SGD) (section 9 de l'article).
Figure 1 : Diagramme schématique de l'architecture en boucle du Transformer, où la séquence d'entrée stocke les commandes, la mémoire à partir de laquelle les données sont lues/écrites et le bloc-notes où les résultats intermédiaires sont stockés. Les entrées sont traitées par le réseau et les sorties sont utilisées comme nouvelles entrées, permettant au réseau de mettre à jour de manière itérative les états implicites et d'effectuer des calculs complexes.
Les recherches de l'auteur mettent l'accent sur la flexibilité du mécanisme Attention et l'importance d'une boucle unique, qui permet de concevoir des modèles capables de simuler des algorithmes itératifs complexes et d'exécuter des programmes généraux. et a en outre démontré la capacité du modèle Transformer à effectuer efficacement des tâches mathématiques et algorithmiques complexes. Il est concevable que les transformateurs modernes, tels que le GPT-3, utilisent des sous-programmes internes similaires lors de l'exécution de diverses tâches. Dans une certaine mesure, les capacités de ces techniques ou algorithmes spécifiques à un modèle peuvent être éclairées lorsqu'on leur donne des exemples et des explications contextuelles, similaires aux appels de fonction. Cependant, cette hypothèse doit être traitée avec prudence, car la façon dont les auteurs ont conçu la structure ne ressemble en rien à la façon dont les modèles de langage du monde réel sont formés.
Les auteurs espèrent que leurs recherches encourageront de nouvelles recherches sur le potentiel des mécanismes d'attention et la capacité des modèles de langage à exécuter des instructions algorithmiques. La conception proposée par les auteurs peut aider à déterminer la taille minimale du réseau Transformer requise pour effectuer une tâche algorithmique spécifique. De plus, les auteurs espèrent que leurs résultats contribueront à inspirer le développement de méthodes visant à améliorer la capacité de formation de modèles de langage en exploitant des réseaux Transformer plus petits et issus de l'ingénierie inverse pour accomplir des tâches algorithmiques spécifiques.
Pour utiliser le réseau Transformer pour construire un cadre informatique général, un bloc de calcul spécialisé est requis. Assemblez ces blocs pour créer la fonctionnalité finale souhaitée. Ce qui suit se concentre sur les différentes opérations que la couche Transformer peut effectuer. Ces opérations serviront de base à la création de routines et d’algorithmes plus complexes. Ces opérations sont destinées à être interopérables les unes avec les autres, tirant parti de la capacité d'Attention à effectuer diverses tâches, telles que la génération de matrices de permutation approximatives et l'approximation de fonctions générales via des fonctions sigmoïdes.
Figure 2 : Diagramme schématique de trois blocs Transformer utilisés comme blocs de construction pour la mise en œuvre d'un petit ordinateur à jeu d'instructions. Ces blocs gèrent les opérations d'édition dans la séquence d'entrée (telles que le déplacement ou la copie d'un bloc à un autre), le suivi du compteur de programme et l'exécution de sauts de compteur de programme lorsque les conditions spécifiées sont remplies.
Encodage de position, compteur de programme et pointeur de données
Transformer doit généralement exécuter un algorithme itératif ou exécuter une série de commandes. Pour y parvenir, l'auteur utilise un compteur de programme qui parcourt les commandes. Le compteur contient un code pour l'emplacement où la prochaine commande est stockée. De plus, les commandes peuvent avoir des pointeurs de données pointant vers les emplacements de données que la commande doit lire et écrire. Le compteur de programme et le pointeur de données utilisent le même codage de position évoqué dans le paragraphe précédent.
Le schéma de codage positionnel de l'auteur peut également être utilisé pour pointer vers des emplacements de données spécifiques pour la lecture ou l'écriture, ce qui est abordé dans la section suivante. Ceci est réalisé en utilisant le même vecteur binaire que le codage de position pour le compteur de programme et le pointeur de données. De plus, cette technique de pointage vers des emplacements de données spécifiques permet aux Transformers de lire/écrire efficacement des données pendant l'exécution d'un algorithme ou d'une séquence de commandes pour lequel il a été conçu.
Lecture/écriture : copiez les données et les instructions vers ou depuis le bloc-notes
Figure 3 : Diagramme schématique de l'opération de lecture. La flèche montre le bloc de commande copié à partir de la partie d'entrée affectée à la commande scratchpad. Une instruction est un ensemble de pointeurs. Les codes de position et les compteurs sont utilisés pour suivre quel contenu est copié et où.
Le lemme suivant indique que la commande pointée par le compteur du programme ou les données à l'emplacement spécifié dans la commande actuelle peuvent être copiées dans le bloc-notes pour des calculs ultérieurs. L'emplacement du compteur de programme se trouve généralement directement sous le contenu du bloc-notes, mais peut être modifié arbitrairement. Le maintenir dans une position spécifique tout au long du calcul permet de maintenir la structure bien organisée.
Le lemme suivant explique qu'un vecteur v stocké dans un bloc-notes peut être copié vers un emplacement spécifié en mémoire, comme spécifié par le bloc-notes lui-même. Cela permet aux données d'être transférées du bloc-notes vers un emplacement spécifique de la mémoire pour une utilisation ou un stockage ultérieur.
Figure 4 : Diagramme schématique de l'opération d'écriture. La flèche montre que le bloc de données est copié du bloc-notes vers l'emplacement spécifié dans la section d'entrée allouée à la mémoire. Le codage positionnel est utilisé pour suivre les emplacements cibles et garantir que les données sont écrites dans le bon emplacement mémoire.
Branche conditionnelle
Dans cette partie, l'auteur implémente une instruction de branchement conditionnel qui évalue une condition et place le compteur du programme à un emplacement spécifié si la condition est vraie, ou Incrémentez le compteur du programme de 1 lorsque la condition est fausse. La commande
a la forme : si mem[a]≤0, alors allez à i, où mem[a] est la valeur à une position dans la partie mémoire de la séquence d'entrée. Cette commande comporte deux parties : juger de l'inégalité et modifier le compteur du programme.
SUBLEQ Transformer
Mavaddat et Parhami avaient démontré dès 1988 qu'il existe une instruction et que tout programme informatique peut être transformé en un programme composé d'instanciations de cette consigne. Une variante de cette instruction est SUBLEQ, qui peut accéder à différents registres ou emplacements mémoire.
Le fonctionnement de SUBLEQ est simple. Il accède à deux registres en mémoire, récupère la différence de leur contenu et la stocke dans l'un des registres, puis si le résultat est négatif, il passe à une autre ligne de code prédéfinie ou continue avec l'instruction suivante de la ligne en cours. Un ordinateur conçu pour exécuter des programmes SUBLEQ est appelé ordinateur à jeu d’instructions unique et est un ordinateur à usage général, c’est-à-dire qu’il est complet de Turing s’il a accès à une mémoire infinie.
Ce qui suit décrit la construction d'un transformateur en boucle qui peut exécuter des programmes écrits avec un jeu d'instructions spécifique. Transformer garde une trace des lignes de code, des emplacements de mémoire et des compteurs de programme, en utilisant la partie mémoire de l'entrée comme registres de mémoire et la partie commande comme lignes de code/instructions. Le registre temporaire permet d'enregistrer les ajouts et les pointeurs impliqués dans chaque instruction, lecture, écriture, opérations de branchement conditionnel, etc.
Figure 5 : Représentation graphique du bloc d'instruction OISC implémenté. Les deux premiers blocs transfèrent les données/commandes au bloc-notes, les deuxième et troisième effectuent la soustraction et stockent le résultat, tandis que le dernier exécute la commande if goto qui complète l'instruction.
FLEQ : Un ordinateur basé sur l'attention plus flexible
Dans cette section, l'auteur présente FLEQ, qui est une promotion de SUBLEQ et définit un ordinateur à jeu d'instructions réduit plus flexible. Ce jeu d'instructions supplémentaires implicites est basé sur une version plus avancée de SUBLEQ et permet d'implémenter plusieurs fonctions dans le même réseau Transformer. Les auteurs utilisent le terme FLEQ pour désigner les instructions, le langage et les ordinateurs basés sur l'attention qu'il définit.
FLEQ est conçu pour permettre la mise en œuvre d'algorithmes complexes tels que la multiplication matricielle, les calculs de racine carrée, les fonctions d'activation, etc. en générant des fonctions plus générales que la simple soustraction.
Cycle d'exécution informatique basé sur l'Attention. À chaque itération du transformateur de boucle, une instruction est extraite du jeu d'instructions dans l'entrée en fonction du compteur de programme. L'instruction est ensuite copiée dans le bloc-notes. En fonction de la fonction à implémenter, différents emplacements de blocs fonctionnels sont utilisés pour enregistrer localement les résultats de la fonction. Une fois le résultat calculé, il est recopié vers l’emplacement mémoire spécifié fourni par l’instruction.
Le cycle d'exécution est similaire à celui de l'ordinateur à jeu d'instructions unique (OISC) de la section précédente. La principale différence est que pour chaque instruction, vous pouvez choisir parmi une liste de fonctions présélectionnées, qui sont saisies de manière arbitraire. tableau, Tels que les matrices, les vecteurs et les scalaires.
Saisissez le format de la séquence. Comme le montre la figure 6, l'entrée X du transformateur de boucle peut exécuter un programme composé d'une série d'instructions FLEQ (X se compose de trois parties : registre temporaire, mémoire et instructions).
Format de blocs fonctionnels basés sur Transformer. Chaque bloc fonctionnel est situé dans la partie inférieure gauche de l'entrée X, comme le montre la figure 6.
Figure 6 : Structure de la saisie
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!