Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue 04 #156

Merged
merged 17 commits into from
Oct 23, 2018
Merged
Prev Previous commit
Next Next commit
Correct Typo & Translation Done
오타 수정 및 본문 번역 완료
이후에는 코드 추가 설명 및 AlphaGo Zero cheat sheet 번역 진행 예정
  • Loading branch information
karl6885 committed Aug 27, 2018
commit 87591de4fbd0ac0c7df10d5a9c4846673e0bd3a1
55 changes: 52 additions & 3 deletions 04_파이썬과_케라스를_이용한_알파제로_만들기.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@



> 이 문서는 인간의 사전 지식 없이도 게임을 마스터할 수 있는 일반화된 강화학습 알고리즘인 AlphaZero에 대한 튜토리얼입니다. AlphaGo -> AlphaGo Zero, AlphaZero로 이어지는 해당 알고리즘의 간략한 역사와 함께, AlphaZero가 어떤 방식으로 학습하는지 쉽게 설명합니다. 여기에 더불어 이해를 돕기 위해 원문 저자의 AlphaGo Zero에 대한 cheet sheet 또한 번역하여 첨부하였습니다. 또 Connect4 게임에 AlphaZero 알고리즘을 적용한 코드에 대해 간략하게 설명합니다.
> 이 문서는 인간의 사전 지식 없이도 게임을 마스터할 수 있는 일반화된 강화학습 알고리즘인 AlphaZero에 대한 튜토리얼입니다. AlphaGo -> AlphaGo Zero, AlphaZero로 이어지는 해당 알고리즘의 간략한 역사와 함께, AlphaZero가 어떤 방식으로 학습하는지 쉽게 설명합니다. 여기에 더불어 이해를 돕기 위해 원문 저자의 AlphaGo Zero에 대한 cheat sheet 또한 번역하여 첨부하였습니다. 또 Connect4 게임에 AlphaZero 알고리즘을 적용한 코드에 대해 간략하게 설명합니다.



Expand Down Expand Up @@ -264,7 +264,7 @@ MEMORY_SIZE = 30000
```python
from game import Game
from funcs import playMatchesBetweenVersions
import loggers as lg.
import loggers as lg

env = Game()
playMatchesBetweenVersions(
Expand Down Expand Up @@ -337,7 +337,56 @@ logger.tourney 파일에서도 마찬가지로, 평가 단계(evaluation phase)

<div style="text-align: center;font-size:80%">mini-batch 반복에 따른 loss 변화 </div>

가장 위에 있는 선은 정책 머리(policy head)에서 나온 에러(MCTS에서 나온 각 수에 대한 확률의 cross entropy)다. 가장 아래 있는 선은 가치 머리(value head)에서 나온 에러(실제 게임의 가치와 신경망이 평가한 가치 간의 mean squared error)다. 가운데 있는 선은 그 둘의 평균값이다.
가장 위에 있는 선은 정책 머리(policy head)에서 나온 에러(MCTS에서 나온 각 수에 대한 확률과 신경망에서 나온 결과 간의 cross entropy)다. 가장 아래 있는 선은 가치 머리(value head)에서 나온 에러(실제 게임의 가치와 신경망이 평가한 가치 사이의 mean squared error)다. 가운데 있는 선은 그 둘의 평균값이다.

분명히, 신경망은 각 게임 상태(state)의 가치와 그 다음 움직임(move)을 점점 잘 예측하게 된다. 이렇게 점점 강해지는 것을 보여주기 위해, 반복(iteration)을 1번만 한 신경망에서부터 49번을 한 신경망까지 총 17개의 플레이어 간 리그를 시켰다. 각 플레이어는 두 번씩 맞붙었는데, 이는 두 플레이어 모두 첫 수를 두는 기회를 주기 위해서였다.

여기 그 최종 순위가 있다:

![](https://cdn-images-1.medium.com/max/800/1*6w75-9yupXaRyqBDDXoSRw.png)



확실히, 신경망의 후기 버전이 대부분의 게임에서 초기 버전에게 이기며 더 뛰어난 모습을 보여주었다. 또한 아직 학습이 정점에 달한 것 같지는 않아 보여, 추가적인 학습 시간이 있다면 플레이어가 더 많은 복잡한 전략을 학습해 보다 강해질 수 있을 것이다.

예를 들면, 시간이 지남에 따라 신경망이 좋아하게 되는 확실한 전략은 가운데 열을 빠르게 접수하는 것이다. 알고리즘의 1번째 버전과 30번째 버전의 차이를 살펴보자.

**신경망 첫번째 버전**

![img](https://cdn-images-1.medium.com/max/800/1*G6GDkpfwkIjlqBj5_tGXMg.png)



**신경망 30번째 버전**

![](https://cdn-images-1.medium.com/max/800/1*Aimp0LuSXtd7drYLpwzTLQ.png)

많은 선들이 가운데 열을 필요로 하기 때문에, 이를 선점하여 상대가 이점을 가져가지 못하게 하는 전략은 좋은 전략이라고 할 수 있다. 신경망은 인간의 어떠한 도움도 없이 이 전략을 학습했다.



## 다른 게임을 학습하기

**games** 폴더 안에는 'Metasquares'라는 게임을 위한 game.py 파일이 있다. 이것은 X와 O 마커를 격자판 내에 놓으면서 다른 크기의 정사각형을 만드는 게임이다. 큰 정사각형일수록 작은 정사각형보다 더 큰 점수를 얻을 수 있고, 격자판이 모두 찼을 때 더 많은 점수를 가진 플레이어가 이긴다.

![](http://s3.amazonaws.com/dev-pablo.marketkarma.com/metasquares-iphone-screenshot-1.jpg)



<div style="text-align: center;font-size:80%">Metasquares 게임 화면. 이해를 돕기 위해 역자가 추가로 삽입하였습니다.</div>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분도 원글과 구분되도록 표시하면 어떨까요.(>)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 감사드립니다! 반영하여 수정하였습니다 :)


Connect4의 game.py 파일을 Metasquares 게임의 game.py로 바꾸면, 같은 알고리즘이 대신 Metasquares 게임을 하는 방법을 학습하게 된다.



## 맺으며

이 글이 도움이 되었기를 바란다. 만약 코드나 글에 오타나 질문이 있다면, 아래 댓글로 남겨주면 최대한 빨리 답해주겠다.

![](https://cdn-images-1.medium.com/max/800/1*eDhCRrmRljKt6DegLuwgUg.png)

만약 우리 회사 Applied Data Science가 어떻게 기업을 위한 혁신적인 데이터 사이언스 솔루션을 만드는지 궁금하다면, 우리의 웹사이트나 LinkedIn을 통해 자유롭게 연락하기를 바란다.

... 그리고 이 글을 좋아한다면, 따뜻한 박수(이 글이 업로드된 Medium 플랫폼은 박수 아이콘을 눌러 좋아요를 표시할 수 있습니다: 역자)를 보내주길 부탁한다 :)

Applied Data Science는 기업을 위한 end-to-end 데이터 사이언스 솔루션을 구현하여 중요한 가치를 전달하는, 런던 기반 자문 회사입니다. 만약 당신이 가진 데이터로 뭔가를 더 해보고 싶으시다면 연락 주세요.