도합 20만번의 학습을 하여도 여전히 낮은 수준으로 시합을 하여서, training 방법에 사람이 직접 상대하여 그 결과를 학습하는 과정을 추가하였다.


직접 상대하면서 2연속으로 상대가 말을 두면 그 말을 막는 곳에 두지 않으면 패배 하는 상황을 집중 훈련 시켰다.

가령 아래와 같은 상황에서 X가 우상에 두지 않으면 패배 한다.

O

O

 

 

 

 

 

 

X

만약 우상 이외의 다른곳(좌하)에 두게 되면 아래와 같이 패배하게 되어서 좌하에 해당하는 action에 negative reward를 주는 것을 집중적으로 학습 하였다.


O

O

O

 

 

 

X

 

X


즉, 해당 state에서 actiond을 취하면 패배한다는 걸 Q value에 적용시켜주는 것이다. 이런 경우를 여러번 학습하게 되면 결국 좌상에 두는 action을 제외하고는 모두 negative value를 가지게 되므로, 결과적으로 좌상에 두도록 학습이 되게 된다.


사람: O  머신러닝: X (사람이 먼저 둠)

1수

O


 

 

 


 



2수

O


 

 

 


 

X


3수

O

O

 

 

 


 

X


4수

O

O

X

 

 

 


 

X


4수의 근거

지금까지의 학습으로 3수까지의 state에 대한 Qvalue값들은 아래와 같다.

 -10

 -10 

 0 

 -0.83333333

 -0.83333333

 -0.83333333

 -0.83333333

 -0.83333333

 -10

Q value를 보면 총 3가지 종류의 값이 있다.

이미 둔 칸은 -10이다.

해당 강화학습에서 다음 action에 대한 선택 로직에 게임의 규칙은 전혀 반영하지 않았다. 따라서 게임을 진행하려면, 스스로 규칙을 학습해야 하는데, 이미 둔곳은 둘수 없다는 기본적인 규칙들은 -10을 reward로 받도록 되어 있다.(두기 전과 후의 state에 변화가 없을때 reward는 -10)


두면 패배할수 있는 칸(이미 상대가 2칸을 선점했고 그 2칸을 방어할수 없는 칸)은 다음번 수의 패배에 대한 negative reward들로 -0.83333으로 채워져 있다. 즉, 좌상칸이 가장 높은 value를 가지고 있기 때문에 좌상칸을 선택했다.


마지막으로 0, 비록 reward를 얻을수 없지만, 현재 상황에서 가장 높은 reward를 가지고 있다. 따라서 좌상이 선택되어야 한다.


5수

O

O

X

 

 

O


 

X


6수

O

O

X

 

X

O


 

X


6수의 근거

5수까지의 state에 대한 Q value는 아래와 같다.

 0

 -8 

 -9.6 

 0

 0.8999977

 -8

 0

 0

 -9.92

이미 둔칸이지만 0인 곳은 학습이 되지 않는 곳이다. 가운데 칸의 경우 0.89점으로 가장 높은 reward를 가진다. 실제로 해당 칸을 두개 되면 X가 좌상에서 우하로 가는 대각선 공격을 할수 있는 기회가 주어지게 된다.


7수

O

O

X

 

X

O

O

 

X


8수

O

O

X

X

X

O

O

 

X


위의 4수 처럼 좌중칸이 가장 높은 Q value를 가지게 되어서 선택


9수

O

O

X

X

X

O

O

O

X


위의 경우처럼 이기진 못했지만 꽤 사람처럼 둔경우도 생겼다!!!


결과적으로 negative reward가 효과적으로 작용을 하게 되고 비록 강화학습이지만 사람과의 학습을 통해 실제 의미 있는 케이스에 대한 학습이 이루어지는 것이 더 빠른 학습이 될 수 있는 것으로 생각된다. (물론 실제 그런지는 사람과 시합하지 않은 경우와 대조를 해보고 해야 하지만 귀찮아서 생략..;;;....) 이래서 알파고도 굳이 사람의 기보를 학습했나????



'Development > MachineLearning' 카테고리의 다른 글

Tic Tac Toe 인공지능 구현 v01  (0) 2017.01.25
Tic Tac Toe 인공지능 구현 v00  (0) 2017.01.24

개인 프로젝트로 Reinforcement 기반으로 Tic Tac Toe 인공지능 개발 중


Prototype으로 10000번 training 후 결과 총 7017 건의 state에 대한 training진행 됨


단순히 승리할 경우 reward 1을 가지고 규칙을 learning시키기 위해서 둘수 없는 곳에 둘려고 할 경우 negative reward -10을 주고 둘수 있는 곳 둘때까지 반복

 

특정 state에서 특정 action을 취하게 될 때의 reward에 대해서 Q값을 구하게 되는데, 두개의 object가 서로 시합을 할경우

이기는 쪽은 능동적으로 수를 두어서 이기게 되어서 정상적으로 reward를 받게 되지만, 지는 object는 수동적으로 상대방이 먼저 이겼기 때문에 지게 된다. 따라서 지는 순간에 action을 취한 것이 아니므로 패배에 대한 negative reward를 받을 수가 없음

===> 실제 play를 해보면 상대방이 2칸을 먼저 만든 상황에서 남은 한 칸을 막아서 패배를 막는 방향으로 paly하지 않음

 

물론 충분히 많은 training이 된다면 승리에 대한 reward가 많이 퍼져서 반대급부로 패배에 대한 상황에 대해서는 reward가 없으므로 상대적인 개념으로 negative reward를 받을 수 있으나, 좀더 확실한 negative reward가 필요할 것으로 보임

 

10000번으로는 택도 없음, 사람 근처에도 못감



'Development > MachineLearning' 카테고리의 다른 글

Tic Tac Toe 인공지능 구현  (0) 2017.02.01
Tic Tac Toe 인공지능 구현 v01  (0) 2017.01.25

+ Recent posts