Multi-Class Classification

‍이세현·2024년 10월 17일
0

Binary Classification

각각의 데이터 샘플을 0 혹은 1로 분류하면 되는 문제

Multi-Class Classification

  • 하나의 출력에서 0 또는 1로 분류하던 이진 분류 문제와 달리 함수의 출력이 N개 이상이어야 한다.
    • class 개수 만큼의 출력층 노드를 설정해야 한다.
  • 각 출력층 노드들의 출력값 합이 1이 되도록 변환한다.
    • Softmax 함수를 사용해서 각 값을 확률로 생각한다.
      yk=exp(ak)exp(ai)\mathbf{y}_k=\frac{\exp(a_k)}{\sum\exp(a_i)}이므로 [210][0.70.20.1]\begin{bmatrix} 2 \\ 1 \\ 0 \end{bmatrix} \rightarrow \begin{bmatrix} 0.7 \\ 0.2 \\ 0.1 \end{bmatrix}
    • Output 벡터가 y^=[0.70.20.1]\hat{\mathbf{y}}= \begin{bmatrix} 0.7 \\ 0.2 \\ 0.1 \end{bmatrix}라면 0번 class일 확률이 0.7이다.
  • 확률이 제일 높은 class를 해당 데이터에 대한 모델의 예측 결과로 취급한다.
    • 위의 예시에서는 class 0일 확률이 가장 높으므로 모델의 출력은 class 0이다.

손실함수

  • 모델을 학습시키기 위해서는 예측값과 정답의 차이를 수치적으로 표현하는 것이 필요하다.

    • 손실함수가 있어야 학습이 가능하다.
  • Multi-Class의 경우 Binary Classification의 손실함수 적용이 불가능하다.

    • 이를 해결하게 위해 정답 레이블을 벡터로 표현하여 One-hot encoding 해야 한다.
    ClassOne-hot Encoding
    0[1, 0, 0, 0]
    1[0, 1, 0, 0]
    2[0, 0, 1, 0]
    3[0, 0, 0, 1]
  1. 오차제곱합(Sum of Squared Error)
    E=12(yktk)2E=\frac{1}{2}\sum(\mathbf{y}_k-t_k)^2
  2. 교차 엔트로피(Cross Entropy)
    E=tklogykE=-\sum t_k\log \mathbf{y}_k
    • 두 확률분포 tkt_kyk\mathbf{y}_k 사이의 무질서도
    • Label t=1t=1인 경우에만 손실을 계산하므로 E=logyc,(tc=1)E=-\log y_c, (t_c=1)와 같다.

활성화 함수

  1. Sigmoid
    σ(x)=11+ex\sigma(x)=\frac{1}{1+e^{-x}}
    • σ(x)=σ(x)(1σ(x))\sigma'(x)=\sigma(x)(1-\sigma(x))이므로 미분 과정 없이 σ\sigma 그대로 사용 가능하다.
    • σ\sigma'의 최댓값은 0.25로, 값 대부분은 0에 가깝고 입력층으로 갈수록 값이 미세해진다.
  2. ReLU
    f(x)=x+=max(0,x)={0,if x<0x,if x0f(x)=x^+=\max(0,x)=\begin{cases} 0, & \text{if } x < 0 \\ x, & \text{if } x \geq 0 \end{cases}
  • f(x)={0,if x<01,if x0f'(x)=\begin{cases} 0, & \text{if } x < 0 \\ 1, & \text{if } x \geq 0 \end{cases}
  • Gradient 값이 1로, 0으로 수렴하지 않고 살아있다.
    • Sigmoid 함수의 한계를 해결한다.
  • 출력층에서는 확률 벡터로 만들기 위해 Softmax 함수를 사용하고 은닉층에서는 다음 층으로 전달하기 위해 Sigmoid 또는 ReLU 함수를 사용한다.
profile
Hi, there 👋

0개의 댓글

관련 채용 정보