본문 바로가기
Lecture/파이썬으로 만드는 AI 오델로 게임

2. 인공지능과 강화학습 소개

by 작은별하나 2022. 9. 25.
반응형

1. 인공지능 소개

 

1) 인공지능이란

인공지능(artificial intelligence, A.I.)은 인간의 지적 능력 중 일부 또는 전체를 인공적으로 구현하는 기술을 말합니다. 최근에 많이 언급되고 있지만, 인공지능의 역사는 오래되었습니다.

일반적으로 인공지능은 강 인공지능과 약 인공지능으로 분류됩니다. 강 인공지능은 인간의 지적 능력을 완벽하게 모방한 것을 말하며, 현재는 아직까지 이를 달성한 인공지능은 없습니다. 반면, 약 인공지능은 특정한 목적을 위해 제한된 인공지능을 말합니다. 현재의 인공지능은 대부분 약 인공지능에 해당합니다.

 

2) 인공지능과 기계학습

인공지능은 인간의 지능을 대신해서 일을 할 수 있는 소프트웨어나 하드웨어를 모두 포함하는 큰 개념입니다. 예를 들어 제품을 분류하거나 세탁물의 양에 따라 물의 양을 맞추는 것도 인공지능의 일부입니다.

기계학습은 기존의 데이터를 분석하여 자체적으로 동작하는 것을 말합니다. 이때, 기존의 데이터를 만드는 방법에 따라 지도학습, 비지도학습, 강화학습으로 나눌 수 있습니다. 대표적인 기계학습 기술로는 k 근접점 학습, 회귀분석, 인공신경망 등이 있습니다.

딥러닝은 최근에 사용되는 용어로, 인공지능 역사로 보았을 때 오래전부터 사용되던 기술인 인공 신경망을 개선하여 문제를 해결할 수 있는 기계학습 시스템을 말합니다. 최근에는 딥마인드의 GPU 사용 기술이 보편화되면서 딥러닝이 널리 사용되고 있습니다.

   

인공지능, 기계학습, 딥러닝

 

3) 인공지능과 로봇

실제 컴퓨터 기술이 인공지능을 구가하기 전부터 영화, 드라마 등에서 인공지능은 많이 소개되어왔습니다.  이러한 인공지능은 실제 강 인공지능 수준이라고 볼 수 있으며, 인간과 비슷한 행동을 할 수 있는 안드로이드 형태가 많습니다.  그러다보니 대중의 의식속에서 인공지능과 로봇을 동일시 여기는 경우가 많습니다.  인간과 매우 흡사한 안드로이드가 매체에서 많이 나오는 이유는 인간이 대신 휴머노이드를 연기하면 가능하기 때문에 손쉽게 구현이 가능한 이유도 있습니다.  최근에는 반대로 휴머노이드 계열의 로봇이 인간이 하기 힘든 고난이도의 액션 연기를 대신하는 경우가 있습니다.

앞서 인공지능을 소개했던 것처럼, 인공지능은 인간의 지능을 대신할 수 있는 것을 의미합니다.  그에 비해서 로봇은 인간 또는 생물체의 물리적 능력을 대신하거나 유사한 기능을 사용합니다.  로봇 팔이나 청소 로봇 등은 인간의 물리적 능력을 대신하는 용도로 사용됩니다.  로봇에서도 인간형으로 인간과 유사한 형태의 로봇이 있으며, 이를 인간형 로봇, 휴머노이드라고 합니다.

실제 영화나, 드라마 등 매체에서 연기된 로봇 등은 이러한 인간형 로봇, 휴머노이드와 강 인공지능이 결합된 형태라고 볼 수 있습니다.

 

4) 인공지능의 구현 방식

인공지능의 분류는 존 설 교수의 분류처럼 강 인공지능과 약 인공지능으로 나눌 수 있습니다.  실제 인공지능은 다양한 방식으로 구현되어 왔습니다.  구현 방식에 따라서 구분을 한다면, 다음과 같이 나눌 수 있습니다.

 

전문과 시스템

전문가 시스템은 시스템 개발자가 여러 경험 등을 토대로 여러 상황에 대한 처리 방식을 결정하고, 이를 프로그램화하여 해당 상황을 대치합니다.  예를 들어서 불량 달걀을 구분해내기 위해서, 달걀의 무게, 색, 투과도 등을 경험적 데이터로 판단한다면, 이는 전문가 시스템이라고 할 수 있습니다.  현재 실용화된 인공지능의 대다수는 이 방식으로 구현되고 있습니다.

 

퍼지 시스템

퍼지 시스템은 모호한 상태를 수치로 변환하여 사용합니다.  사람은 기본적으로 적절한 상태를 찾아서 행동할 수 있습니다.  이러한 적절한 상태라는 것을 수치로 변환하여 의사 결정을 하는 시스템을 말합니다.

 

유전 알고리즘

자연의 진화과정과 비슷하게, 돌연변이, 교배, 적자 생존을 통한 인공지능입니다.

 

기계 학습

데이터를 기반으로 스스로 원리를 파악해서 의사 결정을 하는 인공지능입니다.  현재 인공지능에 있어서 가장 주요한 구현 방법입니다.  기계학습은 k 근접점 학습, 회귀분석 등을 사용하던 것에서 최근 인공 신경망을 활용한 방식으로 진화해서 사용중입니다.

 

4) 기계학습

기계학습 전의 전문가 시스템은 주로 개발자가 많은 경험적 지식을 알고리즘화하여 프로그램을 개발하였습니다.  예를 들어서 크기에 비해 가벼운 달걀은 상했을 가능성이 높다라는 경험을 이용하여 크기에 비해 가벼운 달걀 비율을 정해서 불량 달걀을 찾는 방식이었습니다.

기계학습은 경험적인 지식이 아니라 데이터를 통하여 학습을 하는 방식입니다.  기계학습 시스템에 데이터를 입력하면 그에 대한 학습을 하여 원하는 결과를 얻습니다.  예를 들어서 달걀 데이터에 불량 여부를 미리 알려주어서 그 데이터를 통하여 불량 달걀의 패턴을 인지하도록 합니다.  일반적으로 이 방법을 이용했을 때, 전문가 시스템보다 더 나은 결과를 기대할 수 있습니다.

 

기계학습은 목표하는 바에 따라서 3가지 학습 방법이 존재합니다.

 

지도학습

정답이 있는 데이터를 통하여 패턴을 인지하도록 하는 방법입니다.  현재 대부분의 인공지능 연구가 지도 학습으로 이루어지고 있습니다.  가장 쉽게 결과를 낼 수 있기 때문에 지도학습을 많이 사용합니다.  하지만, 정답을 어느정도 정확하게 내야하기 때문에, 사람들이 정답지를 만드는 작업을 해야하며, 이를 라벨링(Labeling) 작업이라고 합니다.  현재 공공 데이터를 이용하여 정답이 있는 데이터를 구축하고 있습니다.

 

비지도학습

정답이 없이 데이터를 적절하게 분류하도록 하는 방법입니다.  일반적으로 군집화, 분포 추정, 추천 단어 예시 등에서 많이 사용됩니다.  사진을 찍으면 이전의 얼굴 정보를 토대로 군집화해서, 하나만 라벨링을 하면 군집화된 정보도 같이 라벨링을 할 수 있습니다.

 

강화학습

행동에 대한 보상을 통하여 좋은 보상을 취하도록 학습하는 방법입니다.  환경에 적응한다는 의미에서 현재 가장 인간에 닮은 학습법이라고 할 수 있습니다.  하지만 논리적 추론 없이 진행하기 때문에 시행착오가 많이 발생해서 학습 효율이 낮습니다.  예를 들어서 주차 시스템을 강화학습으로 진행한 경우 몇십만번의 시도끝에 겨우 주차를 하게 됩니다.

 

기계학습 알고리즘은 여러가지가 있습니다.  최근에는 인공신경망을 기반으로 하는 연구가 많이 이루어지고 있습니다.

 

회귀기법

선형 회귀법, 로지스틱 회귀법 등이 있습니다.  주로 현재의 데이터를 통하여 추세를 수학적으로 분석할 때 사용합니다.

 

확률기반

확률을 통하여 예측하는 방법입니다.  데이터를 통하여 확률을 계산하고 그것에 따라서 새로운 데이터에 대하여 판단을 하는 방법입니다.

 

k 근접점(k Nearest Neighbor) 방식

새로운 데이터가 있을 때, 그 데이터와 가까운 k개의 근접 데이터의 결과를 참고하여 정답을 유추합니다.

선형이나 경계가 뚜렷하게 잘 구별되는 분류의 경우에는 우수한 결과를 나타내지만, 그렇지 않은 경우에는 인공신경망이 더 좋은 결과를 냅니다.  하지만 구현 자체가 간단하기때문에 지도학습을 처음 배울때 시도하는 방법입니다.

 

인공신경망(Artificial Neural Network)

인간의 신경망을 모방한 네트워크 시스템을 사용합니다.  신경망 노드와 노드를 잇는 간선의 가중치 값을 조절하는 알고리즘입니다.  네트워크 규모가 큰 경우 많은 계산이 필요하므로 GPU를 이용하여 병렬 연산 방법을 사용합니다.

 

5) 인공신경망

인공신경망은 인간의 신경망 구조를 모방하여 만든 기계학습 모델입니다.  약자로 ANN이라고 불리며, 영문 표기로는 Artificial Neural Network이라고 합니다.

 

인공신경망은 입력 레이어(Input Layer), 은닉 레이어(Hidden Layers), 그리고 출력 레이어(Output Layer)로 구성되어 있습니다.  각각의 레이어에는 노드들이 있는데, 노드들의 값은 이전 층의 노드들과 간선의 가중치를 곱한 값의 합에 의해서 결정됩니다.

 

인공신경망 구조

 

인공신경망 중 딥러닝(Deep Learning)은 인공신경망의 은닉 레이어(Hidden Layers)의 수가 3층 이상으로 구성된 경우를 말합니다.  딥러닝은 복잡한 문제를 해결하고자 할 때 사용됩니다.  은닉 레이어의 수가 많을수록 그 안에 노드의 수가 많을 수록 연산해야하는 수가 많아져서 보다 높은 사양의 인공 신경망 시스템이 필요합니다.

 

6) 전파와 역전파

인공신경망에서는 결과를 낼 때와 결과값과 원하는 값의 차이에 의한 보정을 하게 됩니다.  결과를 낼 때의 과정을 전파(propagation)이라고 합니다.  이때, 노드의 값은 이전 노드의 값을 이용하여 가중치를 곱한 합을 이용하여 결정합니다.

원하는 결과값과 계산된 결과값의 차이를 보정할 때에는 그 차이를 간선의 가중치값을 보정하는 방식으로 인공신경망은 학습하게 됩니다.  이 과정을 그림으로 보면 다음과 같습니다.

 

전파와 역전파

7) 활성화 함수(Activation function)

현재 노드의 값이 이전 노드들과 가중치의 곱들의 합을 계산한 후, 이를 지정된 함수로 해당 값을 변환하게되는데, 이 때, 지정한 함수를 활성화 함수라고 합니다.

신경망 회로(Neural Network)이 처음 나왔을때부터 활성화 함수는 사용되었는데, 당시에는 미분이 가능한 sigmoid나 tanh 함수들을 주로 사용했습니다.  이 중 sigmoid 함수가 많이 사용되었는데, 기울기가 사라지는 문제와 역전파가 느린 문제가 대두되어서, 은닉 레이어의 개수가 많아지면, 입력에서 은닉 레이어로 가는 가중치의 값이 거의 변하지 않는 문제가 있었습니다.

이런 문제로 딥러닝에서는 은닉 레이어에서 ReLU(Rectified Linear Unit) 활성화 함수를 많이 이용합니다.  1차식을 사용하여 기울기가 사라지는 문제를 해결하고, 역전파의 속도를 증가시킵니다.  음수값의 경우에는 입력값이 무시되는 문제가 있어서 이를 해결하고자 SELU(Scaled Exponential Linear Unit) 등과 같이 음수값을 처리해주는 활성화 함수를 대안으로 사용합니다.

 

활성화 함수의 필요성

비선형 활성화 함수는 다층 인공 신경망을 구축하기 위해서는 필수적입니다.  만약 \(y = ax\)와 같은 선형 활성화 함수만 이용했거나 활성화 함수를 사용하지 않았다면, 다층 인공 신경망은 단순 신경망으로 바꾸어도 됩니다.

 

 

그림에서와 같이 왼쪽의 다층 신경망에서 활성화 함수가 사용되지 않았다면, 1번 노드는 \(xw_{11} + yw_{12}\) 값이 되고, 2번 노드도 비슷하게 계산됩니다.  결국 출력 노드 o는 \( ax + by \) 형태로 되게 됩니다.  즉 단순 신경망 형태로 바꾸어도 동일하게 됩니다.  그래서 비선형 활성화 함수는 꼭 필요합니다.

 

8) 단일 신경망에서 배타적 합(XOR) 문제

신경회로망(Neural Network)이 대두되었을 때, 간단한 배타적 합 문제도 풀기 어렵다는 것이 대두되었습니다.  단일 신경망으로는 배타적 합 문제를 풀기 어렵습니다.  다층 구조에서는 배타적 합 문제를 풀 수 있지만, 말끔하게 정리되지는 않습니다.

 

Left : XOR Problem, Right : Single Layer Neural Network

그림에서 왼쪽은 두개의 입력에 대하여 배타적 합 문제를 표시한 것입니다.  이를 오른쪽에 있는 단일신경망으로 구현하려면, O의 값은 \( O = xw_1 + yw_2 \) 형태가 되어서 데이터를 1차 직선이 되게 됩니다.  어떤 활성화 함수를 쓰더라도 사실상 왼쪽 그림과 같은 데이터를 구분지을 수가 없습니다.

출력단을 계산할 때, \( O = x^{w_1} y^{w_2} \) 형태로 된다면 될 수 있겠지만, 합을 이용해서는 어려운 부분입니다.

 

9) 간단한 입력에 대한 비주얼 페이지

현재는 대부분의 경우에 텐서플로나 파이토치와 같은 라이브러리를 이용해서 딥러닝을 구현하고 있습니다.  딥러닝 모델만 세우면, 사실상 프로그램 부분은 신경쓰지 않아도 될만큼 상당부분은 전형적인 작업입니다.

비주얼 형태로 딥러닝을 구성할 수 있고, 모니터링 등도 비주얼하게 검사할 수 있다면, 비 프로그래머도 손쉽게 딥러닝을 이용해서 많은 작업을 할 수 있습니다.

현재 텐서플로 사이트에서는 간단한 예제에 대해서 딥러닝을 해볼 수 있는 비주얼 페이지를 제공하고 있습니다.  아마 미래에는 복잡한 인공지능 라이브러리를 사용하지 않고 쉽게 비주얼 작업을 통해서 진행할 수 있을거라고 생각됩니다.

 

https://playground.tensorflow.org 

 

Tensorflow — Neural Network Playground

Tinker with a real neural network right here in your browser.

playground.tensorflow.org

 

플레이그라운드 텐서플로 사이트에 가면 간단한 입력 패턴에 대해서 비주얼하게 데이터를 처리하는 부분을 볼 수 있습니다.

 

10) 해를 찾아가는 방법 : optimizer

인공신경망에서는 출력의 오차를 이용해서 인공신경망의 가중치값을 조절하는 역전파를 하게 됩니다.  역전파를 할때에는 수학적으로 볼때 함수의 해를 찾아가는 것과 비슷합니다.  이것을 경사하강법(Gradient Descent)라고 합니다.  수학에서는 기껏해야 2차원 입력에 대한 결과를 가지고 해를 찾지만, 인공 신경망에서는 다차원 입력을 다룹니다.  그러다보니 다양하게 해를 찾는 방법이 제안되고 있습니다.

 

various optimizers

11) 딥러닝(Deep Learning)

딥러닝이 최근에 들어서 개발이 된 이유는 인공신경망(Artificial Neural Network)을 심층화하기에는 하드웨어의 성능이 따라주지 않았던 이유가 컸습니다.  인공신경망은 많은 행렬 연산이 필요합니다.  행렬 연산을 한번 하기 위해서는 많은 수의 곱셈과 덧셈 연산이 필요합니다.  그렇지만, 행렬 연산은 적절한 병렬처리가 가능하다면, 연산시간을 대폭 줄일 수 있는 장접도 있습니다.  이런 역할을 하기에 적절한 것은 무수한 병렬 연산을 하는 그래픽 카드의 GPU(Graphic Process Unit)가 있습니다.  GPU는 많은 정점(Vertex)들을 처리하기 위해서 병렬 연산을 합니다.  실제 정점처리를 할 때에는 4x4 행렬과 정점들을 곱하는 행렬 연산을 하게 됩니다.  이것을 확대하게 되면, 보다 복잡한 행렬 연산도 가능합니다.

최근의 딥러닝 라이브러리는 바로 이러한 GPU의 기능을 사용할 수 있도록 하고 있습니다.  대표적으로 텐서플로(Tensorflow)와 파이토치(PyTorch) 라이브러리가 있습니다.  현재는 nVidia에서 나온 GPU의 CUDA를 이용하고 있습니다.  텐서플로는 구글에서 개발된 라이브러리로 구글에서 개발한 TPU도 지원합니다.  단 구글의 TPU는 일반에게 공개되지 않았기 때문에 하드웨어 구매는 어렵지만, 구글의 코렙(colab)을 통하여 사용해볼 수 있습니다.  알파고 초기 버전은 CUDA를 사용했지만, 알파고 리(이세돌 9단과 경겨한 인공지능 바둑)에서는 구글 TPU를 사용했습니다.

 

2. 강화학습 소개

 

1) 알파고

알파고는 프로기사를 최초로 이긴 인공지능 바둑 프로그램입니다.  이전의 인공지능 바둑 프로그램은 아마추어 4급정도의 실력을 갖추었다고 알려져 왔습니다만, 실제 전적은 그보다는 낮습니다.  알파고는 최고의 바둑기사중 한명인 이세돌 9단과 5판 중 4판을 이겼습니다.

알파고는 구급 딥마인드에서 개발되었습니다.

알파고 딥마인드는 프로기사인 판후이와 함께 개발되었습니다.  알파고 초기 버전은 1,202개의 CPU와 176개의 GPU를 이용한 하드웨어상에서 운용되었습니다.  실제 학습을 위해서 수개월을 거쳐서 학습을 하였습니다.  이세돌 9단과 경기를 하였던 알파고 리는 176개의 GPU를 48개의 TPU로 교체하여 동작되었습니다.  마스터 버전과 제로 버전에서는 단 4개의 TPU만 사용하고, 이전의 알파고와의 전적에서 제로 버전의 경우 100번 경기에 100번을 이기는 전적을 보였습니다.

알파고 초기버전은 무수한 프로기사들의 기보들을 통해서 학습하고, 학습이 된 상태에서는 강화학습을 통해서 학습하였습니다.  알파고를 통하여 강화학습이 널리 알려지는 계기가 되었습니다.  알파고 제로 버전의 경우에는 순수하게 강화학습만을 이용해서 학습하였습니다.

알파고를 통하여 딥러닝에 대하여 많은 관심을 가지게 되었고, 인공신경망이 재조명된 계기가 되었음은 분명합니다.

 

2) 강화학습 사례

대표적인 강화학습 사례로는 역시 알파고입니다.  이세돌 9단과의 경기는 세기의 관심을 가진 대국이었습니다.

 

 

알파고 이후에는 게임에서 강화학습을 사용하였습니다.  아타리 게임을 비롯해서 스타크래프트 등 다양한 게임을 플레이할 수 있는 것을 보여주고 있습니다.

 

 

728x90

댓글