AI 공부 저장소

2022-1 종강 후기 본문

후기 및 기록

2022-1 종강 후기

aiclaudev 2022. 6. 28. 14:54

드디어 종강을 했다..!

이번 학기는 7학기 재학 중 가장 힘들었던 것 같아서 강의 별로 간단한 후기를 써보려고 한다. (사실 매학기마다 가장 힘들다는 생각을 한다.....)

 

① 데이터 마이닝

데이터 마이닝은 졸업을 위해 필수로 들어야하는 전공이었다. 2021 2학기에 수강한 '데이터 사이언스'와 이어지는 강의인데, 사실 배우면서 '왜 굳이 두 과목을 분리해놓은걸까..' 하는 생각을 했다. 교수님께서 제작하신 자제 교재로 강의를 진행하는데, 내용이 많이 없는 기분..? 약간 겉핥기 식으로 배우는 것 같았다. 다양한 알고리즘 (Decision Tree, K-means Clustering, Association rule discovery 등)을 다루는데, 수학적인 내용 없이 간단한 원리만을 배운 것 같아서 조금 아쉽긴 했다. 근데 사실 생각해보면 배운 알고리즘들 자체가 별로 수학적인 내용이 안들어가는 것 같긴 하다. 

 

강의를 개설하신 교수님께서는 사실 강의평이 굉장히 좋지 않으셔서 2021 2학기에 '데이터 사이언스'를 수강하기 전 많이 무서웠다. 대학원을 목표로 하고 있는만큼 높은 학점과 배움에 대한 욕심이 좀 있는데, 둘 다 충족하지 못할 것만 같았다. 근데 막상 들어보니 교수님께서도 정말 친절하시고 수업 방식 자체도 굉장히 나한테 잘 맞았다. 같은 교수님께서 강의하시는 '데이터 사이언스'와 '데이터 마이닝' 강의를 계기로 교수님께서 자체적으로 운영하시는 학부 연구생 그룹에서 활동하면서 추가로 배우는 것도 많아서 나름 유익했다고 생각한다. (학점은 아직 안나왔지만, A+ 나왔으면 좋겠다..)

 

 

② 운영 체제

운영 체제는 사실 안들어도 되는 과목이었다.. 복수전공생인 나한테는 전공으로 들어가지가 않아서 자유 이수로 들었던 과목인데, 하도 중요하다는 이야기를 많이 들어서 수강했다. 수강하면서 '운영 체제를 들은건 이번 학기 최대 실수다' 라는 생각을 진심으로 100번은 한 것 같다. 과목 자체가 어렵다는 느낌은 안들었는데, 컴퓨터 구조적인 지식들이 너무 많이 필요했다. (컴퓨터 구조 강의를 수강하지 않은게 너무 후회됐다.. 사실 듣고싶어도 못들음) 그리고 심지어 교수님께서 컴퓨터 구조를 이미 웬만큼 안다고 가정하고 수업을 진행하셨다. (학기 초반에 전체적으로 다루어주시긴 하셨지만, 그마저도 이미 알고있다고 가정하고 간단하게 설명해주시는 느낌)

 

교수님께서 운영체제 원서로 사용한 공룡책을 스스로 꼭 읽어봐야한다!! 라고 강조를 너무 많이 하셨었다. 원서를 꾸준히 읽어보려고 노력은 했지만 정말 많이 어려웠다.. 영어로 읽는게 어렵다는 느낌보다는, 약간 은유적인 표현들이 이해하기 어려웠다. 그래서 공부하면서 '학점 제발 A-만 나와라..'라고 간절히 빌었다

 

근데 학기 끝나고 최종 성적을 보니 1등을 했더라. 어렵게 공부한만큼 학점이 잘 나와줘서 기분이 매우매우매우 좋았다. 배우는건 많았어도 학점이 안나왔으면 조금 많이 슬펐을텐데, 배우는 것도 많았고 학점도 잘 나와줘서 이번 학기에 가장 기억에 남는 수업. 

 

 

③ 기계 학습

인공지능 대학원을 진학할 계획인데, 나의 목표와 가장 걸맞는 수업이었던 것 같다. 이전에는 시중에 나와있는 책들로 머신러닝을 독학했었는데, 확실히 학교에서 배우는 강의의 질은 다르다는 걸 새삼 느꼈다. 아무리 유명한 머신러닝 책이라고 하더라도 '이런 알고리즘이 있다~ 이 알고리즘은 이럴때 사용한다~ 이 알고리즘은 코드를 이렇게 짜면 된다~'라는 식이었다. 어떤 원리로 동작하고, Cost function은 어떤 기준으로 사용하고, 수학적으로는 어떻게 정의되고 등등은 다 빼놓고 활용법만 알려주는 느낌? 물론 머신러닝 모델을 활용만 할 사람들에겐 좋을지 몰라도, 새로운 머신러닝 모델을 만들어보고싶은 내 목표와는 맞지 않았다. 

 

근데 강의에선 다양한 ML 모델들이 어떻게 수학적으로 정의되고 구현되는지 등의 원리를 배울 수 있어서 너무너무 좋았다. (근데 MLP에서 체인룰로 back propagation할때 너무 헷갈렸다.. 수학이 제일 중요한듯) 심지어 학점도 잘 나올 것 같은 느낌이라 기쁨이 2배다. (중간, 기말 모두 1-2등이었던 것 같다) 

 

우리 학교에는 기계 학습 이외에도 딥러닝, 실전기계학습 등의 강의가 개설되는데 너무 듣고싶다. 근데 복수전공생이라 전공필수 들을게 많아서 못듣는게 너무 아쉽다.. 앤드류 응 강의로 따로 공부해봐야겠다.

 

 

④ 알고리즘 분석

강의를 들을때만 해도 '와 진짜 쓸모가 없겠다'라는 생각을 솔직히 많이 했다.. 내가 생각하던 알고리즘 수업하고는 너무 달랐다. 나는 수업 방식도, 시험 방식도 코딩 테스트처럼 코드 구현이 주가 될줄 알았는데, 전혀 아니었다. 시간복잡도 어쩌구 저쩌구 하면서 수열이나 점화식이 너무 많이 나왔고, 수업에서 코드를 짠 적이 주 1회 과제 빼고는 전혀 없었다. 심지어 시험도 그냥 필기 시험이었다. 그래도 열심히 공부하기는 해서 A+을 받았지만, 실용적이지 않다는 생각을 했다.

 

근데 막상 종강하고 알고리즘 문제를 몇개 풀다보니까 배웠던 내용이 막 생각나서 좀 놀랐다.. 역시 전공 필수인 강의에는 이유가 다 있다는 생각이 많이 들었다. 물론 강의에서 배운 내용만으로 풀 수 없는 문제가 매우매우 많긴 했지만, 어느정도의 해결 방향성은 잡을 수 있게 됐다. 쓸모 없다고 생각했지만, 꽤 큰 도움이 되었던 강의였다.

 

 

⑤ 데이터 분석 캡스톤 디자인

이번 학기에 나한테 제일제일 힘들었고 제일제일 스트레스를 많이 줬던 강의.. 졸업 프로젝트 느낌이었는데, 진짜 솔직히 너무 힘들었다. 학부 연구생 그룹에서 자연어처리를 공부하고 있어서, 자연어처리에는 어느정도의 배경지식은 있었다. 근데 "지도 교수님이 컴퓨터 비전쪽이시니까 많이 배울 수 있겠지? 이번 기회로 한번 배워보자!"라는 생각으로 알약 분류 AI 모델링이라는 주제를 선정했다. 프로젝트 목표는 (1) 알약 Detection (2) 한정된 데이터셋으로 최대한의 성능 올리기였다.

 

Bounding box가 뭔지도 모르는 상태로 프로젝트를 시작했는데, 먼저 가장 큰 문제점은 데이터가 없었다. 국내 유통되는 알약에 대한 이미지가 있긴 했지만, 1장뿐이라 데이터 증강과 Augmentation을 해주어야 했고 Bounding box도 수작업으로 해주어야만 했다. LabelImg, Imgaug라는 라이브러리를 사용했는데 Imgaug 라이브러리를 사용법을 익히는 것이 조금 오래 걸렸다. LabelImg는 단순히 마우스로 Bounding box를 그리는 단순 작업이었지만, Imgaug 라이브러리를 통해 rotation 등을 할 때 Bounding box 좌표까지 회전시켜주어야 해서 이 부분 관련 코드 작성이 힘들었다.

 

데이터셋을 완성한 이후 본격적으로 프로젝트 시작을 했다. yolov5 모델을 사용했는데, 굳이 yolov5를 사용한 이유는 딱히 없었다. 단순히 요즘 핫한 모델이고, Inference speed가 굉장히 빠르다는 이유로 한번 사용해보고 싶었다. 테스트셋을 직접 제작했었는데, 'CNN기반 모델은 쉬운 feature를 우선적으로 학습하기 때문에, 흰색 원형 알약의 Detection은 잘 이루어지지 않는다.'라는 논문의 내용을 보고 흰색 원형 알약들로만 이루어진 이미지를 생성했다. (사실 프로젝트의 목적은 '흰색 원형 알약 분류'에 초점이 맞추어져 있었다.) 

 

학습 데이터는 40개의 클래스로 이루어져 있었고, 클래스 당 100장의 데이터가 있었다. 클래스 당 100장은 사실 작은 데이터셋인데, 프로젝트의 목표 중 하나가 '한정된 데이터로 최대한의 성능을 내보자' 이었기에 고의적으로 작은 수의 데이터로 학습시켰다. 

 

어찌되었든 프로젝트 결과는 딱히 좋지 않았다. 기존 yolov5만으로 테스트 데이터에 대해 Inference를 진행했을때의 Accuracy는 약 5%미만, 수정한 yolov5(아키텍처를 수정한 것은 아니고, 새로운 모델을 구성한 후에 yolov5에 연결했다.)로 테스트 데이터에 대해 Inference를 진행했을 때의 Accuracy는 약 60% 정도였다. 성능 향상은 있었다고 볼 수 있으나, 좋은 결과는 아니었다.

 

패논패 강의라, 패스를 받기는 할 것 같지만 그냥 너무 힘들었다.. 학기 중간중간에 '내가 왜 이 주제를 선택했을까'하는 후회도 많았다. yolov5의 아키텍처를 분석하는 것 또한 시간을 너무 많이 소비했었다.

 

하지만 컴퓨터비전의 기초적인 지식 정도는 습득할 수 있었다는 점, LabelImg나 Imgaug등의 라이브러리 사용법을 알아갔다는 점, 그리고 도전을 했다는 점에 대해 뿌듯함을 느낄 수 있었다. 그리고, 나 자신에 대한 부족함을 객관적으로 알아갈 수 있었고 더 열심히 해야겠다는 생각이 든다.

 

 

⑥ 기계공학종합설계

본래 기계공학과인 내가 필수적으로 들어야하는 수업이었다. 졸업 프로젝트 수업 정도라고 생각하면 될 것 같다.

2021 2학기에 진행된 '프로젝트 및 세미나' 강의와 이어지는 수업인데, 크게 부담은 없었다. 내가 진행한 프로젝트는 '산업 운송 로봇 AI'였는데, 코드 작성이 크게 어렵지는 않았고, 조원 분도 굉장히 친절하고 잘 맞았기에 기분좋게 프로젝트를 진행할 수 있었다. 소프트웨어적인 것은 어려움이 없었으나, 역시 하드웨어에서 벽을 느꼈다. 진행한 프로젝트 자체가 기계공학이라기 보다는 회로와 같은 전자공학에 가까웠는데, 다양한 부품등을 다루는게 좀 익숙하지 않았던 것 같다. 그리고 납땜이 아닌 간단한 점퍼선을 이용했는데, 접촉 불량이 많았다. 접촉 불량이 정말 번거로운건, 이게 소프트웨어적인 코딩 오류인지, 하드웨어가 잘못된건지 판단하는 것이 너무 어렵다는 것이다. 심지어 코딩에 문제가 없다고 판단하더라도 하드웨어에서 어떤 모듈이 잘못됐고, 어떤 점퍼선이 잘못됐는지 판단하는게 정말 귀찮고 번거롭다. 그래도 조원 분과 잘 합심해서 프로젝트를 진행했고, 괜찮은 결과를 무사히 낼 수 있었다. (조원 분 고마워요!)

 

 

⑦ 지구를 생각하는 예술

졸업을 하려면 3학점의 자유이수 강의를 들어야 하는데, 자유이수를 채우기 위해 들었던 강의.

전공 공부에 지쳐있을때 조금의 힐링이 됐던 것 같다. 이 강의를 들으면서도 느낀건 지구의 환경오염이 정말 심각하다는 것이다. UN이 2050년에 지구는 큰 재앙이 올거라고 말했던 기사를 봤었다. 내 생각엔 세계적인 기관인 UN이 '지구는 2050년에 멸망해요!!'라고 말하면 큰 혼란이 올테니까, 조금 순화해서 말한 것이 아닐까 싶다. 죽지않고 연구를 열심히 하고 싶은 세계의 모든 연구자, 공학자는 친환경적인 기술에 조금 더 몰두해야 하지 않을까하는 생각을 했다.

 

그리고, 우리 학교에서 필수로 1학년 때 들어야하는 강의가 몇몇개 있다. 교양 강의와 걸맞게 '교양'을 배우는, 약간 철학적인 내용의 강의들인데, 차라리 지구를 생각하는 예술같은 강의를 필수 교양으로 배우는 것이 낫지 않을까 생각을 한다. 이과라 그런건지 모르겠지만, 철학적인 내용을 배우는 것 보다 환경 오염이라는 우리와 조금 더 가깝고 연관있는 내용을 배우는게 더욱 유익하지 않을까?  

'후기 및 기록' 카테고리의 다른 글

2022 여름방학 계획  (2) 2022.06.30