[딥러닝 알아듣기] 1.1. 머신 러닝과 딥 러닝 개요

“딥러닝 알아듣기” 시리즈는 딥러닝의 기초 지식을 저만의 방식으로 쉽게 풀어내는 시리즈입니다. 이번 챕터에서는 머신 러닝과 딥 러닝이 무엇인지 간략히 알아봅니다.


1.1.1. 머신 러닝과 딥 러닝

필자는 음악 스트리밍 서비스로 유튜브 뮤직을 사용한다. 유튜브 뮤직이 가지는 가장 큰 장점 두 가지를 꼽자면, 나라와 장르의 구분이 없는 다양한 음악을 서비스한다는 점과, 매우 강력한 음악 추천 서비스를 제공한다는 점일 것이다. 출근하면서, 회사에서 일을 하면서, 퇴근 후 운동을 하면서, 심지어 자기 전까지 유튜브 뮤직은 핇자와 함께하며 심심함을 달래주고 있다. 그런데 유튜브 뮤직을 계속 사용하면 사용할수록, 유튜브 뮤직이 추천해주는 음악이 맘에 드는 경우가 늘어나고 있다는 느낌을 받았다.

만약 당신이 음악을 즐기는 사람이라면, 음악을 듣다가 클라이막스 부분에서 온 몸에 순간 전율이 일어난 경험이 있을 수도 있을 것이다. 어떤 사람들은 자신의 취향과 완벽히 일치하는 음악을 들었을 때 온몸에 소름이 돋는 경험을 하기도 한다. 필자는 최근 유튜브 뮤직의 음악 추천을 이용하면서 이러한 느낌을 이전보다 더 자주 받았다. 그만큼 유튜브 뮤직의 음악 추천 시스템이 기똥차다는 증거일 것이다.

<그림 1> 유튜브 뮤직의 음악 추천. 필자의 음악 취향을 정확히 간파하고 있다.

유튜브 뮤직의 음악 추천처럼, 사용자의 기호에 맞추어 무언가를 추천해주는 추천 시스템 은 오래 전부터 연구되어 왔다. 추천 시스템은 사용자가 이전에 만들어낸 수많은 기록을 바탕으로 사용자가 좋아할 만한 새로운 항목을 골라주는 기능을 한다. 그래서 추천 시스템의 성능과 사용자 만족도는 그 시스템이 얼마나 사용자의 이용 기록을 잘 이해하고 활용하는지에 달려있다. 유튜브와 넷플릭스가 추천 시스템을 기가 막히게 잘 구현한 서비스의 대표적인 예로 꼽힌다. 유튜브 추천 영상을 한번 보기 시작하면 손에서 스마트폰을 놓지 못하게 되는 이유이기도 하다.

앞서 예로 들었던 유튜브 뮤직이나 넷플릭스처럼, 최근의 IT 서비스들은 어떻게 하면 사용자의 서비스 이용 만족도를 높일 수 있을까 끊임없이 고민한다. 그리고 그 고민을 해결하는 과정에서, 전 세계의 수많은 사용자들이 만들어낸 시청 기록과 같은 데이터 를 적극적으로 활용한다. 단순히 사용자가 록 음악을 많이 들었으니까 아무 록 음악이나 추천해주던 과거와는 다르게, 사용자의 이용 시간, 시청 패턴등을 종합적으로 고려해서 사용자의 기호에 맞는 새로운 항목을 제안하는 것이다.

<그림 2> 유튜브와 넷플릭스의 영상 추천. 따라서 보다보면 시간 가는 줄 모른다.

비단 스트리밍 서비스 뿐만이 아니다. 특히 2000년대에 들어서부터, 사람의 직감이나 고전적인 컴퓨터 알고리즘으로 이루어지던 일련의 의사 결정 과정을 데이터 기반 의 의사 결정으로 바꾸려는 전 세계적인 움직임이 시작됐다. 대표적으로 아마존의 물류 창고 시스템을 들 수 있겠다. 고전적인 물류 창고는 판매 물품을 종류별로, 그리고 항목별로 분류하여 창고의 정해진 위치에 가지런히 쌓아 놓았다. 고객이 인터넷 쇼핑몰을 통해 장바구니에 담아두었던 항목을 주문하면, 물류 담당자가 주문서를 받아들고 물품을 하나하나 찾아다니면서 모아 택배 박스에 넣고 배송해주었다. 문제는 이 과정에서 물류 담당자가 주문서에 있는 물건을 모으기 위해 창고를 돌아다니는 시간이 얼마나 걸릴 지 모른다는 것이었다. 주문서에 아령과 닭가슴살 팩이 같이 있는데, 창고 안에서 아령은 운동기구들이 모여있는 동쪽 끝에 위치하고 닭가슴살 팩은 식료품이 모여있는 서쪽 끝에 위치한다. 물류 담당자는 물품들을 모으기 위해서 창고의 동쪽부터 서쪽까지 오랜 시간 움직여주어야 한다. 주문은 쉴 새 없이 들어오는데 물류 담당자가 많은 시간을 창고를 돌아다니는데 소비한다면, 분명히 전체적인 상품 배송이 느려질 것이다.

<그림 3> 물류 창고에서 직원이 돌아다니는 동선이 길다.

아마존은 수많은 주문 데이터를 기반으로 이러한 문제를 해결했다. 아마존에게는 기존에 사람들이 제출했던 수백만 건의 주문서 데이터가 남아있다. 그 주문서 데이터들을 잘 분석하면, 사람들이 주로 어떤 물품들을 동시에 구매하는지 대략적으로 알아낼 수 있을 것이다. 앞선 예제의 경우, 아령을 주문했던 많은 사람들의 주문서를 분석해 보니 운동 효과의 증진을 위해 닭가슴살을 자주 같이 구매한다는 정보를 얻어낼 수 있었을 것이다. 그래서 아마존은 종류별로 물품들을 구분해 배치하던 기존의 창고 구조를 완전히 버리고, 자주 같이 구매되는 상품끼리 가까이 진열해 놓는 전략을 택한다. 아령과 닭가슴살은 물품의 종류로만 보면 운동기구와 식료품으로 전혀 상관없어 보이지만, 전략적으로 그 둘을 창고 내에서 가까운 곳에 위치시키는 것이다.

겉으로 보면 창고 안의 물건들이 완전히 뒤죽박죽으로 진열되어 있는 것 같아서, 이 기술에는 랜덤 스토우(Random Stow) 라는 이름이 붙었다. 우려와는 다르게 랜덤 스토우는 아마존의 물품 배송 속도를 획기적으로 개선하는 데에 성공했다. 어떤 주문서가 들어오던지간에, 주문서 내의 물품들은 모두 서로 가까운 위치에 진열되어 있다. 물류 담당자의 이동 거리가 확실히 짧아지는 효과가 있는 것이다.

<그림 4> 랜덤 스토우는 직원의 동선을 짧게 만들어준다.

위의 사례들과 같이, 데이터를 통한 의사 결정은 2000년대부터 IT 서비스 분야의 주요한 화두가 되었다. 빅 데이터 를 분석하고 그 안에서 특징을 찾아내는 기술을 더 잘 구현하는 회사가 더 강력한 경쟁력을 가지게 된 것이다. 수많은 데이터를 분석해서 그 안의 특징을 찾아내는 여러 가지 방법론들이 연구되었다. 그 중에 단연 빅 데이터 시대를 이끌고 있는 기술은 머신 러닝 이라고 할 수 있다.

머신 러닝은 단어 그대로 기계를 가르치는 것 이다. 정말 다양한 의미를 내포하고 있는데, 보통의 경우 컴퓨터 알고리즘에게 기존 데이터의 특징을 이해시켜서, 새로운 데이터가 들어왔을 때 알고리즘이 기존의 경험에 비추어 그 데이터를 판단하도록 만드는 일련의 기술을 이야기한다. 아마존의 랜덤 스토우도 고도의 머신 러닝 기술이 적용된 결과로 탄생했다. 데이터 기반의 의사 결정이 중요해지면서, 고전적인 방법으로는 이해하기 힘든 거대한 빅 데이터를 이해하기 위한 방법으로 머신 러닝이 떠오르기 시작했다.

머신 러닝이 강력한 이유는, 이름에서부터 보이는 것처럼 스스로 데이터로부터 배우기 때문 이다. 머신 러닝이 발전하기 전의 데이터 분석은, 사람의 경험에 의한 통계적인 분석이 주를 이루었다. 물론 이것이 효과가 없었다는 것은 아니다. 그러나 시대가 발전하면서, 의사 결정을 위해 분석해야 할 데이터의 양이 기하급수적으로 증가했다. 사람의 경험에 비추어 데이터를 분석하기가 버거워지기 시작한 것이다. 때문에 이런 거대한 데이터를 사람보다 훨씬 빠른 속도로 분석할 수 있는 컴퓨터에게 데이터의 특징을 찾아내는 일을 맡긴다. 컴퓨터 알고리즘은 겉으로 보면 관계를 전혀 이해할 수 없는 수백, 수천만 건의 데이터를 일일이 넘겨보면서 데이터 사이의 특징이나 관계성을 찾아낸다. 알고리즘이 보고 배운 데이터가 많아질수록, 새로운 데이터가 들어왔을 때 그 데이터의 특징을 정확히 알아내는 능력도 강해진다. 공부를 많이 할수록 문제를 많이 맞추게 되어 시험 점수가 높아지는 것과 비슷한 이치다. 그래서 이런 알고리즘을 머신 러닝 알고리즘 이라고 부르는 것이다.

<그림 5> 머신 러닝 알고리즘은 데이터로부터 스스로 배운다.

처음에 이야기했던 추천 시스템이 점점 강력해지는 이유도, 추천 과정에서 머신 러닝을 활용하기 때문이다. 사용자가 음악을 듣는 패턴과 관련된 데이터를 열심히 수집해 놓았다가, 추천 시스템이 그 데이터를 보고 사용자가 좋아하는 음악의 특징을 이해하도록 만드는 것이다. 머신 러닝 알고리즘은 데이터를 많이 보고 학습할수록 성능이 좋아지므로, 사용자가 음악을 많이 들을수록 새로 추천해주는 음악이 사용자의 취향에 딱 맞을 확률이 높아진다.

특히 2010년대에 들어서 전 세계 구석구석까지 인터넷의 보급이 완료되고 스마트폰이 보편적으로 사용되기 시작했다. 사람들은 언제 어디서나 스트리밍 서비스로 음악을 듣고 유튜브 영상을 시청할 수 있다. 예전과는 달리 사용자의 이용 패턴 데이터가 생성되는 양이 폭발적으로 증가한 것이다. 데이터가 많아지니 이러한 서비스들의 품질과 사용자 만족도가 자연스럽게 높아질 수 밖에 없다. 머신 러닝이 현대 IT의 핵심 기술로 자리잡은 이유이다.

또 다른 머신 러닝의 핵심적인 활용 사례로, 이미 너무나도 유명한 이야기를 다시 한번 풀어보려고 한다. 2016년 초에 이루어진 세기의 대국 이야기다.
사람의 지능과 상황 판단력을 모방하는 기계를 만드는 인공지능 분야도 옛날부터 꾸준히 연구되어 왔다. 1950년대의 사람들은 정말로 사람처럼 생각하는 기계를 만들고 싶어 했으나, 사람처럼 생각하는 인공지능 은 너무 비현실적인 이야기라는 점을 일찍부터 깨닫는다. 이후 인공지능 분야는 특정한 문제 상황에 대해서 사람보다 나은 상황 판단을 내릴 수 있는 기계를 만드는 일에 집중하여 발전하게 된다. 연구의 결과로 체스를 하는 인공지능이 인간 체스 챔피언을 이기기도 했고, IBM의 왓슨은 미국의 대표적인 퀴즈 쇼인 제퍼디(Jeopardy!) 에 나가서 인간을 이기고 우승하기도 했다.

2016년, 인공지능은 그 동안 정복이 힘들다고 여겨 왔던 하나의 게임에 도전하게 되는데, 바로 바둑 이었다. 영어로는 Go 라고 불린다. 바둑은 기존에 인공지능이 인간을 이겼던 체스 같은 게임과는 차원이 다른 복잡성을 자랑한다. 가로 19칸과 세로 19칸으로 이루어진 바둑판에 바둑돌이 놓일 수 있는 경우의 수는 너무나도 다양해서, 그 경우의 수가 대략 10의 171승에 달한다. 이런 복잡한 게임을, 그것도 세계 챔피언인 우리나라의 이세돌 선수와 대결해서 이기고자 도전한 것이다.

<그림 6> 딥마인드의 인공지능 알파고와 이세돌의 대국

익히 알겠지만, 알파고는 이세돌과 5번의 대국에서 4대 1이라는 압도적인 스코어로 승리했다. 심지어 알파고는 은퇴할 때 까지 이세돌을 포함해 전 세계의 쟁쟁한 바둑기사들과 총 74번의 대국을 펼쳤는데, 이세돌 상대로 한 번의 패배를 제외하고 나머지 73번의 대국을 모두 승리했다. 알파고의 대국 기보를 분석하던 프로 바둑기사들은 모두 동일한 이야기를 했는데, 인간끼리의 바둑에서는 볼 수 없었던 기상천외한 전략을 사용한다는 것이었다. 알파고는 인간 바둑의 새로운 시대를 열었다고 평가받으며, 실제로 알파고가 등장한 이후 바둑 기사들은 인공지능의 수를 연구하는 데에 힘을 쏟았다.

알파고가 이렇게 강력한 힘을 가질 수 있었던 배경에도 머신 러닝의 힘이 있었다. 알파고는 수 십년간 쌓여온 현대 바둑의 기보들을 모두 넘겨보며 바둑을 배웠다. 머신 러닝의 특징인 데이터로부터의 학습을 극한으로 활용한 알파고는, 수 천만 건의 기보를 돌려보면서 모든 수를 데이터로써 이해했다. 알파고는 상대가 어떤 자리에 수를 놓았을 때, 현재의 형세와 상대가 놓은 수를 보고 다음 수를 어디에 놓으면 승률이 제일 높을 지 판단한다. 이 판단은 알파고가 보고 배웠던 수많은 기보 데이터를 기반으로 이루어진다. 수 많은 과거의 기보들 중 현재 형세와 비슷했던 기보를 찾아, 그 대국에서 승리한 돌이 다음 수를 어떤 위치에 놓았는지 알아내는 것이다. 알파고도 다른 머신 러닝 알고리즘들과 똑같이, 과거의 수많은 데이터들을 기반으로 현재 상황에서 최적의 판단을 내리는 작업을 반복하는 것이다.

알파고는 매 수를 놓을 때마다, 현재 상황에서 수를 놓았을 때 가장 기대 승률이 높은 곳에 놓는다. 과거의 데이터가 그렇게 말해주기 때문이다. 인간이 논리와 동물적인 감각을 포함해 형세를 이해하며 수를 놓는 것과 달리, 알파고는 모든 수를 기대 승률에 의존해서 놓는다. 그래서 알파고는 인간이 전혀 예상치 못한 곳에 수를 놓기도 한다. 그러나 알파고가 그러한 전략을 구사한 배경에는 수천만 건의 기보 데이터가 있기 때문에, 그 상황에서 결코 틀린 수는 아닐 것이다. 그래서 프로 기사들이 알파고의 대국을 복기하면서 알파고의 예상치 못한 수가 결국 묘수였다는 것을 깨닫기도 한다. 인간보다 훨씬 많은 기보를 기계적으로 익혔기 때문에, 인간 바둑을 이길 수 있는 묘수를 수많이 구사할 수 있는 것이다.

<그림 7> 알파고는 매 수를 놓을 때마다 가능한 모든 경우의 수를 확인한다.

앞서 같이 살펴보았던 머신 러닝의 활용 사례들은, 알고리즘을 똑똑하게 학습시킬만 한 수많은 데이터가 축적되어 있기에 가능했다. 그러나 머신 러닝 알고리즘의 성능 향상은 데이터만 많이 쌓인다고 이루어지지 않는다. 거대한 데이터를 이해하고 처리할 수 있는 컴퓨터의 기계적인 성능 이 뒷받침되어야 가능하다. 학습할 데이터가 커지고 복잡해질수록 데이터를 이해하기 위한 머신 러닝 알고리즘도 같이 복잡해질 수 밖에 없다. 알고리즘이 복잡해진다는 것은 곧 알고리즘을 돌리기 위한 기계의 요구 성능이 늘어난다는 의미이다.

본격적으로 머신 러닝 분야의 발전 속도가 빨라지고 활용 사례가 많아진 것이 2000년대 이후인 것에는 이유가 있다. 수많은 데이터가 쌓인 이유도 있지만, 무엇보다 컴퓨팅 성능 이 크게 증가했기 때문이다. 예전에는 슈퍼 컴퓨터가 붙어도 처리하기 힘들었던 머신 러닝 알고리즘을 이제는 스마트폰 안에서 빠르게 돌릴 수 있다. 머신 러닝 알고리즘의 학습에 있어서는 GPU 컴퓨팅 기술이 발전한 몫이 컸다. GPU 컴퓨팅을 비롯한 최근의 컴퓨팅 기술들은, 머신 러닝의 활용에 있어 알고리즘을 돌리는 데에 필요한 기계적인 성능 걱정을 덜어주었다. 오히려 강력한 컴퓨팅 파워를 이용해서 점점 더 거대한 알고리즘을 만들고 학습시키는 방법을 연구하는 하위 연구 분야가 생겨났는데, 바로 이 시리즈의 주제인 딥 러닝 이다. 딥 러닝도 세부 연구 분야에 따라 다르지만, 대부분의 경우 컴퓨팅 성능을 생각하지 않는다. 어떻게 하면 더 큰 알고리즘 모델을 사용해 더욱 거대한 데이터를 이해할 수 있을까 하는 것이 딥 러닝의 주요 관심사이다.

1.1.2. 시리즈의 진행 순서

그래서 딥 러닝을 이해하려면 먼저 머신 러닝의 주요한 개념들을 알고 가는 것이 좋다. 시리즈의 1.2챕터에서는 본격적으로 딥 러닝을 공부하기 전 기본적으로 알고 가야 할 머신 러닝과 데이터 관련 배경 지식을 살펴볼 것이다. 머신 러닝 알고리즘을 학습시킨다는 행위를 엄밀히 정의하고, 학습에는 어떤 구성 요소가 필요한지 알아본다. 그리고 가장 중요한 데이터의 수집과 학습에의 활용 방법을 간단히 알아본다. 지피지기면 백전백승이라는 말이 있다. 머신 러닝과 딥 러닝을 공부하려면 먼저 데이터에 대해 이해해야 한다. 데이터를 이해하고, 그 데이터를 학습에 활용하는 이론적인 방법을 알아야 머신 러닝 알고리즘을 잘 이용할 수 있다.

1.3챕터에서는 시리즈의 주제인 딥 러닝의 발전 과정을 같이 따라가 볼 것이다. 머신 러닝의 한 분야인 딥 러닝의 개념이 어떻게 처음 만들어졌고 발전했는지 알아보고, 딥 러닝의 핵심 알고리즘인 인공 신경망의 발전 과정에 대해 간단히 살펴보자.

2챕터에서는 딥 러닝 실습 환경의 이론적인 배경지식을 쌓고, 실습 환경을 같이 구축해보자. 프로그래밍 언어로는 파이썬을 사용할 것이며, PyTorch 라이브러리를 사용해 딥 러닝을 실습할 것이다.

3챕터에서는 딥 러닝의 기본기를 다져본다. 실습 환경에서 딥 러닝 코드를 작성하는 데에 익숙해짐과 동시에, 간단한 예제들로 딥 러닝에 빠져들기 위한 워밍업을 해본다. 이후 딥 러닝을 공부하는 데에 꼭 필요한 기본적인 지식들을 여기서 공부하고 넘어갈 것이다.

4챕터에서는 본격적으로 현실 세계의 문제를 풀기 위한 딥 러닝 알고리즘을 파헤쳐본다. 사진을 인식하는 딥 러닝, 사진에서 물체를 검출하는 딥 러닝, 흐름을 이해하는 딥 러닝, 문장을 이해하는 딥 러닝, 그림을 그려내는 딥 러닝 알고리즘에 대해 살펴보도록 하자. 이러한 알고리즘들은 현재 딥 러닝 분야의 기초를 쌓아 준 알고리즘들로, 4챕터의 내용을 이해하면 최신의 딥 러닝 기술 공부를 시작하는 데에 무리가 없을 것이다.