Récemment, j'ai lu qu'un réseau neuronal récurrent peut se rapprocher de n'importe quel algorithme.
Donc ma question est: qu'est-ce que cela signifie exactement et pouvez-vous me donner une référence où cela est prouvé?
references
rnn
user3726947
la source
la source
Réponses:
Contexte
Nous devons d'abord passer en revue certains concepts de la théorie du calcul. Un algorithme est une procédure de calcul d'une fonction. Étant donné l'entrée, l'algorithme doit produire la sortie correcte en un nombre fini d'étapes, puis se terminer. Dire qu'une fonction est calculable signifie qu'il existe un algorithme pour la calculer. Parmi l'ensemble infini de toutes les fonctions, la plupart ne sont pas calculables. Les machines de Turing sont un modèle mathématique qui formalise la notion de calcul. Il existe d'autres modèles équivalents, mais les machines Turing sont le «modèle de référence» standard. Selon la thèse de Church-Turing, tout algorithme peut être implémenté par une machine de Turing, et toutes les fonctions calculables peuvent être calculées ainsi. Toute instance particulière d'une machine de Turing ne calcule qu'une fonction particulière. Mais, il existe une classe spéciale de machines de Turing appelées machines de Turing universelles qui peuvent simuler n'importe quelle autre machine de Turing pour n'importe quelle entrée. Ils le font en prenant une description de la machine à simuler (et de son entrée) dans le cadre de leur propre entrée. Toute instance particulière d'une machine Universal Turing peut donc calculer n'importe quelle fonction calculable (c'est-à-dire peut implémenter n'importe quel algorithme). Tout système qui partage cette capacité est appelé Turing complet. Une façon de prouver qu'un système est Turing complet est de montrer qu'il peut simuler une machine de Turing universelle. De nombreux systèmes se sont avérés être Turing complets (par exemple la plupart des langages de programmation, certains automates cellulaires et la mécanique quantique ).
Réseaux de neurones récurrents
L'article suivant montre que, pour toute fonction calculable, il existe un réseau neuronal récurrent fini (RNN) qui peut le calculer. De plus, il existe des RNN finis qui sont Turing complets, et peuvent donc implémenter n'importe quel algorithme.
Ils utilisent des réseaux contenant un nombre fini d'unités connectées de manière récurrente, qui reçoivent des entrées externes à chaque instant. L'état de chaque unité est donné par une somme pondérée de ses entrées (plus un biais), exécutées via une fonction d'activation non linéaire. La fonction d'activation est une fonction linéaire saturée, qui est une approximation linéaire par morceaux d'un sigmoïde. Les poids et les biais sont fixes, donc aucun apprentissage n'a lieu.
Le réseau effectue un mappage d'une séquence d'entrée binaire à une séquence de sortie binaire. Il existe deux entrées externes au réseau, qui sont transmises à toutes les unités: une «ligne de données» et une «ligne de validation». La ligne de données contient la séquence d'entrée de zéros et de uns, puis zéro une fois la séquence d'entrée terminée. La ligne de validation permet au réseau de savoir quand la séquence d'entrée se produit. Il en contient un pour la durée de la séquence d'entrée, puis zéro une fois celle-ci terminée. Une unité est considérée comme «l'unité de sortie». Il émet des zéros pour un certain délai arbitraire, puis la séquence de sortie des zéros et des uns, puis zéro une fois la séquence de sortie terminée. Une autre unité est considérée comme «l'unité de validation», ce qui nous permet de savoir quand la séquence de sortie se produit.
Bien que ces RNN mappent des séquences d'entrée binaires à des séquences de sortie binaires, nous pourrions être intéressés par des fonctions définies sur divers autres objets mathématiques (autres types de nombres, vecteurs, images, graphiques, etc.). Mais, pour toute fonction calculable, ces autres types d'objets peuvent être codés sous forme de séquences binaires (par exemple, voir ici pour une description du codage d'autres objets à l'aide de nombres naturels, qui peuvent à leur tour être représentés en binaire).
Résultat
Ils montrent que, pour chaque fonction calculable, il existe un RNN fini (de la forme décrite ci-dessus) qui peut le calculer. Ils le font en montrant qu'il est possible d'utiliser un RNN pour simuler explicitement un automate pushdown avec deux piles. Il s'agit d'un autre modèle équivalent sur le plan informatique à une machine de Turing. Toute fonction calculable peut être calculée par une machine de Turing. N'importe quelle machine de Turing peut être simulée par un automate déroulant à deux piles. Tout automate pushdown avec deux piles peut être simulé par un RNN. Par conséquent, toute fonction calculable peut être calculée par un RNN. De plus, comme certaines machines de Turing sont universelles, les RNN qui les simulent sont Turing complet, et peuvent donc implémenter n'importe quel algorithme. En particulier, ils montrent qu'il existe des RNN complets de Turing avec 1058 unités ou moins.
Autres conséquences
Une conséquence intéressante des résultats de la simulation est que certaines questions sur le comportement des RNN sont indécidables. Cela signifie qu'il n'existe aucun algorithme qui puisse y répondre pour des RNN arbitraires (bien qu'ils puissent être responsables dans le cas de RNN particuliers ). Par exemple, la question de savoir si une unité donnée prend jamais la valeur 0 est indécidable; si l'on pouvait répondre à cette question en général, il serait possible de résoudre le problème d'arrêt des machines de Turing, qui est indécidable.
Puissance de calcul
Dans l'article ci-dessus, tous les paramètres et états du réseau sont des nombres rationnels. Ceci est important car il limite la puissance des RNN et rend les réseaux résultants plus réalistes. La raison en est que les rationnels sont des nombres calculables , ce qui signifie qu'il existe un algorithme pour les calculer avec une précision arbitraire. La plupart des nombres réels sont non calculables, et donc inaccessibles - même la machine Turing la plus puissante ne peut pas les représenter, et beaucoup de gens doutent qu'ils pourraient même être représentés dans le monde physique. Lorsque nous traitons des «nombres réels» sur des ordinateurs numériques, nous accédons à un sous-ensemble encore plus petit (par exemple, les nombres à virgule flottante 64 bits ). La représentation de nombres réels arbitraires nécessiterait des informations infinies.
Le document indique que donner au réseau l'accès à des nombres réels augmenterait encore plus la puissance de calcul, au-delà des machines Turing. Siegelmann a écrit un certain nombre d'autres articles explorant cette capacité de «super-Turing». Cependant, il est important de noter qu'il s'agit de modèles mathématiques, et les résultats ne signifient pas qu'une telle machine pourrait réellement exister dans le monde physique. Il y a de bonnes raisons de penser que ce n'est pas possible, bien qu'il s'agisse d'une question ouverte.
la source
Je pense que c'est ce que vous recherchez. Ce type a prouvé qu'un réseau multicouche, ou même un réseau à action directe à simple couche, pouvait approximer n'importe quelle fonction, à condition que le réseau ait suffisamment d'unités cachées.
Hornik, K. (1991). Capacités d'approximation des réseaux multicouches à action directe. Réseaux de neurones, 4 (2), 251-257.
la source