Tensorflow

딥러닝 Keras에서 loss함수의 종류와 선택 방법 및 코드

728x90

loss 함수란?

손실 함수는 값을 예측하려할 때 데이터에대한 예측값과 실제의 값을 비교하는 함수로 모델을 훈련시킬 때 오류를 최소화 시키기 위해 사용되며, 주로 회귀(regression)에서 사용한다.

모델의 성능을 올리기 위해 loss함수를 임의적으로 변형할 수 있다.

 

예시

model.compile(loss='mean_squared_error', optimizer='sgd')

 

손실함수의 종류

 

Mean_Squared_error

 

예측한 값과 실제 값 사이의 평균 제곱 오차를 정의한다. 공식이 매우 간단하며, 차가 커질수록 제곱 연산으로 인해서 값이 더욱 뚜렷해진다. 그리고 제곱으로 인해서 오차가 양수이든 음수이든 누적 값을 증가시킨다.


RMSE(Root Mean Squared Error)

 

MSE에 루트(√)를 씌운 것으로 MSE와 기본적으로 동일하다. MSE 값은 오류의 제곱을 구하기 때문에 실제 오류 평균보다 더 커지는 특성이 있어 MSE에 루트를 씌운 RMSE 은 값의 왜곡을 줄여준다.

 

Binary Crossentropy

 

실제 레이블과 예측 레이블 간의 교차 엔트로피 손실을 계산한다. 레이블 클래스(0, 1로 가정)가 2개만 존재할 때

Binary Crossentropy를 사용하면 좋다. 

 

Categorical Crossentropy


다중 분류 손실함수로 출력값이 one-hot encoding 된 결과로 나오고 실측 결과와의 비교시에도 실측 결과는 

one-hot encoding 형태로 구성된다.

예를 들면 출력 실측값이 아래와 같은 형태(one-hot encoding)로 만들어 줘야 하는 과정을 거쳐야 한다.
[[0 0 1]
 [0 1 0]
 [1 0 0]]  (배치 사이즈 3개인 경우)

네트웍 레이어 구성시 마지막에 Dense(3, activation='softmax') 로 3개의 클래스 각각 별로 positive 확률값이 나오게 된다.


[0.2, 0.3, 0.5]


위 네트웍 출력값과 실측값의 오차값을 계산한다.

 

 

Sparse_Categorical_Crossentropy

 

'categorical_entropy'처럼 다중 분류 손실함수이지만, 샘플 값은 정수형 자료이다. 예를 들어, 샘플 값이 아래와 같은 형태일 수 있다. (배치 사이즈 3개)


[0, 1, 2] 


네트웍 구성은 동일하게 Dense(3, activation='softmax')로 하고 출력값도 3개가 나오게 된다.

즉, 샘플 값을 입력하는 부분에서 별도 원핫 인코딩을 하지 않고 정수값 그대로 줄 수 있다. 이런 자료를 사용할 때, 컴파일 단계에서 손실 함수만  'sparse_categorical_crossentropy'로 바꿔주면 된다.

 

그 외

 

mean_absolute_error / mean_absolute_percentage_error 

 

mean_squared_logarithmic_error / cosine_proximity

 

squared_hinge / hinge / categorical_hinge 

 

logcosh / kullback_leibler_divergence / poisson 

 

 

 

 

 

 

 

- 참고자료

keras.io/ko/losses/

 

Losses - Keras Documentation

손실 함수의 사용 손실 함수(목적 함수 또는 최적화 점수 함수)는 하나의 모델을 컴파일하기 위해 필요한 두 개의 매개 변수 중 하나입니다. model.compile(loss='mean_squared_error', optimizer='sgd') from keras i

keras.io

dsbook.tistory.com/64

 

손실 함수, Loss function

(JY) Keras 사용해보기 1. What is keras? 케라스(Keras)는 텐서플로우 라이버러리 중 하나로, 딥러닝 모델 설계와 훈련을 위한 고수준 API이다. 사용자 친화적이고 모델의 구성이 쉽기 때문에 기본 이미지

dsbook.tistory.com

needjarvis.tistory.com/567

 

[딥러닝] 목적/손실 함수(Loss Function) 이해 및 종류

목적/손실 함수(Loss Function) 이란? 딥러닝 혹은 머신러닝은 컴퓨터가 가중치를 찾아가는 과정이다. 일단 아래 예를 보도록 해보자. 4 = 2a + b 6 = 3a + b 이와 같은 문제가 있다고 가정을 해보자, 사람

needjarvis.tistory.com

 

728x90