2019.06.11

"알파고를 만든" 강화 학습 이해하기

Martin Heller | InfoWorld
구글 딥마인드(DeepMind)의 알파고(AlphaGo)는 사람들에게 친숙한 이름이다. 알파고는 2015년 프로 2단 바둑 기사와의 시합에서 승리하면서 유명세를 탄 이후, 개선된 알파고 버전은 세계적인 프로 바둑 기사인 이세돌 9단과의 시합에서도 승리하고 2017년 5월에는 세계 랭킹 1위인 커제 바둑 기사와의 상대로도 이겼다. 2017년 후반 새로운 세대의 소프트웨어로 나온 알파제로(AlphaZero)는 기존 알파고보다 더욱 강력했으며 바둑뿐만 아니라 체스와 쇼기(일본식 장기)도 학습했다.

알파고와 알파제로는 모두 강화 학습(reinforcement learning)을 통해 학습한다. 또한 강화 학습 네트워크의 일부로 심층신경망을 사용해 결과 가능성을 예측한다.

이번 기사에서는 강화 학습이 어떻게 사용되고 어떻게 작동하는지를 전체적인 관점에서 설명하고, 이후 알파고와 알파제로를 다시 살펴보자(계산이나 마르코프 결정 프로세스(Markov Decision Process), 알고리즘의 복잡다단한 세부 사항까지 다루지는 않는다). 

 

ⓒ IDG


강화 학습이란 

머신러닝에는 비지도 학습(unsupervised learning), 지도 학습(supervised learning), 강화 학습(reinforcement learning)의 세 가지 종류가 있다. 각 학습은 서로 다른 종류의 문제 해결에 유용하다.

비지도 학습은 레이블이 없는 완전한 데이터 집합에서 작동하며 데이터의 구조를 밝혀내는 데 유리하다. 클러스터링, 차원 축소, 특성 학습, 밀도 추정 등에 사용된다.

지도 학습은 레이블이 있는 완전한 데이터 집합에서 작동하며 개별 데이터에 대한 분류 모델과 연속 데이터에 대한 회귀 모델을 만드는 데 유리하다. 지도 학습으로 생산되는 머신러닝 또는 신경망 모델은 일반적으로 예측에 사용된다. 예를 들어 "이 대출자가 대출금을 갚지 않을 가능성은 얼마나 되는가" 또는 "다음 달 얼만큼의 재고를 보유해야 하는가"와 같은 질문에 대한 답을 얻는 데 사용된다.

강화 학습은 일부 가치를 극대화하는 방식으로 행위자(actor) 또는 에이전트(agent)를 학습시켜 환경에 응답한다. 이해를 돕기 위해 구체적으로 살펴보자.

예를 들어, 알파고는 바둑(환경)을 두는(행위) 방법을 학습하기 위해 먼저 대량의 과거 바둑 기보를 통해 인간 바둑 기사들을 모방 학습했다(예비 학습). 그런 다음 독립적인 자기 자신의 인스턴스를 상대로 수없이 바둑을 두면서 시행착오를 거쳐 경기력을 개선했다(강화 학습).

주목할 점은 알파고는 단(검은띠)급 인간 기사들이 흔히 하는 것처럼 승리의 규모를 최대화하려고 하지 않는다는 것이다. 또한 초보 인간 기사와 같이 즉각적인 형세를 최적화하려고도 시도하지 않는다. 알파고는 최종적인 승리의 추정 가능성을 극대화해서 다음 수를 결정한다. 1집 차이로 이기든 50집 차이로 이기든 알파고에게는 아무런 상관이 없다.


강화 학습 애플리케이션과 콘볼루션 신경망 

강화 학습은 바둑, 장기, 체스와 같은 보드 게임 외의 다른 분야에도 사용된다. 다른 두 분야로 비디오 게임 하기, 독립적으로 작업을 수행하도록 로봇 가르치기가 있다.

딥마인드는 2013년 강화 학습을 사용해 고차원적 지각 정보로부터 직접 제어 정책을 학습하는 방법에 관한 논문을 게시했다. 애플리케이션은 아케이드 학습 환경(Arcade Learning Environment)의 7개 아타리(Atari) 2600 게임으로, Q 학습(강화 학습의 일반적인 한 가지 방법)의 변형을 사용해 학습했으며 6개 게임에서 이전의 접근 방법을 앞질렀고 3개 게임에서 인간 전문가보다 앞섰다.

콘볼루션 신경망(convolutional neural network)의 입력은 원시 픽셀, 출력은 미래의 보상을 예측하는 가치 함수였다. 콘볼루션 신경망 기반의 가치 함수는 비교적 보편적인 선형 가치 함수보다 더 효과적이었다. 콘볼루션 신경망은 인간의 시각령을 모조하도록 설계되었으므로 입력이 이미지인 경우 흔히 사용된다.

딥마인드는 이후 실시간 전략 게임인 스타크래프트 II로 연구 영역을 확장했다. 알파스타(AlphaStar) 프로그램은 스스로를 상대로 게임을 하면서 반복 학습한 결과 최소한 프로토스 대 프로토스 경기에서는 최상위 인간 선수들을 거의 항상 이길 수 있을 정도의 수준으로 발전했다. 

로봇 제어 역시 심층 강화 학습 방법이 주로 사용되는 문제 영역이다. 강화 학습은 학습과 심층 신경망이 결합되며 심층 신경망은 비디오 프레임에서 특성을 추출하도록 학습된 콘볼루션 신경망인 경우가 많다. 그러나 실제 로봇을 사용한 학습에는 많은 시간이 소비된다. 보통 연구에서는 학습 시간을 단축하기 위해 실제 드론, 로봇, 개, 인간형 로봇 또는 로봇 팔에 알고리즘을 적용하기 전에 시뮬레이션을 거친다.


강화 학습의 원리

앞서 언급했듯이 강화 학습에는 환경과 상호작용하는 에이전트가 사용된다. 환경에는 다수의 상태 변수가 존재할 수 있다. 에이전트는 정책에 따라 행위를 수행하며, 이 정책은 환경의 상태를 변경시킬 수 있다. 환경 또는 학습 알고리즘은 에이전트 보상 또는 벌칙을 전송해 강화를 실현한다. 이것이 정책을 수정할 수 있고 정책의 수정이 곧 학습을 형성한다.

배경을 설명하자면 이는 1950년대 초반 리처드 벨만이 연구한 시나리오다. 벨만은 최적 제어 및 마르코프 결정 프로세스 문제를 해결하기 위한 동적 프로그래밍(Dynamic programming)을 개발했다. 동적 프로그래밍은 다양한 애플리케이션을 위한 많은 중요한 알고리즘의 핵심이며 벨만 방정식은 강화 학습에서 중요한 부분을 차지한다.

보상은 즉각 좋은 것을 나타낸다. 반면 가치는 장기적으로 좋은 것을 가리킨다. 일반적으로 상태의 가치는 미래 보상의 예상된 합계다. 행위 선택(정책)은 즉각적인 보상이 아닌 장기적 가치를 기반으로 계산되어야 한다.

강화 학습을 위한 효과적인 정책은 탐욕 또는 개발(현재 정책이 가장 가치가 크다고 여기는 행위를 실행하는 것)과 정책을 개선하는 데 도움이 될 수 있는 임의의 행위인 탐구 사이에서 균형을 찾아야 한다. 이 균형을 제어하기 위한 알고리즘은 많다. 탐구를 짧은 시간 동안 사용하는 알고리즘도 있고, 순전한 탐구로 시작해 학습된 정책이 강화됨에 따라 서서히 거의 순전한 탐욕으로 수렴되는 알고리즘도 있다.

강화 학습을 위한 알고리즘은 많은데, 모델 기반(예: 동적 프로그래밍)도 있고 모델이 없는(예: 몬테 카를로) 알고리즘도 있다. 모델이 없는 방법이 실제 강화 학습에서 더 유용한 경향이 있다. 이 방법은 경험을 통해 학습하고, 정확한 모델은 대체로 만들기가 어렵기 때문이다.

강화 학습 알고리즘과 이론에 대해 더 자세히 알아보고자 하는 경우, 마르코프 결정 프로세스에 익숙하다면 리처드 S. 서튼과 앤드류 G. 바토가 저술한 <강화 학습: 입문(Reinforcement Learning: An Introduction)>을 추천한다. 


알파고와 알파제로

앞서 언급했듯이 알파고는 바둑을 학습하기 위해 가장 먼저 인간의 바둑 경기 데이터베이스를 상대로 학습했다. 이 사전 단계를 통해 심층 신경망 기반의 가치 함수가 적절한 강도로 작동할 수 있게 됐다.

알파고는 다음 학습 단계로 자기 자신과 무수히 많은 경기를 치르면서 결과를 사용해 가치와 정책 네트워크의 가중치를 업데이트했다. 이 과정을 통해 프로그램의 실력이 대부분의 인간 바둑 기사를 뛰어넘었다.

알파고는 시합 중 각 수마다 그 위치에서 가능한 모든 수에 가치 함수를 적용해 승리로 이어질 가능성의 순위를 매긴다. 그 다음 가장 가치가 큰 수를 뒀을 때의 각 바둑판 형태에서 몬테카를로 트리 검색(Monte Carlo tree search) 알고리즘을 실행해 예견한 검색을 기반으로 승리할 가능성이 가장 높은 수를 선택한다. 이 승리 가능성을 사용해 각 수 트리를 검색하는 데 투입할 주의력의 가중치를 정한다.

이후의 알파고 및 알파제로 프로그램은 인간 경기 데이터베이스를 상대로 한 학습을 건너뛰었다. 경기 규칙과 강화 학습을 제외한 나머지는 모두 빼고 시작한 것이다. 처음에는 임의로 아무 수나 두는 것으로 시작했지만 스스로를 상대로 한 수백만 번의 경기를 통해 학습한 후에는 상당한 수준의 경기 능력을 달성했다. 알파고 제로는 3일 만에 100승 0패를 기록하면서 알파고 리(AlphaGo Lee)의 실력을 넘어섰고 21일째에 알파고 마스터(AlphaGo Master) 수준에 도달했으며 40일 후에는 이전의 모든 버전을 추월했다.

알파제로는 앞서 언급했듯이 체스와 장기도 학습하기 위해 알파고 제로를 일반화한 버전이다. 딥마인드 측에 따르면 알파제로 신경망에 필요한 강화 학습의 양은 게임의 스타일과 복잡성에 따라 달라지지만 여러 TPU에서 실행할 때 대략 체스는 9시간, 장기는 12시간, 바둑은 13일이다. 체스의 경우 알파제로의 지도 능력은 전통적인 체스 플레이 프로그램에 비해 훨씬 더 우수하며 검색에 필요한 트리 공간을 줄여준다. 알파제로는 각 결정당 1만 개의 수를 계산하면 되는데, 수동으로 제작된 가장 강력한 엔진인 스톡피시(Stockfish)의 경우 결정당 1,000만 개의 수를 계산해야 한다.

이러한 보드 게임은 마스터하기가 쉽지 않은 만큼 알파제로의 성공은 강화 학습과 신경망 가치 및 정책 함수, 지도식 몬테 카를로 트리 검색의 힘이 어느 정도인지 잘 보여준다. 또한 연구원의 기량과 TPU의 성능도 보여준다.

로봇 제어는 보드 게임이나 비디오 게임에 비해 더 어려운 AI 문제다. 실제 세계와 상호 작용하는 순간부터 예기치 못한 일이 발생하기 때문이다. 그러나 시연 수준이긴 해도 발전 중이며 현재 가장 강력한 접근 방법은 강화 학습과 심층 신경망을 사용하는 방법이다. editor@itworld.co.kr 


2019.06.11

"알파고를 만든" 강화 학습 이해하기

Martin Heller | InfoWorld
구글 딥마인드(DeepMind)의 알파고(AlphaGo)는 사람들에게 친숙한 이름이다. 알파고는 2015년 프로 2단 바둑 기사와의 시합에서 승리하면서 유명세를 탄 이후, 개선된 알파고 버전은 세계적인 프로 바둑 기사인 이세돌 9단과의 시합에서도 승리하고 2017년 5월에는 세계 랭킹 1위인 커제 바둑 기사와의 상대로도 이겼다. 2017년 후반 새로운 세대의 소프트웨어로 나온 알파제로(AlphaZero)는 기존 알파고보다 더욱 강력했으며 바둑뿐만 아니라 체스와 쇼기(일본식 장기)도 학습했다.

알파고와 알파제로는 모두 강화 학습(reinforcement learning)을 통해 학습한다. 또한 강화 학습 네트워크의 일부로 심층신경망을 사용해 결과 가능성을 예측한다.

이번 기사에서는 강화 학습이 어떻게 사용되고 어떻게 작동하는지를 전체적인 관점에서 설명하고, 이후 알파고와 알파제로를 다시 살펴보자(계산이나 마르코프 결정 프로세스(Markov Decision Process), 알고리즘의 복잡다단한 세부 사항까지 다루지는 않는다). 

 

ⓒ IDG


강화 학습이란 

머신러닝에는 비지도 학습(unsupervised learning), 지도 학습(supervised learning), 강화 학습(reinforcement learning)의 세 가지 종류가 있다. 각 학습은 서로 다른 종류의 문제 해결에 유용하다.

비지도 학습은 레이블이 없는 완전한 데이터 집합에서 작동하며 데이터의 구조를 밝혀내는 데 유리하다. 클러스터링, 차원 축소, 특성 학습, 밀도 추정 등에 사용된다.

지도 학습은 레이블이 있는 완전한 데이터 집합에서 작동하며 개별 데이터에 대한 분류 모델과 연속 데이터에 대한 회귀 모델을 만드는 데 유리하다. 지도 학습으로 생산되는 머신러닝 또는 신경망 모델은 일반적으로 예측에 사용된다. 예를 들어 "이 대출자가 대출금을 갚지 않을 가능성은 얼마나 되는가" 또는 "다음 달 얼만큼의 재고를 보유해야 하는가"와 같은 질문에 대한 답을 얻는 데 사용된다.

강화 학습은 일부 가치를 극대화하는 방식으로 행위자(actor) 또는 에이전트(agent)를 학습시켜 환경에 응답한다. 이해를 돕기 위해 구체적으로 살펴보자.

예를 들어, 알파고는 바둑(환경)을 두는(행위) 방법을 학습하기 위해 먼저 대량의 과거 바둑 기보를 통해 인간 바둑 기사들을 모방 학습했다(예비 학습). 그런 다음 독립적인 자기 자신의 인스턴스를 상대로 수없이 바둑을 두면서 시행착오를 거쳐 경기력을 개선했다(강화 학습).

주목할 점은 알파고는 단(검은띠)급 인간 기사들이 흔히 하는 것처럼 승리의 규모를 최대화하려고 하지 않는다는 것이다. 또한 초보 인간 기사와 같이 즉각적인 형세를 최적화하려고도 시도하지 않는다. 알파고는 최종적인 승리의 추정 가능성을 극대화해서 다음 수를 결정한다. 1집 차이로 이기든 50집 차이로 이기든 알파고에게는 아무런 상관이 없다.


강화 학습 애플리케이션과 콘볼루션 신경망 

강화 학습은 바둑, 장기, 체스와 같은 보드 게임 외의 다른 분야에도 사용된다. 다른 두 분야로 비디오 게임 하기, 독립적으로 작업을 수행하도록 로봇 가르치기가 있다.

딥마인드는 2013년 강화 학습을 사용해 고차원적 지각 정보로부터 직접 제어 정책을 학습하는 방법에 관한 논문을 게시했다. 애플리케이션은 아케이드 학습 환경(Arcade Learning Environment)의 7개 아타리(Atari) 2600 게임으로, Q 학습(강화 학습의 일반적인 한 가지 방법)의 변형을 사용해 학습했으며 6개 게임에서 이전의 접근 방법을 앞질렀고 3개 게임에서 인간 전문가보다 앞섰다.

콘볼루션 신경망(convolutional neural network)의 입력은 원시 픽셀, 출력은 미래의 보상을 예측하는 가치 함수였다. 콘볼루션 신경망 기반의 가치 함수는 비교적 보편적인 선형 가치 함수보다 더 효과적이었다. 콘볼루션 신경망은 인간의 시각령을 모조하도록 설계되었으므로 입력이 이미지인 경우 흔히 사용된다.

딥마인드는 이후 실시간 전략 게임인 스타크래프트 II로 연구 영역을 확장했다. 알파스타(AlphaStar) 프로그램은 스스로를 상대로 게임을 하면서 반복 학습한 결과 최소한 프로토스 대 프로토스 경기에서는 최상위 인간 선수들을 거의 항상 이길 수 있을 정도의 수준으로 발전했다. 

로봇 제어 역시 심층 강화 학습 방법이 주로 사용되는 문제 영역이다. 강화 학습은 학습과 심층 신경망이 결합되며 심층 신경망은 비디오 프레임에서 특성을 추출하도록 학습된 콘볼루션 신경망인 경우가 많다. 그러나 실제 로봇을 사용한 학습에는 많은 시간이 소비된다. 보통 연구에서는 학습 시간을 단축하기 위해 실제 드론, 로봇, 개, 인간형 로봇 또는 로봇 팔에 알고리즘을 적용하기 전에 시뮬레이션을 거친다.


강화 학습의 원리

앞서 언급했듯이 강화 학습에는 환경과 상호작용하는 에이전트가 사용된다. 환경에는 다수의 상태 변수가 존재할 수 있다. 에이전트는 정책에 따라 행위를 수행하며, 이 정책은 환경의 상태를 변경시킬 수 있다. 환경 또는 학습 알고리즘은 에이전트 보상 또는 벌칙을 전송해 강화를 실현한다. 이것이 정책을 수정할 수 있고 정책의 수정이 곧 학습을 형성한다.

배경을 설명하자면 이는 1950년대 초반 리처드 벨만이 연구한 시나리오다. 벨만은 최적 제어 및 마르코프 결정 프로세스 문제를 해결하기 위한 동적 프로그래밍(Dynamic programming)을 개발했다. 동적 프로그래밍은 다양한 애플리케이션을 위한 많은 중요한 알고리즘의 핵심이며 벨만 방정식은 강화 학습에서 중요한 부분을 차지한다.

보상은 즉각 좋은 것을 나타낸다. 반면 가치는 장기적으로 좋은 것을 가리킨다. 일반적으로 상태의 가치는 미래 보상의 예상된 합계다. 행위 선택(정책)은 즉각적인 보상이 아닌 장기적 가치를 기반으로 계산되어야 한다.

강화 학습을 위한 효과적인 정책은 탐욕 또는 개발(현재 정책이 가장 가치가 크다고 여기는 행위를 실행하는 것)과 정책을 개선하는 데 도움이 될 수 있는 임의의 행위인 탐구 사이에서 균형을 찾아야 한다. 이 균형을 제어하기 위한 알고리즘은 많다. 탐구를 짧은 시간 동안 사용하는 알고리즘도 있고, 순전한 탐구로 시작해 학습된 정책이 강화됨에 따라 서서히 거의 순전한 탐욕으로 수렴되는 알고리즘도 있다.

강화 학습을 위한 알고리즘은 많은데, 모델 기반(예: 동적 프로그래밍)도 있고 모델이 없는(예: 몬테 카를로) 알고리즘도 있다. 모델이 없는 방법이 실제 강화 학습에서 더 유용한 경향이 있다. 이 방법은 경험을 통해 학습하고, 정확한 모델은 대체로 만들기가 어렵기 때문이다.

강화 학습 알고리즘과 이론에 대해 더 자세히 알아보고자 하는 경우, 마르코프 결정 프로세스에 익숙하다면 리처드 S. 서튼과 앤드류 G. 바토가 저술한 <강화 학습: 입문(Reinforcement Learning: An Introduction)>을 추천한다. 


알파고와 알파제로

앞서 언급했듯이 알파고는 바둑을 학습하기 위해 가장 먼저 인간의 바둑 경기 데이터베이스를 상대로 학습했다. 이 사전 단계를 통해 심층 신경망 기반의 가치 함수가 적절한 강도로 작동할 수 있게 됐다.

알파고는 다음 학습 단계로 자기 자신과 무수히 많은 경기를 치르면서 결과를 사용해 가치와 정책 네트워크의 가중치를 업데이트했다. 이 과정을 통해 프로그램의 실력이 대부분의 인간 바둑 기사를 뛰어넘었다.

알파고는 시합 중 각 수마다 그 위치에서 가능한 모든 수에 가치 함수를 적용해 승리로 이어질 가능성의 순위를 매긴다. 그 다음 가장 가치가 큰 수를 뒀을 때의 각 바둑판 형태에서 몬테카를로 트리 검색(Monte Carlo tree search) 알고리즘을 실행해 예견한 검색을 기반으로 승리할 가능성이 가장 높은 수를 선택한다. 이 승리 가능성을 사용해 각 수 트리를 검색하는 데 투입할 주의력의 가중치를 정한다.

이후의 알파고 및 알파제로 프로그램은 인간 경기 데이터베이스를 상대로 한 학습을 건너뛰었다. 경기 규칙과 강화 학습을 제외한 나머지는 모두 빼고 시작한 것이다. 처음에는 임의로 아무 수나 두는 것으로 시작했지만 스스로를 상대로 한 수백만 번의 경기를 통해 학습한 후에는 상당한 수준의 경기 능력을 달성했다. 알파고 제로는 3일 만에 100승 0패를 기록하면서 알파고 리(AlphaGo Lee)의 실력을 넘어섰고 21일째에 알파고 마스터(AlphaGo Master) 수준에 도달했으며 40일 후에는 이전의 모든 버전을 추월했다.

알파제로는 앞서 언급했듯이 체스와 장기도 학습하기 위해 알파고 제로를 일반화한 버전이다. 딥마인드 측에 따르면 알파제로 신경망에 필요한 강화 학습의 양은 게임의 스타일과 복잡성에 따라 달라지지만 여러 TPU에서 실행할 때 대략 체스는 9시간, 장기는 12시간, 바둑은 13일이다. 체스의 경우 알파제로의 지도 능력은 전통적인 체스 플레이 프로그램에 비해 훨씬 더 우수하며 검색에 필요한 트리 공간을 줄여준다. 알파제로는 각 결정당 1만 개의 수를 계산하면 되는데, 수동으로 제작된 가장 강력한 엔진인 스톡피시(Stockfish)의 경우 결정당 1,000만 개의 수를 계산해야 한다.

이러한 보드 게임은 마스터하기가 쉽지 않은 만큼 알파제로의 성공은 강화 학습과 신경망 가치 및 정책 함수, 지도식 몬테 카를로 트리 검색의 힘이 어느 정도인지 잘 보여준다. 또한 연구원의 기량과 TPU의 성능도 보여준다.

로봇 제어는 보드 게임이나 비디오 게임에 비해 더 어려운 AI 문제다. 실제 세계와 상호 작용하는 순간부터 예기치 못한 일이 발생하기 때문이다. 그러나 시연 수준이긴 해도 발전 중이며 현재 가장 강력한 접근 방법은 강화 학습과 심층 신경망을 사용하는 방법이다. editor@itworld.co.kr 


X