[PYTHON] Quelle est la fonction d'activation?

introduction

Je vais expliquer les types de fonctions d'activation qui apparaissent dans le réseau neuronal et de quel type de fonctions elles sont.

Quelle est la fonction d'activation?

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. $ y = h(\sum_{i=1}^{n}x_iw_i + b) $ $ h () $: Fonction d'activation, $ \ sum_ {i = 1} ^ {n} x_iw_i + b $: Signal d'entrée, $ y $: Signal de sortie

Cela ressemble à ceci sur la figure.

2020-01-30 (2).png
a = x_1w_1 + x_2w_2 + b \\
y = h(a)

Fonction Step

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. download.png

Fonction Sigmaid

h(x) = \frac{1}{1-\exp(-x)}
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. download.png

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

Fonction ReLU

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. download.png

fonction softmax

y_k = \frac{\exp(a_k)}{\sum_{i=1}^{n}\exp(a_i)}

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. download.png Comme ça. → Un débordement s'est produit

Que faire?

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

download.png Comparez l'axe des y.

Fonction égale

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.

download.png

en conclusion

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

Quelle est la fonction d'activation?
Qu'est-ce que la fonction de rappel?
Concernant la fonction d'activation Gelu
A quoi sert l'interface ...
Qu'est-ce qu'une fonction de rappel?
[Python] Qu'est-ce qu'une fonction zip?
[Python] Qu'est-ce que @? (À propos des décorateurs)
[python] Quelle est la clé triée?
Qu'est-ce que le système X Window?
À quoi sert le trait de soulignement Python (_)?
Qu'est-ce que l'espace de noms
Qu'est-ce que copy.copy ()
Qu'est-ce que Django? .. ..
Qu'est-ce que dotenv?
Qu'est-ce que POSIX
Qu'est-ce que Linux
Qu'est-ce que clivoa, un framework pour le traitement ETL?
Qu'est-ce que le klass?
[Unix] Qu'est-ce que le processus zombie / processus orphelin?
Quelle est la cause de l'erreur suivante?
Qu'est-ce que SALOME?
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Qu'est-ce que Linux?
Qu'est-ce que python
Qu'est-ce que l'hyperopt?
Qu'est-ce que Linux
[Apprentissage automatique] Qu'est-ce que la norme LP?
Qu'est-ce que pyvenv
Qu'est-ce que __call__
Qu'est-ce que Linux
Qu'est-ce que Python
Quelle est la différence entre «pip» et «conda»?
Qu'est-ce que wheezy dans l'image Docker Python?
Pourquoi la fonction d'activation doit être une fonction non linéaire
C'est un Mac. Qu'est-ce que la commande Linux Linux?
(Linux débutant) Quel est le mot magique aux?
Je souhaite utiliser la fonction d'activation Mish
Quelle est la différence entre Unix et Linux?
Qu'est-ce qu'une distribution?
Qu'est-ce que le F-Score de Piotroski?
Qu'est-ce que Raspberry Pi?
[Python] Qu'est-ce que Pipeline ...
Qu'est-ce que Calmar Ratio?
Qu'est-ce qu'un terminal?
[Tutoriel PyTorch ①] Qu'est-ce que PyTorch?
Qu'est-ce que le réglage des hyper paramètres?
Qu'est-ce qu'un hacker?
La première «fonction» GOLD
Qu'est-ce que JSON? .. [Remarque]
À propos de la fonction Déplier
À quoi sert Linux?
Qu'est-ce qu'un pointeur?
Qu'est-ce que l'apprentissage d'ensemble?
Qu'est-ce que TCP / IP?
Qu'est-ce que __init__.py de Python?
Qu'est-ce qu'un itérateur?
Qu'est-ce que UNIT-V Linux?
[Python] Qu'est-ce que virtualenv
Qu'est-ce que l'apprentissage automatique?
Quelle est la différence entre usleep, nanosleep et clock_nanosleep?