Untitled


1. step function

초기 퍼셉트론의 경우 step function을 활성화 함수로 사용하였는데, 어떠한 값보다 크면 1을, 아니면 0을 내보내는 함수입니다.

def step_function(x) :
	if x > 0: return 1
	else: return 0

def step_function(x):
	y = x>0
	return y.astype(np.int)

Untitled

뉴런의 특성을 그대로 적용한 함수이다. 그러나 미분이 불가능하다는 큰 단점이 있어서 backpropagation 학습이 불가능합니다.

2. Sigmoid

$$ y = \frac{1}{1+e^{-x}} $$

Untitled

연속적인 함수이기 때문에 모든 구간에서 미분이 가능하게 되었습니다!

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

sigmoid의 문제 1

그러나 sigmoid의 미분값은

Untitled

입력신호값이 크거나 작으면 기울기가 0에 가까워집니다. 이 현상을 saturated라고 합니다

이 현상은 backbropagation시 chain rule에 의해 vanishing gradient문제가 발생하게 됩니다

sigmoid의 문제 2

sigmoid는 zero-centered하지 않습니다.

Untitled

Untitled