Partager via


Fonctions d’activation avec BrainScript

Sigmoid(), Tanh(), ReLU(), Softmax(), LogSoftmax(), Hardmax()

Fonctions d’activation non linéaires pour les réseaux neuronaux.

Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)

Paramètres

  • x: argument pour appliquer la non-linéarité à

Valeur renvoyée

Résultat de l’application de la non-linéaire. La forme de capteur de sortie est identique à celle de l’entrée.

Description

Il s’agit des fonctions d’activation populaires des réseaux neuronaux. Tous ces éléments à l’exception de la famille et Hardmax() sont appliqués dans le Softmax() sens des éléments.

Notez que pour l’efficacité, lors de l’utilisation du critère d’entraînement inter-entropie, il est souvent souhaitable de ne pas appliquer une opération Softmax à la fin, mais plutôt de passer l’entrée du Softmax à CrossEntropyWithSoftmax()

L’opération Hardmax() détermine l’élément avec la valeur la plus élevée et représente son emplacement en tant que vecteur/capteur à chaud. Ceci est utilisé pour effectuer la classification.

Expression d’autres non linéaires dans BrainScript

Si votre non-linéaire nécessaire n’est pas l’un des éléments ci-dessus, il peut être composé en tant qu’expression BrainScript. Par exemple, une reLU fuite avec une pente de 0,1 pour la partie négative peut simplement être écrite comme

LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)

Softmax long axes

La famille Softmax est spéciale en ce qu’elle implique le calcul d’un dénominateur. Ce dénominateur est calculé sur toutes les valeurs du vecteur d’entrée.

Dans certains scénarios, toutefois, l’entrée est un tensor avec le rang>1, où les axes doivent être traités séparément. Prenons par exemple un capteur d’entrée de forme [10000 x 20] qui stocke 20 distributions différentes, chaque colonne représente la distribution de probabilité d’un élément d’entrée distinct. Par conséquent, l’opération Softmax doit calculer 20 dénominateurs distincts. Cette opération n’est pas prise en charge par les fonctions intégrées (Log)Softmax() , mais peut être réalisée dans BrainScript à l’aide d’une opération de réduction des éléments comme suit :

ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)

Ici, ReduceLogSum() calcule le (journal de) le dénominateur, ce qui entraîne un tensor avec la dimension 1 pour l’axe réduit ; [1 x 20] dans l’exemple ci-dessus. La soustraction de ce [10000 x 20]vecteur d’entrée -dimensionnel est une opération valide comme d’habitude, celle-ci 1 est automatiquement « diffusée », c’est-à-dire dupliquée pour correspondre à la dimension d’entrée.

Exemple

Un MLP simple qui effectue une classification de 10 façons de vecteurs de caractéristiques de 40 dimensions :

features = Input{40}
h = Sigmoid (ParameterTensor{256:0} * features + ParameterTensor{256})
z = ParameterTensor{10:0}  * h * ParameterTensor{10}   # input to Softmax
labels = Input{10}
ce = CrossEntropyWithSoftmax (labels, z)