Cross-entropy/softmax 정리

cross-entropy cost function

 

Big picture in a nutshell (svm & cross-entropy loss) :

주의해서 봐야할 점은 weight matrix인데, 각 레이블에 대응하는 weight가 따로따로 있다.

(그러므로 feature 갯수 by label class 갯수인 테이블이 된다.)

이 말은 각 샘플마다 (x0, x1, x2) 자기에게 맞는 클래스가 있을텐데 이를 제외한 클래스를 향하는 weight 값을 사용해서 얻은 loss를 구하고 이 loss들의 average를 취해주는 것을 이 batch의 loss로 본다는 의미.

필요성 : 기존 quadratic cost function으로 learning 할 경우, sigmoid function의 양쪽 끝에서 이동할 경우 learning 이 매우 느리다는 단점을 보완하기 위함.

quadratic cost function은 다음과 같았다.

여기서 Z값이 1 이상이나 -1 이하가 될 경우 sigmoid function의 기울기가 매우 낮아짐. 이는 cost function 의 weight 나 bias 에 대한 편미분 값이 낮아짐을 의미하며, 즉 gradient 값이 낮아진다는 것을 의미한다.

그래서 quadratic cost function 말고 cross-entropy function을 이용한다.

 

위와 같은 상황일때, cost function을 다음과 같이 정의한다. (sigmoid 는 여전히 사용함.)

n : training data의 갯수

y : desired output of training data input

 

*** 여기서 잠깐 natural logarithm 을 살펴보고 넘어가자. 
exponential function의 inverse라고 보면 된다.

_미분/적분값: 

(sigmoid function 의 값이 언제나 0보다 크고 1보다 작기 때문에 문제될 일은 없겠다.)

 

 

 

그럼 다시 cross-entropy function으로 돌아와보자. 

이 식은 두가지 성질을 갖는다. (그로 인해 Cost function이 될 수 있음.)

 1. Non-negative 하다. : 0 < a < 1 이기 때문에 시그마 내부의 모든 항은 항상 음수일테고, 시그마 바깥의 음의 부호로 인해 수식 전체의 값은 언제나 0 이상이다.

 2. 모든 training data input들에 대해서 만약 a의 값이 y에 가깝다면, cross-entropy의 값은 0에 가까워질 것이다. 

     1) y = 0 일 경우, a가 0에 가까워지면 에 가까워지기 때문에 그 항도 0에 가까워짐.

     2) y = 1 일 경우, a가 1에 가까워지면 에 가까워지기 때문에 그 항 역시 0에 가까워짐.

  • 직관적 해석을 해보자면, natural logarithm 그래프의 앞부분 기울기 변화를 이용해서 cost function을 디자인해본 cost function 형태라고 할 수 있다.

 

Slow learning 문제를 어떻게 해결하는지 직관적으로는 알 수 있으나 수식으로 증명해보자. 

 

을 먼저 대입하고, chain rule을 사용해서 w에 관해서 미분해보자.

ln(x)의 미분 값이 1/x이므로  

 

   

여기서 sigmoid function을 미분하면 

이기 때문에 식이 매우 아름답게 정리된다! 

그리고 이 식에서 우리는 weight의 변화율이 에 의해 결정된다는 걸 알 수 있는데, 

이는 즉, 둘의 차이가 클수록 변화의 기울기도 커진다는 의미가 된다. 

이는 quadratic cost function에서 생겼던 slowdown을 피할 수 있게 해준다.

( 가 canceled out 되기 때문에 걱정할 필요가 없어진다.)

 

Bias에 대해서도 같은 방식으로 전개하면 된다.

 

지금까지는 하나의 뉴런에 대한 cross-entropy cost function을 알아보았다. 

여러 layer의 neuron 들에 대해서 일반화를 해보자.

 

_그렇다면 언제 quadratic 보다 cross-entropy를 사용하는 것이 더 나은가?

거의 모든 경우 낫다고 볼 수 있다. (neuron들이 sigmoid로 activation 할 경우)

보통 네트워크를 세팅할 때 초기 w, b를 랜덤한 값으로 정하기 때문이다. 

지금까지 살펴본 cross-entropy function은 y = 0, 1 이라는 가정하에 activation을 통해 classification을 하는 문제였다. 

하지만 regression problem에서도 (y가 0과 1사이인) cross-entropy function을 사용할 수 있다. 

그말은 즉, 모든 training input에 대해서 cross-entropy function에

 을 대입할 때

C가 최소가 된다는 뜻이다. 

 이 부분을 binary entropy라고 부른다. 

 

 

연습 문제 1 :

전에 살펴봤듯이,

multi-layer, multi-neuron 네트워크에서,

quadratic cost function에 대해서 output layer의 partial derivatives는 다음과 같다. 

여기서 이 부분 때문에 slowdown이 발생한다. 

cross-entropy cost function에 대해서는 하나의 training example에 대한 error는 다음과 같음을 보여라. :

이 수식을 사용해서 output layer에서의 partial derivative는 다음과 같음을 보여라. :

 부분이 없어졌기 때문에 slowdown이 발생하지 않는다. (여러 레이어와 여러 뉴런들로 이루어진 네트워크에서도)

biases에 대해서도 동일하게 적용된다. 

 

연습 문제 2 :

output layer의 뉴런이 linear neuron일 때,(sigmoid activation을 적용하지 않는 경우)

output은 단순히 , 즉 weighted input 그대로가 된다.

이 때, quadratic cost function을 사용할 경우, 

하나의 training example에 대한 output layer에서의 error가 다음과 같음을 보여라. : 

또한, 이 수식을 이용해서 마지막 레이어에서의 partial derivative들이 다음과 같음을 보여라. : 

 

이 같은 결과를 통해,  

아웃풋 뉴런들이 linear neuron이면

quadratic cost는 slowdown 문제를 야기하지 않는다는 것을 알 수 있다.

즉, 이 경우에는 quadratic cost function도 cost 함수로 사용해도 괜찮다.

 

 

Softmax layer 

softmax 레이어는 네트워크의 output 부분에 추가되는 새로운 형태의 레이어이다. 

우선, sigmoid layer와 같은 인풋을 받는다. (weighted input)

하지만 output을 얻기 위해 sigmoid를 적용하지 않고, softmax function 을 z에 적용한다.

이 공식이 무엇을 의미하는지, 또는 slow down 문제를 해결할 수 있는지는 명확치 않지만 우선 좀 더 알아보자.

예를 들어, 우리가 4개의 output으로 구성된 neural network를 만들었다고 하자. 

softmax로 activation을 구현하면, 

위 그림과 같이 최종 activation output이 상대적인 확률값을 갖게 되는 것이다.

output activation중 하나의 값을 올리면 상대적으로 모든 뉴런들에서의 activation 확률이 줄어들게 된다. 

이 식에서 a의 값은 언제나 양수이다. (exponetial 함수의 값은 언제나 양수이기 때문)

그리고 모든 output의 값을 합치면 1이 된다. (확률이기 때문)

Softmax layer 를 사용하는 방법은 매우 적절하다.

많은 경우, output activation를 네트워크의 classification output이 j가 될 확률이라고 해석하기 때문이다. 

반대로, output layer가 sigmoid layer라면,

activation들이 probability distribution(확률분포) 을 이루는 것이라고 가정할 수 없다. 

: 따라서 softmax 를 weighted input 들에 대한 rescale이라고도 볼 수 있는 것이다.  

 

 

연습 예제 : 

1. softmax의 단조로움 :

가  일 때 양수,   일 때 음수임을 보여라. 

를 증가시켜서 그에 해당하는 activation인 를 증가시키는 것이 

다른 모든 output의 activation을 감소시키는 일이 된다. 

이를 엄격하게 증명해라.

 

2. Softmax의 non-locality (비지역성) :

sigmoid의 좋은 점은, output이 해당하는 뉴런의 weighted input에 대한 함수의 결과값이라는 점이다. 

(어떤 특정 output activation은 ‘모든’ weighted input에 의해 결정됨.)

그런데 왜 이것이 softmax layer에는 해당하지 않는지 설명해라.

 

 

문제:

Inverting the softmax layer : 

Softmax output layer를 갖는 네트워크를 구성했다고 하자. 

그리고 최종 레이어의 activations 들을 알고 있다고 하자. 

각 뉴런에 해당하는 weighted input들이 다음과 같은 형태임을 보여라. :

(여기서 constant C는 j와 독립적(무관함))

 

Learning slowdown 문제 : 

softmax layer가 어떻게 learning slowdown 문제에 접근하게 하는지 아직 살펴보지 않았다. 

이를 이해하기 위해, 우리는 먼저 log-likelihood cost function 이라는 것을 정의해야 한다.

x: training example들

y: 그에 해당하는 output들

이 trainnig input에 관련된 log-likelihood cost 는 다음과 같다. 

예를 들어, MNIST 이미지를 가지고 training을 한다면, 

7을 쓴 이미지를 input으로 넣는다면, 

log-likelihood cost는 가 된다. 

이에 대한 직관을 갖기 위해 네트워크가 잘 작동하고 있다고 가정해보자. 

이 때 는 1에 매우 가까운 값일 것이고, 는 매우 작은 값이 될 것이다. (0에 가까운)

반대로, 네트워크가 별로 잘 작동하지 않는다면, 

는 더 작은 값일 것이고, 그만큼 는 더 커질 것이다. 

따라서 log-likelihood cost는 우리가 원하는 대로 작동한다. 

 

slowdown 문제는 어떨까?

 두가지의 성질이 learning slowdown의 핵심적인 부분이라는 것을 기억하자. 

미적분을 해서 두가지를 구해보면 다음과 같다. 

  

여기서 y는 (7에서만 1이고 나머지는 모두 0으로 되어 있는) 벡터이고, yj 는 그 벡터의 j번째 아이템이다.

(이전에 쓰던 y의 의미와 다르다.)

우리가 전에 구했던(cross-entropy cost function에서) partial derivative 식과 이 식을 비교해 보자. 

이 둘은 같은 식이다. (두번째 식에서는 training example들의 평균을 구하기는 하지만)

또한, 전과 마찬가지로, slowdown 문제를 해결한 수식이 되는 것이다.

 

사실, softmax ouput layer / log-likelihood cost function 조합은

sigmoid output layer / cross-entropy cost function 조합과 비슷한 것이라고 봐도 된다.

 

그렇다면 어느 조합을 사용할 것인가?

사실 많은 경우, 둘다 좋은 결과를 내어 준다. 

이번 챕터에서는 sigmoid / cross-entropy 조합을 사용하겠지만, 챕터 6에서는 softmax layer를 사용할 것이다. 

(몇몇 멋진 논문들에서 그것을 사용했기 때문이다.)

좀더 일반적인 수칙을 제시해보자면, 

softmax / log-likelihood 조합은 output activation을 확률분포로 해석하고 싶을 때 사용하면 좋다. 

반드시 그래야만 하는 건 아니지만, (class들이 나뉘어 있는) classification 문제 같은 경우에 사용하면 좋다는 것이다.

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s