전체 글 46

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

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

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

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

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

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

OpenAI gym 설치 및 에러 해결 + 가상환경의 필요성

개요 OpenAI gym은 강화학습 알고리즘들을 비교하고 테스트할 수 있는 환경을 제공해주는 도구입니다. 가장 기본적인 카트폴 예제부터 벽돌 깨기 게임이면서 아타리의 고전 게임인 브레이크아웃까지 OpenAI gym은 여러가지 환경을 제공해줍니다. 이번 포스팅에서는 이 OpenAI gym의 설치 방법과 오류 해결 방법을 알아보고 이를 통해서 가상환경의 필요성도 간단히 알아보도록 하겠습니다. OpenAI gym 설치 저희는 gym을 로컬환경에 설치할 수도 있고 가상환경에 설치할 수 있습니다. 로컬환경에 설치한다는 것은 내가 사용하고 있는 PC에 설치한다는 것이고 가상환경에 설치한다는 것은 독립적인 공간을 만들어 설치한다는 뜻입니다. 가상환경의 필요성에 대해서는 글 아래에서 설명하도록 하겠습니다. 로컬환경에 ..

강화학습/기타 2023.01.13

[강화학습] 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번째 강화학습 알고리즘, 큐러닝을 예시 코드와 함께 살펴보겠습니다. 살사의 한계 살사는 충분한 탐험을 하기 위해서 ε-탐욕 ..

[강화학습] 07 - 살사(SARSA)

개요 처음부터 지금까지 꽤 많은 것을 배웠지만 충격적이게도 이 살사부터가 실제 강화학습 알고리즘입니다. 이전에 배웠던 것은 강화학습을 배우기 위한 기초 개념이었던 것이죠. 예전에 잠시 언급했지만 살사는 정책 이터레이션과 가치 이터레이션이 발전되어서 만들어졌습니다. 이번 포스팅에서는 이 살사의 발전 과정과 이전 포스팅에서 배운, 참 가치함수를 학습하는 2가지 예측 방법을 이용하여 에이전트가 어떻게 학습하는지에 대해서 다뤄볼려고 합니다. 살사 저희는 이전 포스팅에서 참 가치함수를 학습하는 몬테카를로 예측과 시간차 예측을 배웠습니다. 이 2가지 방법 중에 시간차 예측에 대해서 생각해봅시다. 정책 이터레이션에서는 한 번에 모든 상태의 가치함수를 업데이트하고 이를 이용해서 정책을 발전시켰습니다. 하지만 시간차 방..