web-dev-qa-db-fra.com

Pourquoi une fonction d'activation non linéaire doit-elle être utilisée dans un réseau de neurones de rétropropagation?

J'ai lu des choses sur les réseaux de neurones et je comprends le principe général d'un réseau de neurones à une seule couche. Je comprends le besoin de couches supplémentaires, mais pourquoi utilise-t-on des fonctions d'activation non linéaires?

Cette question est suivie de celle-ci: Qu'est-ce qu'un dérivé de la fonction d'activation utilisée dans la rétropropagation?

119
corazza

La fonction d'activation a pour but d'introduire la non-linéarité dans le réseau

à son tour, cela vous permet de modéliser une variable de réponse (variable cible, étiquette de classe ou score) qui varie de manière non linéaire avec ses variables explicatives.

non linéaire signifie que la sortie ne peut pas être reproduite à partir d'une combinaison linéaire des entrées (ce qui est différent de la sortie qui s'affiche en ligne droite). -le mot pour cela est affine ).

une autre façon de penser: sans une fonction d’activation non linéaire dans le réseau, un NN, quel que soit le nombre de couches dont il disposait, se comporterait simplement comme un perceptron monocouche, car la somme de ces couches ne vous donnerait qu'une autre fonction linéaire (voir la définition ci-dessus).

>>> in_vec = NP.random.Rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])

>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

Une fonction d'activation commune utilisée dans backprop ( tangente hyperbolique ) évaluée de -2 à 2:

enter image description here

151
doug

Une fonction d'activation linéaire peut être utilisée, toutefois dans des cas très limités. En fait, pour mieux comprendre les fonctions d’activation, il est important d’examiner la méthode des moindres carrés ordinaires ou simplement la régression linéaire. Une régression linéaire vise à trouver les poids optimaux qui entraînent un effet vertical minimal entre les variables explicatives et cibles, lorsqu'ils sont combinés avec l'entrée. En bref, si la sortie attendue reflète la régression linéaire, comme indiqué ci-dessous, des fonctions d’activation linéaires peuvent être utilisées: (Figure du haut). Mais comme dans la deuxième figure ci-dessous, la fonction linéaire ne produira pas les résultats souhaités: (figure du milieu). Cependant, une fonction non linéaire telle que présentée ci-dessous produirait les résultats souhaités: (Illustration du bas) enter image description here

Les fonctions d'activation ne peuvent pas être linéaires car les réseaux de neurones dotés d'une fonction d'activation linéaire ne sont efficaces que sur une couche de profondeur, quelle que soit la complexité de leur architecture. La contribution aux réseaux est généralement une transformation linéaire (entrée * pondérée), mais le monde réel et les problèmes rencontrés ne sont pas linéaires. Pour rendre les données entrantes non linéaires, nous utilisons un mappage non linéaire appelé fonction d'activation. Une fonction d'activation est une fonction décisionnelle qui détermine la présence d'une caractéristique neurale particulière. Il est mappé entre 0 et 1, où zéro signifie absence de la fonctionnalité, tandis que l'un signifie sa présence. Malheureusement, les petites modifications survenant dans les pondérations ne peuvent pas être reflétées dans les valeurs d'activation car elles ne peuvent prendre que 0 ou 1. Par conséquent, les fonctions non linéaires doivent être continues et différenciables entre cette plage. Un réseau de neurones doit pouvoir prendre n'importe quelle entrée de -infinity à + infinite, mais il doit pouvoir mapper celle-ci sur une sortie comprise entre {0,1} ou entre {-1,1} dans certains cas. besoin d'une fonction d'activation. La non-linéarité est nécessaire dans les fonctions d'activation car son objectif dans un réseau de neurones est de produire une limite de décision non linéaire via des combinaisons non linéaires du poids et des entrées.

39
chibole

Si nous n'autorisons que les fonctions d'activation linéaire dans un réseau de neurones, la sortie sera simplement une transformation linéaire de l'entrée, ce qui n'est pas suffisant pour former un approximateur de fonction universelle . Un tel réseau peut simplement être représenté comme une multiplication matricielle et vous ne pourriez pas obtenir de comportements très intéressants à partir d'un tel réseau.

La même chose vaut pour le cas où tous les neurones ont des fonctions d’activation affines (c.-à-d. Une fonction d’activation sous la forme f(x) = a*x + c, où a et c sont des constantes, qui est un généralisation des fonctions d'activation linéaires), ce qui aboutira simplement à une transformation affine d'entrée à sortie, ce qui n'est pas très excitant non plus.

Un réseau de neurones peut très bien contenir des neurones avec des fonctions d’activation linéaires, telles que dans la couche de sortie, mais ceux-ci nécessitent la compagnie de neurones avec une fonction d’activation non linéaire dans d’autres parties du réseau.

Remarque: Une exception intéressante est celle de DeepMind gradients synthétiques , pour laquelle ils utilisent un petit réseau neuronal pour prédire le gradient dans la rétropropagation. pass compte tenu des valeurs d’activation, et ils découvrent qu’ils peuvent s’en tirer en utilisant un réseau de neurones sans couche cachée et en activant uniquement de manière linéaire.

20
HelloGoodbye

"Le présent article utilise le théorème de Stone-Weierstrass et les énigmes de cosinus de Gallant et White pour établir que les architectures de réseau à couches multiples standard utilisant des fonctions d'abattement écrasantes peuvent approximer toute fonction présentant un intérêt avec le degré de précision souhaité, à condition que suffisamment les unités sont disponibles. " ( Hornik et al., 1989, Réseaux de neurones )

Une fonction de compression est par exemple une fonction d'activation non linéaire mappée sur [0,1] comme la fonction d'activation sigmoïde.

4
alfa

Il arrive parfois qu'un réseau purement linéaire puisse donner des résultats utiles. Supposons que nous ayons un réseau de trois couches avec des formes (3,2,3). En limitant la couche intermédiaire à deux dimensions seulement, nous obtenons un résultat qui correspond au "plan de meilleur ajustement" dans l'espace tridimensionnel d'origine.

Mais il existe des moyens plus faciles de trouver des transformations linéaires de cette forme, tels que NMF, PCA, etc. Cependant, il s'agit d'un cas où un réseau multicouche ne se comporte PAS de la même manière qu'un perceptron à couche unique.

3
markemus

Un réseau neuronal à rétroaction avec activation linéaire et un nombre quelconque de couches cachées équivaut à un réseau neuronal neural linéaire sans couche cachée. Par exemple, considérons le réseau de neurones dans la figure avec deux couches cachées et aucune activation enter image description here

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

Nous pouvons faire la dernière étape car la combinaison de plusieurs transformations linéaires peut être remplacée par une transformation et la combinaison de plusieurs termes de biais ne représente qu'un seul biais. Le résultat est le même, même si nous ajoutons une activation linéaire.

Nous pourrions donc remplacer ce réseau de neurones par un réseau de neurones à une seule couche. Cela peut être étendu à n couches. Cela indique que l'ajout de couches n'augmente pas du tout le pouvoir d'approximation d'un réseau neuronal linéaire. Nous avons besoin de fonctions d'activation non linéaires pour approcher des fonctions non linéaires et la plupart des problèmes du monde réel sont extrêmement complexes et non linéaires. En fait, lorsque la fonction d'activation est non linéaire, il peut être prouvé qu'un réseau neuronal à deux couches avec un nombre suffisamment grand d'unités cachées est un approximateur de fonction universel.

2
xashru

Pour comprendre la logique derrière les fonctions non linéaires fonctions d'activation , vous devez d'abord comprendre pourquoi les fonctions d'activation sont utilisées. En général, les problèmes du monde réel nécessitent des solutions non linéaires qui ne sont pas triviales. Nous avons donc besoin de certaines fonctions pour générer la non-linéarité. Fondamentalement, une fonction d'activation génère cette non-linéarité tout en mappant les valeurs d'entrée dans une plage souhaitée.

Toutefois, les fonctions d'activation linéaire peuvent être utilisées dans un nombre très limité de cas où vous n'avez pas besoin de couches masquées telles que la régression linéaire. Généralement, il est inutile de générer un réseau de neurones pour ce type de problèmes car, indépendamment du nombre de couches cachées, ce réseau générera une combinaison linéaire d'entrées pouvant être réalisée en une seule étape. En d'autres termes, il se comporte comme une seule couche.

Il existe également quelques propriétés plus souhaitables pour les fonctions d'activation, telles que la différentiabilité continue . Puisque nous utilisons la rétropropagation, la fonction que nous générons doit être différentiable à tout moment. Je vous conseille vivement de consulter la page wikipedia pour connaître les fonctions d'activation de ici afin de mieux comprendre le sujet.

2

Un NN en couches de plusieurs neurones peut être utilisé pour apprendre des problèmes linéairement inséparables. Par exemple, la fonction XOR peut être obtenue avec deux couches avec la fonction d'activation par étape.

1
david

Si je me souviens bien, les fonctions sigmoïdes sont utilisées car leur dérivée qui s’intègre dans l’algorithme de BP est facile à calculer, quelque chose de simple comme f (x) (1-f (x)). Je ne me souviens pas exactement du calcul. En réalité, toute fonction avec des dérivés peut être utilisée.

1
Anton

Permettez-moi de vous expliquer le plus simplement possible:

Les réseaux de neurones sont utilisés dans la reconnaissance de formes correct? Et la recherche de motif est une technique très non linéaire.

Supposons, à titre d’argument, que nous utilisions une fonction d’activation linéaire y = wX + b pour chaque neurone et que nous définissions quelque chose comme si y> 0 -> classe 1 sinon classe 0.

Maintenant, nous pouvons calculer notre perte en utilisant une erreur d’erreur carrée et la propager en retour afin que le modèle apprenne bien, n’est-ce pas?

FAUX.

  • Pour la dernière couche masquée, la valeur mise à jour sera w {l} = w {l} - (alpha) * X.

  • Pour la dernière dernière couche masquée, la valeur mise à jour sera w {l-1} = w {l-1} - (alpha) * w {l} * X.

  • Pour la dernière couche masquée, la valeur mise à jour sera w {i} = w {i} - (alpha) * w {l} ... * w {i + 1} * X.

Cela nous oblige à multiplier toutes les matrices de poids, ce qui donne les possibilités suivantes: A) w {i} ne change presque pas en raison de la disparition du gradient B) w {i} se modifie de manière spectaculaire et inexacte en raison de l'explosion du gradient assez pour nous donner un bon score

Dans le cas où C se produit, cela signifie que notre problème de classification/prédiction était très probablement un simple régresseur linéaire/logistique et qu’il n’avait jamais eu besoin d’un réseau de neurones!

Quelle que soit la puissance de votre NN, que vous soyez robuste ou hyper optimisé, si vous utilisez une fonction d'activation linéaire, vous ne pourrez jamais vous attaquer aux problèmes de reconnaissance de formes non linéaires.

0
Kaustubh J