(* DeepLearning from scratch2 서적을 학습한 후 정리한 내용임 )
일반적으로 학습단계의 특정 시점에서 신경망의 성능을 나타내는 척도로 손실(loss)을 사용한다.
손실은 학습시 주어진 정답 데이터와 신경망이 예측한 결과를 비교하여 예측이 얼마나 나쁜가를 산출한 단일값이다.
다중 클래스 분류 신경망에서는 손실을 구하는 함수로 교차 엔트로피 오차(Cross Entropy Error)를 이용한다
앞 절에서 이야기 된 TwoLayerNet 모델에 SoftMax계층(SoftMax함수처리계층)과 Cross EntropyError계층(SoftMax처리결과와 정답데이터를 이용해 Cross Entropy Error를 계산하는 계층)을 추가한다.
추가된 계층을 포함한 구조도는 아래와 같다.
X는 입력 데이터, t는 정답 레이블, L은 손실을 의미한다.
소프트맥스 함수 공식은 다음과 같다.
위 식은 출력이 총 n개일 때, k번째 출력 Sk를 구하는 식이다. 즉, Sk는 k번째 클래스에 해당하는 소프트맥스 함수의 출력이다.
소프트맥스 함수 결과는 0.0이상 1.0 이하의 값을 가지는 실수이며 모든 출력들 n개의 S값을 합하면 1.0이 된다. 따라서 소프트맥스 함수 결과값을 확률로 해석할 수 있다.
손실값을 얻기 위해서는 소프트맥스 함수의 결과값을 입력으로 하여 Cross Entropy Error 함수 계산을 해야 한다.
공식은 아래와 같다.
여기서 tk는 k번째 클래스에 해당하는 정답레이블이다. log는 e를 밑으로 하는 로그이다.
또한 정답레이블은 t = [0, 0, 1]과 같은 원핫 벡터로 표기한다.
위의 Cross Entropy Error 공식을 입력 데이터가 N개 인 경우로 확장시키면 아래의 공식으로 구성할 수 있다.
여기서 tnk는 n번째 입력데이터에 대한 k번째 클래스 정답 원핫벡터를 의미한다
ynk는 n번째 입력데이터를 이용해 신경망 학습한 결과로 SoftMax 함수계산과정을 거쳐 나온 결과의 k번째 결과이다
N개의 입력데이터를 이용한 Cross Entropy Error 공식은 결국 각각의 입력 데이터에 대한 손실함수 결과를 N개만큼 합산하여 N으로 나눠 평균낸 것이다.
이 과정을 파이썬으로 구현할 때 Softmax with Loss 계층 하나로 구현한다.
'인공지능 > DeepLearning from Scratch 2' 카테고리의 다른 글
DeepLearning from scratch2 - 1.3.3 연쇄법칙 (딥러닝 학습) (0) | 2019.07.11 |
---|---|
DeepLearning from scratch2 - 1.3.2 미분과 기울기 (딥러닝 학습) (0) | 2019.07.11 |
DeepLearning from scratch2 - 1.2.2 계층으로 클래스화 및 순전파 구현 (딥러닝 학습) (0) | 2019.07.07 |
DeepLearning from scratch2 - 1.2.1 신경망 추론 (딥러닝 학습) (0) | 2019.07.04 |
DeepLearning from scratch2 - 1.1 수학과 파이썬 복습 (딥러닝 학습) (0) | 2019.07.01 |