다변수 분류(Multinomial classification)


로지스틱 회귀 복습

  • 입력값 x에 대하여 계산하는 유닛 W가 weight를 가지고 계산해 z를 출력한다.

  • 결과 z를 sigmoid 함수를 통과시켜 0과 1사이의 값 y¯으로 변환한다.

    • y : 실제 데이터 값

    • y¯ : 학습을 통한 예측 값



로지스틱 회귀 분류가 하는 역할

  • 아래 그림과 같이 x1x2에 대하여 네모와 가위표를 분류한다는 것은 네모와 가위표를 분류하는 선을 찾아낸다는 것을 의미한다.


다변수 분류

  • 다변수라는 것은 3개 이상으로 분류할 수 있는 데이터가 있다는 것이다.
  • 예를 들어, 아래 그림과 같이 공부한 시간(x1)과 수업에 참석한 횟수(x2)에 따라 3종류의 학점(y)를 준다고 가정하고 그래프로 표시하면 오른쪽 그림과 같이 될 것이다.



  • 이진 분류(binary classification)만 가지고도 다변수 데이터를 분류할 수 있다.

    1. A이거나 A가 아니거나

    2. B이거나 B가 아니거나
    3. C이거나 C가 아니거나

  • 이진 분류만 가지고도 다변수 데이터를 분류가 가능


  • 각각의 분류기(classifier) AB, C를 실제로 구현할 때에는 다음과 같이 행렬로 구현을 한다.


  • 위의 3개의 분류기, 즉 3개의 독립된 벡터를 가지고 계산을 해야하는데, 이렇게 하면 계산과 구현이 복잡하다.
  • 그래서 weight 벡터를 하나로 합쳐서 계산하는 방법을 생각해볼 수 있다.

  • 다음과 같이 계산한 결과 y¯A=HA(x)y¯B=HB(x), y¯C=HC(x)는 우리가 예측한 결과가 된다.

    • 3개의 독립된 벡터를 한번의 계산으로 각각의 값을 구할 수 있다.

    • 3개의 가설값 HA(x)HB(x), HC(x)은 우리가 원하는 결과가 아니다.



    • 우리는 예측값이 0과 1 사이의 값을 가지며 예측값이 합이 1이 되는 확률분포가 되기를 원한다. 이런 결과를 나오게 하는 함수가 softmax 함수이다.


SOFTMAX 함수

  • n개의 값을 softmax 함수에 넣으면 우리가 원하는 2개의 조건을 만족하는 값을 만들어줘 확률로 볼 수 있게 해준다.
    1. 각각의 값 yi0yi1을 만족한다.

    2. iyi=1


  • 다음과 같이 예측값이 나올 확률을 구할 수가 있다.
    • Pr(A)=0.7
    • Pr(B)=0.2
    • Pr(C)=0.1
  • 그러나 실제로 우리는 위의 예처럼 3개의 값이 아니라 1개의 값을 예측하도록 해야 한다. 즉, 가장 높은 확률을 갖는 값 1개를 예측값으로 만들어야 하는데 이를 'ONE-HOT' 인코딩이라고 한다.
    • TensorFlow에서는 one-hot 인코딩을 위해 argmax() 함수를 지원한다.
    • 이제 예측하는 모델 Hypothesis는 완성이 되었다.


다변수 분류에서의 Cost 함수

  • 예측한 값과 실제의 값이 얼마나 차이가 나는지를 알 수 있는 cost 함수를 설계해야 한다.
    • cost 함수를 최소화하도록 해서 학습 알고리즘을 완성시킬 수 있다.
  • 다변수 분류에서는 Cost 함수로 CROSS-ENTROPY를 사용한다.
    • 아래 그림에서 L는 실제의 값인 y이고, S(y)는 우리가 예측한 값 y¯이다.
    • 이 때 yy¯의 차이(거리)는 D(y¯,y)는 다음 식(1)과 같은 CROSS-ENTROPY로 표현할 수 있다.

(1)D(y¯,y)=iyilogy¯i




  • CROSS-ENTROPY를 풀어쓰면 식 (2)와 같이 된다. 여기서 는 벡터 원소별 곱셈(element-wise product)을 의미한다.

D(y¯,y)=iyilogy¯i(2)=iyilogy¯i

  • 식 (2)에서 logy¯i는 아래 그림과 같이 0y¯i1일 때,  0logy¯i< 의 값을 가진다.

  • 각각의 경우에 대하여 CROSS-ENTROPY를 계산해보자.
    • 실제의 값이 y=A일 때
      • y¯=A인 경우에는 D(y¯,y)이 작아져야 한다.

[10]log[10]=[10]log[10]=[10][log1log0]=[10][0]=[00]=0+0=0

      • y¯=BA인 경우에는 D(y¯,y)이 커져야 한다.

[10]log[01]=[10]log[01]=[10][log0log1]=[10][0]=[0]=+0=


    • 실제의 값이 y=B일 때
      • y¯=B인 경우에는 D(y¯,y)이 작아져야 한다.

[01]log[01]=[01]log[01]=[01][log0log1]=[01][0]=[00]=0+0=0

      • y¯=AB인 경우에는 D(y¯,y)이 커져야 한다.

[01]log[10]=[01]log[10]=[01][log1log0]=[01][0]=[0]=0+=


Logistic Cost 함수와 Cross-ENTROPY

  • Logistic Cost 함수와 Cross-Entropy는 식 (3)과 같이 서로 같다.

C(H(x),y)=ylogH(x)(1y)log(1H(x))=iLilogSi(3)=D(S,L)

    • 이유는 같은 값을 예측할 때에는 0이고, 다른 값을 예측할 때에는 이기 때문이다.


  • 학습 데이터가 여러 개인 경우의 Cost(Loss) 함수는 식 (4)와 같다.

(4)L=1NiCost(Loss)(S(wxi+b),Li)


 

Cost(Loss) 함수의 최소값을 찾는 방법

  • 이전과 마찬가지로 경사하강법(Gradient Descent Algorithm)을 사용한다.
  • 그림과 같이 곡선의 경사면을 따라 가면서 최소값을 찾을 수 있다.
    • 어떤 점에서의 기울기는 미분계수를 구함으로써 계산할 수 있다.
    • 경사면을 따라 내려가는 간격은 α이며 미분계수는 식 (5)와 같다.

(5)STEP=αL(w1,w2)

+ Recent posts