기본 콘텐츠로 건너뛰기

라벨이 cross_entropy loss인 게시물 표시

[matplotlib]quiver()함수

[ML]softmax와 분류(Classification)

softmax와 분류(Classification) 일반적인 분류 문제는 클래스 간의 순서는 의미를 담지 않습니다. 단지 분류만을 목적으로 하는 경우가 많습니다. 그러나 분석을 위해서는 이러한 데이터를 수치로 변환하여야 합니다. one-hot coding 은 이러한 목적에 부합합니다. 즉, 다음 표와 같이 샘플이 대응되는 클래스(카테고리)에 1 그렇지 않으면 0을 할당합니다. 예를들어 데이터의 라벨이 cat, dog, chicken의 세 카테고리로 구성되어 있다면 원-핫인코딩은 다음과 같이 나타낼 수 있습니다. cat dog chicken cat 1 0 0 dog 0 1 0 chicken 0 0 1 그러므로 라벨 y의 집합은 다음과 같이 나타낼 수 있습니다. y ∈ {(1,0,0), (0,1,0), (0,0,1)} 다음 그림은 regression과 classification의 신경망을 나타낸 것입니다. 위 그림은 4개의 feature를 가진 데이터에서 회귀(regression)는 한개의 출력, 분류(classfication)의 경우 3개의 출력을 가지는 경우입니다. 회귀의 경우 4개의 가중치를 가지지만 분류의 경우 각 feature에서 각 출력 카테고리에 대한 가중치를 가지므로 총 4 × 3 =12개의 가중치를 가집니다. 이를 수식으로 나타내면 다음과 같습니다. \begin{align} \hat{y}_1&=x_1w_{11}+x_2w_{12}+x_3w_{13}+x_4w_{14}+b_1\\\hat{y}_2&=x_1w_{21}+x_2w_{22}+x_3w_{23}+x_4w_{24}+b_2\\\hat{y}_3&=x_1w_{31}+x_2w_{32}+x_3w_{33}+x_4w_{34}+b_3\\ \tag{식 1}\begin{bmatrix}\hat{y}_1\\\hat{y}_2\\\hat{y}_3\end{bmatrix}&=...

[ML]비용함수: cross_entropy loss

비용함수: cross_entropy loss 한개의 특성(feture)과 3개의 클래스를 가진 라벨에 매핑시키는 모델을 생성합니다. 즉, 데이터는 다음의 구조를 가집니다. x y 1.5 0 $\vdots$ $\vdots$ 클래스 0, 1, 2를 각각 A, B, C로 나타내면 각각에 부여되는 가중치를 $w_A, w_B, w_C$로 표시하여 식 1과 같이 x에 대한 예측치를 계산할 수 있습니다. \begin{align}\tag{식 1}w_A \cdot x &= \hat{y}_A\\w_B \cdot x &= \hat{y}_B\\w_c \cdot x &= \hat{y}_C\end{align} 간단한 예로 다음의 경우에 대해서만 예측치를 계산해 봅니다. x=1.5, y=0 import numpy as np np.random.seed(3) W=np.random.rand(3) W array([0.5507979 , 0.70814782, 0.29090474]) x=1.5 y=0 haty=W*x haty array([0.82619685, 1.06222173, 0.43635711]) 위 haty는 x가 label의 각 클래스 A, B, C로 대응하기 위한 선형변환의 결과입니다. 위 값들이 [0, 1] 구간내에 포함하도록 정규화 할 수 있습니다. 이것은 특성이 A, B, C에 매핑될 확률로 간주할 수 있습니다. \begin{align}S(\hat{y_i})&=P_i\\\tag{식 2}&=\frac{e^{\hat{y_i}}}{\sum^k_{j=1}e^{\hat{y_i}}}\\ k:& \text{클래스 갯수} \end{align} 위 계산결과의 총합은 1이 됩니다. haty2=np.exp(haty) s1=haty2/np.sum(haty2) s1 array([0.33974648, 0.43018897, 0.23006455]) s1.sum().round(3) 1.0 위 결과 중 ...