-
2. 신경망(4)AI 모델(딥러닝 기초)/2. 신경망 2023. 1. 4. 13:38728x90
이번 시간에는 출력층 설계법을 배워보자.
기계학습 문제는 크게 분류와 회귀로 나뉘게 된다.
분류(classification) : 사진 속 인물의 성별 분류 등 데이터가 어느 클래스에 소속하느냐의 문제
회귀(regression) : 입력 데이터에서 연속적인 수치를 예측하는 문제
분류단계에서 사용하는 Softmax 함수를 알아보자.
※ Softmax Function
Softmax 는 위와 같은 식으로 정의되고 분모 처럼 출력층의 각 뉴런이 모든 입력신호에서 영향을 받는다.
import numpy as np def softmax(a): exp_a = np.exp(a) sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y
■ Softmax의 overflow 문제점
- 지수 함수 사용시 너무 큰 값을 출력시키는 것 때문에 오버플로 문제점이 발생한다.
개선된 소프트맥스 함수를 구현해보자.
최종적으로 위와 같은 식이 완성된다.
이를 통해 소프트맥스 함수에 어떤 정수를 더하거나 빼도 아무런 문제가 생기지 않는 것을 확인 할 수 있다. 그래서 오버플로를 막을 목적으로 입력 신호 중 최댓값을 이용하는 방식을 택한다.
import numpy as np 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
이렇게 Softmax Function을 개선시켜 볼 수 있다.
■ Softmax 함수의 특징
- 출력은 0~1 사이의 실수를 가진다.
- 출력의 총합은 1이다.
- 확률적 해석이 가능하다.(통계적으로 문제를 대응할 수 있다.)
- 신경망을 이용한 분류에서는 가장 큰 출력을 내는 뉴런에 해당하는 클래스로만 인식한다.
- 출력이 가장 큰 뉴런의 위치는 달라지지 않는다.
- 신경망 분류시 출력층의 소프트맥스 함수는 일반적으로 생략한다.(지수 함수 계산에 드는 자원 낭비를 줄이기 위해서)
출력층의 뉴런 수를 정할 때는 분류하고 싶은 클래스 수로 정하는 것이 일반적이다. 예를 들어, 10개의 클래스로 분류하고 싶다면 뉴런 수를 10개로 설정한다.
728x90