비전문가를 위한 AI 기술 겉핥기 시리즈 1
AI의 역사는 꽤 오래되었습니다. 컴퓨터가 나온지 얼마 안된 1950년대부터 연구가 시작되었습니다. 물론, 그 때 AI 기술이라고 불리는 것들과 현재의 기술들은 많이 다릅니다만, 요즘 핫한 딥러닝의 핵심은 Neural Network 의 기본 뼈대 또한 이미 1960년대 Perceptron 이라는 기술에서 부터 시작합니다.
이런 내용은 앞으로 천천히 알아보기로 하고, 요즘 말하는 AI 기술이 무엇인지, 그리고 어떤 방식으로 활용되고 있는지에 관해서 알아보도록 합시다.
AI의 사전적 의미는 다들 아시다시피 말 그대로 인공지능 입니다. 컴퓨터가 사람이나 동물의 지능을 가진 것 처럼 행동할 수 있다면 그것을 AI라고 부릅니다. 근데 여기서의 AI는 정말 많이 광범위하기 때문에, 괜찮은 서비스만 제공한다면 별 다른 기술 없이도 AI 회사다! 라고 말 하는게 틀린 말은 아닙니다.
다만, 요즘 IT업계에서는 AI 기술이 곧 머신러닝/딥러닝을 의미하기 때문에, AI 기술을 이해하고 싶다면 머신러닝/딥러닝에 관해서 알아보면 됩니다.
아래 그림에서 AI, Machine Learning, Deep Learning의 관계를 잘 보여주고 있습니다.
AI라는 전체 분야에서 머신러닝은 특정 분야 이지만, 현재의 기술 트렌드는 AI = Machine Learning 이라고 봐도 큰 무리가 없습니다.
딥러닝은 머신러닝의 한 분야입니다. 딥러닝은 비교적 다양한 모듈로 구성된 Neural Network (인공신경망)기반의 모델을 의미합니다. 원래 딥러닝이라는 용어는 따로 없었습니다. Neural Network 은 아주 오래된 기술이지만, 딥러닝이라는 용어는 대략 2011~2012년도 쯤 부터 나온 것으로 기억합니다.
요즘에는 딥러닝을 공부한다면 필수로 배우는 CNN, RNN 등과 같은 개념들 또한 (앞으로 이런 것들에 관해서도 천천히 다루겠습니다) 굉장히 오래 된 개념들인데 예전에는 딥러닝이라고 부르지는 않고 그냥 Neural Network 이라고만 말했습니다.
그러던 것이 2012년 전후로 엄청나게 뛰어난 성능을 보여주는 Neural Network 에 Deep Learning이라는 용어를 붙이게 됩니다. (Neural Network 은 layer를 쌓는 구조인데, 다양한 layer를 여러 개 깊게 쌓았다~ 해서 Deep learning이라고 불렀습니다) 뛰어난 성능에 연구자들이 열광을 했고 딥러닝이 점점 많은 인기를 끌게 되었습니다. 그리고 수 많은 것들에 Neural Network 을 적용하고 실험적으로 좋은 성능을 내는 것이 알려져서 딥러닝이 굉장히 핫한 키워드가 되었습니다.
국내에서는 머신 러닝 관련 일을 하거나, 연구하던 사람들만 알던 용어였는데 알파고 쇼크 이후로 일반인들에게까지 알려지게 되었습니다. SW 용어 중에 이렇게 일반인들도 다 알고 있는 용어는 드문 것 같네요ㅎㅎ
아무튼 정리하면 딥러닝은 단지 머신러닝의 한 부분이라고 보시면 됩니다. 최근에 대학교나 대학원을 졸업하는 주니어 레벨 엔지니어들을 보면 AI 기술은 딥러닝만 있는 줄 알거나, 모든 것에 딥러닝 적용하면 장땡이다! 라고 잘못 생각하는 경우가 종종 있는데 머신러닝의 세계는 굉장히 방대하고 수 많은 기술들이 많습니다. 그리고 딥러닝이 핫한것은 맞지만, 실제로 많은 회사들은 딥러닝 외의 머신러닝 알고리즘들도 굉장히 많이 쓰고 있습니다. 그게 효과적인 경우도 많구요.
그렇기 때문에, 현대의 AI 기술에 관해 이해하려면 딥러닝만 살펴봐선 안되고 기본적인 머신러닝 기술들에 대해서 살펴볼 필요가 있습니다. 요즘에는 몇몇 머신러닝 알고리즘과 딥러닝을 제외하고는 Classical ML 이라고도 부르는데, 클래식 알고리즘이라고 하기에는 아주 간결하며 뛰어난 알고리즘들이 많아서 그냥 구분하지 않고 앞으로 의식의 흐름대로 한번 소개해 보도록 하겠습니다.
기존에 있던 프로그래밍과 머신러닝의 차이점부터 살펴보도록 하죠.
사실 이런건 구글링 해보면 수도 없이 많이 나오겠지만 그래도 한번 예를 들어보겠습니다.
개나 고양이가 있는 사진을 보고, 이게 개인지 고양이인지를 알아맞추는 프로그램을 작성한다고 해 봅시다. 일반적인 프로그램을 만드는 방식으로는, 이미지의 pixel 값을 분석해서 고양이의 특징과 개의 특징에 따라서 사람이 프로그램을 작성합니다.
그러면, "이미지의 상단에 세모꼴 귀로 보이는 게 있으면 고양이, 둥근 귀 같으면 개이다" 와 같은 Rule을 여러개 만들 것입니다. 그리고 이걸 프로그램으로 작성하겠죠.
근데 여러 예외 케이스가 있을 것입니다. 특이해 보이는 개나 고양이가 있을 수도 있겠고, 개/고양이의 귀가 아래쪽에 치우쳐져 있을 수도 있을 것입니다. 사실 예외 케이스가 너무나 많아서, 일일이 Rule을 작성하고 프로그래밍을 하기가 굉장히 쉽지 않을 것입니다.
일반적인 프로그램은 입력 값에 대해서 일정한 출력 값을 내도록 프로그래머가 직접 한땀 한땀 입력합니다. 이 로직도 모두 프로그래머가 고안합니다. 이 경우 일반적인 서비스를 만드는 데는 문제 없습니다만, 개 vs 고양이 문제처럼 이미지에서 어떠한 것을 찾거나, 판별하거나, 특정 텍스트를 보고 긍/부정을 평가하거나, 음성 인식을 하는 서비스를 만들어야 할 때 거의 불가능한 방법입니다. 만들더라도 형편없는 성능을 보여 줄 것입니다.
머신러닝은 이와는 다른 접근 방식입니다. 개/고양이 사진들 여러개에는 각각 개인지 고양인지 labeling이 되어 있고, 이것을 학습하는 모델만 프로그래머가 만들면, 모델이 개/고양이 사진을 혼자 학습하여 여러 예외 케이스를 구지 고려하지 않아도 그냥 데이터만 많으면 개 vs 고양이를 잘 판별할 수 있도록 합니다.
여기서 label이 달린 개/고양이 이미지들이 Dataset 이 되며, 모델이 바로 핵심적인 머신러닝 알고리즘입니다. 데이터에 대해서 학습 (learning) 하는 과정이 있기 때문에 컴퓨터가 학습한다고 하여 Machine Learning 이라는 용어가 붙었습니다.
데이터에 대해서 학습을 하기 때문에 AI 를 할 때는 데이터가 많이 필요하다고 이야기 하는 것입니다. 또 한가지 장점은 위에 말한 모델만 프로그래머가 만들면 된다고 했는데, 딥러닝 기술 중엔 이것도 어느정도 자동으로 해 주는 분야도 있습니다. (아직 많이 사용되는 것은 아니지만) 그렇게 되면 프로그래머 입장에서는 데이터만 잘 준비하면 알아서 좋은 모델이 딱! 하고 튀어나오는 것이기 때문에, 많은 가능성이 열렸고 이게 요즘 AI 기술이 핫한 이유입니다.
개 vs 고양이 문제는 딥러닝이 사용되기 전에는 기존의 머신러닝 기술로는 여전히 어려운 문제였습니다만, 딥러닝이 상용화된 현재는 꽤나 사소한 문제가 되었습니다. 물론 이건 아주 간단한 예시이고, 실제로는 머신러닝에 수 많은 분야와 다양한 데이터 처리 형태가 있습니다. 이런 것은 앞으로 시간이 날 때마다 천천히 소개하도록 하겠습니다.