인공지능, 머신러닝, 그리고 딥러닝

2 months ago   •   31 min read

By mAsh

2016년 Google DeepMind Challenge Match라는 이름으로 알파고와 이세돌 9단이 대국을 펼친 지도, 또 그로 인해 기술 산업 분야에 큰 변화의 파도가 지나간지도 벌써 6년이나 지났습니다. 일반적으로 ‘알파고에 쓰인 기술’을 통칭하는 단어는 크게 네 가지 정도를 들 수 있는데, 가장 널리 통용되는 것이 ‘인공지능’이고, 그 다음으로는 ‘딥러닝’이며, 때때로 ‘머신러닝’이나 ‘강화학습’이라는 표현을 쓰기도 합니다.

구글에 '알파고 기술'을 검색한 결과

저희 mAy-I의 오프라인 공간 분석 솔루션에 사용된 기술들도 알파고와 마찬가지로, 외부의 누군가들에게 저 위의 세 가지 용어 중 하나로 소개되고 있습니다. 재미있는 점은 만나는 사람들의 배경에 따라 사용되는 단어가 그 때 그 때 달라지는데, 저희의 기술을 지칭할 때 어떤 단어를 사용하냐에 따라서 그 사람이 얼마나 많은 배경 지식을 가지고 있는지, 혹은 어떠한 관점으로 기술을 바라보고 있는지, 아니면 저희와 그 사람이 얼마나 깊은 기술적 수준의 대화를 하고 있는지 대략적인 느낌으로 알 수 있다는 점입니다.

그렇다면 어떻게 사용하는 단어만으로 그런 사실들을 알 수 있는 걸까요? 이를 설명하기 위해 이제부터 인공지능, 머신러닝, 그리고 딥러닝이라는 용어의 개념과 그 차이점에 대해서 가볍게 알아보도록 하겠습니다.

인공 지능(Artificial Intelligence)

아마 언급된 세 가지 용어 중 지금까지 여러분이 가장 많이 들어보셨을, 그리고 앞으로도 가장 많이 접하실 용어는 당연히 '인공지능'일 것입니다. 보통 언론을 통해서 많이 들으셨을 텐데, 최근에 대두되었던 손정의 소프트뱅크 회장의 ‘첫째도 인공지능(AI), 둘째도 인공지능, 셋째도 인공지능’이나, 문재인 대통령이 언급한 'AI 국가전략 수립'과 같은 예시들이 대표적일 겁니다. 뿐만 아니라 인공지능 스피커, 인공지능 에어컨 등 여러가지 상업적 제품의 콘셉트나 제품명을 통해서도 많이 들어보셨을 것입니다.

이렇게 인공지능이라는 용어가 많이 쓰이는 것은 '인공(의)+지능'이라는 단어가 매우 직관적일 뿐만 아니라, 실제로도 비교적으로 제일 넓은 범위를 포괄하고 있는 개념이기 때문입니다. 인공지능의 정의로 검색해보았을 때, 아마 가장 많이 볼 수 있을 정의를 소개해드리겠습니다.

'Artificial Intelligence' is the science and engineering of making intelligent machines.

John McCarthy

'인공지능 분야'라는 것이 처음으로 설립된, 1956년 다트머스 Conference의 주최자였던 John McCarthy가 설명한 인공지능의 정의입니다. “'인공지능'이란 'intelligent machine'을 만드는 과학과 공학이다.”

사실 이 말 하나만으로 인공지능이라는 것이 무엇인지 충분히 설명된다고 보기는 어려운 것 같습니다. 애초에 ‘intelligence machine’에 대한 설명 없이 저렇게 정의를 딱 내려버리면 어쩌자는 걸까요. 필자가 설명을 덧붙이기 어려워서 다른 자료들을 찾아보던 도중에 발견한, 영문 Wikipedia의 Artificial Intelligence 페이지에 적혀있는 정의 중 가장 그럴듯 해 보이는 정의를 살펴보겠습니다.

'Artificial Intelligence' is often used to describe machines (or computers) that mimic “cognitive” functions that humans associate with the human mind, such as “learning” and “problem solving”.

이 정의는 첫 번째 정의에서 설명하지 않았던 ‘intelligent’를 사람의 정신(mind)와 관련된 인지적(cognitive) 기능을 모방(mimic)하는 능력으로 설명하고 있습니다. 일단 첫 번째 정의보다는 구체적인 것이 마음에 들지만, 그래도 조금은 직관적이지 않은 느낌입니다.

사실 인공지능의 개념은 용어보다는 실생활에서의 예시를 살펴보는 것이 훨씬 이해하기 쉽습니다. 위의 정의에서 인지적 기능의 예시로 들었던 problem solving에 대해서 생각해봅시다. 알파고가 사회에 큰 반향을 불러 일으키기 이전, 생활 속에서 A.I.라는 개념을 가장 쉽게 접할 수 있었던 것은 무엇일까요? 개인차가 어느 정도 있을테지만, 아마 많은 분들이 말씀하시는 것은 게임 A.I.일 것입니다.

온라인 게임 리그오브레전드의 AI 상대 대전 모드

게임 A.I.의 역할은 단순하지만 명확합니다. 게임 A.I.는 ‘게임 플레이’라는 problem solving을 위해 동작합니다. 위 사진에 나와있는 리그오브레전드로 따지면 cs를 먹고, 스킬을 사용하고, 타워를 밉니다. 그런데 여기서 잠깐, 게임 A.I.는 왜 존재하는 걸까요? 일단 게임에서 이기기 위해서는 아닐 것입니다(몇몇 예외가 있기는 하지만). 일단 게임이라는 것은 직접 플레이하는 것에서 재미를 느끼니까요. 심지어 보통의 게임 A.I.는 인간보다 더 뛰어나지도 않습니다. 그런데도 왜 제작자는 게임 A.I.를 만드는 걸까요?

그 해답은 단순합니다. 게임 A.I.가 하는 그 일을 사람이 직접 할 수는 없기 때문입니다. 보통 A.I.와의 대전은 실제 사람과 대전하기 전 게임 실력을 향상 시킨다던가, 아니면 사람과의 대전을 피하고 싶은 몇몇 상황(예를 들면 시간 때우기 용으로 대충 플레이 하고 싶다던가)을 위한 연습인 경우가 많습니다. 만약에 게임 A.I.가 없다면, 아마 그러한 것들은 친구에게 부탁하거나, 욕 먹을 것을 각오하면서 실제 대전에서 연습한다던가 해야 할 것입니다. 하지만 개발자가 게임 A.I.를 만들어준 덕분에, 우리는 언제 어디서든 우리의 연습 상대(샌드백)이 되어 줄 대상을 찾을 수 있습니다.

게임 A.I.의 예에서 알 수 있는 것은, 바로 인공지능이란 것이 인간을 실제로 대체할 때 가치가 있다는 점입니다. 게임 A.I. 외의 실생활에서 접할 수 있는 다른 A.I.의 사례들을 생각해보셔도 좋을 것 같습니다. 기계 번역, 음성 인식, 얼굴 인식 등등의 인간이 할 수 있을만한 일들이 대부분입니다.

반면에 인간이 할 필요가 없는 과제에 대한 A.I.에 대해서 들어본 적은 없습니다. 밥을 먹는 A.I.나 스스로 옷을 입는 A.I.에 대해서 들어보신 분 있으신가요? 일단 저는 한 번도 못 들어봤습니다. 결국 인공지능이란, 말 그대로 인간이 할 만한 과제에 대해 인간을 대신해서 처리할 수 있는 기술의 지능(인지)적인 부분을 일컫는다고 볼 수 있겠습니다. 사실 두 번째로 말씀드렸던 정의에서 크게 달라진 점은 없지만, 개인적으로 인공지능의 본질은 결국 그 필요성에서 나온다고 생각해서 이렇게 사족을 붙이게 되었네요.

한편 위의 정의에서 또 다른 인지적 기능의 예시로 들었던 학습(learning)에 대해 이야기 해 보자면, 사실 이 기능은 인공지능이라는 용어에서 설명하기에는 애매한 측면이 없잖아 있습니다. 왜냐하면 학습이라는 개념은 인공지능에게는 필수적인 능력은 아니기 때문입니다. 오히려 학습은 다음에 설명할 머신러닝에서 큰 비중을 차지합니다.

머신 러닝(Machine Learning)

인공지능에 비해 머신러닝이라는 용어는 관련된 전공이 아니시라면 꽤나 생소한 단어일 것입니다. Machine Learning, 즉 기계(의) 학습이라는 개념을 처음 접하게 들었을 때 기계를 가르친다는 점에서 꽤나 흥미롭다고 생각하시겠지만, 그와 동시에 여러가지 의문점도 들 것입니다. 기계가 무엇을 배우는지, 기계가 어떻게 배우는지. 애초에 기계가 왜 무언가를 배워야 하는 걸까요?

프로그래밍에 대해서 배워보신 분들이면 다 아시겠지만, 보통의 코딩 과정은 논리적으로 주어진 문제에 대한 해결책을 순차적으로 제시하는 과정의 연속이라고 말할 수 있습니다. 코딩 교육 대신 추리소설을 쓰게 하라는 데니스 홍 교수님의 말씀을 인용하자면, 마치 추리소설에서 범인이 누구인지 추리해나가는 과정처럼 말입니다.

<남자 얼굴 이미지 vs 여자 얼굴 이미지>

사람의 얼굴 이미지로부터 성별을 예측하는 프로그램으로 한 번 예시를 들어보겠습니다. 어떤 사람의 얼굴을 봤을 때, 이 사람의 성별을 어떻게 예측할 수 있을까요? 보통 취할 수 있는 첫 번째 방법은 머리카락의 길이를 보는 것이겠죠. ‘일반적으로’ 여성의 헤어 스타일이 남성의 헤어 스타일에 비해 긴 머리카락을 가지고 있기 때문입니다. 두 번째 방법은 뭐가 있을까요? 특정 나이 이상의 남성의 경우 수염이 있는지 여부를 보면 되겠네요. 그렇다면 세 번째 규칙은 뭐가 있을까요? 얼굴 형태? 슬슬 무언가 설명하기 어려워지기 시작합니다. 사전을 찾아봐도 딱히 시각적인 정보로 구별하는데 도움 될만한 정보가 전혀 없습니다. 일단 딱히 생각나는 규칙이 없기 때문에, 일단 위의 두 가지 규칙만으로 프로그램을 만들어보겠습니다.

하지만 프로그램을 만들고 첫 번째 이미지를 테스트할 때부터 문제가 생겼습니다. 이 사람은 누가 봐도 남자인데, 약간 머리가 길고 수염도 없습니다. 하지만 경험적으로 이 사람은 무조건 남자입니다. 하지만 이미지 만으로는 도저히 설명할 길이 없습니다.

이러한 Rule-based (규칙 기반)알고리즘의 문제를 해결하기 위해서 도입되는 것이 머신러닝입니다. 머신러닝이 무엇인지, 일단 정의부터 살펴보자면 인공지능과는 달리 머신러닝에 대해서는 꽤나 명확한 정의가 소개되는 편입니다.

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performane at tasks in T, as measured by P, improves with experience E.

Tom Mitchell

즉 수 많은 예시들을 기계(컴퓨터)에게 던져주고, 이 예시들을 기반으로 새롭게 주어진 어떤 문제의 답은 이거다라는 것을 ‘어떻게든지’ 내보내게 만드는 것이 바로 머신러닝입니다. 만약 서양 철학에 관심이 있으시다면, 플라톤이 제창한 이데아를 찾는 과정이랄까요. 여러 예시를 통해 보편적인 무언가를 학습하는 과정입니다.

교사가 학생에게 무언가를 가르칠 때 그 방법은 하나만 있지 않은 것처럼, 기계 학습에도 많은 종류의 방법이 있습니다. 위의 성별 분류 프로그램을 예시로 들어보겠습니다.

어떤 새로운 얼굴 이미지가 들어왔을 때 성별을 결정하기 위해서, 가지고 있는 데이터 중 가장 비슷하게 생긴 얼굴들을 골라 그 얼굴들의 성별 중 더 많은 쪽을 선택할 수 있습니다. 머신러닝에서는 이를 k-Nearest Neighbor(k-NN) 기법이라고 합니다. 혹은 이미지에서 머리카락 길이, 얼굴 비율 등 몇몇 수치들을 뽑아내든 픽셀 그 자체를 1차원 벡터로 표현해 놓든 과정을 거쳐 2차원 그래프 상에 올려놓는다고 생각해보면, 우리가 할 수 있는 일은 남자와 여자를 최대한 많이 맞출 수 있도록 선을 긋는 것입니다. 머신러닝 방법 중 Linear Classification의 기본 원리가 이것입니다.

k-NN 기법을 사용하기 위해 얼굴 이미지들을 2차원 평면에 project 시킨 모습. 인종, 성별, 턱수염 등의 비슷한 특징을 가진 얼굴들이 모여있는 것을 볼 수 있다. 출처: David Masip, Jordi Vitrià, “Feature extraction for nearest neighbor classification: Application to gender recognition

이 둘 이외에도 Linear Regression, Nearest Neighbor, Decision Tree, Bayesian Model, Neural Network, Support Vector Machine, k-means Clustering, Hidden Markov Model 등등 많은 종류의 머신러닝 방법들이 개발되었고 그 성능이 검증되어 있으니, 우리는 그 중 적당해 보이는 것을 선택해서 사용하면 됩니다.

머신러닝 방법들은 좋은 성능을 보여준다는 점 하나 때문에라도 꽤나 마음이 혹하는 경우가 많습니다. 그럼에도 불구하고 머신러닝을 적용하기 위해서는 데이터가 굉장히 많이 필요하고, 기계를 학습시킬 시간도 추가적으로 필요합니다.

이 데이터를 수집하고 가공한다는 것이 꽤나 손이 많이 가는 작업입니다. 공개되어 있는 데이터가 있다면 다행이지만, 그렇지 않을 경우 적게는 몇 천 장, 많게는 수십~수백만 장에 해당하는 이미지 데이터를 모아야 하는 일이 될 수도 있습니다. 추가적으로 일일히 그것들을 보면서 형식에 맞게 라벨링해야 하는 것은 덤이고요. 그렇게 모은 데이터로 좋은 결과가 얻는다면 그래도 괜찮을텐데, 그 고생을 하고서 결과가 나쁘다면? 상상만 해도 끔찍합니다. 그렇기 때문에 우리는 머신러닝을 꼭 적용해야 하는 문제와 적용하지 않아도 되는 문제를 구별해야 할 것입니다.

머신러닝을 사용하지 않아도 되는 예시를 들어보겠습니다. 위의 성별 분류의 예시를 생각해봅시다. 위에서는 얼굴 이미지만으로 성별을 분류해야 하기 때문에 명확한 규칙을 찾기 힘들었고 따라서 많은 데이터를 기반으로 기계를 학습시키는 방법이 유효했습니다. 그런데 만약 이 솔루션이 사용되는 곳에서의 남성들이 전부 머리가 굉장히 짧고 그 사실이 우리에게도 알려져 있다고 가정해보겠습니다(군부대라던가…).

그렇다면 굳이 복잡하게 얼굴의 여러 특징을 입력으로 넣는 것이 아니라, 그냥 머리카락 길이만을 컴퓨터 비전 테크닉으로 찾아내어 입력으로 넣어주면 됩니다. 아마 머신러닝 보다도 훨씬 정확하게 분류할 수 있을 것입니다. K-Nearest-Neighbor을 예시로 생각해보면, 운이 나쁘게도 비슷하게 생긴 얼굴들이 여자들 위주로 나올 수 있으니까요. 정리하자면, 머신러닝이 쓰이는 분야는 보통 좋은 규칙을 찾기 어려운 경우입니다.

또 하나 머신러닝의 필요성을 위해 확인해야 하는 것은 바로 데이터 안에 일정한 패턴이 존재하는지 그 여부입니다. 위의 Tom Mitchell의 정의로 말씀드리자면, performance measure P가 experience E에 의해 증가할 수 있어야 한다는 말 뜻입니다. 얼핏 생각해보면 어이가 없지만, 의외로 이런 일들에 관심을 보이는 곳이 많습니다. 예를 들어 그 동안의 로또 번호 데이터를 학습해서 다음 로또 번호를 맞추는 인공지능 기술!에 대해서 한 번 쯤은 들어보셨을 겁니다. 물론 말이 안 되죠.

아쉽게도 로또 번호는 패턴이 없다고 한다(출처)

다행히도(?), 대부분 인간이 실생활에서 하는 경험을 토대로 한 ‘예측’ 활동들은 이 조건에 부합합니다.

우리는 성별을 예측하는 프로그램과 같이 규칙을 찾기 힘든 상황들에 대해, 머신러닝 방법론을 사용하는 것이 좋은 효과를 가진다는 것을 알 수 있었습니다. 그런데 사실 여기서 제가 넘어갔던 부분이 있습니다. 과연 우리가 넣어주는 저 얼굴 비율, 머리카락 면적, 수염 부분 패턴 등의 특징을 어떻게 뽑을 수 있을까요? 또, 이런 특징들을 넣어주는 것은 순전히 우리의 직관이라고 볼 수 있는데, 과연 이 특징들이 옳은 특징일까요? 혹시 이 특징을 뽑아내는 방법들까지도 학습할 수 있을까요? 이런 의문들에 해답을 내어 놓을 수 있는 것이 바로 오늘날의 인공지능 붐을 일으켰던, 딥 러닝입니다.

딥 러닝(Deep Learning)

딥러닝을 직역하면 깊은 학습입니다. 보통 딥러닝이라는 단어를 한글로 번역할 때에는 심층학습이라는 표현을 쓰기도 합니다. 학습이 깊다는 건 어떤 뜻일까요? 학문의 깊이가 깊다는 것은 아닐테고, 데이터를 깊게 쌓아놓는다는 걸까요? 아니면 방법의 깊이가 남다른 것일까요? 굳이 따지자면 생각이 깊은 거라 말할 수 있는데, 정확히 말하자면 신경망(Neural Network)를 깊게 구축하는 것이 바로 딥 러닝 입니다.

뉴런의 구조(출처)

실제 생물체의 특징을 모사해서 원하는 기능을 구현하자는 생체 모방이라는 개념은 고대부터 내려온 유서깊은 문제 해결 방법입니다. 많은 사람들이 인공지능을 만들기 위해서 실제 뇌를 모방하는 것은 어떨까 생각한 것이 어찌보면 당연합니다. 위의 그림은 고등학교 생물 시간에 한 번쯤은 들어보셨을, 뇌를 구성하고 있는 뉴런입니다. 간단히 메커니즘을 요약하면, 각각 가지 돌기로 이전 뉴런으로부터의 전기 신호를 받으면, 이 신호들이 신경세포체에서 합쳐져 축삭 돌기를 통해 이동하고, 축삭 말단에서의 전기 신호가 일정 역치(Threshold)를 넘어가면 이 신호가 전기 화학적 매개를 통해 다음 뉴런으로 신호가 전달됩니다. 이 뉴런을 모방하여 만든 것이 퍼셉트론(Perceptron)이라고도 불리는, 머신러닝 방법론 중 하나인 인공신경망(Artificial Neural Network)입니다.

퍼셉트론의 식과 뉴런과의 비교 (출처)

위 그림의 오른쪽은 단일 퍼셉트론의 원리를 나타내고 있습니다. 퍼셉트론은 숫자로 표현된 여러 종류의 입력값 x를 받아, 각각 입력값에 할당되는 가중치(weight)을 곱한 후 더해서 단일 값을 내보냅니다(참고로 이 가중치를 정하기 위해 데이터로 학습하는 과정과 원리를 설명해야 하지만, 이 글에서는 생략하도록 하겠습니다). 그리고 이 단일 값을 활성 함수(activation function)에 통과시켜 특정 범위 안(ex. 0~1 사이)의 값으로 만들면 이 최종값은 해당 입력에 대한 긍정적인 신호의 정도를 숫자로 표현한 것이 됩니다. 예를 들어 뭔가를 구분하는 경우, 최종값이 미리 정해놓은 threshold(ex. 0.5)를 넘기면 긍정적인 신호, 반대의 경우에는 부정적인 신호로 판단할 수 있습니다.

각각의 입력 요소들을 더해서 그것이 일정 점수를 넘어가면 어떤 신호로 판단한다는 원리는, 뉴런을 모방했다는 점을 고려하지 않더라도 꽤나 그럴듯한 방법으로 보입니다. 하지만 주어진 문제의 특정 요소를 더해서 판단하는 점이나, 특정 값을 기준으로 분류하는 접근은 기존의 머신러닝 방법들과 크게 다르지 않은 것 같습니다. 그렇다면 다른 머신러닝 기법들과 차별화되는, 딥 러닝 만의 특별한 점은 무엇일까요? 바로 딥 러닝을 이용한 특징 추출(feature extraction)입니다.

위의 성별 예측 프로그램 예시로 딥 러닝의 특징 추출(feature extraction) 과정에 대해 좀 더 살펴보겠습니다. 머리 길이에 0.2, 수염 여부에 0.4, 얼굴 비율에 0.12와 같이 feature들에 대해 가중치가 있다고 생각해 봅시다. 사실 여기까지만 생각해보면 앞서 언급되었던 Linear Regression과 비슷하다고 볼 수 있습니다. 하지만 여기서 달라지는 점은, 이 머리길이, 수염 여부, 얼굴 비율 등의 특징(feature)을 추출하기 위해 해당 퍼셉트론 이전에 퍼셉트론 층을 추가할 수 있다는 것입니다.

좀 더 자세히 생각해보면, 컴퓨터에게 머리카락을 인식시키기 위해, 우리는 검은색이고(보통), 가늘고 기다란 선형의 패턴이 있으면 그 부분이 머리카락일 것이라는 생각을 할 수 있습니다. 그럼 이제 검은색은 어떻게 알 수 있을까요? RGB값의 평균이 얼마 이상이면 어두운 색이라고 정의할 수 있습니다. 결국, 아무리 복잡한 형상이더라도, 이렇게 계속 해당 단계보다 더 낮은 단계인 특징들의 weighted sum(가중치 합)으로 쪼개어 나갈 수 있습니다. 그렇기 때문에 이러한 뉴런을 통과하는 단계를 여러 단계로 두는 것이 바로 Artificial Neural Network의 기본적인 개념이고, 기존에는 이를 학습하기 위한 방법의 여러가지 한계로 인하여 많은 층으로 쌓는 것을 시도하지 못 하던 것이 여러 기술의 발전으로 인해 해결되면서 만들어진 용어가 deep한 neural network의 학습(learning), 즉 Deep Learning입니다.

결국 이름에서도 볼 수 있듯이, Deep Learning의 핵심은 그 Deep 함에 있습니다. 뉴런 층이 깊다는 점은, 다르게 말하면 뉴런이 굉장히 많다는 겁니다. 2012년 이미지를 보고 그 이미지에 있는 물체의 종류를 1000개 중 하나로 분류(classify)하는 ImageNet Challenge에서 이전과 비교해 큰 정확도 향상을 보이며 우승한 AlexNet이라는 뉴럴 네트워크를 예로 들어보면, 61M, 즉 6100만 개 정도의 파라미터를 가지고 있습니다. 딥 러닝 모델이 보여주는 높은 성능은, 어찌보면 단순하게 설명 가능합니다. 바로 많은 뉴런을 깊게 쌓아, 데이터가 가질 수 있는 다양한 특징들을 다양한 계층 구조로 표현할 수 있기 때문에 더 좋은 결과를 낸다는 것입니다.

다만 뉴런이 많다는 것이 항상 좋은 것은 아닙니다. 뉴런이 많아질 수록 당연히 더 좋은 결과를 내겠지만 많은 뉴런들을 ‘효과적으로’ 학습하는 것은 여간 어려운 일이 아닙니다. 여기서 효과적이라는 말은, 학습 과정을 효율적으로 운영하는 것 뿐만 아니라 학습되는 시각적 특징들이 얼마나 적절하게 학습되는지 그 표현력의 품질도 포함됩니다. 뉴런이 많을 수록 해당 신경망 모델이 학습할 수 있는 표현의 개수는 더더욱 많아지지만, 때로는 이 표현들의 수가 데이터에 비해 너무 과도해지는 경우가 생깁니다. 이렇게 되면 우리가 학습 시킨 데이터에는 모델이 잘 적용될 수 있지만, 정작 실제로 사용될 환경의 일반적인 예시에는 오히려 낮은 성능을 보여줍니다. 이 현상을 머신러닝 용어로는 오버피팅(over-fitting)이라고 부릅니다.

오버피팅의 시각적 예시. 빨간색 점과 파란색 점을 구분하고자 할 때 보통은 검은색 선과 같은 구분선을 생각하나, 오버피팅이 된 경우 초록색 선과 같이 구분선이 학습된다. 이 경우 해당 데이터에는 잘 구별할 수 있으나, 일반적인 데이터들에 대한 성능이 떨어지게 되어 좋은 학습이라 볼 수 없다. (출처)

또한 일반적으로 생각해보면, 이 많은 뉴런들의 파라미터 값을 저장하고 필요할 때 꺼내서 쓰는 것도 매우 힘든 일입니다. 단순히 말해서, 저장 용량이 크고 상대적으로 컴퓨팅 파워를 많이 소비하며 느립니다. 이러한 상황 때문에, 우리가 볼 때 굉장히 대단하고 신기한 결과를 보여주는 수많은 연구들이 상용화되는 것을 보는 것이 생각보다 힘듭니다.

이러한 단점에도 불구하고, 최근 인공지능이 기술적으로 다시 대두되기 시작한 것은 순전히 딥 러닝 기술 발전의 공이 큽니다. 앞서 언급된 AlexNet이 그래픽 카드로 잘 알려져 있는 GPU를 사용하여 Deep한 Neural Network 학습의 가능성을 제시했고, 이를 시작으로 여러 가지 효과적인 딥 러닝 모델, 학습 방법, 데이터 정제 방법 등이 연구되면서 황금기가 시작되었습니다.

mAy-I와 인공지능

mAy-I의 오프라이 공간 분석 솔루션에는 객체 인식(Object Detection)과 같이 인공지능 기술로 분류될 수 있는 여러가지 기술들이 사용되고 있고, 이들 중 대부분은 Deep Neural Network를 사용하는 Deep Learning 기반의 기술입니다. 딥러닝을 사용하니 자동적으로 머신러닝 기술이기도 합니다. 그렇다면 저희는 언제 이 세 단어를 사용할까요?

일단 가장 유추하시기 쉬운 케이스인 인공지능은, 일반적으로 시장에 소개할 때, 혹은 기업을 분류할 때 사용됩니다. 예를 들어 , 혹은 정부 과제 지원을 위해, 혹은 투자를 위해 만날 때 mAy-I는 인공지능 기술을 개발하는 인공지능 스타트업이다라고 하죠.

딥 러닝이라는 단어의 경우, 여기에서 좀 더 나아가 저희 기술의 세부적인 사항을 설명해야 하는, 그러나 청중이 이 분야에 종사하지 않을 때 딥 러닝이라는 단어로 설명합니다. 혹은 저희 기술이 최신 트렌드를 따른다, 혹은 발전된 기술의 형태이다라는 것을 말하고 싶을 때 사용합니다.

마지막으로 머신러닝이라는 용어는 보통 외부보다는 내부적으로 많이 사용합니다. 저희 기술 중 일부는 Rule-based로도 좋은 결과를 내고 있는데, 새로운 기능을 구현할 때 그 방향성을 정할 때 보통 머신러닝 기반으로 갈 건지, 아니면 규칙 기반으로 갈 건지 논의할 때 주로 사용됩니다.

사실 아래의 참고 자료들을 포함한 많은 글에서 인공지능, 머신러닝, 딥러닝 개념의 차이를 이야기하고 있습니다. 하지만 왜 이들을 구분해서 사용해야 하는지 말하는 글은 별로 없었습니다. 물론 상식을 위해, 혹은 정확한 단어를 사용하기 위해라고는 하지만 사실 그러려고 하면 그냥 가장 넓은 범위인 '인공지능'이라는 단어만 사용해도 될 것입니다(실제로 많은 언론에서는 그렇게 소개하고 있습니다).

그러나 굳이 이들을 구분해서 부르려는 이유는, 인공지능 기술이라는 것이 과연 본질적으로 어떤 의미가 있는지 이 세 단어의 구분과 관련지어 생각해 보고 싶었기 때문입니다.

다시 한 번 정리해 보자면, 세 단어 ‘인공지능’, ‘머신러닝’, ‘딥 러닝’ 중 인공지능이 가장 넓은 범위의 개념이고, 머신러닝이 인공지능의 영역에, 딥러닝이 머신러닝의 영역에 포함되는 개념입니다. 다르게 말하자면 인공지능을 위한 여러 수단 중 하나가 머신 러닝이고, 머신 러닝을 위한 여러 수단 중 하나가 딥 러닝입니다. 결국 좋은 인공지능을 만들기 위해 머신러닝이 필요하고, 좋은 머신러닝을 하기 위해 딥 러닝이 필요합니다.

인공지능이라는 개념이 서서히 익숙해지면서, 그 부작용으로 모든 일에 억지로 인공지능을 적용하는, 즉 ‘인공지능 만능주의’, 혹은 ‘딥 러닝 만능주의’라는 말이 들려오고 있습니다. 학계에서도 일부 분야에서는 Deep Learning이 과연 과대 광고인지, 즉 Hype인지 아닌지에 대해 논쟁이 벌어지곤 합니다.

딥 러닝을 통해 가능해지는 여러 신기한 일들이나 프로젝트들을 보면, 딥 러닝이 Hype이라고 보는 것은 너무 보수적인 시각이 아닌가 하는 생각이 듭니다. 하지만 너무 딥러닝에만 집착해서, 무턱대고 딥러닝 기술을 적용하고, 모두가 딥러닝 엔지니어가 되어야 한다는 주장들에는 솔직히 거부감이 듭니다.

세상을 바꾸기 위해서는 좋은 딥러닝 기술이 아니라 좋은 인공지능 기술에 초점을 두어야 합니다. 아무리 좋은 딥러닝 기술이더라도, 결국 인공지능 기술을 구현하기 위한 머신러닝 방법론 중 하나입니다.

이 글을 읽으시고, 거시적인 관점에서는 좋은 인공지능이란 무엇인지를, 미시적인 관점에서는 여러분이 소속되어 계신 각 회사나 프로젝트들에서 꼭 필요한 인공지능과 필요없는 인공지능 서비스에는 어떤 것이 있을지 한 번 쯤 생각해보실 계기가 되었다면 좋겠습니다.

👇참고 자료

  1. 인공지능과 머신 러닝, 딥 러닝의 차이점을 알아보자 (NVIDIA 공식 블로그)

2. 머신러닝이란 무엇인가? (수아랩 리서치 블로그)

3. 인공지능, 머신러닝, 딥러닝 개념 (https://brunch.co.kr/@gdhan/10)

4. 뉴스 빅데이터로 본 인공지능(AI)의 역사 (https://brunch.co.kr/@kpf10/143)

Spread the word

Keep reading