Multi label Classification
Classification(분류)
- 분류 문제는 출력 결과가 달라, 분류 타입에 따라 다른 activation function을 사용하는게 일반적
- Regression : Final action [None] / Loss function [MSE Loss]
- Binary Classification : Final action [Sigmoid] / Loss function [BCE Loss]
- Multi-Class Classification : Final action [Softmax/Log-Softmax] / Loss function [Cross Entropy Loss/Negative Log Likelihood Loss]
Softmax
- 분류될 클래스가 k개일 때, k차원의 vector를 입력받아서, 각 클래스에 속할 확률을 추정
- k차원의 vector에서 i번째 원소 zi, i번째 클래스가 정답일 확률 Pi
- 자연로그 밑 상수 e에 대한 지수함수를 사용하면, 지수함수는 증가함수이며 작은 값의 차이가 확실히 구별될 수 있도록 커짐(작은 값은 더 작아지고, 큰 값은 더 커지는 특성
- 자연로그의 미분은 자연로그 그대로이므로 미분 계산에 용이
- softmax 함수 각 출력은 확률값 0~1 사이의 값, 총 합은 항상 1
- 예측 값 예 : p1, p2, p3 =1번, 2번, 3번 클래스가 정답일 확률
Cross Entropy Loss와 Multi-Class(Multi label) Classification(다중분류)
Entropy와 Cross Entropy Loss
- 정보이론부터 나온 개념으로 P, Q 두 확률간의 Entropy를 계싼하는 식
- Entropy : 정보를 표현하는데 있어 필요한 최소 자원량
- 정보를 bit로 표현한다면, 정보 x를 bit로 표현하기 위해 log2x가 필요
- 전체 정보를 표현하는데 있어, 필요한 최소 평균 bit수
- 정보가 나올 확률을 기반으로 최소 평균 정보량을 식으로 표현한 것이 Entropy
- log2P(xi)는 information Gain : 희귀한 정보일 수록 얻는 정보가 맣아 확률에 반비례
- Cros Entropy는 Information Gain이 다를 때(실제 확률 분포가 아닌 예측 확률 분포)를 계산하는 식
- P를 정답, Q를 예측한 값으로 정의
- H(P)는 P의 Entropy, 오른쪽 KL divergence는 P와 Q의 divergence
- KL divergence : 두 확률이 얼마나 유사한지를 계산
- 위 이론과 식을 사용해 Binary Classification에서는 Binary Cross Entropy Loss 함수를 사용, Multi-Label Classification에서는 Cross Entropy Loss 함수를 사용
BCELoss함수와 Binary Classification
- 이진 분류(Classification)문제는 BCE Loss 함수를 주로 사용
-
- Regression 뮨제에서는 MSE Loss 함수를 사용하면, non-convex한 이슈가 있음
- convexity는 볼록하다는 의미로 그래프가 convexity해야 최적의 값을 빠르고 정확하게 찾을 수 있음
- 그래프가 non-convex 하면, local minima 등으로 잘못 최적화되거나, 최적화 속도가 느릴 수 있음
- BCE Loss
- 예측과 실제값이 둘다 1이면,
-
- 예측값과 실제값이 완전히 다른경우, ex) 예측값은 0에 가깝고, 실제값이 1이면, loss가 큰 값이 나옴
- sigmoid 함수가 0~1의 값이 나오므로, Sigmoid 함수와 함꼐 binary classification 문제에 주로 사용되는 loss 함수
Log-Softmax
- agin
- softmax 함수에 log 취한 것
Negative Log-Likelihood Loss
- again
- L(y) = -log(y)로 최종값 Negative와 log를 취한 값
Metric
Precision과 Recall
Recall : TP/TP+FN
예 Positive(바이러스로 진단) | TP (실제 바이러스) | FP (실제 바이러스 아님)
측 Negaive (바이러스 아닌 것으로 진단)| FN (실제 바이러스) | TN (실제 바이러스 아님)
-
민감도 : 실제 병에 걸린 사람이 병에 걸린것(양성)으로 판정 받을 비율
-
특이도 : 실제 병에 안걸린 사람이 병에 안걸린 것으로 (음성)으로 판정 받을 비율
-
정밀도 : 병에 걸린것(양성)으로 판정했을때, 실제 병에 걸린 비율
-
False Positive Rate : 1- 특이도
-
F1 Score : Precision과 Recall을 결합한 지표,
Precision 과 Recall 어느 한쪽으로 치우치지 않을 경우, F1 scroe는 상대적으로 높은 값으로 계산됨
-
Confusion Matrix : TP,FP,FN,TN 표로 나타낸 매트릭
Binary Classiciation에서는 4개가 나오지만,
Multi-Label Classification의 경우 각 분류에 대해 TP,FP,FN,TN을 모두 확인 가능
-
Micro metric / Macro metric : 전체 라벨 값 합해서 계산 / 라벨별로 계산된 값에 대한 전체 평균
Evaluation
Evaluation 방법
- overfitting이 되지 않도록 모델을 Generalization해야 함
- training data에 정확도 높여도 teset data에서 예측 성능이 좋지 않은 경우,
training data의 bias와 variance까지 학습한 모델이 될 가능성이 높음
Bias(편향)와 Variance(분산,noise)
(빨간색 부분이 실제값 파란점이 예측 값)
출처 : http://scott.fortmann-roe.com/docs/BiasVariance.html
- bias가 높다면 학습 데이터에 대해서도 예측 정확도가 떨어지는 경우임 : under fitting한 경우
- variance가 크다면, 학습 데이터에 대한 예측 정확도와 달리 새로운 데이터셋에 대해서는 정확도가 확연히 차이나는 경우를 의미 : overfitting 일 수 있음
- variance가 높고, bias가 낮은 경우는 overfitting 되어 조금만 달라도 다른 예측치를 내놓게 됨 / variance가 낮고, bias가 높은 경우는 underfitting 되어, 대부분의 데이터가 잘못된 구역에 틀린 예측치를 놓게 됨
Overfitting과 Underfitting
-
학습 데이터 예측 정확도를 통해, bias 정도를 파악
-
테스트셋에도 유사한 정확도를 보이는지 보고 variance를 파악 할 수 있다.
-
bias가 높을 경우, underfitting 가능성이 있음
- Model capacity 향상 필요 ( 뉴런의 수와 뉴런이 어떻게 연결되었는지로 결정됨 )
-
variance가 높을 경우, 데이터의 수를 늘리는 것이 가장 좋으나 어렵다면 regulization 기법 튜닝을 시도
Validation Set
- Training Set : Validation Set : Test Set으로 일정 비율을 나눠서 사용
- Validation Set을 별도로 둘 정도로 데이터 양이 많지 않다면 Cross-Validation 기법을 사용
- Validation Set의 성능이 가장 좋은 모델로 선택 (Generalization 된 모델을 찾음)
Early Stopping
- 학습 회차(epoch)별로 Training set와 Validtion Set의 성능을 측정
- 일정 회차가 지나면, Validation set에 대한 성능은 낮아지고, Training Set에 대한 성능은 높아지는 구간이 존재 (Training Set에 overfitting 된 상태)
- 일정 epoch이 지나도 Validation Set에 대한 성능이 더이상 좋아지지 않는다면 학습을 미리 종료(Early Stopping기법 사용)
- 학습 속도 개선 가능, 어느 정도의 epoch까지 기다릴지 하이퍼파라미터 필요
출처 : 처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3]