Expliquer en détail softmax et sigmoïde

Introduction aux fonctions d'activation

Pour ceux qui sont engagés ou qui connaissent l'industrie de l'intelligence artificielle, je pense que les deux fonctions d'activation de softmax et de sigmoïde ne sont pas inconnues. Ces deux fonctions d'activation ne sont pas seulement utilisées dans la régression logistique, mais également incluses dans les entretiens ou les examens écrits. Il est très important et le plus élémentaire de maîtriser ces deux fonctions d'activation et leurs fonctions dérivées. Les détails suivants softmax et sigmoïde:

fonction softmax

En mathématiques, la fonction softmax, également appelée fonction exponentielle normalisée, est une extension de la fonction logique. Il peut "compresser" un vecteur z à k dimensions appelant n'importe quel nombre réel en deux vecteurs à k dimensions σ (z), de sorte que la plage de chaque élément soit comprise entre (0, 1), et la somme de tous les éléments est 1.

Propriétés de la fonction softmax

La formule de la fonction softmax est:
F (xi) = exp (xi) ∑ i = 0 kexp (xi) (i = 0, 1, 2, ... k) F (x_i) = \ frac {exp (x_i)} {\ somme_ {i = 0} ^ k {exp (x_i)}} (i = 0,1,2, ... k)F ( xJe)=i = 0ke x p ( xJe)e x p ( xJe)Je=0 ,1 ,2 ,. . . K )
  x: les données d'entrée;
  exp: exponentiation;
  F (x):sortie de fonction;
  fondstoutesvaleurs de x dans l'intervalle de 0 à 1;
 cartographie de toutesvaleurs de x et est égal à 1.

Utilisation de la fonction softmax

  • Utilisé pour les modèles de régression logistique de classification multiple.
  • Lors de la construction d'un réseau neuronal, utilisez la fonction softmax dans différentes couches; softmax apparaît comme une couche entièrement connectée dans le réseau neuronal, et la fonction consiste à mapper le résultat du calcul du réseau à l'intervalle (0, 1), donnant chaque catégorie La probabilite.

Code d'implémentation de softmax

implémentation python

import numpy as np

def softmax(x):
    orig_shape=x.shape
    #根据输入类型是矩阵还是向量分别做softmax
    if len(x.shape)>1:
        #矩阵
        #找到每一行的最大值max,并减去该max值,目的是为了防止exp溢出
        constant_shift=np.max(x,axis=1).reshape(1,-1)
        x-=constant_shift
        #计算exp
        x=np.exp(x)
        #每行求和
        normlize=np.sum(x,axis=1).reshape(1,-1)
        #求softmax
        x/=normlize
    else:
        #向量
        constant_shift=np.max(x)
        x-=constant_shift
        x=np.exp(x)
        normlize=np.sum(x)
        x/=normlize
    assert x.shape==orig_shape
    return x

image de la fonction softmax

import numpy as np
import matplotlib.pyplot as plt
def softmax(x):
    orig_shape=x.shape
    if len(x.shape)>1:
        constant_shift=np.max(x,axis=1).reshape(1,-1)
        x-=constant_shift
        x=np.exp(x)
        normlize=np.sum(x,axis=1).reshape(1,-1)
        x/=normlize
    else:
        constant_shift=np.max(x)
        x-=constant_shift
        x=np.exp(x)
        normlize=np.sum(x)
        x/=normlize
    assert x.shape==orig_shape
    return x

softmax_inputs = np.arange(0,5)
softmax_outputs=softmax(softmax_inputs)
print("softmax input:: {}".format(softmax_inputs))
print("softmax output:: {}".format(softmax_outputs))
# 画图像
plt.plot(softmax_inputs,softmax_outputs)
plt.xlabel("Softmax Inputs")
plt.ylabel("Softmax Outputs")
plt.show()

Insérez la description de l'image ici
On peut voir sur la figure que plus la valeur d'entrée de softmax est grande, plus sa valeur de sortie est grande.

fonction sigmoïde

La fonction sigmoïde est une fonction sigmoïde courante en biologie, également connue sous le nom de courbe de croissance sigmoïde. La fonction sigmoïde est souvent utilisée comme fonction de seuil des réseaux de neurones pour mapper des variables entre 0 et 1.

La nature de la fonction sigmoïde

La formule de la fonction sigmoïde est:
F (x) = 1 1 + exp (- x) F (x) = \ frac {1} {1 + exp (-x)}F ( x )=1+e x p ( - x )1
  x: données d'entrée;
  exp: opération exponentielle;
  f (x): sortie de fonction, qui est un nombre à virgule flottante;

Utilisation de la fonction sigmoïde

  • La fonction sigmoïde est utilisée pour la classification binaire dans le modèle de régression logistique.
  • Dans les réseaux neuronaux, la fonction sigmoïde est utilisée comme fonction d'activation.
  • En statistique, l'image de la fonction sigmoïde est une fonction de distribution cumulative courante.

Code d'implémentation de sigmoïde

implémentation python

import numpy as np
def sigmoid(x):
    return 1.0/(1+np.exp(-x))

dessin de fonction sigmoïde

def sigmoid(x):
    return 1.0/(1+np.exp(-x))

sigmoid_inputs = np.arange(-10,10)
sigmoid_outputs=sigmoid(sigmoid(sigmoid_inputs))
print("sigmoid Input :: {}".format(sigmoid_inputs))
print("sigmoid Output :: {}".format(sigmoid_outputs))

plt.plot(sigmoid_inputs,sigmoid_outputs)
plt.xlabel("Sigmoid Inputs")
plt.ylabel("Sigmoid Outputs")
plt.show()

Insérez la description de l'image ici

Comparaison de softmax et sigmoïde

commun softmax sigmoïde
officiel F (xi) = exp (xi) ∑ i = 0 kexp (xi) F (x_i) = \ frac {exp (x_i)} {\ sum_ {i = 0} ^ k {exp (x_i)}} F ( xJe)=i = 0ke x p ( xJe)e x p ( xJe) F (x) = 1 1 + exp (- x) F (x) = \ frac {1} {1 + exp (-x)} F ( x )=1 + e x p ( - x )1
La nature Distribution de probabilité discrète Cartographie non linéaire
tâche Multi-catégorie Deux catégories
Domaine Un vecteur unidimensionnel Valeur unique
intervalle [0, 1] (0, 1)
Somme des résultats Doit être 1 Est un nombre positif

Je suppose que tu aimes

Origine blog.csdn.net/CFH1021/article/details/104841428
conseillé
Classement