다소 도발적인 제목이긴 하지만, 나름 4년여의 머신러닝 엔지니어 경험을 쌓으면서 점점 깊어지는 확신입니다. 캐글이나 데이콘과 같이 머신 러닝 경진대회에서는 데이터들이 이미 확보되어 있고, 대부분의 경우에는 어느 정도 정제된 데이터들이기 때문에, 알고리즘의 성능으로 우위를 겨루는 것이 당연하며, 알고리즘에 집중하는 것이 현명한 선택일 것입니다. 그러나, 경진대회와 같은 특수한 경우를 제외하고는 점점 더 데이터가 중요해지는 시대로 접어들었습니다.
얼마전 개최된 GTC 2022에서 앤드류 응은 이전부터 계속 주장해온 바와 같이 알고리즘보다는 데이터가 더 중요한 시대로 접어 들었다고 천명했고, 저 역시도 이 생각에 깊이 동감합니다.
이번 캠페인 시작을 알리면서 포브스와 가진 인터뷰에서도 응 교수는 “훌륭한 AI 모델의 기반은 데이터 뿐”임을 강조했다. 그는 2000년대 후반 AI 시장이 급부상하면서 “현재 다양한 애플리케이션 모델과 이를 위한 코딩은 어느 정도 궤도에 오른 상태”라고 평가했다. “올바른 품질의 데이터를 중심으로 AI가 발전하는 모습”이라고 덧붙였다.
출처 : AI타임스(http://www.aitimes.com)
Tensor Flow와 PyTorch를 필두로한 딥러닝 기반의 오픈소스 프레임워크의 대중화와 더불어, 수 많은 State-of-the-art 알고리즘들은 arXiv에 수시로 풀리고 있고, PapersWithCode에서는 최고 성능을 달성한 각 분야의 알고리즘에 대한 논문과 더불어 친절하게 코드를 오픈소스로 제공하고 있습니다. 또한 Github에서도 특정 알고리즘을 검색하면 수많은 Star를 받고, 활발한 커뮤니티를 지닌 다양한 알고리즘들을 찾을 수 있습니다.
이 들은 자신들이 어떤 태스크에서 어느 정도의 성능을 보여주는지, 어떻게 사용할 수 있고 어떤 분야에서 활용할 수 있는지 친절하게 문서도 제공하고 있으며, 원한다면 당장이라도 다운받아 몇 십분 내에 이를 실행해볼 수도 있습니다. 일부를 제외하면 상업적 이용도 가능한 라이선스도 제공하고 있습니다.
저도 자연어처리 태스크를 진행하면서 허깅페이스를 통해서 다양한 Pretrained 언어 모델을 다운받아 현업에 적용한 경험이 여러 차례 있습니다. 즉, Andrew Ng께서 얘기한 바와 같이 오픈 소스 커뮤니티에 의해서 개발되고 안정적으로 유지되는 다양한 알고리즘을 바탕으로 비교적 빠르게 적용이 가능한 시대로 접어들게 되었습니다.
단, 도메인의 데이터가 있다면 말이지요!
Tensor Flow를 오픈소스로 제공하는 구글이나 PyTorch를 개발하는 메타나 자신들의 프레임워크 위에서 동작하는 알고리즘도 역시 오픈하여 제공하고 있습니다. 그러나 절대로 공개하지 않는 것이 있다면 바로 자신들의 데이터입니다. 어떻게 업게 최고의 성능을 달성했는지, 논문을 통해서 제공하고 있지만, 자신들이 상업적으로 제공하는 제품의 데이터는 절대 공개하지 않습니다. 바로 자신들의 경쟁력 그자체이기 때문일 것입니다.
기업의 경쟁력이나 제품의 경쟁력을 유지하고 경쟁자와의 차이를 만드는 지점은 바로 정성들여 모으고 정제해 놓은 데이터가 있는 저장소이며, 이 데이터 저장소가 바로 해자 노릇을 하는 것이라고 생각합니다. 길지 않지만, 머신러닝 엔지니어로 경력을 만들어 가면서도 절실히 느끼는 지점이 바로 이것입니다.
"알고리즘은 시장에서 구할 수 있지만, 데이터는 시장에 없다"
물론 캐글이나 데이콘과 같은 경진대회에도 데이터가 있으며, AIHUB와 같이 공공데이터를 구할수 있다고 말하는 분도 있을 것입니다. 그러나, 이 공공데이터들은 우리가 적용하고자 하는 도메인을 대표하는 데이터가 아닐 가능성이 높습니다. 이는 이 데이터를 활용하여 모델을 학습시키고 배포하더라도 해당 도메인에서 우리가 원하는 성능으로부터는 멀리 있을 가능성이 높음을 의미할 겁니다. 결국, 공공데이터를 활용하더라도 배포 가능한 정도의 성능을 지닌 모델을 확보하기 위해서는 자신만의 데이터가 있어야 합니다. 따라서, 데이터의 확보 여부가 기업의 머신러닝 인공지능 활용 경쟁력을 결정한다 말하더라도 큰 무리가 없을 것입니다.
즉, 데이터가 곧 타기업이 넘볼 수 없는 해자를 만듭니다.
그렇다면, 데이터만 있다면 기업의 AI 경쟁력을 확보될 것인가하는 의문도 있습니다. 앞에서 언급하지 않았지만, 현업을 겪어본 사람이라면 알고 있을 것입니다. 그렇지 않다는 것을요.
현재의 대부분의 머신러닝 알고리즘은 지도 학습 방식으로 학습합니다. 지도 학습 방식은 "사람이 작성하고 검토한 레이블/어노테이션"을 필요로 합니다. 아무 데이터나 학습에 사용할 수는 없습니다. 예를 들어, 자연어 처리에서 개체며 인식 작업을 위해서는 BIO 태깅된 시퀀스 레이블링 데이터가 필요하고, 기계 번역을 위해서는 번역쌍, 챗봇을 위해서는 기본적으로 인텐트 레이블 데이터가 필요합니다. 객체 검출에서도 객체명을 비롯하여 객체의 위치를 지정한 박스정보가 필요합니다.
DB의 데이터를 직접 활용하여 학습을 하더라도 정제 작업과 노이즈제거 작업이 필수이며, 어떤 경우에는 어노테이션이나 별도의 레이블이 필요하기도 합니다. 현재 제가 재직중인 기업에서 예측 태스크를 수행하는 경우에도 데이터 정제문제로 어려움을 겪었습니다.
여러개의 테이블을 결합하여 사용려고 하였지만, 여러 피처들에 다양한 노이즈들이 존재하고 있었습니다. DB가 인식하는 NULL이 아닌 TEXT로 새겨넣은 'NULL'값도 있고, 오랜전에 사용되다 버려진 피처, 사용처가 바뀐 피처, 오해하게끔 설계된 카테고리값, 철자가 틀린 값, 간헐적으로 값이 없는 데이터 등 다양한 노이즈가 곳곳에 숨어 있었으며, 이들을 발견하고 개별적으로 수정하거나 정제 루틴에 워크어라운드 코드를 추가하는 등의 작업을 통해서야 비로소 모델을 학습하고 평가할 수 있는 데이터로 활용이 가능하게 되었습니다.
데이터가 많다고 능사가 아니며, 정제되어 있고 학습이 가능한 형태로, 데이터에 대한 이해가 갖추어져야 비로소 AI 경쟁에 뛰어들 수 있는 데이터를 갖추게 되는 셈입니다.
그렇다면 어떻게 데이터를 확보해야할까요? 기업이 아주 돈이 많아 인력과 시간을 무한정 사용할 수 있다면 어노테이션 작업자를 많이 구하면 간단히 해결될 수 있을 것입니다. 그러나, 대부분의 기업에게는 이는 언감생심입니다. 어노테이션 작업은 아주 지난하고 힘든 작업이기도 하거니와 이른바 데이터의 노가다와 같은 작업으로 이를 전문적으로 하는 인력은 소수이기 때문에 쉽지 않은 작업입니다. 그렇다고 현업의 도메인 전문가를 장시간 데리고 어노테이션에 활용하는 것도 무척 실현하기 어려운 일일 것입니다.
Active Learning은 그런면에서 괜찮은 해결책이 될 것입니다.
출처: https://livebook.manning.com/book/human-in-the-loop-machine-learning/chapter-1/v-11/
위 그림으로 Active Learning을 간략히 설명하자면, 모든 데이터에 대해 처음부터 모든 데이터를 레이블링하는 것이 아니라 일부(예를 들어 1/10)를 어노테이션하고, 이 데이터로 모델을 학습한 후, 이 모델로 레이블을 예측합니다. 이 모델이 예측한 레이블을 바탕으로 여러 가지 샘플링 기법으로 샘플에 대해 사람이 레이블을 직접 검토하고 레이블링합니다. 또 이 데이터는 학습데이터에 추가되어 모델 성능을 향상시키는데 사용됩니다. 이 프로세스를 반복 점진적으로 적용함으로써 양질의 데이터를 효율적으로 확보하면서 모델의 성능도 꾸준히 개선해 나가는 전략이 바로 Active Learning입니다. 한마디로 효율적 노가다(?)로 이해하면 됩니다.
데이터 중심 AI 전략에는 이 Active Learning이 반드시 필요합니다. 그럼으로써 우리는 즉시 모델을 학습시킬 수 있는 양질의 데이터를 꾸준히 확보할 수 있으며, 이와 더불어 양질의 데이터 확보에 따른 모델의 성능 향상을 자연스럽게 기대할 수 있게 됩니다. 이에 덧붙여, 주기적으로 데이터를 모니터링하는 검토 프로세스가 워크플로우안에 포함되어 있기 때문에, 데이터 분포의 변화(i.g 데이터 드리프트)도 모니터링이 가능하며, 이에 따라 시기 적절한 모델의 재배포 등이 가능해집니다.
안녕하세요! 올리신 글 잘 읽고 있습니다. 블로그에 올리신 코드를 이용하는 것에 대하여 문의를 드리고 싶은 점이 있습니다. 혹시 따로 연락을 드릴 방법이 있을까요?