강화학습
Reinforcement Learning
사람이 강화학습 알고리즘으로 걸음을 익힌다면 이런 식이 될 거다(3D 애니메이션)
1. 개요
강화학습은 현재의 상태(State)에서 어떤 행동(Action)을 취하는 것이 최적인지를 학습하는 것이다. 행동을 취할 때마다 외부 환경에서 보상(Reward)이 주어지는데, 이러한 보상을 최대화 하는 방향으로 학습이 진행된다. 그리고 이러한 보상은 행동을 취한 즉시 주어지지 않을 수도 있다(지연된 보상). 이 때문에 문제의 난이도가 지도학습/비지도학습에 비해 대폭 상승하며, 시스템을 제대로 보상하는 것과 관련된 신뢰 할당 문제 라는 난제가 여전히 연구원들을 괴롭히고 있다 . 대표적으로 게임 인공지능을 만드는 것을 생각해볼 수 있다. 체스에서 현재 나와 적의 말의 배치가 State가 되고 여기서 어떤 말을 어떻게 움직일지가 Action이 된다. 상대 말을 잡게 되면 보상이 주어지는데, 상대 말이 멀리 떨어져 이동할 때 까지의 시간이 필요할 수 있으므로, 상대 말을 잡는 보상은 당장 주어지지 않는 경우도 생길 수 있다. 심지어는 그 말을 잡은 것이 전술적으로는 이익이지만 판세로는 불이익이라 다 끝났을 때 게임을 질 수도 있다. (지연된 보상). 따라서 강화학습에서는 당장의 보상값이 조금은 적더라도, 나중에 얻을 값을 포함한 보상값의 총 합이 최대화되도록 Action을 선택해야 하며, 게다가 행동하는 플레이어는 어떤 행동을 해야 저 보상값의 합이 최대화되는지 모르기 때문에, 미래를 고려하면서 가장 좋은 선택이 뭔지 Action을 여러 방식으로 수행하며 고민해야 한다. 좋은 선택이 뭔지 Action을 찾는 것을 탐색, 지금까지 나온 지식을 기반으로 가장 좋은 Action을 찾아 그것을 수행하는 것을 활용한다고 하여, 강화학습을 푸는 알고리즘은 이 둘 사이의 균형을 어떻게 잡아야 할지에 초점을 맞춘다.
2021년 국내에서 혈당량만으로 필요한 인슐린양을 정확하게 계산하는 AI 알고리즘을 개발했는데 여기에 강화학습이 사용되었다. AI에게 주입한 인슐린양에 따른 혈당량이 어떻게 변하는지 나타낸 데이터를 학습시켜 당뇨 환자의 혈당 데이터를 입력했을 때 최적의 인슐린양을 찾도록 한 것.
강화학습을 배워보고 싶은 경우 참고할 수 있는 사이트들이다.
모두를 위한 RL강좌
CS234 강의
CS285 강의
팡요랩
OpenAI 블로그
OpenAI Spinning Up
2. 종류
Value based Reinforcement Learning
- Q-Learning
- SARSA
- DQN Google DeepMind's Deep Q-learning playing Atari Breakout: 구글 딥마인드에서 2014년 내놓은 논문. 개발사의 참고자료
Policy based Reinforcement Learning
- DDPG 심층 결정론적 정책 경사법 알고리즘
- A2C(Advantage Actor-Critic)
- A3C(Asynchronous Advantage Actor-Critic) A2C가 한개의 에이전트로 학습을 한다면, A3C는 여러 에이전트들을 가동시켜 비동기적('A'synchronous)으로 모델을 업데이트 하는 알고리즘이다. arxiv
- ACER(Actor-Critic with Experience Replay) arxiv
- TRPO(Trust Region Policy Optimization) https://arxiv.org/abs/1502.05477
- PPO(proximal policy optimization) 2017년 기준 SOTA에 속하는 알고리즘. on-policy 방식이며, discrete와 continuous한 환경 모두에서 사용 가능하다. TRPO 의 2차근사가 연산량과 구현 둘 다 힘들게 하기에, 1차 근사로도 TRPO의 근접하거나 그 이상의 성능을 내려 하는 것이 PPO의 특징으로, 'P'olicy 'O'ptimization을 'P'roximal하게 한다는 뜻으로 이름이 붙었다. 하지만 실제 PPO를 구현해보면 성능이 잘 나오지 않고, parameter의 fine-tuning을 통해 얻어낸 결괏값이 아니냐는 의심을 받고있다.arxiv