목차
1. Output function
1-1. Softmax function
1-2. Linear function
2. Loss function
2-1. cross-entropy
2-2. MSE
1. Output function
Output function으로 사용하는 함수는 크게 2가지이다.
- Softmax fucntion
- linear function
1-1. Softmax function
여기서 Softmax 함수는 Multi-class classification 문제를 풀기 위해 사용된다. 예를 들어 아래와 같은 문제가 있다고 해보자.

여기서 cat, horse, dog가 담긴 32 x 32개의 픽셀 데이터를 일자로 펼쳐서 1024개의 픽셀을 feature로 사용하여 Nerual Network의 node에 입력하여 학습시킨다. 최종적으로 output layer로 3개의 데이터가 나오게 된다.

아웃풋이 3개인 이유는 dog, cat, horse의 실제 target value를 원-핫 인코딩을 시켜서 모델로 나온 값과 비교해야 하기 때문이다. 원-핫 인코딩을 하지 않고, cat : 0 dag : 1 horse : 2 이렇게 구분 지어 버리면, 모델로 나온 값과 실제 종속변수의 값의 차이, 즉 loss를 계산할 때 각각의 loss 값이 수치적인 의미를 가져버리게 된다. 그래서 아웃풋이 3개인 것이다.
그러면 여기에서 의문이 생긴다. output으로 나오는 값이 꼭 5 4 2 와 같은 값들이어야 할까? 실제 종속변수의 값은 0과 1밖에 존재하지 않기 때문에 이왕이면 종속변수와 비슷한 범위의 값이 나오게 되면, loss 값을 훨씬 많이 줄일 수 있게 된다. 그래서 사용하는 Output function이 바로 Softmax function인 것이다.

위 그림에서 볼 수 있듯이 softmax 함수를 활용하면 output이 0과 1 사이의 값으로 나오게 된다. 그러면 sigmoid함수를 써도 되고, minmax normalization을 해도 되지 않나?라는 생각이 들 수 있다.
우선 minmax normalization같은 경우엔 들어온 input에 대해서 전체 값을 다 나눠버리 버리다 보니 모든 score가 다 작아진다는 단점이 생긴다. 전체 Loss를 줄이려면, 모델을 통해 나온 값의 합이 1이 되게끔 만들어주어야 한다.
근데 minmax 정규화는 합이 1이 되지 않는다. 그래서 더 loss를 줄이는 방법을 생각하다보니, 민맥스보다는 전체 합으로 나누어 주어서 normalization 시키는 방법으로 가게 된다. 이렇게 하면 모델을 통해 나온 값의 합이 무조건 1이 된다. 근데 여기까지만 하게 되면, 전체 값들이 균일하게 분포가 되기 때문에, 정답에 가까운 값을 1에 더 가깝게, 오답에 가까운 값을 0에 더 가깝게 뻥튀기를 하는 방법은 없을까? 하는 아이디어에서 나온 게 숫자가 커질수록 빠르게 숫자가 커지는 지수함수이고, 이를 적용시킨 함수가 바로 소프트맥스 함수이다.
식을 보면 알 수 있듯이, 어떤 특정 위치에 있는 스코어를 지수함수에 넣어서 분모는 그 값들의 합으로 정의한다. 이렇게 하면 다음 2가지의 목표를 모두 만족한다.
1. 0과 1로 결과가 나오게 만들어 준다.
2. 값이 큰 output을 더 크게, 작은 값을 더 작게 만들어 준다. 결과적으로 loss가 더 줄어들 수 있다.
sigmoid 함수를 쓰지 않는 이유는 첫 번째로, softmax가 기울기가 더 가파르다보니 학습이 더 잘 된다는 이유가 있다. 두 번째로, softmax 함수를 쓰면, Loss function으로 크로스 엔트로피를 사용할 수 있다. 이 조합을 사용하면, 훨씬 학습이 잘 된다. 이러한 이유들로 Multi-class classification 문제에서는 소프트맥스 함수를 사용한다.
1-2. Linear function
회귀 문제를 풀기 위해서 사용하는 output function은 linear function이다.

아웃풋으로 나온 값이 결과값으로 그대로 사용된다. 그렇게 해서 실제 값과 target value와 비교할 수 있다. Linear function은 그냥 장식이라고 봐도 된다. 회귀 모델에서는 linear를 쓰기 때문에 그냥 넣어준 것이다. output function은 문제 정의를 어떻게 하냐에 따라서 다른 걸 써도 된다. 마지막에 output function을 쓰긴 해야 하니 보통 linear 함수를 쓴다.
2. Loss function
Loss function으로 사용하는 함수도 마찬가지로 크게 2가지이다.
- Cross-entropy
- MSE
2-1. Cross-entropy

- S : Softmax
- T : Target value
위 식이 cross-entropy 함수이다. 2개의 vector 값의 차이를 계산해준다. 여기서 ouput size는 class 개수를 의미한다. 이제 예측값과 실제값과의 loss를 비교해 볼 것이다. loss function은 모델의 예측 결과로 나온 값이 0 1 0 0 이든, 0 0 1 0 이든, 0 0 0 1 이든 loss가 다 같아야 한다. 그리고 이때 최악의 케이스여야 한다. 위 식에서

다시 위 교차엔트로피 식을 보면, target이 원핫인코딩 되어있기 때문에 이걸 수식에 집어넣으면, 앞뒤 수식 중에 하나만 남는 걸 알 수 있다. 이런 걸 Indicator라고 부른다.
2-2. MSE

회귀 모델에서 mse를 가장 많이 사용하는 이유는 미분이 가능하기 때문이다. 참고로, 딥러닝에서는 모델디자인을 문제에 맞게 쉽게 정의할 수 있다. 딥러닝은 하나의 모델로 multioutput을 할 수 있다. 머신러닝에서는 multioutput문제를 풀려면, 모델이 output개수만큼 있어야 한다.
mse는 머신러닝에서도 나오는 개념이니, mse에 대한 더 자세한 내용은 아래 포스팅을 참고하면 좋다.
기계학습(ML): 선형회귀 모델 학습 원리, 성능 평가 방법
목차 1. 기계학습(ML) 종류 2. 학습데이터와 문제 데이터 준비 3. 알고리즘(혹은 모형) 선택 3-1. 선형 회귀 모델 4. 학습 4-1. 파라미터 최적값 도출 4-1-1. 정규방정식 4-1-2. 경사하강법 4-3. 성능 평가 4
coduking.tistory.com
'통계, AI' 카테고리의 다른 글
데이터 분석의 목적 및 프로세스 (0) | 2023.08.04 |
---|---|
Perceptron, Multi-Layer Perceptron, Activation function 정리 (0) | 2023.07.07 |
ROC curve, AUC 개념 및 sklearn 코드 (1) | 2023.06.15 |
분류문제 성능평가 지표: Accuracy, Recall, Precision, F1 score (+titanic 실습) (1) | 2023.06.10 |
[로지스틱 회귀] Solver 종류와 장단점 (2) | 2023.06.07 |
댓글