본문 바로가기

TIL/밑바닥부터 시작하는 딥러닝

활성화 함수

1. 시그모이드 함수


1. 1. 시그모이드 함수란?

$$
h(x) = \frac{1}{1 + exp(-x)}
$$

  • exp(-x)는 $e^{-x}$를 뜻하며, e는 자연상수이다.
  • 신경망에서는 활성화 함수로 시그모이드 함수를 이용하여 신호를 변환하고, 그 변환된 신호를 다음 뉴런에 전달한다.

1. 2. 시그모이드 함수 구현

import numpy as np

def sigmoid(x):
    return 1 / 1 + np.exp(-x))
  • 여기서 np.exp(-x)가 exp(-x) 수식에 해당한다.
  • 이 함수는 x가 넘파이 배열이여도 제대로 처리할 수 있다.
x = np.array([-1.0, 1.0, 2.0])
print(sigmoid(x))
# 출력 : [0.26894142 0.73105858 0.88079708]
  • 이 함수가 넘파이 배열도 처리할 수 있는 이유는 넘파이의 브로드캐스트 기능에 있다.
  • 브로드캐스트 기능이란 넘파이 배열과 스칼라값의 연산을 넘파이 배열의 원소 각각과 스칼라값의 연산으로 바꿔 수행하는 것
t = np.array([1.0, 2.0, 3.0])
print(1.0 + t)
print(1.0 / t)
# 출력
# [2. 3. 4.]
# [1.         0.5        0.33333333]

1. 3. 시그모이드 함수 그래프

import numpy as np
import matplotlib.pylab as plt

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

X = np.arange(-5.0, 5.0, 0.1)
Y = sigmoid(X)
plt.plot(X, Y)
plt.ylim(-0.1, 1.1)
plt.show()

2. ReLu 함수


2.1. ReLu 함수란?

$$
\text{ReLU}(x) = \max(0, x)
$$

  • 수식에서 보듯 ReLu 함수는 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0이하면 0을 출력하는 간단한 함수이다.

2.2. ReLu 함수 구현

import numpy as np

def relu(x):
    return np.maximum(0, x)
  • 구현 또한 간단하다. np.maximum으로 0과 x 중에 큰 값을 반환하는 함수이다.

2.3. ReLu 함수 그래프

'TIL > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글

학습 알고리즘  (1) 2024.06.18
경사법  (1) 2024.06.16
손실 함수  (1) 2024.06.15
소프트맥스 함수  (0) 2024.06.15
Numpy 다차원 배열의 계산  (0) 2024.06.14