Q&A. Data Scientist vs ML Engineer
별로 대수롭지 않은 주제지만 타임라인에 왕왕 등장해서 그냥 짧게 적는다. 평소에 나는 데이터 과학자인지 아니면 머신러닝 개발자인지를 궁금해한 적이 별로 없었다. 데이터 과학자가 머신러닝 개발자인 듯하고 머신러닝 개발자가 데이터 과학자인 듯하고 그게그거라 생각했다. 데이터 과학을 오래 하다 보면 머신러닝 개발자가 돼있고 반대로 머신러닝 개발을 오래 하다 보면 자연스럽게 데이터 과학자가 돼있다고 본다. 그럼에도 굳이 구분을 해야 하는 걸까?
데이터 과학자든 머신러닝 개발자든 공통적으로 수학 지식, 프로그래밍 스킬, 그리고 도메인 이해가 필요하다. 이것에 이견을 갖는 사람은 거의 없을 거다. 기본 기술 세트가 같으니 '데이터 과학자 = 머신러닝 개발자'인 듯한데, 또 곰곰이 생각하면 용어 (데이터 vs 머신러닝)에서 오는 어감 때문인지 몰라도 '데이터 과학자 != 머신러닝 개발자'인 듯도 하다. 이젠 헷갈린다. 어쨌든 이제껏 달고나 시리즈에서 데이터 과학자라 했을 때는 머신러닝 개발자를 포괄해서 적은 거였다.
데이터 과학자와 머신러닝 개발자는 과연 다른 존재인가? 굳이 구분을 짓는다면 데이터와 기술 중 어디에 초점을 두느냐에 따른다고 본다. 데이터 과학자는 데이터를 분석해서 인사이트를 얻기 위해서 여러 기술 (알고리즘)을 이용하고, 머신러닝 개발자는 기술 (알고리즘 또는 모델)을 잘 구축하기 위해서 데이터를 활용한다. 즉, 데이터 과학자는 데이터가 중심이고, 머신러닝 개발자는 기술이 중심이다. 목적과 수단에서 데이터이냐 기술이냐에 따라서 조금 역할이 다르다는 게 나의 잠정 결론이다.
데이터 과학자가 데이터를 분석할 때 항상 머신러닝 기술이 필요한 건 아니다. 단순한 EDA 작업을 통한 데이터의 통계치를 뽑거나 여러 관점에서 그래프를 그려보는 것만으로 데이터 분석이 끝날 수도 있다. 때론 PCA나 t-SNE 같은 디멘전 리덕션 기술을 활용해서 복잡한 데이터를 간단히 시각화한다거나 클러스터링으로 데이터를 세그먼트로 나눈다거나 분류나 회귀 기법을 이용해서 미지의 unseen 데이터를 예측해보기도 한다. 데이터 과학자에게 뒤에 나열한 기술들은 그저 데이터를 더 잘 분석하기 위한 도구일 뿐이다. (날이 갈수록 단순 도구 이상이지만)
반면 머신러닝 개발자 (또는 엔지니어)는 더 나은 모델을 만드는 것에 집중한다. 그런데 더 나은 모델이라는 것은 결국 데이터로 표현된 현상을 더 잘 설명해야 한다는 거다. 어떤 개발자가 X라는 알고리즘/모델을 만들었다고 치자. 이 알고리즘 X는 양자역학 이론을 기반으로 아주 복잡한 수식으로 표현된다고 하자. 그런데 주변에서 얻은 데이터를 이 알고리즘에 대입했을 때 예측 정확도가 30%였다면 알고리즘 X는 좋은 모델이 아니다. 그냥 임의 (Random)로 예측해도 평균 50%는 맞을 테니... 결국 좋은 모델을 만든다는 것은 데이터에 부합하는 알고리즘을 만든다는 거다. 다소 부차적인 작업이지만 데이터를 분석해서 인사이트를 얻는 것이 머신러닝 개발자가 더 나은 모델을 만드는 과정에 있다.
데이터 과학자에게 얼마나 다양한 도구를 갖고 있느냐가 능력의 한 척도지만, 머신러닝 개발자는 보통 특화된 기술 (요즘은 그냥 딥러닝)를 얼마나 심도 깊게 알고 있느냐가 능력의 척도인 듯하다. 데이터 과학자의 성공은 결국 데이터에서 바른 인사이트를 얻는 것이기에 문제 또는 데이터 상황에 따라서 도구를 적절히 꺼내서 사용할 수 있느냐가 중요하기 때문에 평소 다양한 알고리즘과 방법론을 숙지할 필요가 있다. 반면 머신러닝 개발자는 제한된 수의 기술 (알고리즘)이더라도 그걸 다양한 문제에 바르게 적용할 수 있도록 그 기술을 심도 있게 마스터할 필요가 있다. 그런데 이런 구분이 다소 난센스다.
머신러닝 개발자가 도구를 만들면 데이터 과학자가 그걸 활용한다 정도로 굳이 구분할 수는 있다. (지엽적인) 관점에 따라서 둘의 역할이 다소 다를 수가 있지만 경력이 쌓이면 결국 같은 지점에서 만난다고 본다. 도구의 기능이 부족하면 데이터 과학자가 그냥 수정하거나 개선해서 사용할 수도 거고, 머신러닝 개발자도 자신의 도구를 다양한 데이터/문제에 적용하면서 어필하는 거다. 좋은 데이터 과학자는 다양한 ML 알고리즘을 자유자재로 사용할 줄 알고, 바른 데이터 과학 프랙티스를 갖추지 않고 훌륭한 ML 개발자가 되기 어렵다. 검법을 수련하는 무도인에게 칼춤을 잘 춘다고 하거나 칼춤을 추는 무용수에게 검법이 좋다고 말하면 실례다. 하지만 경지에 오른 고수의 몸동작은 그게 검법인지 칼춤인지 구분하기 어렵다. 데이터 과학자와 머신러닝 개발자의 구분은 결국 무의미하다.
본인이 수학 (특히, 통계)를 잘하고 다양한 현상을 데이터로 파악하는 게 재미있으면 데이터 과학자로, 코딩이 재미있고 뭔가를 만드는 게 좋으면 머신러닝 개발자로 시작해서 경험을 꾸준히 쌓으면 결국은 한 곳에서 만날 가능성이 높다. 사람에 따라서 평생 데이터 분석만 업으로 삼는 이도 있을 거고 역으로 개발 구루로 남는 이도 있겠지만 데이터 과학이든 머신러닝/인공지능이든 제대로 하겠다면 필연적으로 양쪽에 모두 발음 담가야 한다. 결론은 '데이터 과학자 vs 머신러닝 개발자'라는 불필요한 논쟁/고민보다는 자신이 편한 것부터 시작하시라는 거다.