“딥러닝 알아듣기” 시리즈는 딥러닝의 기초 지식을 저만의 방식으로 쉽게 풀어내는 시리즈입니다. 이번 챕터에서는 딥 러닝의 개념이 등장한 배경과 함께, 인공신경망의 역사를 간략히 살펴보겠습니다.
본격적으로 이 시리즈의 주제인 딥 러닝 에 대해 이야기해 보자. 딥 러닝이 무엇인지 한 마디로 바로 정의내리는 것보다, 딥 러닝이라는 분야가 어떻게 등장했는지 간단히 역사를 살펴보는 것이 훨씬 이해하기 쉬울 것이다. 이번 장에서는 대표적인 키워드들과 함께, 딥 러닝이 등장하게 된 배경과 오늘날까지의 전체적인 흐름을 이해하는 것을 목표로 하자. 각각의 키워드에 대한 자세한 내용은, 이후에 이어지는 챕터들에서 하나하나 자세히 알아볼 것이다.
1.3.1. 딥 러닝과 인공 신경망
2000년대 후반까지는, 앞에서 간단히 살펴보았던 알고리즘들을 비롯한 다양한 머신러닝 방법론들이 강세를 보여주었다. 머신 러닝은 여러 분야에서 데이터를 기반으로 합리적인 의사 결정을 내리는 데에 활용되었다. 그러나 상대적으로 주목받지 못 하고 있던 머신 러닝 방법론이 있었는데, 바로 인공 신경망 이었다.
동물의 신경계에서 정보를 전달하는 가장 기초적인 단위는 뉴런이다. 가까운 거리에 있는 뉴런들은 서로 시냅스 라는 연결 구조를 통해 전기적인 신호를 주고받는다. 특히 동물의 뇌 속에서는, 이러한 방식으로 수많은 뉴런들이 서로 연결되어 신호를 주고받는 하나의 망을 형성한다. 이를 신경망 이라고 한다. 신경망 자체가 외부의 전기적 신호를 받아 특정한 전기적 신호를 출력하는 구조로써 기능하는 것이다.
신경망 안의 뉴런들은 서로 밀접하게 정보를 주고 받으면서 외부의 자극을 이해하고, 특징을 기억한다. 하나의 예를 들어보자. 우리가 태어난 순간의 순수한 뇌는 고양이가 어떻게 생겼는지 모른다. 그러나 고양이의 모습을 반복적으로 접하고, 저렇게 생긴 물체를 고양이라고 부른다는 사실을 반복적으로 접하다 보면 자연스럽게 고양이의 모습이 머리속에 기억된다. 뇌 어딘가에 촘촘하게 연결된 신경망들이, 고양이의 모습이라는 시각적인 입력을 받아들여 기억한 것이다. 뇌신경망이 자극을 받아 스스로 학습해 낸 결과이다.
또한 뇌신경망은, 그 안에 흐르는 정보를 더욱 효율적으로 처리할 수 있도록 스스로 발전하기도 한다. 방금 본 물체가 고양이임을 판단하는 데에 큰 영향을 미치지 못하는 뉴런들은 자연스럽게 중요도가 떨어질 것이다. 이렇게 신경망의 정보 처리 과정에서 큰 영향을 미치지 못하는 뉴런들은 신경망과 연결이 끊어지기도 하며, 필요에 따라 더 많은 뉴런들이 연결되어 신경망이 확장되기도 한다. 이렇게 신경망 내에서 뉴런들의 연결 관계는 매우 유동적으로 변한다. 신경망이 꾸준히 외부의 자극에 대해 변화하고 학습한다는 이야기이다. 일반적으로 이러한 신경망의 활동이 뇌의 사고와 기억력의 원천이라고 알려져 있다.
인공 신경망은 이러한 신경망의 특징을 컴퓨터 알고리즘으로써 활용하려는 방법론이다. 뇌 신경망의 뉴런들은 서로 연결되어 신호를 전달하고 입력 신호에 대해 출력 신호를 만들어낸다. 그것처럼 인공 신경망도 입력 데이터에 대해서 수많은 중간 뉴런들을 만들어 값을 전달하고, 어떠한 출력 데이터를 만들어내는 구조로 정의된다. 따라서 신경망은 컴퓨터 알고리즘의 기본적인 요건을 충족한다. 입력, 연산, 출력이 모두 존재하기 때문이다.
뇌신경망에서 아이디어를 얻은 인공 신경망은, 뇌신경망의 주요한 능력 중 하나인 확장 과 학습 을 재현하기 위해 발전했다. 뇌신경망이 외부의 신호에 자극을 받는 것처럼, 인공 신경망은 새로운 입력 데이터에 자극을 받는다. 뇌신경망이 출력한 신호에 대한 피드백으로 스스로 학습하는 것처럼, 인공 신경망도 출력한 데이터에 대한 피드백으로 스스로 학습한다.
인공 신경망도 다른 머신러닝 알고리즘들처럼, 입력 데이터와 출력 데이터 사이의 관계를 모델링하기 위해 만들어졌다. 그러나 인공 신경망과 기존 머신러닝 알고리즘들 사이의 큰 차이점은 앞서 말했던 확장성 에 있다. 단순하게 생각하면 된다. 뇌 신경망에서는 신경망에 붙은 뉴런이 많아질수록 이해하고 기억할 수 있는 정보의 양이 많아진다. 이처럼 인공 신경망도 뉴런을 많이 가지고 있을수록 입력과 출력 사이의 더욱 복잡한 관계를 이해할 수 있게 되는 것이다. 더욱이 인공 신경망은 스스로 데이터로부터 학습할 수 있기 때문에, 데이터가 많아지고 복잡해져도 단순히 신경망의 크기를 키우는 것만으로 신경망이 데이터를 이해하도록 할 수 있다. 더 많은 뉴런을 포함해 학습시키면 그 만큼 데이터에 대해 더 많은 정보를 기억할 수 있다는 뜻이기 때문이다.
1.3.2. 인공 신경망의 역사
이렇게 보면 인공 신경망은 정말 강력한 알고리즘처럼 보인다. 유전 알고리즘과 인공 신경망처럼 자연 현상에서 아이디어를 얻은 알고리즘은 항상 강력하기 마련이다. 그러나 제안된지 매우 오래된 머신 러닝 알고리즘인데도 불구하고, 신경망이 본격적으로 널리 사용되기 시작한지는 그리 오래 되지 않았다. 실제로 본격적으로 인공 신경망이 주목받기 시작한 시점은 2010년대 이후이다.
아직 PC도 개발되기 한참 전인 1940년대, 뇌를 모방하는 컴퓨터 알고리즘에 대한 연구는 이미 시작되고 있었다. 1943년, 맥컬록과 피츠는 인간의 뇌신경 시스템의 핵심인 뉴런 의 구조를 수학적으로 재현한 모델을 발표한다. 이를 맥컬록-피츠 뉴런 모델(McCulloch-Pitts Neuron) 이라고 부른다.
맥컬록과 피츠는, 수많은 뉴런들이 그림과 같이 정보를 주고받도록 연결되어 결국 인간의 두뇌를 구성한다고 생각했다. 각각의 뉴런은 이전에 연결된 뉴런이 보낸 신호에 의해 자극을 받고, 자극이 임계치를 넘으면 다음 뉴런으로 신호를 보낸다. 정확히 같지는 않지만, 실제로 뉴런 사이의 상호 작용은 이와 엇비슷하게 동작한다.
1957년, 미국의 프랑크 로젠블라트는 퍼셉트론(Perceptron) 이라는 기념비적인 연구를 발표한다. 맥컬록과 피츠의 뉴런 모델을 발전시켜, 여러 뉴런들이 연결되어 정보를 전달하는 모양의 이중 분류기 알고리즘을 고안했다. 마치 뉴런이 신호를 받아들이고 출력하는 것처럼, 퍼셉트론의 한 노드도 입력 데이터를 받고 특정한 조건에 의해 신호를 출력한다. 퍼셉트론에서 뉴런은 노드 라고도 불린다.
퍼셉트론은 이론적으로 스스로 학습 할 수 있는 잠재력을 가지고 있었다. 그래서 당시의 연구자들은 퍼셉트론과 같은 신경망 재현 모델에 더 깊은 관심을 가지기 시작했다. 당시에만 해도 학자들은 퍼셉트론이 무슨 문제든지 풀어줄 수 있다고 믿었다. 퍼셉트론을 응용한 다양한 연구가 여기저기에서 이루어졌다.
그러나 퍼셉트론 이론은 얼마 가지 않아 큰 문제에 봉착하게 되었다. 퍼셉트론은 입력 데이터의 형태가 제한적인 상황에서만 동작한다는 것이 밝혀졌기 때문이다. 이 때 대두된 유명한 문제 중 하나가 앞으로 같이 다루어 볼 XOR 게이트 문제 였다. 이 문제가 시사하는 점은, 간단히 말해서 로젠블라트가 주장한 퍼셉트론 이론으로는 매우 단순한 비선형의 데이터(*비선형이라는 말을 지금 이해하려고 하지 않아도 된다. 이후의 챕터에서 천천히 다루어 볼 것이다.) 를 분류하는 이중 분류기조차 만들 수 없다는 것이었다. 그러나 퍼셉트론 모델을 적용하려고 하던 많은 문제들의 경우에, 데이터가 복잡한 비선형 형태로 분포되어 있는 경우가 많았다. 로젠블라트는 어떠한 데이터가 입력되더라도 퍼셉트론의 적용에는 문제가 없다고 생각했지만, 결국 비선형 데이터에 대해서는 퍼셉트론을 적용할 수 없음이 증명되면서 퍼셉트론은 다시 기억 속에서 서서히 잊혀지기 시작한다.
그렇게 퍼셉트론 이론은 역사 속으로 사라지는 듯 했다. 그러나 1980년대에 들어 퍼셉트론이 다시 주목받기 시작한다. 기존 퍼셉트론이 가지고 있던 문제를 해결할 수 있는 새로운 아이디어인 다층 퍼셉트론 이 제시된 것이다.
다층 퍼셉트론은, 이전의 퍼셉트론과 다르게 뉴런들을 두 층 이상 씩 쌓아올린 구조이다. 한 층의 중간 뉴런이 아닌, 여러 층의 중간 뉴런을 두어 퍼셉트론의 힘을 강력하게 만든 것이다. 다층 퍼셉트론은, 기존의 퍼셉트론이 힘을 잃었던 이유인 비선형 문제에 대한 해답을 줄 수 있었다. 실제로 다층 퍼셉트론이 이론적으로 XOR 문제를 풀 수 있음이 알려지면서, 퍼셉트론 이론을 비롯해 신경망 모델에 대한 사람들의 관심은 다시 뜨거워졌다.
다층 퍼셉트론이 활발히 연구되면서, 학자들은 퍼셉트론 내의 뉴런 개수를 늘릴 수록 더욱 복잡한 문제도 풀 수 있게 된다는 사실을 알기 시작한다. 그렇게 현대적인 인공 신경망 의 개념이 등장했다. 다층 퍼셉트론을 더욱 다양한 문제에 활용할 수 있도록 일반화한 것이 인공 신경망의 시작이었다. 또한 위에서 이야기했듯이, 퍼셉트론은 스스로 학습할 수 있는 능력이 있다. 사람들은 인공 신경망 또한 데이터로부터 학습시킬 수 있겠다는 생각을 했다. 만약 인공 신경망이 스스로 학습할 수 있다면, 그야말로 모든 문제를 해결할 가능성이 있는 마법의 알고리즘을 만드는 것과 다름이 없기 때문이었다.
그러나 인공 신경망의 발전은 그렇게 호락호락하지 않았다. 얼마 못 가서 인공 신경망의 새로운 문제가 대두되었기 때문이다. 또한 이번에도, 퍼셉트론이 잊혀졌을 때와 같이 매우 심각한 문제였다. 바로 신경망 전체를 동시에 학습시킬 방법이 없다는 것 이었다. 당시 학자들은 다른 머신 러닝 모델을 학습시킬 때처럼, 신경망의 출력 데이터와 정답 데이터의 차이를 어떻게든 이용하면 신경망을 학습시킬 수 있을 거라고 생각했다. 그러나 신경망의 모든 뉴런을 동시에 학습시킬 수 있는 방법이 아직 발견되지 않았던 것이다. 하나의 뉴런만은 학습시킬 수 있으나, 여러 뉴런을 동시에 학습시킬 방법이 없었다. 그렇게 인공 신경망은 또 잠깐의 침체기를 맞이하게 된다.
그래봤자 35년 전인 1986년이 되어서야 인공 신경망의 학습 문제를 해결할 알고리즘이 제시되었다. 역전파 라는 이름으로 불리는 이 알고리즘은, 인공 신경망이 드디어 스스로 학습할 수 있도록 만들어주었다. 인공 신경망이 정보를 입력받아 결과를 출력했을 때, 실제 정답과 신경망의 결과가 얼마나 큰 차이를 가지고 있는지 신경망에게 알려준다. 신경망은 스스로 그 차이를 줄일 수 있도록 내부의 뉴런들을 갱신하는데, 이 때 역전파 알고리즘을 사용하여 갱신을 이루어낸다.
이 때부터 비로소 인공 신경망이 날개를 달기 시작한다. 뇌신경망을 모방한 획기적인 알고리즘이, 이론적으로 무한한 확장성을 가지는데다가, 데이터로부터 스스로 학습도 할 수 있다. 정말 마법의 알고리즘이 따로 없다. 신경망 모델이 연구되기 시작한 지 40년 가량이 지나서야, 정말로 무슨 문제든 풀어낼 수 있는 힘을 가지기 시작한 것이다. 본격적으로 현실 세계의 문제에 인공 신경망이 활용되기 시작했다. ‘기존의 머신 러닝 알고리즘이 풀던 문제를 인공 신경망이 풀도록 시켰더니, 더욱 좋은 성능을 보이더라’ 하는 연구들이 속속 나오게 된다.
또한 인공 신경망은 이론적으로 정말 무한한 확장성을 가지고 있어서, 고전적인 머신 러닝 알고리즘들이 다루기 힘들었던 복잡한 데이터들에 대해서도 힘을 발휘하기 시작했다. 대표적인 것이 이미지 처리와 컴퓨터 비전 분야이다. 컴퓨터 알고리즘이 이미지의 특징을 이해하는 것은 정말 어려운 일이다. 그러나 인공 신경망을 사용하면, 수많은 뉴런들이 연결되어 복잡한 이미지 데이터조차 특징을 이해하고 학습해버린다.
1989년, 얀 르쿤(Yann LeCun) 박사는 숫자 글씨를 인식하는 인공 신경망 모델을 만든다. 이미지를 보고 그 안의 내용을 이해하는 신경망이 구현된 것이다. 단순한 숫자 인식에 며칠 씩 걸리기는 했지만, 인공 신경망 모델의 가능성을 눈으로 직접 확인했던 순간이었다.
다양한 분야에서 인공 신경망이 활용되며 그 성능을 입증받기 시작하자, 머신 러닝 분야 자체의 판도가 인공 신경망 중심으로 변하기 시작했다. 그러나 많은 사람들의 기대와는 달리, 인공 신경망은 처음부터 많은 분야에 활용되지 못했다. 알고리즘은 획기적이지만, 아직 시대가 그것을 활용할 만큼 발전하지 못했던 것이다. 얀 르쿤 교수의 숫자 인식 신경망도 숫자 몇십 개를 알아내는 데에 며칠 씩 걸리는데, 더욱 복잡한 데이터에 인공 신경망을 적용하기에는 수지타산이 맞지 않았던 것이다.
그리고, 인공 신경망의 크기가 커질수록 학습을 위한 데이터도 많이 필요해졌다. 그러나 90년대 당시에는 아직 인터넷도 제대로 보급되지 않았을 뿐더러, 생산되는 데이터의 양 자체가 많지 않았다. 아직 데이터 과학이 발달하기 전이라, 데이터가 있음에도 활용하지 못 하는 경우도 많았다. 그렇게 시대를 너무 앞서간 알고리즘의 연구 속도는 다시 더뎌진다.
인공 신경망이 너무 시대를 앞서나간 알고리즘이라 문제였으니, 이러한 문제 또한 시간이 해결해주었다. 2000년대 이후, IT 기술이 급속하게 발전하고 전 세계 구석구석에 인터넷이 보급되었다. 또한 모바일 기술이 발전하고 스마트폰의 사용이 확산되면서, 불과 십 몇년 전과는 다르게 사람들이 언제 어디서나 거대한 양의 빅 데이터를 생산하기 시작한 것이다. 우리는 이를 지금까지 한 번도 경험하지 못한 전례없는 데이터의 홍수가 일어나면서, 이 데이터를 활용하기 위한 방법을 다루는 데이터 과학이 발전하기 시작한다. 그와 함께, 빅 데이터를 이해하고 활용하기 위한 멋있는 방법론인 인공 신경망도 같이 발전하게 된다. 비로소 인공 신경망이 빛을 발하는 시대가 시작된 것이다.
또한 컴퓨팅 성능의 급격한 발전으로 인공 신경망의 학습과 확장이 더 이상 어려운 일이 아니게 되었다. 특히, 깊고 넓은 신경망의 학습에는 GPU 가 매우 큰 도움을 주고 있다. 원래 GPU는 컴퓨터 그래픽 연산을 빠르게 처리하기 위한 장치다. 그러나 사람들은 GPU가 정보를 처리하는 과정이 인공 신경망의 계산 구조와 너무나도 잘 맞아떨어진다는 것을 발견한다. 그래서 GPU를 일반적인 수치 계산에 사용할 수 있도록 범용성을 높이는 GPGPU(General Purpose GPU) 의 개념이 발전하였고, 인공 신경망의 구현에 적극적으로 사용되기 시작한다.
예전에는 제한된 컴퓨팅 성능 안에서 인공 신경망 모델을 어떻게 학습시킬까 고민했다면, 이제는 어떻게 하면 신경망을 크고 깊게 만들어서 더욱 복잡한 문제를 풀 수 있을까에 대해 고민하기 시작한다. 이러한 고민을 하는 분야를 우리는 딥 러닝 이라고 부른다. 깊은(Deep) 신경망을 학습(Learning) 시키는 방법을 연구한다는 뜻이다. 이름에서부터 볼 수 있듯이, 딥 러닝의 주요한 고민은 단 하나다.
“어떻게 하면 깊고 넓은 신경망을 효율적으로 학습해서 현실의 문제를 풀 수 있을까?”
딥 러닝의 시대가 알고리즘 스스로의 힘으로만 열리지는 않았다. 위에서 이야기해왔듯이, 딥 러닝에 날개를 달아줄 수 있는 시대적인 발전이 뒷받침되었기 때문에 딥 러닝이 힘을 얻기 시작한 것이다. 그래서 인공 신경망의 구조를 이해하는 것 만큼이나 중요한 것이 문제 상황과 데이터 에 대한 이해이다.
이번 챕터에서 딥 러닝 발전의 전체적인 흐름을 파악했으니, 자세히 하나씩 파고들어가면서 딥 러닝의 핵심적인 개념들을 같이 정복해보자.