brunch

You can make anything
by writing

C.S.Lewis

by 송경빈 Sep 20. 2018

인공지능 기술/원리의 이해


이 강의는 인공지능 기술의 ‘원리’를 이해함으로써 

인공지능 기술 활용을 위한 기본 소양을 습득하는 것을 목표로 합니다.

다소 길지만 끝까지 완독하시면 현 인공지능 기술의 속성에 대해

제대로 감을 잡으실 수 있을 것이라 생각합니다.


최대한 쉽게 쓰려 노력했습니다만, 그러다보니 오히려 너무 간소화하여 

충분히 이해하는데 어려운 부분이 있지 않을까 염려됩니다. 


이 글은 내용을 좀더 풍성히 하고, 대규모 언어모델에 대한 이야기도 담아

'인공지능 구조 원리 교과서'라는 책으로 발간되었습니다.(2024년 3월)




인공지능정말 지능 맞아?


현재 기술로 구현된 인공지능, 정말 지능 맞아? 

이 질문에 대한 정답은 ‘아니오’이다. 엄밀히 말해 지금의 기술로 구현되고 있는 것들은 ‘인공 지능(Artificial Intelligence)’이라기보다는 ‘훈련 가능한 기계(Trainable Machine)’라고 불리는 것이 더 맞다. 지금의 AI 기술은 '자의식을 갖춘 지성, 지능'에 관한 기술이 아니라, 발달된 ‘데이터 분석 기술’이자 고성능의 ‘자동화 기술’일 뿐이다. ‘그럼 별 것 아닌거야?’ 라고 생각할 수 있는데 절대 그렇지는 않다. 훈련 가능한 기계라고 하면 ‘새로 산 기계를 자꾸 사용하고 기름칠하면서 길들여지는 것’을 연상할 수 있는데 그것과는 분명히 다르다. 자율주행자동차를 예로 들면, 학습이 안된 백지 상태의 자동차는 겉은 멀쩡해도 깡통이나 다름없다. 불과 몇 미터를 가지 못하고 장애물에 충돌하거나 멈춰서버리게 되는데, 학습을 마친 자동차는 사람보다도 운전을 더 잘 하게 된다. 그렇다면 사람보다 운전을 더 잘하는 이 자동차가 정말 지능을 가진 것일까? 전혀 그렇지는 않다. 이 녀석이 잘하는 것은 딱 하나, 운전 뿐이다. 운전방법이 훈련된 기계인 것이다. 다른 것을 잘 하게 하려면 또다시 백지에서부터 훈련을 시작하거나 다른 인공지능을 구입해야 한다.

사람들이 지금의 인공지능 기술에 대해 갖고있는 인식에는 다소 오해가 섞여있다. 인공지능 기술에 대한 기초원리를 이해함으로써 이 오해를 바로잡고, 인공지능 기술이 사회적으로 바르게, 비용낭비나 거품 없이 사용되도록 하는 데에 조금이나마 도움이 되고자 강의를 준비했다. 특히 인공지능 기술에 대한 충분한 이해 없이 프로젝트를 발주해야 하는 입장에 있는 분들께는 이 글이 적잖이 도움이 되리라 믿는다.     


2018.8.9.

NIA 한국지능정보사회진흥원(구 한국정보화진흥원) 송경빈








1. 강의 개요



위 장표의 왼쪽 사진은 컴퓨터(인공지능)에게 제시된 사진이고, 오른쪽의 텍스트는 인공지능이 이 사진을 보고 해설한 내용입니다. 매우 훌륭하게 사진을 인식해낸 것을 보실 수 있습니다. 그렇죠?

여기에서 질문이 하나 있습니다. 이 사진 속의 사람들이 터번을 쓰고 있는 걸 보실 수 있는데, 이 인공지능이 이 사진에서 터번을 인식할 수 있을까요, 없을까요?

네, 정답은 ‘할 수 없습니다’.

이 인공지능 알고리즘은 장표의 가운데에서 보시는 것처럼 CNN이라는 알고리즘과 RNN이라는 알고리즘을 같이 사용하는데요, 뒤에서 좀더 자세히 다루겠습니다만, 여기에서 CNN은 사진 속의 개체들을 인식하는 역할을, RNN은 CNN이 분석하여 넘겨준 개체 이름들, 즉 단어들을 나열하여 사람이 설명하듯 문장을 만들어내는 역할을 합니다. 그런데 CNN 알고리즘은 사전에 미리 주어진, 학습된 개체들만 인식할 수 있습니다. 인식할 개체 목록과 각 개체별 대량의 데이터, 즉 유사한 사진들을 사전에 제공받고, 이를 토대로 각 개체의 특징을 미리 학습함으로써 인식능력을 갖게 됩니다. 달리 말하면 CNN 알고리즘은 미리 주어진, 학습된 개체만 인식할 수 있다는 거죠. 이 인공지능이 학습을 완료하고, 보시는 것처럼 잘 작동되고 있는데도 불구하고 인공지능이 만들어낸 사진해설에 ‘터번’이라는 단어가 등장하지 않았다는 것은 사전에 학습 대상으로 주어지지 않았다는 것을 의미합니다. 인공지능은 학습되지 않은 것에 대해서는 그냥 바보이므로, 이 인공지능이 터번을 인식하는 것은 불가능한 것입니다.

사실 사진을 보고 기계가 해석하여 이렇게 읽어낸다는 것은 정말 대단한 일입니다. 예전에는 상상도 못했던 일이죠. 앞으로 인공지능 기술이 이보다 더한 대단한 일들을 많이 해내게 될 것입니다. 그러나 한편으로는 이렇게 한계가 분명한 기술이라는 것을, 아직 ‘지능’이라고 부르기엔 많이 먼 기술이라는 것을 이해시켜드리고자 이 장표로 강의를 시작했습니다.





현재 주목받고 있는 인공지능 기술은 엄밀히 말하면 머신러닝 기술, 그중에서도 딥러닝 기술입니다. 본 강의를 통해 이 기술에 대해 이해하시게 될 겁니다.

인공지능 4대천왕 중 한분이라고 불리우는 (전)스탠포드대 앤드류 응 교수는 이와 같은 인공지능 기술의 의의를 다음과 같이 얘기했습니다.

 “데이터와 기계학습을 통해 정확하고 빠른 의사결정 능력을 갖게 되는 것은 수퍼파워를 얻는 것이나 다름없다.”

‘데이터와 기계학습’이란 지금 우리가 말하는 인공지능 기술을 뜻하고, 이를 잘 활용해 남보다 빠르고 정확한 의사결정 능력을 갖게 되는 것은 초능력을 갖고 있는 수퍼맨에 비할만큼 대단한 경쟁력을 보유하게 되는 것이라는 것을 강조한 것입니다.




질문을 또 하나 드리겠습니다.

요즘 우리가 말하는 ‘인공지능이 학습을 한다’라는 표현은 ‘①컴퓨터가 창의적으로, 자발적으로 생각하고 사고한다’는 뜻일까요, 아니면 ‘②멍멍이 훈련시키듯 기계가 훈련된다’는 뜻일까요?

이 질문에 대한 답은 뒤에서 말씀드리겠습니다.




2. 머신러닝의 기초 원리



지금부터 말씀드리는 내용은 다소 지루한 내용이 될 수도 있겠습니다만, 어렵지 않게 간소화했고, 내용을 최대한 짧게 압축하였으므로 꼭 이해하고 넘어가시기 바랍니다. 간단한 내용이지만 이 내용을 이해하셔야만 뒤의 내용들을 이해하실 수 있습니다. 절대 어렵지 않습니다.

y=ax+b. 일차함수죠. f(x)=ax+b로 표현하기도 하구요. 머신러닝에서는 H(x)=wx+b 의 형태로 표현합니다. 이 식을 보여드리는 이유는 머신러닝이 세상의 대부분의 현상을 이와 같은 식으로 표현하고 학습하기 때문입니다.

우리가 데이터 분석을 통해 문제를 해결하려고 하는 사례를 한번 볼까요? 우리가 여러 정보들을 활용해서 사람에게서 고혈압 질환이 발생할 가능성을 예측하려 한다고 가정해보겠습니다. 그러면 우선 우리는 고혈압 발생에 영향을 미치는 요소들, 원인들을 뽑게 됩니다. 식습관은 어떤지, 술담배는 하는지, 수면습관은 어떠한지, 일상생활에서 스트레스의 정도는 어떠한지, 운동은 하는지 등등…

이와 같이 문제에 영향을 미치는 요인들이 그림의 y식에서 x1, x2, x3 등으로 표현되게 되구요, 그런 다음 각 요인들이 문제 발생에 얼마나 큰 영향을 미치는지를 판단하여 각 요인별로 가중치를 부여합니다. 식에서 w1, w2, w3 등으로 표현된 것들이 가중치를 나타낸 것입니다. 그런 다음 이 항들의 합을 구함으로써 우리가 원하는 답, 즉 어떤 사람이 고혈압에 걸릴 가능성이 얼마나 되는지의 예측치를 구하게 됩니다. 간단하게 개념화하기는 했습니다만, 이런 방법으로 데이터로부터 우리가 원하는 답을 구할 수 있습니다. 위의 식에서 b는 bias, 편향성이라고 합니다. 데이터가 얼마나 치우쳤는지를 표현하는 것 정도로 이해하시면 될 것 같습니다.

그런데 여기에서 문제의 원인, 즉 변수들을 뽑는 것은 그래도 상대적으로 용이한 편인데, 이 가중치들을 구하는 것이 쉽지 않습니다. 어떤 조합으로 구성해야 정확한 결과가 나오는지 알아내기가 쉽지 않습니다. 이것을 위해 별도의 연구 프로젝트를 돌리고 수차례에 걸친 다각도의 검증을 진행하기도 합니다.

이 어려운 작업을 기계에게 시키는 것이 바로 머신러닝입니다. 예를 들면 H(x)=wx+b와 같은 기본 가설식을 설정해놓고, 수많은 실험을 반복하게 함으로써 정답에 근접한 가중치를 기계가 찾아내도록 하는 것, 이것이 바로 머신러닝입니다.

물론 H(x)=wx+b는 기본형이고, 이 식은 현실 속의 다양한 문제들을 해결하기에는 너무 단순합니다. 그래서 각 상황에 적합한 여러 형태의 응용식이 존재하고, 또 연구자들이 복잡한 현실 속 문제들을 해결하는데 더욱 적합한 응용식들을 계속 연구하고 있습니다.




컴퓨터가 학습하는 원리를 좀더 구체적으로 설명해보겠습니다. 보기에도 따분한 화면이지만 지금부터 딱 세장의 화면은 꾹 참고 읽어주시고, 꼭 이해하고 넘어가시길 당부 드립니다. 이 세장만 확실히 이해하시면 나머지 장표는 대충 넘어가셔도 됩니다.

사과를 한 개 사면 1원, 두 개 사면 2원, 세 개 사면 3원이라고 합시다. 이것을 도표로 표현하면 위의 그림과 같이 되겠죠? 이 점들을 연결하면 직선이 됩니다. 이와 같이 어떤 현상을 선형적으로 표현 가능할 때 이를 linear regression, 선형회귀라 하는데요, 의외로 많은 세상 현상이 이렇게 선형적으로 표현됩니다. 이 직선을 수식으로 표현하면 y=1×x+0이 되겠지요.

이 조건에서 사과를 다섯 개 사면 얼마일까요? 여러분은 너무도 쉽게 5원이라고 예측하실 수 있습니다. 그런데 아무런 판단력이 없는 컴퓨터, 즉 기계는 이런 쉬운 문제조차 맞출 수가 없습니다. 그래서 사람이 컴퓨터에게 일단 기본 가설식을 제시하고 그 식을 기반으로 컴퓨터가 답을 내보도록 합니다. 여기에서는 일단 앞서 말씀드린 기본 형태의 식, H(x)=wx+b을 가설식으로 주었습니다. 결과적으로는 사과 다섯 개의 5라는 숫자를 x에 입력시켰을 때, 사과값은 5원이다라는 예측치가 H(x)값으로 산출되면 됩니다. 그런데 아무런 사전 정보를 받지 못한 컴퓨터, 즉 학습되지 못한 인공지능은 당연히 제대로 된 답을 낼 수 없습니다. 전혀 엉뚱한 답을 내겠죠. 그래서 우리가 컴퓨터에게 시켜야 할 일은 컴퓨터가 우리가 갖고 있는 데이터, 즉 x=1일 때 y=1, x=2일 때 y=2, x=3일 때 y=3이라는 데이터를 이 가설식에 대입해봄으로써, 최적의 w와 b를 찾도록 하는 것입니다. 우리가 이미 알고 있는 것처럼 정답에 해당하는 수식은 y=1×x+0이므로, 이 작업이 잘 이루어지면 컴퓨터는 w를 1, b를 0으로 설정하게 되겠죠.




처음에 컴퓨터는 가설식 이외에 아무런 정보가 없으므로 w와 b를 랜덤값으로 설정하게 됩니다. 위 그림의 예시에서 왼쪽 도표의 파란선이 컴퓨터가 랜덤하게 설정한 식을 표현한 것인데요, 대략 w=0.3, b=1.2 정도로 설정한 것을 보실 수 있습니다. y=1×x+0 이어야 하는데 y=0.3x+1.2를 가설로 갖고 있으므로 당연히 정답이 아닙니다.

그럼 이제 우리는 컴퓨터에게 무엇을 시켜야 할까요? 네가 틀렸다는 것을 알려주고 맞는 답을 찾아갈 수 있도록 안내해주어야 합니다. 틀렸다는 것은 어떻게 알려줄 수 있을까요? 정답 데이터, 즉 각 x에 대한 y값들과 가설식이 산출한 H(x)값들의 차이를 보여줌으로써 ‘네가 얼마나 틀렸는지’를 알려줄 수 있습니다. H(x)-y를 구하는 것이죠. 이것을 cost 또는 loss라고 합니다. 많이 틀리면 그만큼 비용 또는 손실이 발생하므로 이런 용어를 쓴다고 보시면 됩니다. 오른쪽에 있는 식들이 cost를 구하는 과정을 수식화한 것입니다. 두 번째 수식을 보시면 각 항에 제곱이 들어간 것을 보실 수 있는데요, 왼쪽 그래프에서 정답 데이터와 가설값의 차이가 x=1일 때에는 양수, 3일 때에는 음수라서 그냥 더하면 서로 상쇄되어 제대로 된 차이를 구할 수 없게 됩니다. 그래서 각 항을 모두 제곱처리함으로써 양수화하는 것이고, 또 하나의 중요한 이유가 있는데 다음 페이지에서 말씀 드리겠습니다.




앞에서 도출한 cost식을 그래프로 표현하면 이와 같이 밥그릇 모양의 그림이 됩니다. 세로축은 cost값이고 가로축은 w값입니다. 친숙하신 분도 있고 고개를 절레절레 젓는 분도 계실 것 같습니다만 우리가 중학교 때 배운 이차함수 그래프입니다. 이 그림을 놓고 볼 때 우리가 해야할 일은 뭘까요? 네, 컴퓨터가 cost 0인 w값을 찾아내도록 해야 합니다. 지금의 경우 컴퓨터가 랜덤하게 설정한 w는 0.3이므로, 그래프에서 확인하실 수 있는 것처럼 cost가 좀더 0에 가까워지도록 하려면 w를 좀더 오른쪽으로 이동시켜야 합니다. 반대로 만약 w=4로 설정한 상태라면 왼쪽으로 많이 이동하도록 해야겠죠. 이런 작업을 어떻게 자동으로 수행하도록 할 수 있을까요? 바로 해당 지점에서의 기울기값을 이용하면 됩니다. 기울기값을 구해 음수이면 오른쪽으로, 양수이면 왼쪽으로 움직이도록 하면 됩니다. 즉 w=0.3일 때에는 기울기가 작은 음수이므로 오른쪽으로 약간 이동시키고, w=4일 때에는 기울기가 좀더 큰 양수이므로 왼쪽으로 많이 이동시키는 것입니다. 이것을 ‘경사타고 내려가기’ 알고리즘이라고 부릅니다. 앞에서 cost식을 만들때 각 항을 제곱처리하는 두번째 이유가 이것입니다.

제곱처리함으로써 cost식을 이와같은 밥그릇 모양의 이차함수 그래프로 만들 수 있게 되는 것입니다.

 그렇다면 이차함수 그래프에서 특정 지점의 기울기는 어떻게 구할 수 있을까요? 바로 미분을 쓰면 됩니다. 이런 방법을 수식화한 것이 오른쪽 아래의 수식입니다. 컴퓨터가 이 수식을 활용하여 cost가 0이 될 때까지 w를 계속 이동시키도록 하면 됩니다. 미분에 대해 전혀 모르셔도 상관 없습니다. 미분공식을 이용하면 밥그릇 모양의 그래프에서 특정 지점의 기울기값을 구할 수 있다 정도만 아시면 충분합니다. 설령 개발자나 개발자 지망생이라 할지라도 미분 기능은 인공지능 프로그래밍 도구에 기본적으로 갖추어져 있기 때문에 전혀 몰라도 인공지능 서비스를 만드는데 아무 지장이 없습니다.

 이러한 방법으로 cost가 0인 지점을 찾게 되면 w는 얼마가 되나요? 바로 우리가 기대했던 1에 수렴하게 됩니다.

 이렇게 'cost가 0인 지점을 컴퓨터가 찾아가는 행위'를 ‘기계가 학습한다’라고 표현하는 것이고, ‘학습이 끝났다’라는 말은 0에 가까운 cost 값에 도착했다는 것을 뜻합니다. 결국 ‘기계가 학습한다’라는 행위는 해결하려는 문제에 대해 우리가 기대하는 답을 잘 산출해내는 '가중치 설정값(w)을 기계가 자동으로 찾아가는 행위'인 것입니다. 더 단순하게 말하자면, 머신러닝이란 '컴퓨터가 반복적인 실험을 통해 문제 해결에 적합한 수식을 자동으로 찾는 행위'라 할 수 있겠습니다.


어려우셨나요? 최대한 쉽게 설명드렸습니다만 그래도 어려우셨다면 지금 세 페이지의 내용만 다시 한번 읽어 꼭 이해하고 넘어가시길 당부 드립니다.




머신러닝의 기초 원리에 대해 간단하게 말씀 드렸는데요, 사실 실제 현장에서 문제를 해결하려 하다보면 변수 즉, x가 하나인 경우는 거의 없습니다. x1, x2, x3... 많은 변수가 쓰이게 되죠. 이런 경우에는 위의 장표처럼 매트릭스 곱 형태의 수식을 쓰게 됩니다.




또 참/거짓, 1/0, 암에 걸렸는지 안걸렸는지, 스팸인지 정상메일인지와 같이 둘 중 하나를 선택하는 문제에서는 위의 장표와 같은 수식을 쓰게 됩니다. 이러한 방법을 Binary Classification이라 합니다.




또 선택지가 여러 개일 때에는 위와 같은 식을 사용합니다. 보시는 것처럼 선택지, 즉 클래스의 개수만큼의 식을 만들고, 이 식들을 한 세트로 묶어 어떤 선택지가 답인지를 각 식이 산출하는 값들로부터 추정하는 방식입니다. 이 방법은 Multi-label Classification이라고 부릅니다.  


머신러닝에서 사용하는 대표적인 기법 세가지를 대략 보여드린 건데요, 이 내용들까지 자세히 이해하시는 것은 좀더 많은 공부가 필요하고, 일단 여기에서는 대략 이렇다 정도만 알고 넘어가도록 하겠습니다.

중요한 것은, 복잡해보이지만 이 기법들도 모두 앞서 설명 들으신 것처럼 밥그릇 모양의 cost 함수를 갖는다는 것입니다. 그래서 경사타고 내려가기 알고리즘을 통해 학습을 진행합니다. 똑같은 원리로 작동한다는 것이죠.




3. 머신러닝을 통해 이미지 인식하기


컴퓨터로 동물 사진을 판별한다느니 꽃 사진을 구분한다느니 하는 얘기들을 많이 들으셨을텐데요, 

도대체 어떤 원리인지 궁금한 분들이 있으실 겁니다. 인공지능이 그림을 판독한다는 것이 무슨 의미일까요? 

정말 ①컴퓨터가 이미지의 내용을 이해한다는 뜻일까요? 아니면 ②이미지 파일의 데이터를 주어진 수식에 따라 처리하는 것일까요? 

답은 ②번입니다. 인공지능이라는 말이 혼선을 줍니다만, 지금의 인공지능 기술은 단지 앞서 설명드린 기계학습 기술이기 때문에 스스로 이해하고 판단할 수 있는 능력은 전혀 없습니다. 그저 주어진 데이터를 활용하여 적절한 가중치값들을 기계적으로 학습해낼 뿐이고, 학습된 수식을 사용하여 입력값에 대한 결과값을 충실히 출력해낼 뿐입니다.

그럼, 인공지능이 이미지를 어떻게 인식하는지 그 방법을 간단히 살펴보겠습니다.




이 장표의 그림들은 MNIST 데이터셋이라 불리는데요, 손글씨로 작성된 우편번호를 기계가 자동인식할 수 있도록 하기 위해 미국에서 만든 학습용 데이터셋입니다. MNIST 데이터셋은 이와 같은 손글씨 숫자 7만개로 구성되어 있습니다. 이 중 1만개는 테스트 데이터셋이고, 6만개가 실제로 학습에 쓰입니다.




이 숫자 이미지 파일 하나를 열어보면 실제로 이와 같이 구성되어 있습니다. 흑백이미지는 보통 각 화소별로 0~255단계의 진하기 정보만 들어있습니다. 이 그림은 보시는 것처럼 ‘5’자인데요, 가장자리는 모두 0으로 설정되어 있고 가운데의 글씨가 쓰인 픽셀들에만 진하기 정도에 따라 숫자정보가 들어있는 것을 확인하실 수 있습니다. 이 경우는 0~255 사이의 단계정보를 0~1 사이의 숫자로 환산하여 표현하고 있습니다.




그럼, 손글씨 숫자를 인식할 수 있도록 컴퓨터를 학습시켜, 소위 인공지능으로 만드는 방법을 보도록 하겠습니다. 학습용 데이터는 MNIST 데이터셋을 사용합니다. 

우선 앞서 설명드린 전통적인 머신러닝 기법 중 하나인 Multi-label Classification을 활용한 학습 방법을 보겠습니다. 위 그림에서 보시는 것처럼 MNIST 이미지는 가로세로 28×28, 즉 784개의 픽셀로 구성됩니다. Multi-label Classification에서는 각각의 픽셀을 모두 하나의 변수로 사용합니다. 

0번 픽셀은 x0, 1번 픽셀은 x1... 이런 식으로 마지막인 783번 픽셀은 x783으로 이름을 붙여 총 784개의 변수를 갖는 선형회귀식을 만듭니다. 그런데 지금 우리가 구분해내어야 하는 선택지, 즉 분류해야 하는 클래스는 몇 개인가요? 주어진 숫자가 0부터 9까지 10개의 숫자 중 어떤 것에 해당하는지 구분해내는 것이 목적이므로 클래스는 10개가 됩니다. 앞서 말씀드린 것처럼 Multi-label Classification에서는 클래스 개수만큼 식이 필요하므로, 장표에서 보시는 것처럼 y0부터 y9까지 총 10개의 식을 만들어 한 세트로 사용하게 됩니다. 이와 같은 가설식을 만들어 컴퓨터에게 제공하고 학습을 시작시키면 컴퓨터는 6만개의 데이터를 사용하여 이 가설식에 있는 w들을 학습시키게 되는거죠. 그렇다면 총 몇 개의 weight를 학습시키게 되는 걸까요? 네, 각 x변수에 모두 w가 붙어있고, 784개의 변수를 갖는 식이 10개이므로 총 7,840개가 사용됩니다. 이미지 인식을 위한 가장 간단한 기법인데도 이렇게 많은 weight가 사용됩니다. 이 weight들을 사람이 수기로 조사/연구하여 최적의 조합을 찾아내는 것은... 기계의 도움 없이는 불가능하다고 봐야 할 겁니다.




4. 딥러닝의 이해



지금까지 전통적인 기법에 의한 머신러닝에 대해 들으셨고, 이제 한단계 더 들어가보겠습니다. 뉴럴넷, 인공 신경망에 대한 이야기입니다.

과학 시간에 배우신 분들도 있겠지만, 장표를 보시면 익숙한 그림이 있죠? 사람의 신경세포인 뉴런입니다. 과학자들이 이 세포를 연구해보니, 신경세포로 전달되는 여러 개의 자극 값들의 합이 일정치를 넘어서면 다음 세포로 전달되고, 못미치면 그냥 소멸되는 방식으로 작동되고 있다고 합니다. 물론 이게 전부는 아니겠지만, 이와같은 기초적 작동방식 정도라면 기계로도 구현할 수 있지 않을까 라는 생각을 인공지능 연구자들이 하게 되었습니다. 뉴런의 바로 아래 그림을 보시면 앞에서 보신 것과 유사한 식이 나오는데요, 각각의 가중치를 갖는 여러 개의 자극(변수) 값을 합해 일정치 이상이 되면 출력을 활성화시키고 그렇지 못하면 비활성화시키는 단순한 식입니다. 실제로 이 수식을 기계로 만든 것이 오른쪽 그림의 기계들인데요, 이와 같은 기계를 이미 1950년대에 만들었습니다.




기계를 만들어 테스트해보니 잘 작동되었습니다. 예를 들어, 보시는 바와 같이 컴퓨터의 기초 연산인 OR연산, AND연산을 학습시켜 보았는데요, 그림의 파란색 점선과 같이 두 연산의 결과값들(1, 0)은 선형적으로 분리가 가능하기 때문에, 선형회귀식과 활성화 함수를 활용함으로써 이 연산들을 구현할 수 있었습니다. 선형회귀 형태의 가설식을 갖는 이 퍼셉트론이 학습을 진행하고, 그 결과 예를 들어 빨간 글씨로 표시된 값들로 w와 b가 학습되면 이 연산들이 작동됩니다.

입력과 출력을 갖는 이 연두색 박스를 퍼셉트론이라고 부르는데요, 사람의 신경세포에 비유하기도 합니다만 다소 지나친 비유인 것 같고, 인공지능의 단위 연산이라고 생각하시면 됩니다.




그런데 이 퍼셉트론이 장애물을 만나게 됩니다. 바로 XOR 연산이라는 것인데요, 이 연산은 보시는 바와 같이 입력값 x1, x2가 서로 다를 때 결과값이 1이 되는 연산이죠. 이 연산의 결과값들을 직선으로 분리해내려면 어떻게 해야할까요? 분리가 불가능하죠. 앞서 말씀드린 선형식을 사용하는 방법으로는 도저히 구현할 수 없습니다. 여기에서 인공지능 구현이 한동안 진도를 내지 못하다가 연구를 거듭한 끝에 해결책을 찾게 됩니다. 그림에서 보시는 것처럼 단을 늘리고 넓혀서 여러 개의 퍼셉트론을 연결하는 것입니다. 빨간 글씨로 표시된 예시 값들을 입력해보시면 알겠지만 이와 같이 입출력들이 연결되면 이 모듈은 XOR 연산으로 작동됩니다.




XOR 입장에서 기존의 기법은 마치 땅으로만 다닐 수 있게 해놓고, 구름을 따오길 기대했던 것과 같습니다. 그런데 새 기법은 데이터가 다닐 수 있는 길이 늘어나고 다양해진 것으로 볼 수 있습니다. 이 퍼셉트론들의 구성을 다시한번 잘 살펴볼까요? 하나일 때와 비교해 어떤 특징이 있나요? 입출력의 흐름이 wide해지고 deep해졌습니다. 입력 개수가 늘어나서 가로로 wide해지고, 입출력이 진행되는 단수가 늘어나서 세로로 deep해졌죠. 

이게 뭘까요? 

이게 바로 deep learning의 시작입니다.




같은 맥락으로, 블록 만들기에서 피스 한 개보다 열 개일 때가, 열 개보다 백 개일 때가 우리가 만들어볼 수 있는 것들이 훨씬 더 다양해지듯이, 단을 넓히고 늘릴수록 weight의 개수가 늘어나고, 컴퓨터가 만들어볼 수 있는 가설이 다양해지므로 결과에 최적화된 예측식이 나올 가능성도 더 높아집니다. Wide and deep 처리하는 것은 weight들을 세분화함으로써 가설의 유연성과 확장성을 높이고, 이를 통해 정확도 높은 예측모델이 나올 수 있는 ‘여건을 조성’하는 것이라 할 수 있습니다.




이와 같은 장점으로 인해 딥러닝은 학습능력이 뛰어나고, 어렵고 복잡한 문제해결에도 훌륭한 성능을 보여주고 있습니다. 그래서 유명해졌죠. 딥러닝은 근래의 컴퓨터 기술 발전, 전산 처리능력의 향상으로 인해 구현 가능해진 기술이며, 기존 기법과는 비교하기 어려울만큼 강력한 머신러닝 기법이라고 할 수 있습니다.

사실 위의 그림에서 보시는 것처럼 노드의 구성이 복잡해지는 단계로 들어서고 나면, 이후부터는 컴퓨터가 각 노드 안의 weight들을 어떤 값들로 채우는지, 그 값들이 어떤 의미를 갖고 어떤 특징을 갖는지 알기도 어렵고 이해하기도 어렵습니다. 이것은 컴퓨터 서비스 개발, 컴퓨터 프로그래밍의 방법이 기존의 ‘논리적 접근 방식에서 실험적 접근 방식으로 개념이 확장된다’는 것을 의미합니다. 무슨 말이냐면 여러분들도 아시는 것처럼 기존의 앱들, 소프트웨어들은 모두 개발자들에 의해 사전에 치밀하게 기획된 시나리오를 토대로, 프로세스 하나, 동작 하나까지도 논리적으로 만들어집니다. 코드 하나하나가 무엇 때문에 필요한지 명확한 이유를 갖고 있습니다. 그런데 딥러닝 모델에는 이 ‘치밀하고 정교한 이유’가 없습니다. 일단 대략적인 모델을 만들어 ‘한번 돌려보고’, 잘 돌아가면 채택하고 안되면 바꾼다는 개념이 모델 개발에 적용됩니다. 해결하려는 문제에 대해 사전 연구를 통해 최대한 적합한 초기 모델을 논리적으로 설계하기는 하지만, 그 이후에는 실험을 통해 결과를 확인하고, 결과가 잘 안나오면 약간 변형시킨다던지 아예 다른 형태의 모델을 적용한다던지 하게 되고, 결과가 잘 나오면 ‘이유를 잘 모르더라도’ 사용하게 되는 것입니다. 간단히 말해 반복적인 실험과 수정을 통해 우리에게 필요한 데이터 처리 모델을 만들게 된다는 것입니다. 이와 같은 식의 실험적 접근 개념은 소프트웨어 개발자, 컴퓨터 프로그래머들에겐 무척 낯선, 완전히 새로운 패러다임입니다.




5. 딥러닝의 응용 ① - CNN



이제부터는 딥러닝의 응용편입니다. 딥러닝 기법이 매우 우수한 성능을 보여주고는 있지만, 다양한 문제를 해결해야 하는 현장에서 만능인 것은 아닙니다. 각각의 문제에 적합하게 고도화된, 응용 모델들이 많이 필요한데요, 그러한 응용 모델들 중 대표적인 것을 두 개만 살펴보겠습니다.

먼저 CNN(Convolutional Neural Network)입니다. 여러분이 많이 들으신 ‘개와 고양이 사진을 구분하는 인공지능’, ‘꽃 이름을 맞추는 인공지능’들이 이 모델로 구현된 것입니다. 이 모델은 알파고를 구현한 주요 알고리즘 중 하나이기도 합니다.

위의 그림 왼쪽에 있는 두께가 있는 판은 하나의 이미지 시트입니다. 일반적으로 이미지 파일들은 색깔 구현을 위해 3원색으로 구성되기 때문에 세장의 시트로 구성되고 그래서 이 그림에서도 3의 두께를 갖는 판으로 표현되어 있는데, 일단 두께는 신경쓰지 맙시다. 어차피 같은 내용의 작업이 세장의 시트에 반복 적용될 뿐입니다.

 앞서 말씀드린 전통적인 선형회귀 기반의 다중분류 방법을 사용한 MNIST 예제에서는 이러한 이미지를 분석하기 위해 어떤 방법을 사용했었나요? 왼쪽 위 모서리부터 오른쪽 아래 끝까지 총 784개의 화소들을 하나하나 모두 개별적인 변수로 설정하고 이들에게 가중치를 부여한 후, 최적의 가중치 값을 찾아내도록 학습시키는 방법을 사용했습니다. 

그런데 CNN은 기법이 완전히 다릅니다. CNN에서는 필터가 사용됩니다. 이미지 시트의 가운데에 갈색으로 표현된 작은 박스가 필터입니다. 이 필터가 그림을 왼쪽 위 끝에서 오른쪽 아래 끝까지 스캔하면서 그림의 특성을 읽어냅니다. 따라서 CNN 모델의 정확도는 필터가 얼마나 정교하게 잘 만들어지느냐에 의해 결정됩니다. 필터가 읽어낸 정보값(feature map)들은 가로세로로 나열될 수 있으므로 또다시 하나의 시트 형태가 되는데, 이 시트에 대해서 그림 가운데에서 보시는 것처럼 4개의 픽셀을 하나로 묶어 그 중 가장 큰 값을 취하는 방법으로 정보를 압축하거나(pooling), 또다시 이 시트에 대해서도 필터를 사용하여 특성을 읽어내는 행위를 적용하게 됩니다.




이와 같은 절차를 여러번 거치다보면 어떻게 될까요? 위의 그림에서 보시는 것처럼 이미지의 특성 정보는 점점 압축될 것이고, 마지막 단계에 가서는 해당 이미지의 특성을 결론짓는 하나의 숫자값으로 떨어지게 될 것입니다. 물론 이것은 확률적인 추정치이죠.

자, 그럼 ‘나는 고양이 사진을 구분해내는 인공지능을 만들고 싶다’, ‘나는 곰 그림을 구분해내는 인공지능을 만들고 싶다’ 할 때, 앞 페이지의 그림(21쪽)에서 볼 때 학습되어야 하는 요소는 무엇일까요?

네, 바로 ‘필터’입니다. 회귀식인 XW+b 형식으로, 가로×세로 넓이와 깊이를 갖는 가중치 집합인 이 필터가 학습을 통해 최적의 가중치 값들을 찾아가게 됩니다. 현재의 필터가 스캐닝을 통해 결론 낸 값과 정답을 비교하면서 계속 가중치를 교정하여 그림의 특성을 제대로 인식할 수 있는 weight set을 구성하게 되는 것입니다. 이것을 시각적으로 보면, 곰 그림을 구분하는 인공지능은 학습이 진행될수록 둥근 귀 또는 둥근 코 또는 둥근 얼굴 모양과 같이 곰 그림의 특성을 지닌 필터들을 갖게 됩니다. 고양이 그림을 구분하고자 한다면 뾰족한 귀, 일자형의 눈동자 등의 특성을 가진 필터들이 만들어지겠죠. 이 필터들이 그림을 스캔하다가 해당 특성을 갖는 영역을 발견하면 이 그림이 고양이일 확률을 높게 설정하게 되는 것입니다.




앞서 말씀드린 것처럼 딥러닝 모델은 실험적으로 구성되고, 따라서 레이어들을 구성하는데 정답이 없습니다. 이렇게도 해보고 저렇게도 해본 후 최고의 예측성능을 보이는 모델을 채택하게 됩니다. 이 장표는 탈 것을 촬영한 사진들을 분석하여 그것이 승용차, 트럭, 비행기, 배, 말 중 어떤 것인지를 구분하는 인공지능을 구현한 예시인데요, 이 모델에서는 이미지의 특성을 뽑아내는 레이어(conv)를 두 번 사용한 후 한 번의 압축(pool)을 거치고, 이와 같은 과정을 세 번 반복하는 것으로 설계한 것을 보실 수 있습니다.




6. 딥러닝의 응용 ② - RNN



딥러닝의 대표적인 응용 모델 두 번째, RNN(Recurrent Neural Network)입니다. 이것은 ‘이전 데이터가 다음 데이터에 영향을 주는’ 특성을 갖는 데이터셋에 적합한 모델입니다.

은행의 고객 명단 데이터셋에 있는 10,000번째 고객과 10,001번 고객 간에 연관성이 있나요? 그럴 가능성은 거의 없습니다. 두 데이터는 서로 아무런 영향을 주지 않습니다. 그러나 일별 주식 변동 데이터의 경우, 오늘의 주식 시세는 어제의 시세로부터 출발하므로 서로 상관관계가 있습니다. 날씨 데이터도 어제의 날씨가 오늘의 날씨에 영향을 주는 경우가 대부분이므로 서로 연관성이 있습니다. 또 위의 그림에서 보시는 바와 같이, 글자가 연속되는 단어, 문장 데이터의 경우에도 앞뒤 데이터 간에 연관성이 있습니다. 예를 들어 ‘h,e,l’이 연속된 다음에는 ‘l’이 등장할 가능성이 크고, ‘h,e,l,l’ 다음에는 ‘o’가 나올 가능성이 크겠죠. 또 사용자가 입력창에 ‘동해물과’를 입력하면 다음에는 ‘백두산이’가 입력될 가능성이 큽니다. 이와 같이 앞뒤 데이터 간에 연관성이 있는 데이터셋에 사용되는 모델이 RNN인데, 위 그림의 기본식에서 보실 수 있는 것처럼 이제까지 보아온 식들에서는 없었던 새로운 요소가 등장합니다. 바로 ht인데요, state 값이라 불리는 이것이 이전 데이터의 상태값(ht-1)을 현재 상태값(ht)에 반영시키는 역할을 함으로써 앞뒤 데이터 간의 연관성을 학습 속성으로 활용할 수 있게 합니다.




RNN 또한 현재 매우 많은 분야에서 활용되고 있습니다. 대표적으로 위에 보시는 것처럼 검색어 창에 글자를 입력할 때 작동하는 자동완성 기능이나 스마트폰의 음성인식을 통한 문장입력 기능, 각종 언어 간 통번역, 기계가 사람과 채팅을 하는 챗봇, 영상의 자막 자동입력 기능 등이 있습니다. 그리고 뉴스를 통해 인공지능이 작곡을 한다, 글을 쓴다 하는, AI 아티스트에 대한 얘기도 들어보셨을텐데요, 이런 것들이 모두 RNN 기반의 인공지능 모델들입니다.




7. 기계학습 3대 분야



벌써 많이 달려오셨습니다. 이제 얼마 남지 않았습니다.

기계학습은 크게 3대 분야로 분류됩니다. ①지도학습, ②비지도학습, ③강화학습의 세 분야인데요, 

‘이것은 OO이다’라는 답을 갖고 있는(레이블이 붙어있는) 데이터셋을 컴퓨터에게 주고, 이 정답 데이터를 기반으로 학습하도록 하는 방식이 지도학습입니다. ‘이것은 고양이’라고 딱지를 붙인 사진을 수천장, 수만장 제공하여, 컴퓨터가 고양이 사진의 특성을 학습하도록 하는 방식이죠. 비지도학습은 이와는 달리 별도의 딱지가 없는 그냥 데이터로부터 컴퓨터가 스스로 학습하게 하는 개념입니다. 그리고 강화학습은 데이터 없이 시행착오를 통해 컴퓨터가 학습하는 개념인데 뒤에서 설명 드리겠습니다.

자, 그럼 지금까지 여러분이 설명 들으신 것은 이 세 분야 중 어떤 것에 해당될까요? 그렇습니다, 지도학습입니다. 모두 레이블을 가진 데이터로부터 학습되는 개념이었습니다.

비지도학습도 데이터로부터 이루어집니다. 당연히 비지도학습도 많은 데이터를 확보할수록 학습이 잘 이루어집니다. 다만 그 수많은 데이터에 사전에 레이블을 붙여주는 작업이 없을 뿐이죠. 이 분야는 이를테면 사람의 뇌처럼 스스로 사고하고 판단하는, 궁극의 인공지능 구현을 연구하시는 분들이 주로 다루는 분야입니다. 아직까지 상용화된 기술이 별로 없고, 여전히 연구 중인 분야라고 보시면 됩니다. 뇌를 재현한 기술이라고 볼 수는 없지만, 특성 상 비지도학습으로 분류되는 기법 중 대표적인 두 가지를 간단히 살펴보겠습니다.

먼저 클러스터링, 군집분석 알고리즘인 K-means입니다. K-means 알고리즘은 예를 들어 데이터 값들이 위의 그림 예시와 같이 그래프 상에 분포되어 있다고 할 때 이들을 자동으로 그룹화하기 위해 사용하는 기법입니다. 먼저 그래프 상에 그룹을 나누기 위한 임의의 중심점들을 몇 개 찍고, 각 데이터 입장에서 가장 가까운 점을 중심으로 그룹을 형성시킵니다. 각각의 중심점이 각각의 그룹을 형성하는데, 각 데이터들은 자신에게서 가장 가까운 중심점 그룹에 편입된다는 뜻입니다. 중심점을 세 개 찍었을 경우 그룹도 세 개가 만들어지겠죠. 이렇게 만들어진 각 그룹에 속한 데이터들의 평균값을 구하고 이 평균값을 다시 새로운 중심점으로 설정하면, 새 중심점을 기준으로 데이터 그룹들이 다시 만들어집니다. 이렇게 재그룹화된 데이터들로부터 또다시 평균값을 구하여 중심점을 새로 이동시키고, 이와 같은 과정을 계속 반복하면, 간단한 방법이지만 데이터셋이 갖는 고유의 군집 특성에 따라 중심이 차츰 이동하고, 자동으로 그룹화가 이루어지게 됩니다.




두 번째는 진짜 같은 가짜를 생성해내는 머신러닝 모델로 유명한 GAN(Generative Adversarial Network)입니다. GAN은 진짜와 유사한 가짜 데이터를 생성하는 생성자(generator)와, 진짜 데이터와 가짜 데이터를 판별하는 역할을 하는 감별자(discriminator)를 두어 서로 경쟁하도록 하는 개념인데요, 생성자는 감별자를 속이지 못한 데이터의 특성을 계속 학습하여 감별자가 맞추기 어렵게 계속 진화하고, 감별자 또한 생성자가 만든, 점점 구별이 어려워지는 가짜의 특성을 계속 학습함으로써 판별 능력을 향상시키게 됩니다. 결국 서로 경쟁하는 과정을 통해 생성자는 진짜와 가짜의 구분이 사실상 불가능한 수준의 산출물을 만들게 되고, 감별자는 맞추는 확률이 50%, 즉 찍는 거나 다름없는 수준이 되어버리면서 학습이 마무리됩니다. GAN은 저해상도 이미지를 고해상도로 개선하거나, 음성 복원, 게임 배경화면 생성, 예술창작활동 등 다양한 분야에서 쓰일 것으로 기대되는 기술입니다.




8. 강화학습



마지막으로 강화학습은 어떤 기법인지 살펴보겠습니다. 강화학습은 알파고 제로를 가능하게 한 머신러닝 기법으로도 유명합니다. 강화학습은 경험과 시행착오에 따른 보상체계를 기반으로 학습이 이루어지는 기술입니다. 말씀드린 것처럼 주어지는 학습 데이터 같은 것은 없고, ‘일단 그냥 부딪혀보면서 될 때까지 학습해봐’라는, 어찌보면 참 막무가내로 보이는 기법입니다.

동영상을 보시면 이해가 쉽겠습니다만, 말로 설명 드리자면, 위 그림의 예시는 강화학습의 유명한 예제인 ‘Frozen Lake’ 게임인데요, 이 사각형의 테이블은 얼음호수 표면을 의미합니다. 파란색 박스는 출발점, 녹색박스는 도착점이고, ‘H’ 표시된 갈색박스는 구멍입니다. 이 게임의 목표는 출발점에서 시작하여 도착점까지 구멍에 빠지지 않고 무사히 도착하는 것이죠. 일단 무턱대고 출발하면 당연히 아무런 사전정보가 없으니 계속 구멍에 빠지거나 뱅뱅 돌거나 하면서 좀처럼 목표점에 도착하지 못할 것입니다. 그렇게 계속 실패를 하다가 언젠가는 우연히 목표점에 도착하는 경우가 생기겠죠?




그럼 그때에서야 비로소 보상점수를 부여하는데, 보상은 녹색박스 바로 앞에서 녹색박스로 이동한 마지막 행위에 대해서 주어집니다(빨간색 1점). 그리고 다시 학습을 시작하는데 마찬가지로 계속 실패하다가 또 우연히 빨간 1점이 있는 박스로 들어서는 경우가 생기겠죠. 그럼 그 행위에 대해 또 상점이 부여됩니다(파란색 1점). 이와 같은 행위를 계속 반복하다 보면 어느덧 출발점에서 도착점까지 무사히 갈 수 있는 경로가 만들어지겠죠.

그런데 간단한 게임이므로 이런 막무가내식으로도 학습이 가능한 것이고, 복잡한 현실 문제에서는 이러한 방법만으로는 학습에 성공하기 어렵습니다. 그래서 실제 이 기법을 사용할 때에는 일정기간 죽지않고 살아만 있어도 보상을 준다던가, 매번 확인된 길만 가는 것이 아니라 일정비율로 안가본 길도 가도록 한다던가 하는 좀더 복잡한 보상체계와 학습체계를 적용합니다.

별 것 아닌 기법처럼 보이실 수도 있겠습니다만, 게임과 같이 제한된 조건을 가진 환경에서 막강한 성능을 보여주고 있는 기법입니다. 실제로 강화학습을 기반으로 학습한 알파고 제로가 지도학습으로 학습한 알파고 마스터를 압도하기도 했습니다. 강화학습은 이미 게임, 로보틱스, 자율주행자동차 개발 등에서 활발히 사용되고 있으며, 제조 공정의 효율화와 자동화, 금융 자산 운용의 최적화, 자연어 처리 등에서도 활용도를 높이고 있는 강력한 학습기법입니다.





9. 총괄 정리



자, 여기까지 읽어오셨으면 대략 이 질문에 대한 정답을 얻으셨겠지요?

네, 그렇습니다. 지금의 인공지능 기술은 사실 ‘지능’이라고 볼 수 없습니다. 특정기능을 잘 수행하도록 ‘훈련되는 기계’일 뿐입니다. 그 기능도 어찌 보면 기계적이고 단순한 기능에 국한됩니다. 다만 그 잘 수행되는 기능을 사람이 직접 구현한 게 아니고, 컴퓨터가 수많은 시행착오를 거치면서 잘 작동되는 설정값을 스스로 찾도록 했다 하여 인공지능이라고 부르고 있는 것입니다.




앞서 수행했던 손글씨 숫자 이미지 인식하기를 복잡한 딥러닝도 아닌 전통적인 머신러닝 기법으로 학습을 시킨 예제의 경우에서도 약 70억5천6백만건의 계산이 발생합니다. 사람은 도저히 할 수 없는 일이죠. 컴퓨터는 이런 일을 시켜도 지치지 않고 빠르게, 그리고 정확하게 수행합니다. 머신러닝은 컴퓨터, 기계의 속성을 잘 이해하고 그 장점을 잘 살려 활용성을 극대화하는 기술이라고 이해할 수 있습니다.




그런데 이것이 한가지 ‘큰’ 단점을 갖고 있습니다. 질문에 대한 결과값이 어떻게 나왔는지 설명을 할 수가 없다는 것입니다. 딥러닝의 경우 내부 노드의 구조가 매우 복잡하고 어마어마하게 많은 가중치 조건들이 사용되는데, 앞서 말씀드린 것처럼 이 노드 구조라는 것이 논리적 판단보다는 실험적으로 구성된 성격이 강하기 때문에, 나중에 학습이 끝나 최적의 가중치 설정값을 얻게 되어도 이 설정값들이 어떤 의미와 특징을 갖는지 사실상 해석할 수가 없다는 것입니다.

그런데 현실 속 대부분의 질문들은 답과 함께 설명도 요구한다는 것이 문제입니다. 실제로 정부가 가축전염병 발생 시 확산을 조기 차단하기 위해, 이미 전염되었지만 아직 잠복기라서 드러나지 않고 있는 농가들을 추정하는 일에 딥러닝 기술을 활용하고 있는데요, 아무리 예측을 잘해도 해당 농가에서 자신들이 전염되었다고 단정 짓는 근거를 요구했을 때 설명할 방법이 없어 곤혹을 치른 경험이 있습니다. 그래서 예측은 첨단 인공지능 기술로 하는데, 예측 결과에 대한 근거는 수작업으로 조사해야 하는 난처한 상황이 벌어지기도 했습니다.

그러나 우리가 답을 알고 찾아갈 때와 아무런 정보 없이 찾아갈 때의 비용 차이는 매우 크기 때문에 인공지능 기술 활용의 가치가 매우 크다는 것에는 이견의 여지가 없습니다. 경찰이 범인을 모르고 잡을 때와 알고 잡을 때의 효율성이나 비용 차이가 크다는 것은 굳이 설명이 필요 없겠죠.

어쨌든 현재의 인공지능 기술에는 이러한 단점이 있기 때문에 학계에서는 XAI(Explainable AI)라 하여 설명가능한 AI 기술을 연구하고 있기도 합니다.




AI를 크게는 Strong AI와 Weak AI로 구분하기도 합니다. Strong AI라 함은 인간과 같이 스스로 사고하고 심지어 자의식도 갖는, 그야말로 인간을 재현한, SF영화에 나오는 것과 같은 인공지능을 말하는 것이고, Weak AI라 함은 알파고, 통번역기, 음성비서, 자율주행차와 같이 특정 기능만 수행할 수 있는 현재의 AI를 말하는 것입니다. 가끔 사람의 외형을 한 로봇에 Siri 같은 음성비서 소프트웨어를 설치한 제품이 등장하여 마치 Strong AI인 양 행세를 하기도 하고, 어떤 미래학자는 2045년에 특이점이 와서 인간을 능가하는 인공지능이 나타날 것이라고 예언하기도 했는데요, 저는 개인적으로 그럴 가능성은 거의 없다고 생각합니다.

감성로봇과 말 잘하는 로봇과 운동 잘하는 로봇과 공부 잘하는 로봇과 일 잘하는 로봇을 합해 놓으면 인간 같이 될까요? 아니죠? 저도 그것이 전혀 인간 같을 거라고는 생각하지 않습니다.

인간은 아직 인간의 사고체계조차 규명하지 못했습니다. 인류는 아직 왜 같은 상황에서 어떤 사람은 화를 내고, 어떤 사람은 차분하고, 어떤 사람은 슬퍼하는지 원리를 알지 못합니다. 이것은 인공적으로 인격체를 만들려 해도 뭘 만들어야 하는지조차 아직 모른다는 것을 의미합니다. 백년이 걸릴지 이백년이 걸릴지, 아니 가능한지 아닌지도 모르는데 Strong AI의 등장에 대해 고민하는 것은 현명하지 않은 일이라고 생각합니다. 아직 이것은 학문‧연구의 영역에 있고, 그것도 ICT가 아닌 심리학‧철학의 영역에 있습니다.




자꾸 부정적인 말씀을 드리니까 인공지능 기술의 잠재력과 의의를 깎아내리려 하는 것 같이 보일 수도 있겠습니다만, 그런 뜻은 전혀 아닙니다. 현재 기술의 가능성 뿐만 아니라 한계도 명확히 알자는 것 뿐입니다.

사실 지금의 수준만으로도 기계학습‧인공지능 기술의 발전은 대단히 혁신적인 상황입니다. 현재의 AI 기술은 우리가 하는 일 중 단순 반복적이지만 일정 수준의 사고와 판단을 요구하는 일까지 대체해낼 수 있습니다. 우리가 하는 일 중 복잡하고 심오한, 고도의 사고를 요하는 직업이 얼마나 될까요? 의외로 대부분의 직업은 약간의 사고활동과 적지않은 단순노동으로 구성됩니다. 물품 판매, 금전 출납, 운전, 운동경기 판정, 통번역, 펀드매매, 뉴스 작성, 약 제조, 법률 검토, 질병 진단까지... 사실 그렇지 않은 직무를 찾기가 더 어렵습니다. 이것은 우리 업무의 꽤 많은 부분이 인공지능의 도움을 받을 수 있다는 것을 의미합니다. 인공지능은 사람이 자신의 직무에서 단순한 일은 기계에게 맡기고 좀더 창의적인 일에 집중할 수 있도록 도울 수 있습니다. 물론 일부 직무는 사람에서 AI로 아예 대체될 수도 있겠죠. 어쩌면 각각의 '기능' 측면에서 AI가 인간을 압도하는 일은 매우 빠르게 일어날 것 같습니다. 기능을 완전히 익힌 AI는 사람보다 안전하고 정확하게 자동차를 운전할 것이고, 산더미 같은 판례 문서를 순식간에 읽어 필요한 정보를 뽑아줄 것이며, 사람보다 낮은 오진률로 질환 여부를 판단해줄 것입니다. 어찌 보면 이것은 자동차가 사람보다 빠르게 달리는 것이 당연한 것처럼, 당연한 일일 수 있습니다. 다만 변화가 갑작스럽고 급격하게 이루어지면, 사회가 기술의 변화 속도를 따라잡지 못해 적지않은 혼란이 일어날 수도 있습니다. 많은 전문가들이 이것을 우려하고 있는 것이죠. 이런 흐름을 적시에 잘 읽어내고 충격을 미리 예측하여 혼란을 최소화하고 안정적으로 변화가 진행되도록 잘 관리하는 것이 정책당국자의 역할일 것입니다.



마지막으로 빼놓을 수 없는 얘기는 'AI는 기본적으로 데이터가 밥’이라는 점입니다. 데이터가 없으면 인공지능도 굶어 죽습니다. 국가적으로 지능정보산업을 활성화하기 위해서는 데이터 자원이 풍부해야 하고, 잘 유통될 수 있는 환경을 조성하는 것이 필수적입니다. 보호와 유통 사이에서 적정선을 잘 찾는 것 역시 정책당국이 해야할 중요한 역할입니다.


인공지능 기술, 어디에까지 쓰일 수 있을까요? 어쩌면 서지 못하는 자를 서게 하고, 보지 못하는 자를 보게 하고, 말하지 못하는 자를 말하게 하는, 모세의 기적과 같은 일들을 가능하게 하는 기술이 될지도 모르겠습니다. 필요한 건 ‘우리의 상상력’입니다.


이 글을 읽고, 한단계 더 깊은 공부를 하고싶은 분들은 인터넷에서 ‘모두를 위한 머신러닝/딥러닝 강의(김성훈, http://hunkim.github.io/ml/)’를 들으시길 강력히 권합니다.

감사합니다.








브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari