2 minute read

1. Where is sigmoid?

image

이렇게 각각의 classifier를 가지면 비효율적인 구조가 나오게 됩니다.

image

위처럼 행렬을 입력 데이터(x)로 주게 되면 이제 결과값은 벡터로 나오게 됩니다.

  • 첫 번째 값이 A에 해당하는 어떤 값
  • 두 번째 값이 B에 해당하는 어떤 값
  • 세 번째 값이 C에 해당하는 어떤 값

값의 크기로만 보았을 때 2.0에 해당하는 a가 가장 확률이 높긴 하겠지만, 이것은 우리가 원하는 결과는 아니었습니다. 우리가 원했던 것은 값이 0~1사이로 나오는 것을 원했습니다.

image

다시 한 번 정리를 해보면 우리가 원하는 것은 입력값을 통해 벡터의 결과값을 냅니다. 각 결과에 해당하는 값들을 0 ~ 1 사이의 값으로 바꾸고 그 값들을 다 더하면 1이 되는 형태로 표현할 수 있도록 하는 것을 원합니다. 이를 위해 우리는 softmax를 사용합니다.

2. softmax

image

이것을 보고 우리는 softmax라고 합니다. n개의 값을 softmax에 넣게 되면 우리가 원했던 결과로 만들어주게 됩니다.

  1. 각각의 값이 0~1 사이의 값이 된다.
  2. 전체의 sum이 1이 된다. 이 이야기는 각각을 확률로 볼 수 있게 된다.

image

각각의 값을 확률로 볼 수 있습니다. 여기서 그 중에 하나의 값만 남기고 싶을 때는 one-hot encoding을 사용합니다.

  • 텐서플로에는 argmax라는 것이 있습니다.

3. softmax cosf function

image

우리가 예측한 값과 실제의 값이 얼마나 차이가 나는 지를 나타내는 cost function을 설계해야합니다. 어떻게 쓰는지 확인하고 왜 잘동작하는지를 살펴보겠습니다.

여기서는 cross-entrophy를 사용합니다. L이 실제 값인 Lable(y)이고, 예측값은 \(s(y) = \bar{y} \)이라고 합니다.

이 2개 사이의 차이가 얼마나 되는지를 cross-entropy 함수를 통해서 구하게 됩니다. log를 취한 값을 elementwise곱을 합니다. 왜 이 함수가 동작이 잘 되는지를 살펴봅시다.

image

  • 우선 L과 log가 붙어있는 것을 확인할 수 있습니다. 이것을 괄호로 묶어서 따로 떼어내줄 수 있습니다.
  • 그리고 각각의 엘리먼트끼리 곱하는 elementwise곱을 하니까, 시그마 바깥 쪽에 있는 -를 log쪽에 -으로 옮길 수 있습니다.
  • -log의 모양은 필기에 적혀져 있습니다.
  • \(\bar{y_i} \)의 값은 softmax를 통해 언제나 값이 0 ~ 1 사이이므로 우리가 살펴볼 값의 범위는 0~1만 확인하면 됩니다.
  • 이 함수는 \(\bar{y_i} \)의 값이 0이면 값이 무한대로 커지고, 값이 1이면 값이 0에 가까워집니다.

image

간단하게 A, B 두 가지 레이블이 있는 상황을 살펴봅시다.

  • L은 Label (실제 정답)
    • 0은 A, 1은 B에 해당.
  • Y의 hat은 예측 값을 의미합니다.

B가 정답인 경우에서 cost function의 역할을 잘 수행하는지 살펴봅시다.

image

A가 정답인 경우를 살펴보면 cost function이 잘 동작하는 것을 확인할 수 있습니다.

4. Logistic cost vs cross entropy

image

로지스틱에서 cost function을 다룰 때 조금 복잡한 형태로 다루었습니다. 그런데 이 수식이 사실상 cross-entropy였습니다.

image

왜 수식이 같은지는 숙제로 남겨보도록 한답니다.

image

여러 개의 training set이 있을 때는 전체의 distance 또는 차이를 구한 다음에 그것을 합해서 전체를 개수로 나누고 평균을 내는 것이다. 이러면 전체의 Loss가 나오고 또 cost function을 정의할 수 있습니다.

마지막으로 cost를 최소화하는 값을 찾아야 하는데, 우리 같은 경우는 w벡터를 찾으면 됩니다. 이번에도 우리는 경사 하강법을 사용하게 될 것이고 이번에도 cost fucntion의 모양이 매끈합니다(convex하다라는 듯).