Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 31
Tags more
Archives
Today
Total
관리 메뉴

러닝머신 하는 K-공대생

2021년 나는 뭐하고 살지? 본문

잡담, 일상

2021년 나는 뭐하고 살지?

prgmti1 2021. 3. 1. 02:33

개학 전날까지 너무 달리기만 했는데 잠시 나를 돌아보는 시간과 휴식이 필요할 것 같아 오랫만에 글을 써본다. 가끔 이런 시간을 가지고나면 다시 열심히 달릴 생각에 두근댄다. 하지만 쓰고 보니 뻘글같다 헤헿ㅎㅎ

작년인 과학고 1학년 때, 과학고라는 낯선 환경에 새롭게 적응해야 한다는 점이 힘들었던 것 같다(지금보면 별거없다). 기숙사 환경에 어떻게 적응해야 할지, 동아리는 무엇을 하며, 연구는 또 어떤 것을 해야하며, 앞으로 깊게 공부하고 싶은거는 뭐고, 친구들이랑은 어떻게 지낼지, 대학은 어디를 가야할지, 성적관리는 어떻게 해야하고, 조기졸업(하지만 어림도 없지), 하고 싶은 활동과 내신 비중은 어떻게 해야하는지, 내가 이 학교에서 어떤 사람으로 성장하고 싶은지 고민을 많이 했었고 지금도 하고있다. 그래서 나를 좀 돌아보면서 2학년을 어떻게 보내야할지 고민을 해보았다.

언제부터 머신러닝/딥러닝 쪽에 관심을 갖게되었지 생각해보면 로봇공학이 재밌어서 로봇올림피아드 각종 로봇, 발명대회 참여하면서 코딩, 아두이노 등을 많이 했었고 kinematics를 공부할 때 Terry님의 블로그를 많이 보고 강의 영상을 봤다. 그 중 딥러닝 스터디 영상도 있었고 수식이 이해는 안되지만 흥미로워보여서 자기전에 종종 봤던 기억이 있다 그러다 도대체 뭐지 싶어서 김성훈 교수님의 모두를 위한 딥러닝 시즌 1도 봤었던 기억이 있다. 그러면서 마음속에 나중에 본격적으로 인공지능과 관련한 공부를 시작해야겠다고 마음먹었다. 사실 그냥 멋있어보였고 내가 저걸하면 특별한 사람이 될 것 같았다.. 그러면서 다들하는 kmo, 물올, 화올을 거치고 영재고 불합격을 거쳐 과학고에 불시착한 겨울 방학 때부터 김성훈 교수님의 모두를 위한 딥러닝 시즌 1를 다시보면서 이론 정리하고 Stanford CS231n 강좌와 Coursera에서 앤드류 응 교수님의 Machine Learning 강좌를 보면서 이론 실습 및 디테일을 더했다(남들이 다하는 입문과정 정석대로 따라했다..) 또한 라온피플의 블로그 글과 다른 사람들의 블로그 포스팅, Tensorflow KR도 많이 참고했다. (싸랑해요 텐플코!) 이렇게 Keras 및 Tensorflow 책과 유튜브를 통해 모델을 구성하는 방법, 데이터 전처리, 모델 학습과정들을 익혀갔다.

배우기만 하니까 재미가 떨어져서 뭐라도 만들어보고 싶어서 몇가지 프로젝트도 진행해봤다. CNN을 학습하고 나서는 한글자음 분류기를 구현해봤는데 정확도가 매우 낮았다. 컨볼루션 레이어 2개, max pooling 한번 거치고, flatten, dense레이어 2개로 구성했었고 사용한 자음글씨 데이터 수도 적어서 그랬던 것 같다. 그래서 모델구성, 데이터 수집의 부족함을 느껴 CNN관련해서 자세히 찾아보고 OCR도 여러 자료 찾아본 것 같다. 또 하드웨어,소프트웨어를 잘 다루시는 동아리 선배님과 캔위성 경연대회에 참여해 '캔위성의 적절한 착륙 지점을 탐색'을 하기위해 Semantic Segmentation을 구현하고자 마음먹었고 FCN, U-Net,FPN 등 여러 모델등을 찾아봤다. 오픈소스들을 참고해서 U-Net 구조를 구현해보며 Semantic Drone Dataset을 학습에 사용했다. 클래스별로 마스킹까지 했는데 이 결과를 어떻게 활용할지 몰라 창의개연연구로 K-means Clustering을 통해 Class 추출 및 결과분석을 위한 방법을 탐구해보기도 했다. 또한 이런 기술을 이용해 시각장애인의 공간지각을 돕는 R&E를 계획하고 계단에서 복도에서 공간지각을 도울 수 있는 연구를 진행하고 있다. MobileNetV2를 이용한 전이학습으로 몇가지 사물을 추가해서 Object Detection을 구현하고 직접 어노테이션하지 않고도 Image Segmentation을 진행하는 방법도 찾아보면서 Grad-CAM을 구현해보았다.(Attention 모델과 Weakly Supervised Semantic Segmentation에 대한 관심이 조금 생겼다). 이때 학습은 주로 구글 코랩에서 될때까지 돌렸는데 올해는 로컬컴퓨터로 구체적인 스펙은 모르지만 선배분들이 맞춘 2080ti 달린 컴퓨터를 이용해서 학습을 돌려보고자 한다(런타임 연결 끊김이 너무 싫다) 가벼운 pretrained 모델 이용하는 것들은 저번에 구매한 jetson nano에서도 시도해보고 싶다.

이렇게 어찌저찌해서 1년 사이에 컴퓨터 비전/ML 에 어느정도 관심을 가지고 나름대로 열심히 진행해왔다. 하지만 그 시간동안 Computer Science를 하기에 앞서 알고리즘, 자료구조에 소홀했었고 해킹/보안 분야의 지식도 부족하다. 고등학생으로서 내신공부를 열심히 한다고는 했지만 1학년 1학기 때는 대부분 운좋게 A 거나 B뜬것도 있었고 2학기 때는 전체적인 수과성적은 올랐지만 과목 편식으로 지학,인문과목 떡락이 있었다.

왜 딥러닝을 사용해야 하는지, 다른 고전적인 머신러닝을 적용하면 안되는지, 그게 아니더라도 다른 해결방법은 없는지를 깊게 고민해보지 않았고 그냥 컴퓨터 리소스를 많이 잡아먹고 비용이 많이 들어도 딥러닝을 명확한 이유없이 선호했던 것 같다. 물론 딥러닝이 object detection, 강화학습, segmentation, 시계열 예측 등 다방면에서 유용하고 다른 부분에서도 뛰어난 성과를 보이는 것은 맞지만 kaggle 대회 리더보드 상위권에 있는 노트북들과 여러 글들을 보면 PCA, SVM, 랜덤 포레스트, 앙상블 등과 고전적인 머신러닝 방법과 간단한 영상처리 방식으로도 적은 리소스,비용으로 충분히 좋은 성과를 내는 경우도 많은 것 같다. 정말 간단한 경우만 보더라도 대표적인 캐글 타이타닉 문제의 경우 딥러닝보다 decision tree로 접근했을 때 훨신 정확하니 말이다.


지금 당장 어떤 일을 해결하기 위해 ML을 적용하고자 하는 경우라면 이런식으로 공부를 지속하는 것이 맞는 것 같은데, 사실 통계, 선형대수, 해석학등의 수학적 지식과 다른 알고리즘이나 이론등이 부족한 상황에서 공부하려다보니 껍데기만 계속 핥는 게 아닐까 생각이 들기도, 다양한 관점에서 바라보지 못한다는 한계점이 보이기도 한다. 입문은 쉽지만 깊숙히 들어가기 위해서는 더욱 많은 준비가 필요한 것 같다. 이런 나의 고민을 유튜브가 간파한 것인지 최근 추천동영상에 뜬 홍정모님의 영상 (youtu.be/5CEkHngRIjU) 을 보고 많이 뜨끔했다. 나는 그냥 계속 어렵고 멋진 것만을 원하는 데 비해 그것을 따라갈 기초는 부족하다. 나는 겉핡기가 아닌 본격적으로 머신러닝이나 딥러닝을 연구하고 잘 활용하는 사람이 되고 싶다. 그리고 홍정모님의 영상에서처럼 지금의 머신러닝/딥러닝 붐이 아니더라도 새로운 붐이 일어났을때 나의 전문분야를 더욱 발전시키위해 그 기술을 적용해갈 역량을 키워가고 싶다. 그렇지만 아직 나를 잘 모르겠다 정말 왜 머신러닝이란 분야를 하고 싶어하는지도, 할 역량이 있는지도 말이다.

일단 대학에 진학해 공학수학, 미적분학, 통계, 선형대수, 컴퓨터 사이언스를 공부하고 이 공부가 나랑 맞는지도, 대학원 진학까지 고민해보고싶다. 일단 대학에서는 전공과목도 있다보니 전산학부나 컴공으로 진학하면 어느정도 깊은 공부가 가능할 것 같다. 그럴려면 인정하기 싫지만 2학년 때는 1학년 때보다 내신공부에 지장이 갈정도로 코딩, 대회참여는 줄이는 것이 맞는 것 같다. 평상시에는 조금씩 PS를 하고 시험 끝난 후에 머신러닝 공부를 이어가는 것으로 계획을 세우자. 지금 뒤쳐지는 것 같아도 결국엔 기초가 탄탄하면 금세 뒤따라 잡을 수 있을 것 같다. 그리고 1학년 때 사실 재미를 못느낀다고 핑계를 대면서 내신공부를 균형있게 못했었는데 어느 분야의 공부든 좋든, 싫든 내용을 받아들이고 내걸로 만드는 노력이 힘들더라도 고등학생 때 충분히 연습해두어야 정말 내가 하고 싶은 공부가 생겼을 때 도전할 준비가 될 것같다. 또 2학년 때 적분, 확통, 기벡, 행렬, 그래프등을 배우고 3학년 때 AP Calculus도 진행하니까 지금 급하게 선형대수,어려운 확률기반 머신러닝이론을 배우기보다 학교에서 하는 수학공부에 시간을 더 투자하는 것이 더욱 도움이 될 것 같다. 2학년 때부터 수학을 좀 더 집중적으로 파고들고 싶어졌다. 많이 돌고 돌았지만 결국 공부 열심히하자는 내용으로 마무리짓는 것 같아 아쉽지만 옆에서 공부하라고 하는 소리나 좋은 대학갈 수 있다는 얘기보다 조금 더 나한테 공부를 열심히 하고 싶다고 생각이 든 시간인 것 같다.



Comments