딥러닝 용어(2/2) - 손실함수, 배치크기, 에포크, 학습률

2020. 12. 20. 07:24

이번에는 이전 포스팅에 이어 딥러닝 학습을 위해 용어들을 정리해보고자 한다. 

 

딥러닝 용어



1. 손실함수

손실함수는 '학습시키고자 하는 목표'라고 볼 수 있다. 손실함수의 값을 최소화하는 방향으로, 딥러닝의 가중치를 학습시키기 때문이다. 손실함수를 최소화하는 방법은 이전 포스팅의 '옵티마이저'를 참조하면 좋을 듯 하다. 손실함수는 보통 에측값과 실제값의 차이로 정의된다.
이를 직접 정의할 수도 있고, 이미 정의된 손실함수를 사용할 수도 있다. Keras에서 정의된 손실함수는 아래와 같다.

* 사용 가능한 손실 함수
 - mean_squared_error
 - mean_absolute_error
 - mean_absolute_percentage_error
 - mean_squared_logarithmic_error
 - squared_hinge
 - hinge
 - categorical_hinge
 - categorical_crossentropy
 - sparse_categorical_crossentropy
 - binary_crossentropy
 - kullback_leibler_divergence
 - poisson
 - cosine_proximity

 

이진 분류의 문제에서는 주로 binary_crossentropy를 사용하고, 다중 분류에서는 categorical_crossentropy, 수치형 변수를 예측할 대는 mean_squared_error를 주로 사용한다. crossentropy 정보이론(Information theory)에서 나오는 용어로 확률 분포간의 차이를 측정하는 개념이라고 한다. 예측 분포와 실제 분포의 차이를 최소화하는 방향으로 학습한다고 생각하면 될 듯 하다.
hinge는 SVM에서 나오는 개념이다. SVM은 각각의 데이터를 구분하는 초평면을 학습한다. 이 때 각 클래스의 데이터 중 초평면과 가장 가까운 데이터와 최대한 멀어지게 초평면을 학습시킨다. (maximizing the margin)
SVM같은 모델을 학습하고 싶다면, hinge를 사용하면 되겠다.


sparse는 희소행렬(sparse matrix)에서 나온 개념인 듯 하다. 희소 행렬은 대부분의 값이 0인 행렬을 말한다. 그래서 sparse_categorical_crossentropy 사용하면, 예측값이 정수로 나온다. 반대로 categorical_crossentropy 실수값이 나온다. sparse_categorical_crossentropy는  각 샘플이 정확히 하나의 클래스에 속하는 경우, 사용하면 좋다고 한다. sparse_categorical_crossentropy를 사용하면 어떤 클래스에 속하는지 정수로 실제값을 표현해주면 된다( ex) [ 0, 1, 2, 3] ). sparse_categorical_crossentropy를 사용한다고 해서 categorical_crossentropy에 비해 정확도가 향상되지는 않지만, 메모리와 시간을 아낄 수 있다고 한다.

 

 

2. 배치크기

배치크기는 딥러닝에 학습할 때, 입력하는 데이터의 수를 말한다. 딥러닝은 학습해야 되는 데이터가 많아, 데이터를 한 번에 학습하지 않고 여러 번 나누어 데이터를 학습시킨다. 배치크기가 크면, 학습시키는 횟수가 줄어든다. 배치 사이즈도 학습에 영향을 주며, 배치 크기가 크면 좋을 것 같지만, 실제로 배치 크기가 너무 크면 정확도를 떨어뜨리기도 한다고 한다.이는 모델 최적화와 일반화가 어렵기 때문이라고 한다. 해당 내용은 아래에 잘 설명되어 있으니, 참고하기 바란다. 그리고, 배치크기는 학습률과도 관련이 있으므로, 모델 성능에도 영향을 미친다. 이를 잘 조율할 수 있는 해답으로 LARS(Layer-wise Adaptive Rate Scaling) 도 설명하고 있다. 파이토치에는 LARS를 구현한 torchlars 라이브러리가 있다.

 

torchlars가 탄생하기까지 - 카카오브레인

LARS는 배치(batch) 크기를 키운 대규모 학습이 보다 안정적으로 이루어질 수 있도록 돕는 최적화 알고리즘입니다. 카카오브레인은 이 LARS를 누구나 쉽게 사용할 수 있도록 GPU 동작에 최적화된 파

www.kakaobrain.com

 

 

3. 에포크

에포크는 학습 횟수이다. 에포크가 1이면 전체 데이터를 한 번 학습한다. 에포크가 10이면 10번 학습니다. 학습을 많이 할수록 정확도가 걔선되겠지만, 주어진 데이터셋에 과적합될 수 있다.

 

 

4. 학습률

학습률은 기울기의 반대방향으로 이동할 때, 그 학습비율을 말한다. 학습률이 클수록 학습속도는 빠르지만, 최소값을 차지 못한거나 값이 발산할 수 있다. 반대로 학습률이 작으면, 학습속도가 느리고 국소값에 머무를 수 있다.

 

 


오늘은 이렇게 손실함수, 배치크기, 에포크, 학습률에 대해서 알아보았다. 이렇게 알고 나니 앞의 모델도 개선포인트가 있을 것으로 생각되지만, 그냥 워드투벡으로 넘어가기로 하였다.

댓글()
  1. 랑니 2020.12.20 17:29 신고 댓글주소  수정/삭제  댓글쓰기

    이런 새로운 용어를 접하게 되면 막 똑똑해질 것 같은 기분입니다.