출력층 설계하기
- 신경망은 분류와 회귀 모두에 이용가능
- 기계학습 문제는 분류(classification)와 회귀(regression)로 나뉨
- 분류 : 데이터가 어떤 클래스에 속하느냐의 문제
ex) 사진 속 인물의 성별 분류 문제 - 회귀 : 입력 데이터에서 (연속적인) 수치를 예측하는 문제
ex) 사진 속 인물의 몸무게(57.4kg?) 를 예측하는 문제
* '회귀' 의 기원 : 19세기 후반ㅡ 영국의 프랜시스 골턴 경이 사람과 완두콩을 대상으로 크기를 측정했는데, 관찰 결과 키가 큰 부모의 자식은 부모보다 작고, 작은 부모의 자식은 부모보다 큰, 즉 평균으로 회귀하는 경향이 있음을 알았음. - 그 사이에는 선형 관계가 있어 부모의 키로부터 자식의 키를 예측할 수 있고, 그 예측 결괏값이 연속적인 수치였음 - 어떤 task 냐에 따라 출력층에서 사용하는 활성화 함수 달라짐
- 회귀 : 항등 함수
- 분류 : 소프트맥스 함수
회귀에서 일반적으로 사용하는 항등함수
- 항등 함수는 입력과 출력이 항상 같다는 뜻에서 항등
- 출력층에서 항등 함수를 사용하면 입력 신호가 그대로 출력 신호가 됨
분류에서 일반적으로 사용하는 소프트맥스(softmax) 함수
- n 은 출력층의 뉴런 수, yk는 그 중 k 번째 출력
- 소프트맥스 함수의 분자는 입력 신호 ak 의 지수 함수, 분모는 모든 입력 신호의 지수 함수의 합으로 구성됨
- 위 그림과 같이 소프트맥스의 출력은 모든 입력 신호로부터 화살표를 받음
- 위 식의 분모에서 알 수 있듯이, 출력층의 각 뉴런이 모든 입력 신호에서 영향을 받기 때문
소프트맥스 함수 구현
위의 논리 흐름을 softmax 함수로 정의
def softmax(a) :
exp_a = np.exp(a)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
Reference
- 밑바닥부터 시작하는 딥러닝
'Deep Learning' 카테고리의 다른 글
트랜스포머(Transformer) (2) - Attention 으로 seq2seq 문제 해결 (0) | 2022.06.03 |
---|---|
트랜스포머(Transformer) (1) - Seq2Seq 모델의 한계점 (0) | 2022.06.02 |
넘파이(numpy)로 신경망 구현하기 최종 코드 (0) | 2022.05.31 |
넘파이(numpy)로 신경망 구현하기 (0) | 2022.05.31 |
numpy를 이용한 다차원 배열 계산 - 신경망 효율적 구현 (0) | 2022.05.31 |
댓글