AI 어떻게 배워야 좋을까요? 🤔
#인공지능 

딥러닝 개발자라면 꼭 알아야 할 손실 함수 의 개념과 종류

머신 러닝 모델을 만드는 필수 요소, 손실 함수 에 대해 알아봅니다. 머리로만 알고있던 손실 함수를 직접 눈으로 확인하는 시간! 손실 함수의 역할을 이해하고, 고민이 필요해야하는 상황과 이에 맞는 예시들을 확인합니다.

2024-04-15 | 나융

손실 함수의 역할

머신 러닝 은 다양한 환경의 데이터를 범용적으로 표현할 수 있는 패턴을 추출하는 데 목적이 있습니다. 이때 손실 함수 를 사용하는 이유는 각 테스크나 문제의 특성에 맞는 최적의 학습을 유도하기 위해서입니다. 손실 함수는 모델이 학습 과정에서 최적화해야 할 목표(혹은 대상의 특성)를 정의하므로, 문제(대상 또는 환경)의 특성을 잘 반영하는 손실 함수를 사용하면 더 효과적이고 효율적인 학습이 가능합니다.

  • 문제의 유형: 회귀, 분류, 순위 매기기, 생성 모델 등 다양한 유형의 문제가 있습니다. 각 문제 유형에 따라 예측값과 실제값 간의 차이를 측정하는 방식이 다르므로, 이에 맞는 손실 함수를 선택해야 합니다.
  • 태스크의 목표: 같은 유형의 문제라도 태스크의 목표에 따라 최적의 손실 함수가 달라질 수 있습니다. 예를 들어, 객체 탐지에서는 바운딩 박스의 정확한 위치를 예측하는 것이 중요하므로 Smooth L1 Loss를 사용하는 반면, 세그멘테이션에서는 픽셀 단위의 정확도가 중요하므로 Dice Loss나 Tversky Loss를 사용할 수 있습니다.

 

다양한 손실 함수 사용하는 이유

크게 본다면 다 비슷한 문제로 보이는데, 어떤 것들이 다른걸까요? 또, 손실 함수를 변경하면서 어떤 이점이 얻을 수 있을까요?

  1. 데이터의 특성을 반영: 데이터의 분포, 이상치 존재 여부, 클래스 불균형 등 데이터의 특성에 따라 적절한 손실 함수를 사용해야 합니다. 예를 들어, 이상치에 강건한 Huber Loss나 클래스 불균형을 다루기 위한 Focal Loss 등이 있습니다.
  2. 수렴 속도와 안정성 향상: 손실 함수의 형태에 따라 최적화 과정에서의 수렴 속도와 안정성이 달라질 수 있습니다. 적절한 손실 함수를 선택하면 학습 과정을 가속화하고 안정적인 수렴을 유도할 수 있습니다.
  3. 새로운 인사이트 발견: 기존의 손실 함수로는 충분히 다루기 어려운 문제의 경우, 새로운 손실 함수를 고안함으로써 문제에 대한 새로운 인사이트를 얻고 해결책을 찾을 수 있습니다.

딥러닝 연구자와 실무자들은 주어진 문제와 데이터의 특성을 고려하여 최적의 손실 함수를 선택하거나 새로운 손실 함수를 설계함으로써 모델의 성능을 향상시키고자 합니다. 이를 통해 더 정확하고 효율적인 학습이 가능해집니다.

 


손실 함수 어떤 걸로 선택해볼까요?

손실 함수는 특정 범위의 데이터를 어느 정도 만큼 모델에 반영할 것인지 결정하는 역할을 하는 것으로 보입니다. 데이터의 정답과 예측값이 가까운 영역 또는 먼 영역으로 구분한다면, 서로 얼마나 멀리 있는 지에 따라 가중치를 어느 정도 크기 만큼 변경할 것인지 정할 수 있습니다.

Image Source: Wikimedia Commons

대략 빨간색과 초록색 선 사이의 정답에서 가까운 영역에서는 손실 함수 값을 작게 설정합니다. 손실 함수 값이 적다면 모델의 현재 상태에서 적은 양 만큼 변경합니다. 반대로 정답에서 먼 영역(빨강 이하 혹은 초록 이상)은 데이터가 정답에서 벗어나는 만큼, 큰 손실 함수 값으로 모델을 크게 변경합니다.

아래 영상에서 서로 다른 손실 함수가 어떤 면에서 차이를 보이는지 직접 예시로 확인해볼 수 있네요!

딥러닝 문제 유형에 따른 손실 함수

딥러닝에서 손실 함수(Loss Function)는 모델의 예측값과 실제 정답 사이의 차이를 수치화하여 모델의 성능을 평가하고 개선 방향을 제시하는 중요한 역할을 합니다. 손실 함수를 최소화하는 방향으로 모델의 파라미터를 업데이트함으로써 모델의 예측 성능을 향상시킵니다.

  1. 회귀(Regression) 문제:
    • Mean Squared Error (MSE): 예측값과 실제값 차이의 제곱 평균. 가장 일반적으로 사용되는 회귀 손실 함수입니다.
    • Mean Absolute Error (MAE): 예측값과 실제값 차이의 절댓값 평균. 이상치에 덜 민감합니다.
    • Huber Loss: MSE와 MAE의 장점을 결합한 손실 함수로, 이상치에 강건합니다.
  2. 이진 분류(Binary Classification) 문제:
    • Binary Cross-Entropy: 로지스틱 회귀에서 주로 사용. 실제 클래스와 예측 확률 분포 간의 차이를 계산합니다.
    • Hinge Loss: 서포트 벡터 머신(SVM)에서 사용. 마진을 최대화하도록 유도합니다.
  3. 다중 클래스 분류(Multi-class Classification) 문제:
    • Categorical Cross-Entropy: 실제 클래스와 예측 확률 분포 간의 차이를 계산합니다.
    • Sparse Categorical Cross-Entropy: 정수로 인코딩된 실제 클래스를 사용할 때 적용합니다.
  4. 시퀀스(Sequence) 관련 문제:
    • Connectionist Temporal Classification (CTC) Loss: 시퀀스 레이블링, 음성 인식 등에 사용됩니다.
  5. 생성 모델(Generative Models):
    • Reconstruction Loss: 오토인코더의 입력 복원 오차를 측정합니다. L1 Loss, L2 Loss 등이 사용됩니다.
    • Adversarial Loss: GAN에서 생성자와 판별자의 경쟁을 통해 학습합니다.

 

다양한 세부 태스크에서 활용되는 손실 함수

이 외에도 Triplet Loss, Contrastive Loss 등 특정 태스크에 특화된 손실 함수들도 있습니다. 문제의 특성과 데이터의 형태에 따라 적절한 손실 함수를 선택하는 것이 중요합니다. 또한 경우에 따라 여러 손실 함수를 조합하여 사용하기도 합니다.

Cross-entropy vs Focal loss

 

  1. 객체 탐지(Object Detection):
    • Focal Loss: 클래스 불균형이 심한 상황에서 효과적입니다. 잘 분류된 샘플의 손실 기여도를 줄이고, 잘못 분류된 샘플에 더 집중합니다.
    • Smooth L1 Loss: 바운딩 박스 회귀(Bounding Box Regression)에 사용되며, 이상치에 덜 민감합니다.
  2. 이미지 분할(Image Segmentation):
    • Dice Loss: 의료 이미지 세그멘테이션에 자주 사용되며, 두 세그멘테이션 마스크 간의 중첩 정도를 측정합니다.
    • Tversky Loss: Dice Loss의 일반화된 버전으로, False Positives와 False Negatives에 대한 가중치를 조정할 수 있습니다.
    • Focal Tversky Loss: Tversky Loss에 Focal Loss의 개념을 적용하여 어려운 픽셀에 더 집중합니다.
  3. 3D 비전:
    • Chamfer Distance Loss: 3D 객체 재구성 등의 태스크에서 두 점군(Point Cloud) 간의 대응 관계를 측정합니다.
    • Earth Mover’s Distance (EMD) Loss: 두 점군 간의 최적 운송 문제를 기반으로 한 손실 함수입니다.

 

https://arxiv.org/abs/1905.10675

 

  1. 메트릭 학습(Metric Learning):
    • Contrastive Loss: 유사한 샘플 간 거리는 가깝게, 다른 샘플 간 거리는 멀도록 학습합니다.
    • Angular Loss: 샘플 간의 각도 기반 유사도를 학습하여 더 효과적인 임베딩을 생성합니다.
  2. 강화 학습(Reinforcement Learning):
    • Policy Gradient Loss: 에이전트의 행동 정책을 최적화하기 위한 손실 함수입니다.
    • Q-Learning Loss: 최적의 행동 가치 함수를 학습하기 위한 손실 함수입니다.
  3. 페어와이즈 랭킹(Pairwise Ranking):
    • Margin Ranking Loss: 랭킹 문제에서 두 입력 간의 상대적인 순위를 학습합니다.
    • Triplet Loss: 얼굴 인식, 이미지 검색 등에 사용되며, Anchor, Positive, Negative 샘플 간의 거리를 최적화합니다.

와, 분야 별로 간단하게만 살펴보아도 굉장히 다양한 손실 함수가 사용되고 있네요! 이렇게 특화된 손실 함수들은 해당 태스크의 고유한 특성을 고려하여 설계되었으며, 일반적인 손실 함수보다 해당 태스크에서 더 나은 성능을 보일 수 있습니다. 하지만 태스크의 특성에 맞는 손실 함수를 선택하고 적절히 사용하는 것이 중요합니다.

 

마무리하며

오늘은 머신러닝의 중요 구성 요소 중에 하나인 손실 함수에 대해 알아보았습니다. 손실 함수는 새롭게 입력된 데이터와 자신이 예측한 결과 사이의 차이를 시스템이 스스로 계산할 수 있도록 하는 중요한 도구입니다. 이를 통해 많은 양의 데이터를 기계가 반복 처리할 수 있게 되었고, 점진적이고 통계적으로 알맞은 판단을 형성해갈 수 있게 되었습니다. 결국 새로운 환경에서 새로운 데이터를 맞닥뜨려도 당황하지 않고 본래의 성능을 유지할 수 있는 강건한 머신러닝 모델을 만들 수 있게 되다니, 멋지지 않나요!

많은 사람들이 머리를 맞대고 문제를 해결할 아이디어들을 차곡차곡 쌓아가는 과정이 이 분야의 매력이라는 점을 다시 한번 느끼는 기회였습니다.

 


Reference