출력층 설계
기계학습은 분류와 회귀로 나뉜다.
분류는 데이터가 어느 클래스에 속하느냐는 문제이고 (주로 소프트맥스 함수 사용)
회귀는 입력 데이터에서 연속적인 수치를 예측하는 문제이다 (주로 항등 함수 사용).
항등 함수
입력 그대로 출력, 입력과 출력이 항상 같기 때문에 항등 함수
그림으로 표현하면
소프트맥스 함수
분류에서 사용하며 n은 출력층의 뉴런 수, yk는 그 중 k번째 출력을 뜻한다. 소프트맥스 함수의 분자는 입력 신호 ak의 지수함수, 분모는 모든 입력 신호의 지수 함수의 합으로 구성된다.
소프트맥스 함수를 그림으로 표현하면
이런식으로 나오게 되는데 소프트맥스 함수 수식의 분모에서 보면 출력층의 각 뉴런이 모든 입력 신호에서 영향을 받기 때문이다.
소프트맥스 함수는 구현시 주의해야 할 점이 있다.
지수함수는 컴퓨터에서 계산 시, 오버플로우를 발생시키기가 매우 쉽기 때문에 개선이 필요하다.
소프트맥스 함수의 분모와 분자에 각각 C를 곱해준 뒤, C를 지수로 바꿔 logC로 만들어 e의 지수로 넣는다. 그리고 logC는 C'로 치환시킨다. 결과적으로 소프트맥스 함수 내의 지수들을 계산할 때 같은 숫자를 더하거나 빼는 것으로는 결과가 바뀌지 않는다는 것을 뜻한다. 보통 오버플로우를 막기 위해 입력 신호중 최댓값을 빼서 계산한다.
소프트맥스 함수의 분모 때문에 출력은 항상 0에서 1.0 사이의 실수이다. 또한 소프트맥스 함수의 출력의 총합은 1이 된다. 즉 출력을 '확률'로 해석 할 수 있게 된다.
하지만 소프트맥스 함수를 사용해도 y=exp(x)가 단조 증가 함수이기 때문에 각 원소들의 대소관계에는 영향을 주지 않는다.
배치 처리
하나로 묶은 입력 데이터를 배치 라고 한다.
컴퓨터 계산을 할때 입력 데이터를 묶어서 처리하게 되면 1장당 처리시간을 대폭 줄여주기 때문에 큰 이점을 얻게 된다. 수치 계산 라이브러리는 대부분이 큰 배열을 효율적으로 처리할 수 있도록 최적화 돼있으며, 병목현상이 줄어 결과를 얻는데 까지 걸리는 시간을 줄여줄 수 있다.
'Deep Learning' 카테고리의 다른 글
신경망1 (0) | 2020.07.03 |
---|---|
퍼셉트론 (0) | 2020.07.02 |
댓글