Je vais expliquer les types de fonctions d'activation qui apparaissent dans le réseau neuronal et de quel type de fonctions elles sont.
C'est une fonction qui convertit la somme des signaux d'entrée en un signal de sortie. La fonction d'activation est chargée de déterminer comment la somme des signaux d'entrée est activée et comment elle se déclenche.
Exprimé comme une expression, cela ressemble à ceci.
Cela ressemble à ceci sur la figure.
a = x_1w_1 + x_2w_2 + b \\
y = h(a)
C'est une fonction qui commute la sortie à la limite du seuil, elle est également appelée "fonction échelon".
Puisque Perceptron prend une valeur binaire de déclenchement (1) ou de non déclenchement (0), on peut dire que "Perceptron utilise une fonction d'étape comme fonction d'activation". Normalement, les réseaux neuronaux utilisent une autre fonction qui n'est pas une fonction d'étape comme fonction d'activation.
def step_function(x):
if x > 0:
return 1
else:
return 0
Si l'entrée est supérieure à 0, elle renverra 1, et si elle est inférieure à 0, elle renverra 0. Je pense que le tableau Numpy est utilisé dans le réseau neuronal, alors faites-le correspondre au tableau Numpy.
def step_function(x):
y = x > 0
return y.astype(np.int)
Une description du code. Une opération d'inégalité sur un tableau Numpy générera un tableau booléen.
>>> x = np.array([1.0, -1.0, 2.0])
>>> y = x > 0
>>> y
>>> array([ True, False, True])
Je le convertis en type int.
>>> y.astype(np.int)
>>> array([1, 0, 1])
Le graphique ressemble à ceci.
def sigmoid(x):
return 1 / (1 + np.exp(-x))
Lorsqu'une opération numérique est effectuée sur un tableau Numpy et une valeur scalaire, chaque élément du tableau Numpy et une valeur scalaire sont calculés, et le résultat de l'opération est généré sous la forme d'un tableau Numpy.
Le graphique ressemble à ceci.
Je pense que sigmoïde est une version fluide de la fonction step, et je pense qu'il est bon de le reconnaître.
Signification et propriétés simples de la fonction sigmoïde
h(x) = \left\{
\begin{array}{ll}
x & (x \gt 0) \\
0 & (x \leq 0)
\end{array} \right.
C'est une fonction qui sort la valeur d'entrée telle qu'elle est si l'entrée dépasse 0, et la sortie 0 si elle est égale ou inférieure à 0. La lecture est "Fonction Relou". Le nom officiel est "Unité linéaire rectifiée", également connue sous le nom de fonction de rampe.
def relu(x):
return np.maximum(0, x)
maximum (): Compare chaque élément de 0 et x et renvoie le plus grand
Le graphique ressemble à ceci.
Il est souvent utilisé comme fonction d'activation de la couche de sortie. Puisqu'il est lui-même / entier, il peut être considéré comme une probabilité. Vous pouvez voir lequel est le plus plausible dans d'autres classifications.
def softmax(a):
exp_a = np.exp(a)
sum_exp_a = np.sum(exp_a)
y = exp_a / sim_exp_a
Soyez prudent ici! La fonction exponentielle se développe de manière explosive. Comme ça. → Un débordement s'est produit
Soustrayez la valeur maximale du signal d'entrée! La raison en est que la fonction softmax a la propriété que le résultat ne change pas même si une constante est ajoutée ou soustraite.
def softmax(a):
c = np.max(a) #Valeur maximale du signal d'entrée
exp_a = np.exp(a - c)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
Comparez l'axe des y.
Elle est souvent utilisée comme fonction d'activation de la couche de régression en sortie, c'est une fonction qui sort l'entrée telle quelle.
Les réseaux de neurones peuvent être utilisés à la fois pour des problèmes de régression et de classification, mais différentes fonctions d'activation sont utilisées en fonction du problème, de sorte que différentes fonctions d'activation peuvent être utilisées pour la couche de sortie et la couche intermédiaire.
Recommended Posts