시그모이드 함수
- 시그모이드 함수 (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
- 밑바닥부터 시작하는 딥러닝
'Deep Learning' 카테고리의 다른 글
ReLU 함수 - 신경망에서 자주 사용하는 활성화 함수 (0) | 2022.05.31 |
---|---|
비선형 함수를 사용하는 이유 (신경망, 선형함수 비교) (0) | 2022.05.31 |
계단 함수 (step function) 란? (0) | 2022.05.29 |
신경망과 활성화 함수 (activation function) (0) | 2022.05.29 |
XOR 게이트 (배타적 논리합, 논리회로, 파이썬으로 구현해보기) (0) | 2022.05.29 |
댓글