학습 정리 & 배운점
# 231218
학습 정리 및 배운점 📚
- stratified k-fold cross validation 기능을 구현하였는데, 코드가 매우 지저분해지고 개별적으로 개발하는 게 어려워서 Pull Request를 포기하였는데, 좀 더 보완해서 그냥 적용할 걸 그랬다. 실무에서는 잘 안써도 생각보다 대회에서는 이 방법을 매우 많이 사용한다고 함.
- 랩업 리포트 작성 시작; 기능 개발, 실험 관리는 모두 함께 진행하였지만, 그 결과를 공유 페이지에서 기록하지는 않아서 취합을 시작함. 적으면서, 아 어떤 부분은 꼼꼼하게 했고 어떤 부분은 꼼꼼하게 안했구나를 깨달음
- FM, FFM은 성능이 안나오는데 WDN, NCF는 성능이 잘 나오는 것을 보고 DeepFM을 구현해봐야겠다는 생각을 하게 됨. 강의 자료 되돌아보고, 논문의 그림과 수식을 참고하여 DeepFM 구현함. 그런데.... 임베딩 구현에서 약간의 실수를 한 상태로 2일 정도를 보냄. 다행히 학습 등에는 전혀 문제가 없는 실수였으나, 필요한 양보다 많은 row를 가지는 임베딩 레이어를 구현했고 팀원이 짚어줘서 수정했음..고마워..
- 이렇게 같이 코드 리뷰를 해보고 이해한 것들을 공유하면서 더 좋은 방향으로 나아갈 수 있어서 너무 좋다 우리 팀 최고!
- 나도 기여한 점을 하나 꼽자면, 팀원들이 모듈로 구성된 파이썬 파일에서 작업 결과를 확인하고 수정하는 것이 어렵다고 했다. 파이썬의 모듈은 외부에서 import 하여 사용할 수 있고, 나는 이미 데이터 전처리 과정를 확인하고 반영하기 위해 ipynb 파일에서 모듈을 불러와 사용하고 있었고, 이를 notebooks/ 아래에 추가하여 공유해주었다.. 팀원이 잘 사용했다고 얘기해줘서 뿌듯했던 부분!
# 231219
학습 정리 및 배운점 📚
- ISBN은 기본적으로 책의 ID에 불과하나, 넓게보면 국제적인 책 분류 코드로 이 안에 국가그룹, publisher, title 이라는 정보를 내재하고 있음. 심지어 2자리, 4자리, 3자리이며, 이를 속성 정보로 활용해볼 수 있겠다는 생각에 모델에 직접 반영을 해보았다. 큰 차이는 아니었지만, CatBoost과 DeepFM 모두에서 RMSE가 감소하여 유의미한 변수였다고 판단함
- book summary 정보를 pre-trained BERT로 임베딩하여 DeepFM 모델에 추가해봄. 처음에는 train/val loss가 급감하여, WOW 개이득이다 하면서 바로 제출하여 public score를 확인하였는데, 오히려 떨어졌다..;; 나중에 확인해보니 private score는 조금 향상되었으나 그 정도가 크지 않았다. 따라서 book summary의 임베딩을 추가하면 기존의 모델이 모델링하던 정보를 잃을 수 있고, 일반화의 성능에는 긍정적이지만은 않을 수 있겠다는 생각이 들었다.
- summary는 책의 요약 정보. 사실 나는 책의 평가와 책의 요약 정보는 어느 정도 관련이 있을 거라고 생각한다. 내가 모델링을 잘못했을 수도 있다. 또는 summary 자체가 결측 비율이 꽤 높은 편인 것도 성능이 향상되지 않은 주 원인일 거라고도 추측한다. 이 실험만으로는 솔직히 summary 못미덥다라고 결론 내리지 못할 것 같고, 시간이 허락한다면 이 미련을 좀 더 태워보고 싶다. (이를테면 summary의 결측을 GPT로 채워보거나, title로 대체하는 방법 등이 있을 것 같다..)
- 조교님의 오피스아워를 통해 counterfactual logging이라는 방법에 대해서 알게 되었다. A/B 테스트 시에 일반적으로 A 집단에는 A 모델을 적용하고 A에 대해서만 로깅을 하는데, B에 대해서도 같이 로깅을 하는 방법이라고 한다. B를 적용안했는데 어떻게 B를 로깅하지? 라는 의문이 생겼는데, B가 도는 것처럼 로깅을 하면 된다고 답을 주셨다. A/B 테스트에서 counterfactual logging은 아직 잘 이해되지 않지만, 추천 시스템에서 사용자에게 노출된 아이템 중 일반적으로 사용자가 선택한 아이템만 로깅하게 되는데, 노출되었는데도 선택하지 않은 아이템에 대해서도 로깅하는 것을 말하는 것 같다. 이렇게 보면 모순적인 개념은 아닌 듯하다!
# 231220
학습 정리 및 배운점 📚
- 이 날은 실험한 것들을 정리하고, control-case가 잘 구분되지 않은 것에 대해서 재 실험을 진행한 날. 회사에서는 매일매일 작업 내용을 상세히 기록했는데, 막상 대회를 하려니 마음이 조급해서 정리가 잘 안된 것도 사실이다. 그래도 마감보다 훨씬 전에 미리미리 작업한 것들을 정리해보고, 필요한 경우 다시 실험해볼 수 있었기에 다행인 것 같기도.... 조급해도 내 페이스 찾아서 빠른 걸음으로 챙길 거 챙기면서 걸어가는 사람이 격하게 되고 싶다.
- 정리를 하면서 느낀 건데, 일반적으로 특성의 수가 크게 달라지지 않는 이상 전처리 방식에 모델의 학습 경향이 급격하게 바뀌지는 않는 것 같다는 생각이 들었다. 사실 이전 회사에서 AI 모델링 시에도 당연히 데이터를 전처리하였는데, 그 때는 별도의 통계 테스트나 모델에서 성능이 잘 나오지 않아도 일반적으로 적용하는 방법들을 적용해두고 모델을 개선하는 방향으로 실험을 했었는데 그 방식도 어느 정도는 일리가 있었던 것 같다. 다만, 사용 가능한 모든 정보를 다 쓰는 것보다는, 영향이 적을, 노이즈가 심한 특징을 빼는 것은 큰 영향을 주기도 하므로, 전처리에도 어느 정도 시간을 투자하는 것은 맞다. 다른 조의 사례를 들어보니, 변수 처리마다 ANOVA를 통해 검정을 하였는데, 이 방법이 항상 머신러닝, 딥러닝에서 적합한 방법은 아니나 default 전처리 방안을 찾아두는 데에는 굉장히 유용할 것으로 보여 쇼킹했고, 나도 다음 대회나 프로젝트, 연구에서는 이런 방식을 써보는 것이 좋겠다는 교훈을 얻었다.
# 231221
학습 정리 및 배운점 📚
- 못들었던 강의를 좀 듣고, 랩업 리포트를 업데이트하며 실험을 어느 정도 마무리한 날!
- 개발한 전처리 모듈의 일부가 반영이 안되었는데, 지난 날에 깃헙 정리 좀 해야겠다는 조언을 듣고... 바로 PR을 올렸다. 이슈를 열어놓고 닫지 못하는 것 매우 가슴 아픈 일인데, 바쁘게 달려가다보면 누군가 모니터링하지 않는 이상 꼭 이렇게 되는 것 같다. 모델의 개선도 중요하지만, 우리가 의도한 방향으로 잘 가고 있는지 미처 챙기지 못한 것이 있는지 챙기면서 가는 것이 더더욱 중요한 듯하다. 비단 프로젝트뿐 아니라 나의 삶 자체에서도 꼭 필요한 시간인 것 같다....!
- 작성하던 랩업 리포트에 기반해서 발표에 활용한 자료를 만들기 시작했다. 처음으로 영어학원도 띵까고 만들었는데, 밤에만 해도 이걸 어떻게 잘 정리하지? 했는데, 22일 아침이 되니 많이 개선되어 다행이다..
- 앗 그리고 이 날은 플젝 마감일. 다양한 앙상블 조합으로 제출해보았고, 안타까운 차이로 4등에 위치하게 되었다. 그래도 제출 횟수는 우리가 1등! 많은 시도를 하며 엎어져보았고, 다양한 토론을 서로 해봤다는 측면에서 칭찬해! 고생했어!
# 231222
학습 정리 및 배운점 📚
- 발표를 자원하였지만, 막상 방대한 양을 조리있게 전달하려니 잘 할 수 있을지 걱정이 되었다. 발표 직전까지도 끝까지 한 번 훑지를 못해서 걱정이 이만저만이 아니었는데, 다행히도 적당히 전달을 한 듯하다. 우리 조는 이번 대회에서 아쉽게 4등을 하게 되었는데, 등수보다도 적용해보지 못한 방법들에 대해 아쉬움이 큰 것 같다. k-fold CV도 해보려고 했었고, embedding도 개선해보고 싶었고, 이미지를 잘 활용해보거나 앙상블 시 보완 가능할 모델의 조합을 찾아 제출해보고도 싶었는데... 시간과 기회가 매우 한정적이었기에 어려움이 있었다. 그래도 이번 플젝과 발표 준비를 하며, 우리 나름대로 결론을 내려보려고 노력하고 잘한 점, 잘못한 점을 짚어보며 배운 것이 굉장히 많았던 것 같다.
- 다른 조와의 스페셜 랜덤 피어 세션을 통해, 다른 조는 어떤 방법으로 접근했고 성능을 내었는지 들었다. 특정 조는 통계 테스트도 해보고, CV도 해보고, 데이터를 깊이 있게 들여다봤다는 것을 알게되어 캬.....멋지다고 생각했다. 또 seed를 바꿔본다던가, 다른 특성을 가지는 모델들을 섞어본다던가, 실패한 것 같아서 가슴이 아프다던가 여러 경우를 들으니 다들 정말 많은 시도를 해봤고, 나도 다음에는 해봐야지 라는 아이디어들을 얻게 되었다. 또 나만 다 못해본 거 같아서 아쉬운 건 아니구나.. 위로도 되었다. 남은 3개월 동안도 함께 성장해갈텐데, 다양한 캠퍼들과 여러 생각을 공유해봐야겠다.
- 그리고 마스터클래스를 통해, conventional 한 접근 방식은 있지만, 최적의 방향은 오히려 없다 라는 생각이 들었다. 나는 내가 가는 방향이 이게 맞을까? 에 대한 걱정을 자꾸만 하게 되었는데, 숙련된 경험자도 어떤 부분은 너무 당연하게 지나가서 놓치는 부분이 있다는 것을 들으니, 목표와 배경에 대해서 내 나름의 정의를 내리고, 가설을 세운 뒤, 이를 고도화해보며 나만의 방식을 찾아 공유하고, 다른 사람의 인사이트도 참고하며 계속해봐야 될 것 같다는 믿음이 생겼다!
7주차 총평 🤔
- 지난 6주차, 7주차 간 우리 조 너무 고생 많았다!
- 양아치처럼 다음 주는 빠질 예정인데, 그래도 refresh 만큼 삶에 행복과 여유를 주는 요소가 없으니, 이 과정을 즐기고 불태울 의지를 더 충전해봐야겠다!
'회고 🤔 > 네부캠 AI Tech' 카테고리의 다른 글
[네부캠 AI Tech] 9주차 학습 정리 🤓 (1) | 2024.01.05 |
---|---|
[네부캠 AI Tech] 8주차 학습 정리 🤓 (1) | 2023.12.29 |
[네부캠 AI Tech] 6주차 학습 정리 🤓 (1) | 2023.12.15 |
[네부캠 AI Tech] 6주차 첫째 날 학습 정리 + 일기 (2) | 2023.12.12 |
[네부캠 AI Tech] 5주차 학습 정리 🤓 (1) | 2023.12.08 |