과거의 것들/AI Tech boostcamp

AITech P-stage1 [Day 8] 앙상블 실패, f1loss로 학습해보는중

===================================

목표

어제 못했던 앙상블 해보기

 

 

==================================

행동

어제 mask, gender, age 각각의 모델에 대한 학습을 다 하고, 각 모델에 eval data 를 통과시켜 나온 결과를 합쳐 최종 결과를 내는 걸 만들었다. 결과는 실망스러웠다. 단일 모델로 했을 때보다 결과가 안 나왔기 때문이다.

age는 원래 딱 60살만 2 label을 가지지만 59살 이상을 2label로 가지게 했을 때 결과가 잘 나왔다. 또 epoch를 많이 돌리고 val loss와 val acc에 변화가 없어서 overfitting이라고 생각했지만 내가 overfitting이라고 생각한 checkpoint를 넣고 돌리면 결과가 더 잘 나왔다. 즉 학습을 엄청 많이 하는게 장땡인 것이다. 이거 말고 평소에 다른거 할 땐 언제나 overfitting이 일어나서 좀 낮은 epoch를 했어야 했는데 의외였다.

그래서 learning rate 도 처음부터 1e-5로 시작하고 lr이 줄어드는 step 조건도 줄이면서 진짜 진짜 val과 train에 변화가 없을 때 끝내고 있다. 또 loss가 acc이 목적이 아니라 f1 loss가 목적이 되었다는 것을 생각하며 모든 모델을 f1 loss로 학습시키고 있다. 어떻게 될 지는 잘 모르겠다.

 

==================================

회고

처음부터 앙상블로 시작했으면 작업시간이 줄어들었을 것 같긴 하다. 그래도 처음이라 notebook으로 작성한걸 py로 바꾸고, 단일 모델로 된걸 앙상블로 바꾸고 그 와중에 GPU memory out같은 오류 등을 겪었다. 이제 인지했고 이게 어떻게 보면 baseline code를 만드는 과정이었으니까 다음에 할 땐 괜찮아 질지도 모르겠다.