머신러닝

스스로 학습하는 기술

by 이연곤

컴퓨터가 사람처럼 스스로 생각하고 배우는 세상을 상상해 보신 적 있나요?


컴퓨터한테 "이건 이렇게 하고, 저건 저렇게 해" 라고 하나하나 다 가르쳐 주지 않아도

컴퓨터가 스스로 데이터 속에서 해답을 찾아낼 수 있다면 어떨까요?


바로 이 지점에서 기존의 프로그래밍과는 완전히 다른 혁신적인 변화가 시작된 겁니다.




자, 지금부터 다섯 가지 질문을 따라가 볼 겁니다.

첫째, 머신러닝이 도대체 무엇인지

둘째, 기계가 실제로 배우는 방법은 어떤 것인지

셋째, 배우는 스타일이 있다는데 그것이 무엇인지

넷째, 데이터는 왜 양보다 질이 중요한지

다섯째, 이 모든 것들이 어떻게 하나의 사이클로 돌아가는지

까지 살펴 보겠습니다. 준비되셨나요?




도대체 머신러닝이 뭘까요?


기계가 '스스로 학습한다'는 문장을 많이 읽어보거나 들어보셨을 텐데, 이것이 우리가 알던 '코딩'과는 근본적으로 뭐가 다른 걸까요?


그 차이부터 딱 짚고 넘어가 볼게요.



[일일AI][4] image_비교표_전통.png
[일일AI][4] image_비교표_ML.png


자, 여기 한번 보시죠. 왼쪽에 있는 것은 우리가 알던 전통적인 프로그래밍입니다. 데이터와 규칙을 딱 넣어 주면 컴퓨터가 정답을 뱉어냅니다.


그런데 머신러닝은 완전히 반대예요. 엄청나게 많은 데이터와 그에 대한 정답을 통째로 던져 주는 거예요.

그럼 컴퓨터가 그걸 보고 "아하, 이런 데이터일 땐 이런 정답이 나오는구나" 하면서 그 안에 숨어 있는 규칙을 스스로 찾아내는 거죠.

이렇게 컴퓨터가 찾아낸 규칙들의 집합, 이것을 '모델'이라고 부릅니다.




책을 읽는 대신, 컴퓨터는 데이터를 읽으며 세상을 배운다



이 비유가 와닿으시나요? 생각해 보세요. 우리가 책을 읽으면서 지식을 쌓고 세상을 이해하잖아요.

컴퓨터도 똑같은 거예요. 다만 책 대신에 어마어마한 양의 데이터를 읽는 거죠.


그 데이터를 읽으면서 세상이 돌아가는 패턴, 그 원리를 스스로 깨우쳐 나가는 겁니다!




기계가 대체 어떻게 배우는 걸까요?


그 과정이 궁금하시죠?


이는 컴퓨터가 마치 사건을 수사하는 과정에 비유해 볼 수 있어요. 우리 같이 그 수사 과정을 따라가 보죠.


여기에 아주 클래식한 예시가 있습니다. 바로 강아지랑 고양이 사진을 구분하는 문제예요.


1단계. 일단 증거, 아니 데이터를 모아야겠죠? 수천 수만 장의 강아지 고양이 사진을 쫙 모읍니다.

2단계. 컴퓨터가 이 사진들을 훑으면서 단서를 찾기 시작해요. 예를 들면 "음, 귀 모양이 뾰족하네, 털이 복슬복슬하네" 같은 핵심 특징들을 잡아내는 거죠.

3단계. 이 단서들을 조합해서 패턴을 발견하는 겁니다. "아하, 귀가 뾰족하고 수염이 길면 보통 고양이군" 이런 식으로요.

4단계. 이렇게 찾아낸 모든 패턴들을 싹 다 모아서 하나의 완성된 추리 시스템을 만드는 거예요. 이게 바로 예측 엔진, 즉 모델이 되는 겁니다.


근데, 이렇게 모델 하나 만들었다고 해서 수사 종결 하고 끝나는게 절대 아니에요.

모델이 과연 한 번도 본 적 없는 새로운 사진을 보고도 잘 맞추는지, 평가를 해 봐야 합니다.


만약에 성능이 별로다, 그럼 다시 돌아가서 데이터를 더 모으거나 다른 특징을 찾아보라고 시키면서 모델을 개선해야 해요.


이와 같이 '학습 → 평가 → 개선' 사이클을 계속 돌리는 거죠.

이렇게 돌면 돌수록 모델은 점점 더 유능해지는 겁니다.




배우는 데도 스타일이 있다?!


세 번째 이야기로 넘어가 볼게요. 우리가 '머신러닝'이라고 그냥 뭉뚱 그려서 말하지만, 사실 배우는 방식이 다 똑같지는 않아요.

이게 딱 뭐랑 같냐면, 학생들마다 공부하는 스타일이 다 다른 거랑 비슷해요.


기계도 문제의 종류에 따라서 크게 세 가지 스타일로 학습을 합니다.

바로 '지도 학습', '비지도 학습', 그리고 '강화 학습' 입니다.


이 세 가지가 어떻게 다른지 살펴봅시다.

지도학습은 말 그대로 선생님이 있는 거예요. 정답지가 딱 있는 문제집으로 공부하는 거죠.

반면에 비지도학습은 완전 독학이에요. 아무런 정답 없이 그냥 데이터만 잔뜩 던져 주고 "네가 여기서 뭔가 의미 있는 걸 찾아봐" 하는 약간 탐정 같은 느낌이죠.

강화학습은 당근과 채찍이에요. 잘하면 상을 주고 못하면 벌을 주면서 학습시키는 거죠. 이는 마치 아기가 시행 착오를 겪으면서 걷는 법을 배우는 것과 아주 비슷합니다.


자, 그럼 하나씩 좀 더 자세히 들여다 볼까요?


먼저 지도학습입니다.

우리가 아까 봤던 '강아지 고양이 분류 문제', 바로 그게 대표적인 지도학습이에요. 왜냐하면 모든 사진 데이터에 "이건 강아지야, 이건 고양이야" 하고 정답, 라벨이 붙어 있잖아요. 컴퓨터는 이 정답지를 계속 보면서 배우니까 가장 이해하기 쉽고, 또 가장 많이 쓰이는 방식이기도 합니다.

여러분, 이메일함에 있는 스팸필터 있죠? 그것도 바로 이 지도학습으로 만들어진 거예요.



이번엔 비지도학습입니다.

이건 정답지가 아예 없어요. 기계는 정말 아무런 힌트 없이 그냥 데이터 덩어리만 보고 그 안에 숨어 있는 어떤 패턴이나 구조를 스스로 발견해야 합니다.

예를 들면 이런 거예요. 수많은 고객들의 구매 데이터를 주고 "알아서 비슷한 사람들끼리 그룹으로 묶어봐" 하고 시키는 거죠. 이렇게 하다 보면 진짜 신기하게도 "어, 이런 물건을 사는 사람들은 보통 저런 것도 같이 사는구나" 하는 우리가 미쳐 몰랐던 인사이트를 발견하게 되기도 합니다.



마지막으로 강화학습입니다.

이것은 지도학습, 비지도학습과는 결이 완전히 달라요. 마치 게임 캐릭터를 키우는 것과 비슷하다고 생각하시면 되는데, 에이전트라는 녀석이 어떤 행동을 했을 때 그게 좋은 결과로 이어지면 보상으로 점수를 주고 나쁜 결과가 나오면 벌점을 주는 겁니다.

보상과 벌점, 이것을 수백만 수천만 번 반복하다 보면 에이전트가 스스로 "아, 이렇게 해야 점수를 많이 받는구나" 하고 최적의 전략을 터득해 나가는 겁니다.

세상을 놀라게 했던 알파고나 끊임없이 판단을 내려야 하는 자율주행차가 바로 이 강화학습 기술의 대표적인 예라고 할 수 있습니다.




데이터는 양 보다 질이 더 중요


그럼 이제 이런 생각이 드실 거예요? - 모델을 똑똑하게 만들려면 데이터를 그냥 무조건 많이 넣으면 되는가?


과연 그럴까요?



정답은 '절대 아니다' 입니다.


이쪽 분야에 아주 유명한 격언이 있어요.

Garbage In, Garbage Out

쓰레기를 넣으면 쓰레기가 나온다

는 말이죠.


데이터는 양보다 질이 100배, 1000배는 더 중요하다는 뜻입니다.


우리가 모델을 만드는 궁극적인 목표는 바로 일반화라는 걸 잘하게 하기 위해서입니다.

일반화란, 배운 걸 응용해서 난생 처음 보는 문제도 잘 풀어내는 능력을 말해요.


근데 데이터의 질이 나쁘면 아주 심각한 부작용이 생깁니다. 바로 '과적합'이라는 건데요.

모델이 학습 데이터를 너무 열심히 공부한 나머지 문제와 정답을 통째로 외워 버리는 거예요.

심지어 데이터에 섞여 있는 잡음까지 달달 외워 버리는 거죠.


이러면 어떻게 될까요?


네, 연습 문제는 100점 맞는데 막상 처음 보는 실전 시험에서는 완전 죽을 쓰는 그런 상황이 벌어지는 겁니다.



그래서 데이터를 다룰 땐 항상 다음 질문을 스스로에게 던져 봐야 해요.

첫째, 이 데이터가 내가 풀려는 문제와 진짜 관련이 있는 데이터인가?

둘째, 데이터의 오류나 이상한 값은 없는가?

마지막으로, 정말 중요한 것, 이 데이터가 현실 세계를 "골고루 편향 없이 잘 반영하고 있는가" 하는 점입니다. 예를 들어서 흰색 강아지 사진만 잔뜩 주고 학습시키면 어떻게 될까요? 이 모델은 나중에 까만 강아지 사진을 보고는 강아지가 아니라고 엉뚱한 판단을 내리게 될 겁니다.


결국 모든 건 좋은 데이터에서 시작된다는 거 꼭 기억하셔야 합니다!




하나의 사이클


지금까지 우리가 얘기했던 개념들을 하나로 쫙 모아볼 시간이에요. 하나의 머신러닝 프로젝트가

맨 처음 데이터 수집부터 시작해서

실제로 우리 생활에 쓰이기까지 어떤 전체 과정을 거치는지

그 큰 그림을 그려 보겠습니다.



보통 하나의 프로젝트는 다섯 단계를 순환하는 구조로 이루어져 있어요.

첫 번째, 데이터를 모으고

두 번째, 이 데이터를 쓸 수 있게끔 깨끗하게 다듬고 정리합니다.

세 번째, 준비된 데이터로 모델을 학습시키죠.

네 번째, 이 모델이 얼마나 잘하는지 성능을 아주 꼼꼼하게 평가하고요.

다섯 번째, 평가를 통과한 모델을 드디어 실제 문제에 적용해서 활용하는 겁니다.


그러나, 단순하게 한 번에 쭉 가는 것은 아닙니다!

4단계 평가를 해 봤는데 별로다 싶으면, 다시 앞단계로 되돌아가서 개선합니다.

이후 계속 돌고 도는 순환 과정인 거죠.




이 다섯 단계의 순환 과정이 복잡해 보일 수 있지만 사실, 여러분은 이미 매일매일 이 기술의 결과물을 경험하고 계세요.

아침에 일어나서 스마트폰 얼굴 인식으로 잠금 해제할 때,

인터넷 쇼핑물 들어갔는데 "어? 내 마음을 어떻게 알았지?" 싶은 상품을 딱 추천해 줄 때,

내비게이션이 가장 빠른 길을 알려 줄 때

이 모든 편리함의 그 중심에는 머신러닝 사이클이 지금, 이 순간에도 쉴새 없이 돌아가고 있는 거랍니다.






여러분이 즐겨 쓰시는 음악 앱에 나만을 위한 추천 플레이리스트가 매번 뜨잖아요. 과연 그 플레이리스트는

우리가 오늘 배운 세 가지 학습 중에 어떤 걸로 만들어질까요?


지도학습일까요? 비지도학습일까요?

아니면,

여러분이 노래를 스킵하거나 좋아요를 누르는 행동 하나하나를 하나의 벌점이나 보상 신호로 삼는 강화학습일 수도 있겠죠.


이렇게,

기술이 어떻게 작동하는지 그 원리를 알고 나면,

우리가 매일 마주하는 세상이 조금은 더 새롭고 흥리롭게 보이지 않나요? :)



이전 03화인공지능, 머신러닝, 딥러닝 무엇이 다른가요?