ゲームする時間がほしぃ。

プロフィール

名前蛭田 悠人 (ひるた ゆうと)
出身高校神奈川県立弥栄 理数科
誕生日1998.10.3
自宅淵野辺駅周辺(執筆時点)
血液型A(らしい)
趣味ゲームアニメ等を除くと特にないけどなんか作りたいとは思っている
自主学習中PHP,JavaScriptを使ったウェブアプリ開発、Unityでのソーシャルゲーム開発
学士卒論タイトルパケット分類器学習のための報酬関数
扱える言語C(C++)、C#、Java、Python、PHP

最近やってるゲームの紹介

語れる内容があるもの

CHUNITHM

アーケードの音ゲーです。語れる人絶賛募集中。

「空間を切り裂く音ゲー」というコンセプトの通り、一般の音ゲーのような画面(正確には操作デバイス)のタッチによる演奏判定だけではなく、腕を上下させる動作を演奏判定として要求してくるところが特徴です。アニソンや一般的なポップスのほか、ボカロや東方アレンジも豊富に入っていて選曲には困らないです。

実力は…このリザルトが出せる程度の実力です。多分二度とこんなスコア出せない どれくらい強いかは…調べてみるとよいでしょう。

EvTIHcKUYAELUgo.jpg

語ることないくらいしっかりやってないけどアクティブと言えるもの

プリンセスコネクト!Re:Dive
ウマ娘 プリティーダービー
ARCAEA
プロジェクトセカイ カラフルステージ! feat.初音ミク
モンスターハンターライズ

フレンドコードが欲しければ連絡してください。ここには書かないつもりです。

お勉強に使ったサイトメモ

Androidアプリケーション開発関連

https://gist.github.com/nobuoka/6546813
Android開発で使うJavaの基本がほぼ網羅されてた。これを読んで内容をキッチリ理解できたらJavaの授業は満点出せそう。
https://qiita.com/Kyome/items/e654363bad7f69e6b0fd
カスタムキーボードを作る一例。
http://androidguide.nomaki.jp/index.html
Androidアプリ開発入門と銘打たれているサイト。有用性あるかは確認中。
https://anharu.keiji.io/lesson1/
Androidアプリで電卓を作ろうという初心者向けページ。サルでもわかるタイプの説明してる。
https://qiita.com/dosukoi_android/items/f0de78a98e1290dee9d2
画面遷移の作り方。
https://qiita.com/Mocacamo/items/9849d5590d2109eaf4b8
空アクティビティで作るとタイトルバーができてしまうのでそれの消し方。
https://qiita.com/masking/items/7bb18a0c01cde8c12985
画面遷移先へのデータの送り方。
https://qiita.com/yukiyamadajp/items/eb4a25cedca2ff8078fd
画面レイアウトの基本。
https://qiita.com/kengo_kuwahara/items/a8ef858a9810cad42ca6
SQLiteの超基本的実装。真似すりゃできる。

https://akabeko.me/blog/2011/06/android-glossy-gradient/

https://qiita.com/c60evaporator/items/14e63d22d860b73e6f22

Webサイト作成関連

http://www.htmq.com/
HTMLとCSSのクイックレファレンス。HTML/CSSを書いてるときは大体これ見てる。
http://semooh.jp/jquery/
JavaScriptを拡張するライブラリJQueryのレファレンス。

NeuroCuts(原本)の動作確認について (2021/4/13 更新)

研究室内のPCにて、自分の研究で用いているNeuroCutsの元の配布プログラムの動作確認ができたので、他のPCでの環境構築に備えてメモ書きとして要点を残しておきます。自分が残す予定の改良型NeuroCutsも同様の環境で動くはずです。

研究室内で動作確認できたPC → william , adi , judia

https://github.com/neurocuts/neurocuts 公式のれどめも参考にすること。

Python3系のダウンロード

全ての研究室内PCを確認したわけではないのでわからないが、williamにはPython2系しか入っていなかったので、まずはPython3系とその他ライブラリを入れる。NeuroCutsは(確か)使用するライブラリの関係上Python3系でしか動かない。

su root

パスワードは各自聞いてね。

yum install python3

これでpython バージョン3系列がインストールされる。バージョンは多分最新でおk。

curl -O https://bootstrap.pypa.io/get-pip.py

Pythonのパッケージ管理ライブラリ"pip"のダウンロードファイルを取得する。取れない場合はpipでググって直接入手するか、他のPCで取ったものをsftpとかで持ってくる。

Python3 get-pip.py

ダウンロードファイルを起動する。Python3のデフォルトコマンドは"Python3"。(Python2系列が入ってない場合は"Python"になっているかもしれないので要確認)

pip -V

もしくは

python3 -m pip -V

でバージョン情報が出てくればダウンロード完了。 後者だった場合は一応エイリアスを設定して入力を省略できるようにしておく。

alias pip='python3 -m pip'

ライブラリのダウンロード

NeuroCutsで必要になるライブラリはいくつかあるが、古いバージョンじゃないと動かなかったりする謎の罠がある。自分は後述のバージョン構成で動いたが、本家NeuroCutsが万が一にでも更新されていたりする場合は、いろいろなバージョンを試すとよい。

pip install ray==0.8.0

分散ライブラリ"ray"。こいつが一番クセモノ。だけど根幹。自分が試した限りだとこのバージョンでしか動かなかった。なんでやろうなぁ。多分クラス名とかがちょっとずつ変わってるからじゃないかなぁ。

pip install tensorboard==1.14.0

グラフ図示用のライブラリ"tensorboard"。機械学習やってるユーザーにはお馴染みのものなんだそうで。

pip install gym==1.16.0

強化学習のシミュレーション環境を提供するライブラリ"gym"。バージョンは気にしてないはずだが普通に動作してくれる良い子。

pip install pillow
pip install ray[rllib]

この2つも要求された気がするけどバージョン指定なくても普通に動いたから大丈夫だと思われる。 その他、NeuroCutsを起動する上で要求されたライブラリについては臨機応変に対処すること。

動作テスト

Github(もしくは以下参照)からNeuroCutsのフォルダを拾ってきたら、動作テストをしてみる。

NeuroCutsのソースについて

NeuroCutsの原本となるソースコードは、出力するファイルの場所が物によって異なっていたりしてちょっとややこしい。それを特定のフォルダにまとめるように編集したソースを自分のホームに置いてあるので、こっちをダウンロードすること。 ソースの場所は以下。

/home/yutohiruta/NeuroCuts-basic

ここに入っているソースを、各自のアカウントのホームに置いたと想定して以降は進めていく。

run_neurocuts.pyというスクリプトファイルからNeuroCutsを起動できる。オプションの詳細は後述するとして、まずは以下のコマンドを試す。

python3 run_neurocuts.py --rules=acl5_1k --fast

いろいろと警告文とかが出てきた後に、こんな感じに情報が出てくる。

== Status ==
Memory usage on this node: 2.3/125.4 GiB
Using FIFO scheduling algorithm.
Resources requested: 1/16 CPUs, 0/0 GPUs, 0.0/95.8 GiB heap, 0.0/12.84 GiB objects
Result logdir: /home/yutohiruta/ray_results/neurocuts_None
Number of trials: 1 (1 RUNNING)
+-----------------------+----------+-------+------------------------------+--------------------+
| Trial name            | status   | loc   | env_config/tree_gae_lambda   | env_config/rules   |
|-----------------------+----------+-------+------------------------------+--------------------|
| PPO_tree_env_c5fe4c5c | RUNNING  |       |                              |                    |
+-----------------------+----------+-------+------------------------------+--------------------+

で、その後にまたいろいろと警告文とか謎の文とかデータが流れて、

== Status ==
Memory usage on this node: 4.0/125.4 GiB
Using FIFO scheduling algorithm.
Resources requested: 1/16 CPUs, 0/0 GPUs, 0.0/95.8 GiB heap, 0.0/12.84 GiB objects
Result logdir: /home/yutohiruta/ray_results/neurocuts_None
Number of trials: 1 (1 RUNNING)
+-----------------------+----------+----------------------+------------------------------+-----------------------------------------------------+--------+------------------+-------------+----------+
| Trial name            | status   | loc                  |   env_config/tree_gae_lambda | env_config/rules                                    |   iter |   total time (s) |   timesteps |   reward |
|-----------------------+----------+----------------------+------------------------------+-----------------------------------------------------+--------+------------------+-------------+----------|
| PPO_tree_env_c5fe4c5c | RUNNING  | ***.**.***.***:16206 |                         0.95 | /home/yutohiruta/NeuroCuts-basic/classbench/acl5_1k |      1 |          8.06016 |        1001 |   -10844 |
+-----------------------+----------+----------------------+------------------------------+-----------------------------------------------------+--------+------------------+-------------+----------+

という感じの塊が出力されたら、とりあえずエラーなく学習が開始されているのでそのまま待つと学習が進む。途中でやめたくなったらCtrl+Cで止める。 adiのスペック頭おかしすぎィィ!こんなん笑っちゃいますよ

== Status ==
Memory usage on this node: 4.0/125.4 GiB
Using FIFO scheduling algorithm.
Resources requested: 0/16 CPUs, 0/0 GPUs, 0.0/95.8 GiB heap, 0.0/12.84 GiB objects
Result logdir: /home/yutohiruta/ray_results/neurocuts_None
Number of trials: 1 (1 TERMINATED)
+-----------------------+------------+-------+------------------------------+-----------------------------------------------------+--------+------------------+-------------+----------+
| Trial name            | status     | loc   |   env_config/tree_gae_lambda | env_config/rules                                    |   iter |   total time (s) |   timesteps |   reward |
|-----------------------+------------+-------+------------------------------+-----------------------------------------------------+--------+------------------+-------------+----------|
| PPO_tree_env_c5fe4c5c | TERMINATED |       |                         0.95 | /home/yutohiruta/NeuroCuts-basic/classbench/acl5_1k |     88 |          1500.25 |      100106 |  -132.88 |
+-----------------------+------------+-------+------------------------------+-----------------------------------------------------+--------+------------------+-------------+----------+

学習が正常に完了するとこんな風にTERMINATEDの文字がでて終了する。この例の場合は最終ステップでの報酬は-132.88だったというわけである。終了の基準については後述。

TensorBoardによる学習推移の確認

学習を開始すると、ホームディレクトリにray_resultsというフォルダができて、その中に学習データがまとめられている。生成した決定木は別の所にあるのでそちらは後述。 学習データはTensorBoardを使って確認する。

alias tensorboard='python3 -m tensorboard.main'

先にエイリアスを設定して記述を省略しておく。

tensorboard --logdir=~/ray_results/

tensorboardを起動するには読み込むディレクトリが必要なので引数として渡しておく。

TensorBoard 1.14.0 at http://william:6006/ (Press CTRL+C to quit)

起動に成功するとこのようなログが出る。 この状態で、http://localhost:6006/に接続するとTensorBoardを観ることができる

画像

いろいろなデータがグラフとして見れる...というより値が多すぎてどれがどういう値を意味しているのか自分もすべては把握していない。分かっているものは以下。他の項目について分かった人は加筆求む。

bytes_per_rule_mean
値"Byte per Rule"の平均値。メモリ効率の指標。最大値と最小値もある。
memory_access_mean
値"Memory Access"の平均値。木の深さ総数に相当し、探索時間とメモリ捜査回数の指標。最大値と最小値もある。
num_nodes_mean
ノード数の平均値。メモリ効率の指標。
episode_reward_mean
報酬の平均値。

リモートでTensorBoardを見たい場合

一応できるらしいのでメモ書きしておく。

tensorboard --logdir=~/ray_results/

TensorBoardはローカルと同じ要領でつける。

ssh -L 6006:localhost:6006 yutohiruta@adi.cs.info.kanagawa-u.ac.jp

もう1つ端末をつけて、sshのオプションを使ってトンネルを作りながら接続する。これはwilliamからsshしたものだが学外で同じ方法が使えるかは要確認。

トンネル付きでsshしてその端末でTensorBoardを出してもいけた。端末は1個でも問題なし。

これでhttp://localhost:6006/に接続できるはず。(williamではできた)

生成した決定木の確認方法について

生成した決定木は以下のフォルダ内にまとめられている。

~/ray_results/PPO_tree_env_********/neurocuts_out

PPO_tree_env_以下略。。。フォルダ名が長いので変えておくと吉。ただし、tensorboardでグラフを確認する際には対応するjsonファイルが必要になるので、それも同じ名前に変更しておくとわかりやすくなる。というか同じにしておかないと読み込まなくなるかもしれない。要確認。同じ日付けが記載されているはずなのでそれで対応を確認する。

フォルダ内を見るとファイルがたくさん並んでいる。形式はpickleファイルと呼ばれるもので、Pythonで生成したオブジェクトをそのままファイルとしてダンプしたものである。

このファイルをinspect_tree.pyで読み込ませることで決定木の走査テストを行わせることができる。

$ python3 inspect_tree.py test_tree.pkl
This tree has 933 rules  %この決定木が扱っている元ルール集合の大きさ
Tree stats: {'bytes_per_rule': 21.509110396570204, 'memory_access': 9, 'num_leaf_node': 325, 'num_nonleaf_node': 55, 'num_node': 380} %パラメータ
Plottable visualization:
widths,1,5,38,53,97,88,47,33,18 %決定木の各深さにおける横幅
dim0,0,0,1,3,2,1,0,0,0 
dim1,0,2,7,9,11,3,2,2,0
dim2,0,0,0,0,0,0,0,0,0
dim3,0,0,2,1,0,2,2,1,0
dim4,1,0,0,0,2,1,0,0,0 %不明(おそらく各次元におけるカット状況)

Testing randomly sampled packets 0 %ランダムに生成したパケットを木に流している
Testing randomly sampled packets 100
Testing randomly sampled packets 200
Testing randomly sampled packets 300
Testing randomly sampled packets 400
Testing randomly sampled packets 500

...

Testing randomly sampled packets 9600
Testing randomly sampled packets 9700
Testing randomly sampled packets 9800
Testing randomly sampled packets 9900
All checks ok, this looks like a valid tree.

出力結果の一例。正常に決定木が作られている場合はこんな感じになる。

以上が、原本となるNeuroCutsの最低限の動作方法となる。

利用できる引数について

NeuroCutsで設定できる引数は以下。

rules
使用するルールリストを指定する。NeuroCutsフォルダ内のclassbenchをカレントとしたパスを指定しなければならないので注意。ルールリストは田中研のプログラムで作ったルールリストでも動作する。
dump-dir
生成した決定木をダンプするフォルダのパス。原本では/tmp/treesにまとめられるが、アクセス権が無い可能性を考慮して適時変更する。

(筆はここで止まっている。)

NeuroCuts(改良版)の現状の仕様について

お名前:

コメントはありません。 Comments/蛭田 悠人


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS