La fonction sigmoïde en Python

Muhammad Waiz Khan 30 janvier 2023
  1. Implémenter la fonction Sigmoid en Python à l’aide du module math
  2. Implémenter la fonction sigmoïde en Python en utilisant la méthode numpy.exp()
  3. Implémenter la fonction Sigmoid en Python à l’aide de la bibliothèque SciPy
La fonction sigmoïde en Python

Dans ce tutoriel, nous examinerons différentes méthodes pour utiliser la fonction sigmoïde en Python. La fonction sigmoïde est une fonction logistique mathématique. Il est couramment utilisé dans les statistiques, le traitement du signal audio, la biochimie et la fonction d’activation des neurones artificiels. La formule de la fonction sigmoïde est F(x) = 1/(1 + e^(-x)).

Implémenter la fonction Sigmoid en Python à l’aide du module math

Nous pouvons implémenter notre propre fonction sigmoïde en Python en utilisant le module math. Nous avons besoin de la méthode math.exp() du module math pour implémenter la fonction sigmoïde.

L’exemple de code ci-dessous montre comment utiliser la fonction sigmoid en Python.

import math


def sigmoid(x):
    sig = 1 / (1 + math.exp(-x))
    return sig

Le problème avec cette implémentation est qu’elle n’est pas numériquement stable et le débordement peut se produire.

L’exemple de code de l’implémentation numériquement stable de la fonction sigmoïde en Python est donné ci-dessous.

import math


def stable_sigmoid(x):

    if x >= 0:
        z = math.exp(-x)
        sig = 1 / (1 + z)
        return sig
    else:
        z = math.exp(x)
        sig = z / (1 + z)
        return sig

Implémenter la fonction sigmoïde en Python en utilisant la méthode numpy.exp()

Nous pouvons également implémenter la fonction sigmoïde en utilisant la méthode numpy.exp() en Python. Comme les implémentations de la fonction sigmoïde utilisant la méthode math.exp(), nous pouvons également implémenter la fonction sigmoïde en utilisant la méthode numpy.exp().

L’avantage de la méthode numpy.exp() par rapport à math.exp() est qu’en dehors de l’entier ou du flottant, elle peut également gérer l’entrée sous la forme d’un tableau.

Ci-dessous, l’implémentation de la fonction sigmoïde régulière en utilisant la méthode numpy.exp() en Python.

import numpy as np


def sigmoid(x):

    z = np.exp(-x)
    sig = 1 / (1 + z)

    return sig

Pour l’implémentation numériquement stable de la fonction sigmoïde, nous devons d’abord vérifier la valeur de chaque valeur du tableau d’entrée, puis passer la valeur du sigmoïde. Pour cela, nous pouvons utiliser la méthode np.where(), comme indiqué dans l’exemple de code ci-dessous.

import numpy as np


def stable_sigmoid(x):

    sig = np.where(x < 0, np.exp(x) / (1 + np.exp(x)), 1 / (1 + np.exp(-x)))
    return sig

Implémenter la fonction Sigmoid en Python à l’aide de la bibliothèque SciPy

On peut également utiliser la version SciPy de la fonction sigmoïde de Python en important simplement la fonction sigmoïde appelée expit dans la bibliothèque SciPy.

L’exemple de code ci-dessous montre comment utiliser la fonction sigmoïde à l’aide de la bibliothèque SciPy:

from scipy.special import expit

x = 0.25
sig = expit(x)

La méthode expit() est plus lente que les implémentations ci-dessus. L’avantage de la méthode expit() est qu’elle peut gérer automatiquement les différents types d’entrées comme liste, tableau, etc.

from scipy.special import expit

sig = expit(np.array([0.25, 0.5, 0.6, 0.7, 0.4]))
print(sig)

Production:

[0.5621765  0.62245933 0.64565631 0.66818777 0.59868766]