[Chapter 4] 이진 분류와 다중 분류
1. Unit Step Function을 이용한 이진 분류
키와 몸무게를 입력을 받아 체중 감량이 필요한지 (레이블 1) 또는 체중 증가가 필요한지 (레이블 0) 판단하는 이진 분류 문제로 예를 들어 설명하겠습니다.
Step 1. 데이터 수집
- 지도 학습을 위해 다양한 사람들의 키, 몸무게, 그리고 해당하는 레이블을 수집
- 일반적으로 보다 많은 데이터를 사용할수록 모델의 분류 성능이 향상됨
- 체중 감량과 증가의 경계에 있는 사람들의 데이터가 더 많이 추가될 경우 모델은 이 미묘한 차이를 더 잘 학습하여 보다 정확한 분류 경계선을 그릴 수 있음
Step 2. 모델 설계
- Unit Step Function을 활성화 함수로 사용하는 단층 신경망 모델 사용
- 히든 레이어 없이 Unit Step Function을 활성화 함수로 사용하는 단일 인공 신경을 퍼셉트론 (Perceptron)이라고 지칭
- 해당 예시에서 퍼셉트론은 키와 몸무게 두 개의 입력을 받아 0 또는 1의 레이블을 출력
- Unit Step Function은 입력이 양수일 때 1을 출력하므로 키(x)의 weight를 a, 몸무게(y)의 weight를 b, 그리고 bias를 c라고 할 때 ax + by + c > 0을 만족하는 경우에 1을 출력
- 위 부등식을 y에 대해 정리하면 y > -(a / b)*x - c/b가 되며 직선 y = -(a / b) * x - c / b보다 위에 있는 (x, y) 점들은 1로, 아래에 있는 점들은 0으로 분류
- 이런 직선을 분류 경계선이라고 부르며, 이처럼 분류 경계가 선형인 경우를 선형 분류라고 함
Step 3. 모델 학습
- 모델의 학습 목표는 세 파라미터 a, b, c를 최적화하여 새로운 데이터에 대해 정확한 판단을 내리는 것
- 적절히 학습이 되었다면 아래 그래프처럼 빨간 점에 대해서는 레이블 1이, 파란 점에 대해서는 레이블 0이 출력되도록 a, b, c를 찾게 됨
Step 4. 모델 테스트
- 테스트 과정에서는 모델이 새로운 데이터에 대해 올바르게 예측하는지 확인 필요
- 실제 레이블과 모델이 예측한 클래스를 비교하여 모델의 정확도를 평가
알아야 할 포인트
- 분류 경계선이 선형일 경우 모델은 선형 분류기에 해당함
- 하지만 분류기가 선형 분류 경계선을 사용하더라도 입력과 출력의 관계 자체는 비선형적일 수 있음
1.1 Unit Step Function의 두 가지 문제
Unit Step Function을 사용한 모델은 다음과 같이 두 가지 주요 문제점을 가지고 있습니다.
- 미분 불가능: Unit Step Function은 0에서 미분이 불가능하고 다른 모든 지점에서 미분값이 0
- Back Propagation 과정에서 활성화 함수의 미분이 사용되는데 Unit Step Function을 사용할 경우 모든 파라미터에 대한 편미분이 0이 되어 학습이 이루어지지 않음
- 극단적 분류: Unit Step Function은 출력값이 0 또는 1 뿐이기 때문에 정도나 확실성을 표현하지 못 함
- ex) 체중 감량이 시급한 사람과 약간의 감량만 필요한 사람을 구별할 수 없으며, 분류 경계선 근처의 미묘한 차이를 반영하지 못 함
1.2 Sigmoid
- 위 문제를 해결하기 위해 Sigmoid 함수가 도입됨
- Sigmoid는 Unit Step Function을 부드럽게 만든 형태로 생각할 수 있으며 수식은 1 / (1 + e^(-x))
- x = 0일 때 1 / 2
- x가 양의 무한대로 발산할 때 1로 수렴
- x가 음의 무한대로 발산할 때 0으로 수렴
- Sigmoid의 주요 특징은 다음과 같음
- 전 구간 미분 가능: 그래디언트 기반 최적화 기법 사용 가능
- 출력값의 범위 [0, 1]: 출력을 `정도` 혹은 `확률`로 해석 가능
- Sigmoid의 또 다른 장점은 더 합리적인 분류 경계선을 찾을 수 있다는 점
- Unit Step Function은 경계 근처의 입력을 동일하게 처리해 버려, 경계 부근에서 입력 변화량에 따른 세밀한 피드백을 받을 수 없음
- 반면, Sigmoid는 임계값 주변에서 급격히 값이 변하지만 그래도 연속적이므로, 경계 근방에 있는 샘플들에 대해 더 세심하게 가중치를 업데이트할 수 있음
2. Sigmoid를 이용한 이진 분류
Sigmoid 기본 개념을 이해하기 위해 다음과 같은 구조를 가정하겠습니다.
- 입력 데이터로 RGB 3 채널, 100 * 100 픽셀의 이미지 사용
- 히든 레이어 없이 입력층에서 바로 하나의 출력 노드로 연결되는 구조
위 모델의 파라미터 수를 계산하면 다음과 같습니다.
- 입력 노드의 수는 3 * 100 * 100 = 30,000개
- 하나의 바이어스 추가
따라서 그래디언트 벡터의 크기도 30,001 * 1이 됩니다.
이제 남은 것은 Loss 함수의 선택이며 Loss 함수는 문제에 맞게 적절히 선택해야 하는 하이퍼파라미터 중 하나입니다.
복습하자면 Loss 계산에 사용하는 데이터의 양에 따라 최적화 방법이 달라집니다.
- 경사 하강법: 모든 데이터 사용
- 확률 경사 하강법: 하나의 데이터만 사용
- Mini-Batch 경사 하강법: 일부 데이터 사용
또, 그래디언트 계산 방식에 따라 여러 가지 최적화 알고리즘이 존재합니다.
- Momentum: 이전 그래디언트 누적
- RMSProp: 각 파라미터의 그래디언트 제곱 누적
- Adam: Momentum과 RMSProp 결합
앞서 사용된 MSE(Mean Squared Error)를 사용할 수도 있지만, 이번에는 이진 분류 문제에 더 적합한 BCE(Binary Cross-Entropy) Loss를 사용하겠습니다.
2.1 BCE(Binary Cross-Entropy) Loss
강아지 사진에는 레이블 1, 고양이 사진에는 레이블 0을 부여한다고 가정하겠습니다.
Loss 함수는 강아지 사진에 대해서는 출력이 1에, 고양이 사진에 대해서는 출력이 0에 가까울수록 작은 값을 가져야 합니다.
식을 나타내기 위해 신경망의 출력을 1, 레이블을 y라고 하겠습니다.
- 출력층에 Sigmoid 함수를 사용하므로 q는 항상 [0, 1] 범위 내 값을 가짐
- 이에 따라 강아지 사진 입력 시 q를 1에 가깝게 만들고 고양이 사진 입력 시 q를 0에 가깝게 만들어야 함
- 즉, 개 사진에 대해서는 q를 최대화, 고양이 사진에 대해서는 (1 - q)를 최대화시키는 것이 목표
- Sigmoid 특성으로 인해 출력 q를 확률로 해석할 수 있으며 해당 예제에서는 q는 `강아지 사진일 확률`, (1 - q)는 `고양이 사진일 확률`로 해석 가능
- 결과적으로 각 사진에 대해 해당하는 동물일 확률을 높이는 간단한 논리로 귀결됨
- 위 내용들을 정리하여 표현하면 q^y * (1 - q)^(1 -y)를 최대화하는 것과 같으며 q^y * (1 - q)^(1 - y) 값은 AI가 예측한 해당 동물일 확률로 해석 가능
Mini-Batch 방식으로 학습을 진행할 때는 데이터 추출이 서로 독립적인 사건이기 때문에 여러 데이터에 대한 예측 확률을 모두 곱해야 합니다.
Batch Size가 32라면 다음 식을 최대화시켜야 합니다.
- q1^y1 * (1 - q1) ^ (1 - y1) * q2^y2 * (1 - q2) ^ (1 - y2) * ... * q32^y32 * (1 - q32) ^ (1 - y32)
- yn은 n 번째 데이터에 대한 레이블, qn은 신경망의 출력을 나타냄
- 위 식은 각각의 값이 [0, 1] 사이의 확률이므로 이들을 계속 곱할 경우 매우 작은 값이 되어 Underflow 문제를 야기할 수 있음
- 위 문제를 해결하기 위해 자연로그를 취함
- 로그함수가 단조증가함수이기 때문에 원래 함수를 최대화하는 것과 로그를 취한 함수를 최대화하는 것이 동일한 결과를 낳으므로 가능한 해결책
- 최소화 문제에서도 동일한 원리 적용 가능
- 로그를 취함으로써 곱셈을 덧셈으로 바꾸고, 0과 1 사이의 확률값을 [음의 무한대, 양의 무한대] 사이의 더 넓은 범위의 값으로 변환하여 Underflow 문제를 해결
최종적으로, 음수를 취하고 합이 아닌 평균으로 다시 구하면 BCE Loss를 얻을 수 있습니다.
- -log(qn^yn) * (1 - qn)^(1 - yn)는 두 가지 가능한 결과에 대한 Cross-Entropy이기 때문에 이를 BCE라고 지칭
- Loss를 줄이는 과정 즉, 손실을 줄이는 과정의 직관적인 이해를 돕기 위해 음수를 취하여 최대화 문제를 최소화 문제로 변환시킴
2.2 로지스틱 회귀 (Logistic Regression)
입력과 출력 사이의 관계를 확률 함수로 표현하고 해당 함수를 은닉층이 없는 인공 신경망으로 놓고 추정하는 방법을 로지스틱 회귀라고 합니다.
- 분류 문제를 다루는데도 `회귀`라는 이름을 갖는 이유는 분류와 회귀가 근본적으로 같은 접근 방식을 공유하고 있음을 보여줌
- 로지스틱 회귀라는 이름은 Sigmoid 함수의 일반화된 형태인 Logistic 함수에서 유래됨
- 정리하면, 로지스틱 회귀는 입력과 출력 사이의 관계를 Logistic 함수 형태로 놓고, 해당 함수의 파라미터를 추정하는 것을 목표로 함
- 로지스틱 회귀는 또 다른 관점에서 Logit(Log-Odds)을 선형 회귀를 통해 구하는 것으로도 해석 가능
승리 확률을 q라고 했을 때 Odds = q / (1 - q)가 되고 Logit은 해당 Odds에 자연로그를 취한 값이므로 ln(q / (1 - q))가 됩니다.
- 위 식을 q에 대해 풀면 결국 Sigmoid 함수와 동일한 형태
- 즉, Logit에 Sigmoid 함수 적용 시 확률값을 얻을 수 있음
이진 분류 문제로 돌아와 Sigmoid를 통과한 후의 값을 `강아지 사진일 확률`이라고 정의했으니, 통과하기 적전의 값은 `강아지 사진에 대한 Logit 값`으로 해석할 수 있습니다.
이러한 관점에서 로지스틱 회귀를 두 단계로 나누어 생각해 볼 수 있습니다.
- 사진을 입력받아 Logit을 출력하는 신경망 (선형 회귀)
- Logit을 확률로 변환하는 Sigmoid 함수
위 과점으로 보면 인공 신경망의 역할은 입력 사진과 Logit 사이의 선형 관계를 찾는 것이 되며, Sigmoid는 신경망의 일부가 아니라 Logit을 확률로 변환하고 BCE Loss를 계산하기 위해 사용되는 함수로 볼 수 있습니다.
- 결국 로지스틱 회귀는 선형 회귀를 통해 Logit을 예측하고, 이를 확률로 변환하여 이진 분류 문제를 해결하는 방법
3. MSE Loss vs BCE Loss
회귀 문제에서 흔히 쓰이는 MSE Loss를 분류 문제에 적용해보면 이진 분류에서 BCE Loss를 MSE Loss보다 선호하는 이유를 파악할 수 있습니다.
MSE Loss
BCE Loss
위 두 Loss를 비교해 보면 두 가지 중요한 차이점을 발견할 수 있으며 이러한 특성으로 인해 이진 분류 문제에서는 일반적으로 BCE Losss가 MSE Loss보다 선호됩니다.
- 하지만 이진 분류 문제에서 BCE Loss를 사용할 때 MSE Loss를 사용하는 것보다 모델의 성능이 항상 더 낫다는 것을 보장하지는 않음
3.1 그래프
- 아래 두 그래프의 비교를 통해 BCE Loss가 MSE Loss보다 더 가파른 곡선을 그리는 것을 알 수 있음
- 이는 BCE가 상대적으로 예측 오류에 보다 민감하게 반응한다는 뜻
- 즉, BCE는 잘못된 예측에 대해 더 강력한 패널티를 부여
3.2 함수의 개형
앞서 가정한 간단한 모델에서 입력 픽셀 값 중 하나만 1이고, 나머지는 0이며 바이어스도 0이라고 가정하겠습니다.
이에 따라 출력값은 w이며 모델의 예측 확률은 1 / (1 + e^(-w))입니다.
- 위 가정일 때 MSE는 Non-Convex 함수, BCE는 Convex 함수
- Convex 함수란 아래로 볼록한 함수로, 단 하나의 Minimum만을 가지는 함수
- Convex 함수는 시작점에 관계없이 적절한 학습률만 설정하면 항상 Global Minimum에 도달하기 때문에 최적화 알고리즘이 쉽게 수렴할 수 있음
- 반면, Non-Convex 함수는 여러 개의 Local Minimum이 존재해 Global Minimum을 찾기 어려움
물론 위 가정에서는 Hidden Layer가 없어서 BCE Loss가 Convex 함수였고 출력층 이전의 층들에 존재하는 weight들에 대해서는 BCE Loss와 MSE Loss 모두 Non-Convex 함수가 될 것입니다.
- 층을 거치면서 복잡한 비선형 액티베이션을 통과하기 때문
- 하지만 같은 조건 아래에서는 BCE가 MSE보다는 Non-Convex한 정도가 덜할 것으로 예상되어, 최적화 과정의 안정성 면에서 BCE가 더 유리
4. 딥러닝과 MLE (Maximum Likelihood Estimation)
앞서 비교한 BCE Loss와 MSE Loss는 전혀 관련 없어 보이지만 놀랍게도 이 둘은 Likelihood라는 공통된 뿌리를 가지고 있습니다.
- 이는 Loss를 최소화하는 파라미터를 찾는 딥러닝의 학습 과정이 사실 MLE(Maximum Likelihood Estimation), 즉 관측된 Measurement가 나올 가능성을 최대로 하는 파라미터를 찾는 과정과 같다는 것을 의미
- MLE는 `관측된 Measurement가 나올 가능성을 가장 크게 하는 파라미터를 선택하자`는 방법
- 이진 분류를 MLE 관점에서 해석하면 강아지 레이블이 나왔을 때 `강아지 레이블이 나올 가능성을 가장 크게 하는 신경망의 w를 선택`하는 것과 같음
- 따라서 앞서 `입력 x1에는 출력 y1이 나와야 돼`라고 표현했던 딥러닝의 학습 과정을 `이 입력 x1에는 이 출력 y1이 나올 확률을 키워야 해`라는 MLE의 관점으로 바꿔 말할 수 있음
- 정리하면 딥러닝의 학습 과정이 단순히 레이블과의 오차를 줄이는 것이 아니라, 관측된 Measurement의 발생 가능성을 최대화하는 통계적 추정 과정이라는 더 깊은 의미를 가짐
앞선 살펴본 이진 분류 문제에서 첫 번째 사진에 대해 해당 동물일 확률 q1^y1 * (1 - q1)^(1 - y1)을 사용했는데 해당 수식이 바로 Likelihood 식입니다.
4.1 Loss 함수와 NLL(Negative Log-Likelihood)
앞선 예제에서 `해당 동물일 확률`을 나타내는 수식 q1^y1 * (1 - q1)^(1 - y1)를 Likelihood P(y1|w)로 해석해 보았는데, 이는 베르누이 분포(Bernoulli Distribution)를 나타내는 식입니다.
베르누이 분포는 쉽게 말해 동전 던지기의 분포로, 앞면이 나올 확률이 q라면 뒷면이 나올 확률이 (1 - q)인 간단한 분포입니다.
- Likelihood P(y1|w) = q1^y1 * (1 - q1) ^ (1 - y1)는 y1이 베르누이 분포를 따른다고 가정한 수식
- Likelihood는 조건부 확률 분포 식을 `|` 뒤엣것의 함수로 본 것이기 때문에 식 자체는 확률 분포 식과 동일
- 따라서 Likelihood의 식을 세울 때는 y1의 확률 분포만 생각하면 됨
4.1.1 BCE Loss 유도
- 데이터가 여러 개일 경우 Likelihood는 P(y1, y2, ..., yn|w)와 같이 결합분포로 나타냄
- y1, y2, ... yn이 서로 독립적이라면 단순히 개별 확률의 곱 P(y1|w) * P(y2|w) * ... * P(yn|w)
- 여기에 -log를 취하고 Batch Size인 N으로 나누면 BCE Loss와 동일한 식을 얻게 됨
- 정리하면 레이블의 분포를 베르누이 분포로 가정하고 Likelihood를 구한 다음 -(1/N)log를 취한 결과가 바로 BCE Loss
- 이렇게 Likelihood에 -log를 취한 것을 NLL(Negative Log-Likelihood)라고 지칭
4.1.2 MSE Loss 유도
MSE Loss는 레이블 yn이 평균이 qn인 가우시안 분포(Gaussian Distribution)를 따른다고 가정하고 NLL을 구하면 얻을 수 있습니다.
결론적으로 BCE Loss와 MSE Loss는 가정한 분포가 서로 다르기 때문에 서로 다른 식으로 전개되었지만, 사실은 둘 다 NLL이라는 같은 뿌리를 가졌음을 알 수 있습니다.
- BCE Loss는 베르누이 분포를 가정
- MSE Loss는 가우시안 분포를 가정
- MAE Loss 또한 같은 논리로 유도할 수 있으며 라플라스 분포(Laplace Distribution)를 가정
4.2 적합한 Loss 선택
앞서 이진 분류에 BCE Loss가 유리한 이유는 베르누이 분포가 이진 분류 문제의 본질에 더 적합한 가정이기 때문입니다.
- 이진 분류는 말 그대로 두 가지 중 하나의 클래스를 선택하며 학습 시 레이블은 필연적으로 0 또는 1의 값만을 가짐
- 이런 특성을 고려할 때 가우시안 분포보다는 베르누이 분포가 더 적절한 가정
반면, 회귀 문제에서는 MSE Loss를 주로 사용합니다.
- 회귀에서는 레이블이 연속적인 값을 가질 수 있으므로, 가우신안 분포가 더 적합한 가정
만약 데이터에 Outlier가 많을 경우 라플라스 분포를 가정하는 것이 유리하기 때문에 MAE Loss 사용을 고려할 수 있습니다.
- 라플라스 분포는 가우시안 분포에 비해 꼬리 부분의 확률 밀도가 더 크기 때문에 Outlier에 덜 영향을 받는 특성 지님
위와 같이 MLE 관점에서 딥러닝을 해석하면, 풀고자 하는 문제에 적합한 Loss를 논리적 근거를 바탕으로 선택할 수 있습니다.
- Loss 함수의 선택은 하이퍼파라미터 중 하나
- `우리가 해결하려는 문제에서는 레이블의 특성이 이러하니, 이러한 분포가 더 적절하겠다`와 같은 논리적 사고를 통해 선택할 수 있다는 것은 큰 이점
이런 관점에서 볼 때, AI의 학습은 w를 추정하기 위한 MLE를 수행하는 과정이라고 정의할 수 있습니다.
- 이렇게 MLE의 관점에서 딥러닝을 이해하면, Loss 함수 선택의 근거를 명확히 할 수 있으며 기존의 Loss 함수들 중에서 선택할 수 있으며
- 문제의 특성에 맞는 새로운 확률 분포를 가정하고 이에 기반한 Loss 함수를 직접 설계할 수도 있게 됨
5. 다중 분류 (Multiclass Classification)
- 다중 분류는 이진 분류의 개념을 확장한 것으로 세 개 이상의 클래스를 분류하는 경우를 다중 분류라고 지칭
- 세 클래스에 대한 분류 방식을 이해하면 이를 수백 또는 수천개의 클래스로 확장하는 것도 동일한 원리로 이해 가능
- 이진 분류에서는 강아지는 1, 고양이는 0과 같은 하나의 숫자를 레이블로 사용했지만, 다중 분류에서는 다음과 같은 형태를 가짐
- 강아지 사진: [1, 0, 0]
- 고양이 사진: [0, 1, 0]
- 햄스터 사진: [0, 0, 1]
- 이처럼 하나의 값만 1이고 나머지는 0인 벡터로 변환하는 것을 One-Hot Encoding이라고 함
- 이러한 레이블의 표현 방식은 각 클래스를 동등하게 취급하며, 클래스 간의 우선순위나 순서를 부여하지 않음
- 또, 모델이 각 클래스를 독립적으로 학습하도록 지원
- 이진 분류에서는 출력층에 노드 1개만 필요했지만, 다중 분류에서는 레이블이 벡터로 표현됨에 따라 분류해야 하는 클래스의 개수만큼의 노드 필요
이전 예제와 동일하게 3 * 100 * 100 크기의 사진을 입력으로 사용하는 모델을 사용한다고 가정하겠습니다.
- 해당 모델의 파라미터 개수를 계산해 보면, 입력 이미지가 3만 개의 픽셀을 가지고 있고 출력 노드가 3개이므로 웨이트의 개수는 90,000개
- 여기에 각 출력 노드마다 하나씩, 총 3개의 바이어스가 추가되므로 최적화할 파라미터는 총 90,003개
- 그래디언트의 크기 역시 90,003 * 1
딥러닝의 기본 수식은 앞서 많이 소개했고 이제 다중 분류에 적합한 Loss 함수만 정의하면 됩니다.
- 특히 주목해야 할 사실은 레이블이 [1, 0, 0], [0, 1, 0], [0, 0, 1]이라면 각 출력 노드는 순서대로 강아지 사진, 고양이 사진, 햄스터 사진일 정도를 나타나게 된다는 것
- 이는 딥러닝 학습 과정에서 `해당 입력에는 이 출력이 나와야 해`라는 지침에 따라 각 출력 노드의 의미가 결정되기 때문
- ex) 햄스터 사진에 대해서는 [0, 0, 1]과 가까운 출력이 나오도록 학습이 진행되므로 세 번째 노드가 자연스럽게 햄스터 사진을 `담당`하게 됨
- 하지만 만약 출력이 [0, 0, 100]이나 [-1, 1, -1]과 같이 나온다면 [0, 0, 1]보다 두 번째 노드의 값이 더 두드러지게 나온 결괏값임에도 불구하고 실제 레이블과는 더 멀이진 결과이므로 Loss 값은 [0, 0, 1]이 나왔을 때보다 더 커지게 되는 문제가 발생
- 위 문제를 해결하기 위해 Softmax 액티베이션을 적용하여 각 출력값은 양수이면서 그 합이 1이 되도록 제한을 두는 방법을 채택
5.1 Softmax
- Softmax는 여러 개의 실숫값을 입력받아 각 출력의 값이 양수이면서 그 합이 1이 되도록 변환하는 함수
- 위 특성 때문에 Softmax의 출력은 확률 분포로 해석 가능
- 앞서 살펴본 다른 액티베이션 함수들과 달리 Softmax는 개별 노드의 값이 아닌 모든 출력 노드의 값을 동시에 고려하기 때문에 아래 그림과 같이 하나의 상자로 표현 가능
- FC 레이어를 통과하고 선형 액티베이션을 거친 n번째 노드를 ln, Softmax의 출력값을 qn이라고 했을 때, Softmax 출력값은 다음과 같이 계산됨
- 모든 qn의 분모는 e^l1 + e^l2 + ... + e^l3로 동일하며, 분자는 각 노드에 해당하는 e^ln 값
- 이 구조로 인해 각 qn은 항상 양수이며, 모든 qn의 합은 1이 됨
- Softmax만이 이러한 조건을 만족하는 유일한 함수는 아니지만 가장 널리 사용됨
- exponential을 취하는 대신 절댓값을 적용하는 방법도 모든 출력값이 양수이고 합이 1임을 만족하지만 입력값의 부호를 구분하지 못해 3차원 공간의 일부만 유효하게 사용하게 되어 Softmax에 비해 성능이 떨어질 수 있음
- 각 노드에 Sigmoid를 적용하는 방법 또한 상대적 크기를 비교하여 분류를 수행할 수 있지만 출력값의 합이 1이 되지 않아 One-Hot Encoding 된 레이블의 특성을 충분히 활용하지 못하여 다중 분류 문제에서는 Softmax보다 성능이 떨어질 수 있음
- 다만, 다중 레이블 분류(Multi-Label Classification) 문제에서는 Sigmoid를 각 노드에 적용하는 방식이 더 적합함
- 다중 레이블 분류는 하나의 이미지에 여러 클래스가 동시에 존재할 수 있는 경우를 다룸
- 아래 이미지의 레이블 벡터는 고양이와 새에 해당하는 성분은 1, 나머지 클래스에 해당하는 성분은 0의 값을 가짐
- 이 경우 레이블 벡터의 성분의 합이 1이 아니므로 Softmax를 사용하기에 적합하지 않고 각 출력 노드에 Sigmoid를 적용하는 것이 더 적절함
5.2 Cross-Entropy Loss
- 복습하자면 이진 분류 문제에서 BCE Loss가 레이블이 베르누이 분포를 따른다는 가정하에 NLL을 구한 것
- 다중 분류에서는 레이블이 카테고리 분포(Categorical Distribution)를 따른다고 가정하고 NLL을 구하며, 이를 통해 얻은 Loss가 바로 Cross-Entropy Loss
- 카테고리 분포는 베르누이 분포를 확장한 개념으로 멀티누이 분포(Multinoulli Distribution)라고도 불림
- 베르누이 분포와 달리 카테고리 분포는 세 개 이상의 결과를 다룸
- 또한 베르누이 분포는 0 또는 1이라는 단일 값에 대한 확률을 다루지만, 카테고리 분포는 [1, 0, 0], [0, 1, 0], [0, 0, 1]과 같은 랜덤 백터에 대한 확률을 다룸
- qi는 i번째 카테고리에 대한 확률, yi는 레이블 벡터의 i번째 성분일 때 카테고리 분포를 수식으로 표현하면 다음과 같음
- 아래 수식은 해당 카테고리일 때만 1이고 나머지는 0인 One-Hot Encoding 된 형태를 가짐
- 세 개의 클래스(강아지, 고양이, 햄스터)가 있는 경우 분포는 다음과 같이 표현됨
- q1^y1 * q2^y2 * q3^y3
- 레이블 [y1, y2, y3]에 대한 조건부 확률 분포의 식 q1^y1 * q2^y2 * q3^y3은 파라미터에 대한 함수로 볼 때 Likelihood가 됨
- 여기에 -log를 취해 NLL을 구하면 다음과 같은 식을 구할 수 있음
- 위 식은 정보 이론의 관점에서는 실제 분포 [y1, y2, y3]와 예측 분포 [q1, q2, q3]의 Cross-Entropy를 나타냄
- n번째 데이터에 대한 Cross-Entropy를 CEn이라고 표기할 때, 여러 데이터에 대한 평균 Cross-Entropy가 바로 Cross-Entropy Loss가 됨
- Cross-Entropy의 중요한 성질 중 하나는 항상 실제 분포의 Entropy보다 크거나 같다는 것
- 아래 부등식은 Cross-Entropy를 줄일수록 q1, q2, q3가 y1, y2, y3에 가까워진다는 것을 의미
- 레이블 [y1, y2, y3] = [1, 0, 0]에 대해 위 식을 살펴보면, 부등식은 간단히 좌변은 0, 우변은 -logq1이 됨
- -logq1이 Loss가 된다는 것은 q1만을 1에 가깝게 만드는 것이 목표
- 동일한 전개를 다른 클래스에도 적용하면 강아지 사진에 대해서는 q1만을, 고양이 사진에 대해서는 q2만을, 그리고 햄스터 사진에 대해서는 q3만을 1에 가깝게 만드는 것이 목표
- 즉, Softmax를 사용하기 때문에 강아지 레이블 [1, 0, 0]에 대해 Loass를 계산할 때는 첫 번째 노드의 출력값만을 고려하고 나머지 노드의 출력값은 굳이 0으로 만들려고 하지는 않음
- 정리하면 Softmax의 특성상 출력의 합이 1이 되므로, q1이 1에 가까워지면 나머지 값들은 자연스럽게 0에 가까워지게 되고 이 때문에 해당 클래스를 담당하는 노드 이외의 출력값은 고려하지 않아도 됨
5.2.1 Cross-Entropy를 이용한 이진 분류
- Cross-Entropy를 이용해 이진 분류를 수행할 수 있으며 이 경우 레이블이 [1, 0] 또는 [0, 1]이 되며, 출력 노드도 이에 따라 두 개로 구성됨
- 여기서 y2 = 1 - y1이고 q2 = q - q1이 항상 성립하므로 베르누이 분포의 식과 동일한 형태를 가짐
- 따라서 NLL을 구하면 BCE Loss와 일치함을 알 수 있고 결국 같은 Loss를 사용하게 되는 것임을 알 수 있음
- 다만, 이진 분류에서 Softmax를 통한 Cross-Entropy Loss를 사용할 때는 출력 노드가 한 개가 아닌 두 개라는 차이점 존재
- 이에 따라 각 노드에 연결된 웨이트는 해당하는 클래스의 학습에만 관여하여 각 클래스에 대한 학습이 보다 독립적으로 이루어질 수 있게 됨
5.3 Softmax 회귀 (Softmax Regression)
- 앞서 살펴본 예제처럼 입력과 출력 사이의 관계를 여러 클래스에 대한 확률 분포 함수로 표현하고 해당 함수를 은닉층이 없는 인공 신경망으로 놓고 추정하는 방법을 Softmax 회귀라고 지칭
- Logistic Regression을 여러 클래스로 확장했다는 의미에서 Multinomial Logistic Regression이라고도 부름
- Softmax 회귀는 로지스틱 회귀와 마찬가지로 Logit들을 선형 회귀를 통해 구하는 것으로도 해석 가능
- 위 그림에서 볼 수 있다시피 Softmax를 통과한 후의 값이 확률 분포이므로 통과하기 직전의 값은 각 클래스에 대한 Logit 값으로 해석 가능하며 Softmax 회귀를 다음과 같이 두 단계로 나누어 생각해 볼 수 있음
- 사진을 입력받아 Logit들을 출력하는 신경망 (선형 회귀)
- Logit들을 확률 분포로 변환하는 Softmax 함수
정리하면 Softmax 회귀는 선형 회귀를 통해 Logit들을 예측하고, 이를 확률 분포로 변환하여 다중 분류 문제를 해결하는 방법이라고 할 수 있습니다.
참고
혁펜하임의 Easy! 딥러닝