Pabii에서 데이터 사이언티스트 인턴을 채용합니다.

 

주요 업무

Pabii의 출시 예정 앱에 들어가는 모델링 작업 지원

기타 회사 잡무

 

필수조건

학부 수준의 선형대수학, 회귀분석

Pabii의 데이터 사이언스 강의 수준의 머신러닝 지식

데이터 모델링 경험 (*본 블로그에서 인정 받을 수 있는 모델링 경험)

(정규 데이터 사이언티스트에게 요구하는 필수 지식 사항 참조 링크)

 

우대조건

Pabii의 데이터 사이언스 강좌 수강생

Pabii의 모델링 강좌 수강생

각 대학 별 계량 마케팅 과목 수강생

온라인 광고 시장에 대한 (수학적, 통계학적, 경제학적) 이해도

다수의 데이팅 앱 실제 사용 경험자

 

기타사항

업무 시간: 오전 9시 ~ 오후 6시 (각각 +-1시간), No 야근, No 회식

근무 기간: 3개월 ~ 최장 6개월

정직원 승격: 개인 능력에 따라 인턴 기간 종료 후 Data Analyst (not Scientist)로 채용

 

주의사항

R, Python, Julia 등의 코딩 실력에 관심없습니다.

수학, 통계학, 머신러닝에 대한 이론적인 이해도와 모델링 센스에 대한 지식만 확인합니다.

 

지원방식

간단한 블로그 감상평 (you can be critical, if you can)

1-pager resume and 1-pager only

이메일: [email protected]

 

채용 완료 시 삭제합니다.

개발자 면접을 보다보면, 파비의 사업모델은 뭐냐, 기술 역량은 얼마나 뛰어나냐,  비지니스 철학은 뭐냐 같은 종류의 질문을 받는 경우가 있다. (더불어서 돈 많냐, 월급 떼어먹는거 아니냐 등등의 스타트업이 으레 받을법한 부끄러운 질문도 가끔 받는다ㅋㅋ 우리 돈 많다ㅋㅋ) 보안 이슈 때문에 이미 회사 홈피나 다른 블로그 글에 다 공개되어 있는 부분 이상으로 딱히 더 설명해 줄 부분은 없는데, 그래도 좋은 인재를 잡고 싶은 마음에 이것저것 설명을 좀 더 깊게 해 주기도 한다. 보통은 회사 홈피와 블로그를 자세히 안 보고 온 티가 나는게 설명이 좀 더 깊어지면 눈빛이 흐려지고 무슨 말인지 잘 모르는 표정들이 된다.

그렇게 사업모델을 설명하다보면 참 재밌는 현상을 볼 수 있는데, 설명 초반부에 개발자들 표정이 참 밝다. 그 정도는 나도 만들 수 있다는 자신감의 발로일 것이다. 가끔은 여기 나가면 내가 당장 그거 만들어서 니네 사업모델 뺏들어야겠다는 느낌의 표정을 짓는 분들도 있다.

그런 자신감 or 거만함 넘치는 표정이 좀 보기 불편해져서 유저들간 동질성 / 이질성을 구분해내는 Homogeneity index를 찾아내는 아이디어로 박사시절에 은행별 포트폴리오의 유사성을 잡아내던 Dummification, Weighting matrix 계산 같은 걸 슬쩍 언급하면 그 개발자들의 표정이 갑자기 매우매우매우 어두워진다. 표정 변화를 보고 있으면 은근히 재미있다 ㅋㅋ

사실 그렇게 눈에 보이는 계산식 부분은 아무것도 아니고 (그 정도는 Pabii의 데이터 사이언스 기본 수업에서 다 가르쳐주는 부분이다), 그 전에 데이터 전처리해야할 부분에 대한 고민으로 매일같이 머리가 깨지는 고통을 겪고 있다. 아마 수업을 찾아오셨던 분들은 여기서 말하는 데이터 전처리라는게 NA 메워넣는 작업이 아니라, 데이터 재구성이라는 점을 말해주지 않아도 이해하실 것이다.

그런 데이터 전처리 중에 그나마 좀 쉽게 이해될만한 내용만 몇 가지 정리해보자.

 

2-Stage-Least-Square

연말 보너스 산정을 하는데, 우리 팀이 지난 1년간 온갖 열정 (이라 쓰고 야근, 주말 출근이라 읽는다)을 쏟은 끝에 매출액이 급상승 했으니 우리 팀원에게 좀 넉넉하게 보너스를 주고 싶다는 주장을 하는 팀장님이 있다고 생각하자.

그 회사 인사팀에서는 올해 그 팀에서 설비를 5대나 사들여 놓은 탓에 매출액이 폭증한거지, 정작 인력 투입으로 얻은 성과는 그렇게 크지 않다며 보너스 요구를 받아들이지 않는 상황이 생기면 어떻게 될까?

누가 맞는걸까? 이런 “논리”의 싸움은 맞다, 틀리다를 알 수 없으니 그냥 적당히 타협하는 보너스를 주자고하면 될까? 그럼 납득을 못하는 팀원들의 불만은 어떻게 잠재울 수 있을까? 그 팀에 보너스가 간다고 기분 나쁜 다른 팀들의 불만은 어떻게 잠재워야할까?

사실 이런 상황은 정말 간단한 2-stage-least-square를 이용해서 맞다, 틀리다를 말할 수 있다.

에이~ 수학으로 설명하면 누가 받아들이냐고?

매출액이라는 종속변수 (y)는  분명히 우리 팀원들의 열정(….)과 설비 5대의 결합물일 것이다. (물론 운, 시장 트렌드 등등의 외부적인 요소가 끼여들었을 여지는 인정한다.) 여기서 설비 5대가 정말로 효과가 있었는지를 “수학적”으로 어떻게 검증하냐고? 설비 5개 증가값을 X1으로 우리팀의 노동력 투입을 X2로, 나머지 변수들 X3으로 놓고, Y를 X1으로 Regression 한 다음 (1st-stage), 잔차항을 다시 X2, X3으로 Regression하면 된다 (2nd-stage). 만약 X1의 기여도가 컸다면 매출액 증가분 (y값의 상승분)이 X1으로만 설명되는 현상이 나타날 것이다.

그런 수학식이 무조건 맞다는 법이 어딨냐고? 매출액이라는 데이터도 결국은 N차원의 Vector고, 모든 Vector들은 여러개의 다른 Vector들의 합성으로 표현될 수 있다. 고등학교 수학이다. 그렇게 벡터를 쪼개보는 방식으로 지구 자전 & 공전 중에 위성 발사의 궤도가 어떤 영향을 받을지도 계산하고, 핵무기를 실은 대륙간 탄도탄 미사일의 궤도도 오차범위 5m 내외의 무서운 정확도로 계산할 수 있다. 그런 우주적인 힘의 영향을 높은 정확도로 계산하는 작업쯤 되어야 “수학”을 붙이지, 겨우 매출액 같은 단순 그래프를 여러개의 Vector로 쪼개는 작업에 “수학”이라는 명칭을 붙이는 것도 민망하다.

 

Instrumental variable (IV)

빅데이터 시대가 왔다고 데이터가 넘쳐난다고들 말이 많은데, 정작 데이터 사이언티스트 입장에서 필요한 데이터는 항상 없다. 예를 들어, Pabii의 사업 모델에서 유저들의 온라인 구매 데이터 유무는 우리 회사 상품 라인업을 바꾸고, 심하게는 사업의 존폐에 영향을 끼칠만큼 중요한 정보다. 근데, 쇼핑몰들, 카드사들에게 돈을 주고 그 정보를 사지 않는 이상, 유저들의 구매 데이터를 구할 방법이 없다. 거기다 그렇게 제 3자에게 데이터를 파는 것은 원칙적으로 불법이다. (이 문제를 어떻게 해결하고 있는지는 회사 기밀이므로 여기에 따로 공개하지는 않는다.)

위의 문제를 해결하는 실마리가 될만한 간단한 사례를 하나만 쉐어해보자. 과금형 게임을 하는 유저들 중, 장시간 게임을 하는 유저들 대부분은 아이템을 돈 주고 구매 (속칭 “현질”)하지 않는다. 반면, 짧게 짧게 플레이해서 스트레스를 해소하려는 목적으로 게임하는 유저들은 괜히 경험치 끌어올리려고 밤을 새느니 그냥 아이템을 사고 마는 경우가 잦다. 자, 이런 정보가 있다면 게임 하는 시간을 “어떻게, 잘” 이용하면 현질유저인지, 경험치 노가다 유저인지 구분할 수 있지 않을까? (물론 정확도가 100%는 아니겠지만…)

이런식으로 실제 필요한 데이터는 없지만, 유사한 정보를 보여줄 수 있는 데이터를 도구 변수 (Instrumental variable, IV)라고 한다. 수학적으로 표현하면, 특정 데이터 셋이 보여주는 Vector Space와 유사한 Vector Space를 재구성해 줄 수 있는 데이터 셋이라고 생각할 수 있다.

가만히 보면 우리가 갖고 있는 데이터들 상당수가 이런 방식으로 데이터 처리만 잘 하면 Vector Space 메워넣기가 가능한 경우가 많다. 이걸 단순히 Neural Net에 집어넣으면 알아서 척척척 해주는거 아닌가요라고 묻는 특정군의 사람들이 있다는 걸 알지만, 학부 선형대수학 수준의 지식만 있어도 그런 마구잡이식 Network 모델이 아니라 합리적인 데이터 재구축 및 변수 선정이 필수적이라는 걸 이해하실 것이다.

실제로 IV를 쓰는 것을 수학적인 “결례”라고 생각하고 폄하하는 통계학자들도 있고, IV없이 연구가 거의 불가능한 사회과학 문제를 붙잡고 계신 연구자 분들도 있다. (가까운 친구 중엔 IV로 졸업 논문쓰고 박사 받은 친구들도 꽤 된다.) Vector Space를 완벽하게 보정해주지도 않고, A변수랑 B변수랑 연관 있을 것 같아서 이렇게 IV를 골랐습니다와 같은 주먹구구식 설명에 회의감을 느끼는 분들께는 대단히 죄송하지만, AdTech 비지니스를 하다보면, 특히 법적 제약의 범위 안에서 쓸 수 있는 데이터만 갖고 고민하다보면, IV를 어떻게 찾아야할까, 어떻게 구성해야할까에 대한 고민이 깊어지는 경우가 많다. 위의 과금형 게임 유저 찾기는 하나의 작은 예시일 뿐이다.

 

Dummification by Tree

Tree 계열 모델 (Decision Tree, Random Forest, Gradient Boosting 등)을 언제 쓰는게 더 합리적일까? 단순히 결과값이 잘 나올 때 쓰는거 아니냐고?

Tree 모델의 계산 방식, 정확하게는 Tree가 추가되는 과정을 하나하나 살펴보면, Monotonic increase/decrease가 있는 데이터 셋에서는 크게 효과를 보지 못할 계산법이라는 걸 바로 파악할 수 있다. (설명 타이핑하기 귀찮으므로 2019년 1월 수강생 후기 참조ㅋ. 신진수 님 설명 감사합니다.)

비슷한 예제를 이전 글에서도 공유했었는데, 약품 투약의 효과가 혈당 수치 x1 ~ x2 구간, x5 ~ x6 구간에서만 긍정적으로 나타나고, 나머지 구간에서는 전혀 효과를 못 본다는 연구 결과가 있다고 하자. 아마 x2 ~ x5 사이의 혈당 수치를 가진 환자 분께는 그 약품 대신 다른 약품을 써야할 것이다. 이런 식으로 특정 기제의 효과가 지속적으로 상승/하락하지 않는 경우가 위에 말한 Monotonic increase/decrease에 해당하는 사례인데, 이럴 때 데이터 처리를 전혀 하지 않는다고 가정하면 당연히 Regression 계열의 모델들보다 Tree계열의 모델이 훨씬 더 Fitting에 적합할 것이다.

Tree가 하나하나 추가될 때마다 x1 ~ x2 구간, x5 ~ x6구간에서 1, 나머지 구간에서 0인 것을 세세하게 구분할 것이기 때문이다. 반면 Regression 모델로 Fitting 작업을 했으면 x2 ~ x5 구간에서 효과가 없었던 탓에 평균적으로는 그 약품의 효과가 별로 안 좋았다는 결론이 나올 가능성이 높아진다.

그래서 앞으로는 Tree모델을 쓴다고 결론내리면 될까?

Tree 모델로 데이터의 구조가 이렇다는 걸 파악하고나면 필자는 혈당수치 값을 Dummification한다. (머신러닝하는 친구들은 이걸 One-Hot-Encoding이라고 부른다.)

왜? Regression으로 계산하는게 각 변수별 효과를 컨트롤하기도 좋고, 내 모델이 어떻게 돌아가는지 하나하나 짚고 가기 훨씬 더 효율적인 구조를 갖고 있는데, 혈당수치1구간, 5구간만 0/1로 놓는 방식으로 데이터 구조를 바꾸고나면 굳이 Tree한테 맡겨놓고 알아서 계산해주겠지라며 넋놓고 기다리는 짓(?)을 안 해도 되기 때문이다. (같은 맥락에서 Neural Net을 무조건 쓸게 아니라, 데이터 구조를 파악하고나면 굳이 그런 Computationally heavy한 계산법을 피할 수 있는 경우도 많다)

이런 Computational approach를 깊이있게 공부하신 분들은 다 알겠지만, 계산속도 느리고, 데이터 셋 바뀔 때마다 모델 변형이 잦고, 구조적으로 컨트롤이 안 되는 모델은 언제나 연구자들에게 차선책에 불과하다. 데이터 구조만 살짝 바꾸면 굳이 Tree를 안 써도 되는데 굳이???

 

나가며 – 1류 Data Scientist란?

전공마다 상황은 조금씩 다르겠지만, 필자가 있었던 Mathematical Finance 전공에서 “데이터를 이용한~”이라는 접근 방법, 통칭 “Empirical research”는 홀대를 받는 정도에 그치는게 아니라, 아예 리그가 낮은 연구자들이나 하는 작업이라는 이미지가 강했다. 쉽게 말하면 수학 모델링을 이용해 우리 전공의 문제를 풀어내면 메이저리그고, 데이터로 그런걸 보여주는 연구자들은 마이너리그 취급을 받았다. 왜냐고? (머리 많이 쓰는) 수학 모델링 작업은 (별로) 없고, (머리 별로 안 써도 되는) 데이터 전처리하다가 세월 다 보내는 경우가 허다했기 때문이다.

물론 그런 Empirical research하는 분들도 우리 필드의 그 누구도 생각해내지 못한 기발한 방법으로 모델을 만들거나, 데이터를 완전히 다른 방식으로 변형해서 상상하지도 못한 함의를 이끌어내는 분들도 있었기 때문에, 배우는 입장에 있던 필자는 특별히 Empirical research를 무시하거나 하진 않았다. (오히려 더 좋아했던 것 같다^^) Empirical 이라고 무시당하던 분들은 보통 하늘에서 뚝 떨어진 방정식 하나를 주장하는 분들이었지, 수학적인 아이디어를 교묘하게 활용해 데이터를 색다르게 쓰시는 분들은 굳이 마이너리그 대접을 받지는 않았다. 왜? 그 분들은 (수학적으로) 머리를 많이 써야되는 데이터 전처리를 하셨기 때문이다.

학계의 분위기를 소개하는 이유는, 요즘 머신러닝을 이용한 어쩌고, 딥러닝을 이용한 어쩌고라는 서비스 만든다는 분들께도 직접적으로 해당되는 사례이기 때문이다. 별 생각없이 데이터를 무작정 입력하기만 하면, 정말 마이너리그 취급이나 당하는 이른바 “2류 연구자” or “2류 데이터 사이언티스트”밖에 안 될 것이다. 정말 “1류”가 되고 싶다면, Empirical research로도 존경받는 그 연구자 분들처럼 데이터를 활용하는 방식에 대한 고민이 담긴 결과물을 비지니스에 가지고 올 수 있어야 한다. 그래야 남들이 따라할 수 없는 결과물을 만들어내는 “몸 값하는” 데이터 사이언티스트가 되는 것이다.

그런 데이터 전처리를 잘 하려면 위의 모델들만 몇 개 골라서 공부하면 되냐고? 글쎄다. 저건 필자가 대학원에서 몇 년동안 통계학 공부한 지식을 실제 데이터 전처리를 하던 중에 적용해 본 몇 가지 사례들에 불과하다. 데이터 사이언스 공부하고 싶으시거든 구글 검색창에 “최신 인공지능 계산법” 같은 낯뜨거워지는 검색어 입력하시지말고, 통계학 교과서를 다시 펼쳐보시는건 어떨까?

 

데이터 컨설팅 요청을 받는 경우가 있다. 단순하게 주가 예측하는 알고리즘 만들어달라거나, 비트코인 가격 맞출 수 있게 해달라거나 하는 둥의 황당한 요청이야 단번에 거절하는데, 때때로 최소한 말은 되는 데이터 사이언스 급의 프로젝트를 들고 오시면 일단 답변은 드린다. 근데, 다들 생각하시는게 무슨 개발 프로젝트 발주하는 마인드인 것 같아서 황당할 때가 많다.

얼마전에 Android 개발자 포지션에 지원하신 분의 메일 내용 일부가 이 글의 주제와 맞닿아 있는 것 같아서 살짝 소개만 해 본다.

인공지능 회사에 안드로이드 개발자로 입사…. 개발한 어플을 홍보할 마케팅 비용이 없다는 이유로 정부 프로젝트를 회사에서 진행…. 인공지능 키워드로 홍보를 하는 회사인 만큼 인공지능 기능이 들어간 정부 프로젝트에 참여하게 되었는데, 해당 프로젝트에 참여하게 되면서 문제가 발생하게 됩니다.

평소에 수학적인 기반 지식이나 인공지능 및 데이터 관련 기반 지식이 전혀 없던 저는 해당 업무는 저의 업무가 아니며, 내가 맡을 경우 결과가 좋지 않을 것이다라고 강하게 어필하였으며 연구인력이 필요하다고…. 실제로 회사에 있는 연구 인력이나 데이터 사이언티스트는 너 개발자인데 왜 못해라는 분위기로 억지로 저에게 일을 떠넘겼고….

내가 무능하고 잘못생각한건가라고 헷갈리기 시작했습니다… 뭔지도 모르는 수식들을 봐가며 이해하기를 시도하다 포기하고 코드들을 단순히 복붙하였고… 그림찾기 수준으로 같은 데이터만 수집하는 매크로를 작성하여 데이터 셋을 가공했고…. 결과가 왜 그렇게 나오는지 알지도 못한채, 내가 학습하는 알고리즘이 무슨 알고리즘인지도 알지도 못한채….

블로그의 글을 (중략) 이런 분이 운영하는 회사에서 업무를 하게 된다면 적어도 내가하는 안드로이드 개발 업무 외에 다른 업무를 말도 안 되는 이유도 맡게될 이유는 없겠구나는 생각…. (중략)

매일같이 보고 듣고, 가끔은 매우 가까이서 보고 듣게 되는 현실이다. 경력 3년차 안드로이드 앱 개발자에게 저런걸 시켜서 정부 프로젝트라는 허명아래 세금 낭비를 하고 있는데, 내 입장에서는 안타까울 뿐이다.

저런 프로젝트들만 보고 연락을 주셔서 그런지는 모르겠는데, 데이터 컨설팅 요청을 하는 사람들에게서 대화가 안 된다는 느낌을 강하게 받은 에피소드 몇 개만 소개한다.

 

모 게임사 Case – 개발자 한 명이랑 너랑 하면 되는거 아냐?

어느 중견 게임사, 아마 게임 업계 계신 분들이면 이름 듣고 아~ 정도가 나올만한 회사의 서울 지사장이라는 분이 연락을 주셨다. 자기네 특정 서비스가 인간이 풀어낼 수 있는 건지 아닌지, 꼼수로 풀어낼 수 있는건지 아닌지를 알아낼 수 있는 “인공지능” 알고리즘을 만들 수 있냐고 하시더라.

몇 차례 메일을 주고 받은 끝에, Reinforcement learning을 시켜야하고, 시뮬레이션 기반으로 Model-Free (속칭 Q-learning)으로 모델을 만들어야한다는 사실을 깨달았다. 거기다, 게임 중에 랜덤으로 추가되는 변수들이 스테이지 별로 점점 더 많아지는 구조라 더더욱 알고리즘 개발에 시간이 많이 걸린다고 알려드렸다. 저런 랜덤 요소들을 무작정 변수들로 추가하기 시작하면 시뮬레이션으로 모든 Grid를 다 찾아야하기 때문에 Learning 작업이 아예 안 끝날테니, 뭔가 합리적인 규칙을 이용해서 랜덤 변수들을 최소화할 수 있는 조건식을 찾아봐야할 것 같다고 수학적인 설명을 해 줬다. (당연히 못 알아들었을 것이다.)

그 서울 지사장이라는 분은 자기네 회사에 병특으로 와 있는 K모 대학 출신 개발자가 매우 똑똑한 인재니까 필자에게서 저런 “수학 모델링” 작업을 훔쳐(?) 배우면 몇 달안에 저런 “인공지능 알고리즘”이 뚝딱~ 개발이 될 것이라고 생각하고 있으시더라.

이건 Bellman equation으로 모델을 만들어서 손으로 풀 수 있는 부분 (Analytic solution)이 최대한 많아지도록 모델을 설계해야한다고, 필자와 비슷한 수준으로 Bellman equation에서 2개, 3개 이상의 random state variable이 있는 경우를 풀어본 경험이 있는 사람이 몇 명 붙어서 이런저런 고민을 길게해야한다고 설명을 해 줬는데, 정말 전혀 못 알아 듣는 표정이더라. (사실 여기서 대화를 접었어야 했다.)

끝까지 자기네 개발자를 투입시키면 비용이 절감될텐데 왜 다른 박사를 불러올려고 하느냐면서 말을 잡아 끌다가, 나중에는 다른 수학과 교수들과 연락하고 있다는 식으로 가격 협상을 하려고 하셨다. 외람되지만 수학과 교수님들 중에 Bellman equation 으로 모델 만들고, 그 때 state variable이 너무 많다는 이유로 손으로 푸는 대신 컴퓨터의 Trial-and-error 방식으로 문제를 풀어보신 분은 아마도… 없을 것이다. 물리학 하시는 분들이나 기계공학 하시는 분들이 비슷한 작업을 하시는걸 본 기억은 난다. (그런 수학 방법론을 쓰셨다는 이야기지 머신러닝에 활용했다는 이야기 하는건 아니다.)

나중엔 Proto-type을 만드는 견적을 달라고 하시던데, 이건 뭐, 저런 연구과제가 어떻게 돌아가야되는지 전혀 모르는 분이나 하는 질문이 아닐까? 금액을 불렀더니 아예 답장도 안 주더라. 답장도 안 하는 정도의 무례한 사람에게 왜 내가 시간 낭비를 했을까?

 

모 의학 스타트업 Case – 사업 아이디어를 전부 만들어주세요

어느 의학 스타트업에서 생체데이터와 자기들 내부 데이터를 “분석”하여 모델 구축 후 (“분석”이라는 단어를 쓴 것부터 이미 이 블로그를 대충 봤다는 티가 났었다), 그 데이터를 리얼타임으로 “분석”하면서 의사결정을 예측하는 앱을 개발하고 싶단다. 그러면서 마지막에 앱 만드는 부분만 자기가 할테니 앞 부분을 다 만들 수 있냐, 가격은 얼마냐는 질문을 받았다.

그 스타트업 관계자의 익명성을 위해서 구체적으로 무슨 데이터였는지에 대한 정보는 생략한다.

이 회사의 홈페이지를 들어가면 딱 저 사업 모델로 “혁신”을 갖고 온다고 써 놨다. 설립일이 2018년 2월로 되어 있고, 약 30억 정도의 투자금을 받았던데, 위의 요구사항 메일을 봤을 때 1년동안 저걸 시도해보다가 내부적으로 실패하고 “실력자(?)”로 짐작되는 사람에게 외주를 주는 방식으로 해결하려고 한다는 사실을 감 잡을 수 있다. (관계자님, 제 짐작이 틀렸다면 사과드립니다.)

완전히 남의 사업 모델을 하나 다 만들어달라는 급의 요구를 하는데, 의학 데이터는 필자가 잘 모르는 분야이기도 하고, Pabii 사업이 바빠 시간을 쓰고 싶진 않았지만 그래도 돈 없는 스타트업 입장에서 직원 분들 월급도 주고, 설비도 들여놓고, 외부 마케팅 비용도 벌어야되니 돈만 많이 주면 해 주겠다고 크게 양보를 했다.

사업 모델을 들어봤을 때, 그들이 말하는 데이터가 리서치 할 수 있는 수준으로 이미 확보되어 있다는 전제아래, 1단계 모델링 작업, 2단계 실시간 처리용 개발작업, 3단계 앱 개발 작업으로 나뉜다고 말씀드렸더니, 그럼 (돈 좀 아끼고 싶으니까) 1단계만 부탁하고 싶단다. 근데 실시간 처리용 개발하려면 서버에 저 모델을 어떻게 얹어야하고, DB는 어떻게 설계해야하는지 계속 저랑 커뮤니케이션해야될텐데요? 그건 공짜로???

우리 Pabii의 DSP 사업 모델만해도 최소 10억 이상의 초기 투자금이 필요한 서비스다. 그 사이에 이것저것 돈 들어갈 일이 많고, 솔직히 말해서 10억원도 턱없이 부족하다고 생각한다. 그나마 다행인 부분은 연구, 개발 분야에 외주 줄 필요가 없을만큼의 인력이 모여있기 때문에 “도전” 부분에서는 비용이 절감(?)될 뿐이다.

반면, 저 의학 스타트업은 자기네의 핵심 모델을 개발하는 작업을 완전히 외주줘야할만큼 연구 수준이 낮은, 말 그대로 “이빨로 투자받은” 상태인데, 이런 외주에는 얼마를 쓰는게 맞을까?

필자가 같은 상황이었으면 아예 창업을 하지 않았거나, 아무리 많은 돈이 필요해도 저런 모델링을 할 수 있는 데이터 사이언티스트 찾아 삼만리를 했을 것이다.

필자가 잠깐 겪었던 미국의 어느 스타트업은 이름만 파이낸스 박사지 사실 세부 전공은 아무 관련이 없는 교수 하나를 감사로 임명하고, 통계학 석사 출신 중국인 하나에게 특정 모델을 만들라고 시켰다가 그 중국인이 탈출하고 필자를 뽑았었다. 면접 숙제라고 나오는 내용들이 모조리 경쟁사 모델 replication인데 가이드가 너무 없어서 이상하다고 생각했다가, 회사 들어가자마자 이 사람들이 모델도 없고, 나한테 모델 만들라고 할꺼면서 지분을 0.0x%만 주려는 무개념 욕심꾸러기라는 사실을 깨닫고 탈출했었다. (그리고 그 회사는 얼마전 투자금을 다 소진하고 청산 절차를 밟았더라.)

앱 하나 만들면서 몇가지 알려진 기능을 구현해달라고 개발자를 찾는 것도 아니고, Seed에 30억이 넘는 투자금액이 들어오는 “상상속의 도전”을 시도하는 회사가 자기네 연구 능력 부족으로 외주를 주게되면 얼마를 써야할지 지금도 잘 모르겠다. 모르긴 몰라도 전세계에 당신들이 원하는대로 연구 결과물을 뽑아낼 수 있는 사람이 몇 명 없을 것이다.

 

어느 대기업(들) – 데이터 사이언티스트 있는 스타트업 하나 인수하면 되는거 아냐?

최소 2개의 국내 대기업들에서 만났던 편견이다. 데이터 사이언티스트라고 뽑은 인력들이 사실은 Data Engineer거나, Data Analyst라고 냉정하게 평가해줬더니, 그럼 데이터 사이언스 프로젝트 외주 주지말고 아예 Data Scientist 있는 스타트업 하나 인수하면 되는거 아니냐는 식으로 전략을 바꾸더라.

처음 겪었던 대기업 1번은 학부생들이 우리 페X스북에서 인턴해봤던 데이터 사이언티스트에요~ 라고 팀 만들어놓은 걸 보고, “Acqui-hire” (인재 고용을 위해서 신생 스타트업 팀을 통째로 인수하는 것)를 시도하고 있더라. 당시 그 분들이 옵션 중 하나로 뒀던 중형급 스타트업은 핵심 사업 모델을 모 대학교에 있는 어느 교수한테 외주를 주고 있는데, 그 교수는 그쪽 시장이 어떻게 움직이는지에 대해서 굉장히 얊은 이해를 가진 분이었고, Acqui-hire 하려고 했던 그 학부생 스타트업은 학부 수준 통계학을 이것저것 적용해본 걸로 블로깅하는 기초 수준이었다. 더불어 고민하셨던 투자 옵션이 관련 비지니스를 몇 달동안해서 이것저것 개발해봤다는 초짜 개발자들 스타트업에 지분 투자하는 거였던걸로 기억한다.

참고로 관련 비지니스를 몇 달동안 해 봤다는 그 스타트업은 비지니스 모델이 제대로 안 돌아가니 국내 유명 K대학 학부생 동아리!!!!! 애들과 업무 협조를 해서 “인터넷으로 배운” 비지니스 모델을 구현하겠다고 시도하고 있었다. (후에 관계자에게 뒷 이야길 들어보면 동아리!!!!!와는 결별했고, 인터넷으로 배운 탓에 Client쪽 서비스를 어떻게 만들어야하는지를 모른채 2년을 허비했단다. 연구 프로젝트를 인터넷으로 배우고, 학부 동아리!!!!! 와 업무 협조로 풀어낸다고??? 도대체 어떤 전공이 이런 수준으로 연구를 하나??)

대기업 2번은 인력 채용이 힘들다고 실리콘밸리까지가서 소형 스타트업 하나를 인수했다. 그 스타트업이 뭔가 데이터가 엄청나게 많은 것처럼 주장하고, 사업 모델이 빵빵한 것처럼 이야기했지만, 정작 제대로 된 데이터 사이언티스트 하나 없이 엔지니어들이 글 첫머리의 안드로이드 개발자 사례처럼 이것저것 주워붙이기 하던 상황이었고, 그나마 좀 똘똘했던 중국인 데이터 사이언티스트는 인수된 후 얼마 지나지 않아 다른 회사로 이직해버렸다고 하더라. 결국 데이터 사이언티스트 하나 없는 쭉쩡이 스타트업을 인수한 꼴이 됐다.

저 위의 2개 대기업은 모두 오너 레벨에서 데이터 인력을 키워야한다고 목소리를 높이고, 외부 인재를 열심히 영입하고 있는걸로 유명한 회사들이다. 그런데, 이렇게 말해서 정말 미안하지만 필자가 보기에 저정도면 잘하겠다 싶은 데이터 사이언티스트 뽑은 걸 아직 못 봤다.

 

나가며 – 개발? 연구!!

1년 반쯤 전에, 데이터 컨설팅 회사에 재직 중이라는 통계학과 졸업생을 만난적이 있다. 자기네 회사에 통계학 교수와 공학 교수가 Co-founder이기 때문에 믿고 왔는데, 정작 회사에는 공대 분들이 통계학적으로 틀린 작업들을 코드 복붙해서 하고 있고, 교수님들은 이해를 못하는건지 관심이 없는건지, 이름 값으로 프로젝트 따는데만 관심이 있는건지, 결과물은 그냥 그 상태로 고객사에 전달되고 있단다. 자기는 아무 말도 못하고 따라만 가고 있을 수 밖에 없는 사실이 너무 괴롭다며 불평을 했었다.

아마 필자를 찾아왔던 저 위의 회사들 중 상당수가 필자가 부른 “견적”에 깜놀!하고 그 통계학과 졸업생 분이 계신 데이터 컨설팅 회사 수준의 인력에게 외주 프로젝트를 맡기고 있을 것이다. 그리고 결과물이 마음에 안 들면 데이터 사이언스라는거 그거 별거 없는거라고 불평불만을 털어놓으시겠지.

직장 초년병 시절에 있었던 외국계 증권사의 IBD팀은 M&A건당 엄청난 금액의 수수료를 요구했었고, 당시 필자와 비슷한 인력 풀의 친구들이 들어갈려고 갈망했던 외국계 전략 컨설팅 회사들도 파트너 급들이 국내 대기업들에게 깜놀!!할 자문료를 요구했던 기억이 생생하다. 인턴도 한 두달 훈련만 시키면 했던 수준의 외국계 증권사 업무나 전략 컨설팅 업무도 아니고, 그들보다 훨씬 더 Academic challenge의 레벨이 높고, 단순한 “직장 경력”만으로는 명함도 못 내미는 연구 프로젝트들을 외주로 맡기려고 하면서, 심지어 자기들은 퀄리티의 차이도 잘 인지 못하면서, 왜들 저렇게 푼돈으로 해결하려고 하는걸까?

푼돈으로 외주 주려다가 피본 사례 중 IT업계 예시가 아닌, 실제 눈으로 보고 겪은 사례 하나만 여담으로 공유한다. 2008년, D모 외국계 증권사 IBD 막내 시절, 지방의 어느 백화점 업체가 매물로 나온 모 화장품 업체 인수전에 뛰어들겠다고 당시 재직 회사를 찾아왔었다. 시장에서 예상했던 딜 사이즈가 대략 3천~4천억 정도였는데, 그에 맞춰 우리 수임료를 불러주니 놀란 황소 눈이 되었던 그 회사 담당자의 눈이 아직도 선하다. 결국 무늬만 IB고 자금 지원 능력이나 딜리버리 능력이 전혀 없는 어느 국내 증권사를 선임해서 인수전에 뛰어들었던 게 기억난다. 당시 인수 후보가 많았던 탓에 1차, 2차 라운드로 인수 후보들을 걸렀는데, 첫 라운드에 떨어져 나가더라. (담당자들의 뒷 이야기를 들어보면 아예 서류조차 제대로 읽지 않았던 후보란다.) 당시에 윗 분들이 “우리랑 팀을 짜도 힘들었을텐데 겨우 국내 증권사 써서 되겠냐 쯧쯧”이라고 혀를 찼었다. 그로부터 3년도 지나지 않아 서울의 대형 백화점들이 지방 상권을 싹 장악하면서 그 지방 백화점은 몰락의 길을 걸었다. 당시에 회사의 생존을 위해서 사생결단을 내렸어야했던 타이밍인데, 겨우(?) 몇 십억의 수임료를 아끼려다가 지방 유지 3대가 평생을 바쳐 일궜던 사업체는 백발과 주름살에만 흔적이 남은 회사가 되어 버렸다.

한국의 Software Engineering 관련 비지니스 대부분이 건설업의 그것처럼 하청, 하청의 하청 같은 방식으로 운영되는걸 자주 듣는다. 근데, 위에 예시를 든 Data Science 프로젝트 대부분이 개발 인력 몇 명으로 해결되는게 아니라, 똑똑이들 잔뜩 모아놓은 스타트업들의 운명을 걸고 해야하는 수준의 대형 연구 과제급 사업모델이라는 걸 인지하고나도 여전히 개발 외주 주듯이 후려치기를 할까? 아예 몇 백억을 주고 Acqui-hire를 해도 핵심 인력인 Data Scientist가 이직해버리는 판국인데?

전관 예우를 받는 변호사를 고용하고, Track record가 엄청난 외국계 증권사를 고용할 때, 그 때 만나던 지적 능력과 희소성을 갖춘 인력들에게 외주를 줘야한다는 사실, 당신이 원하는걸 해 줄 수 있는 사람이 거의 없다는 사실을 좀 인지하고 외주 프로젝트 이야기를 꺼냈으면 좋겠다.

“몇 천만원 정도 쓰면 되나요?”라는 (모욕적인) 질문은 그만 받았으면 한다.

 


공지: 2019년 3월 29일을 끝으로 데이터 사이언스 주제의 포스팅은 종료됩니다. 이 후에는 파비의 스타트업 운영 관계된 포스팅만 월 1회 작성됩니다.

얼마전 의학 연구직으로 있는 학창 시절 친구를 만났다. 자기네가 데이터 작업을 하고 있는데, 여기에 머신러닝인지 인공지능인지라는걸 쓰면 뭔가 좀 더 획기적인 정보를 찾아낼 수 있냐고 묻더라.

논문을 한 번 읽고, 두 번 읽고, 세 번 읽고, 아무리 생각해봐도 별 대단할게 없는 사회학자들 데이터 리서치하는 수준의 정보들인데, 여기에 머신러닝을 어떻게 써보겠다는건지 잘 이해가 안 되더라. Pabii 수업 시간에 계속 주장하는대로, 데이터에 Non-linear 패턴이 없으면 머신러닝이라는 계산 작업은 아무런 의미가 없다. Linear 관계를 찾는 작업, 특히 데이터 샘플이 랜덤 오차를 갖고 있는 경우라면 단순한 OLS가 최적의 Estimation 방법이기 때문이다.

굳이 뭔가 더 작업을 해 보겠다면 Latent variable을 찾아내기 위해서 Factor Analysis를 해 볼 수는 있다. 근데, 그렇게 찾아낸 Factor들에 이름을 달아주지 않고 의학 저널에 논문을 Publish 할 수 있을까? 적어도 내 연구 필드에서는 (거의) 불가능한 부분이었기 때문에, 의학 저널들이 제대로 통계 스터디를 한 논문에게만 bar를 넘을 수 있도록 해 준다면 어렵지 않을까 싶다.

(Source: Powerful Medical)

 

그럼 좋은 논문이란 뭘까?

몇 달 전에 수업에 찾아오셨던 약학 전공자 분이 수업 끝에 Nature 논문 하나를 보여주시던데, 거기에 딱 위의 Factor Analysis 개념을 활용한 Neural Network 모델이 있었다. 참고로 이런 모델의 공식 명칭은 Auto-encoder다.

약학 쪽 지식을 하나도 안 갖고 있기 때문에 무슨 말인지는 몰랐지만, 어쨌건 입력 변수 n개는 매우 많았는데, 이걸 5개의 Key element들로 추려내려고 Auto encoder를 활용했고, 그래서 이전과는 다른 결과값을 찾아냈다는게 논문의 요지였다.

분명히 그들이 찾아낸 결과값이 충격적이었기 때문에 Nature라는 어마어마한 저널에 출판이 되었을 것이라고 생각한다. 여기서 Auto encoder의 역할은 통계학 수업 때 배우는 Factor Analysis를 좀 더 그래픽 모델 스럽게 구현한 것에 불과하다. (좀 더 수학적으로 정확하게 이야기하면, Latent variable을 찾아내는 계산을 Linear말고 Non-linear하게 했다는 뜻이다.) 말을 바꾸면, Auto encoder를 썼기 때문에 그 논문이 Nature에 나가는 대박 논문이 된게 아니라, (Non-linear) Factor Analysis 덕분에 남들이 그 동안 찾지 못했던 결과를 찾아낸 것이라고 봐야한다.

글 첫머리에 이야기한 그 의학 연구직에 있는 친구가 필자를 찾아온 것은 아마도 본말이 전도된 정보를 들었기 때문일 것이다. 의학 분야에서 도메인 지식이 하나도 없는 필자가 그 친구를 도와줄 수 있는 것은 모델 코드를 쳐 주고, 특정 모델이 왜 작동하지 않는지, 어떤 모델을 쓰는게 논리적으로 맞는 건지에 대한 통계학적 경험을 전달해 줄 수 밖에 없다.

아주 최근에는 비슷한 일을 의학 교수님 한 분과도 겪어 봤다. 특별히 대단할 것 없는 Non-linear regression을 돌린 모델이 들어간 논문인데, 그 분야에서는 뭔가 중요한 결론이었을지 모르지만, 통계 모델만 봤을 때는 “오~ 여기에 머신러닝의 Ensemble 모델을 쓰면 결과를 완전히 뒤 엎을 수 있습니다” 따위의 코멘트는 할 수 없는 논문이었다. 기대한 것과 다르다고 불편한 답장을 보내셨는데, 뭐라 할 말이 없더라. (Pabii 수업까지 한 달 들으신 분인데, 이분 수업 헛들었다는 생각이 들어서 메일 받고 좀 기분이 나빴다.)

아마도 거의 대부분의 연구들이 다루는 데이터가 Non-linear 패턴을 갖고 있는 데이터가 아닐 것이다. 빅데이터 정의하는 글을 이미 여러번 썼지만, 데이터가 랜덤 오차를 갖고 있으면 Linear 계산법이 맞고, 당연하겠지만 머신러닝 모델을 쓸 수 있는 여지는 확 줄어든다.

 

머신러닝 방법론을 쓴다는 (양산형) 논문들

설령 Non-linear 계산법들 (속칭 머신러닝 계산법)을 써서 약간 더 Fitting이 좋게 나왔다고 해도, 그 방법론에 절대적인 믿음을 가지지는 말았으면 하는게, 모든 데이터는 약간의 오차를 항상 갖고 있고, 그 오차 때문에 일부 Non-linear 모델들의 Fitting이 좀 더 좋게 나오는게 그렇게 놀라운 일은 아니다. 다만, 데이터 셋이 바뀔 때마다 Fitting이 더 잘 나왔던 모델이 지속적으로 높은 Fitting을 보여줄 확률은 매우 낮다. 약간의 오차를 더 잘 잡아내는데는 도움이 되었지만, 오차의 형태가 바뀌면 더 이상 Fitting을 높게 유지할 수 없기 때문이다.

가끔씩 받는 의학 분야 저널 논문을 보면, 거의 대부분이 Multivariate Linear regression vs. 머신러닝 계산법 10가지 비교를 통해, 머신러닝 계산법 중 어떤 특정 계산법이 제일 좋더라는 결론을 내고 있다. 이해가 되는 부분은, 그 분들이 다루는 데이터 중 일부는 구간별로 유의미함이 달라지는 경우 (ex. 5~10, 20~30 구간만 영향을 주고, 나머지는 효과 x)이거나 , 병이 걸린 환자들을 대상으로한 데이터이기 때문이다. 앞의 경우는 Tree 계열 모델들이 Euclidean space에서의 계산법보다 더 fitting이 잘 나오는게 당연하고, 뒤의 경우는 데이터 자체가 이미 Multi-pattern을 갖고 있다고 봐야한다. 머신러닝 계산법 10가지를 다 써보고 그 중에 어떤 방법이 제일 낫더라는 결과론적인 계산값들을 공유한 기초적인 논문들이 SCI 논문이라고 나오는걸 보면 내 입장에서는 황당할 수 밖에 없다.

정말 제대로 된 리서치라고 하려면, 데이터의 형태에 맞춰 Tree 계열 모델을 써야할지, Euclidean space 기반의 모델을 써야할지에 대한 적절한 판단을 내려서, Tree 계열 모델을 쓰기로 결론 내렸으면 어떤 계산법을 써야하고, 데이터는 어떻게 처리하는게 맞는지에 대한 고민을 해야하지 않을까? 머신러닝 모델 10개를 다 써 봤더니 뭐가 제일 좋더라….는 정말 심각하게 잘못된, 학부 수준도 안 되는 적용방법이다. 머신러닝 모델 10개를 우리 데이터 셋에 맞게 어떻게 고친 상태에서 돌려봤더니 어떤 모델이 제일 좋더라고 하면 백번 양보해서 타협할 수 있다. 그 전에 데이터 전처리가 더 우선이기는 하겠지만… 의학을 하나도 모르는 통계학자는 그 동네 상황을 잘 모르니 데이터 전처리를 함부로 할 수 없다. 의학 하시는 분들이 방법론을 공부하거나, 통계학 하시는 분들이 의학 공부를 하시는 수 밖에.

 

계산법을 갖다쓰지말고 데이터를 전처리하면?

공학이나 사회학으로 가도 상황이 비슷비슷하더라. 필자가 위의 구간별 유의미성이 다른 데이터를 다루고 있었으면, 어떤 형태로 튀어나올지 예측 불가능한 Non-parametric 모델 (ex. Tree 계열 모델들)을 쓸게 아니라, 데이터를 가공했을 것이다. 효과가 있는 투약 구간이 5~10, 20~30이면, 그 구간에 걸리는 대상들을 1, 나머지는 0으로 놓는 Dummy 변수를 하나 더 추가하면 기존의 Multivariate regression 모델로 충분히 좋은 결과를 낼 수 있다.

Multivariate Regression 계열의 모델들은 어떤 변수가 어느 정도의 효과를 갖는지를 눈으로 직접 보고 직관적으로 쉽게 확인할 수 있다는 장점이 있기 때문에 글로벌 IT회사들이 Classification을 할 때 괜히 복잡한 Kernel SVM이나 Tree기반 Random Forest, Gradient Boosting을 쓰는대신 Logistic regression을 쓴다. (사실 그런 Kernel function을 쓰는 작업도 데이터 전처리로 치환할 수 있으니까.) 위와 같이 데이터 전처리를 살짝만 하면 충분히 Logit을 쓸 수 있다는 사실을 인지하고 있고, Logit이 관리에 더 적합한 모델이라는 사실을 아는 사람들이 굳이 다른 모델들에 관심을 가질까?

머신러닝 방법론을 쓴다는 양산형 논문들이 가지는 가장 큰 문제가 바로, “잘 모르니까 덮어놓고 이것저것 다 써 봤더니 어떤게 제일 좋더라”는 저급한 이해도에서 출발했다는 점이다. 학위 과정 중에, 평소에 데이터로 공부하는 중에 한번이라도 데이터의 형태를 변형해서 원하는 모델과 매칭시키는 작업을 해 봤다면 저런 논문을 쓰게 될까?

저런 계산법만 갖다써서 Non-linear 계산법 중 어떤 방법이 더 좋다는 결론을 특정 데이터 셋에서 얻어내고 난 다음 스텝은 뭘까? 다른 데이터 셋에서는 그 계산법과 유사하지만 다른 계산법이 더 Fitting이 좋다는 결론이 얼마든지 나올 수 있는데?

비슷한 여러개의 샘플에서 지속적으로 특정 군의 계산법이 더 Fitting이 좋게나오면, 이 데이터는 어떤 특정한 구조를 갖고 있겠구나는 결론을 내리고, 그 구조를 찾아내서, 그동안은 못 찾았던 병리학적인 원인-결과 관계를 찾아내는게 더 적합한 “연구”가 아닐까? 위의 약학에서 Autoencoder 썼다는 논문에서 저자들의 의도가 정말로 그랬는지는 모르겠지만, 결과론적으로 봤을 때는 100개가 넘는 변수들은 결국 5개의 Factor들로 정리될 수 있다는 결론, 그게 특정 약의 적용 기제와 연결되어 있다는 걸 알려줬기 때문에 Nature라는 초특급 저널에 실릴 수 있었을 것이라고 생각한다.

이래서 머신러닝에서 쓰는 계산법을 소개하는 수업 대신 기본적인 통계학 훈련을 더 받아야한다고 주장하는 것이다.

 

나가며 – 머신러닝? 데이터 전처리와 모델링이 먼저다!

뱅킹 시절 인턴으로 썼던 학부 후배가 모 투자사에 있어 Pabii의 사업 모델을 이야기 한 적이 있다. 스마트폰에 앱을 깔고, 그 데이터들을 가공해서 광고주들이 원하는 사람에게 Target 광고를 뿌릴 수 있도록 해 준다는 단순 요약한 아이디어를 던졌더니, 왜 고생스럽게 스마트폰에 앱을 깔게 하느냐, 그냥 광고주들한테 데이터 받으면 되는거 아니냐는 반문을 받았었다. 그거 남들이 이미 다 하고 있다고, 근데 그런 데이터로 할 수 있는 작업이 한계가 있어서, 아예 개인 스마트폰에서 더 핵심적인 데이터를 받아와야 시장 구조를 바꿀 수 있다고 설명해줬는데, 왜 그런 데이터가 필요한지 도무지 이해를 못 하는 표정이어서 좀 안타까웠다.

위의 의학 연구직군 분들이 데이터 사이언스에 대한 과도한 기대를 갖고 있는 부분과 Pabii 사업모델에 학부 후배가 던진 반문의 공통점은 뭘까? 어떤 데이터가 있어야, 어떻게 전처리해야 데이터 사이언스 모델이 파워를 발휘할 수 있는지에 대한 이해가 좀 더 깊었다면 그런 대화를 굳이 하지 않았어도 되었을 것이다.

수업시간 마지막에 잠깐 이야기하지만, 결국은 계산법 싸움이 아니라 데이터 싸움, 모델링 테크닉 싸움이고, 데이터를 많이 갖고 있다의 싸움이 아니라, 필요한 데이터를 갖고 있느냐의 싸움, 그 데이터를 어떻게 가공해서 적절한 모델을 만들어 낼 수 있느냐의 싸움으로 귀결이 된다. (수학적으로는 Target vector space를 커버할 수 있는 Data를 갖고 있느냐, 필요에 따라 vector space를 Kernel transformation할 수 있느냐, 그 kernel처리된 vector space를 설명하는 방정식을 찾을 수 있느냐로 바꿔 쓸 수 있겠다.)

데이터 사이언스의 어떤 테크닉(계산법, ex. Deep Learning)을 이용하면 대박이 난다는 단순한 관점에서 벗어난 사람들이 좀 많아졌으면 좋겠다.

아마존(Amazon.com)이 인공지능 인력 채용 프로그램을 폐기했다는 신문 기사가 떴다. 짜놓은 알고리즘을 따라가면 여성 지원자들을 안 뽑는 방식으로 결론이 나온단다.

(Source: Reuters)

저 프로세스에 대한 기술적인 평가나 도덕적인 판단을 내리기 전에, 일반적인 서류 선별 (Resume screening) 작업을 한번 생각해보자.

대학 졸업반 시절에 B 모 전략컨설팅 회사에서 잠깐 인턴을 했던 적이 있다. 그만 둘 날짜가 며칠 안 남은 상황이었는데, 우리 팀 Associate (말단 컨설턴트)이 HR팀 데스크에 잠깐 가서 산더미처럼 쌓여있는 Resume들을 휙휙휙휙휙휙~~~ 손으로 넘겨보더라. 최소한 2, 300장은 쌓여있었던거 같은데, 그 분이 스캔하는 시간은 1분이 채 지나지 않았다. (한 장에 1분이 아니라, 300장 전체에 1분..) 5장 정도를 뽑더니, HR 팀 담당자한테 전화 인터뷰 스케줄 잡아달라고 부탁하는 모습을 봤었다.

뱅킹 일하던 시절에 너무 심하게 개인 소개로 추천 받은 분들 중에서만 인턴을 뽑는 것 같아서 모교 게시판에 한번 Job Posting을 한 적이 있었는데, 정말 하룻밤만에 100명이 넘는 지원 메일을 받았었다.

그런 경험을 미뤄볼 때, Amazon같은 회사가 Job Posting을 하나 올리면, 아무리 요구 스킬을 맞추기 어려워도 1주일 안에 최소 몇 백명이 지원서를 날릴 것이라는데 의구심의 여지가 없다.

저런 Resume들을 하나하나 꼼꼼하게 봐주는게 지원자에 대한 예의겠지만, 다른 한편으로 회사 입장에서도 HR 프로세스를 최대한 효율적으로 해야할 필요가 있다.

이런 상황에서 당신이 오너라면 어떤 결정을 내리겠나? 연봉 15만불을 주고 있는 Associate에게 일하는 시간을 쪼개서 면접 보라고 하는 것도 돈 아까운 판국에, Resume screening 하고 있으라고 하고 싶은가? 면접은 몰라도 Resume screening 만큼은 돈 or 시간을 아끼고 싶은게 당연지사라고 본다. (자본주의 사회니까)

 

자동화 알고리즘 Recruiter 1 – 영문 이력서의 특징

아마존의 AI Recruiter 프로그램은 그런 이유 때문에 만들어졌을 것이다. 지원자의 Resume에 있는 단어들을 scrapping해서 연봉 협상 단계까지 간 그룹(1)과 면접 중에 탈락했던 그룹(0) 데이터로 or 일 잘해서 내부 성과 평점을 높게 받은 직원 그룹 (1)과 아닌 그룹 (0)으로 정리한 데이터로 모델을 만들었을 것 같다. 단어 처리를 어떻게 했을지는 구체적으로 알 수 없지만, 아마도 중요 단어 or 문장이 resume에 적혀있는지 여부에 따라서 0~1 사이의 특정 점수를 각각의 Resume에 부여했을 것이다. 챗봇도 아니고, Resume에 들어가는 단어의 종류가 많지 않으니 Natural Language Process (NLP) 치고 꽤나 가벼운 모델이었을 것이라고 짐작된다.

참고로, 영어권의 Resume는 우리나라 이력서처럼 생기지 않았다. 어느 직장에서 어떤 Role을 했는지를 쓰는게 아니라, 어떤 Project를 하면서 뭘 배웠고, 무슨 기여를 했는지를 짧은 2-3개 Bullet point로 정리해놓은게 일상이다. 학교 어디나왔다는 이야기 쓸 때도 마찬가지다. 우리나라처럼 X대 Y학과 몇 년도 졸업을 쓰고 끝내는게 아니라, 무슨 specialty로 공부했고, 어떤 부분에 특화된 공부를 했는지, 재학 중에 무슨 Project를 했는지 등등을 쓴다. 모든 걸 다 떠나서 한국처럼 사진 넣은 이력서는 진짜 아무도 안 쓴다 ㅋㅋ (평생 한국말로 이력서를 써 본적이 없어서 pabii 사람 뽑는데 가끔 그런 이력서 받으면 놀란다.  헉~)

우리나라처럼 여학교 출신 인력이 상당수를 차지하는 나라도 아니고, 전공 선택을 하는데 이슬람 국가처럼 남자들이 하는 전공이 따로 있다고 강제하지도 않는다. 그런데도 불구하고 남/녀 차별이 있었다면 그건 순전히 단어와 문장 구성의 차이에서 비롯된 것이라고 봐야한다.

(Source: itakeactions.org)

 

자동화 알고리즘 Recruiter 2 – 상관관계 vs. 인과관계

자기 Resume에 쓴 단어로 불합격자 or 합격자 스타일이라는 결론을 내리는 것과 성별로 차별하는 것과의 연관관계는 무엇일까? 둘의 상관관계 (Correlation)는 굉장히 높았을지 모른다. 저런 언론 기사를 보면 꽤나 높았나보다. 근데, 상관관계와 별개로 내가 선택한 단어와 성별간의 인과관계 (Causation)는 없어야 한다. 남녀간 능력의 차이가 없다면 말이다.

우리나라 사람들이 유학갈 때 유학원의 도움을 받은 Essay를 보면 천편일률적이고 비슷한 단어들 판박이다. 그런데 영어권에서는 그런 Cookie-cutter essay (틀에 박힌 구조의 에세이)를 심한경우에는 표절(Plagiarism)로 생각한다. 그런 문화권에서는 자기 이력서는 당연히 자기가 작성하고, 자기만의 스타일이 녹아날 수 밖에 없다.

자기 스타일이 녹아들어가 있는 이력서가 Amazon 기준에서 합격자들 스타일이 아니라고 판단을 내리는건데, 여성이 대부분 배제되었다는 이유로 여성 차별로 몰고 갈 수 있을까?

내가 이력서에 선택한 단어와 문장 구조는 내 능력을 보여주는 지표 중 하나다. 내 성별을 보여주는 지표가 아니라.

결과적으로 여성 인력이 배제되었다는 이유로 모델링 과정에서 여성을 차별했다고 판단해서는 안 된다.

 

자동화 알고리즘 Recruiter 3 – 데이터 Feeding / Classification

국X일보 사설에서 “여성차별하는 AI”라고 지적하신 분은 Amazon이 남성 인력을 잔뜩 보유한 회사이기 때문에, IT업계에 남성 인력이 압도적으로 많기 때문에, 그런 데이터만 이용해서 모델을 만들면 당연히 저런 결론이 나온다고 하셨다.

저 가정에 대한 대답을 하기 전에, IT회사들 인력 상황을 간단하게 살펴보자. IT업 특성상 “개발자”라고 불리는 직군의 비중이 크다. 어느 회사를 가나 개발 직군에 있는 여성 인력을 만나기는 쉽지 않다. 근데, UI/UX 담당팀, 세일즈 팀 같은데를 가 보면 정반대다. 여성 인력이 상당하다. IT업계도 사업하는 회사기 때문에 여러 직군의 일이 다 있고, 아마존이 최소한의 합리성을 갖고 저 AI Recruiter라는 걸 만들었다면 당연히 직군별로 다른 값을 넣거나, 다른 모델을 썼을 것이다.

IT업계에 남성 인력이 압도적으로 많기 때문에 남성 위주의 알고리즘이 만들어졌을 것이라는 주장이 맞으려면 팀 구분없이, 개발자들만 왕창있는 회사들 기준으로 모델이 만들어졌어야한다. 위에 링크를 건 Reuter 기사에 따르면 Amazon 전체로 보더라도 여성인력이 최소한 30%는 된다.

성차별적인 데이터를 입력했던 것이 아니라, 성별에 관계없이 문자열만 넣은 데이터에서 나온 결론이 하필이면 성차별적인 결론과 인과관계도 아니고 상관관계만 높았던 것에 불과하다.

 

나가며 – 모델링에 대한 잘못된 이해

한국에서 자연어처리 (NLP) 과정을 제대로 이해 못 하는 사람들이 저런 “Resume screener”를 만들었다면 어땠을까? 예전에 어느 인사팀에서 비슷한 일을 하는 걸 봤었는데, 인력의 신상명세에 해당하는 정보들을 전부 Column으로 만들어놨더라. 예를 들면 성별, 전공 종류, 학점, 입사 후 평가, 직급, 직책 등등의 정보들 몇년 치를 입력해놨었다. 아마 그 DB 만들었던 팀이 엄청나게 고생했을 것이다.

그렇게 구성한 데이터로 (Logistic) Regression 기반의 모델을 만들었다면 어떻게 되었을까?

성별 정보가 들어갔기 때문에 분명히 남, 여에 따라 결과값이 다르게 나왔을 때 모델의 성 차별적인 부분에 대한 지적이 가능할 것이다.

그런데, 위의 Amazon 모델은 단순하게 Resume에 쓴 단어들로 자연어처리만 했다. 영문 Resume 어디에도 성별을 구체적으로 써 놓거나, 심지어 짐작할 수도 없는데, 어떻게 남녀 차별적인 AI라고 할 수 있을까? 위에 언급했던대로 상관관계 (Correlation)가 있다는 이유로 인과관계 (Causation)가 있다는 결론을 내릴 수는 없다.

이 블로그에서 줄곧 이야기한대로, 저런 Resume screener가 “인공지능”이라고 생각하지는 않지만, 최소한 “남녀 차별적인”이라는 설명은 좀 억울한 설명일 것 같아 보인다.

어쩌다가 언론에 흘러나오게 되었는지, 또 무슨 이유로 더 이상 안 쓴다는 식으로 언론 플레이를 하고 있는지는 모르겠지만, 최소한 누명은 좀 벗겨 주고 싶었다. 데이터로 모델링하는 사람 입장에서 모델링 방식에 따라 충분히 편견을 배제한 모델링을 할 수 있는데, 너무 결과값만 놓고 상관관계와 인과관계를 혼동하며 누명을 씌우지는 말았으면 한다.