
초기 퍼셉트론의 경우 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)

뉴런의 특성을 그대로 적용한 함수이다. 그러나 미분이 불가능하다는 큰 단점이 있어서 backpropagation 학습이 불가능합니다.
$$ y = \frac{1}{1+e^{-x}} $$

연속적인 함수이기 때문에 모든 구간에서 미분이 가능하게 되었습니다!
def sigmoid(x):
return 1 / ( 1 + np.exp(-x))
그러나 sigmoid의 미분값은

입력신호값이 크거나 작으면 기울기가 0에 가까워집니다. 이 현상을 saturated라고 합니다
이 현상은 backbropagation시 chain rule에 의해 vanishing gradient문제가 발생하게 됩니다
sigmoid는 zero-centered하지 않습니다.

