Game AI

강화학습_Q-Learning #2

tsyang 2024. 1. 7. 22:42

 

 

 

2023.12.19 - [Game AI] - 강화학습_Q-Learning #1

 

 

 

 

강화학습 튜닝


이전 글에서 Q러닝의 공식은 다음과 같다고 했다.

$$Q(s,a) = (1-{\alpha})Q(s,a)+{\alpha}(r+{\gamma}max(Q(s',a'))$$

 

여기서의 ${\alpha}$와 ${\gamma}$에 더하여, 임의의 상태를 가질 확률 ${\nu}$(뉴)와 임의의 행동을 취할 확률 ${\rho}$(로)를 인자로 더 추가할 수 있다.

 

알파 : 학습율

학습율은 현재 데이터가 저장된 Q-Value에 얼마나 영향을 미칠지를 결정한다. [0, 1]값을 갖는다. 0이면 학습이 아예 되지 않는다. 0.3정도로 시작해볼 수 있다. 그러나 피드백의 편차가 클 때에는 이 값이 더 낮아지는게 좋다. 반면에, 학습 반복 횟수가 적다면 이 값이 높아야 할 것이다.

 

 

감마 : 감가율

감가율은 취한 행동의 Q값이 새로운 state의 Q값에 영향을 받는지 나타낸다. 이 값이 높으면 학습이 오래 걸리지만 알고리즘이 취하는 행동의 시퀀스가 길어진다. 이 값이 낮으면 알고리즘이 빨리 안정화되지만 학습할 수 있는 행동의 시퀀스가 짧아진다.

 

 

로 : 임의 탐색

얼마나 알고리즘이 임의의 행동을 취할지를 정한다. 학습이 온라인에서 이뤄지냐 오프라인에서 이뤄지냐에 따라 이 값을 다르게 사용한다. 온라인학습에서 이 값이 높다면 플레이어가 AI가 멍청하다고 느낄 수 있다. (좋은 행동이 아니라 임의의 행동을 많이 취하니까) 따라서 온라인에서는 이 값이 낮아야 한다. 반면 오프라인에서는 이 값을 높게 써야 다양한 행동을 학습할 수 있다. 

 

 

누 : 학습중 방문할 상태의 시퀀스 길이를 조절

이 값은 출발 상태를 얼마나 임의로 정할지를 결정하는데, 이 값이 0이라면 항상 현재 상태에서 도달 가능한 상태만을 선택한다. 반면에 1이라면 이전 상태와 상관없이 항상 임의의 상태에서 시작한다.

온라인 학습에서는 자동으로 0이된다. 이 값이 높을수록 여러 개의 상태들이 연관이 있게 된다. 

 

 

보상 정하기

단순히 좋은 보상이면 +점수를 주고, 나쁜 행동에는 -점수를 줄 수 있다. 만약 정답이 하나만 있는 상황이라면, 정답에 도달했을때는 1점의 보상을 주고, 그렇지 않았을 때는 보상이 없도록 구현할 수도 있다. 이렇게 학습되고 나면, 단순히 Q값이 높은 애들을 선택하다 보면 결국 정답에 도달한다. 이것은 어떻게보면 극점이 하나인 경우의 hill climbing이라고 볼 수 있다. 

 

 그러나 현실적으로 게임은 해답이 여러 개이거나, 아예 없는 경우도 존재한다. 이런 경우에는 극점이 여러 개가 되는데, 여기서 hill climbing을 하다 보면 결국 잘못된 해에 도달할 가능성이 존재하게 된다. 그럼에도 해답이 아닌 경우에 +점수를 준다면 일단 학습은 더 빨리 완료된다. 그러나 잘못된 결론에 도달할 가능성이 생기게 된다. 그냥 간단하게 생각하면 학습에 정답이 단 하나만 있고, 정답이 아닌 경우에는 보상을 주지 않도록 학습을 단순화하면 이런 문제는 해결된다.

 

 

 

 

기타


한계

솔찍히 게임에서 강화학습은 쓰기 어렵다. 이유는 상태가 너무 많기 때문이다. 상태가 많다는 말은 많은 메모리를 사용한다는 말이다. 현실적으로 게임의 상태-행동 쌍마다 값을 저장하기에는 메모리가 턱없이 부족하다. 따라서 게임에서는 상태와 대응하는 액션의 가짓수를 제한해서 사용해야 한다. 온라인 학습이라면 이런 제약이 훨씬 심해진다.

 

 

적용

강화학습의 주된 장점은 불확실성을 자연스럽게(seamlessly)처리할 수 있다는 점이다. 강화학습은 상태가 너무 많거나, 성공 전략이 시간에 따라 바뀌는 경우에는 적절하지 않다. 반면 목표가 명확하고 취해야할 행동들이 몇가지 있는 경우에 써먹기 좋다. 캐릭터를 움직이거나 특정 행동을 언제 할지를 정하는 등 국소적으로 쓸수도 있다.

 

강화학습은 보드게임에서 특히 뛰어나다. 더 나아가 턴제 게임 등에도 뛰어난 성능을 발휘한다.

 

 

신경망 (Neural Network)

강화 학습에서 가장 큰 문제는 메모리의 제약이라고 했다. 이런 문제에 대해서 신경망이 도움이 될 수 있다. 신경망은 데이터에서 패턴을 찾고 일반화 하는데 특화되어 있다. 반면 강화학습은 일반화를 못하는데, A가 좋다면 A'도 좋다고 추정할 수 없다. 반면 신경망은 A가 좋다면 A'도 좋을거라고 추측한다. 이런 점이 메모리를 줄이는 데 도움이 된다. 그러나, 이 점이 오히려 단점이 되기도 한다. 강화 학습과 달리 신경망에서는 Q값이 요동칠 수 있으며 (A가 바뀌면 A'도 영향을 받으니까), 자연스럽게 주어진 문제에 sub-optimal을 많이 만들어내기 때문에, 강화학습보다 최고의 행동을 취하지 않는 경우가 더 발생한다.