일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- IROS
- panoptic nerf
- 리눅스
- GAN
- ICCV
- docker
- NeRF paper
- ICCV 2021
- 딥러닝
- Vae
- Paper
- linux
- Python
- panoptic segmentation
- Computer Vision
- paper review
- CVPR2023
- 경희대
- NERF
- 논문
- Semantic Segmentation
- 파이토치
- Deep Learning
- 2022
- 논문 리뷰
- CVPR
- 융합연구
- Neural Radiance Field
- 논문리뷰
- pytorch
- Today
- Total
윤제로의 제로베이스
소프트맥스 회귀(Softmax Regression) 이해하기 본문
02. 소프트맥스 회귀(Softmax Regression) 이해하기
앞서 로지스틱 회귀를 통해 2개의 선택지 중에서 1개를 고르는 이진 분류(Binary Classification)를 풀어봤습니다. 이번 챕터에서는 소프트맥스 회귀를 통해 3 ...
wikidocs.net
1. 다중 클래스 분류
1) 로지스틱 회귀
로지스틱 회귀에서 시그모이드 함수는 예측값을 0과 1 사이로 만든다.
2) 소프트맥스 회귀
소프트맥스 회귀는 확률의 총 합이 1이 되는 아이디어를 다중 클래스 분류 문제에 적용한다.
소프트맥스 회귀는 각 클래스 즉, 각 선택지마다 소수 확률을 할당한다.
이때 확률의 합은 1이 되어야한다.
결국 소프트맥스 회귀는 선택지의 개수만큼의 차원을 가지는 벡터를 만들고, 해당 벡터가 벡터의 모든 원소의 합이 1이 되도록 원소들의 값을 변화시키는 어떤 함수를 지나게 만들어야한다.
이 함수를 소프트맥스 함수라고 한다.
2. 소프트맥스 함수(Softmax function)
소프트 맥스 함수는 분류해야하는 k개의 클래스라면 k차원의 벡터를 입력받아 각 클래스에 대한 확률을 추정한다.
1) 소프트맥스 함수의 이해
k차원의 벡터에서의 i번째 원소를 z_i, i번째 클래스가 정답일 확률을 p_i로 나타낸다면 소프트맥스 함수는 p_i를 이렇게 정의한다.
예를 들어 k=3인 3차 벡터를 입력받으면 아래와 같은 출력을 소프트맥스 함수가 리턴한다.
2) 그림을 통한 이해
위 그림에서 4개의 독립변수 x를 가지는 4차원 벡터를 입력으로 받았다.
하지만 소프트맥스 함수의 입력으로 사용되는 벡터는 벡터의 차원이 분류하고자 하는 클래스의 개수가 되어야 하므로 어떤 가중치 연산을 통해 3차원 벡터로 변환되어야 한다.
샘플 데이터 벡터를 소프트맥스 함수의 입력 벡터로 차원을 축소하는 방법은 간단하다.
소프트맥스 함수의 입력 벡터 z의 차원수만큼 결과값이 나오도록 가중치 곱을 진행한다.
그 다음은 오차 계산 방법에 대한 것이다. 소프트맥스 함수의 출력은 분류하고자 하는 클래스의 개수만큼 차원을 가지는 벡터로 각 원소는 0과 1 사이의 값을 가진다. 이 각각은 특정 클래스가 정답일 확률을 나타낸다. 여기서 첫번째 원소인 p_1은 virgincia 클래스가 참일 확률, p_2는 Setosa일 확률, p_3은 vercisolor가 참일 확률로 됩니다.
이 과정에서 편향과 가중치가 업데이트 된다.
3. 비용 함수(Cost function)
소프트맥스 회귀에서는 비용 함수로 크로스 엔트로피 함수를 사용한다.
1) 크로스 엔트로피 함수
y = 실제값, k = 클래스의 개수일 때
y_j는 실제값 원-핫 벡터의 j번쨰 인덱스를 의미하며, p_j는 샘플 데이터가 j번째 클래스일 확률이다.
c가 실제 값 원-핫 벡터에서 1을 가진 원소의 인덱스라고 한다면, p_c=1은 예측값이 실제값을 정확하게 예측한 경우가 된다. 이를 식에 대입하면 -log(1)이 되므로 -이다. 결과적으로 예측값이 실제값을 정확하게 예측한 경우 크로스 엔트로피 함수의 값은 0이 된다. 즉 cost(W)값을 최소화하는 방향으로 학습해야한다.
2) 이진 분류에서의 크로스 엔트로피 함수
로지스틱 회귀에서 배운 크로스 엔트로피 함수식과 달라 보이지만 본질적으로는 동일한 함수이다. 로지스틱 회귀의 크로스 엔트로피 함수식으로부터 소프트맥스 회귀의 크로스 엔트로피 함수식을 도출해보자.
위에 식에서 y를 y_1로 y-1을 y_2로 치환하겨 H(X)를 p_1, 1-H(X)를 p_2로 치환하면 아래와 같이 표현된다.
'Background > Pytorch 기초' 카테고리의 다른 글
소프트맥스 회귀 구현하기 (0) | 2022.01.16 |
---|---|
소프트맥스 회귀의 비용 함수 구현하기 (0) | 2022.01.16 |
원-핫 인코딩 (One-Hot Encoding) (0) | 2022.01.16 |
클래스로 로지스틱 회귀 모델 구현하기 (0) | 2022.01.16 |
nn.Module로 구현하는 로지스틱 회귀 (0) | 2022.01.16 |