내 이야기

나는 AI를 좋아하지 않는다.

공돌이J 2021. 8. 3. 01:44

들어가며

이 제목은 많은 어그로와 악성 댓글을 불러올 수도 있지만, 내가 가지고 있는 AI와 데이터 분석에 대한 가장 근본적인 생각이다. 빠르게 발전하는 AI 분야에서 2년 전은 호랑이 담배씹던 시절이라고 여겨지고, 지금의 나는 데이터분석 필드에서 일하지도 않지만(...어쩌다 보니 데이터 분야 연구는 하고있다.) 데이터 분석에 발을 담가보았던, 그리고 빅데이터 시대의 흐름에 휩쓸려 가던 사람1의 이야기라고 생각해 주면 좋겠다.

덧붙이자면, 이 글에서는 수리적 이론이 뒷받침되는 SVM과 같은 모델이 아닌, 신경망을 위주로 서술했다. AI와 머신러닝 등 다양한 용어들이 혼용되지만, 그들이 주로 가리키는 것은 신경망 모델이라는 것을 밝힌다.

좋아하지 않는다면서 왜 했나.

학부 특성상 많은 진로의 길을 방황하던 내가 데이터 분석에 빠지게 된 이유는 생각보다 별 것 아니었다. 데이터 시대에 맞추어 데이터 분석 과목이 전공 필수가 되었고, 치열한 수강신청을 얼떨결에 뚫었고, 그 수업의 학점이 매우 잘 나왔던 탓이었다. 물론 교수님도 훌륭하셨다. (함께 일해보고 나서는 몇몇 부분에서는 아니라고 느꼈지만...교수님 죄송합니다. 사랑합니다.)학교를 다니며 많은 사람들에게 데이터 분석쪽에 재능이 있다는 이야기를 들었고, 나 또한 프로그래밍에 익숙하고 (라이브러리를 가져다쓰는 것을)잘하다 보니 어느새 나의 졸업 프로젝트 주제는 그 당시 핫하던 Explainable AI, Interpretable Machine Learning이 되었고, 많은 우여곡절 끝에 졸업할 때 쯔음 해서는 학회에서 자그마한 상을 받게 된다. 그리고 좋은 기회를 얻어 2년 전, 모 연구소에서 본격적인 데이터 분석 업무를 맡게 되었다.

처음 받았던 일은 매우 큰 용량의 센서 데이터를 가지고 예측 모델을 만드는 것이었다. 대용량의 데이터, 마음껏 활용할 수 있었던 고성능 GPU PC, 그리고 학부 때 모든 데이터 과목을 수강한 자신감에 차있는 내가 삼위일체를 이루며 빠르게 베이스라인 모델을 만들고, 모델을 고도화 하기 시작했다. 나의 모델의 성능은 빠르게 좋아졌지만 곧 한계에 닿게 된다. 애초에 학부를 갓 졸업한(심지어 그때는 졸업도 하지 않았었다.) 애기 학부생이 해봤자 얼마나 잘하겠는가. 그 때의 나는 우물안 개구리라는 것을 느끼며 좌절만 쌓여가고 있었다. 그렇게 나의 모델을 고도화 하는 일은 조금씩 나의 손에서 멀어졌고, 나는 이 부족함을 채우기 위해 많은 논문과 강의를 보고, 박사님과 discussion을 하며 나만의 지식을 쌓아갔다. 비슷한 데이터에서 성능이 잘 나왔다는 논문을 보며 직접 구현하고 적용해 보고, 새로운 모델을 적용해 보고, 새로운 전처리 방법을 적용해 보고를 반복한지 1년 반 동안 크고 작은 학회에서 발표도 하며 조금씩 쌓여가는 실적처럼 나의 모델도 성장을 거듭했다.

아니, 정확히 말하면 성장했다고 생각했다. 퇴사 후에 들려온 소식만 듣지 않았더라면.

퇴사 후에 만난 회사 직원들과 함께 식사를 하며 같이 했던 프로젝트를 얘기하는데 데이터가 완전히 잘못되었다는 이야기를 들었다. 그럼 나의 모델은 무엇인가? 높아진 성능을 무엇을 의미하는가?

나의 그 모든 것이 아무것도 아니게 된 것이다.

나는 왜 AI를 좋아하지 않는가

결국 이 모든 것은 왜 되는지 모르고 사용한 AI라는 도구에 있었다.

예를 들어 보자. 산업공학과라면 모두 배웠을 선형계획법이다. 우리가 어떠한 2차원 공간에서 제약식을 가지며 목적함수를 최대화 하는 어떤 문제를 푼다고 가정하면, 아래와 같은 그림을 그릴 수 있을 것이다.

Source: https://en.wikipedia.org/wiki/Linear_programming

이 문제는 해를 명확하게 찾을 수 있다. 2차원에서 확대시켜 고차원에서의 문제도 마찬가지다. 해를 가질 수 없는 다각형 외부의 영역에 해를 가지게 된다면 제약조건을 위반하게 되어 답이 틀리다는 것도 검증할 수 있다.

하지만 머신러닝, 혹은 AI를 통해 문제를 해결하는 프레임워크가 이러한 검증 과정을 가지고 있는가?

나의 사례를 보자. 나의 모델은 내가 잘못 낸 문제와 답을 가지고 어거지로 끼워맞춰왔다는 이야기이다. 사람으로 따지면 사기꾼이 아닌가? 애초에 문제가 잘못되었는데 어떻게 답이 나올 수가 있는가?

물론 우연히 데이터와 레이블 간에 상관관계를 가지고 있었을 수도 있고, 모델이 그러한 내재된 정보를 잘 찾았을 지도 모른다. 또한 이 분야의 역사가 길지 않아 아직 연구가 덜 되어 있는 부분이 많기도 하며 언젠가 머신러닝 모델이 잘 동작하는 근본적인 이유도 언젠간 밝혀질지 모른다. 하지만 지금 단계에서 잘 동작하는 이유조차 모른 채 사용하는 것은 많은 위험성을 가지고 있다고 생각한다. 그리고 만약 (지금까지 많은 우수 사례와 이론적 바탕들이 검증이 되어 그럴 확률은 낮겠지만) 신경망 모델이 지금까지 잘 맞아 떨어졌다는 것이 모두 우연이었다는 것이 밝혀진다면, 그 여파는 어떻게 감당할 수 있을까?

나는 감당할 수 없다. 그래서 신경망 모델을 사용하고 싶지 않다. (물론 사용하고 싶지 않다고 해서 사용하지 않는 것은 아니다.)

먼 훗날, 신경망의 원리가 밝혀져 이 글이 많은 비웃음을 당하며 나의 흑역사가 될 날이 올지도 모른다. 그러면 나는 이 글을 지우고 시치미 뗄 것이다. 하지만 그 전까지, 너무나 AI가 대세가 된 이 세상에서, 이러한 생각을 가지고 있다는 사람도 있다는 것을 조금은 알리고 싶다.

P.S.1 AI라는 용어 또한 아직 시기상조라고 생각한다. 통계적으로 잘 맞출 수 있도록 파라미터를 조정한 노드의 가중치들의 집합을 AI라고 부르는 것이 과연 맞는가 하는 생각도 든다.

P.S.2 이 글을 보며 블로그 주인이 누구인지 알 것 같다면 모른척 해주고 기억속에서 잊어주길 바란다. 내가 봤을 때 20년 안에 신경망의 원리가 밝혀져 99%의 확률로 글을 지우고 도망갈 것이다.