빅데이터와 인공지능 그리고 알파고

IT 이슈를 파헤치다|2018. 1. 24. 03:00

Key Point

  • 알파고는 왜 주목 받았나?
  • 알파고의 핵심, 딥러닝은 무엇인가?
  • 기존 기계학습과 딥러닝의 차이점은 무엇인가?


알파고는 왜 주목 받았나?

알파고는 지난 이세돌 9단과의 대국에서 최종 승리를 거둔 인공지능입니다.

알파고가 전 세계적으로 주목을 받은 데에는 “사람처럼 스스로 생각해서 학습을 한다”라는 뉘앙스가 들어가 있기 때문입니다.

과연 사람이 프로그래밍한대로 움직일 수 밖에 없던 컴퓨터가 그 벽을 넘어서 스스로 학습하고 인간을 넘어설 수 있을지 세간의 관심이 집중되었습니다. 알파고를 통해 그 가능성을 엿볼 수 있을 것이라고 사람들은 생각했습니다.

알파고가 지난 세기의 다른 인공지능형 프로그램과 비교되는 특징들이 다음과 같습니다.

  • 알파고는 빅데이터를 통해 연산합니다.
  • 알파고는 신경망 구조로 작동합니다.
  • 알파고의 핵심은 딥러닝(심화학습)에 있습니다.


먼저 빅데이터에 대해서 살펴보겠습니다.

빅데이터는 엄청난 양의 데이터를 가리킵니다.

알파고는 1200여대의 중앙처리장치(CPU)가 연결된 슈퍼 컴퓨터로, 빅데이터 연산을 수행하는 소프트웨어가 탑재되어 있습니다. 알파고는 초당 경우의 수 10만개를 검색할 수 있습니다. 프로 바둑기사는 다음 수를 놓기 위해 초당 100개의 경우의 수를 고려하는 것으로 알려져 있습니다.

알파고에는 CPU와 더불어 그래픽연산장치(GPU)도 500 ~ 600장 탑재되어 있습니다. 이 GPU는 계산에 특화된 처리 장치로 CPU보다 최소 8배 이상 빨리 계산할 수 있는 능력이 있습니다. 이로써 기존 CPU만으로는 힘들었던 빅데이터 연산이 현실적으로 가능하게 된 것입니다. 이런 장비들이 100Gbps급 초고속 네트워크로 연결되어있으니 알파고가 초당 처리하는 데이터 양이 얼마나 어마어마한지 짐작해 볼 수 있습니다.

앞서 알파고는 신경망 구조로 작동한다고 언급했습니다.
신경망 구조는 사람의 뇌가 동작하는 것을 모델링한 기계학습 구조입니다.

인간의 뉴런은 다양한 정보를 기억하고 있고, 시냅스라는 것을 통해 정보를 주고 받습니다. 이 뉴런과 시냅스의 무수한 조합으로 인해 인간의 뇌에는 엄청난 양의 정보가 저장되어 있고, 새로운 것을 창조할 수 있습니다.

이것을 모델로 만든 것이 신경망 구조입니다.

인공 신경망은 인공 뉴런들이 인공 시냅스로 네트워크를 형성하고 있는 모양을 가지고 있습니다. 인공 뉴런들이 학습을 통해 이 시냅스의 결합세기(가중치)를 변화시킴으로써 주어진 문제를 해결할 수 있게 되는 것입니다.

인공신경망은 입력 레이어(Input Layer), 은닉 레이어(Hidden Layer), 출력 레이어(Output Layer)로 구성되어 있는데 각 층의 뉴런들이 가중치로 연결되어 있습니다.

인공 신경망은 뉴런의 값과 가중치 그리고 함수를 통해 문제에 대한 해답의 근사치를 얻을 수 있게 되는 것입니다.

알파고의 신경망 구조는 두 가지로 요소로 이루어져 있습니다.

  • 정책망(Policy Network) → 프로기사들의 데이터를 바탕으로 그들을 최대한 모방하여 다음 수를 예측하는 신경망을 의미합니다. 12계층이 정책망으로 만들어졌습니다.
  • 가치망(Value Network) → 여기에 수를 두면 이길 것인지 질 것인지 확률을 예측하는 신경망입니다. 마지막 레이어를 판세를 예측할 수 있는 층으로 구성되었습니다.


사실, 알파고의 핵심은 딥러닝이라고 할 수 있습니다. 딥러닝은 말 그대로 알파고가 동작하는 핵심부분이기 때문에 더 세밀하게 살펴볼 필요가 있습니다.

알파고의 핵심, 딥러닝은 무엇인가?


알파고가 바둑으로 사람을 이기기 위해서 아주 간단하게는 이렇게 생각해 볼 수 있습니다.

한 수, 한 수 둘 때 가능한 모든 경우의 수를 계산한 다음 제일 이길 확률이 높은 곳에 놓으면 되는 거 아닌가?

하지만 불가능합니다.

바둑에서 이 경우의 수를 계산하다간 다 늙어죽을 것이기 때문입니다.

이 경우의 수는 우주의 원자 개수 보다 많다고 합니다.

슈퍼 컴퓨터를 여러대 연결해서 계산한다고 해도 바둑 경기를 두는 것에는 큰 무리가 있습니다.

딥러닝이 사용된 것은 이 이유 때문입니다.

알파고에 딥러닝이 적용된 결정적 이유는 다음과 같습니다.

  • 모든 경우의 수를 계산할 수 없어 사람이 바둑을 두는 것처럼 전략적인 가지치기가 필요합니다.
  • 바둑은 경기입니다. 제한된 시간안에 수를 두어야 합니다. 승률을 높이면서도 빨리 착수를 할 수 있어야 하기때문에 이길 수 있는 수를 둘 수 있어야 하고 전체적인 판의 흐름을 읽을 수 있어야 합니다.


전략적인 가지치기를 하기 위해서 사람이 둘 것 같지 않은 수를 버려야 합니다.
하지만 어떻게 이것을 가능하게 할 수 있을까요?

이를 해내기 위해 알파고를 만든 인공지능 팀은 예측 모델을 만들고 프로 바둑기사들의 엄청난 데이터를 가지고 알파고를 학습시키기 시작했습니다.

이때 예측 모델에 사용된 알고리즘이 13 계층의 CNN(Convolutional Neural Network)입니다.

간단하게 설명하면 사람의 인지방식을 수학적 모델링을 통해 구현한 것이라고 할 수 있습니다.

CNN 방식은 이미지 데이터를 학습하는데 매우 유용합니다.

CNN은 데이터에서 특징(feature)를 스스로 찾아내어 학습하는 방식을 사용합니다.






위의 그림을 보면 CNN이 어떻게 특징을 잡아 학습을 진행하는지 알 수 있습니다.

위에서 자동차의 특징(feature)를 계속 찾아내어 학습하고 단계(layer)가 높아질 수록 선이나 점이 아닌 차문, 차체를 인식하기 시작합니다. 거의 마지막 단계에 가서는 어떤 차종인지 인식할 수 있는 것입니다.

알파고는 이것을 바둑의 판세를 읽는데 활용한 것입니다.

바둑은 패턴을 인식하는 능력이 중요한데 위에서 설명했듯이 CNN은 특징들을 잡아 점점 범위를 넓혀가며 패턴을 인식하는데 매우 유용한 알고리즘입니다.

알파고는 프로 기사를 흉내내는 CNN 모델을 적용하여 다음 수를 계산합니다.
그리고 알파고의 성능을 개선하기 위해 프로기사를 흉내내는 두 CNN 모델을 서로 대국시킵니다.

어떤 상황에서 이겼는지 그 데이터를 바탕으로 업데이트를 진행합니다. 이때 전 버전의 알파고가 대국 상대가 됩니다.

이렇게 다양한 업데이트를 바탕으로 높은 승률을 자랑하는 모델이 완성됩니다. 이 모델을 바탕으로 실제 프로 바둑기사와 대국할 때 어느 곳에 수를 둬야 하는지 판단하게 됩니다.

알파고가 위처럼 사람과 굉장히 비슷한 방식으로 학습을 한다는 사실을 매우 놀랍습니다. 하지만 기계 학습은 근래에 만들어진 이론이 아닙니다. 기존에도 기계학습 이론과 프로그램이 존재했습니다. 그렇다면 알파고와 기존의 기계학습은 어떤 차이가 있을까요?

기존 기계학습과 딥러닝은 차이점은 무엇인가?

예를 들어 고양이 사진을 학습하는 프로그램을 만든다고 할 때 기계 학습과 딥러닝은 데이터를 사용해 학습한다는 공통점이 있지만 학습하는 과정에서 차이가 나게 됩니다.

기존의 기계 학습이라고 하면 다음과 같은 방식을 거쳐 학습을 수행하게 됩니다.

  • 고양이 사진이 데이터로 주어집니다.
  • 기계학습을 할 때 데이터에서 구분을 할 수 있는 특성인자(feature → 이미지에서 윤곽 혹은 꼭지점)를 인식합니다.
  • 사람이 그러한 특징(특성인자)을 가진 것은 고양이라고 정답을 알려줍니다.
  • 기계가 이 사실을 학습합니다.
  • 다음에 고양이 사진을 보여주면 고양이라고 알아차리 수 있게 됩니다.

기존의 기계 학습은 특성인자(feature)를 기계에게 얼마나 잘 말해줄 수 있느냐가 관건이었습니다.

딥러닝은 이와는 다른 방식으로 학습을 진행합니다.

딥러닝은 사람이 특성인자를 선정하는 것이 아니라 목표를 향해 학습하는 과정에서 스스로 특성인자를 찾도록 설계되었습니다.


Deep Neural Network(심층 신경망)은 위의 그림에서처럼 은닉층(Hidden Layer)이 여러개로 구성되어 있습니다.

많은 은닉층을 통해 고도의 추상화가 가능한데 이런 신경망을 통칭하여 딥러닝이라고 부릅니다.

위의 내용을 정리하여 나타내면 다음과 같습니다.

  • 강화학습
    • 자기 자신을 토대로 학습을 진행합니다. 알파고는 이 방식을 토대로 스스로의 모델을 발전시켰습니다.
  • 비지도 학습
    • 데이터를 학습하다보면 군집화(Clustering)이 되고 이것을 통해 특성인자(feature)를 추출합니다. 이 같은 방식은 사람이 따로 결과를 기계에게 알려주지 않습니다. 기계가 스스로 특정 대상에 대한 학습을 진행하는 것입니다. 이것이 기존의 기계 학습과 알파고의 학습 방식이 차이가 나는 부분입니다.
  • 지도 학습
    • 사람이 데이터가 무엇을 의미하는지(Labeling)을 데이터에 표시합니다. 기계는 이것을 통해 특정 대상이 어떤 것을 의미하는지 학습하게 됩니다. 하지만 이 방식의 단점은 사람의 실수로 데이터에 오류가 있을 경우 학습의 질이 낮을 수 있다는 것입니다.



댓글()