게임에서의 강화학습 - BD-SEARCH/MLtutorial GitHub Wiki
Reinforcement learning
Reinforcement Learning(강화 학습)은 환경과 상호 작용하면서 reward를 받아 효율적인 방식으로 행동을 강화해 나가는 학습 방법이다. 이 모델이 찾아야 할 정답이 무엇인지는 모르지만, 자신이 한 행동의 reward는 알고 있기 때문에 reward의 합이 최대가 되는 방향으로 학습해 나간다. 인공지능의 예는 아니지만 자전거를 타면서 어떻게 해야 넘어지지 않는지 경험을 통해 익히는 것도 Reinforcement learning의 일종이라고 볼 수 있을 것이다. 실제로도 경험과 시행착오를 통해 익히는 것을 모티브로 해서 인공지능의 Reinforcement Learning을 만들게 되었다.
Reinforcement Learning의 기본 구성 요소
- State: 앞선 Action들의 선택에 의해 결정된 현재 상태. Action을 선택한 적이 없다면 초기 상태.
- Action: 현재 state에서 선택할 수 있는 행동.
- Reward: Action에 따라 얻을 수 있는 보상. 이 값은 긍정적인 경우 양수, 부정적인 경우 음수의 값을 갖는다.
특정 State에서 최적의 Action을 선택하여 Reward의 합을 최대로 하는 것이 Reinforcement Learning의 목표이다. State, Action, Reward를 어떻게 정의하고, Reward 값을 어떻게 변화시킬지는 Reinforcement Learning 기법에 따라 다르다. 자동차 운전 게임을 Reinforcement Learning으로 구현했을 때의 예를 살펴보자. 이 게임의 목표는 도로를 벗어나지 않으면서 목적지까지 가는 것이다.
- State: 자동차의 현재 위치
- Action: 자동차 속도 증감, 핸들 위치 변경 등
- Reward: 자동차가 도로 안에 있으면서 Action을 취한 뒤에도 자동차가 도로 안에 있으면 1. 자동차가 도로 밖에 있거나, Action을 취했더니 도로 바깥으로 나가면 Reward는 0.
목표를 Reward의 합이 최대가 되는 것으로 한다면, 자동차가 도로 밖을 안 벗어나는 Action들을 취하게 될 것이다. 다만 위 예제는 예제일 뿐이며, 실제로 Reinforcement Learning 모델을 만들 경우 Reward를 더 정교하게 만들 필요는 있다. 예를 들면 State에 따라 Reward를 다르게 하는 등의 접근 방법을 선택할 수 있다.
Q-Learning
강화학습을 적용한 게임
참고자료
- Reinforcement learning 입문하기
- 동영상 강의
- 게임으로 강화학습 입문하기
- 강화학습(Reinforcement Learning)
- [Q-Learning 강좌 개념 및 예제] - #1, #2, #3, #4
- [Reinforcement Learning 그리고 OpenAI] (http://www.modulabs.co.kr/RL_library/2621)
- Torch DQN 강화학습 소개
- 딥 강화학습 쉽게 이해하기
- 알아두면 쓸데있는 신기한 강화학습 NAVER 2017
- 인공지능 슈퍼마리오의 거의 모든것