본문 바로가기
Python/deep learning

활성화 함수: sigmoid & ReLU 함수

by 철이88 2023. 3. 27.
반응형

앞서 계단 함수 포스팅에서 임계값을 기준으로 출력값이 바뀌는 함수를 활성화함수라고 배웠는데요. 이번에는 신경망 분야에서 이용할 수 있는 다른 활성화 함수, 시그모이드(sigmoid)와 ReLU (Rectified Linear Unit) 함수에 대해서 알아보겠습니다.

 

계단 함수에 관한 내용은 아래 링크를 참조하세요.

파이썬에서 계단 함수 만들기

 

파이썬에서 계단 함수 만들기

앞서 포스팅에서 퍼셉트론에 대해 알아봤는데요. 퍼셉트론은 입력 데이터를 받아서 계산 후 출력 값을 내보내는 구조를 가지며, 이때 입력 값과 가중치(weight)를 곱한 값의 합이 임계치(Threshold)

er5030000.tistory.com

 

1. 시그모이드 함수

시그모이드 함수는 수식으로 표현하면 

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

입니다.

 

이 식을 수식으로 만드는 것은 매우 간단한데요. 

아래 코드는 시그모이드 함수를 만들고 그래프로 그립니다.

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1/(1 + np.exp(-x))

x = np.arange(-8.0, 8.0, 0.01)
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)
plt.show()

위 코드를 실행하면 아래와 같은 그래프를 얻습니다.

시그모이드

 

2. ReLU 함수

ReLU함수는 입력 값이 0 이하이면 0을, 0을 넘으면 그 값 그대로를 출력하는 함수입니다.

즉, 식으로 표현하면

$f(x)$ =  $\left\{\begin{matrix} x \ (x > 0) \\ 0 \ (x \leq 0) \end{matrix}\right.$

입니다.

 

아래 코드는 ReLU 함수를 선언하고 그래프로 그립니다.

import numpy as np
import matplotlib.pyplot as plt

def relu(x):
    return np.maximum(0, x)

x = np.arange(-3.0, 3.0, 0.01)
y = relu(x)
plt.plot(x, y)
plt.ylim(-0.1, 3.1)
plt.show()

그림을 그려보면 아래와 같은 그래프를 얻습니다.

반응형

댓글