Search

Soft voting

우리의 태스크에 앙상블 방법 중 하나인 Soft voting을 적용시켰을 때, 성능에 미치는 영향을 비교 분석해 보았습니다.

소프트 보팅이란?

앙상블 방법 中 보팅 방식의 일종이다. 각 모델들의 예측 확률을 모두 더해 평균을 구하고, 이들 중 가장 높은 레이블을 최종 결과값으로 선정한다.

기대 효과

앙상블의 일반적인 효과를 기대할 수 있습니다.
1. 캐글 스코어 성능 개선 2. 일반화(Generalization Capability)와 강건성(Robustness) 향상 : 일부 특정 데이터만 잘 설명하는 것이 아니라 범용적인 데이터도 적합한 모델을 의미합니다. 즉, 잘 일반화하기 위해서는 이상치나 노이즈가 들어와도 크게 흔들리지 않아야(=robust)합니다.
Plain Text

적용 방법

우리 태스크의 일반적인 추론 방법은 아래와 같습니다. 추론 단계에서 각 토큰에 대한 Logit을 계산하고, Logit이 가장 큰 값을 N개 뽑아내어 의미 있는 토큰을 가려냅니다.
이미지 출처 : VumBleBot
Soft voting을 적용하려면 여러 모델에서 나온 Logit을 토큰 단위로 모두 더해 평균을 구합니다.
이후 가장 큰 값 N개를 뽑아냅니다.

결과 분석 및 결론

모델
편집거리(dev.csv)
편집거리(bestfit)
bin file
csv file
AIHub 데이터셋 (55F)
Open
3.3143267848586486
2.934630738522954
pytorch_model_55F(1).bin
55F.csv
AIHub 데이터셋 (20F)
Open
7.267848586487782
7.527445109780439
pytorch_model_20F(batch4).bin
20F.csv
max_answer_length 10
Open
1.922855773838045
1.1631736526946108
pytorch_model_mal10.bin
mal10.csv
max_answer_length 40
Open
2.151892668902731
1.624251497005988
pytorch_model_mal40.bin
mal40.csv
Hard voting
Open
1.9032103497843795
1.216317365269461
Hard voting without 20F
Open
1.8926689027311931
2.2345309381237524
Soft voting
Open
1.9894585529468136
1.2737025948103793
softvoting.csv
Soft voting without 20F
Open
2.0023957834211785
1.1694111776447105
softvoting_without_20F.csv
베이스라인은 KoBigBird를 Train Dataset에 대해 Fine-tuning한 모델입니다.
하이퍼파라미터는 max_input_length 1024 / max_answer_length 15 / train_batch 4 입니다.
베이스라인을 기준으로, 데이터셋을 변경하거나 하이퍼파라미터를 변경하여 모델을 학습시켰습니다. 55F는 AIHub의 순수한 55000개 데이터를 의미하고, 20F는 여기에 특수 문자 제거 및 문어체 변경을 적용한 데이터입니다.
편집거리 (dev.csv)는 모델의 validation dataset에 대한 성능을 나타내며, 편집거리 (bestfit)은 7월 31일 기준 캐글 리더보드에서 가장 좋은 성능(1.716)을 기록한 submission과의 편집거리를 나타냅니다. 객관적인 성능보다는 유사도를 파악할 수 있는 지표입니다.
베이스라인의 성능이 기본적으로 우수하기 때문에, 앙상블을 적용하였을 때 큰 폭의 성능 향상을 확인할 수는 없었다. 그러나 미묘하지만 성능 개선의 여지를 확인할 수 있었으며, 특히 하드 보팅 시에 소프트 보팅보다 뚜렷한 결과를 보였습니다. 때문에 우리는 하드 보팅을 중점적으로 활용할 것을 결정했습니다.

회고

다양한 모델을 사용하는 경우 서로 다른 Tokenizer를 사용하게 되고, 서로 다른 Token이 생성됩니다. 이 경우 모델마다 Logit의 갯수가 달라져서 각 Logit을 더해주는 것이 불가능해집니다.
때문에 우리는 동일 모델(KoBigBird)에 대해 하이퍼파라미터와 데이터셋을 달리하여 여러 모델을 만들었고, 이에 대해 Soft voting을 진행했습니다.
다양한 모델을 사용하지 못함과 보다 정확한 방법으로 진행하지 못함에 아쉬움이 남았고,
추후 소프트 보팅을 사용할 때에 고려할 방법들을 조사했습니다.
1.
모델마다 Logit의 갯수가 다르다 ⇒ Offset 기준으로 Logit을 더해 Soft voting할 것
2.
모델마다 Logit의 분포가 다르다 ⇒ 각 모델의 Logit에 대해 Standardization할 것

Reference