Ordinal Log Loss: A simple log-based loss function for ordinal text classification
🔢

Ordinal Log Loss: A simple log-based loss function for ordinal text classification

Tags
NLP
논문리뷰
COLING 2022
Published
Published September 8, 2022

Github

ordinal-log-loss
glanceable-ioUpdated Sep 14, 2022
 

Paper PDF

COLING 2022에 억셉된 버전은 아직 ArXiv에 올라오지 않았고, 이전 ACL에 제출한 OpenReview PDF버전이 있다.
(이번 글은 해당 OpenReview 버전으로 리뷰)
 

무슨 문제를 푸려고 하나?

기존의 Categorical 분류는 → Cross Entropy Loss를 쓰는 경우가 99%로, 너무 당연하게도 CE가 성능도 좋기도 하고, 보편적이기도 해서, “분류는 CE” 라고 할 정도로 기본값이 되었다.
한편 이러한 문제는 아래와 같이 “분류이지만, 순서가 있는" Ordinal Data에 대해서는 썩 좋은 성능을 보여주지 못한다.
notion image
예를들어 위와 같이 성적 등을 분류하거나 할 때, A, B, C 순으로 순서가 있다고 봐야 하지만 기존의 CE Loss는 해당 a,b,c는 단순히 독립적인 label일 뿐, 서로의 상관관계를 이해하지 못한다.
즉, 특정 Input에 대해서 “A를 B로 잘못 분류한 것”과 “A를 C로 잘못 분류한 것"에 대해 동일한 Loss값으로 학습한다는 점에서 Optimal한 Loss라고 보기는 어렵다.
따라서, 해당 A-B-C의 ordinal 관계를 이해하는 Loss를 만드는 것이 필요하다.
 

기존연구

기존에도 Ordinal categorical data를 분류하기 위한 여러가지 방법론들이 있다.
  1. Ordinal Binary Classification
    1. → 각 class를 0/1 binary 분류로 나눠서 학습하는 Loss
  1. Threshold Methods
    1. → N개의 class를 연속된 실수 값으로 취급해서 처리하기 (일종의 regression처럼 만들기)
  1. Loss-Sensitive classificatiion
    1. → Prediction ↔ Label 간 거리가 멀 수록 더 큰 Penalty를 부과하기
      • Weighted Kappa Loss
      • Earth Mover’s Loss
      • Soft Labels
 

OLL: Ordinal Log Loss?

이 페이퍼에서 제안하는 Ordinal Log Loss는 아주 심플하게 아래와 같다.
CE가 Positive Label에 대해서만 loss를 계산하는 것과는 반대로, OLL에서는 Negative Label에 대해서 Loss를 계산한다.
“The idea behind the OLL is to penalize bad predictions instead of rewarding good predictions like the majority of the losses mentioned before do.”
이때, 정답 label로부터 거리가 ‘먼' 모델의 예측값에 더 큰 Penalty를 부과하는 방향으로 (CE가 Positive한 label로 예측하도록 loss를 부여하는 것과 정 반대로) Loss를 만든다.
위 수식에서 는 일종의 hyperparam이고, 기존에 있던 유사한 Loss에서 로 바꿔주는 방향으로 수정하였다.
기존의 Loss도 거의 비슷하지만, 가장 큰 이슈는 해당 loss는 Desired Local Minimum에 converge하지 않는 이슈다.(즉, 학습이 제대로 수렴하지 않는다.) → 즉 이렇게 수정된 OLL은 제대로 수렴을 한다!
 

적절한 값?

페이퍼에서 제안하는 값은 각 Task의 Category 갯수에 따라서 달라지는 것이 큰 듯 하다.
실제 3개, 5개로 분류되는 Downstream task에서는 약 1.5 정도를 적정값으로 본다. (실험적으로)
 

실험 & 결과

실험은 총 4가지 데이터셋에 대해서 진행.
  1. SNLI (RTE): [Entailment, Neutral, Contradiction] 세 가지 라벨
  1. Amazon Review Corpus: [1,2,3,4,5]점
  1. Yelp Review Dataset: [1,2,3,4,5]점
  1. SST-5: [1,2,3,4,5]점
아래 2-4 데이터셋은 모두 최악(1점) ~ 최고(5점)의 데이터셋.
 

Metrics

단순히 Categorical 분류를 위한 Accuracy 혹은 F1-Score는 Ordinal classification에 대해서는 명확한 성능을 보여주는 지표가 아니다.
→ A등급을 B로 분류한 것 vs A등급을 F로 분류한 것 = 동일한 점수
따라서, 아래와 같이 거리에 기반한 Metric들을 다수 사용한다.
 
  1. Off-by-k Accuracy
    1. → 정답 label과 실 label의 거리가 K 이하인 것들을 정답으로 치는 Accuracy Score
      notion image
  1. MAE for Classification
    1. → 정답-예측 간 평균 거리
      notion image
  1. MSE for Classification
    1. → 정답-예측간 제곱 거리
      notion image
  1. Kendall Tau
    1. → Rank correlation
      notion image
 

Model

BERT-tiny 작은 모델을 기반으로 학습을 진행했다.
데이터셋 자체가 거의 다들 90점대 나오는 쉬운 분류 task이기도 해서, BERT-base 혹은 BERT-large같은 크기의 모델을 사용할 경우에는 모델 성능 자체만으로 높은 점수가 나와서, 저자들은 의도적으로 낮은 데이터를 선택.
 

실험에 사용한 Loss

  • OLL (논문꺼)
  • Cross Entropy
  • weighted kappa loss
  • soft labels
 

실험결과

notion image