본문 바로가기
ML engineer/DL(Deep Learing)

[DL] 소프트맥스 회귀

by YTom 2023. 5. 7.

목차

 

1. 원-핫 인코딩(One-Hot Encoding)

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

3. 비용 함수(Cost function)

4. 소프트맥스 회귀와 딥러닝

 

1. 원-핫 인코딩(One-Hot Encoding)

(1) 원-핫 인코딩(One-Hot Encoding)이란?

  선택해야 하는 선택지의 개수만큼 차원을 가지면서, 각 선택지의 인덱스에 해당하는 원소에 1, 나머지는 0의 값을 가지도록 하는 방법이다.

 

예를 들어, 4개의 클래스가 있을 때 원-핫 인코딩 방식은 아래와 같다.

  • 클래스 0: [1, 0, 0, 0]
  • 클래스 1: [0, 1, 0, 0]
  • 클래스 2: [0, 0, 1, 0]
  • 클래스 3: [0, 0, 0, 1]

선택지는 4개 이므로 벡터들은 모두 4차원의 벡터가 되었다. 이런 방법을 One-Hot encoding 이라 하고 이 과정에서 벡터로 표현된 것들을 원-핫 벡터(One-hot vector) 라고 한다. 

참고

원-핫 인코딩은 다중 분류 에서도 사용되지만, 자연어 처리에서도 많이 사용된다. 컴퓨터는 문자보다는 숫자를 잘 처리 하기 때문에 문자를 숫자로 바꾸는 기법들이 다양하게 존재하는데 이 중 하나이다. 원-핫 인코딩의 자연어 처리에 관한 부분은 추후 자세하게 다룰 예정이다.

(2) 원-핫 벡터의 무작위성

 다중 클래스 분류문제에서 꼭 원-핫 벡터로 표현해야만 풀 수 있는 것은 아니다. 하지만 대부분의 다중 클래스 분류 문제는 각 클래스 간의 관계가 균등하다는 점에서 원-핫 벡터는 이러한 점을 표현할 수 있는 적절한 방법이다. 다중 클래스 분류에서는 원-핫 벡터로 표현하는 방법 말고 정수로 레이블링 하는 방법도 존재한다. 각각의 장단점에 대해 알아보자

 

원-핫 인코딩 벡터 사용:

 

  • 장점

i) 명확한 클래스 구분 : 원-핫 인코딩은 클래스 간의 구분을 명확하게 하여, 모델이 각 클래스를 독립적으로 인식하도록 한다. 이로 인해 클래스 간의 상관 관계나 순서 정보가 모델에 영향을 미치지 않습니다.

ii) 다중 레이블 분류 : 한 데이터 포인트가 여러 클래스에 속할 수 있는 경우, 원-핫 인코딩 방식을 사용하면 여러 클래스에 대한 정보를 동시에 표현할 수 있다. 예시로는 영화 장르의 분류(액션, 공상과학 등이 한 영화에 속할 수 있음), 이미지의 태깅(여러 이미지가 함께 있는 경우) 에 사용 될 수 있다.

iii) 호환성 : 다양한 머신러닝, 딥러닝 라이브러리와 호환되어 적용하기 쉽다.

 

  • 단점

i) 메모리 사용량이 늘어난다

ii) 대부분의 요소가 0 이므로 계산 효율의 비 효율이 발생할 수 있다. 

 

정수 레이블링 사용:

 

  • 장점

i) 메모리와 계산의 효율성

ii) 각 클래스가 순서의 의미를 갖고 있어 회귀를 통해서 분류 문제를 풀 수 있는 경우

 

  • 단점

i) 클래스 간의 상관 관계: 정수 레이블링은 순서 정보를 내포하고 있기 때문에 클래스 간의 상관 관계가 모델에 영향을 미칠 수 있다. 주로 손실함수를 사용할 때 발생하므로 적절한 손실함수를 선택하여 해결 할 수 있다.

ii) 다중레이블의 경우는 지원 불가

 

따라서 각 장단점을 고려하여 상황에 맞게 선택하면 된다.

 

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

 

(1) 다중 클래스 분류(Multi-class Classification)

입력 데이트를 세개 이상의 클래스로 분류하는 문제 이다. 대표적인 다중분류 예시로서 사이킷런에서 데이터를 제공하는 붓꽃 품종 문제가 있다. 붓꽃 품종 문제는 받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이라는 4개의 특성(feature)로부터 setosa, versicolor, virginica라는 3개의 붓꽃 품종 중 어떤 품종인지를 예측하는 문제로 전형적인 다중 클래스 분류 문제이다.

 

소프트맥스 회귀(Softmax Regression)은 각 클래스에 대한 확률을 추정하고, 가장 높은 확률을 갖는 클래스를 선택하여 분류 작업을 수행한다. 이때, 소프트맥스 함수(Softmax function)을 사용하면 각 클래스에 대한 확률 분포를 얻을 수 있다. 이때 확률의 합은 1이 되어야 한다. 이를 통해 문제를 효과적으로 해결할 수 있다. 

 

Hypothesis(가설)

$$H(z) = softmax(z) , z = Wx+B$$

 

(2) 소프트맥스 함수(Softmax function)

 

소프트맥스 함수는 분류해야하는 정답지(클래스)의 총 개수를 k 라고 할 때, k 차원의 벡터를 입력받아 각 클래스에 대한 확률을 추정한다. 

k차원의 벡터에서 i 번째 원소를 $z_{i}$, i번째 클래스가 정답일 확률을 $p_{i}$ 라 할때 소프트맥스 함수의 정의는 다음과 같다.

 

$$p_{i}  ={ {e^{z_{i}}} \over {\sum_{j=1}^{k}} e^{z_{j}} } for i = 1,2, ...k$$

 

위 함수를 붓꽃 품종 문제에 적용하면 다음과 같다.

각 원소들은 클래스에 대해서 확률 분포를 나타내며 각 분포의 합은 1이 된다.

 하나의 샘플데이터는 4개의 독립변수 $x$를 가진다. (4개의 특성(feature)를 지님) 그런데 클래스의 개수는 3개 이므로 softmax 에 들어가게 되는 z 값은 3차원의 벡터여야 한다. 1) 따라서 $z = Wx + B$ 과정에서 3차원의 벡터로 만들어 지는 과정이 있어야 하고, 2) 만들어진 3개 원소의 z 벡터가 softmax 함수에 들어간다. 3) 함수의 결과값으로 확률 분포를 얻을 수 있게 되고, 4) 가장 높은 확률의 원소를 1 나머지를 0으로 하여 원-핫 벡터화 하여 결과를 예측하게 된다.

 

이 과정을 그림으로 나타내면 다음과 같다.

그렇다면 $z = Wx + B$ 과정에서 각 벡터의 행렬연산에 대해 살펴보자.

출처) Pytorch로 시작하는 딥러닝

X(featrue)를 3차원 벡터로 만들기 위해서는 각 W 와 B의 벡터의 형태는 다음과 같아야 한다. 

c 는 특성의 개수 , f 는 클래스의 개수 이다.

 

3. 비용함수(Cost function)

 

소프트 맥스 회귀에서는 비용 함수로 크로스 엔트로피 함수를 사용한다. 결국에는 이진 분류에서 사용하던 크로스 엔드로피 함수에서 차원이 2차원인것(k=2)만 고려하여 결국 같은 손실함수를 이용함을 알 수 있다. 최종 비용함수는 다음과 같다

 

$$cost(W) = -{1 \over n} { \sum_{i=1}^{n} \sum_{j=1}^{k}} y_{j}^{(i)}log(p_{j}^{(i)})$$

 

이러한 기본 개념을 바탕으로 loss function을 살펴보면 다중 클래스 분류의 경우는 레이블 입력과 원-핫 벡터 입력의 형식이 존재한다고 했다. 따라서 이러한 입력 레이블의 차이로 인해 loss function의 차이를 보인다. 이따 수식 자체는 동일하나, 입력 레이블의 차이만 있다. 

 

 - Sparse Categorical Cross-Entropy : 정수 형태의 레이블을 입력으로 받는다 

- Categorical Cross-Entropy : 원-핫 인코딩된 레이블을 입력으로 받는다.

 

4. 소프트맥스 회귀와 딥러닝

 

소프트맥스 회귀와 딥러닝은 둘 다 머신러닝 알고리즘의 한 종류이다. 

 

소프트맥스 회귀와 딥러닝의 관계는 다음과 같다:

  • 소프트맥스 회귀는 인공 신경망의 한 종류로 볼 수 있으며, 간단한 신경망 구조에서 출력층의 활성화 함수로 소프트맥스 함수를 사용하는 것으로 이해할 수 있다.
  • 딥러닝에서도 다중 클래스 분류 문제를 해결하기 위해 출력층에 소프트맥스 함수를 사용할 수 있다. 이때, 손실 함수로 Categorical Cross-Entropy 또는 Sparse Categorical Cross-Entropy를 사용하여 모델을 학습시킨다.

따라서, 소프트맥스 회귀는 간단한 인공 신경망의 한 예시로 볼 수 있으며, 딥러닝에서도 출력층의 활성화 함수로 소프트맥스 함수를 사용하여 다중 클래스 분류 문제를 해결할 수 있다.

댓글