Les réseaux de neurones peuvent-ils se rapprocher d'une fonction donnée suffisamment de neurones cachés?

Je comprends que les réseaux de neurones avec un nombre quelconque de couches cachées peuvent approximer des fonctions non linéaires, cependant, peut-il approximer:

f(x) = x^2

Je ne peux pas penser à comment il pourrait. Cela semble être une limitation très évidente des réseaux de neurones qui peuvent potentiellement limiter ce qu'il peut faire. Par exemple, en raison de cette limitation, les réseaux de neurones ne peuvent probablement pas approcher correctement de nombreuses fonctions utilisées dans les statistiques comme la moyenne mobile exponentielle, ou même la variance.

En parlant de déménagement en moyenne, les réseaux de neurones récurrents peuvent-ils se rapprocher correctement de cela? Je comprends comment un réseau neuronal feedforward ou même un seul neurone linéaire peut produire une moyenne mobile en utilisant la technique de la fenêtre coulissante,mais comment les réseaux neuronaux récurrents le feraient-ils Sans x quantité de couches cachées (X étant la taille moyenne mobile)?

Supposons également que nous ne connaissons pas la fonction d'origine f , qui obtient la moyenne des 500 dernières entrées, puis affiche un 1 si c'est plus élevé que 3, et 0 si ce n'est pas le cas. Mais une seconde, fais comme si on ne le savait pas, c'est une boîte noire.

Comment un réseau neuronal récurrent se rapprocherait-il de cela? Nous aurions d'abord besoin de savoir combien de temps il devrait avoir, ce que nous ne faisons pas. peut-être un réseau LSTM pourrait, mais même alors, et si ce n'est pas une simple moyenne mobile, c'est une moyenne mobile exponentielle? Je ne pense pas que même LSTM puisse le faire.

Pire encore, et si f (x,x1) que nous essayons d'apprendre est simplement

f(x,x1) = x * x1

Cela semble très simple et direct. Un réseau de neurones peut-il l'apprendre? Je ne vois pas comment.

Est-ce que je manque quelque chose d'énorme ici ou les algorithmes d'apprentissage automatique sont-ils extrêmement limités? Existe-t-il d'autres techniques d'apprentissage en plus des réseaux de neurones qui peuvent réellement faire tout cela?

32
demandé sur Essam Al-Mansouri 2014-09-01 19:51:03

6 réponses

Le point essentiel à comprendre est compact:

Les réseaux neuronaux (comme toute autre structure d'approximation comme les polynômes, les splines ou les fonctions de base radiales) ne peuvent approcher n'importe quelle fonction continue que dans un ensemble compact.

En d'autres termes, la théorie stipule que, étant donné:

  1. , Une fonction continue f(x),
  2. Une gamme finie pour l'entrée x, [a,b], et
  3. une précision d'approximation souhaitée ε>0,

Alors il existe un réseau de neurones qui se rapproche de f(X) avec une erreur d'approximation inférieure à ε, partout dans [a,b] .

Concernant votre exemple de f(x) = x2, oui, vous pouvez approximatif avec un réseau de neurones à l'intérieur de toute gamme finie: [-1,1], [0, 1000], etc. Pour visualiser cela, imaginez que vous approximatif f(x) dans [-1,1] avec un Étape de la Fonction. Vous pouvez le faire sur le papier? Notez que si vous faites les étapes assez étroites, vous pouvez obtenir la précision souhaitée. La façon dont les réseaux de neurones approchent f (x) n'est pas très différente de celle-ci.

Mais encore une fois, il n'y a pas de réseau neuronal (ou toute autre structure d'approximation) avec un nombre fini de paramètres pouvant approcher f (x) = x2 pour tous les x dans [-∞, +∞].

33
répondu Panagiotis Panagi 2017-09-01 06:20:32

La question est très légitime et malheureusement beaucoup de réponses montrent à quel point les praticiens semblent peu au courant de la théorie des réseaux de neurones. Le seul théorème rigoureux qui existe sur la capacité des réseaux de neurones à approximer différents types de fonctions est le théorème D'Approximation universelle.

L'UAT indique que toute fonction continue sur un domaine compact peut être approchée par un réseau neuronal avec une seule couche cachée à condition que les fonctions d'activation utilisées sont délimités, continus et monotoniques croissants. Maintenant, une somme finie de fonctions limitées est limitée par définition.

Un polynôme n'est pas borné, donc le mieux que nous puissions faire est de fournir une approximation de réseau neuronal de ce polynôme sur un sous-ensemble compact de R^N. en dehors de ce sous-ensemble compact, l'approximation échouera lamentablement car le polynôme grandira sans limite. En d'autres termes, le réseau de neurones fonctionnera bien sur l'ensemble de la formation, mais ne généralisera pas!

Le la question n'est pas hors sujet et ne représente pas l'opinion du PO.

21
répondu Tarek Nassar 2016-08-16 17:27:11

Je ne sais pas pourquoi il y a une telle réaction viscérale, je pense que c'est une question légitime qui est difficile à trouver en la googlant, même si je pense qu'elle est largement appréciée et répétée. Je pense que dans ce cas, vous recherchez les citations montrant qu'un réseau neuronal peut se rapprocher de n'importe quelle fonction. Cet article récent l'explique gentiment, à mon avis. Ils citent également le document original de Barron de 1993 qui s'est avéré un résultat moins général. La conclusion: une le réseau neuronal à deux couches peut représenter n'importe quel polynôme de degré borné, dans certaines conditions (apparemment non restrictives).

Juste au cas où le lien ne fonctionne pas, il est appelé "apprendre des polynômes avec des réseaux de neurones" par Andoni et al., 2014.

20
répondu Martha White 2014-10-07 21:00:52

Je comprends que les réseaux de neurones avec un nombre quelconque de couches cachées peuvent approximer des fonctions non linéaires, cependant, peut-il approximer:

f(x) = x^2

La seule façon dont je peux donner un sens à cette question Est que vous parlez d'extrapolation. Ainsi, par exemple, étant donné des échantillons d'entraînement dans la plage -1 < x < +1 un réseau de neurones peut-il apprendre les bonnes valeurs pour x > 100? C'est ce que tu veux dire?

Si vous aviez des connaissances préalables, que les fonctions que vous essayez d'approximer sont susceptibles d'être des polynômes d'ordre inférieur (ou tout autre ensemble de fonctions), alors vous pourriez sûrement construire un réseau de neurones qui peut représenter ces fonctions, et extrapoler x^2 partout.

Si vous n'avez pas de connaissances préalables, les choses sont un peu plus difficiles: il y a une infinité de fonctions lisses qui correspondent parfaitement à x^2 dans la plage -1..+1, et il n'y a aucune bonne raison de s'attendre à ce que x^2 donne de meilleures prédictions que n'importe quelle autre fonction. En d'autres termes: si nous n'avions pas de connaissance de la fonction que nous essayons d'apprendre, pourquoi devrions-nous vouloir apprendre x -> x^2? Dans le domaine des ensembles d'entraînement artificiels, x^2 pourrait être une fonction probable, mais dans le monde réel, ce n'est probablement pas le cas.

Pour donner un exemple: disons que la température du lundi (t = 0) est de 0°, le mardi c'est de 1°, Le Mercredi c'est de 4°. Nous n'avons aucune raison de croire que les températures se comportent comme des polynômes d'ordre bas, donc nous ne voudrions pas que infère à partir de ces données que la température suivante Lundi sera probablement autour de 49°.

Supposons également que nous ne connaissons pas la fonction d'origine f, qui obtient la moyenne des 500 dernières entrées, puis affiche un 1 si elle est supérieure à 3, et 0 si ce n'est pas le cas. Mais une seconde, fais comme si on ne le savait pas, c'est une boîte noire.

Comment un réseau neuronal récurrent se rapprocherait-il de cela?

Je pense que ce sont deux questions: premièrement, un réseau de neurones peut-il représenter cette fonction? I. e. est il y a un ensemble de poids qui donnerait exactement ce comportement? Cela dépend évidemment de l'architecture du réseau, mais je pense que nous pouvons trouver des architectures qui peuvent représenter (ou du moins approcher de près) ce genre de fonction.

Deuxième Question: peut-il apprendre Cette fonction, compte tenu de suffisamment d'échantillons de formation? Eh bien, si votre algorithme d'apprentissage ne reste pas coincé dans un minimum local, bien sûr: si vous avez suffisamment d'échantillons d'entraînement, tout ensemble de poids qui ne se rapproche pas de votre la fonction donne une erreur d'entraînement supérieure à 0, tandis qu'un ensemble de poids qui correspondent à la fonction que vous essayez d'apprendre a une erreur d'entraînement=0. Donc, si vous trouvez un optimum global, le réseau doit correspondre à la fonction.

11
répondu Niki 2014-09-01 17:44:20

Un réseau peut apprendre x|->x * x si c'est un neurone qui calcule x * x. Ou plus généralement, un nœud qui calcule x**p et apprend p. ceux-ci ne sont pas couramment utilisés, mais l'affirmation selon laquelle "aucun réseau de neurones ne peut apprendre..."est trop fort.

Un réseau avec ReLUs et une couche de sortie linéaire peut apprendre x|->2*x, même sur une plage illimitée de valeurs X. L'erreur sera illimitée, mais l'erreur proportionnelle sera limitée. Toute fonction apprise par un tel réseau est linéaire par morceaux, et dans particulier asymptotiquement linéaire.

Cependant, il y a un risque avec ReLUs: une fois Qu'un ReLU est désactivé pour tous les exemples de formation, il cesse d'apprendre. Avec un grand domaine, il s'activera pour certains exemples de test possibles, et donnera un résultat erroné. Donc, les ReLUs ne sont qu'un bon choix si les cas de test sont susceptibles d'être dans la coque convexe de l'ensemble d'entraînement. Ceci est plus facile à garantir si la dimensionnalité est faible. Un travail autour est de préférer LeakyReLU.

Un autre problème: combien de neurones avez-vous besoin d'obtenir l'approximation que vous voulez? Chaque ReLU ou LeakyReLU implémente un seul changement de gradient. Ainsi, le nombre nécessaire dépend de la valeur absolue maximale du deuxième différentiel de la fonction objective, divisée par l'erreur maximale à tolérer.

1
répondu chrishmorris 2018-02-16 12:17:34

Il y a des limites théoriques des réseaux neuronaux. Aucun réseau neuronal ne peut jamais apprendre la fonction f(x) = x * x Il ne peut pas non plus apprendre un nombre infini d'autres fonctions, sauf si vous supposez l'impraticable:

1 - un nombre infini d'exemples de formation 2 - un nombre infini d'unités 3 - une quantité infinie de temps pour converger

Les NN sont bons dans l'apprentissage des problèmes de reconnaissance de formes de bas niveau (signaux qui, à la fin, ont un modèle statistique qui peut être représenté par certains fonction "continue"!), mais c'est tout! Pas plus!

Voici un indice:
Essayez de construire un NN qui prend n+1 entrées de données (x0, x1, x2, ... xn) et il retourne vrai (ou 1) si (2 * x0) est dans le reste de la séquence. Et, bonne chance. Les fonctions infinies en particulier celles qui sont récursives ne peuvent pas être apprises. Ils sont tout simplement!

-1
répondu Walid Saba 2017-10-10 14:53:54