인공지능의 구성

우리는 인공지능을 어떻게 바라봐야 하는가(1-1)

열길 사람속은 알아도


제가 인공지능을 바라보는 관점에 대해 글을 쓰는 이유는 인공지능 기술이 가지는 잠재적인 가능성만큼 위험성을 가지기 때문입니다. 인공지능이 가지는 잠재적인 위험성은 이 기술이 구현하고자 하는 목표와 관계가 있는데요. 바로 인간의 사고과정을 구현한다는 점입니다.


인공지능이라는 기술은 데이터 전송이나 처리속도의 향상을 목표로하는 5G/6G나 양자컴퓨터, 가상환경을 구현하는게 목표인 VR/AR 기술과는 다르게 인간의 학습, 추론, 지각능력 등 뇌에서 담당하는 역할을 인공적인 구현을 목표로 합니다. 즉, 인간처럼 생각하는 컴퓨터를 만드는 것을 목표로 한다는 의미이죠. 바로 이 부분에서 인공지능의 잠재적 위험성을 예상할 수 있습니다. 우리가 잘 아는 속담에서 단어 하나를 바꿔보겠습니다.


"열길 물속은 알아도 한길 사람 속은 모른다."

"열길 물속은 알아도 한길 인공지능 속은 모른다?"


robot_도전지향.jpg AI! 너는 무슨 생각을 하고 있니? (from pixabay)


인공지능이 지능을 갖느냐? 사람과 같은 생각을 할 수 있는 것이 맞느냐? 라는 논쟁을 떠나서 기술을 활용하는데 있어서 예측 불가능한 영역이 존재한다는 것은 사용자에게 굉장히 큰 리스크 입니다. 인공지능이 적용된 자율주행차를 타고 있는데 전방에 장애물이 나타났을 때 멈출지 멈추지 않을지 예측이 불가능하다면 그 자율주행차는 아무도 타려고 하지 않으려고 하겠죠. 그만큼 사람이 "신뢰할 수 있는" 인공지능을 구현하는 것이 인공지능 학계에서 중요하게 다루어지고 있습니다.


※ 같이 읽으면 좋은 책: 어떻게 인간과 공존하는 인공지능을 만들 것인가 - 스튜어트 러셀

https://blog.naver.com/madjohan/222674746288


그렇다면 인공지능이 잠재적 위험 가능성을 가지는 기술적인 이유는 무엇일까요? 그 이유를 알아보기 위해 오늘은 인공지능이 구현되는 방식에 대해 이야기 해보겠습니다.



인공지능의 구성


현 시점에서 인공지능의 이름을 붙여서 서비스되고 있는 대부분의 시스템은 기계학습(machine learning)방식으로 구현됩니다. 기계학습은 특정한 조건에 부합하는 최적의 수학식을 데이터로부터 찾아내는 방법론입니다. 기계학습 방법론을 기준으로 두었을 때 인공지능을 구현하기 위한 조건은 아래 3가지와 같습니다.


(1) 문제: 인공지능 기술을 적용하여 주어진 데이터로부터 예측(prediction) 하려고 하는 대상

(2) 학습데이터: 풀고자 하는 문제와 관련하여 축적된 데이터

(3) 학습방법: 데이터로부터 대상을 예측하기 위한 수학적 알고리즘을 의미



인공지능의 구성 - (1) 문제(Problem)


문제(Problem)는 우리 생활 속에 적용된 인공지능 시스템을 생각해보면 쉽게 이해할 수 있습니다. 제조공정에서 불순물을 자동으로 분류하는 기술, 체온 측정 기기의 안면인식 기술, 유투브, 쿠팡, 네이버 등의 사용자 맞춤형 추천기술, Google translator, 네이버 파파고의 자동 번역, 사람을 대신하는 AI 광고모델까지 정말 많은 인공지능 시스템이 우리 생활에 적용되어 있는데요. 예로 든 인공지능 시스템을 문제의 관점에서 해석하면 다음과 같습니다.


제조공정에서 불순물을 자동으로 분류하는 기술
(주어진 데이터) 컨베이어벨트 영상

(예측하고자 대상) 불순물 사진


체온 측정 기기의 안면인식 기술
(주어진 데이터) 카메라 영상

(예측하고자 하는 대상) 사람 얼굴 및 온도


유투브, 쿠팡, 네이버 등의 사용자 맞춤형 추천기술

(주어진 데이터) 사용자 선택항목

(예측하고자 하는 대상) 사용자가 좋아할 만한 다음 후보


Google translator, 네이버 파파고의 자동 번역

(주어진 데이터) 단어 또는 문장

(예측하고자 하는 대상) 번역된 단어 또는 문장


사람을 대신하는 AI 광고모델

(주어진 데이터) 광고화면 배경

(예측하고자 하는 대상) 화면 내에서의 사람의 동작


AI 모델 로지_도전지향.jpg
파파고_도전지향.png
faceRecognition_ 도전지향.jpg
인공지능 시스템의 다양한 사례 (from 지디넷코리아, 팍스경제TV, pixabay)


문제는 예측하고자 하는 대상에 따라서 분류하기(classification), 찾기(detection), 추천하기(recommendation), 생산하기(generation) 등으로 분류됩니다. 그리고 우리의 생활에 인공지능 기술을 적용하는 것은 바로 이 문제를 정의하는 것부터 시작됩니다. '문제를 정의한다.'는 말은 '사람이 데이터를 보고 예측하는 것을 그대로 표현하는 것'이라고 정의할 수 있습니다. 위에서 예로 들었던 생활 속 인공지능 시스템을 떠올려 보시면 좋을 것 같습니다.


그런데 이 문제의 정의에서 많은 사람들이 오해하고 있는 사실이 하나 있습니다. 바로, 인공지능을 적용하기 위한 문제의 정의는 인공지능 전문가만이 할 수 있다는 것인데요. 이렇게 생각하시는 분들이 저 같은 인공지능 전공자에게 주로 하는 질문이 있습니다.


"인공지능을 적용하기에 적합한 분야가 뭔가요?"

"제가 이런 일을 하고 있고, 인공지능 도입을 검토하고 있는데 어떻게 생각하시나요?"


이런 질문을 받으면 아주 원칙적인 대답 밖에는 드리지 못합니다. 아래와 같이 말이죠.


1. 문제의 정의가 명확해야 합니다.

2. 문제를 잘 표현하는 데이터가 많이 확보되어야 합니다.

3. 문제와 데이터에 적합한 인공지능 학습 알고리즘이 식별 되어야 합니다.


저는 인공지능 알고리즘을 공부한 사람이고 그중에서도 'Data Association Uncertainty'를 중점적으로 해석한 사람입니다. 제조공정에서 나오는 불순물의 특징을 알지 못하고, 한글과 영어의 문법과 구성의 차이를 알지 못하며, 사람 얼굴 영상에서 체온을 측정해내는 기술은 더더욱 알지 못합니다. 다시 말해 저는 특정한 데이터에 인공지능을 적용하는 연구를 한 것이 아니라는 뜻이죠.


인공지능 기술은 범용성을 가지고 있습니다. 세상에 존재하는 예측에 관한 어떤 문제에도 적용이 가능하다는 의미입니다. 데이터만 모아져 있다면 점쟁이가 될 수도 있고 관상가가 될 수도 있습니다. 하지만 인공지능 기술에 통달한 사람이라 할지라도 본인이 알지 못하는 비전문분야의 '문제'를 정의할 수는 없습니다. 정의 할 수 있다고 해도 그렇게 학습된 인공지능은 '비전문가' 수준의 성능을 보일 것입니다. 왜냐하면 인공지능을 학습하는 방법은 정확히 알고 있지만 문제를 푸는 방법은 모르기 때문입니다. (물론 여기서 말하는 인공지능은 그림을 보고 개와 고양이를 맞추는 수준의 인공지능을 이야기 하는 것은 아닙니다.)


따라서 실생활에 활용 가능한 수준의 인공지능 모델을 학습 시키기 위해서는 반드시 Domain Knowledge 에 기반하여 문제가 정의되어야 하며, 그 다음 데이터 관점에서 인공지능 적용 가능성을 판단할 필요가 있습니다. Domain 전문가에 의해 문제가 명확하게 정의되었다고 해도 충분한 양의 데이터 확보가 제한되거나, 문제의 복잡도가 낮을 수 있고 반대로 데이터 전문가에 의해 인공지능 적용이 적합한 데이터가 식별 되었다고 해도 그 데이터가 domain의 문제 해결과 전혀 관계 없을 수 있기 때문입니다.


약간의 사족을 덧붙이자면, 위에 서술한 인공지능의 특성과 전 산업 분야에 인공지능 적용이 확산되는 추세를 고려했을 때 모든 사람이 코딩을 배울 필요는 없지만 인공지능 기술의 이론에 대해서는 을 배울 필요는 있다고 생각합니다.



인공지능의 구성 - (2) 데이터(Data)


기계학습 관점에서 인공지능을 이야기 할 때 데이터는 필수 불가결한 요소입니다. 어린아이에게 고양이 생김새를 알려주려면 많은 고양이를 만나게 해주거나 사진을 많이 보여주는게 가장 좋은 방법인 것처럼 인공지능 학습을 위해서는 일단 데이터를 많이 모아야 합니다. 하지만 데이터를 많이 모아야 한다는 조건에는 숨어있는 두 가지 전제 조건이 있습니다.


첫 번째 전제 조건은 잘 분포되어있는 데이터입니다. 이때 잘 분포 되어있는 정도의 판단은 우리가 풀고자 하는 문제를 어느정도로 잘 표현했느냐에 달려있습니다.


단순히 양만 많은 데이터? No

문제를 잘 표현하는 데이터? Yes


문제를 잘 표현했다? 라는 표현 자체가 익숙하지 않으실 것이라고 생각합니다. 좀 더 풀어서 설명해보겠습니다. 대부분의 인공지능 모델이 확률에 기반을 두고 있습니다. 쉽게 말해서 주어진 데이터에 가장 확률 높은 대상을 예측해서 제공하는 방식입니다. 이 확률은 인공지능 학습에 사용되었던 데이터 분포로부터 계산되는데, 만약 아무리 수십억개의 데이터를 모았어도 데이터가 한쪽으로 쏠려있다면 항상 쏠려있는 쪽으로만 예측할 수 밖에 없을 것입니다. 단순히 양만 많은 데이터와 문제를 잘 표현하는 데이터를 비교해보겠습니다.


data imbalance_도전지향.png 데이터가 한쪽으로 쏠려있는 문제(Data Imbalance) (from: Kaggle.com)


위의 그림에서 original dataset이라고 쓰여진 쪽의 데이터를 가지고 AI를 학습한 후에 실제로 사용한다면 어떨까요? 아마도 AI는 데이터가 많은 쪽의 사례에 대해서만 예측할 것이며 학습한 데이터를 고민하지 않은채 AI의 판단을 그대로 받아들인다면 편향의 문제가 발생할 것입니다. 이런 문제를 기계학습에서는 데이터 불균형(data imbalace)라고 하며 우리가 올바른 인공지능 사용을 왜 고민해야 하는지 알려주는 간단한 예시라고 할 수 있습니다.


※ 같이 읽으면 좋은 글: Data imbalace 문제와 해결방법에 대한 설명 글

https://hwi-doc.tistory.com/entry/%EC%96%B8%EB%8D%94-%EC%83%98%ED%94%8C%EB%A7%81Undersampling%EA%B3%BC-%EC%98%A4%EB%B2%84-%EC%83%98%ED%94%8C%EB%A7%81Oversampling


두 번째 전제 조건은 정보가 많은 데이터입니다. 인공지능은 직관적으로 혹은 사람의 손으로 찾을 수 없는 통계적인 유사함을 컴퓨터가 대신 찾아주는 것입니다. 딥러닝 초기에 ImageNet이 각광을 받았던 것은 이미지가 가지는 정보가 다른 데이터들보다 많기 때문에 사람의 손으로 통계적인 유사함을 찾기 힘들었고 딥러닝이라는 알고리즘이 사람이 찾을 수 없는 유사함을 찾아내어 사람 능력을 뛰어넘는 성능을 보였기 때문입니다. 정보가 많은 데이터와 그렇지 않은 데이터를 비교해보겠습니다.



trajectory_도전지향.png
RGB image_도전지향.jpg
비행기의 항적데이터와 일반적인 고양이 사진데이터의 비교(from research gate, stack overflow)


위의 그림은 비행기의 궤적을 표현한 항적데이터(trajectory)와 일반적인 고양이 사진을 보여줍니다. 항적데이터로는 비행기의 다음경로를 예측하는 문제를 주로 풀고, 고양이 사진으로는 고양이인지 아닌지 분류하는 문제를 푸는 것이 일반적입니다. 단순하게 생각하면 비행기 경로를 예측하는 문제가 인공지능에 더 적합하게 보일 수도 있겠지만 데이터 측면에서는 고양이를 분류하는 문제가 더 적합합니다. 왜냐하면 각각의 데이터가 갖는 정보의 양에 큰 차이를 보이기 때문입니다.


항적데이터: 위도, 경도, 고도, 속도(4차원)

고양이 사진데이터: 가로 28 세로 28 채널 3(2,352차원)


문제가 그럴듯해 보인다고 모두 인공지능을 적용할 수는 없는 부분이 있습니다. 사람 눈에 보이지 않는 통계적 유사함을 인공지능을 통해 찾기 위해서는 고려할 수 있는 정보의 양이 충분해야 합니다. 단순히 평균으로 구할 수 있는 문제라면 인공지능이라고 부를 수는 없겠죠.


정리해보면 좋은 데이터의 요건은 일단 많은 양의 데이터가 확보되어야 하고, 두 번째 주어진 문제를 충분히 표현할 수 있도록 데이터가 잘 분포되어있어야 하며, 마지막으로 개별 데이터들이 가지고 있는 정보가 충분히 많아야 한다 정도로 요약할 수 있습니다.



인공지능의 구성 - (3) 학습방법(Learning Algorithm)


Domain knowledge를 기반으로 문제를 정의하고 충분한 데이터를 확보했다면 이제 인공지능 모델을 학습시키는 일만 남아있습니다. 인공지능 모델을 학습시키는 학습방법(Learning algorithm)에 대한 고민은 인공지능 전문가의 몫입니다. 풀고자 하는 문제와 수집된 데이터의 특성에 맞는 학습방법은 많이 나와있고, 많은 연구자들이 지금도 새로운 방법을 만들어내고 있습니다. 그리고 프로그래밍도 어렵지 않다. 그들에게 필요한건 시간, 커피, 컴퓨터 그리고 구글신 오직 이 3가지이다.


지도학습, 비지도학습, 강화학습, 반지도학습, 약지도학습, 연합학습, 전이학습


학습방법은 위와같이 데이터를 어떻게 다루느냐로 분류됩니다. 학습방법별 자세한 내용은 다음에 이어지는 글에서 세부적으로 다루도록 하겠습니다. 한가지 주의하셔야 할 부분은 인공지능의 부흥기를 이끈 딥러닝은 위와같은 학습방법의 한 분류가 아닌 학습방법을 구현하기 위한 수학적인 알고리즘이며, 인공신경망의 발전된 형태라는 것입니다.


딥러닝_도전지향.png 딥러닝은 학습방법을 구현하기 위한 수학적 모델 중 하나이다. (from pixabay)


학습방법을 구현하기 위해 데이터가 입력되면 문제를 푸는 수학식인 인공지능 모델과 수학식의 변수를 문제를 푸는데 가장 알맞는 숫자를 찾는 최적화 기법이 필요합니다. 인공지능에 관심이 있으시다면 한번쯤 들어보셨을 디시전트리, 서포트벡터머신, 인공신경망 등이 수학모델에 해당하고 뉴턴기법, 유전알고리즘 등이 최적화기법에 해당합니다.


수학모델은 아래와 같이 생겼습니다. 인공지능 구성의 두 번째 조건인 데이터에 차원에 따라 x가 늘어나게 되는 구조입니다.


y = ax + b


여기서 a, b가 변수 x가 데이터 y가 결과값입니다. 인공지능 학습을 통해 우리가 구하고 싶은 값은 a와 b입니다. 그런데 수학적인 이론을 다 떠나서 하나의 x와 하나의 y가 주어진 상황이라면 이를 만족하는 수많은 a와 b가 나올 것 입니다. 더군다나 우리의 목적은 현재 보유한 데이터(학습데이터)를 만족시키는 a, b가 아닌 우리가 알지 못하는 데이터(실제 데이터)를 만족시키는 a, b를 찾는 것입니다.


따라서 정답을 찾는 방법이 아닌, 주어진 조건을 가장 잘 만족하는 답을 찾는 것이고 인공지능 구성의 첫 번째 조건인 문제는 다음과 같이 목적함수로 표현됩니다.


minimize y - y'


여기서 y는 실제 정답이고, y'는 인공지능 모델이 예측한 답입니다.


정리하면 인공지능 학습방법은 인공지능 엔지니어에 의해 개발되고 적용되며 사용자들이 제기한 문제와 데이터를 바탕으로 적정한 값을 예측하는 인공지능 모델을 학습하는데 사용됩니다. 단순하게 생각해보면 인공지능은 복잡한 계산없이 적정한 값을 알아서 찾아주는 능력을 가진 비서가 될 수 있을 것으로 보여집니다. 그런데 그 적정한 값은 어떤 식으로 도출되는 걸까요? 인공지능은 무엇을 이해하고 예측을 했을까요?


인공지능이 한 일은 그저 실제 정답과의 오차를 최소화하는 숫자를 찾은 일을 한 것일 뿐입니다. 고양이를 이해한 것도, 비행기의 특성을 이해한 것도 아니지요. 인공지능이 인간의 학습방법을 흉내내긴 했지만, 인간의 사고의 과정을 그대로 구현했다고 보기에는 아직 무리가 있는 부분입니다. 어찌보면 이렇듯 수학적인 계산만을 하는 인공지능의 순수성이 우리가 인공지능 사용에 경각심을 가져야 하는 이유라고도 할 수 있겠습니다.


이어지는 글에서는 학습방법론에 대해서 구체적으로 다루어보겠습니다.


※ 우리는 인공지능을 어떻게 바라봐야 하는가 - 연재글 바로가기

1. 프롤로그: https://brunch.co.kr/@multipersonist/6

keyword
작가의 이전글[Tech] sharing-as-a-service