Deep Learning

시그모이드 함수 (sigmoid function) 란? (계단 함수와의 비교)

햇농nongnong 2022. 5. 31. 09:41

 

시그모이드 함수


 

  • 시그모이드 함수 (sigmoid function) = 신경망에서 자주 이용하는 활성화 함수
  • e  자연 상수 2.7182 ...
  • 얼핏 복잡해 보이지만 단순한 '함수' 일 뿐 - 입력을 주면 출력을 돌려주는 변환기
    ex) h(1.0) = 0.731, h(2.0) = 0.880  -- 입력을 주면 특정 출력 값 출력
  • 신경망에서는 활성화 함수로 시그모이드 함수를 이용하여 신호를 변환하고, 그 변환된 신호를 다음 뉴런에 전달함
  • 퍼셉트론과 신경망의 주된 차이는 이 활성화 함수 뿐
    - 뉴런이 여러 층으로 이어지는 구조와 신호를 전달하는 방법은 퍼셉트론과 같음

 

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

 

  • 인수 x 가 넘파이 배열이어도 올바른 결과가 잘 나옴

  • 함수 sigmoid 가 넘파이 배열도 위와 같이 잘 처리하는 이유는 넘파이의 '브로드캐스트' 기능 때문
  • 브로드캐스트 기능 : 넘파이 배열과 스칼라 값의 연산을 넘파이 배열의 원소 각각과 스칼라 값의 연산으로 바꿔 수행하는 것

 

** 시그모이드 함수 그래프 그리기

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

 

출력된 그래프 :

 

  • '시그모이드(sigmoid)' = 'S자 모양' - 계단 함수처럼 그 모양을 따서 이름을 지은 것

 

시그모이드 함수와 계단 함수 비교


 

차이점

  • 가장 먼저 느껴지는 차이는 '매끄러움' 의 차이
  • 시그모이드 함수는 부드러운 곡선, 입력에 따라 출력이 연속적으로 변화
  • 계단 함수는 0을 경계로 출력이 갑자기 바뀌어버림
  • 시그모이드 함수의 이 '매끈함'  신경망 학습에서 아주 중요한 역할
  • 또, 계단 함수는 0과 1 중 하나의 값만 출력하지만, 시그모이드 함수는 실수(0.731, 0.880, ... )를 출력
  • 즉, 퍼셉트론에서는 뉴런 사이에 0 혹은 1만 흘렀다면, 신경망에서는 연속적인 실수가 흐름

 

공통점

  • 둘 다 입력이 작을 때의 출력은 0에 가깝고(혹은 0), 입력이 커지면 출력이 1에 가까워짐(혹은 1)
  • 즉, 계단 함수와 시그모이드 함수 모두 입력이 중요하면 큰 값을 출력하고, 입력이 중요하지 않으면 작은 값을 출력
  • 입력이 아무리 작거나 커도 출력은 0에서 1 사이

 

 

 

 

 

 Reference

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