딥러닝 학습을 할 때, 2개의 model scoring function을 나눠서 생각해보아야 한다.
1. 성능 평가 (Performance Evaluation)
2. 최적화 (Optimization)
* (3. 통계적 검정 (Statistical Testing))
하나씩 살펴보면
1. 성능 평가 (Performace Evaluation, metric)
구현한 model 성능이 얼마나 좋은지?
metric은 사람들이 딱 봤을 때의 모델에 대해 알 수 있는 성적이다.
그래서 metric을 설계할 때에는 사람들에게 이해할 수 있는, 그리고 정보를 효과적으로 줄 수 있는 방향으로 설계되어야 한다.
예를 들어서 MSE (Mean Squared Error)는 사람들에게 읽기 좋은 metric은 아니다. 사람들이 왜 error에 제곱을 하는지에 대한 의문을 가질 수 있기 때문이다.
따라서 RMSE (Root MSE)가 더 의미있고 좋은 metric이다. (human-readable scale)
[ 분류를 위한 metrics ]
[ 회귀를 위한 metrics ]
2. 최적화 (Optimization, Loss Function)
지금 model이 최고로 fit하는 model인지, 아니면 더 최적화할 수 있는지?
어떤 매개변수 설정이 최고의 성능을 제공하는지 알아내는 방법이다.
손실함수를 통해서 가중치와 편향을 조정하는 것이다.
손실함수는 더 큰 오류가 있을 때 그 값이 커지는데, 이는 컴퓨터에서 계산하기 쉬운 것으로 선택한다. 예를 들면 MSE는 최적화에 매우 인기가 많은데, 그 이유는 제곱 형태가 미분하기 좋기 때문이다.
즉, 손실함수는 machine convenience에 관한 것이지, 비즈니스적 문제를 해결하거나 현실에서의 해석을 위한 것에는 적합하지 않다.
우리는 라이브러리에서 다른 분들이 만든 loss function 알고리즘을 가져와서 사용할텐데, 이를 가지고 실제 사용 사례에서 의미있는 함수는 아닐 것이다.
궁금 (1). 손실함수를 평가지표로 사용해도 될까?
즉, 손실함수가 낮을 수록 좋은 model이라고 판단해도 될까? 라는 뜻이다.
모든 손실함수를 그렇게 쓸 수 있는 것은 아니다. 예외가 존재한다.
예를 들어서, 손실함수인 cross-entropy loss를 분류 문제에서 사용할 때, 손실함수 값을 2.5에서 2.0으로 줄였다고 하자. 이 때, 손실함수 2.0인 것이 손실함수 2.5인 것보다 더 좋은지 어떻게 알 수 있는가? 이때 metrics를 사용하는 것이다!
손실함수를 평가지표로 사용하는 것은 그 손실함수 값이 알고리즘에 의해 줄어들었으며, 사람도 그 의미를 쉽게 파악할 수 있다는 것이다.
궁금 (2). 평가지표를 손실함수로 사용해도 될까?
예를 들어서 평가지표인 accuracy를 손실함수로 사용한다고 할 때, 매개변수 가중치를 살짝 수정했을 때의 정확도는 변하지 않을 가능성이 매우 높다. 즉, 정확도의 그래프는 대부분의 부분에서 기울기가 0이 된다. 이는 경사하강법을 사용하는 데에 많은 어려움이 생긴다.
정리해보면..
(1) Metric은 model의 performance가 얼마나 좋은지 판단하기 위한 지표이다. 따라서 사람이 'look at'하기 위한 성적이다.
(2) Loss Function은 model을 optimization하기 위한 지표이다. 손실을 줄이기 위한 것이다.
출처 :
'[ 딥러닝 ]' 카테고리의 다른 글
딥러닝의 심층 표현이 중요한 이유 (0) | 2023.06.05 |
---|---|
가중치 감소 (Weight Decay) (0) | 2023.06.02 |
배치 정규화 (Batch Normalization) (0) | 2023.05.31 |
가중치 초기화 (Weight Initialization) (0) | 2023.05.31 |
Optimizer / SGD, Momentum, Adagrad, Adam, RMSProp (0) | 2023.05.30 |