Réseau neuronal: Matlab utilise différentes fonctions d'activation pour différentes couches - pourquoi?

Aug 20 2020

J'ai formé sur matlab un réseau de neurones artificiels avec une couche d'entrée, une couche cachée et une couche de sortie (ma sortie est des valeurs comprises entre zéro et un, que je transforme en 0 ou 1 selon un seuil de 0,5).

J'ai remarqué que, par défaut , matlab utilisait la fonction de transfert «tansig» pour la couche cachée, puis la fonction de transfert «logsig» pour la couche de sortie . Quelqu'un peut-il me donner une explication à ce sujet?

Merci d'avance!

Réponses

2 Sycorax Aug 19 2020 at 22:40

La grande idée est qu'il n'y a pas d'exigence particulière que toutes les couches d'un réseau neuronal utilisent la même fonction d'activation. Vous pouvez mélanger et assortir comme vous le souhaitez. Cela dit, il y a quelques raisons de préférer utiliser$\tanh$ comme fonction d'activation d'un calque caché et $\sigma$ comme fonction de sortie.

  • le $\tanh(x)=\frac{\exp(x)-\exp(-x)}{\exp(x)+\exp(-x)}$est une fonction d'activation standard. Son utilisation dans un réseau neuronal n'est pas plus surprenante que l'utilisation des moindres carrés comme fonction objective pour une tâche de régression.

  • La fonction $\sigma(x)=\frac{1}{1+\exp(-x)}$est un moyen standard de mapper des nombres réels sur des valeurs réelles dans (0,1). Il est donc couramment utilisé pour modéliser les probabilités. Comme votre tâche consiste à prédire 0 ou 1, l'utilisation de ce modèle suggère de modéliser la probabilité que l'échantillon soit étiqueté 1.

  • Utilisant un $\tanh$ fonction de la dernière couche ne serait pas plausible, car elle n'a pas de relation claire avec la modélisation de la probabilité qu'un échantillon soit étiqueté 1. La fonction $\tanh$ renvoie des valeurs comprises entre -1 et 1, ce n'est donc pas une probabilité.

  • Si vous le souhaitez, vous pouvez utiliser $\sigma(x)$comme fonction d'activation. Mais$\tanh$est préférable car avoir un gradient plus fort et donner des sorties positives et négatives facilite l'optimisation. Voir: fonction d'activation tanh vs fonction d'activation sigmoïde

  • Mais notez également que ReLU et les fonctions similaires sont généralement préférées comme fonctions d'activation dans les couches cachées. Voir: Quels sont les avantages de ReLU sur la fonction sigmoïde dans les réseaux neuronaux profonds?

  • Le choix d'utiliser $\tanh$par défaut, cela concerne probablement plus les pratiques de développement de logiciels que les principes mathématiques: la modification du comportement par défaut d'un logiciel peut casser le code hérité et provoquer un comportement inattendu. Les unités ReLU ne sont devenues populaires que récemment , par rapport à l'âge de MATLAB. L'add-on Neural Network Toolbox a été publié pour la première fois en 1992 (depuis lors, il a été rebaptisé "Deep Learning Toolbox"). En 1992, la construction d'un réseau neuronal était presque synonyme de réseau monocouche avec$\tanh$ ou $\sigma$ fonctions d'activation.

    Mais il est peu probable qu'il y ait une explication définitive de la raison pour laquelle MATLAB a choisi cette valeur par défaut à moins qu'ils ne publient une justification de ce choix (par exemple, notes de publication ou documentation).