데이터 사이언스 하면서 느낀 점(2)
들어가며
데이터 사이언스 하면서 느낀 점(1) 포스팅을 업로드하고 후회를 많이 했습니다. 어쭙잖은 지식과 변변찮은 경험으로, 무언가 새로운 것을 깨우친 양 유난을 떤 것 같아서 였습니다. 이불킥을 했지만 이내 진정되었습니다. 모름지기 문자는 공자 앞에서 써야 한다고 생각합니다. 엄한 꾸지람이든 정성어린 충고든 뉴비에 대한 조롱이든, 잊혀지지 않는 배움을 얻을 수 있기 때문입니다. 그렇게만 된다면 잠깐의 창피함은 몇 번이고 견딜 수 있습니다. 너무나도 부족하지만 이번에도 어김없이 도사 앞에서 요령을 흔들어 보겠습니다.
데이터 사이언티스트로 근무하면서 데이터 분석이나 모델링만큼 공을 들인 일이 바로 고객과의 커뮤니케이션, 비즈니스입니다. 고객에게 인공지능의 효용성을 설명하고 우리 모델의 우수성과 강건함을 입증하며 종국에는 고객이 목표하는 바를 달성해야 합니다. 그 과정에서, 또 고객에게 AI는 그저 수단이지요. AI에 대한 의심을 거두지 못하고 예측 결과를 수용하지 못한다면, 딥러닝 할아버지가 와도 (고객 입장에서는) 여러 대안 중 하나에 그치고 맙니다. 프로젝트 성공을 위해 우리는 데이터과학, 프로그래밍에 더해 고객과 효과적으로 소통하는 데 능숙해야 합니다.
저는 현 회사에서 주로 데이터 컨설팅과 PoC 프로젝트를 담당합니다. PoC에서 솔루션 즉 대시보드 제작 단계까지 진전되면 MLOps, 프론트엔드 분들과 협업하죠. 수많은 PoC 프로젝트 가운데 1. 예측 결과가 미리 협의한 혹은 베이스라인 평가지표를 상회하고 2. 고객이 모델의 예측 정확도나
설명력(feature importance, 샘플별 shap value 등)에 만족하며 3. 예산 확보가 가능하고 4. 의사결정권자의 소위 ‘결심’이 섰을 때에 한해 본 계약으로 진행되는 것 같습니다. 플랫폼 서비스를 제공하여 이윤을 창출하는 인공지능 회사 입장에선 기술력뿐만 아니라 커뮤니케이션 및 비즈니스 역량도
계약 체결의 관건인 것입니다. 아래 내용은 이러한 상황에서 시행착오를 거치며 갖추게 된 태도입니다. 당연히 금과옥조로 삼는 건 아니고 매번 업데이트하고 있습니다.
고객의 목표는 다양하다
고객이 인공지능을 도입하려고 내부 분석 조직 혹은 외부 업체에 의뢰하는 이유는 가지각색입니다. 큰 사업 추진의 일환 혹은 타당성 검토, 어떠한 주장의 근거 자료, 기존 예측 프로세스의 성능 개선, 중요한 변수 파악 등등. 목표에 따라 원하는 바도 달라집니다.
때문에 시작 단계에서 명확한 문제 정의와 공통의 목표 설정이 매우 중요합니다. 예를 들어 대학교 신입생에게 전공 혹은 교과목을 추천하는 시스템을 만든다고 해봅시다. 그렇다면 추천의 기준은 무엇일까요? 커리어에 도움이 되는 전공, 미래에 유망한 전공, 수강했을 때 만족도가 높은 교과목, 수강 시 높은 평점을 받을 것으로 예상되는 교과목 등 설정하기 나름입니다. 시스템을 통해 궁극적으로 얻고자 하는 게 무엇인지에 따라 다릅니다. 추천을 통해 학사 관리에 대한 학생들의 만족도를 올리려 할 수도 있고 잘 적응하리라 추측되는 전공을 제시함으로써 학생들의 중도 이탈을 막으려는 목적도 상정 가능합니다. 최대한 정확하게(?) 추천할 수도 있고 다양한, 의외의 제안에 초점을 맞출 수도 있습니다.
동일한 스팸 메일 탐지 모델이 주어져도 고객이 사용하려는 의도는 상이합니다. 어떤 기업은 최대한 많은 스팸 메일 발송자를 퇴출하는 데 방점을 찍을 겁니다. 반면 무고한 이용자의 피해를 제로화하는 게 0순위인 회사도 있죠. 우리 AI 솔루션 이용자의 니즈에 따라 우리의 대응도 달라야 합니다.
위와 같은 사항을 분석 및 모델링 킥오프 전에 확실히 짚고 넘어가야 합니다. 그게 고객사와 제공사 모두에게 이롭습니다. 그렇지 않으면 중간에 높은 확률로 알력이 발생합니다. 어찌어찌 잘 봉합이 된다 하더라도 고객의 만족도와 신뢰도는 낮아지고 우리는 귀중한 시간을 잃는 불상하가 발생합니다.
베이스라인 모델의 중요성
원하는 정확도 수준이 있다면 그걸 목표로 하면 됩니다. 그러나 그 수준이 명확한 경우는 많지 않습니다. 이럴 때 잘 짜여진 베이스라인 모델 및 검증 결과가 중요해집니다. 그 검증 결과가 우리의 출발점이 되기 때문입니다. 베이스라인 메트릭을 뛰어넘은 머신러닝 모델을 만든다. 목표는 분명해집니다.
누구나 완벽한 모델을 원합니다. 특히 범위가 0에서 1 사이인 지표 즉 accuracy, AUC, precision, recall, R2, nDCG 등의 제시하면 대다수는 0.8 이상을 최저 기준으로 잡습니다. 하지만 이론적으로 특정한 features로 구성된 데이터 내에서 예측 오차를 Bayes error 이하로 줄일 수
없으며 현 시점에서 고객이 가져오는 문제는 십중팔구 인공지능 방법론이 한번도 적용되지 않은 것들입니다. 시도해보기 전까지는 장담할 수 없습니다. 따라서 납득 가능한 베이스라인 모델을 만들고 그 성능을 초과하는 머신러닝 모델 구축을 1차 목표로 합의하는 게 필요합니다.
모델링 결과는 최대한 보수적으로
고객에게 모델링 결과를 제시할 때는 최대한 보수적인 값을 산출합니다. 이 값은 우리 모델에 대한 고객의 첫인상입니다. 모든 관계에서 첫인상은 깊은 영향을 남기고 오랫동안 뇌리에 남죠. 그런데 이 결과가 오버피팅에서 비롯되었을 가능성은 다분히 존재합니다. 우리에게 전달된 데이터 분포 자체가 편향되었을 수도 있고 머신러닝 알고리즘 자체의 한계일 수도 있으며 특정 변수에서 데이터 유출(data leakage)가 발생했을 지도 모릅니다. 물론 과적합을 사전에 막는 게 우리 일이죠. 하지만 검증 시엔 새로운 데이터를 추론할 때에 비해, 그 결과에 긍정적으로 작용하는 요인이 더 많습니다. 어찌되었든 학습 데이터와 평가 데이터는 원래 한 덩어리였으니까요.
그러므로 우리는 최악의 상황까지 고려하여 모델링해야 합니다. 교차 검증도 하고 모델링하는 사이 새롭게 축적된 데이터를 inference해보고 혹시 모를 결측에도 대응할 수 있는 방책도 새워 두는 게 좋습니다. 첫 시도인데도 결과가 잘 나오면 무조건 의심부터 해야 합니다. 원인을 가혹할 정도로 객관적으로 살펴야
합니다. 우리가 제시한 검증 결과를 웃도는 테스트 지표가 나왔을 땐 서로 웃으며 얘기할 수 있습니다. 그 반대의 경우엔… 싸늘합니다. 가슴에 비수가 날아와 꽂힙니다.
Start small
많은 인공지능 전문가들이 한 목소리로 강조하는 것입니다. 간단한 문제에 우선적으로 AI를 적용해 보라는 얘기죠. 일반적인 조직에서 갑자기 인공지능 전면 도입에 뛰어들게 되면 걸림돌이 상당합니다. 당장 데이터부터 문제가 되죠. 아예 없는 경우는 다반사고 어떻게 수집해야 하는지 막막합니다. 비정형이라면 또 어떡할까요? 갖은 제약 조건을 맞닥뜨렸을 때 지레 보류하기 보다는 쉬운 문제를 푸는 데 머신러닝을 써보는 겁니다.
혹자는 말하죠. 인공지능 없어도 충분히 답이 나오는 문제에 뭐하러 비용을 들여 모델을 세우느냐고요. 일견 맞는 말입니다. 그럼에도 우리가 얻는 이익은 분명 있습니다. 사람이 예측할 땐 그 맞고 틀림이 누적 및 모니터링되기 어렵습니다. 반면 인공지능 모델의 에측 결과는 DB에 쌓이며 추적과 개선이 가능합니다.
또한 소수점 아래 열째 자리까지라도 구체적으로 값이 나옵니다. 분류 문제에선 예측 확률도 알 수 있습니다. 아주 간단한 의사결정나무를 썼음에도 모델이 어떤 과정을 거쳐 결과를 냈는지 세세히 알 수 있죠. 변수의 중요도, 결과 계산식(선형 회귀, 로지스틱 회귀, 판별분석 등), 샘플별 shap value 등
설명과 해석에 도움을 주는 값까지. 우리는 문장 대신 숫자로 말할 수 있게 됩니다.
완곡 표현
안타깝게도 갑과 을의 관계가 은연중에 때론 노골적으로 작동합니다. 길지 않은 납기 중에 PoC는 물론이고 MVP 대시보드를 만들어 달라거나 여러 가지 문제에 대한 개별 모델링을 하나로 묶어 후려치려든가 전 공정에 대한 완전 자동화를 꿈꿉니다. 무리한 요구에 덮어놓고 예스맨으로 일관해서는 곤란하지만 최대한 받아들이는, 공감하는 제스처를 취해야 합니다. 먼저 요구를 받아들이되 한계를 확실히 전달합니다. 그리고 우리가 할 수 있는 최선의 성의를 표합니다. 양식 있는 고객이라면 대부분 이해해주기 마련입니다.
그 과정에서 감정이 상하는 일이 없어야 합니다. 공든 탑이 사소한 사건으로 말미암아 송두리째 흔들리게 된다면, 어이는 집을 나가고 멘탈은 조각납니다. 고객은 고객대로 내가 비용을 지불했는데(물론 우리 담당자 주머니에서 나온 돈은 아니지만) 그에 걸맞는 서비스를 받지 못했다는 느낌을 받게 되죠. 문제 해결을
위해 업체가 하는 제안이 요령이나 몽니, 심지어 강요로 곡해될 수도 있습니다.
기타
-
데이터는 고객의 소중한 자산입니다. 보안에 각별히 유의해야 합니다. 더불어 우리의 노하우, 기술력 또한 막대한 시간과 노력, 비용이 투입되어 얻은 것입니다. 적정선 이상으로 공개되어선 안 됩니다.
-
고객이 인공지능을 전혀 모른다면 곳곳에서 삐걱거릴 겁니다. 두 톱니바퀴가 잘 돌아가려면 윤활유가 필요하죠. 간단하게나마 고객을 교육할 수 있다면 좋겠지만 녹록하지만은 않습니다. 이때 explainable AI가 큰 역할을 할 수 있습니다.
마치며
이상으로 글을 마무리합니다. 굉장히 거칠고 또 넓은 범위를 두루 건드리고 있어서 헛점이 많습니다. 퇴고를 거듭하면서 생각을 날카롭게 하겠습니다.
Leave a comment