Softmax Regression

  • 용어 정의

    y-hat : sigmod 함수의 결과 값  
    
  • Multinomial classification
    이전 시간에는 예측할 결과가 단지 0, 1, 즉 바이너리 였다.
    하지만 이제는 예측할 결과가 A, B, C 또는 그 이상의 개수가 될수 있는 Multinomial에 대해 알아볼 것이다.
    이전에 학습한 Binary Classification을 이용할 것이다.
    만일 실제 결과가 3가지 A, B, C가 주어졌다면 아래와 같이 할 수 있다.
    1. C인지 아닌지 여부를 예측하는 Binary classification 모델을 구한다.
    2. B인지 아닌지 여부를 예측하는 Binary classification 모델을 구한다.
    3. A인지 아닌지 여부를 예측하는 Binary classification 모델을 구한다.

    이 세개의 각기 다른 Binary Classification을 이용하여 구현할 수 있고 아래와 같이 표현할 수 있다.

    - x -> A의 Binary 모델 -> sigmode -> Y-hat
    - x -> B의 Binary 모델 -> sigmode -> Y-hat
    - x -> C의 Binary 모델 -> sigmode -> Y-hat
    

    이 세개의 독립된 matrix에 대해 계산을 하면된다. 다만 이럴 경우 계산이 복잡해지므로 아래와 같이 하나의 행렬로 표현한다.

          [wA1, wA2, wA3]     [x1]
          [wB1, wB2, wB3]  .  [x2]  = 값
          [wC1, wC2, wC3]     [x3]
    

    위의 행렬 계산의 결과 에서는 아직 바이너리 결과가 나오지 않았기에 sigmoid를 적용해주어야 한다.

  • soft max 함수
    sigmoid 함수는 결과가 N개가 나오므로 이 대신에 새로운 함수를 사용할 것이다.
    softmax 함수는 결과값들이 전체 합계가 1이되며 값은 0~1사이에 존재한다.
    즉 확률로 취급할 수 있다는 것이다.
    따라서 나온 결과값중 가 장 큰 값에 대해서만 1(True)로 취급하고 나머지는 모두 0(False)로 취급한 결과를 얻게 된다.
    이는 one-hot encoding을 이용하여 이중 가장 큰 값만 1로 처리하고 나머지는 모두 0으로 처리가 가능해지는 것이다.
    softmax 통해 나온 결과들에 대해 한가지 결과를 고를 수 있다.
    즉 multi에 대한 예측 값을 구할 수 있다.

Cost function

  • Cross entropy
    Cost function은 cross entropy를 이용할 것이다.
    Cross entropy는 다음과 같이 정의될 수 있다.
sigma(L * -logY-hat)
L : 실제의 결과값을 의미하는 레이블(정답, 이전의 Y)  
S(y) : 우리가 예측한 값. softmax를 통해 얻은 y-hat  

L, S(y) 이 둘 사이의 차이를 D(S,L)로 표현하고 이것을 cross-entropy 함수로 구한다.

  -log[0]
      [1]  의 그래프틑 x축이 0에 가까울떄 무한대가 되고 1일때 0이 된다.

L과 -logY-hat에 대해 element wise 곱을 해준 후 모두 더하면 cost를 구할 수 있다.

    -logY-hat 은 값이 맞으면 0이고 아니면 무한대이므로 값이 틀릴수록 코스트가 무한정 커진다.

이제 가장 작은 cost를 위해 역시 gradient descent alg를 사용하여 최소 코스트를 구하면 된다.

element-wise연산은 같은 크기의 matrix에 대해 같은 위치의 요소끼리 연산을 해주는 것을 말한다.

References

  • http://pythonkim.tistory.com/20
  • https://datascienceschool.net/view-notebook/3f44cfdda2874080a9aa6b034c71d5ec/

realjays

반박시 당신말이 맞습니다.