label에 가중치를 준 MSE loss와, ensemble 방법 및 최종 모델 회고 #57
papari1123
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
[이슈 사항]
(룰에 문제가 되지 않는다면) 주최측에서 제공한 validation set과 합친 뒤 random sampling을 통해 train과 validation set 라벨 분포를 다시 맞추고 시작했어야 했다. 이 방법은 특정 라벨의 불균형을 조금 완화할 수 있는 방법이기도 하다.
label 2~3에서 모델의 성능이 낮게 나온다. 이 label 범위에서 학습할 데이터가 적어서 그런 점도 있고, 해당 라벨의 문장에 대한 STS 예측자체가 어려워서라는 경험적인 느낌도 있다.
→ 해당 구간에서 augmentation을 하는 것이 좋은 방법으로 생각된다.
→ 시간 내에 사용해볼 만한 augmentation tool 중에, koEDA에서 제공하는EasyDataAugmentation(EDA)와 AEasierDataAugmentation(AEDA)가 있었다.
→ 기타 파파고나 구글에서 제공하는 번역API를 사용해 RTT augmentation하는 방법도 있어서, 사용해봤는데 구글은 RTT결과가 나쁘고, 파파고는 결과가 그럴싸하지만 1만자 제한이 있었다.
→ 위의 논리에 따라 augmentation 외에 다른 방법도 고려해야 했다.
→ 좋은 모델을 선별한다고 해도, 특정 문장/특정 라벨에 대해서는 상대적으로 더 나쁜 모델이 있어 결국 최선의 예측 결과가 나오지 못할 수 있다.
→ 물론 soft voting을 위한 분산 감소 효과를 노리기 위해 soft voting을 위한 효과를 같이 가져가면 좋을 것 같다.
[아이디어]
[실험 방법 - 라벨 weighted]
[실험 결과 - 라벨 weighted]
데이터 전체에 대해, 예측값과 label값 간의 차이인 diff의 평균과 pearson 계수를 비교해보았다.
전체적으로 균일한 결과가 나왔으나, MSE_voter는 편차의 평균이 상대적으로 커 보인다. 그럼에도 pearson 계수는 비슷하게 나왔다.
이런 이해가 안되는 상황에 대해, 아래 내용을 참고하여 먼저 분석해보자.
결국 위 그래프 결과를 요약해주는 것이 피어슨 계수이며, 예측 편차가 커도 피어슨 계수는 작을 수 있다. 이는 피어슨 계수가 예측의 bias(위 그래프에서 pred_mean값)로 인한 오차를 상쇄해주기 때문이다. 다만 pred의 분산은 여전히 중요하다.
아쉽게도 이런 인사이트를 대회 이후에 얻었기 때문에, 단순히 편차를 최대한 줄이도록 가정해 설계한 loss함수들은 대회 관점에서 의미가 퇴색될 것으로 보인다.
그러나 대회를 벗어나서, 어쨌든 예측 편차를 줄인다는 것은 STS과제에서 유의미하다고 생각하므로 편차를 계속 분석해보자.
아래는 0~1 라벨(참값)에 대한 편차이다. 예상대로 0이나 1에 대해 가장 weight를 크게 준 wrMSE_0과 wrMSE_1이 좋은 결과를 보이고 있다. 단, roberta-large보다는 결과가 나쁜데, 이는
그러면, 만약 대회 평가지표가 편차의 평균이면, 위 결과에서 가장 잘나온 모델을 사용하면 될까? 문제는 모델이 예측을 수행할 때 label값이 주어지지 않는다는 것이다. 예를 들면, label이 4-5구간에서 잘 예측하는 모델을 쓰려면, 샘플의 label이 4-5 구간인 걸 알고 있어야 하는데, 알수가 없다.
그렇다고 해서, 위 결과를 아예 못써먹는 것은 아니며, 위 결과는 분류성능평가지표에서 사용되는 recall과 유사한 관점에서 사용될 수 있다. recall은 실제 true인 것 중에서 모델이 true라고 예측한 것의 비율이며, 위 결과 또한 특정 구간의 라벨을 가진 샘플에 대한 편차다.
하지만 이 결과로만 모델을 선정하기엔 문제가 있다. 특히 label weighted MSE는 가중치를 둔 구간에 예측을 몰빵할 위험이 있으며, 분류문제로 가정 시, 해당 구간에 대해 recall은 100%가 나온다. 그러나 샘플이 해당 구간에 포함이 안 되는, FP의 상황은 충분히 일어날 수 있다.
그러므로 구간대별 label 뿐 아니라, 예측구간 별 결과도 같이 확인하자. 이 결과는 precision을 구하는 방법과 유사하며, 위 결과와 좀 다른 양상을 확인할 수 있다.
그 결과, 구간대별로 wMSE_1_e12, wMSE_1_e12, wMSE_2_e12, focalMSE, wrMSE_4_e12이 “편차 평균”지표에서 좋은 모델일 가능성이 높다고 결론을 낼 수 있다.
물론 대회 지표는 피어슨 계수기 때문에, 대회에서 위 모델들이 구간별로 가장 좋은 결과를 낸다고 장담할 수는 없다.
번외로, 편차 이외에 라벨 구간 별 피어슨 계수도 확인해보자. label을 0~1로 제한하여 결과를 확인한다.
값이 너무 낮게 나왔다.
특정 구간 label에 해당하는 샘플만 선별할 때, 피어슨 계수가 낮게 나오는 이유는?
[실험 방법 - 앙상블]
라벨 구간은 코딩의 편의를 고려해 다음과 같이 5개의 구간으로 정했다.
라벨 구간 별로 성능이 좋은 모델 N(N=3)개를 선별한다. 성능의 기준은 다음과 같다.
모델 선정까지 끝났으면, 다음 soft voting과 weighted voting을 모두 활용해 앙상블 예측값을 계산한다.
이를
위 방법에 따라 i 번째 샘플에 대한 최종 예측 결과를$\sum_{j=0}^4pred_{i,j}*w_j/L$ 로 계산한다.
이 방법을 통해 앙상블을 이용한 분산 감소 효과(soft voting)와, 특정 라벨 구간을 전문적으로 맞추는 모델의 예측에 가중치를 부여해, 해당 구간에서 예측을 못하는 모델로 인한 성능 저하를 줄이는 효과(weighted voting)를 같이 가져갈 수 있다.
위 과정에서 hard voting(다수결로 투표된$pred_{i,j}$ 만 사용)이 아니라 weighted voting을 사용한 것은, 다수결로 인한 라벨 구간 예측이 잘못되었을 때 위험을 분산하기 위한 것임
분류 문제에서는 recall(참값 중 맞춘 비율)과 precision(예측값 중 참값 비율)을 모두 고려한 F1 score를 평가지표로 사용한다.
본 과제에서도, 한 가지 지표가 주는 편향성을 최대한 배제하기 위해 label 구간별 편차 평균의 역수와, 예측 구간 별 펀차 평균 역수에 대해, 조화평균 낸 결과를 score로 사용하였다. 각 구간별로 이 score가 높은 상위 3개의 모델을 선정하였다.
label 0-1
wrMSE_1e12
fine_tuning_mecab_e8
klue-roberta-large_last (focal loss는 대회 끝나고 결과를 본 거라, 실제로는 사용하지 못함)
label 2-3
[실험 결과 - 앙상블]
[인사이트]
Beta Was this translation helpful? Give feedback.
All reactions