boostcamp ai tech 3기 4주 회고

2월 7일 월요일

이번 주부터 본격적으로 DL에 관한 수업이 시작되었다. 솔직히 말하자면 강의 내용을 완벽히 이해하진 못했다. 얼핏봐도 오랜 기간에 걸쳐서 자세히 뜯어봐야 하는 내용인 것 같은데 그걸 30분 내외 길이의 영상으로 압축시키니 내용이 많이 생략된 것 같다. 마스터님이 최대한 꼭 필요한 부분을 집어서 설명하시긴 했다만 스스로 더 많은 내용을 찾아가는 노력이 필요하다고 느꼈다. MLP의 전체 흐름에서 강의에서 현재 보여주는 내용이 무엇을 의미하는지 알고자 집중해서 강의를 들었다.

피어세션에서 강의와 별개로 과제와 further question에 있는 부분을 팀원들과 의견을 주고 받았다. 명쾌히 해결된 건 일부였다.

  • MLP 코드 train 부분에서 가중치 초기화를 왜 하는지? : 모르겠다.
  • Test 부분에서 255로 나눠주는 코드가 있는데 왜 이런 부분이 필요한지? : RGB 값만큼 나눠주어서 0부터 1 사이의 결과를 유도해서 정규화하려는 의도인 듯
  • cross-validation을 하기 위해서 어떤 방법이 또 있나? : 찾아보니 많더라
  • Time series의 경우 일반적인 k-fold cv를 사용해도 되는가? : 안된다. 다만 nested cross validation이라는 특별한 방법이 있긴 한 것 같다.

오늘도 알고리즘 문제를 풀었다. 오늘은 내가 문제를 고르는 차례였다. ‘음식물 피하기’를 풀었다. 전형적인 너비우선탐색 및 깊이우선탐색 문제로 골랐다. 매번 팀원들의 전반적인 실력을 고려해서 문제를 찾는데, 이게 은근히 재밌다. 오랜만에 알고리즘 기본 문제 유형을 복습하는 기회가 된다.

2월 8일 화요일

오늘은 CNN에 관한 수업을 들었다. convolution 정의와 연산 방법, ILSVRC에서 수상한 다섯 네트워크와 발전 역사에 관한 이론 지식을 배웠다. 해가 지남에 따라 빠르게 발전하는 기술을 보니 재밌었다. 어제 MLP 코드와 오늘 CNN 코드를 보고 여전히 코드가 바로 안 읽히는 것에 아쉬움이 생겼다.

피어세션 때 수업 내용에서 생긴 궁금한 점에 대해 얘기를 나누었다. Fully Convolutional Network에 관해서 아는 내용을 공유했다. 알고리즘 문제는 최지민님게서 ‘올림픽’을 골라주셨다. 예전에 푼 문제지만 은근히 실수하기 쉬운 문제여서 까다로웠다.

여담으로, 어제부터 ‘강한 연결 요소’라는 알고리즘에 흥미가 생겨 공부하고 있다. 다만 참고할만한 파이썬 소스코드를 찾기가 쉽지 않아서 c++ 소스코드를 토대로 공부 중이다. 기본 코드를 보면서 이론 공부를 하고 나서, ‘Strongly Connected Component’ 문제를 시도했다. 파이썬 소스코드와 c++ 소스코드를 해석한 것으로 두 개의 답안 만들어서 둘 다 제출했는데, c++ 코드를 파이썬으로 번역해서 만들어 본 코드가 조금 더 빨랐다. 둘 중에 어떤 게 더 나은지 좀 더 공부해보고 나에게 좀 더 편한 스타일을 채용해야겠다.

2월 9일 수요일

벌써 내일이면 목요일이다. 오늘은 RNN과 LSTM에 관한 강의를 들었다. 특히 transformer에 관한 부분은 복잡해서 여러 번 반복해서 들어야만 했다. 물론 아직 제대로 이해한 것 같진 않다. encoding 부분은 이해했지만 decoding으로 넘어가면서 길을 잃었다.

새로운 팀원을 슬슬 구해야 하는 시기라서 관심 있는 주제에 관한 글이 올라오고 있다. 나도 세 개의 주제를 정해서 글을 쓰긴 했다만 이걸 어떻게 어필하고 사람을 찾거나 혹은 사람이 찾아올 수 있을진 모르겠다. 스몰톡톡? 에 글을 쓰는 방법도 있지만 모더레이터가 되어야 하기에 살짝 부담스럽기도 하다.

오늘 피어세션에선 많은 이야기가 오고 갔다. 퀴즈와 과제, 그리고 수업 내용에 관한 모르는 부분이 많아서 얘깃거리가 많았다. 질문을 하고 자신의 생각을 공유만 했는데 50분이 흘러갔다. 그래도 남은 시간엔 알고리즘 문제를 풀었다. 오늘은 전태양님께서 ‘신입 사원’ 문제를 가져왔다. 그리디 & 정렬 문제였는데 어렵진 않았으나 생각보다 시간을 소요했다.

오늘은 멘토링 시간도 가졌는데, 취업을 어떻게 준비할지에 관해 조언을 해주셨다.

  • 시계열 데이터에서의 cross-validation 방법 : nested cross validation… 한 달짜리 데이터가 있다면, 마지막주 외엔 학습데이터로 정해서 validation을 하고 마지막주는 테스트 데이터로 사용
  • 코드 스니펫 같은 걸 만들어서 미리 자신만의 모듈 코드를 작성해보기
  • 도메인은 크게 중요하지 않다. 어차피 이것저것 다하게 된다.

2월 10일 목요일

Generative model에 관한 강의를 시청했다. 첫 번째 강의는 그럭저럭 이해했지만, 두 번째 강의는 하나도 이해를 하지 못했다. 짧은 강의 시간에 복잡한 내용을 녹여내려다 보니 발생한 결과인 것 같다. 많은 게 생략된 느낌이었다. 사용되는 용어부터 처음 듣는 거라서 내가 앞 강의에서 빠트린 내용이 있나 싶었다. 물론 이 부분은 심화 내용이라 당장은 깊이 이해할 필요가 없는 것 같았다. 시간 날 때 추가적으로 공부해야겠다.

오피스아워 때 과제 해설을 했는데, 지금까지의 오피스아워 중 단연 최고였다. 조교님께서 하나하나 잘 알려주셔서 이해하기 좋았다.

피어세션 시간에 Generative model에 관해서 팀원들과 얘기를 나누었는데, 다른 분들도 어렵게 느꼈다고 한다. 이 날 푼 알고리즘 문제는 ‘날짜 계산’이었다. 지난 멘토링 시간에 멘토님께서 슬랙에 추천하는 백준 문제집을 올려주셔서 거기에서 문제를 다 같이 골랐다. 쉬웠다. 브루트포스 문제라는 걸 알고 있는 데다가 메모리 제한이 4mb여서 쉽게 방법을 찾아서 곧바로 코드를 썼다.

2월 11일 금요일

남은 시각화 강의를 들었다. 대부분의 강의를 수요일까지 다 수강했기에 할 게 많지 않았다. 복습과 정리에 시간을 썼다.

스페셜 피어세션 때 다른 팀원 분들을 만나서 여러 얘기를 나눴다.

피어세션 때 ‘사탕 게임’ 문제를 시도했는데, 나는 풀지 못했다. defaultdict, deepcopy를 써서 시도했지만 첫 시도에서 틀렸다. 언젠가 다시 시도해야겠다.

19시 반에 글쓰기 첫 모임을 가졌다. 총 아홉 명이었는데, NLP 분들이 많았다. 늘 그렇듯이 다른 캠퍼 이야기를 들어보면 다들 이것저것 많이 하신 분들이라 과거의 나를 반성하게 된다.