일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ODQA
- dfs
- 부스트캠프_AITech_3기
- 부스트캠프_AITech3기
- 정렬
- 프로그래머스
- 이진탐색
- 백트랙킹
- 구현
- 주간회고
- dp
- 이코테
- 개인회고
- 그리디
- 다이나믹프로그래밍
- 알고리즘스터디
- 파이썬 3
- 다시보기
- U_stage
- python3
- Level2_PStage
- 그래프이론
- 백준
- mrc
- 최단경로
- Level1
- Level2
- 기술면접
- 단계별문제풀이
- 알고리즘_스터디
- Today
- Total
국문과 유목민
[일일리포트] Day 45 (Level2_PStage_1) 본문
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.
▶ 오늘 한 일
Train_test_split 구현
팀 Competition에서 제공받은 베이스라인 코드에서는 Train_test split이 되지 않아서 default한 코드를 만들었다. 코드를 만들어서 모델을 바로 돌렸는데 성능이 별로 좋지 않게 나왔었다. Label이 30개가 있는데 데이터 불균형이 심해서 층화 추출 방법을 사용해보자는 얘기가 나왔고, 다른 팀원분께서 구현을 완료하셨다. 내일은 해당 코드를 사용해서 층화추출을 해보고자 했다.
오늘 만든 코드같은 경우에는 만드는데 크게 어렵지 않았고, 당장 모델이 구동되는 지, Wandb에서 eval log가 잘 찍히는지 등을 확인하고자 만들었었기에 손해는 아니라고 생각한다. 게다가 해당 코드를 구현하면서 찾았던 정보를 통해 도움을 드렸기 때문에 오히려 잘 됐다고 생각한다.
- 참고 사이트: https://rfriend.tistory.com/519
기호, 한자 제거
어제 피어세션 때 데이터 EDA를 보면서 sentence에 기호나 한자 같은 게 많이 등장하는 것을 확인했다. 해당 요소들의 경우 tokenize를 할 때, 개별 토큰으로 인식이 되었기에 학습에 문제가 될 것 같다는 얘기가 나왔다. 그 중에서 한자는 사용하는 게 나은 것 같다는 의견도 있었다. 따라서 기호를 제거하고, 한자는 선택적으로 제거할 수 있게 하는 코드를 작성했다.
추가적으로 오늘 피어세션에서 실제 의미있는 기호가 더 있을 것 같다는 의견이 있었다. 그래서 일단 1차적으로 데이터 전처리를 다음과 같이 진행하고, 추가적으로 데이터를 살펴보면서 유의미하다고 생각되는 데이터의 경우 제외시키려고 한다.
모델 테스트 (robert-large X 2회)
다른 코드를 작성하거나 공부하는 동안 서버가 노는 것 같아서 그 시간 동안 모델을 돌려보자는 의견이 나왔다. 나도 이번 주에는 제출이 많을 것 같지 않은데, 제출 한도(하루 10번)를 그냥 날릴 것 같아서 해보면 좋겠다는 생각을 했다. 그래서 KLUE데이터로 만든 모델 중에 가장 큰 모델인 'KLUE/robert-large'을 사용해서 모델을 학습했다.
마침 기호, 한자를 제거한 코드를 구현했기에 해당 코드의 성능도 확인할 겸 테스트를 진행했다. 오늘 총 2번의 학습을 했다. 첫 번째 학습에서는 Epoch를 20으로 주고, sentence 내 '기호, 한자'를 모두 제거했다. 대략 4시간 정도 학습을 했는데 제출 시 성능이 기준 점수보다 더 좋지 않았다. (baseline자체를 돌렸을 때를 기준으로 삼음) 그 이유를 두 가지로 봤는데, 하나는 '한자'가 학습에 영향을 미칠 수 있다는 것과 Epoch가 5이후로 loss가 오히려 늘면서 overfitting이 된 게 이유였던 것 같다.
그래서 두 번째 학습에서는 Epoch를 5로 뒀고, '한자' 데이터를 포함시키고 기호만 없애고 학습을 진행했다. 학습은 1시간 정도 소요됐고, 점수도 1.7점 정도 오르는 것을 확인할 수 있었다. 두 가지를 변경해서 어느 것이 더 큰 영향을 미쳤는지 모르겠지만 충분히 의미있는 테스트였다고 생각한다.
가장 기본적인 것들만 변경했는데도 이러한 성능향상이 있었다는 것은 꽤 의미있는 것 같다. 길게 보기로 했으니까 당장 눈 앞의 결과에 일희일비 하지 말아야겠다.
▶ 내일 할 일
내일은 팀원들이 데이터 전처리코드 작성한 것들을 develop으로 merge 시키고, 데이터 tokenizing방법에 대해서 상의를 해봐야겠다. 이번에 팀원들이랑 한 얘기 중 하나가 이번에 한 git 프로젝트 자체를 하나의 포트폴리오로 제출할 수 있을 정도로 잘 해보자는 것이었다. 그래서 commit rule도 정하고, branch 네이밍 룰도 정하고, 칸반보드도 사용하는 등 다양한 것을 시도해보려고 한다. 뭔가 내 욕심인 것 같으면서도, 나중에 다들 취업하는데 도움이 될 수 있을 것 같다고 생각해 적극적으로 어필했던 것 같다. 내가 얘기를 꺼낸 것 만큼 팀원들이 git을 사용하는데 있어 부담가지 않게 잘 배워야겠다.
추가적으로 주말에 wandb에서 진행하는 wandb 세미나를 신청했는데, 팀프로젝트를 진행할 때 사용할 수 있는 좋은 정보를 얻을 수 있을 것 같아 기대가 된다.
'IT 견문록 > 2022_부스트캠프 AITech 3기(100일)' 카테고리의 다른 글
[10주차] 개인회고 (0) | 2022.03.25 |
---|---|
[일일리포트] Day 46 (Level2_PStage_2) (0) | 2022.03.25 |
[일일리포트] Day 44 (두 문장 관계 분류) (0) | 2022.03.23 |
[일일리포트] Day 43 (단일 문장 분류) (0) | 2022.03.22 |
[일일리포트] Day 42 (NLP 개괄, 전처리, BERT) (0) | 2022.03.21 |