교차 엔트로피 손실 설명


35

분류를 위해 NN을 작성한다고 가정하십시오. 마지막 레이어는 softmax 활성화가있는 밀도가 높은 레이어입니다. 분류 할 5 가지 수업이 있습니다. 하나의 훈련 예를 들어 가정의가 true label있습니다 [1 0 0 0 0]예측 될 때 [0.1 0.5 0.1 0.1 0.2]. 이 예제의 교차 엔트로피 손실을 어떻게 계산합니까?

답변:


50

크로스 엔트로피 화학식 두 분포 취하는 , 실제 유통, 이산 변수 위에 정의 된 추정 분포, X 및 주어진다(엑스)(엑스)엑스

H(,)=엑스(엑스)로그((엑스))

신경망의 경우 계산은 다음과 무관합니다.

  • 어떤 종류의 레이어가 사용 되었습니까?

  • 어떤 종류의 활성화가 사용 되었는가-많은 활성화는 출력이 확률로 해석 할 수 없기 때문에 계산과 호환되지 않지만 (즉, 출력이 음수, 1보다 크거나 1에 합산되지 않음). Softmax는 잘 동작하는 확률 분포 함수를 보장하기 때문에 종종 다중 클래스 분류에 사용됩니다.

신경망의 경우 일반적으로 와이 가 기본 진리 벡터이고 와이^ (또는 마지막 레이어 출력에서 ​​직접 가져온 다른 값) 형식으로 작성된 방정식을 볼 수 있습니다. 추정치 단일 예제의 경우 다음과 같습니다.

=와이로그(와이^)

여기서 은 벡터 내적입니다.

당신의 예제 진실 와이 는 첫 번째 값에 대한 모든 확률을 제공하고 다른 값은 0이므로, 우리는 그것들을 무시할 수 있으며 추정치 \ mathbf {\ hat {y}} 에서 일치하는 용어를 사용하십시오와이^

=(1×영형(0.1)+0×로그(0.5)+...)

=영형(0.1)2.303

의견에서 중요한 점

즉, 예측이 또는 이든 상관없이 손실은 동일 할 것입니다 .[0.1,0.5,0.1,0.1,0.2][0.1,0.6,0.1,0.1,0.1]

예, 이것은 멀티 클래스 로그 로스의 주요 기능이며 올바른 클래스의 확률 만 보상 / 불이익합니다. 이 값은 남은 확률이 잘못된 클래스간에 어떻게 분리되는지와 무관합니다.

이 방정식은 모든 예에서 평균적으로 비용 함수로 볼 수 있습니다. 설명에서 항상 엄격하게 준수하는 것은 아니지만 일반적으로 손실 함수는 하위 수준이며 단일 인스턴스 또는 구성 요소가 오류 값을 결정하는 방법을 설명 하고 비용 함수는 높은 수준을 유지하며 전체 시스템이 최적화를 위해 평가되는 방법을 설명합니다. 크기 의 데이터 세트에 대한 멀티 클래스 로그 손실을 기반으로하는 비용 함수 는 다음과 같습니다.

J=1(나는=1와이나는로그(와이^나는))

많은 구현에서는 약간의 최적화가 가능하기 때문에 기본 진리 값을 단일 핫 클래스로 단일 핫 인코딩해야합니다. 그러나 원칙적으로 그렇지 않은 경우 교차 엔트로피 손실을 계산하고 최적화 할 수 있습니다.


1
괜찮아. 즉, 예측이 [0.1 0.5 0.1 0.1 0.2] 또는 [0.1 0.6 0.1 0.1 0.1]이든 상관없이 손실은 동일합니다.
Nain

@Nain : 예에 맞습니다. 교차 엔트로피 손실은 잘못된 클래스 확률 값에 따라 달라지지 않습니다.
Neil Slater

8

Neil의 대답은 맞습니다. 그러나 손실 은 잘못된 클래스 간의 분포에 의존하지 않지만 (올바른 클래스와 나머지 클래스 간의 분포에만 의존하지만) 이 손실 함수 의 그라디언트 는 방법에 따라 잘못된 클래스에 다르게 영향을 미친다는 점을 지적하는 것이 중요하다고 생각 합니다 그들이 틀렸다. 따라서 기계 학습에 크로스 엔트를 사용하면 [0.1 0.5 0.1 0.1 0.2] 및 [0.1 0.6 0.1 0.1 0.1]에 대해 가중치가 다르게 변경됩니다. 올바른 클래스의 점수가 다른 모든 클래스의 점수에 의해 정규화되어 확률로 변환되기 때문입니다.


3
적절한 예를 들어 자세히 설명해 주시겠습니까?
Nain

@Lucas Adams, 예를 들어 주시겠습니까?
koryakinp

EACH 로지트 z (또는 매개 변수 w 자체) weach EACH y_i (softmax output)의 미분은 모든 y_i에 의존합니다. medium.com/@aerinykim/…
Aaron

2

손실의 그라디언트가 어떻게 작동하는지 봅시다 ... 우리는 다음과 같이 손실 함수로 교차 엔트로피를 갖습니다.

H(,)=나는=1(엑스나는)로그((엑스나는))=((엑스1)로그((엑스1))++(엑스)로그((엑스))

여기에서 간다. 우리는 어떤 관한 미분을 알고 싶다 : 엑스나는 다른 모든 용어는 미분으로 인해 취소되기 때문입니다. 이 방정식을 한 단계 더 나아가서

엑스나는H(,)=엑스나는(엑스나는)로그((엑스나는)).
엑스나는H(,)=(엑스나는)1(엑스나는)(엑스나는)엑스나는.

이것으로부터 우리는 여전히 실제 클래스 ( 대한 값이 있음)에만 페널티를 가하고 있음을 알 수 있습니다 . 그렇지 않으면 우리는 0의 기울기를가집니다.(엑스나는)

소프트웨어 패키지가 예측 값 0을 처리하는 방법이 궁금하지만, 실제 값은 0보다 큽니다.이 경우 0으로 나누기 때문입니다.


wrt x_i가 아닌 파생 변수를 매개 변수로 사용하는 것이 좋습니다.
Aaron

1

정보 이론에서 엔트로피를 이해하는 것으로 시작해 봅시다. "aaaaaaaa"라는 문자열을 전달한다고 가정합니다. 8 * "a"로 쉽게 할 수 있습니다. 이제 다른 문자열 "jteikfqa"를 사용하십시오. 이 문자열을 전달하는 압축 된 방법이 있습니까? 존재하지 않습니다. 우리는 두 번째 문자열의 엔트로피가 그것을 전달하기 위해서는 더 많은 "비트"정보가 필요하다고 말할 수 있습니다.

영형2()로그2(1/8)

나는=1818로그2(18)=

"교차"엔트로피에서는 이름에서 알 수 있듯이 두 가지 확률 분포의 차이를 설명하는 데 필요한 비트 수에 중점을 둡니다. 가장 좋은 시나리오는 두 분포가 동일하며,이 경우 최소 엔트로피와 같이 최소량의 비트가 필요합니다. 수학적으로

H(와이,와이^)=나는와이나는로그이자형(와이^나는)

와이^와이

결론 : 평신도 용어로, 교차 엔트로피는 거리를 설명하는 데 필요한 정보의 양 (비트)으로 두 확률 분포 사이의 거리로 생각할 수 있습니다. 확률 벡터가 서로 가까워 질수록 감소하는 손실을 정의하는 깔끔한 방법입니다.


0

나는 루카스에 동의하지 않는다. 위의 값은 이미 확률입니다. 원래 게시물은 값이 softmax 활성화되었음을 나타냅니다.

오류는 "핫"클래스에서만 다시 전파되며 다른 클래스 내의 확률이 서로 이동하면 확률 Q (i)는 변경되지 않습니다.


2
루카스는 맞아 OP에 의해 설명 된 아키텍처를 사용하면 softmax 함수가 모두를 연결하기 때문에 모든 로짓 ( 그라데이션 이 아닌)의 그래디언트 가 0이 아닙니다. 따라서 "hot"클래스에서 [gradient of the] 오류는 모든 출력 뉴런으로 전파됩니다.
Neil Slater

Neil and Lucas의 경우 +1
Aaron

-1

문제는 확률이 다른 값을 주어진 값으로 통합하는 '복잡한'함수에서 나온다는 것입니다. 결과는 서로 연결되어 있으므로 실제 결과와 관련하여 도출되지 않고 각 결과마다 마지막 활성화 함수 (softmax)의 모든 입력에 의해 도출됩니다.

나는와이나는

gombru.github.io/2018/05/23/cross_entropy_loss의 다른 깔끔한 설명 .

마지막 활성화 레이어로 간단한 시그 모이 드를 사용하면 승인 된 답변이 나오지만 softmax를 사용하면 다른 답변을 나타냅니다.


1
Stack Exchange에 오신 것을 환영합니다. 그러나 당신이 쓴 것은 엔트로피 손실 계산에 대한 OP의 질문에 대한 답변이 아닌 것 같습니다.
user12075
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.