2020-04-07 20:47:57

텐서플로(tensorflow)를 사용해서 딥러닝 모델을 컴파일(학습 과정을 설정)할 때 우리는 "loss"와 "metrics"라는 것을 만나게 됩니다. 보통 다음과 같은 형태로 말이죠. 

 

 

여기서 loss는 손실함수를 의미합니다. 모델을 훈련시킬때 이 손실 함수를 최소로 만들어주는 가중치들을 찾는 것을 목표로 삼습니다. 위 예에서는 손실함수로 MSE(mean squared error)를 사용했습니다. 손실함수로 MSE만 사용할 수 있는 것이 아니고, MAE(mean absolute error), hinge, categorical crossentropy, sparse categorical crossentropy, binary crossentropy 등도 사용할 수 있습니다. 자신이 훈련시키는 모델에 적합한 손실함수를 선택해주면 됩니다. 예를 들어, 10개의 클래스를 분류할 수 있는 분류기를 훈련시키는 경우에는 손실함수로 sparse categorical crossentropy를 사용할 수 있습니다.

 

반면 metric은 평가지표입니다. 검증셋에서 훈련된 모델의 성능을 평가할 때 어떤 평가지표로 평가할지를 결정해줍니다. 학습곡선을 그릴 때 손실함수와 평가지표를 에포크(epoch)마다 계산한 것을 그려주는데, 손실함수의 추이와 평가지표의 추이를 비교해보면서 모델이 과대적합(overfit) 또는 과소적합(underfit)되고 있는지 여부를 확인할 수 있습니다. 위 예에서는 평가지표로 MAE를 사용했습니다. 중요한 것은 평가지표로 어떤 것을 사용하더라도 모델 가중치의 업데이트에는 영향을 미치지 않는다는 사실입니다. 

 

자, 그럼 요약해보겠습니다.

 

loss: 손실함수. 훈련셋과 연관. 훈련에 사용. 

metric: 평가지표. 검증셋과 연관. 훈련 과정을 모니터링하는데 사용. 

 

 

bskyvision의 추천글

 딥러닝 손실 함수(loss function) 정리: MSE, MAE, binary/categorical/sparse categorical crossentropy

[python] 피어슨 상관계수를 모델의 손실함수 또는 평가지표로 사용하려면

 

참고자료

[1] https://keras.io/ko/metrics/, Keras Documentation, "측정항목의 사용법"

[2] https://keras.io/ko/losses/, Keras Documentation, "손실 함수의 사용"

[3] https://www.tensorflow.org/guide/keras/overview?hl=ko, TensorFlow, "케라스: 빠르게 훑어보기"