Donc, actuellement, les fonctions d'activation les plus couramment utilisées sont celles de Re-Lu. J'ai donc répondu à cette question Quel est le but d'une fonction d'activation dans les réseaux de neurones? et en écrivant la réponse, cela m'a frappé, comment peut exactement la fonction non linéaire approximative de Re-Lu?
Par pure définition mathématique, bien sûr, c'est une fonction non linéaire en raison du virage serré, mais si nous nous limitons à la partie positive ou négative de l'axe des x uniquement, alors son linéaire dans ces régions. Disons que nous prenons également l'ensemble de l'axe des x, puis aussi son peu linéaire (pas au sens mathématique strict) dans le sens où il ne peut pas approximer de manière satisfaisante les fonctions courbes comme l'onde sinusoïdale ( 0 --> 90
) avec une couche cachée à un seul nœud comme cela est possible par un sigmoïde fonction d'activation.
Alors, quelle est l'intuition derrière le fait que les Re-Lu sont utilisés dans les NN, donnant des performances satisfaisantes (je ne demande pas le but des Re-lu) même s'ils sont plutôt linéaires? Ou les fonctions non linéaires comme sigmoïde et tanh sont-elles parfois lancées au milieu du réseau?
EDIT: Selon le commentaire de @ Eka, Re-Lu tire sa capacité de la discontinuité agissant dans les couches profondes de Neural Net. Cela signifie-t-il que les Re-Lu sont bons tant que nous les utilisons dans les NN profonds et non dans un NN peu profond?
max(0,x)
agit dans les couches profondes du réseau neuronal. Il y a une recherche openai dans laquelle ils ont calculé des fonctions non linéaires en utilisant des réseaux linéaires profonds voici le lien blog.openai.com/nonlinear-computation-in-linear-networksRéponses:
Les sorties d'un réseau ReLU sont toujours "linéaires" et discontinues. Ils peuvent approximer les courbes, mais cela pourrait prendre beaucoup d'unités ReLU. Cependant, en même temps, leurs sorties seront souvent interprétées comme une sortie incurvée continue.
Imaginez que vous avez formé un réseau de neurones qui prend x 3 et produit | x 3 | (qui est similaire à une parabole). C'est facile pour la fonction ReLU de faire parfaitement. Dans ce cas, la sortie est courbe.
Mais ce n'est pas réellement incurvé. Les entrées ici sont liées «linéairement» aux sorties. Tout ce que fait le réseau de neurones, c'est qu'il prend l'entrée et renvoie la valeur absolue de l'entrée. Il remplit une fonction «linéaire», non courbe. Vous ne pouvez voir que la sortie n'est pas linéaire lorsque vous la représentez graphiquement par rapport aux valeurs x d'origine (les x en x 3 ).
Ainsi, lorsque nous tracons la sortie sur un graphique et qu'elle semble courbe, c'est généralement parce que nous avons associé différentes valeurs x à l'entrée, puis tracé la sortie en tant que coordonnée y par rapport à ces valeurs x.
D'accord, vous voulez donc savoir comment modéliser en douceur sin (x) en utilisant ReLU. L'astuce est que vous ne voulez pas mettre x comme entrée. Au lieu de cela, mettez quelque chose de courbe par rapport à x comme entrée, comme x 3 . L'entrée est donc x 3 et la sortie est sin (x). La raison pour laquelle cela fonctionnerait est que ce n'est pas le calcul sinus de l'entrée - c'est le calcul sinus de la racine cubique de l'entrée. Il ne pourrait jamais calculer en douceur le sinus de l'entrée elle-même. Pour représenter graphiquement la sortie sin (x), mettez le x d'origine comme coordonnée x (ne mettez pas d'entrée) et mettez la sortie comme coordonnée y.
la source