좋은 모델보다 잘 맞는 모델: v58 신챔피언
이전 글에서는 Fable이 맡고 있던 책임과 컨텍스트를 여러 세부 에이전트로 분리하고, 실험의 준비·실행·검증·기록을 나누는 하네스를 만든 과정을 정리했다.
이제 다시 모델 성능을 높여야 했다.
당시 최고 제출은 v49였다.
- 챔피언 고전 ML
- RoBERTa seed48
- kf-deberta seed79
- kf-deberta seed78
- 신경망 평균 0.6 + 고전 ML 0.4
LB는 0.7831843076이었다.
앞선 앙상블 분해 실험에서 고전 ML과 세 신경망이 모두 실제 점수에 기여한다는 것을 확인했다.
실행시간이 제한에 가까웠기 때문에 모델을 하나 더 추가하기는 어려웠다.
남은 방법은 기존 멤버 중 하나를 다른 후보로 교체하는 것이었다.
과거에 좋았던 모델을 다시 넣어보면 어떨까
v49의 세 신경망 멤버는 다음과 같았다.
- RoBERTa seed48
- kf-deberta seed79
- kf-deberta seed78
이 중 한 자리만 교체한 세 개의 제출을 준비했다.
| v57 | kf seed78 → kf seed74 |
| v58 | kf seed78 → kf seed81 |
| v59 | RoBERTa seed48 → RoBERTa seed51 |
한 번에 하나의 멤버만 바꿨기 때문에 결과의 차이를 해당 교체와 연결해 볼 수 있었다.
seed74와 seed51은 이전 실험에서 사용했던 모델이었다.
seed74는 과거 일부 조합에서 seed78보다 좋은 결과를 보였고, seed51도 오랫동안 RoBERTa 앙상블의 멤버로 사용됐다.
따라서 이전에 검증된 모델을 현재 조합에 다시 넣어보는 것은 자연스러운 선택이었다.
seed81은 새롭게 준비한 kf-deberta 후보였다.
이 모델이 기존 seed78 자리를 대체할 수 있는지 확인하고자 했다.
결과는 과거의 서열과 달랐다
서버 결과는 다음과 같았다.
| v49 | 기준: s48 + k79 + k78 | 0.7831843076 |
| v57 | k78 → k74 | 0.7827231194 |
| v58 | k78 → k81 | 0.7840764953 |
| v59 | s48 → s51 | 0.7824698576 |
반면 seed78을 seed81로 교체한 v58만 상승했다.
v49: 0.7831843076
v58: 0.7840764953
약 0.00089가 올랐고, v58은 새로운 챔피언이 됐다.
seed81이 더 좋은 모델이었던 걸까
seed74는 이전의 다른 앙상블에서는 충분히 경쟁력이 있었다. seed51 역시 오랫동안 사용했던 모델이었다.
그런데 현재의 seed48 + seed79 조합에 넣었을 때는 점수를 낮췄다.
반대로 seed81은 현재 조합에서만 seed78보다 좋은 결과를 만들었다.
이 결과로 확인한 것은 모델 사이에 고정된 절대 서열이 존재한다는 사실이 아니었다.
같은 모델도 어떤 멤버들과 함께 사용되느냐에 따라 앙상블에서의 가치가 달라졌다.
앙상블에서 중요한 것은 각 모델의 단독 성능만이 아니었다.
기존 멤버들과 같은 샘플을 맞히고 같은 샘플을 틀리는 모델이라면, 단독 성능이 높아도 추가적인 가치는 작을 수 있다.
반대로 단독 점수가 비슷하더라도 다른 멤버가 놓치는 샘플을 보완한다면 전체 앙상블은 좋아질 수 있다.
v58의 상승은 seed81이 모든 조건에서 가장 강한 모델이라는 증거가 아니었다.
현재의 RoBERTa seed48 + kf seed79 조합에서는 seed81이 seed78보다 더 잘 맞았다는 결과였다.
좋은 모델과 좋은 앙상블 멤버는 다르다
이전까지는 후보 모델을 평가할 때 개별 성능을 먼저 확인했다.
단독 점수가 높거나 과거 다른 제출에서 좋은 결과를 보인 모델이라면 앙상블에서도 도움이 될 가능성이 높다고 생각했다.
하지만 v57, v58, v59의 결과는 그것만으로는 부족하다는 것을 보여줬다.
과거의 결과만 보면 seed74와 seed51도 충분히 좋은 후보였다.
하지만 현재 조합에서는 두 모델 모두 기존 멤버보다 약했다.
즉, 다음 두 질문은 서로 달랐다.
- 이 모델은 단독으로 좋은가?
- 이 모델은 현재 앙상블에 필요한가?
앙상블을 개선하려면 두 번째 질문에 답해야 했다.
모델 하나를 교체했을 때 전체 점수가 오르는지는 해당 모델 자체의 성능뿐 아니라, 나머지 멤버들과의 오류 관계에 따라 결정됐다.
모델 후보를 평가하는 기준도 달라졌다
이 결과 이후 후보 모델을 보는 기준이 조금 바뀌었다.
이전에는 다음과 같은 순서로 생각했다.
- 단독 성능이 높은 모델을 찾는다.
- 높은 모델들을 앙상블에 넣는다.
- 평균을 내면 더 좋아질 것으로 기대한다.
하지만 실제로는 성능이 높은 모델을 순서대로 넣는 것만으로 최적의 조합이 만들어지지 않았다.
현재 구성에서는 이미 세 개의 신경망이 서로 다른 역할을 하고 있었다.
새 후보가 기존 멤버 하나를 대체하려면 단순히 점수가 높아야 하는 것이 아니라,
남은 두 모델과 함께 사용했을 때 더 나은 조합을 만들어야 했다.
따라서 후보는 독립적인 모델로만 평가할 것이 아니라, 현재 챔피언의 특정 슬롯을 교체한 상태에서 평가해야 했다.
기존 방식:
후보 모델 자체의 성능 비교
바뀐 방식:
현재 챔피언의 한 멤버를 후보로 교체한 뒤 전체 조합 비교
어떤 모델이 좋은지를 찾는 문제에서, 어떤 자리에 어떤 모델이 잘 맞는지를 찾는 문제로 바뀐 것이다.
seed draw의 의미
seed만 바꿔 학습한 모델은 같은 데이터와 구조를 사용한다.
그럼에도 초기 가중치, 데이터 순서, dropout과 최적화 경로가 달라지면서 서로 다른 결정 경계에 도달할 수 있다.
이 차이가 단독 성능에서는 크지 않더라도 앙상블에서는 의미를 가질 수 있었다.
기존 멤버와 비슷하게 학습된 모델은 오류도 많이 겹칠 수 있다.
반면 다른 학습 경로를 거친 모델은 일부 샘플에서 다른 판단을 만들 수 있다.
따라서 seed 후보를 추가로 학습하는 목적은 단순히 운 좋게 점수가 높은 모델을 찾는 것만은 아니었다.
같은 학습 레시피 안에서 현재 앙상블이 놓치고 있는 부분을 다르게 판단하는 모델을 찾는 과정이었다.
다만 seed를 바꾼다고 항상 더 좋은 조합이 만들어지는 것은 아니었다.
v57과 v59는 오히려 점수가 내려갔다. v58만 상승했다.
결국 seed 번호 자체보다, 그 학습 결과가 현재 다른 멤버들과 어떤 관계를 만드는지가 중요했다.
v58에서 실제로 바뀐 것
v58의 최종 구성은 다음과 같았다.
- 챔피언 고전 ML
- RoBERTa seed48
- kf-deberta seed79
- kf-deberta seed81
v49와 비교하면 바뀐 것은 하나였다.
kf-deberta seed78
→ kf-deberta seed81
앙상블 방식과 가중치는 그대로 유지했다.
새로운 데이터나 새로운 backbone을 추가한 것도 아니었다.
멤버 하나를 바꾼 것만으로 신기록을 만들었다.
이 결과는 앙상블 후반부의 개선이 반드시 새로운 구조에서만 나오는 것은 아니라는 점을 보여줬다.
현재 조합을 정확히 이해하고, 중복되는 역할을 줄이며, 더 잘 맞는 멤버를 찾는 것만으로도 개선이 가능했다.
이 실험에서 얻은 정보
이번 구간에서 가장 크게 얻은 정보는 세 가지였다.
첫째, 과거에 좋은 결과를 보인 모델이라도 현재 조합에서 같은 가치를 가지지는 않았다.
seed74와 seed51은 이전 실험에서 충분히 사용 가치가 있었지만, v49의 멤버를 교체했을 때는 점수가 내려갔다.
둘째, 개별 모델의 성능과 앙상블 기여도는 다르게 봐야 했다.
모델의 가치는 단독 점수만으로 결정되지 않았다. 나머지 멤버들이 놓치는 샘플을 보완하는지가 중요했다.
셋째, 앙상블 후보는 현재 챔피언 안에서 직접 비교해야 했다.
과거 제출이나 단독 성능으로 모델의 가치를 추정할 수는 있지만, 최종적인 판단은 같은 슬롯을 교체한 결과를 기준으로 해야 했다.
정리
v49 이후에는 모델을 더 추가하기보다 기존 멤버를 교체하는 방향으로 실험했다.
v49: s48 + k79 + k78
0.7831843076
v57: k78 → k74
0.7827231194
v58: k78 → k81
0.7840764953
v59: s48 → s51
0.7824698576
과거에 사용했던 seed74와 seed51은 현재 앙상블에서는 점수를 올리지 못했다.
seed81만 seed78을 대체하며 새로운 최고 점수를 만들었다.
이 결과로 seed81이 모든 조건에서 가장 좋은 모델이라는 결론을 내린 것은 아니었다.
확인한 것은 더 구체적이었다.
현재 RoBERTa seed48 + kf seed79 조합에서는 seed81이 seed78보다 더 적합한 앙상블 멤버였다.
앙상블 개선은 성능이 높은 모델들을 순서대로 쌓는 문제가 아니었다.
각 모델이 어떤 오류를 만들고, 다른 멤버의 오류를 얼마나 보완하는지를 고려해 조합을 구성하는 문제였다.
v58은 0.7840764953으로 새로운 챔피언이 됐다.
다음 글에서는 v58 이후 다시 데이터와 학습 구조를 확장하고, 마지막으로 metaT 모델을 앙상블에 넣어 최종 점수 0.7866974871까지 올린 과정을 정리할 예정이다.
'고민의 흔적.. > AI Agent 행동예측 해커톤' 카테고리의 다른 글
| (회고)Dacon AI Agent 행동 예측 대회 (0) | 2026.07.25 |
|---|---|
| (연구일지 #15 최종 모델 선정)Dacon AI Agent 행동 예측 대회 (0) | 2026.07.25 |
| (연구일지 #13 자동화 하네스 구축)Dacon AI Agent 행동 예측 대회 (0) | 2026.07.21 |
| (연구일지 #12 민트 재검증)Dacon AI Agent 행동 예측 대회 (0) | 2026.07.21 |
| (연구일지 #11 앙상블은 정말 필요한가?)Dacon AI Agent 행동 예측 대회 (0) | 2026.07.21 |