생각보다 자주 접하는 일이다.
주위나 인터넷에서 사람들과 ML/DL 이야기를 하다보면 이 쪽의 진로나 전망을 물어오는 경우가 있다.
이런 질문엔 진지하게 받아줄 필요를 못느껴 대충 흘러가듯이 이야기를 해주곤 했지만
가만히 생각해보면 나는 과연 ML/DL에 대해 어떤 견지를 가지고있나 싶다.
이를 정리하기 위해 글을 남겨본다.
*거창하게 이야기는 했지만 종사자라면 다들 공감할 이야기일 것이다.
필자가 대학에 갓 입학했을 때는 유비쿼터스와 사물인터넷으로 IT 트렌드의 열기가 지펴올랐던 걸로 기억한다.
그리고 졸업할 때 쯤엔 인공지능과 딥러닝이 그 자리를 대신했다.
하지만 막상 필자는 사물인터넷이나 딥러닝의 실체에 대해서 지금에와서도 제대로 대답하기가 어렵다. (부끄럽게도 말이다)
그럼에도 불구하고 한 발을 계속 걸쳐오며 지금까지도 공부 중이다.
그 과정에서 수많은 친구들이 ML/DL쪽 진로를 물어왔고, 데이터 분석에 관심을 기울였다.
(물론 관심이 있다는 건 좋은 것이다. 적어도 필자는 졸업할때까지도 CS에 큰 관심은 없었다.)
당시 이 길을 가야겠다고 확신했던 친구들에게는 당연히 해줄 말이 없었다.
하고 싶은 일인데 누가 왜, 어떤 권리로 막겠는가.
다만, 확신없이 기술의 세련됨과 트렌드에 현혹돼 이 길을 선택하려는 친구가 있다면 필자는 항상 말려왔다.
이유는 지극히 단순하다.
컴퓨터는 계산기에 불과할 뿐이고, ML/DL은 그래봐야 수많은 최적화 도구들 중 하나에 불과하기 때문이다.
물론 기술의 세련됨은 있다.
학부과정 내내 규칙 기반 시스템에 얽매여있다 ‘학습’이라는 개념을 배우게 되는 순간 그 희열은 말로 할 수가 없다.
생각해보면 자기가 만든 시스템이 학습을 하고 좋은 결과를 내보낸다는 자체가 엄청 매력적인 일이다.
하지만 높은 차원에서 생각해본다면 이는 결국 허울 좋은 말일 뿐이다.
조금만이라도 ML/DL을 공부해봤다면 모든 ML/DL 문제가 최적화 문제로 귀결됨을 알게 된다.
최적화 문제를 푸는건 당연 어려운 일이다.
하지만 정말 어렵고 중요한 것은 문제를 푸는 것이 아니라 문제 자체를 정의하는 것이다.
그리고 문제를 정의하기 위해서는 당연히 데이터를 이해해야 한다.
이러한 스킬들은 물고기 책을 달달 외우고 캐글을 파헤친다고 해서 얻어지는 것이 아니다.
게다가 최적화 문제라는건 어쨋거나 어딘가의 도메인에서 발생하는 문제이다.
다시 말해 문제를 최적화하기 위해서는 우선 도메인을 이해하고 체득해야 한다.
(도메인 지식이 없는 상황에서의 데이터 분석이 얼마나 위험한지를 수치를 통해 입증한 논문이 있는데 제목을 잊었다. 찾으면 여기 달아놓을 예정이다.)
결국 중요한 것은 어떤 ML/DL 모델을 쓸지, 어떻게 파라미터를 조정할 지가 아니다.
데이터의 가능성을 파악한 후 데이터를 어떻게 변형하고 가공해 목표하는 가설에 부합시킬 수 있는지가 중요한 것이다.
(물론 data-driven approach의 특성 상 최근에는 수많은 도메인에서 분석 결과를 바탕으로 가설을 수립하는 추세이긴 하나 이것이 과학자로서 올바른 연구를 하는 방법이 맞는 건지는 아직도 잘 모르겠다)
애초에 안되는 데이터가지고는 SOTA 모델을 써도 나쁜 결과가 나올 것이고
되는 데이터가지고는 하다못해 선형회귀를 해도 좋은 결과가 나올 것이다.
(물론 ‘되는 데이터’라는게 현실에 댕그러니 존재할리는 없으니 열심히 구르는 수밖에 없다.)
정말 당연하고 단순한 이치이다.
하지만 이 사실을 생각보다 많은 사람들이 간과한다.
사회가 기술의 급격한 변화를 따라가지 못하니 인공지능에 대한 오해와 편견이 생기기 시작했다.
인공지능이 우리의 일자리를 위협하며, 딥러닝과 머신러닝이 마치 모든 문제를 해결해 줄 은탄환이 될 것이라 생각한다.
이 정도는 사회의 성장통이라 여기며 넘길 수 있다.
하지만 컴퓨터공학도가 이런 소리를 낸다면 그건 웃어 넘기기가 힘든 일이다.
한편, 필자가 생각하는 컴퓨터공학도로서의 데이터 분석 분야에서의 강점은
데이터 분석기술 그 자체보다는 폭넓은 분석기술의 이해를 바탕으로 한 데이터 수집 시스템의 설계개발 능력에 있다.
(애초에 분석기술만으로 따지면 CS는 후발주자이다.)
현재의 데이터 분석 파이프라인은 수집과 분석이 별개로 동작하기 때문에 필수적인 데이터는 수집하지도 않으면서 사용하지도 않고 사용할 수 없는 데이터만 수집하는 경우가 많다. (데이터 자체의 정합성은 둘째치고말이다.)
또한 수집가가 모델의 신축성을 모르기 때문에 데이터 수집 시스템 자체가 경직되기도 한다.
(A만 수용하는 시스템 vs A도 수용할 수 있는 시스템)
그렇기 때문에 분석기술들을 충분히 이해하는 사람이 직접 데이터 수집 시스템 설계개발에 참여한다면 당연히 좋은 결과가 있을 것이다.
(수집한 데이터를 독점하여 분석할 수 있다는 시장논리도 존재한다. 애초에 연구란게 그런 것이니..)
이런 관점에서는 CS전공자가 수학이나 통계를 전공한 사람보다 훨씬 직무상의 이점이 있을 것으로 생각한다.
아래는 읽어볼만한 글들이다.
특히 파비 블로그의 경우 딥러닝에 대해 신랄하게 비판하는데 충분히 공감되는 내용들이다. (비록 모든 내용에 공감하는 건 아니지만)
기본에 충실하는 게 항상 가장 어렵다.