Liste complète des fonctions d'activation dans les réseaux de neurones avec avantages / inconvénients


95

Existe-t-il un / des document (s) de référence donnant une liste complète des fonctions d’activation dans les réseaux de neurones ainsi que leurs avantages / inconvénients (et idéalement des indications vers des publications où elles ont réussi ou non)?


Je n'en sais pas assez sur les ANN, mais à moins que les fonctions d'activation diffèrent considérablement par leur forme, il sera très difficile de les distinguer. Pour une discussion sur une situation analogue, vous pouvez voir ma réponse ici: Différence entre les modèles logit et probit .
Gay - Réintégrer Monica

1
non, cela fait une grosse différence.
Viliami

en.wikipedia.org/wiki/Fonction_activation est une bonne ressource; vous pouvez en utiliser de nombreux autres sin(x), voir openreview.net/pdf?id=Sks3zF9eg .
Piotr Migdal

Pour un didacticiel vidéo sur les fonctions d'activation, visitez le site: quickkt.com/tutorials/artificial-intelligence/deep-learning/…
vinay kumar

Réponses:


144

Je vais commencer à dresser une liste de ceux que j'ai appris jusqu'à présent. Comme @marcodena l'a dit, le pour et le contre sont plus difficiles, car il ne s'agit que d'heuristiques apprises en essayant ces choses, mais je pense au moins que la liste de ce qu'elles sont ne peut pas nuire.

Premièrement, je vais définir explicitement la notation afin d'éviter toute confusion:

Notation

Cette notation est extraite du livre de Neilsen .

Un réseau de neurones Feedforward est constitué de plusieurs couches de neurones connectées entre elles. Il prend une entrée, puis cette entrée "passe" par le réseau et le réseau de neurones renvoie un vecteur de sortie.

Plus formellement, appelez l'activation (ou sortie) du neurone dans la couche , où est l' élément dans le vecteur d'entrée.ajijthithaj1jth

Ensuite, nous pouvons relier l'entrée de la couche suivante à la précédente via la relation suivante:

aji=σ(k(wjkiaki1)+bji)

  • σ est la fonction d'activation,
  • wjki est le poids de la neurone dans le couche à la neurone dans le couche,kth(i1)thjthith
  • bji est le biais du neurone dans la couche , etjthith
  • aji représente la valeur d'activation du neurone dans la couche .jthith

Parfois, nous écrivons pour représenter , en d'autres termes, la valeur d'activation d'un neurone avant d'appliquer la fonction d'activation .zjik(wjkiaki1)+bji

entrez la description de l'image ici

Pour une notation plus concise, nous pouvons écrire

ai=σ(wi×ai1+bi)

Pour utiliser cette formule pour calculer la sortie d’un réseau à anticipation pour une entrée , définissez , puis calculez , où est le nombre de couches.IRna1=Ia2,a3,,amm

Fonctions d'activation

(dans ce qui suit, nous écrirons au lieu de pour la lisibilité)exp(x)ex

Identité

Également appelée fonction d'activation linéaire.

aji=σ(zji)=zji

Identité

Étape

aji=σ(zji)={0if zji<01if zji>0

Étape

Par morceaux linéaire

Choisissez quelques et , qui sont notre "plage". Tout ce qui est inférieur à cette plage sera 0 et tout ce qui est supérieur à cette plage sera 1. Tout le reste est interpolé linéairement entre. Officiellement:xminxmax

aji=σ(zji)={0if zji<xminmzji+bif xminzjixmax1if zji>xmax

m=1xmaxxmin

et

b=mxmin=1mxmax

Par morceaux linéaire

Sigmoïde

aji=σ(zji)=11+exp(zji)

Sigmoïde

Journal de bord complémentaire

aji=σ(zji)=1exp(exp(zji))

Journal de bord complémentaire

Bipolaire

aji=σ(zji)={1if zji<0   1if zji>0

Bipolaire

Sigmoïde bipolaire

aji=σ(zji)=1exp(zji)1+exp(zji)
Sigmoïde bipolaire

Tanh

aji=σ(zji)=tanh(zji)

Tanh

LeCun's Tanh

Voir Efficace Backprop .

aji=σ(zji)=1.7159tanh(23zji)

LeCun's Tanh

Escaladé:

LeCun's Tanh Scaled

Dur tanh

aji=σ(zji)=max(1,min(1,zji))

Dur tanh

Absolu

aji=σ(zji)=∣zji

Absolu

Redresseur

Également connu sous le nom d'unité linéaire rectifiée (ReLU), Max ou fonction de rampe .

aji=σ(zji)=max(0,zji)

Redresseur

Modifications de ReLU

Voici quelques fonctions d'activation avec lesquelles je joue et qui semblent avoir de très bonnes performances pour MNIST pour des raisons mystérieuses.

aji=σ(zji)=max(0,zji)+cos(zji)

ReLU cos

Escaladé:

ReLU cos mis à l'échelle

aji=σ(zji)=max(0,zji)+sin(zji)

ReLU le péché

Escaladé:

ReLU sin mis à l'échelle

Redresseur lisse

Également connu sous le nom d'unité linéaire rectifiée lisse, Smooth Max ou Soft plus

aji=σ(zji)=log(1+exp(zji))

Redresseur lisse

Logit

aji=σ(zji)=log(zji(1zji))

Logit

Escaladé:

Logit à l'échelle

Probit

aji=σ(zji)=2erf1(2zji1)
.

Où est la fonction d'erreur . Il ne peut pas être décrit via des fonctions élémentaires, mais vous pouvez trouver des moyens d’en approcher l’inverse sur cette page Wikipedia et ici .erf

Alternativement, il peut être exprimé par

aji=σ(zji)=ϕ(zji)
.

Où est la fonction de distribution cumulative (CDF). Voir ici pour les moyens de s'en approcher.ϕ

Probit

Escaladé:

Probit à l'échelle

Cosinus

Voir Évier de cuisine au hasard .

aji=σ(zji)=cos(zji)
.

Cosinus

Softmax

Aussi connu sous le nom d'exponentielle normalisée.

aji=exp(zji)kexp(zki)

Celui-ci est un peu étrange car la sortie d'un seul neurone dépend des autres neurones de cette couche. Cela devient également difficile à calculer, car peut être une valeur très élevée, auquel cas débordera probablement. De même, si est une valeur très basse, elle débordera et deviendra .zjiexp(zji)zji0

Pour lutter contre cela, nous allons plutôt calculer . Cela nous donne:log(aji)

log(aji)=log(exp(zji)kexp(zki))

log(aji)=zjilog(kexp(zki))

Ici, nous devons utiliser l' astuce log-sum-exp :

Disons que nous calculons:

log(e2+e9+e11+e7+e2+e5)

Nous allons d'abord trier nos exponentielles par magnitude pour des raisons de commodité:

log(e11+e9+e5+e2+e2+e7)

Ensuite, puisque est notre plus haut, nous multiplions par :e11e11e11

log(e11e11(e11+e9+e5+e2+e2+e7))

log(1e11(e0+e2+e6+e9+e13+e18))

log(e11(e0+e2+e6+e9+e13+e18))

log(e11)+log(e0+e2+e6+e9+e13+e18)

11+log(e0+e2+e6+e9+e13+e18)

Nous pouvons ensuite calculer l'expression de droite et en prendre le journal. Vous pouvez le faire car cette somme est très petite en ce qui concerne . Par conséquent, un dépassement inférieur à 0 n'aurait pas été suffisamment important pour faire une différence de toute façon. Le débordement ne peut pas se produire dans l'expression de droite car nous avons la garantie qu'après la multiplication par , tous les pouvoirs seront .log(e11)e110

Formellement, nous appelons . Ensuite:m=max(z1i,z2i,z3i,...)

log(kexp(zki))=m+log(kexp(zkim))

Notre fonction softmax devient alors:

aji=exp(log(aji))=exp(zjimlog(kexp(zkim)))

Également en tant que sidenote, le dérivé de la fonction softmax est:

dσ(zji)dzji=σ(zji)=σ(zji)(1σ(zji))

Maxout

Celui-ci est également un peu délicat. L'idée est essentiellement de diviser chaque neurone de notre couche maxout en un grand nombre de sous-neurones, chacun ayant ses propres poids et biais. Ensuite, l'entrée d'un neurone va à la place de chacun de ses sous-neurones, et chaque sous-neurone sort simplement leurs (sans appliquer de fonction d'activation). Le de ce neurone est alors le maximum de toutes les sorties de son sous-neurone.zaji

Formellement, dans un seul neurone, disons que nous avons sous-neurones. ensuiten

aji=maxk[1,n]sjki

sjki=ai1wjki+bjki

( est le produit scalaire )

Pour nous aider à réfléchir à cela, considérons la matrice de poids pour la couche d'un réseau de neurones utilisant, par exemple, une fonction d'activation sigmoïde. est une matrice 2D, où chaque colonne est un vecteur pour le neurone contenant un poids pour chaque neurone de la couche précédente .WiithWiWjiji1

Si nous allons avoir des sous-neurones, nous aurons besoin d'une matrice de poids 2D pour chaque neurone, car chaque sous-neurone aura besoin d'un vecteur contenant un poids pour chaque neurone de la couche précédente. Cela signifie que est maintenant une matrice de poids 3D, où chaque est la matrice de poids 2D pour un seul neurone . Et alors est un vecteur du sous-neurone dans le neurone qui contient un poids pour chaque neurone de la couche précédente .WiWjijWjkikji1

De même, dans un réseau neuronal qui utilise à nouveau, par exemple, une fonction d'activation sigmoïde, est un vecteur avec un biais pour chaque neurone de la couche .bibjiji

Pour ce faire avec les sous-neurones, nous avons besoin d’une matrice de biais 2D pour chaque couche , où est le vecteur avec un biais pour chaque sous-neurone dans le neurone.biibjibjkikjth

Avoir une matrice de poids et un vecteur de biais pour chaque neurone rend les expressions ci-dessus très claires, il suffit d'appliquer les poids de chaque sous-neurone aux sorties de couche , puis appliquant leurs biais et en prenant le maximum.wjibjiwjkiai1i1bjki

Réseaux à fonction radiale

Les réseaux de fonctions à base radiale sont une modification des réseaux de neurones à action directe où, au lieu d’utiliser

aji=σ(k(wjkiaki1)+bji)

nous avons un poids par noeud dans la couche précédente (comme d'habitude), ainsi qu'un vecteur moyen et un vecteur de déviation standard pour chaque noeud de la couche précédente.wjkikμjkiσjki

Ensuite, nous appelons notre fonction d'activation pour éviter de la confondre avec les vecteurs d'écart type . Maintenant, pour calculer nous devons d’abord calculer un pour chaque noeud de la couche précédente. Une option consiste à utiliser la distance euclidienne:ρσjkiajizjki

zjki=(ai1μjki=(ai1μjki)2

Où est l' élément de . Celui-ci n'utilise pas le . Alternativement, il y a la distance de Mahalanobis, qui est supposée être plus performante:μjkithμjkiσjki

zjki=(ai1μjki)TΣjki(ai1μjki)

où est la matrice de covariance , définie comme suit:Σjki

Σjki=diag(σjki)

En d'autres termes, est la matrice diagonale avec tant qu'éléments diagonaux. Nous définissons et tant que vecteurs de colonne ici car il s'agit de la notation normalement utilisée.Σjkiσjkiai1μjki

Ce sont vraiment juste dire que la distance de Mahalanobis est définie comme

zjki=(ai1μjki)2σjki

Où est l' élément de . Notez que doit toujours être positif, mais il s’agit d’une exigence typique de l’écart type, ce qui n’est pas surprenant.σjkithσjkiσjki

Si vous le souhaitez, la distance de Mahalanobis est suffisamment générale pour que la matrice de covariance puisse être définie comme une autre matrice. Par exemple, si la matrice de covariance est la matrice d'identité, notre distance de Mahalanobis se réduit à la distance euclidienne. est assez commun cependant, et est connue sous le nom de distance euclidienne normalisée .ΣjkiΣjki=diag(σjki)

De toute façon, une fois que notre fonction de distance a été choisie, nous pouvons calculer viaaji

aji=kwjkiρ(zjki)

Dans ces réseaux, ils choisissent de multiplier par des poids après avoir appliqué la fonction d'activation pour des raisons.

Ceci décrit comment créer un réseau multi-couches à fonction de base radiale. Toutefois, il n’ya généralement qu’un de ces neurones et sa sortie est la sortie du réseau. Il est dessiné comme plusieurs neurones car chaque vecteur moyen et chaque vecteur d'écart type de ce neurone est considéré comme un "neurone" et, après toutes ces sorties, il y a une autre couche qui prend la somme de ces valeurs calculées multipliée par les poids, comme ci-dessus. Le diviser en deux couches avec un vecteur "sommateur" à la fin me semble étrange, mais c'est ce qu'elles font.μjkiσjkiaji

Voir aussi ici .

Fonction d'activation de réseau à fonction radiale

Gaussien

ρ(zjki)=exp(12(zjki)2)

Gaussien

Multiquadratique

Choisissez un point . Ensuite, nous calculons la distance de à :(x,y)(zji,0)(x,y)

ρ(zjki)=(zjkix)2+y2

C'est de Wikipedia . Ce n'est pas borné et peut être une valeur positive, bien que je me demande s'il existe un moyen de la normaliser.

Lorsque , cela équivaut à absolu (avec un décalage horizontal ).y=0x

Multiquadratique

Multiquadratique inverse

Identique au quadratique, sauf retourné:

ρ(zjki)=1(zjkix)2+y2

Multiquadratique inverse

* Graphiques d'Intmath's Graphs utilisant SVG .


12
Bienvenue sur CV. +6 c'est fabuleusement informatif. J'espère que nous verrons plus comme cela à l'avenir.
gung - Rétablir Monica

1
il y a aussi la fonction linéaire rectifiée lisse de la forme et probit. log(1+exp(x))
Memming

D'accord, je pense avoir ajouté Logit, Probit et Complementary log-log, mais je n'ai pas une compréhension approfondie de ces sujets et j'ai donc peut-être mal compris leur forme écrite. Est-ce correct?
Phylliida

3
Ce serait un article intéressant avec une belle liste de références. Par exemple, arxiv.org/abs/1505.03654 . N'hésitez pas à me contacter si vous décidez d'écrire un article et souhaitez d'autres références.
Hunaphu

9
Quelqu'un devrait le mettre à jour avec Elu, Leaky ReLU, PReLU et RReLU.
Viliami

24

Une telle liste, bien que peu exhaustive: http://cs231n.github.io/neural-networks-1/

Fonctions d'activation couramment utilisées

Chaque fonction d'activation (ou non-linéarité ) prend un nombre unique et effectue une certaine opération mathématique fixe sur celui-ci. Il existe plusieurs fonctions d’activation que vous pouvez rencontrer dans la pratique:

entrez la description de l'image icientrez la description de l'image ici

Gauche: la non-linéarité sigmoïde réduit les nombres réels entre [0,1], à droite. La non-linéarité tanh réduit les nombres réels entre [-1,1].

Sigmoïde. La non-linéarité sigmoïde a la forme mathématique et est montrée dans l'image ci-dessus à gauche. Comme mentionné dans la section précédente, il prend un nombre à valeur réelle et le "réduit" entre 0 et 1. En particulier, les grands nombres négatifs deviennent 0 et les grands nombres positifs deviennent 1. La fonction sigmoïde a été utilisée fréquemment par le passé car il a une bonne interprétation en tant que taux de déclenchement d'un neurone: de ne pas déclencher du tout (0) à un déclenchement totalement saturé à une fréquence supposée maximale (1). En pratique, la non-linéarité sigmoïde est récemment tombée en désuétude et elle est rarement utilisée. Il présente deux inconvénients majeurs:σ(x)=1/(1+ex)

  • Les Sigmoids saturent et éliminent les gradients . Une propriété très indésirable du neurone sigmoïde est que, lorsque l'activation du neurone sature au niveau de la queue de 0 ou de 1, le gradient de ces régions est presque nul. Rappelez-vous que lors de la rétro-propagation, ce gradient (local) sera multiplié par le gradient de la sortie de cette porte pour l’ensemble de l’objectif. Par conséquent, si le gradient local est très petit, il "tue" effectivement le gradient et presque aucun signal ne circulera à travers le neurone vers ses poids et de manière récursive vers ses données. De plus, il faut redoubler de prudence lors de l’initialisation du poids des neurones sigmoïdes pour éviter la saturation. Par exemple, si les poids initiaux sont trop importants, la plupart des neurones deviendront saturés et le réseau apprendra à peine.
  • Les sorties sigmoïdes ne sont pas centrées sur zéro . Cela n'est pas souhaitable car les neurones des couches de traitement ultérieures d'un réseau de neurones (plus de détails prochainement) recevraient des données qui ne sont pas centrées sur le zéro. Cela a des implications sur la dynamique lors de la descente du gradient, car si les données entrant dans un neurone sont toujours positives (par exemple, élément par élément dans )), le gradient sur les poids deviendra alors soit tous être positifs ou tous négatifs (en fonction du gradient de l'expression entière x>0f=wTx+bwf). Cela pourrait introduire une dynamique indésirable en zig-zag dans les mises à jour de gradient pour les poids. Cependant, notez qu'une fois que ces gradients sont ajoutés à un lot de données, la dernière mise à jour des pondérations peut avoir des signes variables, ce qui atténue quelque peu ce problème. C’est donc un inconvénient, mais les conséquences sont moins graves que celles du problème d’activation saturé ci-dessus.

Tanh. La non-linéarité du tanh est montrée sur l'image ci-dessus à droite. Il écrase un nombre de valeurs réelles dans l'intervalle [-1, 1]. Comme le neurone sigmoïde, ses activations saturent, mais contrairement au neurone sigmoïde, sa sortie est centrée sur le zéro. Par conséquent, dans la pratique, la non-linéarité de tanh est toujours préférée à la non-linéarité sigmoïde. Notez également que le neurone tanh est simplement un neurone sigmoïde mis à l'échelle, en particulier les suivants: .tanh(x)=2σ(2x)1

entrez la description de l'image icientrez la description de l'image ici

Gauche: fonction d'activation de l'unité linéaire rectifiée (ReLU), qui vaut zéro lorsque x <0, puis linéaire avec la pente 1 lorsque x> 0. À droite: Un graphique de Krizhevsky et al. (pdf) article indiquant l’amélioration 6x de la convergence avec l’unité ReLU par rapport à l’unité tanh.

ReLU. L'unité linéaire rectifiée est devenue très populaire ces dernières années. Il calcule la fonction . En d'autres termes, l'activation est simplement limitée à zéro (voir l'image ci-dessus à gauche). Il y a plusieurs avantages et inconvénients à utiliser les ReLU:f(x)=max(0,x)

  • (+) Il a été constaté qu’il accélérait considérablement (par exemple un facteur 6 dans Krizhevsky et al. ) La convergence de la descente de gradient stochastique par rapport aux fonctions sigmoïde / tanh. On prétend que cela est dû à sa forme linéaire, non saturante.
  • (+) Comparé aux neurones tanh / sigmoïde qui impliquent des opérations coûteuses (exponentielles, etc.), le ReLU peut être mis en œuvre simplement en seuillant à zéro une matrice d’activations.
  • (-) Malheureusement, les unités ReLU peuvent être fragiles pendant l'entraînement et peuvent "mourir". Par exemple, un gradient important traversant un neurone ReLU pourrait entraîner la mise à jour des poids de manière à ce que le neurone ne s'active plus jamais sur aucun point de données. Si cela se produit, le gradient qui traverse l'unité sera toujours égal à zéro à partir de ce moment. C'est-à-dire que les unités ReLU peuvent mourir de manière irréversible pendant l'entraînement car elles peuvent être éjectées du collecteur de données. Par exemple, vous pouvez constater que jusqu'à 40% de votre réseau peut être "mort" (c.-à-d. Des neurones qui ne s'activent jamais sur l'ensemble du jeu de données d'apprentissage) si le taux d'apprentissage est trop élevé. Avec un réglage approprié du taux d'apprentissage, cela pose moins souvent problème.

Leaky ReLU. Leaky ReLUs sont une tentative de résoudre le problème de "mourant ReLU". Au lieu que la fonction soit égale à zéro lorsque x <0, une ReLU qui fuit aura une petite pente négative (de 0,01 ou plus). C'est-à-dire que la fonction calcule où est une petite constante. Certaines personnes signalent le succès de cette forme d'activation, mais les résultats ne sont pas toujours cohérents. La pente dans la région négative peut également être transformée en paramètre de chaque neurone, comme le montrent les neurones PReLU, introduits dans Delving Deep into Rectifiers , de Kaiming He et al., 2015. Cependant, l'uniformité des avantages entre les tâches est actuellement pas clair.f(x)=1(x<0)(αx)+1(x>=0)(x)α

entrez la description de l'image ici

Maxout . D'autres types d'unités ont été proposées qui n'ont pas la forme fonctionnelle lorsqu'une non-linéarité est appliquée sur le produit scalaire entre les pondérations et les données. Un choix relativement populaire est le neurone Maxout (introduit récemment par Goodfellow et autres ) qui généralise le ReLU et sa version qui fuit. Le neurone Maxout calcule la fonction . Notez que ReLU et Leaky ReLU constituent un cas particulier de ce formulaire (par exemple, pour ReLU, nous avonsf(wTx+b)max(w1Tx+b1,w2Tx+b2)w1,b1=0). Le neurone Maxout bénéficie donc de tous les avantages d'une unité ReLU (régime de fonctionnement linéaire, pas de saturation) et ne présente pas d'inconvénient (ReLU mourant). Cependant, contrairement aux neurones ReLU, il double le nombre de paramètres pour chaque neurone, ce qui conduit à un nombre total élevé de paramètres.

Ceci conclut notre discussion sur les types de neurones les plus courants et leurs fonctions d’activation. Dernier commentaire, il est très rare de combiner différents types de neurones dans le même réseau, même si cela ne présente aucun problème fondamental.

TLDR : " Quel type de neurone devrais-je utiliser? " Utilisez la non-linéarité ReLU, faites attention à votre vitesse d' apprentissage et surveillez éventuellement la fraction d'unités "mortes" dans un réseau. Si cela vous concerne, essayez Leaky ReLU ou Maxout. Ne jamais utiliser sigmoïde. Essayez tanh, mais attendez-vous à ce qu'il fonctionne pire que ReLU / Maxout.


Licence:


La licence MIT (MIT)

Droits d'auteur (c) 2015 Andrej Karpathy

Par la présente, une autorisation est accordée gratuitement à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le "Logiciel"), afin de traiter le logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification et de fusion. , publiez, distribuez, concédez en sous-licence et / ou vendez des copies du logiciel, et autorisez les personnes à qui le logiciel est fourni à le faire, sous réserve des conditions suivantes:

L'avis de copyright ci-dessus et cet avis de permission doivent être inclus dans toutes les copies ou parties substantielles du logiciel.

LE LOGICIEL EST FOURNI "EN L'ETAT", SANS AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, Y COMPRIS DE MANIÈRE NON LIMITÉE À LA GARANTIE DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'INFRACTION. EN AUCUN CAS, LES AUTEURS OU LES TITULAIRES DE COPYRIGHT NE PEUVENT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DE DOMMAGES OU D'AUTRE RESPONSABILITÉ, QU'IL SOIT PAR UN ACTION DE CONTRAT, DE LORT OU DE AUTRE QUE CE SOIT, OU LIÉ AU LOGICIEL OU À L'UTILISATION OU AUTRE LOGICIEL.*

Autres liens:


10

Je ne pense pas qu'une liste avec le pour et le contre existe. Les fonctions d'activation dépendent fortement de l'application et dépendent également de l'architecture de votre réseau de neurones ( ici, par exemple, l'application de deux fonctions softmax, similaires à celle du sigmoïde).

Vous pouvez trouver des études sur le comportement général des fonctions, mais je pense que vous n’aurez jamais de liste définie et définitive (ce que vous demandez ...).

Je suis toujours étudiant, alors je signale ce que je sais jusqu'à présent:

  • Vous trouverez ici quelques réflexions sur les comportements de tanh et de sigmoids avec rétropropagation. Les Tanh sont plus génériques, mais sigmoids ... (il y aura toujours un "mais")
  • Dans Deep Sparse Rectifier, les réseaux neuronaux de Glorot Xavier et al, affirment que les unités de redressement sont plus plausibles sur le plan biologique et qu’elles fonctionnent mieux que les autres (sigmoïde / tanh)

C'est la réponse "correcte". On peut produire une liste mais les avantages et les inconvénients dépendent entièrement des données. En fait, l'apprentissage des fonctions d'activation est beaucoup plus raisonnable en théorie. La raison pour laquelle peu de recherches ont été menées est que le sigmoïde "fonctionne". En fin de compte, votre seul avantage est la vitesse de convergence qui est souvent sans importance
runDOSrun

4

Juste pour être complet sur une grande réponse de Danielle, il y a d' autres paradigmes, où l' on hasard « fait tourner la roue » sur les poids et / ou le type d'activations: machines à l'état liquide , des machines d'apprentissage extrêmes et les réseaux d'Etat écho .

Une façon de penser à ces architectures: le réservoir est une sorte de noyau comme dans les SVM ou une grande couche cachée dans un simple FFNN où les données sont projetées dans un hyperespace. Il n'y a pas d'apprentissage réel, le réservoir est régénéré jusqu'à ce qu'une solution satisfaisante soit trouvée.

Voir aussi cette belle réponse .


2

Vous trouverez un article sur les fonctions d'activation récentes dans:

" Fonctions d'activation: Comparaison des tendances dans la pratique et la recherche pour l'apprentissage en profondeur " de Chigozie Enyinna Nwankpa, Winifred Ijomah, Anthony Gachagan et Stephen Marshall

Les réseaux de neurones profonds ont été utilisés avec succès dans divers domaines émergents pour résoudre des problèmes complexes du monde réel avec des architectures d'apprentissage plus approfondies (DL), en cours de développement. Pour atteindre ces performances de pointe, les architectures DL utilisent des fonctions d'activation (AF) pour effectuer divers calculs entre les couches masquées et les couches de sortie de toute architecture DL donnée. Ce document présente une enquête sur les AF existants utilisés dans les applications d'apprentissage en profondeur et met en évidence les tendances récentes en matière d'utilisation des fonctions d'activation pour les applications d'apprentissage en profondeur. La nouveauté de cet article réside dans le fait qu’il rassemble la majorité des AF utilisés dans la DL et décrit les tendances actuelles des applications et de l’utilisation de ces fonctions dans les déploiements d’apprentissage en profondeur pratiques par rapport aux résultats de recherche de pointe. Cette compilation aidera à prendre des décisions efficaces dans le choix de la fonction d'activation la plus appropriée et la mieux adaptée à une application donnée, prête à être déployée. Cet article tombe à point, car la plupart des travaux de recherche sur la FA mettent en évidence des travaux et des résultats similaires, alors que ce document sera le premier à compiler les tendances des applications de la FA dans la pratique par rapport aux résultats de la littérature, trouvés dans des recherches approfondies à ce jour.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.