A função Sigmoid em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Implementar a função sigmóide em Python usando o módulo math
  2. Implementar a função sigmóide em Python usando o método numpy.exp()
  3. Implementar a função sigmoid em Python usando a biblioteca SciPy
A função Sigmoid em Python

Neste tutorial, examinaremos vários métodos para usar a função sigmóide em Python. A função sigmóide é uma função logística matemática. É comumente usado em estatística, processamento de sinais de áudio, bioquímica e função de ativação em neurônios artificiais. A fórmula para a função sigmóide é F(x) = 1/(1 + e^(-x)).

Implementar a função sigmóide em Python usando o módulo math

Podemos implementar nossa própria função sigmóide em Python usando o módulo math. Precisamos do método math.exp() do módulo math para implementar a função sigmóide.

O código de exemplo a seguir demonstra como usar a função sigmoid em Python.

import math


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

O problema com essa implementação é que ela não é numericamente estável e o estouro pode ocorrer.

O código de exemplo da implementação numericamente estável da função sigmóide em Python é fornecido abaixo.

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

Implementar a função sigmóide em Python usando o método numpy.exp()

Também podemos implementar a função sigmóide usando o método numpy.exp() em Python. Como as implementações da função sigmóide usando o método math.exp(), também podemos implementar a função sigmóide usando o método numpy.exp().

A vantagem do método numpy.exp() sobre math.exp() é que além de inteiro ou float, ele também pode manipular a entrada na forma de um array.

Abaixo está a implementação da função sigmóide regular usando o método numpy.exp() em Python.

import numpy as np


def sigmoid(x):

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

    return sig

Para a implementação numericamente estável da função sigmóide, primeiro precisamos verificar o valor de cada valor do array de entrada e, em seguida, passar o valor do sigmóide. Para isso, podemos usar o método np.where(), conforme mostrado no código de exemplo abaixo.

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

Implementar a função sigmoid em Python usando a biblioteca SciPy

Também podemos usar a versão SciPy da função sigmóide do Python, simplesmente importando a função sigmóide chamada expit na biblioteca SciPy.

O código de exemplo abaixo demonstra como usar a função sigmóide usando a biblioteca SciPy:

from scipy.special import expit

x = 0.25
sig = expit(x)

O método expit() é mais lento do que as implementações acima. A vantagem do método expit() é que ele pode manipular automaticamente os vários tipos de entradas, como lista e array, etc.

from scipy.special import expit

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

Resultado:

[0.5621765  0.62245933 0.64565631 0.66818777 0.59868766]