과학자와 마케터 모두를 위한 Tech Talk
한때 모든 산업군에서 빅데이터를 외치던 시절이 있었다. 사실, 빅데이터의 가치나 의미를 정확하게 이해하지 못한 채, 하나의 시대적 주류에 올라타야만 할 것 같은 조바심에 빅데이터라는 키워드를 경영 계획에 포함시킨 기업도 적지는 않았던 것으로 알고 있다. 2020년대 들어서는 유사하게 'AI'가 포함되지 않은 기업을 보기 힘들 만큼 AI가 대세가 된 것 같다. 특히 ChatGPT가 세상에 공개되면서, 이러한 트랜드는 더욱 굳건하게 자리잡은 것으로 보인다. 나 또한 ChatGPT가 세상에 나오기 전까지 AI에 대한 무모한 기대에 대해 강한 우려를 가지고 있었다. 하지만 기대 이상의 발전과 성능으로 세상을 놀라게 한 ChatGPT로 인해, 실제 실생활에 기여할 AI의 시대가 훨씬 앞당겨진 것만은 확실한 듯하다. 내가 리딩하는 기업의 서비스에서도 이미 ChatGPT를 포함한 LLM 기술을 서비스에 적용하여 잘 활용하고 있다.
하지만 예나 지금이나 변함없이, AI를 개발하는 엔지니어나 과학자가 잊지 말아야 할 중요한 요소가 있다. 바로 데이터이다. AI 역시 출발은 데이터로부터 출발한다. 충분한 양의 올바른 데이터를 학습한 AI는 기대한 역할을 수행할 것이나 그렇지 못한 AI는 전혀 세상에 기여하지 못할 뿐 아니라 오히려 혼란만 가져올 수 있다. 하지만 AI를 가르치는 대학 과정에서는 대부분 대표적으로 잘 알려진 AI문제에 대해, 이미 잘 준비된 데이터를 이용해, 단순히 모델을 선정하고 학습하고 튜닝하여 AI를 개발한다. 실제 기업에서 AI를 개발한다 함은 어떻게 다를까.
일반적으로 AI라고 하면, 체스나 바둑과 같이 사람이 복잡한 생각과 판단을 요구하는 일련의 과정을 컴퓨터가 대신하는 케이스를 떠올린다. 실제로 얼굴인식, 반도체 공정에서의 이상 패턴 인식, 자동차 번호 인식 등 이미지 검색 분야에서는 일찌감치 AI 기술이 실제 산업에 적용되어 기여하고 있다. 나 역시, 90년대에 AI가 한때 유행이던 시절에 Neural Network을 전공하고 문자인식에 관한 논문으로 졸업을 한 후, 한동안 기업에서 모바일 얼굴 인식 등을 연구했다. 최근에는 이러한 영상 분야에서의 AI 기술을 이용해 자율 주행 기술이 활발하게 연구되고 있는 것은 누구나 다 아는 사실일 것이다.
이와 같이 대표적으로 거론되어 온 AI 영역 이외에, 최근에는 디지털 광고, 마케팅, 데이터 기반 비즈니스 혁신과 예측 등, 고른 영역에서 AI나 머신러닝 기술을 적용하기 위한 시도가 활발하다. 그런데, 이처럼 우리 가까이에 있는 기존 산업에 적용할 AI 기술은, 앞서 사람의 두뇌를 흉내 내는 음성인식, 영상 인식, 바둑과 같은 AI 기술 개발과는 그 환경과 접근 방법이 다르다.
먼저, 이미지/음성 인식, 바둑, 체스와 같은 대표적인 AI 응용 분야와, 실제 산업에서 AI를 이용해 해결하고자 하는 문제들의 특성이 다르다. 이미지 인식이나 바둑, 체스에서 풀고자하는 문제는 명확한 단 하나의 목표, 즉 정답에 대한 명확한 정의가 존재한다. 정답이 명확하게 존재한다는 것은 AI분야에서 매우 중요한 의미를 같는다. 왜냐하면 대부분의 AI는 여러 상황을 수치화한 Input 데이터와 정답에 해당하는 Output 데이터를 학습하여 만들어지기 때문이다. 예를 들어 문자 인식 AI를 개발한다면, 여러 문자 이미지와, 각 이미지가 실제로 의미하는 정답에 해당하는 문자의 Set으로 학습이 이루어진다. 하지만 실제 산업에서는 풀고자 하는 문제의 경우, 정답 자체가 명확하지 않은 경우가 많다.
예를 들어 매출을 늘리는 게 궁극적인 목표라고 한다면, 매출을 늘리기 위해 이탈 가능성 높은 고객을 예측해야할 수도 있고, VIP로 성장할 고객을 예측해야할 수도 있고, 부가매출의 연관 패턴을 찾아야 할 수도 있는 등 다양한 문제 접근 방법과 그에 따른 정답이 존재할 수 있다. 따라서 AI를 적용하기 전에, 먼저 AI를 통해 구체적으로 풀고자하는 세부적인 문제와 이상적인 해결의 모습이 무엇인지를 정의하는 것부터 잘 설계해야 한다. 그런데 이러한 설계는, AI 모델에 대한 이해도 있으면서 동시에 어느정도 비즈니스 도메인을 이해해야만 실질적으로 산업에 기여할 수 있는 수준으로 완성할 수 있다.
문제를 잘 정의하더라도, 여기서부터 더 큰 문제를 만나게 된다. 이미지나 바둑, 체스와 같은 문제를 AI로 학습하기 위한 데이터는 데이터 유형이 단순할 뿐 아니라 얼마든지 수집 또는 직접 생성할 수 있다. 하지만 실제 산업군에서 마주하는 문제들을 해결하는데 필요한 데이터들은 충분히 수집하기 힘들 뿐 아니라, 데이터 형식 또한 정형화되지 않고 복잡하고 다양한 형태로 존재할 가능성이 높다. 그나마 확보한 데이터는 다양한 채널로부터 다양한 속성을 가진 데이터들이 여러 형태로 표현되어 존재하기에, 바로 AI 모델을 통해 학습시킬 수 없다.
즉, 서로 다른 데이터 속성들의 수를 의미하는 데이터 차원(dimension)은 매우 큰데 반해, 데이터의 양은 적은 상황에 마주하게 될 가능성이 높다. (일반적으로 데이터 차원이 클 수록, 문제의 복잡도가 커지므로, 필요로하는 데이터의 양은 더욱 증가하는 경향이 있다). 그리고 대부분의 AI 모델은 숫자로 표현된 데이터를 학습에 사용하는데, 실제 존재하는 데이터는 텍스트나 음성, 심지어는 어떤 의미인지 유추하기도 어려운 코드 등과 같이 다양한 형태로 존재하기 때문에, 먼저 이들 데이터를 학습에 적합하도록 변환 처리하는 작업이 필요하다.
이와 같이 일반적인 산업 환경에서 AI나 머신러닝 기술을 적용하기 위해 필요한 작업의 대부분은, 텍스트, 기호 등, 다양하게 표현된 데이터를 AI가 학습할 수 있도록 numeric data로 변환 가공하는 작업과, AI가 학습을 용이하게 할 수 있도록, 학습에 필요한 유의미한 속성들로만 재구성하여 데이터 차원을 줄이도록 변환 처리하는 작업들과 같은, Feature Engineering 작업이 70~80%를 차지한다.
Feature Engineering 작업이 많은 리소스와 시간을 요구하는 난이도 높은 작업인 이유는, 최종적으로 표현된 숫자가 해당 속성의 특성을 잘 구분할 수 있도록 변환되어야 하기에 많은 고민과 실험이 요구되기 때문이다. 예를 들어 ‘나이’라는 속성을 숫자로 표현하는 간단한 작업 조차도, 있는 그대로의 나이 숫자를 표현할 지, 혹은 10대, 20대 등 나이 구간을 나눈 후 각 구간을 1~m 사이의 숫자로 표현할 지, 혹은 0~100살 구간을 10구간으로 나누었다면 10자리로 구성된 이진수로 표현하기 위해, 해당하는 구간만 1로 표현하고 나머지는 0으로 표현할 지 등 다양하게 표현할 수 있다. 만일 15세와 53세의 나이를 numeric data로 표현한다면, ‘15’와 ‘53’으로 표현할 수도 있고, 두번째와 여섯번째 10살 단위 구간을 의미하는 ‘2’와 ‘6’으로 표현할 수도 있으며, 혹은 ‘0100000000’과 ‘0000010000’으로 표현할 수도 있는 것이다. 이러한 표현 방법에 따라 AI가 학습 후 나타낼 성능에 큰 차이가 발생한다.
또한 비슷한 성격의 데이터 속성들이 중복해서 존재할 경우, AI의 학습을 어렵게 만들수 있기에, 서로 orthogonal (데이터 성격이 서로 중첩되지 않음을 의미하는 용어)한 특성의 속성들로만 학습 데이터의 차원을 구성하도록 변환 가공하는 것이 좋다. 예를 들어 금융권에서 계정 보유 여부 속성과, 예금 보유 여부 속성, 청약 보유 여부 속성 중, 계정 보유 여부는 예금이나 청약을 보유하고 있다면 당연히 보유한 것을 의미하므로 불필요한 중복 속성이 될 수 있다. 그 외에 유사한 성격의 속성 그룹 내 차원수가 다른 유사 성격의 속성 그룹 내 차원수보다 월등히 클 경우, 한 쪽으로 Bias 되어 학습될 가능성도 있기에, 이러한 차원수의 조정도 검토해야 한다.
워낙 AI 기술이 발달하다보니, 간혹 최근 AI 기술 수준이라면, 있는 그대로의 데이터를 학습시키더라도 알아서 이런 위험 요소까지 자동으로 찾아주고 보정해줄 수 있을 거라 기대하시는 분이 계실 수도 있다. 하지만 그것은 데이터의 양이 매우 많았을 때 기대할 수 있는 사항이고, 실제 대부분의 비즈니스 환경에서 확보할 수 있는 데이터는 매우 제한적일 가능성이 높기 때문에 이러한 Feature Engineering에 집중할 수 밖에 없다. 이러한 배경으로 인해, 기업에서 확보한 데이터가 충분하지 않을 경우, 어느 정도 규모 이상의 데이터를 요구하는 딥러닝과 같은 AI모델보다 통계 기반 모델이 더 많이 활용되기도 한다.
요즘에는 워낙 잘 개발된 ML/AI 관련 라이브러리들이 존재하기 때문에, 실제 응용에 있어서는 AI 모델 자체에 대한 개발보다는 Feature Engineering에 더 많은 투자와 시간이 소요되는 경우가 많다. 이러한 Feature Engineering에서 요구되는 기술은 기본적으로 데이터를 능수능란하게 다루어야하는 데이터 엔지니어링 영역이자, 데이터 사이언스에 대한 기본기를 함께 요구하는 영역이다. 여기에, 해당 산업에 대한 도메인 이해가 함께 수반되어야 실제로 기여할 수 있는 AI 모델의 개발이 수월해진다.
지금까지 다양한 산업에서 필요로하는 AI기술을 적용하기 위해 필요한 배경 기술들과 작업들에 대해 살펴보았는데, 어떤 측면에서는 AI 전문가가라기 보다는 데이터 사이언티스트의 전문 기술 부분이 더 중요해 보이기까지 한다. 실제로도 AI 과제에 투입되는 리소스 비율을 살펴보면 데이터 관련 리소스 비중이 순수 AI 리소스보다 많은 경우가 일반적이며, 대부분 경력이 풍부한 숙련된 AI 전문가는 동시에 데이터 엔지니어이자 데이터 사이언티스트일 가능성이 높다. 이와 같이 다양한 산업군에서 수집되는, 다양한 종류의 데이터를 AI에 접목하여 실질적인 효과를 얻기 위해서는, 이론보다는 각 산업군에서의 실질적인 AI 적용 경험과 함께, 데이터 사이언스/엔지니어링 기술이 함께 요구된다. 사실 AI와 Data Science 두 영역 모두 기본적으로 데이터를 다루기 때문에 어찌보면 당연한 내용이다. 기업이 디지털 전환을 거쳐 AI 전환을 성공적으로 진행하기 위해서는, 우선 신뢰할 수 있는 데이터의 확보와 역량에서 출발해야 함을 잊지 말아야 할 것이다.