네이버부스트캠프 AI tech 10주차 회고

1

협업에 익숙해져가고 있는 편

종합적인 대회 회고는 이번 주차에 대회가 완전히 완료된 이후에 작성하고자 한다. 이번에는 간략하게 내 1-2주를 돌아보고자 한다.

✏️ 10주차 회고

새로운 팀원과 함께 나가보는 첫 대회. 내가 컨택을 해나가며 모은 팀원이기에 잘 할 것이라는 기대감과 잘 해야만 한다는 걱정도 컸던 것 같다. 거기에 저번 대회 때 성적이 기대한 만큼 나오지 않았었기에 이번만큼은 만회하고 싶다는 감정이 많았다. 하지만 그러면서도 성적에만 너무 과몰입하기 보다 어떻게 하면 더 높은 성능을 기대해볼 수 있을까 연구해보고 공부해보는 시간이었던 것 같다.

🛠 모델링

이번 대회에서도 저번 대회처럼 전반적인 모델링 부분을 담당했다. 모델의 코드를 빠르게 파악하고 data를 load하는 부분과 stratify k_fold 작업을 진행했다. 이 부분 코드를 빠르게 효율화하지 않으면 추후에 dataset 부분에서 지속적으로 오류가 발생했을 것 같기 때문이다.

Custom Stratify K fold

이번 데이터는 특이하게 동일 문장에 대해 다른 Entity들을 Tagging 해야 하는 경우가 있었기에 sentence가 중복되는 데이터들이 있었다. 이렇게 중복되는 데이터들이 train과 valid에 나눠져 있으면, eval score에서 cheating에 대한 우려가 있을 것이라 판단해 이 부분을 해소하는 방식으로 코드 작업을 했다.

for fold, (train_idx, val_idx) in enumerate(kfold.split(total_train_dataset, total_train_label)):
        
        print("fold : ", fold)

        #run= wandb.init(project= 'klue', entity= 'boostcamp-nlp3', name= f'KFOLD_{fold}_{args.wandb_path}')
        
        train_dataset= total_train_dataset.iloc[train_idx]
        val_dataset= total_train_dataset.iloc[val_idx]
        train_label = total_train_label.iloc[train_idx]
        val_label = total_train_label.iloc[val_idx]

        train_dataset.reset_index(drop= True, inplace= True)
        val_dataset.reset_index(drop= True, inplace= True)
        train_label.reset_index(drop= True, inplace= True)
        val_label.reset_index(drop= True, inplace= True)
        
        temp = []    
        
        for val_idx in val_dataset.index:
            if val_dataset['is_duplicated'].iloc[val_idx] == True:
                if val_dataset['sentence'].iloc[val_idx] in train_dataset['sentence'].values:
                    train_dataset.append(val_dataset.iloc[val_idx])
                    train_label.append(val_label.iloc[val_idx])
                    temp.append(val_idx)
                
        val_dataset.drop(temp, inplace= True, axis= 0)
        val_label.drop(temp, inplace= True, axis= 0)

해당 방식을 사용하니 competition에서 성능의 약간의 상승을 볼 수 있었다.

🏹 Mislabel 조사 및 처리

데이터를 살펴보니 이상하게 labeling되어 있는 데이터들이 상당히 있는 것을 확인할 수 있었다. 데이터가 3만개가 넘기 때문에 해당 데이터들을 모두 조사하는 것은 불가능하기 때문에 나올 수 없는 경우의 수에 대해 전처리를 할 수 있는 코드를 만들어주었다.

예를 들어, train에서 친구 관계로 나와야 하는 데이터에 대해 둘 중 한 명이라도 사람이 아닌 경우

이들을 데이터 단에서 전처리를 진행해주어 cleansing 작업을 했다. 결과적으로 근소하게 성능 상승을 볼 수 있었다.

🛠 특별했던 점

지난 대회에서는 단일한 폴더에 각자 작업을 하다보니 conflict가 나는 경우가 많았다. 그래서 이런 부분을 최소화하고자 각자의 폴더를 만들어 작업한 후에 최종 custom_baseline에 올리는 식으로 변경했다.

이를 통해 confilct도 줄이고 각자 좋은 코드들만 모으고 빠르게 확인할 수 있어 효율적으로 코딩을 진행할 수 있었다.

🎙 노션을 통한 커뮤니케이션

좋은 협업은 좋은 커뮤니케이션에서 온다. 이 부분을 모든 팀원들이 알고 있기에 알게 된 정보를 모두에게 공유하는 것에 힘을 많이 썼던 것 같다. 또한 매일 회의록을 작성하며 각자 집중하고 있는 분야를 공유했다.

특히나 실험의 경우 결과와 함께 의견을 적어두어 동일한 실험과 실패를 반복하지 않도록 신경을 많이 썼던 것 같다.

💡 중간 평가

아직 완전히 성능이 나오지는 않았지만 3등이라는 매우 좋은 성적을 보이고 있다. 또한 이 성적이 급격한 상승으로부터 이루어진 것이 아니라 계단식으로 단계적으로 상승했다는 점이 매우 뿌듯했다. 여전히 대회 기간이 남아있고 해볼 실험도 많기에 그만큼 올라갈 수 있다는 것을 의미한다고 생각한다. 남은 기간동안도 화이팅 내 자신!!

profile
프리미어와 IDE만 있다면 무엇이든 만들 수 있어

0개의 댓글