더북(TheBook)

크로스 엔트로피 오차

크로스 엔트로피 오차(CEE)는 분류(classification) 문제에서 원-핫 인코딩(one-hot encoding)4했을 때만 사용할 수 있는 오차 계산법입니다.

일반적으로 분류 문제에서는 데이터의 출력을 0과 1로 구분하기 위해 시그모이드 함수를 사용하는데, 시그모이드 함수에 포함된 자연 상수 e 때문에 평균 제곱 오차를 적용하면 매끄럽지 못한 그래프(울퉁불퉁한 그래프)가 출력됩니다. 따라서 크로스 엔트로피 손실 함수를 사용하는데, 이 손실 함수를 적용할 경우 경사 하강법 과정에서 학습이 지역 최소점에서 멈출 수 있습니다. 이것을 방지하고자 자연 상수 e에 반대되는 자연 로그를 모델의 출력 값에 취합니다.

다음은 크로스 엔트로피를 구하는 수식입니다.

파이토치에서는 다음과 같이 사용합니다.

loss = nn.CrossEntropyLoss()
input = torch.randn(5, 6, requires_grad=True) ------ torch.randn은 평균이 0이고 표준편차가 1인 가우시안 정규분포를 이용하여 숫자를 생성
target = torch.empty(3, dtype=torch.long).random_(5) ------ torch.empty는 dtype torch.float32의 랜덤한 값으로 채워진 텐서를 반환
output = loss(input, target)
output.backward()

딥러닝과 관련 있는 기본적인 용어들을 익혔으니, 이제 딥러닝을 배워 봅시다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.