본문 바로가기

머신러닝 & 딥러닝 공부/해커톤 기록

네이버 AI RUSH 2021 참여 후기 (2)

반응형

 

 

 

안녕하세요~!

27년차 진로탐색꾼 조녁입니다!!

 

오늘은 상반기에 참여했던 네이버 채용연계용 AI해커톤 'CLOVA AI RUSH 2021' 후기를 이어서 남겨보도록 하겠습니다! 

전반적인 진행과정은 앞선 글에 남겨두었습니다!! 

 

오늘은 2번과 3번 , 진행하며 노력했던 것과 그를 통해 얻었던 것들을 정리해보겠습니다! 

 

 

목차

1. 해커톤 과정 및 내용 → 2. 진행하며 노력했던 것 → 3. 해커톤을 통해 배운 것 → 4. 앞으로 공부 방향 → 5. 느낀점 및 포부

 

2. 진행하며 노력했던 것

  • 서류 및 코딩테스트 → 1일 1커밋 & 1일 1코테
: 서류를 제출할 때 깃허브에 레파지토리 갯수 쓰는 란이 있었다. 이 때부터 1일 1커밋을 시작하게되었다. 당시에는 보여주는 무언가가 있어야 뽑힐 것 같다는 마음에 시작했지만, 지금은 내게 "꾸준함"의 가치를 알려주고 있다. 코딩테스트는 시즌이 코테 많이 보던 시즌이라 따로 준비한 건 없었다. 그냥 그 당시엔 하루에 1개는 무조건 풀자는 마음이 있었다.

 


  • 1라운드 (지도개발 - 버스시간 예측)

1. 공식문서를 읽었다.

사실 첫날에 포기할까 했다. 그런데 포기할까 마음먹고 나니 어차피 포기할거면 하루에 1%씩만 나아지자는 마음이 들었다. 그래서 그 다음날부터 내가 모르는 것을 한 가지씩 줄여갔다.

네이버에서 제공하는 NSML이라는 플랫폼을 사용해야했는데, 자세한 설명없이 공식문서 주소만 알려주셨다. 하지만 나는 CLI 환경에서 명령어를 사용하는 거나 공식문서를 읽는 게 익숙치 않았다. 처음엔 arg parser에 대해 python 공식문서를 읽으며 예시코드들을 공부했다. 이게 내가 처음으로 정독한 공식문서였다. 이후엔 모델을 설계할 때나 옵티마이저를 실험할 때도 Tensorflow 나 Keras 공식문서를 읽으며 진행할 수 있었다.
arg- parser

 

2. 모델 형상관리 

1라운드를 하며 가장 중요하다고 느낀 것이었다. 데이터의 양이나 과제가 복잡하지 않았기 때문에 과도한 모델 튜닝보다 모델과 파라미터의 파인튜닝이 중요했다(고 생각한다.) 모델 튜닝에선 레이어의 종류 & 갯수 & Dropout 계수등을 조정했고, 옵티마이저의 종류와 옵티마이저 파라미터들도 조정하며 실험했다. 그 외에도 하이퍼 파라미터(학습률, 배치사이즈, 에폭)을 조정하며 실험하였다. 이 때, 경우의 수가 너무 많기 때문에 이전에 실험했던 것들을 잘 기록해야 성능의 변화를 파악할 수 있었다. 다만 아쉬운 점은, NSML 환경하에서 어떻게 해야할지 몰라서 따로 노션에 DB를 만들어 관리해야했다. 추가로 다음엔 더 잘 관리하기 위해 인프런 "MLOps"강의를 수강하고 있다.
MLOps 강의

 

3. 데이콘 활용

데이콘에서 기존에 진행했던 '버스 운행시간 예측' 대회에서 공유되었던 코드나 아이디어를 활용하였다. 특별히 "folium"이라는 라이브러리를 알게되어 예시코드로 주어진 경-위도를 활용해 버스가 지나간 길을 찍어볼 수 있었다. 이를 통해 column 을 어떤 것을 선택할 지 고민하는데 도움을 얻을 수 있었다. 사실 활용한 아이디어들이 스코어를 올리진 못했지만, 케글이나 데이콘 이라는 좋은 통로를 알게되었다.
데이콘 - 버스 운행시간 예측

 


  • 2라운드( 일본어 영수증 메뉴분석 , 광고 pCTR 구하기 , 대규모 쇼핑데이터 활용 일반적인 유저 임베딩)

1. 해당 분야 논문과 코드를 찾아봤다.

우선 광고예측 과제에 대해서 케글 , 데이콘, 구글등 다양한 경로로 탐색했다. 그러곤 DeepFM , FM 에 대한 논문을 읽고 모델을 구현했다. 그러나 NSML 기반으로 구현된 코드들 수정하는 데 엄청 오래 걸렸다. 메모리 문제도 발생해서 열을 선택할 때 몇개를 선택안했다.약 2-3일이 걸려서 구현 및 학습시켰지만 결국 성능이 안나왔다. 흑.

 

2. T 아카데미 강의를 들었다.

최종으로 참여한 일본어 영수증 분석 과제가 Bert모델을 사용했기때문에 우선 Bert 모델에 대한 강의를 들었다. 강의를 들으며 언어모델의 개념부터 RNN → 어텐션 → Bert 모델까지 다양한 것들을 배울 수 있었다. 이를 기반으로 소스 코드를 더 이해하고 튜닝할 수 있었다.

 

3. 회사들의 기술블로그를 찾아봤다.

처음엔 해당 과제를 내준 네이버 팀들의 기술블로그를 찾아봤다. 뭔가 아이디어가 없을 지 얻기 위해 찾아봤지만 사실 직접적으로 관련된 글을 찾기는 힘들었다. 그러나, 광고예측 과제와 같은 경우 카카오 기술블로그에서 실제 카카오 광고예측이 어떻게 작동하고 있는 지, 그리고 꼭 최근에 나온 모델이 더 성능이 좋은 것은 아니고 각 상황에 맞는 모델이 있다는 것도 배울 수 있었다.

 


 

3. 해커톤을 통해 배운 것

 

  • 코딩실력이 늘었다.
터미널 환경에서 작업하는 것도 더 익숙해지고, 코드를 짤 때 함수형보다 객체형으로 작성하는 것에 익숙해질 수 있었다. 파이토치는 이번에 아예 처음 다뤄봤고, main 파일 만들어서 모듈 호출하는 코드도 이번이 초면이었다.

해커톤 시작전에는 CLI 환경보단 쥬피터환경만 활용했다. 그러나 해커톤을 시작하고부터 하루도 빠짐없이 터미널 창을 봤다. 그리고 주로 인터프리터 환경에서 함수형 프로그래밍을 했었다면, 해커톤할 때는 코드를 NSML로 제출해서 거기서 학습 > 바인딩하는 과정을 거치기 때문에 객체형 코드작성을 경험할 수 있었다.

 

  • 나만의 습득방법이 늘었다.
 케글이나 데이콘과 같은 커뮤니티를 통해, 각 언어나 패키지의 공식문서를 통해 (혹은 논문을 통해) 습득하는 방법을 알게되었다.

 해커톤을 하기전에는 그저 구글링을 통해서 많은 것들을 해결했다. 구글링도 물론 유용하지만 구글링만 사용하는 건 한계가 있다. 우선 정확하지 않은 정보일 수도있고(버전이 다르거나, 사용환경이 다르거나, 그냥 다르거나 ) , 다른 사람이 찾고 써놓은 정답만 있기 때문에 그다지 얻는 것이 많지 않다.

 그러나 공식문서나 논문을 통해 공부하게 되면 정말 생각보다 많은 걸 알 수 있다. 커뮤니티를 통해 얻을 수 있는 건, 다른 개발자들의 접근방식을 배울 수 있다. 공식문서에는 정형화된 예시나 사용법만 나와있다. 하지만 케글에서 커널을 보면 각국의 개발자들의 기발한 생각들이 많다.

(말이 좀 웃기지만) 모르는 것을 배우는 방법도 "배워야한다"고 생각한다.

 

  • 정리하는 방법을 배웠다.
웃기지만 해커톤 기간 가장 많이 사용한 Tool 중 하나가 노션(Notion, 구글의 메모앱)이다. 우선 1라운드 때 형상관리 할때부터 사용하기 시작해서, 2라운드 때 DeepFM , Bert , LGBM 등 다양한 모델들에 대해 공부하고 공부한 내용들을 정리하면서 많이 사용했다. 이후엔 공부하면서 얻은 아이디어들을 적고 적용해본 결과를 정리했고 그 덕에 이후 방향성도 잡을 수 있었다.

대회기간 다른 사람들의 글이나 강의로 된 정보를 내 글로 정리하면서 배우는 것도 많았다. 그리고 시도하는 과정과 결과를 기록하다보니 대회 참여중에도 머릿속 두루뭉실함을 줄이고 방향성을 가지고 임할 수 있었다. 돌아보면 이때 정리해둔 것들 덕분에 내가 뭘 했는 지, 뭘 배웠는 지도 알 수 있었다.

 


 

그리고 해커톤을 통해 얻은게 또 있습니다. 이미 참 감사하게도 많이 배웠지만 , 네이버는 참 좋은 곳이다.. 

2라운드 참여자 전원에게 CLOVA AI RUSH 2021 스페셜 굿즈를 보내줬습니다 ㅠㅠ 지금도 텀블러 매일 잘 쓰고 있고, 핸드폰 그립톡도 잘쓰고 , 스티커도 노트북에 잘 붙여놨습니다. (티셔츠는 ..ㅎㅎ 소장품입니다. 너무 얇더라..) 

 

 

 아니!  또 있습니다. 이건 해커톤에 참여하지 않았어도 컨퍼런스에 참여한 모든 사람들에게 보내줬는데, 바로 립스탑백!! 

잉? 그게 뭐지? 싶어서 사진봤더니 그냥 에코백이구나 싶었습니다. 근데 실제로 받아보니 에코백보다 크고 소재도 시원해서 실용적이라 마음에 쏙 들었습니다. 다만 현재 4단계라 집에만 있다보니 쓸일이 없어 나중에 쓰려합니다!!

+ 그리고 로고 앞면에 안박아줘서 너무 고마워요 네이버!! 

 

 

해커톤이 끝나고 후기를 남기면서도 마음속에 감사함이 아직 남아있다. 

이번에 AI Boost Camp 에 참여하게되면서 아쉽게도 여름 인턴십 면접 기회는 포기했지만 22년 내에 사용할 수 있는 서류 + 코테 면제권도 2장 얻었고 이렇게 수상확인증도 보내줬다. 

 

 

이제 감사한 마음은 고이 간직하고,

앞으로 어떻게 준비해야할 지 준비의 방향성과 포부, 전체적인 느낀점(아쉬웠던 점 & 좋았던 점) 을 정리하고 후기를 마칠 예정입니다. 

지금까지 읽어주셔서 감사드리며 앞으로 제 방향이 궁금하신 분들은 다음 글로 넘어와주세요~!

반응형