업계에서는 머신러닝을 적용한 프로젝트가 궁극적으로 고객 경험을 향상시킬 것이라고 기대합니다. 가령 사용자에게 더 관련이 높은 동영상, 뉴스, 소셜 미디어 포스트를 보여주는 것처럼요. 업계에서 ‘고객’은 내부 고객을 의미하기도 합니다. 같은 회사나 조직에 있는 사람들 말이죠.
예를 들어, 여러분의 팀은 수요 예측을 통해 물류 부서가 선적 일정을 보다 효율적으로 계획하도록 돕는 머신러닝 모델을 구축할 수 있습니다. 사용자가 내부에 있든 외부에 있든, 종단 간 머신러닝 제품을 구축하려면 많은 구성 요소가 관여됩니다. 그림과 함께 간단한 예제를 통해 살펴보겠습니다.
첫째, 데이터가 필요합니다. 대부분의 머신러닝은 많은 양의 데이터를 이용해서 학습되고 테스트됩니다. 누군가는 원본 데이터를 수집해서 분석, 머신러닝, 리포팅, 모니터링 등에 쉽게 접근할 수 있도록 준비해야 합니다. 그림의 A단계(데이터)가 바로 여기에 해당합니다.
다음으로, 데이터가 준비되면 머신러닝 알고리즘과 도구에 관한 지식을 보유하고 있는 사람이 머신러닝 개발을 시작하기 위해 데이터를 사용할 겁니다. 이 과정은 B단계 (머신러닝 개발)입니다. 이 단계는 피처 엔지니어링, 모델 학습, 평가의 과정으로 이뤄집니다. 결과가 만족스럽지 않으면 B단계에서 많은 반복을 수행하게 되며, 그 담당자는 피처 엔지니어링 또는 모델 학습을 개선시키거나 A단계로 돌아가서 더 많은 데이터를 수집하도록 요청할 수 있습니다.
일정 수준의 만족스러운 결과가 나오면 머신러닝 모델을 고객에게 전달하는 C단계(머신러닝 배포)로 넘어갑니다. 머신러닝 프로젝트의 유형에 따라 웹사이트, 앱, 내부 대시보드 등에 배포할 수 있습니다. 물론, 훌륭한 팀이라면 머신러닝이 제대로 작동하는지 확인하기 위해 결과를 모니터링할 수 있는 수단을 확보해야 합니다.
머신러닝에는 잠재적으로 두 가지 문제가 생길 수 있습니다. 첫 번째 문제는 소프트웨어 수준에서 버그 등으로 인해 제대로 작동하지 않는 경우입니다. 두 번째 문제는 데이터 또는 머신러닝 모델에 이상이 있는 경우입니다. 예를 들어, 모델이 개발 단계에서는 정상적으로 작동했지만 배포 후 데이터 불균형으로 인해 결과가 변질되는 경우가 있습니다. C단계 이후부터는 모델을 개선하기 위해 B단계로 돌아가 더 많은 반복을 하고 다시 C단계에서 더 많은 실험을 실행할 수 있습니다.
이처럼 머신러닝 생애주기는 데이터 파이프라인, 모델 학습, 지속적 통합 및 지속적 배포(CI/CD) 등 많은 기술이 필요합니다. 여러분이 머신러닝 직무를 담당하게 된다면 기술적 역량 외에도 다양한 역량을 필요로 할 텐데요. 머신러닝과 데이터 사이언스 직무에 필요한 역량 세 가지는 다음과 같습니다. 아래에서 보다 자세히 알아보겠습니다.
여러분이 이 역량을 갖고 있다면 머신러닝 알고리즘과 통계 이론의 근본적인 작동 방식과 장단점을 이해할 수 있습니다. 머신러닝 알고리즘과 데이터 직관은 업무에서 실제 머신러닝 프로젝트에서 개방형 문제를 다룰 때 필수적인 요소입니다. 실제 업무를 수행할 때는 단순히 학교 과제처럼 정해진 단계를 따르지 않습니다.
데이터 직관력이 있다는 것은 새로운 문제에 직면했을 때 데이터를 사용하여 문제를 해결하는 방법을 알고, 새로운 데이터를 접했을 때 이를 평가하는 방법을 알고 있다는 것을 의미합니다.
이 데이터는 머신러닝에 적합한가?
어떤 유형의 머신러닝 모델이 적합할까?
머신러닝에 적용하기에 앞서 데이터에는 아무 문제가 없을까?
여러분은 어떤 질문을 하고 어떻게 답을 찾아야 하는지 알고 있습니다.
프로젝트가 진행되는 동안 다른 팀이 머신러닝의 결과를 활용할 수 있도록 파이썬으로 데이터를 가공하거나 내부 배포 프로세스를 사용하는 등의 결과물을 만들어 낼 수 있는 프로그래밍 역량이 필요합니다.
이론을 잘 알더라도 프로그래밍이나 소프트웨어 엔지니어링를 이해하지 못하면 머신러닝 을 구현할 수 없습니다. 여러분은 코드를 사용하여 데이터를 또 다른 코드로 구현되어 있는 머신러닝 알고리즘에 연결해야 합니다. 즉, 이론 지식을 실무 경험으로 전환해야 합니다.
머신러닝 직무에 관련해서 수요가 높은 프로그래밍 역량으로는 프로토타입을 제품으로 전환할 수 있는 (소프트웨어) 엔지니어의 능력, 즉 머신러닝을 통합하고 출시할 수 있는 능력이 있습니다. 어떤 직무에서는 모델 연구, 학습부터 배포 및 운용 환경에 이르는 머신러닝의 시작부터 끝까지를 담당합니다.
MLOps 엔지니어와 같은 일부 머신러닝 직무는 사용자에게 몇초 또는 몇 밀리초 만에 머신러닝 응답을 전송하기 위해 대량의 데이터를 처리할 수 있는 소프트웨어 인프라를 구축하는 일을 담당합니다.
여러분은 동일한 직무를 수행하지 않는 사람들과도 함께 일하게 될 수 있습니다. 머신러닝 업무에서는 소프트웨어 엔지니어, 데이터 엔지니어, 프로덕트 매니저 등 다양한 동료와 함께 일합니다. 팀 차원에서 업무를 완수하는 능력은 의사 소통 및 프로젝트 관리 기술과 같은 몇 가지 소프트 스킬을 포함합니다.
예를 들어, 팀원들과 의사소통이 원활하지 않다는 것은 프로젝트에 있어 심각한 블로커 (Blocker, 프로젝트나 일정 등이 원활하게 진행되지 못하도록 방해하는 것)이며, 이로 인해 머신러닝 프로젝트가 지지부진해지거나 우선 순위가 밀릴 수도 있습니다.
상사와 같이 한 사람하고만 작업하는 경우에도 여전히 프로젝트 진행 상황을 보고할 수 있어야 하며, 이를 위해서는 의사소통 역량이 필요합니다. 따라서 머신러닝 분야에서는 기술적인 개념을 비전문가와 소통할 수 있는 능력이 매우 크게 요구됩니다.
또한 작업을 순조롭게 진행하려면 프로젝트 관리 기술도 필요합니다. 우리 모두 교육이나 독학을 통해 할 일 목록과 캘린더를 관리하는 방법을 배웠지만, 여러분의 프로젝트 캘린더가 다른 사람의 캘린더와 우선순위에 따라 달라지기 때문에 직장에선 이를 관리하기가 더 어렵습니다. 팀을 관리하는 프로젝트 매니저 또는 프로덕트 매니저가 있더라도 여러분은 어느 정도 스스로를 관리할 필요가 있습니다.
소프트 스킬이 없으면 결코 업무를 완수할 수 없습니다. 기술적인 능력에만 집중하고 소프트 스킬을 소홀히 해서 인터뷰에서 자신의 능력을 입증하지 못하는 후보자가 되지 마세요.
✅ 세 가지 축의 최소 요구 사항 충족시키기
세 가지 역량 모두를 향상시키는 것은 매우 어려운 일이지만, 신입의 경우에는 아래 그림처럼 각 축에 대해 최소한의 기준 (예: 3/10)만을 요구받습니다. 가령 어떤 채용 후보자가 프로그래밍을 접해본 경험이 있다면, 숙련자나 경력자가 아니긴 하지만 교육을 시키면 역량 향상이 가능합니다.
이상적으로는, 다른 채용 후보자와 차별화를 하기 위해서는 특정한 머신러닝 직무에 가장 관련이 깊은 축 중에 적어도 하나 이상에서는 (예: 프로그래밍에서 5/10) 더 뛰어나야 합니다.
직급이 높아질수록 근본적인 최소 요구 사항은 더 높아지지만, 비슷한 경험법칙이 적용됩니다. 바로 최소 요구 역량을 충족시키는 것이죠. 그다음에는 지원한 직무에 따라 어떤 역량에 강점이 있는지를 다른 후보자들과 비교를 당하게 됩니다. 머신러닝 모델을 학습시키는 업무를 하지만 배포하지 않는 데이터 사이언티스트는 자신의 프로그래밍 역량을 머신러닝 이론이나 의사소통 역량 수준만큼 끌어올릴 필요가 없을 수도 있습니다.
신입 직무의 경우, 기술에 친숙하지 않은 팀원을 비롯한 많은 사람들과 함께 일하면서 힘들게 얻은 경험이 있어야 의사소통 능력이 높아질 수 있기 때문에 의사소통 역량의 요구 수준이 더 낮다고 말씀드리고 싶습니다(그렇다고 해서 0/10은 아닙니다!).
당연히 의사소통 역량이 뛰어난 일부 후보자들은 이 부분에서 경쟁 우위를 가집니다. 비전통적인 배경을 가진 후보자, 독학을 했거나 소프트웨어 엔지니어 직무 또는 다른 분야에서 전환한 후보자의 경우, 능숙하게 스토리를 전달하고 포트폴리오를 보여줄 수 있는 능력으로 다른 후보자와 자신을 차별화할 수 있습니다.
위 콘텐츠는 『머신러닝 인터뷰 실무 가이드』에서 내용을 발췌하여 작성하였습니다.
최신 콘텐츠