퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다.
퍼셉트론의 '층'을 쌓아 기존에는 표현하지 못하던 XOR 게이트 같은 것을 구현할 수 있음
활성화 함수(activation function) 이란 입력 신호의 총합을 출력 신호로 변환하는 함수를 일반적으로 부르는 말이다.
임계값을 경계로 출력이 바뀌는 활성화 함수는 계단 함수(step function) 이라고 한다.
시그모이드 함수(sigmoid function) 는 신경망에서 자주 이용하는 활성화 함수다.
ReLU(Rectified Linear Unit) 함수는 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하면 0을 출력하는 함수다.
shape : 배열의 형상
ndim : 배열의 차원
dot: dot product 계산
dot product 계산을 위한 조건에 유의하라. (if matrix A is m*n, then matrix B should be n*p)
항등 함수(identity function) 은 입력을 그대로 출력한다.
분류에서 사용하는 소프트맥스 함수(softmax function) 의 식은 다음과 같다.
여기서 n은 출력층의 뉴런수, 는 그 중에서 k번째 출력임을 뜻한다. 소프트맥스의 출력은 모든 입력신호로부터 화살표를 받는다.
이는 지수 함수의 큰 값으로 인한 오버플로를 방지하기 위해 식을 개선 한 것이다. 가 임의의 정수라 했을 때, 지수 함수를 계산할 때에는 어떤 정수를 더하거나 빼도 결과는 바뀌지 않는다는 것이다. 일반적으로 에 대입되는 값은 입력 신호 중 최댓값을 이용하는 것이 일반적이다.
소프트맥스 함수의 출력값을 전부 합하면 1이 되므로, 소프트맥스 함수의 출력을 '확률'로 해석할 수 있다.
는 단조 증가 함수이므로, 소프트맥스 함수를 적용해도 각 원소의 대소 관계는 변하지 않는다. 신경망을 이용한 분류에서는 일반적으로 가장 큰 출력을 내는 뉴런에 해당하는 클래스로만 인식하므로, 소프트맥스 함수를 생략해도 된다.(자원 절약을 위해 현업에서도 생략된다.)
학습 단계에서는 소프트맥스 함수를 사용하지만, 학습한 모델을 통해 미지의 데이터에 대해 추론을 수행할 때에는 소프트맥스 함수를 생략한다.
'분류' 에서 출력층의 뉴런 수는 분류하고 싶은 클래스의 수로 정하는 것이 일반적이다.
MINIST 데이터셋은 손글씨 숫자 이미지 집합이다. 훈련 이미지는 60,000장, 시험 이미지가 10,000장 준비되어 있다.
아래 깃허브 저장소에 교재 예제가 담겨있다.
링크
추론 처리를 이미지 1개가 아닌 여러개를 묶음으로 처리할 수 있다. 이 경우, I/O를 통해 데이터를 읽는 횟수가 줄어들고, CPU, GPU로 순수 계산을 수행하는 비율이 높아지기 때문이다.