기초가 중요하다고 하는데 정말 중요한걸까?

지난 학기 강의 중에 "교수님, 기초가 중요하다고는 하는데 왜 중요한지 잘 모르겠어요. 마치 '교과서 위주로 공부했어요' 같이 당연하고 추상적으로만 들려요." 라는 말을 들은 적이 있다.


최근에 경력 채용 과정을 옆에서 지켜보면서 다시금 이 주제를 들여다보게 됐다.


기초가 중요하다는 사실을 반박이라도 하듯, "이미 잘 만들어진 라이브러리와 도구들이 너무나 많아져서 좋은 검색 능력과 잘 가져다 사용하는 능력만 있으면 좋은 퍼포먼스를 낼 수 있다." 라고 직접 성과로 보여주는 경우들이 많이 생겨난 것 같다.


어느 정도 맞는 말이라고 생각이 들고 기술은 앞으로 점점 더 이 방향(기초를 몰라도 성과를 잘 낼 수 있는)으로 발전해나갈 것이라고 생각이 든다.


그럼에도 기초가 중요한 이유는 "일이 잘못되었을 때의 분석, 다음 작업 방향" 이라고 생각한다.

일정 수준이상의 전문가가 되기 위해서는 반드시 깊이 파보는 경험이 필요하다. 이 때 어느 방향으로 어디까지 파야할지 고민에 빠지게 되는데 기초 지식이 그 믿음을 만들어 주는 역할을 한다.


예를 들어서 "컴퓨터비전 분야에서는 데이터를 몇개나 넣어야 분류 문제를 잘 풀 수 있을까?" 라는 질문이 있다고 하면 어떻게 대답할 수 있을까? 굉장히 대답하기 어려운 질문이다.

아마 대부분은 상황에 따라 다르다고 대답할 것이며 나 역시도 그렇다.


다만 문제 상황이 주어지고 나서 PoC 를 거치며 그 다음 감을 잡아나가는 과정에서 약간씩 차이가 난다. 대게의 경우 데이터가 부족하며 이 때 data augmentation 을 사용하는 것이 defacto 처럼 사용되고 있는데 백그라운드 지식을 얼마나 알고 있는가에 따라 다음 가설을 세우는 질문이 달라진다. 어떤 가설을 세우고 다음 실험을 진행할까?


나의 경우,

  1. 목표 성능과 절대적으로 부족한 데이터 수의 괴리가 얼마나 되는가?

  2. 풀고 있는 도메인에서 data augmentation 은 효과적인가? translate 또는 rotate 사용할 수 있는 도메인인가?

  3. 모델이 CNN 계열인가 ViT 계열인가?

    1. CNN 을 쓰고 있다면 pooling layer 가 몇개인가? invariant 가 어느정도 유지되는 구조인가?

    2. pretrained ViT 에서는 data augmentation 이 효과가 없는가?

    3. ViT 라면 pretrained domain 과 얼마나 차이가 나는가?

  4. 어떤 종류의 data augmentation 으로 어느 정도 데이터를 대체할 수 있는가?


를 스스로 질문해보고 답을 내린다.


기초는 이 질문들에 대해서 답을 내리기 위해 필요하다고 생각한다.



-------


위 내용과 관련해서 ML엔지니어 기술 면접에서 물어볼 수 있는 질문이다.


Q. resnet-151 모델을 사용할때 3픽셀 내외의 random translation augmentation 은 성능향상에 효과가 있을까? 왜 그럴까?


다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 11월 16일 오후 2:17

댓글 0