Python의 시그 모이 드 함수
-
math
모듈을 사용하여 Python에서 Sigmoid 함수 구현 -
numpy.exp()
메서드를 사용하여 Python에서 Sigmoid 함수 구현 -
SciPy
라이브러리를 사용하여 Python에서 Sigmoid 함수 구현
이 튜토리얼에서는 파이썬에서 시그 모이 드 함수를 사용하는 다양한 방법을 살펴볼 것입니다. 시그 모이 드 함수는 수학적 로지스틱 함수입니다. 통계, 오디오 신호 처리, 생화학 및 인공 뉴런의 활성화 기능에 일반적으로 사용됩니다. 시그 모이 드 함수의 공식은F(x) = 1/(1 + e^(-x))
입니다.
math
모듈을 사용하여 Python에서 Sigmoid 함수 구현
math
모듈을 사용하여 Python에서 자체 시그 모이 드 함수를 구현할 수 있습니다. 시그 모이 드 함수를 구현하려면math
모듈의math.exp()
메소드가 필요합니다.
아래 예제 코드는 Python에서 시그 모이 드 함수를 사용하는 방법을 보여줍니다.
import math
def sigmoid(x):
sig = 1 / (1 + math.exp(-x))
return sig
이 구현의 문제점은 수치 적으로 안정적이지 않고 오버플로가 발생할 수 있다는 것입니다.
파이썬에서 시그 모이 드 함수를 수치 적으로 안정적으로 구현 한 예제 코드는 다음과 같습니다.
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
numpy.exp()
메서드를 사용하여 Python에서 Sigmoid 함수 구현
파이썬에서numpy.exp()
메소드를 사용하여 시그 모이 드 함수를 구현할 수도 있습니다. math.exp()
메소드를 사용하는 시그 모이 드 함수 구현과 마찬가지로numpy.exp()
메소드를 사용하여 시그 모이 드 함수를 구현할 수도 있습니다.
math.exp()
에 비해numpy.exp()
메소드의 장점은 정수 또는 부동 소수점과는 별도로 배열 형태의 입력도 처리 할 수 있다는 것입니다.
다음은 Python에서numpy.exp()
메소드를 사용하는 일반 시그 모이 드 함수의 구현입니다.
import numpy as np
def sigmoid(x):
z = np.exp(-x)
sig = 1 / (1 + z)
return sig
시그 모이 드 함수의 수치 적으로 안정적인 구현을 위해 먼저 입력 배열의 각 값 값을 확인한 다음 시그 모이 드 값을 전달해야합니다. 이를 위해 아래 예제 코드와 같이np.where()
메서드를 사용할 수 있습니다.
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
SciPy
라이브러리를 사용하여 Python에서 Sigmoid 함수 구현
또한SciPy
라이브러리에서expit
이라는 sigmoid 함수를 가져 와서 Python 시그 모이 드 함수의SciPy
버전을 사용할 수도 있습니다.
아래 예제 코드는SciPy
라이브러리를 사용하여 시그 모이 드 함수를 사용하는 방법을 보여줍니다.
from scipy.special import expit
x = 0.25
sig = expit(x)
expit()
메소드는 위의 구현보다 느립니다. expit()
메소드의 장점은 목록, 배열 등과 같은 다양한 유형의 입력을 자동으로 처리 할 수 있다는 것입니다.
from scipy.special import expit
sig = expit(np.array([0.25, 0.5, 0.6, 0.7, 0.4]))
print(sig)
출력:
[0.5621765 0.62245933 0.64565631 0.66818777 0.59868766]