여러 개의 퍼셉트론이 연결된 구조로 구성되어 있는 것을 신경망이라고 함
입력 신호의 총합을 출력 신호로 변환하는 함수
a = 입력 총합
h() = 활성화 함수
y = 출력값
x의 값이 커질수록 1보다 아주 작은값만큼의 큰 값이 분모의 값이 됨. 즉, 전체 값이 1에 가까워짐 / 반대의 경우도 마찬가지로 전체 값이 0에 가까워짐
계단 함수와 시그모이드 함수의 중요한 공통점은 비선형 함수라는 점
신경망에서는 활성화 함수로 반드시 비선형 함수를 사용해야 함 > 선형 함수를 이용하면 신경망의 층을 깊게 하는 의미가 없어짐
입력이 0을 넘으면 입력을 그대로 출력, 0 이하이면 0을 출력
1 : 편향을 뜻하는 뉴런
h() : 활성화 함수
sigma() : 활성화 함수 → 책에서 h()는 시그모이드 sigma()는 항등함수(입력값 그대로 출력)이라 둘이 다르게 표현
신경망은 분류와 회귀 두가지 모두 사용 가능
주로 위 두가지 사용
def softmax(a):
exp_a = np.exp(a)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
소프트맥스 함수 구현 시 주의점
지수함수를 사용하는 소프트맥스 함수는 '오버플로'의 문제가 발생해 수치가 '불안정'해질 수 있는 문제점이 있다.
def softmax(a):
c = np.max(a)
exp_a = np.exp(a-c)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
소프트맥스 함수의 출력은 0~1 사이이며 출력의 총합은 1이다.
문제에 맞춘 적절한 뉴런 수 설정 필요
분류에서는 분류하고 싶은 클래스 수로 하는 것이 일반적임