Lec-06 1, 2 Softmax Classification

박준영·2025년 11월 11일

딥러닝 공부

목록 보기
9/23
  • Multinomial classification: 여러 개의 클래스가 있을 때 예측하는 분류기법.

remind — Logistic regression

  • H(X)=XWH(X)=XW
  • 시작은 기본적인 Linear Regression이다.
  • 그러나 Linear는 그 결과값이 어떤 특정한 실수값이 되기 때문에 Binary Classification에는 적합하지 않다.
  • Z=H(X)Z=H(X), g(Z)=11+eZg(Z)=\dfrac{1}{1+e^{-Z}}
  • 따라서 H(X)H(X)ZZ로 보고, H(X)H(X)의 결과값을 압축하여 010\sim1 사이의 값을 가질 수 있도록 만든다.
  • g(Z)g(Z)를 시그모이드 혹은 로지스틱이라고 부른다.
  • 현재까지의 이미지는 다음과 같다
    X(W를 가지고 계산)Z(Sigmoid)Yˉ{0,1}X\rightarrow(\text{W를 가지고 계산})\rightarrow Z\rightarrow(\text{Sigmoid})\rightarrow \bar{Y}\in\{0,1\}
    • YY: real data, Yˉ\bar{Y}: prediction =H(X)=H(X)
  • 이 로지스틱 회귀는 입력변수 x1,x2x_1,x_2의 값을 가지고 있는데, 이를 통해 데이터를 2개의 분류로 나누는 것을 목적으로 한다.
  • 즉, 로지스틱 회귀의 학습이란, 두 데이터를 나누는 선을 찾아내는 것이다.
  • 그리고 이 아이디어를 그대로 Multinomial classification에 적용할 수 있다.

Multinomial classification

데이터 예제

x1(hours)x2(attendance)y(grade)
105A
95A
32B
24B
111C

One-vs-Rest 아이디어

  • 설명
  • 설명
  1. 하나의 직선을 찾는다(가령 C).
  2. 이 직선은 C이거나 C가 아니거나 2개만 구분한다.
  3. 다른 A, B에 대해서도 직선을 찾는다((A/B)이거나 아니거나).
  4. 이 3개의 직선을 각각 로지스틱 회귀하여 독립된 classifier를 얻는다(=가설 H(X))(=\text{가설 }H(X)).
  5. 이 classifier를 실제로 구현할 때에는 행렬로 구현한다. 즉, 3개의 행렬곱을 얻을 수 있다
    [w1  w2  w3][x1x2x3]=w1x1+w2x2+w3x3[\,w_1\ \ w_2\ \ w_3\,]\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=w_1x_1+w_2x_2+w_3x_3.
  6. 그러나 3개의 행렬은 너무 복잡하므로, 이 세 행렬을 하나로 합칠 수 있다
    [w11w12w13w21w22w23w31w32w33][x1x2x3]=[w11x1+w12x2+w13x3w21x1+w22x2+w23x3w31x1+w32x2+w33x3]=[YˉAYˉBYˉC]\begin{bmatrix}w_{11}&w_{12}&w_{13}\\w_{21}&w_{22}&w_{23}\\w_{31}&w_{32}&w_{33}\end{bmatrix} \begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix} = \begin{bmatrix} w_{11}x_1+w_{12}x_2+w_{13}x_3\\ w_{21}x_1+w_{22}x_2+w_{23}x_3\\ w_{31}x_1+w_{32}x_2+w_{33}x_3 \end{bmatrix} = \begin{bmatrix} \bar{Y}_{A}\\ \bar{Y}_{B}\\ \bar{Y}_{C} \end{bmatrix}

Where is sigmoid?

  • 이전처럼 3개의 선형 출력을 하나로 합치면 결과는 실수 벡터(점수)로 나온다.
  • 각 출력을 확률로 바꾸고 싶다. 각 성분이 010\sim1 범위이고 합이 11이 되게.
  • 해결: 소프트맥스(softmax).

Softmax

  • 선형 점수 벡터 z=(z1,,zK)z=(z_1,\dots,z_K)를 확률로 변환한다.
  • 정의: S(z)i=ezij=1KezjS(z)_i=\dfrac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}} for i=1,,Ki=1,\dots,K.
  • 성질: 0S(z)i10\le S(z)_i\le1이고 iS(z)i=1\sum_i S(z)_i=1.
  • 예시 변환(개념):
    • scores [2.0, 1.0, 0.1]  softmax  probabilities [0.7, 0.2, 0.1]\text{scores}\ [\,2.0,\ 1.0,\ 0.1\,]\ \Rightarrow\ \text{softmax}\ \Rightarrow\ \text{probabilities }[\,0.7,\ 0.2,\ 0.1\,].
  • 이후 예측 벡터를 원-핫으로 표현: 가장 큰 확률 위치만 11, 나머지 00.

Cross-Entropy

  • S(y) : Softmax로 나온 예측값 = Yˉ\bar{Y}
  • L : Label. 실제값 = Y

S(y)=[0.70.20.1],L=[1.00.00.0],D(S,L)=iLilogSi=log0.7S(y)=\begin{bmatrix}0.7\\0.2\\0.1\end{bmatrix},\quad L=\begin{bmatrix}1.0\\0.0\\0.0\end{bmatrix},\quad D(S,L)=-\sum_i L_i\log S_i=-\log 0.7

  • 수식
    • D(S,L)=iLilog(Si)=iLilog(yˉi)=iLi(log(yˉi))D(S, L) = -\sum_i L_i \log(S_i) = -\sum_i L_i \log(\bar{y}_i) = \sum_i L_i \cdot \big(-\log(\bar{y}_i)\big)
    • 여기서 log(yˉi)-\log(\bar{y}_i)는 로지스틱에서 쓰인 동일한 로그 항이다.
      log(0+)=+-\log(0^{+})=+\infty, log(1)=0-\log(1)=0.

예제

  • L=[01]L=\begin{bmatrix}0\\1\end{bmatrix} (즉, 정답이 B인 레이블)

  • Yˉ1=[01]\,\bar{Y}_1=\begin{bmatrix}0\\1\end{bmatrix}\Rightarrow OK
    [01]  (log[01]) = [01]  [+0] = [00]  최종 코스트 값:0\begin{bmatrix}0\\1\end{bmatrix}\ \odot\ \big(-\log\begin{bmatrix}0\\1\end{bmatrix}\big) \ =\ \begin{bmatrix}0\\1\end{bmatrix}\ \odot\ \begin{bmatrix}+\infty\\0\end{bmatrix} \ =\ \begin{bmatrix}0\\0\end{bmatrix} \ \Rightarrow\ \text{최종 코스트 값}: 0

  • Yˉ2=[10]\,\bar{Y}_2=\begin{bmatrix}1\\0\end{bmatrix}\Rightarrow X
    [01]  (log[10]) = [01]  [0+] = [0+]  최종 코스트 값:+\begin{bmatrix}0\\1\end{bmatrix}\ \odot\ \big(-\log\begin{bmatrix}1\\0\end{bmatrix}\big) \ =\ \begin{bmatrix}0\\1\end{bmatrix}\ \odot\ \begin{bmatrix}0\\+\infty\end{bmatrix} \ =\ \begin{bmatrix}0\\+\infty\end{bmatrix} \ \Rightarrow\ \text{최종 코스트 값}: +\infty

Logistic cost vs cross entropy

  • C(H(x),y)=[(y)log(H(x))+(1y)log(1H(x))]C(H(x), y) = -\big[(y)\log(H(x)) + (1-y)\log(1-H(x))\big]
  • D(S,L)=iLilog(Si)D(S, L) = -\sum_i L_i \log(S_i)
  • 이때 SS는 예측값, LL은 정답 레이블.
  • 따라서 S=[H(x), 1H(x)]S = [\,H(x),\ 1-H(x)\,], L=[y, 1y]L = [\,y,\ 1-y\,]로 표현할 수 있다.
  • 이를 D(S,L)D(S, L)에 대입하면 [ylogH(x)+(1y)log(1H(x))]-\big[y\log H(x) + (1-y)\log(1-H(x))\big]가 되어 두 식은 동일하다.

출처: 모두를 위한 딥러닝 강좌 2
https://www.youtube.com/watch?v=7eldOrjQVi0&list=PLQ28Nx3M4Jrguyuwg4xe9d9t2XE639e5C

0개의 댓글