강화학습 17

[강화학습] 17 - A3C 알고리즘

개요 앞에서 배운 DQN 알고리즘은 그때그때의 샘플들로 학습했을 때, 샘플끼리의 연관성으로 에이전트가 잘못 학습하는 문제를 해결하기 위해서 경험 리플레이를 사용했습니다. 샘플을 리플레이 메모리에 많이 모은 후에 임의 추출한 샘플을 사용해 성공적인 학습을 이끌어냈죠. 하지만 리플레이 메모리가 커서 컴퓨터의 많은 메모리를 차지한다면 학습의 속도는 느려지며, 과거의 정책을 사용하기 때문에 오프폴리시 강화학습(DQN의 경우 큐러닝)만을 사용해야 한다는 단점이 있습니다. 이러한 단점 때문에 다른 방법으로 문제에 접근해 만들어진 것이 A3C(Asynchronous Advantage Actor-Critic) 알고리즘입니다. A3C란 무엇일까? DQN 알고리즘이 리플레이 메모리를 사용해 샘플 사이의 연관성을 깼다면, ..

[강화학습] 16 - Breakout DQN

개요 앞의 카트폴 예제는 화면으로 학습할 필요가 없었기 때문에 DQN 알고리즘에서 컨볼루션 신경망이 아닌 간단한 인공신경망을 사용했습니다. 브레이크아웃에서의 DQN 알고리즘은 카트폴에서의 DQN 알고리즘처럼 리플레이 메모리와 타깃신경망이 사용되면서 컨볼루션 신경망이 사용되기 때문에 추가로 알아야 할 점이 있습니다. 알아야 할 추가 사항 브레이크아웃 게임 이미지는 아래 그림과 같이 색상 정보를 포함하여 210 × 160 × 3(RGB)의 크기를 가집니다. 하지만 학습 자체에는 현재 점수, 목숨 개수와 색상 정보는 필요가 없습니다. 따라서 계산량을 줄여 학습 속도를 높이기 위해서 아래 그림처럼 이미지를 흑백으로 만들고 불필요한 부분을 잘라 84 × 84 × 1의 크기로 만들어줍니다. 이 과정을 전처리라고 합..

[강화학습] 15 - 브레이크아웃과 CNN

개요 지금까지 저희는 그리드월드와 카트폴과 같은 간단한 예제에 강화학습 알고리즘을 적용해봤습니다. 이 두 예제는 간단하며 인공신경망의 입력으로 사용된 상태 공간도 작았습니다. 하지만 다소 복잡하고 상태 공간이 큰 게임 화면으로부터도 에이전트는 잘 학습할 수 있을까요? 이번 포스팅부터 저희는 아타리 사의 브레이크아웃이라는 게임에서 DQN과 A3C 알고리즘을 적용해보면서 에이전트가 게임화면으로부터 어떻게 학습하는지 알아보도록 하겠습니다. 아타리: 브레이크아웃 브레이크아웃은 아타리라는 미국 게임 회사에서 만든 벽돌 깨기 게임입니다. 이 고전 게임은 2013년에 다시 유명해지게 되는데, 바로 알파고를 만든 회사로 알려진 딥마인드에서 강화학습을 통해 이 브레이크아웃 게임을 학습시켰기 때문입니다. 이때 딥마인드가 ..

[강화학습] 14 - 연속적 액터-크리틱

개요 지금까지 카트폴 예제에서 에이전트는 왼쪽 혹은 오른쪽 2가지 행동 중 하나만을 선택할 수 있었습니다. 하지만 실제 환경에서 사람은 몇 가지 행동 중에 골라서 행동하는 것이 아니라 어떠한 위치나 방향으로 행동할 수 있습니다. 즉 실제 환경에서 할 수 있는 행동은 이산적으로 분포하는 것이 아니라 연속적으로 분포해 있는 것이죠. 에이전트가 연속적인 행동을 선택하게 하려면 먼저 이산적인 행동을 많이 만드는 방법을 생각해볼 수 있습니다. 선택할 수 있는 이산적인 행동들이 충분히 많다면 에이전트는 마치 연속적인 행동을 할 수 있는 것처럼 만들 수 있습니다. 하지만 이 방법은 에이전트가 고려해야 할 행동들이 너무 많아지기 때문에 학습이 매우 어려워집니다. 따라서 저희는 정책을 연속적인 분포로 만드는 방법을 사용..

[강화학습] 13 - 액터-크리틱

개요 저희는 이전에 몬테카를로 폴리시 그레이디언트라고 불리는 REINFORCE 알고리즘에 대해서 배웠습니다. 반환값을 이용하여 에피소드가 끝날 때 인공신경망을 업데이트시키는 특징 때문에 몬테카를로라는 말이 붙었죠. 그렇기 때문에 REINFORCE 알고리즘도 에피소드마다만 학습할 수 있다는 단점이 있습니다. 또한 반환값은 분산이 크며, 에피소드의 길이가 길어질수록 특정 상태(s,a)에 대한 반환값의 변화가 커지기 때문에 학습이 잘 이루어지지 않을 수도 있죠. 이러한 단점을 극복하고 매 타임스텝마다 학습할 수 있도록 한 것이 액터-크리틱(Actor-Critic)입니다. 액터-크리틱 이론 액터-크리틱은 REINFORCE 알고리즘의 단점을 해결하기 위해서 다이내믹 프로그래밍의 정책 이터레이션 구조를 사용합니다...

[강화학습] 12 - DQN 알고리즘(Cartpole)

개요 강화학습을 더 깊이 공부하려면 그리드월드만이 아닌 다양한 환경에서 강화학습을 적용시켜 봐야합니다. 오픈에이아이는 짐이라는 환경을 통해서 강화학습을 적용시킬 수 있는 여러 환경을 제공하는데, 저희는 이 중에서 카트폴이라는 예제에 강화학습을 적용시키며 공부할 것입니다. 저희가 이전에 배웠던 딥살사 알고리즘은 살사의 큐함수 업데이트 방법을 사용했습니다. 이번 포스팅에서는 큐러닝의 큐함수 업데이트 방법을 경험 리플레이라는 것과 함께 사용하여 인공신경망을 학습시키는 DQN 알고리즘에 대해서 알아보도록 하겠습니다. 카트폴 DQN 알고리즘을 공부하기에 앞서 저희는 카트폴 예제에 대해서 알아야합니다. 위의 그림처럼 카트폴 예제는 검은색 사각형의 카트와 황색 막대인 폴로 이루어져 있습니다. 카트는 검은색 수평선을 ..

[강화학습] 11 - REINFORCE 알고리즘

개요 지금까지 저희가 배운 강화학습은 가치함수를 기반으로 행동을 선택하고 학습하는 가치 기반 강화학습이었습니다. 하지만 가치함수를 토대로 행동을 선택하지 않고 상태에 따라 정책으로 바로 행동을 선택하면서 학습할 수 있는데, 이를 정책 기반 강화학습이라고 합니다. 정책 기반 강화학습 정책으로 행동을 선택하기 때문에 큐함수를 근사했던 딥살사의 인공신경망과는 다르게 정책 기반 강화학습에서는 인공신경망이 정책을 근사합니다. 정책을 근사하는 인공신경망을 정책신경망이라고 부릅니다. 아래 그림과 같이 정책신경망의 입력은 상태가 되고 출력은 각 행동을 할 확률이 됩니다. 출력이 각 행동을 할 확률이므로 출력층의 활성함수도 딥살사처럼 선형함수이면 안됩니다. 아래의 코드와 같이 정책신경망에서는 출력층의 활성함수로 Soft..

[강화학습] 10 - 딥살사(DeepSARSA)

개요 이전 포스팅에서는 인공신경망의 개념과 학습 방법에 대해서 알아봤습니다. 저희는 이 인공신경망을 이용한 코드를 작성하기 위해서 인공신경망을 구현해놓은 딥러닝 프레임워크를 사용하면 됩니다. 현재 가장 널리 쓰이는 딥러닝 프레임워크는 텐서플로 2.0입니다. 텐서플로 2.0 내부에는 인공신경망을 훨씬 더 직관적이고 효율적인 코드로 설계할 수 있게 도와주는 케라스 모듈이 포함돼 있습니다. 이 책에서는 텐서플로 2.1 버전과 케라스 모듈을 사용하여 코드를 작성하였습니다. 이번 포스팅에서는 새로운 그리드월드 예제에서 인공신경망을 이용하여 최적 정책을 학습하는 딥살사에 대해서 코드 예시와 함께 알아보도록 하겠습니다. 딥살사 새로운 그리드월드 예제는 아래와 같습니다. 이제 장애물인 초록색 삼각형 3개가 한 타임스템..

[강화학습] 09 - 인공신경망

개요 아래와 같은, 다이내믹 프로그래밍의 3가지 한계를 극복하기 위해서 등장한 것이 바로 강화학습이었습니다. 1. 계산 복잡도 2. 차원의 저주 3. 환경에 대한 완벽한 정보가 필요 하지만 저희가 배운 살사나 큐러닝 알고리즘을 생각해봅시다. 환경의 모델을 사용하지는 않았지만, 저희는 각 상태의 큐함수를 테이블 형식으로 저장했습니다. 만약 에이전트에게 주어지는 상태가 정말 다양하고 환경이 시간에 따라서 변할 때, 예를 들어 알파고처럼 바둑을 학습하거나 로봇이 일상생활공간에서 학습한다면 저희는 살사나 큐러닝 알고리즘을 사용할 수 있을까요? 무수히 많은 상태의 정보를 테이블 형식으로 저장하여 계산하는 것이란 불가능한 일입니다. 즉 살사나 큐러닝 알고리즘은 3번의 문제만을 해결하고 계산 복잡도나 차원의 저주 문..

[강화학습] 08 - 큐러닝(QLearning)

개요 이전 포스팅에서는 첫 번째 강화학습 알고리즘인 살사에 대해서 배웠습니다. 살사는 ε-탐욕 정책으로 행동하면서 샘플 $[S_t,A_t,R_{t+1},S_{t+1},A_{t+1}]$을 모으고 이 샘플을 이용해서 시간차 제어 식으로 큐함수를 업데이트하는 과정을 반복하였습니다. $$Q(S_t,A_t) \leftarrow Q(S_t,A_t) + α(R_{t+1} + γQ(S_{t+1},A_{t+1})) - Q(S_t,A_t))$$ 하지만 이런 살사를 이용해서 에이전트를 학습시키다보면 잘못된 정책을 학습하는 경우가 생깁니다. 이번 포스팅에서는 살사의 한계와 이를 극복하기 위해 만들어진 2번째 강화학습 알고리즘, 큐러닝을 예시 코드와 함께 살펴보겠습니다. 살사의 한계 살사는 충분한 탐험을 하기 위해서 ε-탐욕 ..