비전문가를 위한 AI 기술 겉핥기 시리즈 2
앞선 글에서 AI 기술이 곧 Machine Learning 이라고 말했습니다. 엄밀히 말하면 머신러닝은 AI의 한 분야일 뿐이지만, 어쨌든 기술 업계에서는 AI = ML이라고 (거의) 통용되기 때문에 앞으로는 ML기술에 대해서 알아보겠습니다.
앞의 글에서 개 vs 고양이 이미지를 분류하고 싶다고 이야기 했고, 그래서 개와 고양이 사진을 여러개 가져다 놓고 각각 개인지 고양이인지 labeling을 한다고 말했죠? 이게 바로 Supervised Learning (지도학습) 입니다.
정답이 있는 (Labeling이 완료된) 데이터를 사용하기 때문에 Supervised 라고 하는 것입니다. 정답이 있는 데이터로 모델을 학습을 한 후, 해당 모델에 정답을 알고 싶은 데이터를 넣으면 예측값이 나오게 됩니다.
지도학습을 사용하는 대표적인 문제로 Classification 과 Regression이 있습니다.
Classification 의 예를 들면 앞서 말 한 것 처럼 Image내에 개, 고양이, 사람 등이 있는지 판별하는 문제를 들 수 있습니다. 특정한 class 에 속하는지를 판별합니다. 간단하죠?
Regression은 특정 값을 예측하는 문제입니다. 그림 경매를 예로 들어봅시다. Image A는 100만원, Image B는 20만원 등 기존의 다양한 그림 경매 데이터가 있다고 할 때, 이를 가져다가 학습을 하고, 새로운 그림이 들어왔을 때 가격이 얼마일지 예측하는 문제는 정확하진 않더라도 근접한 가격을 예측해야 합니다. 이런 경우는 Regression 이라고 부릅니다.
어떠한 문제를 해결할 때, Classification/Regression 문제인지가 명확히 나뉘는 경우도 있지만 실제 세상에서는 둘이 섞여 있는 경우도 많습니다. 예를들어 사진 내에서 어떤 객체가 어디에 있는지 찾으려면 어떤 객체인지를 아는 것은 Classification 문제라고 볼 수 있겠지만, 어떤 위치에 있는지를 찾는 것은 Regression 문제라고 볼 수 있습니다.
아무튼, 현재 일반적으로 많은 기업에서 사용되는 대부분의 AI 기술들이 지도학습 분야에 속한다고 보시면 됩니다. 이걸 하려면 정답이 있는 양질의 데이터가 많이 필요하기 때문에 요즘 데이터 라벨링 비즈니스만 전문으로 하는 회사가 많이 생겨난 것입니다.
앞으로 다룰 내용들 중 대부분의 머신러닝 기술들이 이 지도학습 문제와 관련된 것을 풀기 위한 것입니다.
Supervised Learning 이 있으면 당연히 Unsupervised Learning (비지도 학습) 이 있겠죠? 비지도 학습은 정답 데이터 없이 그냥 데이터를 몽땅 가져다가 정제한 후 학습해서 결과를 냅니다. 딱 봐도 좋아보이죠? 물론, 정답이 없는 데이터에서 뭔가 정보를 얻어내야 하는 것이기 때문에 그만큼 어렵고 제한적입니다.
비지도 학습의 대표적인 문제로는 Clustering (군집화) 가 있습니다. 말 그대로 클러스터를 만들어 주는 것입니다. 어떤 데이터셋에 데이터1, 데이터2, 데이터3, ... 등 많은 데이터들이 있다고 할 때 어떠한 데이터는 다른 데이터와 비슷한 특성을 가질 것입니다. 이건 정답 없이도 충분히 가능하기 때문에 클러스터링이 비지도 학습에 적합한 문제입니다. 클러스터링에 관해서도 나중에 좀 더 자세히 다뤄보도록 하겠습니다.
근데 딥러닝이 인기를 끌게 되면서 딥러닝 모델을 비지도 학습 형태로 다양하게 사용하여 굉장히 인상적인 결과를 보여주는 연구들이 많이 나오면서 이 분야에서 클러스터링 이외에도 굉장히 활발하게 연구되고 있습니다. 물론, 그만큼 어려운 점이 많기 때문에 아직까지는 보조적인 역할로 사용되는 경우가 많습니다만, 앞으로 이쪽과 관련하여 더욱 더 많은 연구가 쏟아져 나올 것입니다.
위의 두가지 예시로 든 것 외에 2015년 알파고의 핵심이었던 Reinforcement Learning (강화학습) 분야도 굉장히 활발히 연구되는 분야입니다. 예전에는 주로 제어공학, 로봇공학 쪽에서 많이 사용되던 분야인데요, 딥러닝 이후로는 머신러닝 쪽에서 필수로 다뤄야 할 기술이 되어 버린 거 같네요. 강화학습에서는 특정 reward 를 정하고, 이를 높이는 방향으로 자체적으로 학습을 하게 됩니다. 여기서 말하는 reward는 score 같은 것이라고 생각하면 됩니다. (예를 들어, 게임쪽에 강화학습을 적용한다면 score를 높이는 방향으로 학습하게 됨) 정답 데이터를 꼭 만들 필요가 없다는 특성 상 비지도 학습과 닮았습니다.
또한 Semi-supervised learning 이라고 불리는 경우도 있는데요, 소량의 정답이 있는 데이터로 학습을 한 후 (지도학습), 해당 모델로 정답이 없는 데이터에 대한 예측치를 얻고 (지도학습을 사용), 예측치를 정답으로 간주하여 다시 모델을 학습하고, 해당 모델로 다시 예측치를 얻는 과정을 반복하는 방식으로 이뤄집니다. 물론 이건 하나의 예시이고, 데이터의 특성이나 풀려는 문제에 따라 이런 방식은 다를 수도 있습니다.
앞서 몇가지 머신러닝 기술 분류를 설명드렸지만, 실제 세상에서 맞닥뜨리는 문제는 그리 간단하지 않습니다. 따라서 데이터를 열심히 분석해 본 후 (이 과정을 EDA 라고 부릅니다. Exploratory Data Analysis 라는 의미입니다) 다양한 기술이나 전략을 섞어서 사용하게 되고 더 좋은 걸 만들기 위해서 이런 과정을 계속 반복하게 됩니다.
머신러닝 분야가 매력적인 점은 기초는 수학이나 통계학 기반의 학문이지만, 많은 부분들이 순수 과학/수학처럼 공식으로 증명된 게 아니라 실험적/경험적인 내용이라서 데이터나 목표하는 서비스에 따라서 굉장히 다양한 설계와 전략이 가능하다는 것입니다.
또한, AI는 앞으로 발견하고 연구해야 될 부분들이 어마어마하게 많기 때문에 아주 빠르게 바뀌어가고 있으며 성장하고 있는 분야라는 점도 굉장히 매력적입니다.
앞으로 차근 차근 기초적인 머신러닝 기술들 부터 알아보고, 시간이 될 때마다 최신 연구들이나 기술 동향 등에 관해서도 글을 써보도록 하겠습니다.
추가로 궁금하신 AI 분야에 관해서 메일로 보내주시면 답변 드리거나 글을 써보겠습니다.