실력있는 AI 엔지니어가 되기 위한 방법
이번 글에서는 내가 어떤 경험을 통해 AI 엔지니어가 되었는지 공유하고자 한다.
우선, 나는 컴퓨터공학과 컴퓨터비전 연구실에서 석사 과정을 진행했다. 하지만 지금부터 이야기할 내용은 대학원 과정을 선택하지 않더라도, AI 엔지니어가 되기 위해 경험해야 할 부분이다.
학위 과정 전에는 머신러닝, 딥러닝, 그리고 컴퓨터비전의 기초를 공부했다. 그리고 이 내용들을 수월하게 이해하기 위해선 공학 수학, 수치 해석, 선형대수학과 같은 공학 기초 과목들에 대한 이해가 필요하다. 이 단계에서는 한글로 된 책이나 자료가 많아 비교적 접근하기 쉽다. 기초 공부 부분은 비교적 짧게 작성했지만, 이 부분이 약하면 이후의 공부가 매우 어려워질 수 있으니 주의하자.
이후 학위 과정 중에는 컴퓨터비전과 딥러닝 관련 논문을 읽으며 공부와 연구를 병행했다. 내가 처음 읽었던 논문은 VGG 네트워크를 제안한 “Very Deep Convolutional Networks for Large-Scale Image Recognition”으로 기억한다. 이 논문은 딥러닝 분야에서 CNN 기반 네트워크의 기초가 되는 중요한 연구로, 당시 발표된 시점에서 깊은 신경망 구조를 제안했다. 그러나 처음 논문을 읽을 때는 이해하기가 정말 어려웠다. 대부분의 논문은 이미 알려진 내용을 레퍼런스 형태로 제시하고, 당연한 듯 설명하기 때문에 내가 모르는 내용이 많았기 때문이다.
따라서 배경 지식이 부족한 상태에서는 하나의 논문을 이해하기 위해 여러 레퍼런스 논문을 참고하며 공부해야 한다. 물론 논문을 참고하지 않더라도 모르는 단어나 개념들을 찾아서 공부하면 되지만, 처음에는 상당히 시간이 많이 걸렸던 기억이 난다. 그래서 저 하나의 논문을 읽고 이해하여 교수님께 나름대로 설명하기까지 약 2주가 걸렸던 것 같다. 하지만 이러한 과정을 겪으면서 가장 많이 성장했고, 지금 AI 엔지니어로서 업무를 수행하는 데 가장 큰 도움을 준 과정이라 볼 수 있다.
논문을 읽으며 공부하는 방법을 예시를 들어 조금 더 살펴보자. 만약 Swin Transformer 논문을 본다면 먼저 ViT(Vision Transformer)를 이해해야 하며, ViT를 이해하기 위해서는 “Attention Is All You Need”라는 논문에서 다룬 Transformer 개념과 CNN 계열 아키텍처들에 대한 이해가 필요하다. Transformer를 제대로 이해하려면 시계열 데이터 및 이를 다루기 위한 다양한 접근 방법과 연구 발전 방향에 대해서도 이해해야 하며 CNN 아키텍처를 이해하려면 전통적인 컴퓨터비전 접근법에서의 컨볼루션 연산과 영상 데이터 처리 방법에 대해서도 알고 있어야 한다. Language Model 도메인에서도 LoRA(Low-Rank Adaptation) 개념을 이해하기 위해서는 NLP, Transformer, BERT, GPT, Transfer Learning, Fine-tuning 등 다양한 개념에 대한 사전 지식이 필요하다.
이처럼 하나의 개념을 깊이 이해하기 위해선 꼬리에 꼬리를 물며 공부를 해야 한다.
그렇다면 매번 어떤 논문을 보기 위해선 이런 복잡한 과정을 거쳐야 할까? 그렇진 않다. 한 분야를 지속적으로 공부하다 보면 도메인 지식이 자연스럽게 쌓이기 때문이다. 따라서 공부 초기에는 하나의 논문을 이해하기 위해 수십 개의 논문과 자료를 참조하며 몇 주가 걸리지만, 시간이 지남에 따라 새로운 논문을 읽을 때 내가 이미 알고 있는 배경지식 덕분에 자연스럽게 이해할 수 있는 부분들이 생긴다. 그리고 조금 새로운 분야의 논문을 읽더라도 이미 익힌 공부 방법을 적용하면 논문을 이해할 수 있다는 자신감이 생긴다.
지금도 업무를 수행하면서 새로운 논문을 읽고 새로운 알고리즘이나 AI 모델을 테스트하는 경우가 있다. 이런 경우에 이전에 공부하면서 쌓인 배경 지식들이 크게 도움이 된다. 또한, 최신 트렌드를 놓치지 않기 위해 유명한 논문이 발표되면 가볍게라도 읽어보며 어느 정도 내용을 인지해야 한다.
이제 ‘AI 엔지니어가 되기 위해서는 AI 모델만 잘 만들면 되는 거 아닌가요? 꼭 모든 내용을 다 이해해야 하나요?’라는 의문이 들 수 있다. 물론 AI 모델과 특정 도메인에 대한 깊은 이해 없이도 AI 기술을 고도화할 수 있다면 모든 것을 이해할 필요는 없을 것이다. 하지만 어떤 기술이든 개발을 진행하다 보면 수많은 난관에 봉착하게 된다. 이러한 난관은 프로그래밍이나 인프라 관련 문제일 수도 있고, AI 기술, 특정 알고리즘, 또는 수학과 통계학의 기초 개념과 관련될 수도 있다. 그런데 만약 내가 AI 모델을 단순히 가져와서 학습하고 배포하는 정도만 할 수 있는 엔지니어라면, 발생한 문제를 정확히 파악하고 이를 해결할 수 있을까? 이러한 상황에서 기술적인 깊이와 도메인에 대한 이해가 부족하다면 문제 해결이 어려워질 수 있다. 개발 과정에서 마주하는 다양한 문제들은 예기치 않게 발생할 수 있으며, 이때 적절한 대응을 위해서는 깊이 있는 지식은 필수이다.
이제 논문에 대한 이야기는 이쯤에서 마무리하고, '문제 해결 능력'에 대한 이야기로 넘어가고자 한다. AI 엔지니어가 되기 위해서는 특정 문제를 해결하기 위해 이미 존재하는 알고리즘이나 AI 모델 아키텍처를 조합하고 수정하는 것은 물론, 모델의 하이퍼파라미터를 조정하며 학습 및 평가 과정을 적절히 수정하거나 특정 알고리즘을 도입하는 등의 다양한 시도를 통해 성능을 고도화하는 경험이 중요하다.
현업에서도 특정 비즈니스 문제를 해결하기 위해 기술을 고도화하고, 이를 가장 효과적으로 해결하기 위한 방법을 고안해야 하는 경우가 많기 때문이다. 이러한 역량을 기르기 위해서는 머신러닝, 딥러닝, 공학적 지식과 도메인에 대한 이해가 필요하며, 앞서 설명한 것처럼 다양한 논문이나 자료를 읽으면서 다양한 지식을 쌓고 여러 경험을 해보는 것이 중요하다. 또한 현실 세계에서는 동일한 문제가 존재하지 않기 때문에 적절한 창의력과, 머릿속에 그린 아이디어를 실제로 구현하기 위한 프로그래밍 실력 또한 중요하다.
AI 엔지니어가 되기 위해 어떻게 공부해야 하는지, 그리고 실력을 어떻게 기를 수 있는지에 대한 궁금증을 가진 분들이 많기에, 내 경험을 토대로 중요하다고 생각한 점들을 정리해 보았다.
실력 있는 AI 엔지니어로 성장하기 위해서는 기술적인 역량만 쌓는 것으로는 부족하다. 논문을 읽고 다양한 알고리즘 및 모델에 대한 깊이 있는 이해를 쌓는 과정은 이론적 지식을 넓히는 데 그치지 않고, 실제 문제를 해결하는 데 필수적인 능력을 길러야 한다. 또한 현업에서 마주치는 난관들은 기술적 깊이와 도메인에 대한 이해가 없이는 해결하기 어려운 경우가 많기에 지속적인 학습과 다양한 경험을 통해 지식을 확장하고 문제 해결 능력을 키우는 것이 중요하다.
단순히 AI를 개발할 줄 아는 엔지니어가 되는 것이 목표가 아니라, 실력 있는 대체할 수 없는 AI 엔지니어가 되는 것이 꿈이라면, 위에서 언급한 내용들을 충분히 숙지하고 경험하며 꾸준히 발전해 나가자.