2022년 6월, 7월 회고

·2022년 7월 30일
1

6월

6월 말에 회고를 썼어야 했는데 미루고 미루다 이제야 쓴다...! 덕분에 기억이 희석되어 버려서, 했던 일은 깃헙에 기록해둔 것 위주로 써본다.

우선 회사에서 한 일

Model Finetuning with KITTI dataset

  • KITTI Dataset
    • real life blackbox images
    • inaccurate flow data
    • 200 ref-target image pairs with ground truth
    • 400 test image (no label)
    • 이미지별로 사이즈 다 달라서 [368, 1232]로 crop하여 학습
  • Fine tuning
    • FlyingChairs [384, 512]로 학습된 small correlation residual block 모델 가중치 load하여 학습
    • generalization을 목적으로 하는 fine tuning -> weight가 KITTI dataset으로 편향되는 것을 방지하고자 normalization layer freeze (내가 언급한 이유는 뇌피셜임. https://gaussian37.github.io/dl-concept-batchnorm/, https://stackoverflow.com/questions/63016740/why-its-necessary-to-frozen-all-inner-state-of-a-batch-normalization-layer-when 참고하였음 - Batch norm freezing의 효과에 대해서는 조금 더 생각해봐야 할 것 같다.)
    • 학습이 제대로 되지 않음
      • Train loss가 1epoch부터 상승, 이후 다시 감소
      • Valid loss가 계속 상승 후 수렴
      • (문제 해결 시도 1) Data augmentation 추가 (random crop, scale)
        • 데이터 개수가 너무 적어서 금방 overfitting 되는 것은 아닐까?하는 생각에 시도해봄
        • 효과없음
        • Flow data라서 rotate 등의 augmentation을 구현하기가 어려웠음
        • 더 다양한 augmentation을 시도해보았으면 어땠을지 궁금함
      • (문제 해결 시도 2) Freezing extractor layer / gru unit
        • 효과 없음
    • 추정되는 실패 원인
      • FlyingChairs로만 학습된 모델 (즉, general하지 않은 모델)에 너무 작고, 데이터 특성이 다른 데이터셋을 학습시키려고 했음
      • 1epoch만에 overfitting된 것으로 생각됨
      • 실제로, RAFT의 training schedule을 참고해보면 FC, FT, Sintel 등의 데이터로 먼저 학습한 뒤에 KITTI를 학습시킴.
    • 해결방안
      • RAFT training schedule 따라서 학습 시도
      • AutoFlow 이용하여 학습
        • random한 객체들이 합성된 이미지로, 도메인에 국한받지 않고 다양한 이미지 학습 가능할 듯

Searching Optimal Channel Size

Real life dataset inference하여 warp해본 결과, flow가 조금씩 밀리는 모습. (특정한 부분이 틀리기보다 전반적으로 조금씩 오차가 있었다)
small correlation을 구현하면서, feature extractor을 지나고 나면 image w, h 각각 1/8씩 downsizing되게 설계되어있다. 이 과정에서 channel 수는 계속 32로 고정했었다. 여기서 정보 손실이 일어난거 아닐까? 채널 수를 조정해보면 어떨까? 하는 생각에 실험 시작

  • feature extractor 부분에서 downsampling이 일어나는 부분이 총 3번 있음. 각각의 out channel 수를
    • 32-32-64
    • 32-48-64
    • 16-32-64
      로 바꾸어보면서 실험.

Experiment Result

  • Residual block으로만 실험했음
ChannelEPEPSNRMACs
32-32-321.646470918.399673452522087424
32-32-641.400258318.516215934243193856
32-48-641.374614718.544817565790892032
  • 시각화 결과, 경계 부분을 더 뚜렷하게 잘 잡아냄
  • 그러나 여전히 flow가 조금씩 밀리는 부분은 존재
    • downsampling이 너무 과하게 일어나는 것은 아닐지. 연산량때문에 small corr을 택했는데, 다른 부분에서 연산량을 줄이고 corr은 그대로 둬야할지.
    • extractor 외에, flow를 predict하는 gru unit에 대한 연구도 필요할 것 같다.
  • flow가 큰 부분을 잘 잡지 못하는 문제 있음 -> extractor kernel size를 늘려보는 시도를 해보고 싶음
  • naive하게 채널 수를 늘린거라, 분명이 redundant한 연산이 있을 것임. layer별 채널 크기와 성능 사이 연관성 파악하여, critical factor만 남기고 불필요한 연산을 줄일 필요 있음.

회고

  • 실험 결과가 왜 이렇게 나왔을지 생각하고, 증명하고, 그것을 토대로 다음 step을 정하는 과정에 익숙해질 필요가 있음. 지금은 살짝 무지성 느낌
  • 타인에게 실험의 당위성/결과/next step을 매끄럽게 논리적으로 정리해서 말하는 연습할 필요가 있음
  • 발표자료를 매끄럽게 준비하는 연습. 처음 보는 사람들도 쉽게 이해 가능하도록.
  • 실험에 대한 insight는 대체 어디서 얻을 수가 있을까?
  • idea를 바로 실행할 수 있는 힘을 기른 것 같아서 굿
  • 조금 더 적극적으로 소통하는 연습하기
  • 고생많았다 많이배웠다 최고!

그리고

진짜 행복한 일이 많았다.

우선 모델 발전에 큰 기여를 했다는 이유로 6월 그룹 월례회에서 시상을 받았다...ㅎㅎㅎ 진짜 뿌듯하고 행복했다. 첨엔 아 나 이제 퇴사하니까 챙겨주시네 감사하당,,, 이라고 생각했는데, CA님께서 인턴이 시상 받은건 처음이라고 말씀해주셔서 진짜 행복해서 지구뿌실뻔했다.

그리고 퇴사하는 날, 인사팀분들께서 내 생일이라고 서프라이즈 케이크도 준비해주시고, 같은 파트에서 나 잘 챙겨주시던 분들이 영상편지까지 준비해주셔서 눈물파티를 했다. ㅜㅜ 지금 생각해도 뭉클하다. 너무 좋은 곳에서 좋은 분들을 만나고, 피가되고 살이되는 경험을 한 감사한 3개월이었다.

그리고 강민이가 내 생일이라고 오마카세를 데려가줬다! 내가 제일 좋아하는 오구 이모티콘이 그려진 케이크도 준비해줬다. 진짜 평생 기억하고 싶은 행복한 하루였다.

7월

연구실 학부인턴 생활을 시작했다. 연구실 생활에 관심이 가게 된 이유는,

  • 실제 현업을 경험해보니 내 능력치, 경험, 지식에 허점이 많다는 생각이 들었다. 부캠을 수료하고 나서, 나도 이제 인공지능 알거 다 안다~! 취업가즈아~!라고 생각했었는데, 막상 현업을 경험해보니 내가 가진 것은 그렇게 깊지 않은 지식과 경험이라는게 느껴졌다. 내가 취업시장에서 매력적일까...?에 의문이 들었다. 내가 딥러닝, 머신러닝으로 커리어를 밀고 나가려면 역량을 더 키워야 할 것 같다는 생각이 들었다.
  • 어떤 실험 결과가 있을 때, "이게 왜 되는거여?" 혹은 "이게 왜 안되는거여?"에 대한 대답을 찾기가 참 어려웠다. 딥러닝이 아무리 블라인드 네트워크라지만, 이건 왜 되는거고 이건 왜 안되는건지 도저히 감이 오지 않을 때 너무 답답했다. 그럴 때 선배가 종종 도와주셨는데, 어떤 가정을 설정하고 그에 대한 검증을 하면서 해답을 찾아나가는 선배의 모습이 참 멋지고 부러웠다. 그 가정을 설정 할 때, 지식과 경험(=짬)이 꽤 큰 요소라는 생각이 들었다. 그리고, 그런 일련의 연구 과정을 막힘없이 수행해내는 능력을 키우고 싶다는 생각이 들었다.
  • 회사에 있을 때 선배님들께서 "정말 AI향 회사를 가지 않는 이상, 회사에 머신러닝이나 인공지능 시니어가 생각보다 많지 않다" + "그러니 너가 대학원에 가서 시니어가 되어라" 라는 말을 아주! 많이 들었다.

연구실

논문리딩

AI/ML 전반 논문 리딩, multi-modal, continual learning 논문 리딩+세미나를 진행했다. 한 달동안 읽은 논문만 거의 16편이 되는 것 같다. 광범위한 분야의 굵직한 논문들을 싹 훑었다. 그동안은 딥러닝(supervised) 위주 공부만 했는데, 여기서 self-supervised, unsupervised learning이나 contrastive learning 등등 새로운 분야의 논문을 읽으면서 AI쪽 시각이 더 트여졌다. 다만 짧은 시간에 읽어야 하는 논문이 많았어서 하나하나를 아주 진득하게 보진 못한게 아쉽다. 블로그에 논문리뷰 포스팅을 하면서 복습하려고 노력했는데 시간이 부족했다ㅠㅠ SimCLR 논문은 꼭 다시 한 번 보고 포스팅할 예정이다.

나는 BERT 세미나를 담당했다. 자연어처리쪽은 왠지 진입장벽이 높아서 내가 닿을 수 없는 영역의 느낌이라 애써 외면했었는데, 어쩌다 담당하게 되어서 거의 일주일동안 BERT 세미나 준비에 몰두했던 것 같다.
애초에 transformer 기반 모델이라, BERT를 이해하려면 BERT -> Transformer -> Self-Attention -> Seq2Seq -> Word Embedding..,,, 요렇게 타고타고 들어가서 싹 다 이해했어야 했다. 그리고 NLP task에 대한 지식도 전무해서, 각 task가 의미하는게 뭔지, 토크나이징이 뭔지부터 이해했어야 했다. 그런데 이런 공부를 하면서 조금 더 인사이트가 생긴 것 같다. Vision 공부할 때에는 그냥 feature map=input 정보가 표현된 matrix 정도로만 이해했는데, embedding의 개념, 그리고 그 embedding이 공간상에 어떻게 표현되고 이용되는지, 어떤게 잘 embedding된 것인지 생각해볼 수 있었다.

논문 세미나는 처음이라 어떤 정도로 내용을 커버해야 하는지 내용 구성에 있어서 어려움이 있었다. 그리고 NLP 전반 흐름 + 논문에 나온 내용 전부를 다뤘는데, 조금 후회했다..^^ 다음부터는 조금 더 컴팩트하게 구성하고, 특히 Experiment는 주목할 만한 중요한 것들만 짚고 넘어가면 좋을 것 같다. 내용을 컴팩트하게 구성하되, 듣는 사람 입장에서 이해가 잘 되게 하려면 어느정도 부가 설명이나 나만의 언어로 풀어서 설명하는게 필요할 것 같고, 이 부분에 대해선 더 연습을 해야 할 것 같다.

그리고 선형대수, 확률에 대한 복습이 필요하다. 그동안 공부한건 네트워크 구조나 feature map size, dimension정도가 다였는데, 논문을 읽으면서 수학적인 내용이 정말 수두룩빽빽!!!!!하게 나와서 아주 정신이 혼미하다. 이게 내가 알던 backprop이 맞냐? 싶을 정도였다.

아직 논문 읽고 이해하는 속도가 더디다. 그리고 내가 안다고 생각했던 것도 다시 보니 모르겠는 순간이 종종 있었다. 그래서 현타도 많이 왔고, 딱 보면 딱 흡수하는 옆자리 천재만재 인턴들이랑 나를 비교하면서 초큼 우울해지기도 했다. 연구라는 일이 나한테 안맞는걸까? 아니면 이 분야가 내 길이 아닌가...? 하는 생각이 자꾸 들었다. 그런데 한발짝 떨어져서 잘 생각해보면 사실 내가 그동안 하던 공부랑은 아예 다른쪽이라 어떻게 보면 처음 공부하는 거기도 하고, 논문을 읽고 이해하고 발표하는 경험이 없다보니 당연히 요령이 부족할 수 도 있지 않을까!? 사람마다 능력치도 속도도 다 다르니까, 내 속도 유지하고 킵고잉 하다보면 언젠가는 오늘을 돌아보며 "내가 이런 시절이 있었군"하고 생각하는 날이 올 거라고 믿는다!

여튼 논문을 읽고, main method나 contribution을 파악하고 limit를 생각해보는 힘을 기르는게 연구자로 가는 첫 걸음일 것이고, 7월엔 그런 연습을 했다고 생각한다. 모든 내용을 100% 이해하진 못했지만 그래도 이 시간을 보낸 것 자체가 큰 의미를 가지는 것 같다.

조금 힘든 시간이었지만 잘 버틴 나에게 칭찬의 박수 짝짝... 그리고 맡은 논문은 최선을 다해 꼼꼼히 공부한 나에게 칭찬의 박수 짝짝! 항상 발전하려고 노력하는 나에게 칭찬의 박수 짝!

아 그리고 너무너무 어려운 내용이 있어서 혼자 머리싸매고 몇날을 붙잡고 있다가 고심 끝에 선배한테 물어보니 한큐에 뚝딱 해결되어버렸다.... 이상하게 요즘 누구한테 질문하고 먼저 다가가는게 어려운데 그냥 편하게 소통하는 사람이 되면 좋겠다 ㅠㅠ

실험

8월부터 멀티모달 관련 실험 시작할 예정!
주제는 미정이지만 코드 볼 생각에 벌써 마음이 콩닥콩닥... 현기증 나니까 빨리 코드 주세요

생활

내인생 첫 자취를 시작했다. 초큼 외로웠다...ㅎ 생전 가본 적도 없고, 아는 사람도 없는 동네에서 혼자 살아보려니 심리적으로 공허했다. 무엇보다 집에 바선생님이 자꾸 출몰해서 정신적 고통이 컸다 ㅋㅋㅋㅋㅋ ㅠㅠㅠ 괴로워하는 나를 위해 진짜 여러 사람이 도움을 줬다. 강민이는 내 심리적 안정을 위해 모기장을 선물해주고, 바선생님 퇴치 서비스를 제공해줬다... 양손에 고무장갑 끼고 여기저기 맥스포스 놔주는 강민... 너무 든든허다,,, 고마워요,,, 현경 소영이는 방에서 쓰라고 식기 세트에 머그컵, 코스터도 선물해주고 놀러와서 방에서 맥주타임도 해줬다. 나연이는 간지작살 시계를, 유진이는 뉴욕산 텀블러를 선물해줬다. 정말 많은 관심과 도움을 받아가며 살고 있다,,,, 감사합니다,,,
아 그리고 김나연 임유진이랑 설입에서 놀고 할거 없어서 사주를 봤는데, 내 사주에 불이 너무 강해서 운동을 열심히 해야 한다고 (???) 강조를 많이 하셨다. 근데 거기 선생님께서 우리 인스타 뒷조사라도 하신 것처럼 너무 잘 들어맞는 이야기만 하시길래 셋 다 거의 신봉자가 되어서 사주에 맞는 인생을 설계하기 시작했다... 지금 생각해보니까 그걸 진지하게 받아들였다는게 어이없는데, 그땐 너무 잘 들어맞아서 진짜 심각했다,,, ^^ 그래서 헬스장을 다니기 시작했다. ㅋㅋㅋㅋㅋ 운동 손 놓은지 거의 1년이 다 되어가는 나를 이끌어준게 사주가 될 줄이야...ㅎ; 시작이 어려울 뿐이지 막상 시작하니까 또 잘 다닌다. 그리고 강민이랑 프사오도 시작했다. 3월에 프사오 잠깐 체험하고 거의 실신할뻔 해서 살짝 두려웠는데, 막상 해보니까 그때만큼 힘들진 않았고 뿌듯함이 엄청났다. 매일 강민이를 볼 수 있는 것도 좋았다 ㅎㅋㅎㅋ

8월

할 일

  • 내 향후 커리어와 단기적/장기적 목표 생각해보기.
  • Spark, Hive 등 대용량 데이터 처리 배워보기.
  • 개강 준비...

마음가짐

  • 자만하지 말 것! 항상 새롭게 배우는 자세로, 안다고 생각하는 것도 다시 보면 새롭다.
  • 적극적인 사람 되기. 모르는거 잘 물어보고, 적극적으로 소통하기.
  • 열린 마음가짐으로 살기. 나는 무엇이든 될 수 있다!
  • 첫 술에 배부르려는 욕심을 버리자 :)
  • 운동 게을리 하지 말자
  • 주눅들지 말자 화이팅!
  • 할 수 있 다 !
profile
튼튼

2개의 댓글

comment-user-thumbnail
2023년 3월 24일

잘 보고 갑니다. 너무 재미있어요!

답글 달기