인공지능/머신러닝

[머신러닝 - 이론] Softmax Regression (소프트맥스 회귀)

바보1 2022. 10. 18. 20:05

 

 


앞의 글을 읽으시면 이해에 도움이 됩니다.

 

2022.10.18 - [Computer Science/머신러닝] - [머신러닝 - 이론] Logistic Regression (로지스틱 회귀)

 

[머신러닝 - 이론] Logistic Regression (로지스틱 회귀)

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.05.07 - [Computer Science/머신러닝] - [머신러닝 - Python] 활성화 함수 - 시그모이드 함수 구현 (Activation Function - Sigmoid Function Implemetation) [머신러닝 - Python]

hi-guten-tag.tistory.com

2022.05.07 - [Computer Science/머신러닝] - [머신러닝 - 이론, Python] 활성화 함수 - 소프트맥스 함수 구현 (Activation Function - Softmax Function Implementation)

 

[머신러닝 - 이론, Python] 활성화 함수 - 소프트맥스 함수 구현 (Activation Function - Softmax Function Impleme

머신러닝에서 출력은 분류(Classfication)와 회귀(Regression)가 있습니다. 분류는 해당 데이터가 어느 클래스에 속하느냐의 문제이고, 회귀는 해당 데이터의 연속적인 수치를 예측하는 문제입니다. 회

hi-guten-tag.tistory.com

2022.05.09 - [Computer Science/머신러닝] - 

[머신러닝 - Python] 손실함수 - 오차제곱합, 교차엔트로피 합 구현 (Loss Function - Sum of Squares Error, Cross Entropy Error Implementation)

 

[머신러닝 - Python] 손실함수 - 오차제곱합, 교차엔트로피 합 구현 (Loss Function - Sum of Squares Error, Cro

import numpy as np def sum_squares_error(pred, target): # 오차제곱합 return 0.5 * np.sum((pred - target) ** 2) def cross_entropy(pred, target): # 교차 엔트로피 합 delta = 1e-7 # log 0을 계산할 수 없으므로, 아주 작은 값을 넣음 r

hi-guten-tag.tistory.com

 

 

 


1. Softmax Regression(소프트맥스 회귀)란?

 

 

Softmax Regression일반화된 로지스틱 회귀라고 볼 수 있습니다.

 

단순히 이진 분류를 위한 모델이 아닌, 여러 개의 다중 클래스를 분류하기 위한 다항 로지스틱 회귀(multinomial LR)입니다.

 

여러 개의 이진 분류기를 모아서 결합하는 형태가 아니라 바로 일반화한 형태입니다.


2. 확률 추정

 

 

개념은 매우 간단합니다.

 

샘플 x가 주어지면, 소프트맥스 회귀 모델이 각 클래스 k에 대한 점수 \(s_k(x)\)를 계산합니다.

 

해당 점수에 소프트맥스 함수를 적용하여 각 클래스의 확률을 추정합니다.

 

수식은 아래와 같습니다.

\(s_k(x) = (\theta^{(k)})^Tx\)

이때,
\(\theta^{(k)}\) = n x 1
\(x\) = n x 1
\(\theta\) = k x n

각 클래스는 자신만의 파라미터 벡터 \(\theta^{(k)}\)가 있습니다.

 

이 벡터들은 파라미터 행렬인 \(\theta\)에 저장됩니다.

 

위의 방식으로 각 클래스의 점수가 계산되면 소프트맥스 함수를 통과시켜서 클래스 k에 대한 확률 \(\hat{p}\)를 추정합니다.

 

소프트맥스 함수는 아래와 같습니다.

\(\hat{p}_k = \sigma(s(x)_k) = \frac{exp(s_k(x))}{\sum_{j = 1}^{n}exp(s_j(x))}\)
(정규화된 형태, 모든 확률의 합은 1이 된다)

따라서 해당 클래스에 대한 확률을 추정할 수 있습니다.

 

그렇기 때문에 소프트맥스 회귀 분류기의 예측은 아래와 같습니다.

\(\hat{p}_k = argmax_k \sigma(s(x))_k = argmax_k s_k(x)=argmax_k ((\theta^{(k)})^Tx)\)

(argmax는 함수를 최대화 하는 변수를 반환한다.)
(사실상 \(s_k(x)\)가 큰 점수가 시그모이드 함수도 최대로 반환하기 때문에, 통상적으로 시그모이드 함수를 적용하지 않고, 점수로만 계산한다.)

3. 모델 훈련 방법

 

 

이제 소프트맥스 회귀가 어떻게 확률을 추정하고, 결정하는지 알았으니 훈련 방법에 대해 알아보겠습니다.

 

모델이 타깃 클래스에 대해서는 높은 확률을, 그리고 다른 클래스에 대해서는 낮은 확률을 추정하도록 만드는 것이 목표입니다.

 

크로스 엔트로피 (cross entropy) 비용 함수는 추정된 클래스의 확률이 타깃 클래스에 얼마나 잘 맞는지 측정하는 용도로 종종 사용됩니다.

 

크로스 엔트로피 비용 함수는 다음과 같습니다.

\(J(\theta) = -\frac{1}{m}\sum_{i = 1}^{m}\sum_{k = 1}^{K}y^{(i)}_klog(\hat{p}^{(i)}_k)\)

(\(\hat{p}_k\)는 위의 시그모이드 함수로 추정된 확률이 들어간다.)
(\(y^{(i)}_k\)는 0 또는 1이다.)

해당 모델도 마찬가지로 경사 하강법을 이용하여 학습을 진행합니다.


4. Decision Boundaries (결정 경계)

 

 

좌측은 소프트맥스 회귀 모델, 우측은 로지스틱 회귀 모델

위의 그림을 보면 알 수 있듯이, 두 모델의 차이점은

다중 클래스 분류를 지원하느냐의 차이입니다.

 

좌측 그림에서 결정 경계가 만나는 지점은 모든 클래스가 33%의 확률을 가집니다.

 

두 모델의 공통점은

다중 특성을 지원하는 부분이 공통점이네요

 

 

감사합니다.

 

지적 환영합니다.