RL Researcher

Activation Function(sigmoid 함수) 본문

Machine-Learning/Algorithm

Activation Function(sigmoid 함수)

Lass_os 2020. 12. 24. 00:35

1. Sigmoid Function


sigmoid함수는로지스틱 회귀분석 또는 Neural Network의 binaray classification 마지막 레이어의 활성함수로 사용합니다.

$$\sigma (x) = \frac{1}{1+e^{-x}}$$

로지스틱 회귀분석이란?

- 데이터를 두개의 그룹으로 분류하는 가장 기본적인 방법입니다.

※ 회귀분석과의 차이는 사용자가 원하는 것이 실수인 예측값이기 때문에 종속변수의 범위가 실수이지만 로지스틱 회귀분석에서는 종속변수 y의 값이 0 또는 1을 가집니다. 따라서, 로지스틱 회귀분석을 사용할 때는 주어진 데이터를 분류할 때 0인지 1인지 예측하는 모델을 만들어야 합니다.

sigmoid 함수는 별로 인기가 없었다가, Gradient vanishing이라는 널리 알려진 문제를 극복한 활성화 함수라서 최근에 많이 사용합니다.

# module import
import numpy as np

# function definition
def sigmoid(x):
    return 1 / (1 + np.exp(-x))
x = np.array([-1.0,1.0,2.0])
sigmoid(x)

========================================================================

<output>
array([0.26894142, 0.73105858, 0.88079708])

이 함수가 ndarray형태도 처리할 수 있는 것은 numpy의 Broacast에 있습니다.

※ 브로드캐스트(Broadcast) : ndarray와 Scalar값의 연산을 ndarray의 원소 각각과 Scalar값의 연산으로 바꿔 수행하는 것

t = np.array([1.0,2.0,3.0])
print(1.0 + t)

========================================================================

<output>
array([2., 3., 4.])
print(1.0 / t)

========================================================================

<output>
array([1.        , 0.5       , 0.33333333])

위의 2개의 예제와 같이 Scalr값과 ndarray의 각 원소 사이에서 연산이 이뤄지고, 연산 결과는 ndarray로 출력되었습니다.

다음은 sigmoid함수를 그래프로 그려보겠습니다.

x = np.arange(-5.0,5.0,0.1)
y = sigmoid(x)

plt.plot(x,y)
plt.ylim(-0.1, 1.1)
plt.grid()
plt.show()

sigmoid function graph

Comments