게임을 배우는 딥러닝~강화학습

사람은 태어나서 부모나 가족, 사회에서 지도학습, 강화학습, 비지도학습의 각 부분이 고르게 적용되지만 간혹 이상한 환경에 놓이면 한 가지 학습법이 특히 많아지는 경우가 생기기도 한다.

일반적으로 시행착오로 배우고 경험이 누적돼 시행착오를 줄이는 방법으로 나아가지만 경험의 누적은 책이나 미디어, 대화 등을 통한 간접경험의 누적으로 보다 빠른 경험 축적을 추구한다.이처럼 Explorer(탐색을 통한 경험 축적)와 Explorer(경험 활용)에서 행동이 우아해지고 보수화된다.이것의 기반은 결국 보상으로서 칭찬이나 보수, 도움 같은 것을 위해 정제된 행위로 만들어 간다.

강화학습은 지도학습과 비지도학습의 중간 정도 어딘가에 있는 학습법으로 우리 학습법과 매우 유사하다.강화학습은 현재 상태(State)에서 어떤 행동(Action)을 취하는 것이 최적인지 학습하는 것으로 한마디로 정의하면 시행착오로 배우고 경험을 쌓아 시행착오를 줄인다.

행동을 취할 때마다 외부 환경에서 보상(Reward)이 주어지며, 이 보상을 극대화하는 방향으로 학습을 한다.

예를 들어 사람(Agent)은 이 세상(Environment)을 살아가는 매 순간(State)마다 어떤 결정(Decision)을 하고 행동(Action)을 해야 하는데, 그 행위(Action)는 보상(Reward)을 세상(Environment)에서 받음으로써 동물이 먹이를 얻을 수 있는 방법으로 행동이 달라지듯 경험이 축적된다.

아기가 걷는 법을 배우는 과정을 예로 들면 아기(agent)는 부모(환경)의 칭찬(보상:reward)을 받으며 다리를 비틀거리며(action) 철거 수를 줄이는 행위를 누적하면서 나중에 걷게 된다.

강화학습(Reinforcement Learning:RL)은 Q-Learning이 유명한데, Q-Learning은 무작위 행동 빈도를 낮추면서 세상이 주는 보상에 대한 경험을 쌓고 세상의 다양한 형태에 대응할 수 있는 가장 올바른 행동양식을 찾는 학습방법이며, Q Value는 특정 상태에서 액션을 수행했을 때 기대되는 보상의 합으로 보상의 최대치를 따른다. Q-Learning을 딥러닝에 적용한 DQN은 초기에는 큰 인기를 얻었으나 이러한 Q-Learning의 위치는 아래 트리에서 확인하자.

2013년 1~3월 영국 딥마인드는 구글에 인수되기 전 강화학습을 이용한 게임 논문을 발표한다.논문 제목이 playing atari with deeprein forcement learning이라는 https://www.youtube.com/embed/V1eYniJ0Rnk이 논문 이후 강화학습이 많아 인기를 끌면서 많은 기업이 개발에 돌입하지만 딥마인드는 이후 구글에 인수돼 DQN보다 성능이 좋은 A3C를 발표한다.

자세한 내용은 UC Berkeley 강의 자료를 참조하십시오: http://rail.eecs.berkeley.edu/deeprlcourse/

최근에는 DQN보다 A3C나 폴리시그래디언트 방식이 더 인기 있는 것으로 알려져 있다.A3C(Asynchronous Advantage Actor-Critic) 알고리즘은 Replay Memory를 대체할 여러 에이전트(Agent)를 비동기식(Asynchronous)으로 동시에 학습시킴으로써 학습 성능을 높인 것이다.

이처럼 CNN을 적용한 DQN은 게임을 너무 잘해서 사람을 이기기도 하지만 하늘색 DQN은 회색 사람 플레이어보다 우수한 게임이 많다.

특히 브레이크아웃과 같은 비디오 게임은 사람을 완전히 추월하지만 맨 아래 몬테주마의 레전드 게임은 DQN 학습이 0%라는 전혀 학습하지 못하고 있다.즉 이 게임이 다른 게임에 비해 게임 복잡도가 상당히 높다는 것으로 A3C에서는 조금 있다.

상황이 이렇다 보니 지금 상용 게임인 스타크래프트 같은 것을 처리하려면 연구가 더 필요할 것으로 쉽게 예측된다.현재 AIIDE, CIG, SSCAIT가 세계 3대 스타크래프트 AI 대회로 알려져 있는데, 8명으로 구성된 삼성SDS SAIDA 팀이 2018년 11월 AIIDE 스타크래프트 AI 대회에서 우승했다.한국 엔지니어들도 상당한 실력이다. 대단해.

아무래도 딥러닝이 게임을 배우는 방식이 사람이 게임을 배우는 방식보다 난이도가 높지만 사람은 게임 설명서를 보는데 딥러닝은 오직 영상만 제공되고 규칙은 시행착오로 스스로 찾아낸다.

이런 강화학습이 좋은 점은 무엇보다 다른 학습에서 요구되는 데이터나 라벨이 적게 요구돼 기계 스스로 시행착오로 학습을 찾아간다는 것이다.덕분에 로봇을 걷게 하거나 자율주행, 자연어 처리, 게임 등에 쓰이는 기술로 자리 잡았다.

이쯤에서 강화학습이 시작되는 간단한 이론부터 살펴보자.

에이전트(예를 들어 사람이나 캐릭터)가 행동해 보상을 받으면 행동은 환경의 변화를 낳고 에이전트는 다시 새로운 행동을 해야 하는 상황의 반복이 되지만 결국 보상을 더 얻기 위한 행동 결정이 중요해진다.

다음 행동을 선택하는 방법에 대한 규칙을 정책(policy)이라고 하는데 집값이 급등하면 종부세를 올려 집값을 잡으려는 정책 수립 같은 정책 개념이다.

이러한 상황을 정형화하면 어떤 상태가 있고 행동이 있을 수 있으므로 상태와 행동으로 다이아를 구성할 수 있다.그리고 한 상태에서 다음 상태로 바뀔 때 보상이라는 과정이 첨가되면 된다.다만 다음 상태의 확률은 현재 상태와 현재 행동에 의해서만 영향을 받고 과거의 영향을 배제시킨 규정을 적용하여 완성하면 마르코프 결정 과정이 완성된다.

상태 변화는 확률이 결정되고, 상태 변화는 정해진 행동을 해야 하며, 이때 누적 보상이 최고가 되는 행동 절차를 스스로 찾아 상태 변화를 지속하되 확률이 0%가 되면 그 상태 변화 연결은 끊어진 것이다.

에이전트가 확률적 환경 속에서는 동일한 행동을 하더라도 동일한 보상을 받을 수 있는 상황이 나오기 때문에 즉시 보상과 미래 보상의 가치를 달리하여 길고 잘 동작시켜야 한다.즉 미래보상의 가중치를 즉시 보상 가중치보다 낮게 설정하는 차감된 보상을 구성해 항상 차감된 미래보상이 최대가 되도록 행동을 선택하는 전략(policy)이 좋은 전략이다.

이렇게 차감된 미래보상인 Q-함수를 정의해 Q값이 가장 큰 행동을 선택하는 방식으로 방정식을 만들고, 이를 반복적으로 돌려 Q-함수를 계산할 수 있다면 정책 수립이 된다.현재 상태와 행동으로 구성된 Q-값으로 다음 상태와 행동 Q-값으로 함수를 작성하면

상기와 같이 베르만 방정식(bellman equation)이 만들어진다.함수를 보면 즉시 보상과 다음 상태에서 얻을 수 있는 미래 최대 보상의 합이 Q값이 된다.현재 상태에서 추정된 큐값 = 보상 + 다음 상태에서 추정된 큐값

이렇게 구성하고 반복하면 큐함수를 구할 수 있으므로 컴퓨터에 적용하면 되지만 환경이 복잡하고 크기가 넓으면 기하급수적으로 계산영역이 넓어져 실사용이 불가능해진다.

딥마인드에서는 이러한 문제를 해결하기 위해 Q-Learning을 DQN으로 수정했는데, 4개가 추가돼 현실 사용이 가능해졌다.1) Q-Learning 알고리즘에 딥러닝 적용 2) CNN 기법 추가 3) 경험 재생 추가 4) 목표 네트워크 분리

딥마인드는 이에 살을 붙이고 개선해 결국 알파고를 만들어 신약 연구를 하는 단계로 가고 있다.테슬라는 자율주행에 이 기술을 사용하고 보스턴 다이나믹스는 로봇에 이 기법을 사용하면서 강화학습이 이처럼 최근 이슈 기술로 떠오르고 있다.

내용이 길어지는 이쯤에서 마무리하고 실제 코딩은 다음 포스트로 미룬다.

아래에 좋은 참조 사이트가 있다.https://hackernoon.com/mit-6-s094-deep-learning-for-self-driving-cars-2018-lecture-3-notes-deep-reinforcement-learning-fe9a8592e14a

By 스즈칸

error: Content is protected !!