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

Add Japanese README #7

Merged
merged 1 commit into from
Jun 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# SnakeAI

[简体中文](README_CN.md) | English
[简体中文](README_CN.md) | English | [日本語](README_JA.md)

This project contains the program scripts for the classic game "Snake" and an artificial intelligence agent that can play the game automatically. The intelligent agent is trained using deep reinforcement learning and includes two versions: an agent based on a Multi-Layer Perceptron (MLP) and an agent based on a Convolution Neural Network (CNN), with the latter having a higher average game score.

Expand Down
2 changes: 1 addition & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# SnakeAI

简体中文 | [English](README.md)
简体中文 | [English](README.md) | [日本語](README_JA.md)

本项目包含经典游戏《贪吃蛇》的程序脚本以及可以自动进行游戏的人工智能代理。该智能代理基于深度强化学习进行训练,包括两个版本:基于多层感知机(Multi-Layer Perceptron)的代理和基于卷积神经网络(Convolution Neural Network)的代理,其中后者的平均游戏分数更高。

Expand Down
89 changes: 89 additions & 0 deletions README_JA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# SnakeAI

[简体中文](README_CN.md) | [English](README.md) | 日本語

このプロジェクトは、クラシックゲーム "Snake" のプログラムスクリプトと、ゲームを自動的にプレイできる人工知能エージェントを含んでいます。人工知能エージェントは、深層強化学習を用いて学習され、以下の2つのバージョンがあります: MLP(多層パーセプトロン)を用いたエージェントとCNN(畳み込みニューラルネットワーク)を用いたエージェントがあり、後者の方が平均ゲームスコアが高いという結果になりました。

### ファイル構成

```bash
├───main
│ ├───logs
│ ├───trained_models_cnn
│ ├───trained_models_mlp
│ └───scripts
├───utils
│ └───scripts
```

プロジェクトのメインコードフォルダは `main/` です。このフォルダには `logs/` があり、学習プロセスのターミナルテキストとデータ曲線が含まれています(Tensorboard を使用して表示可能)。`trained_models_cnn/``trained_models_mlp/` にはそれぞれ異なるステージの畳み込みネットワークとパーセプトロンモデル用のモデル重みファイルがあり、異なる学習ステージにおける2つの知的エージェントの実際のゲーム性能を観察するために `test_cnn.py``test_mlp.py` でテストを行うために使用することができます。

もう一つのフォルダ `utils/` には2つのユーティリティスクリプトが含まれています。`check_gpu_status/` はGPUがPyTorchから呼び出せるかどうかをチェックするのに使われます。`compress_code.py` はコードからインデントと改行をすべて取り除き、タイトに配置した1行のテキストにして、コードの提案を求めるときに GPT-4 に伝えやすくします(GPT-4 のコードに対する理解は人間よりはるかに優れており、インデントや改行を必要としない)。

## 実行ガイド

本プロジェクトは、プログラミング言語 Python をベースに、主に [Pygame](https://www.pygame.org/news)[OpenAI Gym](https://github.com/openai/gym)[Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/) などの外部コードライブラリを利用しています。プログラムの実行に使用した Python のバージョンは3.8.16です。Python の環境設定には [Anaconda](https://www.anaconda.com) を使用することが推奨されます。以下の設定方法は、Windows11 のシステムで動作確認済みです。以下のコマンドは、コンソール/ターミナル(Console/Terminal/Shell)用のコマンドです。

### 環境設定

```bash
# Python バージョン3.8.16で SnakeAI という名前の conda 環境を作成
conda create -n SnakeAI python=3.8.16
conda activate SnakeAI

# [オプション] トレーニングに GPU を使用する場合は、フルバージョンの PyTorch を手動でインストール
conda install pytorch=2.0.0 torchvision pytorch-cuda=11.8 -c pytorch -c nvidia

# [オプション] PyTorch が GPU を正常に呼び出せるかどうかをテストするためにスクリプトを実行
python .\utils\check_gpu_status.py

# 外部コードライブラリのインストール
pip install -r requirements.txt
```

### テストの実行

プロジェクトの `main/` フォルダには、[Pygame](https://www.pygame.org/news) コードライブラリをベースにした、クラシックゲーム "Snake" のプログラムスクリプトが含まれています。以下のコマンドを直接実行することで、ゲームをプレイすることができます:

```bash
cd [parent folder of the project]/snake-ai/main
python .\snake_game.py
```

環境設定が完了したら、`main/` フォルダにある `test_cnn.py` または `test_mlp.py` を実行して、異なる学習段階における2つの知的エージェントの実際の性能をテストし観察することができます。

```bash
cd [parent folder of the project]/snake-ai/main
python test_cnn.py
python test_mlp.py
```

モデルの重みファイルは `main/trained_models_cnn/``main/trained_models_mlp/` フォルダに格納されます。どちらのテストスクリプトも、デフォルトで学習済みモデルを呼び出します。異なる学習段階での AI の性能を観察したい場合は、テストスクリプトの `MODEL_PATH` 変数を変更して、他のモデルのファイルパスを指すようにすることができます。

### モデルの学習

モデルの再学習が必要な場合は、`main/` フォルダにある `train_cnn.py` または `train_mlp.py` を実行することができます。

```bash
cd [parent folder of the project]/snake-ai/main
python train_cnn.py
python train_mlp.py
```

### カーブの表示

このプロジェクトには、トレーニングプロセスの Tensorboard 曲線グラフが含まれています。Tensorboard を使用すると、詳細なデータを閲覧することができます。直接見るには、VSCode に統合された Tensorboard プラグインを使用することをお勧めしますが、従来の方法を使用することもできます:

```bash
cd [parent folder of the project]/snake-ai/main
tensorboard --logdir=logs/
```

Tensorboard のデフォルトのサービスアドレス `http://localhost:6006/` をブラウザで開くと、学習過程のインタラクティブな曲線グラフが表示されます。

## 謝辞
このプロジェクトで使用した外部コードライブラリは、[Pygame](https://www.pygame.org/news)[OpenAI Gym](https://github.com/openai/gym)[Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/) です。オープンソースコミュニティへの無私の献身に感謝するすべてのソフトウェア開発者に感謝します!

今回使用した畳み込みニューラルネットワークは、Nature の論文から:

[1] [Human-level control through deep reinforcement learning](https://www.nature.com/articles/nature14236)