레플리
글 수 203


K-001.jpg

 

https://worldmodels.github.io/

 

 

 

며칠 전 구글 브레인에서 새로운 딥러닝 강화학습 알고리즘을 발표하였습니다. 월드 모델(World Models)이라는 것인데 DQN(Deep Q-Networks)과 GAN(Generative Adversarial Network) 이후로 가장 인상적인 딥러닝 방식이었습니다.

 

특히 인터렉티브한 그림과 동영상을 보여주며 직접 테스트 해볼 수 있기 때문에 매우 흥미로울 뿐만 아니라 알고리즘을 쉽게 이해하는데도 도움이 되었습니다. 여기서는 최대한 간단하게 개념만 설명드리도록 하겠습니다.

 

 

 

월드 모델이란?

 

643x0w.jpg

 

우리의 뇌는 경험을 통해 학습을 합니다. 그중 대표적인 방법으로 머리속에서 모델을 만들어 시뮬레이션을 하기도 합니다. 예를 들어 위와 같은 자동차 게임을 할때 처음에는 조작 방법을 모르기 때문에 아무거나 누르면서 이것저것 시도를 해봅니다. 그리고 내가 한 행동이 어떻게 게임 속 환경에 변화를 주는지 보면서 작동 방식을 이해하게 됩니다.

 

이런 경험들이 모이면 머리속에서 추상적인 모델이 만들어집니다. 핸들을 돌리면 자동차가 그쪽 방향으로 움직임, 브레이크를 누르면 속도가 감소됨, 엑셀을 누르면 속도가 증가됨, 도로를 따라 이동, 다른 차가 나타나면 피함 등 최대한 단순화된 세계를 구성합니다. 월드 모델은 이러한 뇌의 동작 방식과 매우 유사하게 학습을 할 수 있는 딥러닝 방법입니다.

 

 

 

월드 모델의 구조

 

K-001.png

 

월드 모델은 위의 그림과 같이 비전, 메모리, 컨트롤러의 세 부분으로 이루어져 있습니다. 비전은 화면 인식, 메모리는 기억 및 예측, 컨트롤러는 행동 및 학습을 수행합니다.

 

 

 

< Vision - VAE >

 

K-002.png

 

VAE(Variational AutoEncoder)는 GAN과 비슷한 생성 모델입니다. 인코더에서 화면을 압축하고 디코더에서 다시 원래 화면으로 복원합니다. 여기서 만들어진 잠재 벡터(latent vector) z가 추상화된 이미지의 정보라고 할 수 있습니다. 또한 임의의 z값으로 학습 데이터에 없던 새로운 이미지를 생성할 수 있다는 것이 VAE의 장점입니다.

 

 

 

< Memory - RNN >

 

K-001.png

 

RNN(Recurrent Neural Network)은 시간적인 순서가 중요한 신경망입니다. 위의 그림같이 VAE에서 현재 화면을 압축한 z값과 행동 a를 입력으로 받습니다. 그리고 새로운 z값을 출력하는데 이 벡터를 VAE에서 디코드하면 바로 다음 단계에 나타날 화면을 볼 수 있습니다. 간단히 말해서 과거와 현재의 경험을 통해서 앞으로 일어날 일을 예상할 수 있습니다.

 

 

 

< Controller - Linear & Evolution Strategies >

 

K-002.png

 

컨트롤러는 행동을 결정하는 부분입니다. 위의 식과 같이 간단한 선형 모델로 이루어져 있습니다. z는 현재 화면의 압축된 정보이고 h는 RNN의 히든 상태로 미래의 정보를 나타냅니다. 여기서 파라미터인 W는 CMA-ES(Covariance-Matrix Adaptation Evolution Strategy)라는 진화 전략을 사용해서 결정합니다. 

 

 

 

< 전체 구조 >

 

K-002.png

 

월드 모델에서 비전, 메모리, 컨트롤러는 위와 같은 흐름으로 동작합니다.

 

 

 

K-001.png

 

이를 코드로 구현하면 위와 같습니다. cumulative_reward는 각 단계에서의 보상을 누적하여 합한 것입니다. 진화 알고리즘에서 적합도를 결정하는데 바로 이 누적 보상값을 사용합니다.

 

 

 

Deep Q-Networks와의 차이

 

딥러닝 강화학습의 대표적인 방법으로 딥마인드가 발표한 DQN을 들 수 있습니다. 월드 모델은 DQN과 상당히 다른 접근 방법을 가지고 있습니다. 

 

 

 

< 예측 모델 >

 

96f1ced9cae8f1ade00e311a230.jpg

 

DQN에서 입력은 과거와 현재 화면만 사용합니다. 그렇기 때문에 미래의 일은 알지 못합니다. 다만 이전에 했던 반복적인 경험을 통해 지금 상태에서 어떤 행동이 최선인지는 알고 있습니다.

 

예를 들어, 지금 목이 마르고 눈 앞에 물컵이 놓여 있다고 가정하겠습니다. 우리는 보통 행동을 결정하기 전에 미래를 예측합니다. 물을 먹으면 컵안의 물이 사라지고 갈증이 해결될 것이라는 것을 상상하고 자연스럽게 물을 마십니다.

 

하지만 DQN의 경우 물을 마시는 것이 갈증 해소라는 목표를 달성하는데 옳은 행동이라는 것은 알지만 구체적으로 컵안의 물이 어떻게 될 거라는 것은 인지하지 못합니다. 인간의 무의식과 비슷한 점이 있습니다.

 

 

 

K-002.jpg

 

이에 반해서 월드 모델은 바로 다음에 일어날 화면을 예상하고 이를 근거로 행동을 결정합니다. 예를 들어, 위와 같이 그림을 그릴 때 머리속으로 내가 그린 선이 어떤 모양으로 나타날지 미리 상상한 다음 실제로 행동에 옮기게 됩니다. 미래를 예측하고 보다 복잡한 추론을 할 수 있다는 면에서 인간의 의식과 조금 유사하기도 합니다.

 

 

 

< 행동 학습 >

 

7a590cdb4467fc165b26487d566f32fb.jpg

 

DQN은 기본적으로 Q-learning을 기반으로 하고 있습니다. Q(s, a)는 현재 상태 s에서 어떤 행동 a가 가장 좋은 것인지 알려주는 함수입니다. 위와 같이 목표 G를 찾는 길찾기의 문제를 예로 들어보겠습니다.

 

G에 도착하는 행동을 하면 보상값으로 100을 얻습니다. 그리고 계속 반복적인 경험을 통해 이 보상값이 조금씩 주변 상태로 감소되면서 퍼져 나갑니다. 그래서 멀리 떨어져 있는 상태 위치에서도 목표를 향해 어떤 행동이 옳은 것인지 알 수 있습니다.

 

 

 

K-001.png

 

월드 모델에서는 현재 화면 z와 미래의 화면 정보인 h를 입력으로 받아 선형 함수로 행동을 결정합니다. 그리고 이 함수의 파라미터는 진화 전략을 사용하여 최적화를 합니다. 진화 전략은 환경에 살아남는 자손을 계속 번식하여 해를 구하는 유전 알고리즘과 비슷한 방식입니다.

 

 

 

정리

 

K-001.jpg

 

월드 모델의 장점 중 하나는 실제 세계에서 훈련을 할 필요없이 가상의 환경에서 할 수 있다는 것입니다. 비전과 메모리 부분만 미리 생성되어 있다면 컨트롤러의 행동을 학습하는 것은 시뮬레이션으로 가능합니다. VAE에서 임의의 이미지를 생성할 수 있기 때문입니다.

 

우리가 꿈을 꾸는 이유 중 하나는 경험했던 일들을 반복적으로 머리속에서 수행함으로써 학습을 좀 더 빠르게 하기 위해서라는 가설도 있습니다. 이와 비슷한 방법을 월드 모델이 할 수 있습니다. 시뮬레이션으로 미리 학습을 한 후에 진짜 환경에서 동작하도록 한다면 좀 더 효과적인 학습이 가능합니다.

 

개인적으로는 DQN보다 월드 모델이 실제 우리 뇌의 동작과 유사하지 않나 생각이 듭니다. 과거와 현재만 아는 것보다 미래를 예측하는게 좀 더 복잡한 추론을 하는데 도움이 됩니다. 앞으로 이와 관련된 새로운 딥러닝 기술이 많이 발전하기를 기대해 봅니다.

 

 

 

< 인공지능 개발자 모임 >

- 페이스북 그룹에 가입하시면 인공지능에 대한 최신 정보를 쉽게 받으실 수 있습니다.

https://www.facebook.com/groups/AIDevKr/


NeuroWhAI

2018.04.01 01:18:51
*.64.194.131

와;; 정말 갈수록 사람과 놀랍도록 닮아가네요. 사람을 닮아가는게 곧 더 나은 학습 알고리즘이 된다는 것도 흥미롭고요.

특히 레이싱 게임 예시에서 일직선 도로 이미지를 입력으로 주고 z를 바꾸면 커브길로 바뀌는데 이게 마치 사람이 '곧 커브길이 나올 수 있으니 조심하자'라고 생각하는 것 같기도 하네요.

깊은바다

2018.04.01 05:09:54
*.68.247.188

미래의 이미지를 생성해서 예측한다는게 정말 대단하지 않나요. 이쪽 방향으로 많은 연구가 되었으면 좋겠습니다.

사지방컴

2018.04.01 02:01:08
*.194.42.202

인공지능이 말그대로 '꿈'을 꾸고 있는 것 같습니다.

깊은바다

2018.04.01 05:10:37
*.68.247.188

저자도 꿈이라는 것을 매우 강조하고 있더라구요. 그게 이 알고리즘의 중요한 특징인 듯 합니다.

List of Articles
제목 글쓴이 날짜 조회 수
딥러닝 역사 깊은바다 2018-07-10 749
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 깊은바다 2018-06-26 2675
남세동의 딥러닝 이야기 깊은바다 2018-06-22 900
이미지 탐지기 쉽게 구현하기 - Tensorflow Hub 깊은바다 2018-06-20 3986
꽃이름이 궁금해? 다음 앱 AI에 물어봐! 깊은바다 2018-06-07 447
텐서플로와 케라스 코드 비교 깊은바다 2018-06-06 3156
애니메이션을 자동으로 만들어주는 GAN 깊은바다 2018-05-11 3413
Style Transfer [1] NeuroWhAI 2018-04-21 1897
쉽게 씌어진 GAN 깊은바다 2018-04-11 1224
Recurrent Neural Network (RNN) 이해하기 - MNIST 숫자 인식 깊은바다 2018-04-11 878
구글의 새로운 딥러닝 강화학습인 월드 모델(World Models) file [4] 깊은바다 2018-04-01 5511
딥러닝 텐서플로를 사용하여 코카콜라 병뚜껑 경품번호 인식 깊은바다 2018-01-23 8607
하나의 얼굴 이미지로 다양하게 변형된 얼굴을 만드는 StarGAN [1] NeuroWhAI 2017-12-30 1301
당근마켓에서 딥러닝 활용하기 - 불량 게시물 검사 깊은바다 2017-12-23 818
이미지를 문장으로 설명하는 딥러닝 코드 file 깊은바다 2017-12-15 2925