論文

Unity ML-Agents 実行環境の構築と強化学習における報酬の影響の検討
岩田員典（経営学部）

勝又

洋斗（経営学部）

要旨
近年，Artificial Intelligence（人工知能，以下 AI）の発展はめざましく，さまざまな分野に浸透してきている。特に機械学習の一種であるディープラーニングを利用したさまざまなアプリケー
ションは著しい成果を上げている。しかし，機械学習は初期値やパラメータにより学習結果が大きく変わる。そこで，本論文では機械学習の一つである強化学習において報酬がどのような影響を及ぼすかについて調査する。そのために，Unity が提供する Unity Machine Learning Agents（以下，ML-Agents）を使用する。しかし，ML-Agents を実行する環境を構築するのは，頻繁にアップデートされることもあり煩雑である。そこで，本論文では Windows，Linux，Mac における ML-Agents の実行環境の構築方法について説明をする。そして，この環境を使って，サンプルに含まれる人型エージェント「Walker」の報酬を変更した場合の学習結果について検証をする。

キーワード：Unity ML-Agents，機械学習，強化学習

1．はじめにカー7）や人狼ゲーム8）などのテーブルゲー
ムでも AI の研究が進められている。

AI と い う 言 葉 は 今 や， 我 々 の 日 常 生

このように様々な分野で活用されて活の中で見かけることが珍しくないほど

い る 機 械 学 習 で は あ る が， 初 期 値 や パ

頻繁に使用されている。特に機械学習のラメータにより学習結果が大きく変わ

一 種 で あ る デ ィー プ ラ ー ニ ング 1）を 利 用る。 そ こ で 本 論 文 で は， 機 械 学 習 を 行

したさまざまなアプリケーションは著しう際にパラメータがどのような影響をい成果を上げている。例えば，テーブル

及 ぼ す か に つ い て 調 査 す る。 そ の た め，

ゲ ー ム AI は 急 速 に 進 化 し て おり， 完 全

Unity が提供する Unity ML-Agents9）を使

情報ゲームであるオセロ2），チェス3），将用し，サンプルに含まれている学習環境

棋 4），碁 5）など では AI はプロに 勝 利 する

「Walker｣ の 報 酬 を 変 更 し， そ の 影 響 にほどに成長している。更に，プレイヤー

ついて検証する。また，ML-Agents の実同士の読みあいなどが発生する不完全情

行 環 境 の 構 築 は，OS に よ っ て 要 求 さ れ報ゲームである，大富豪（大貧民）6），ポーるライブラリのバージョンが異なるなど

―

1

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

煩 雑 で あ る。 そ こ で，Windows，Linux，

ようになり，幅広い知識と何らかの自意

Mac に お け る ML-Agents の 環 境 構 築 方

識 を 持 つ と さ れ る。「人 工 知 能 に よ っ て

法と実行方法について説明する。

人類が滅ぼされる，人間の知能を人工知能が上回る」と言った文脈で使われるも本 論 文 の 構 成 は 次 の 通 り で あ る。 まのは汎用人工知能に分類できる。

ず， 第 2 章 で AI と 機 械 学 習 に つ い て 説
明 を す る。 次 に， 第 3 章 で Unity ML-

一 方， 特 化 型 人 工 知 能 は， 全 認 知 能

Agents と 機 械 学 習 に つ い て 述 べ る。 そ力を必要としない程度の問題解決や推して，第 4 章で Unity ML-Agents の学習

論 を 行 う ソ フ ト ウ ェ ア を 指 す。 例 え

環境の構築方法について，第 5 章で学習ば，前述した囲碁のプロ棋士に勝利したの実行と結果の利用方法について説明をAlphaGo5） や， デ ィ ー プ ラ ー ニ ン グ な どする。第 6 章でこれらを活用した報酬がも，この特化型人工知能に区別される。

与 え る 影 響 と 学 習 結 果 に つ い て 論 じ る。

2022 年 現 在， 汎 用 人 工 知 能 は 実 現 さ

最後に第 7 章でまとめと今後の課題につれておらず，現存しているのは特化型人いて述べる。

工知能のみである。

2．AI と機械学習

2.2．機械学習

本章では AI について簡単に説明をし，機械学習とは大量のデータの中から規機械学習やディープラーニングの位置づ

則性を見つけ，推論に有用な規則，ルーけについて述べる。

ル，判断基準などを機械に生成させる手法である。AI の研究分野の 1 つである。

2.1．AI の定義と現状

機 械 学 習 が 用 い ら れ る 以 前 の AI は，予測や判断を行うためのルールを全て人

AI とは，「人工的にコンピュータ上な間 が 考 え る 必 要 が あ っ た。 よ っ て AI のど で 人 間 と 同 様 の 知 能 を 実 現 し た も の」

限界は，人間の限界によるものとなってと定義されている。しかし，一般的に非いた。

常に広い概念をもった言葉で，専門家にしかし，機械学習の登場により，ある10）

よっても定義が異なる 。

特 定 の 分 野 に お い て は，AI が 人 間 の 知
能を超えることができるようになってき

AI に は レ ベ ル と い う も の が あ り， 一ている。

般に「汎用人工知能」と「特化型人工知能」に大別される。汎用人工知能は，人間の知能に迫って人間の仕事をこなせる―

2―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

2.2.1．「学習」と「推論」

るスパムフィルタなどがこれに該当する。
「回帰」とは入力されたデータに対し，機械学習には「学習」と「推論」という 2 つのプロセスが存在する。

出力として数値を返す手法である。商品「学 習」 と は， 大 量 の 学 習 デ ー タ の 統の販売予測などがこれに該当する。

計的分布から特徴を抽出し，実際のデー
教師なし学習タから推論するための特徴の組み合わせ

教師なし学習（Unsupervised Learning）

パターン（推論モデル）を生成するためは，データの構造を学習させる手法である。

のプロセスである。
「推論」とは，分類や識別をしたいデー

学習データのみで学習させ，そのデー

タ を，「学 習」 で 生 成 し た 特 徴 の 組 み 合

タに含まれた潜在的なパターンを見つけ

わせパターン（推論モデル）に当てはめ，出す推論モデルを生成する。最も一般的推論結果を導き出すプロセスである。

な教師なし学習の手法は「クラスタリング｣ である。

2.2.2．機械学習の手法「ク ラ ス タ リ ン グ｣ は 学 習 デ ー タ の パ

機械学習の手法にはいくつかの種類がターンを見つけ出し，似たパターンを持ある。代表的なものとして「教師あり学

つ性質の近いデータ同士をまとめる手法

習」，「教師なし学習」，「強化学習」などである。類似購買者のグルーピングなどがある。

がこれに該当する。

教師あり学習強化学習

教 師 あ り 学 習（Supervised Learning）

強化学習（Reinforcement Learning）は，は，学習データに正解ラベルを付けて学ある「環境」に置かれた「エージェント」

習する手法である。予測の基礎となる正が環境から「状態」に関する情報を得る。

解ラベルと，学習に使用する学習データ

そして，その「状態」に対し「行動」し，をセットで学習させることにより，入力得られる「報酬」が最大化するような方されたデータに対して予測を出力する推策を求め，推論モデルを生成する手法で論モデルを生成する。

ある。「Unity ML-Agents｣ において， 主に 使 用 さ れ る 学 習 方 法 で あ る。 他 に も，教師あり学習は大きく「分類」と「回帰」の 2 つに分けることができる。

将 棋 や 囲 碁 な ど の 対 戦 ゲ ー ム AI や， 車

「分 類」とは入 力され たデ ータに対し，の自動運転などに利用される（図 1）。

出力としてデータの属性または種類を返す手法である。迷惑メールかどうかを判断す―3―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

図1

強化学習の例

2.3．ディープラーニング

格納されている。異なる層間のノード同士はエッジで結合しており，ノードに格1）

デ ィ ー プ ラ ー ニ ング は， 教 師 あ り 学

納された数値データは，エッジを介して

習の 1 つである「ニューラルネットワー

次のノードへと伝播していく。このとき，ク｣ を元に開発されたものである。本節

エ ッ ジ に は「 重 み｣ が 付 与 さ れ て おり，

ではニューラルネットワークとディープ

データが入力層から伝播して出力層へたラーニングについて概要の説明をする。

どり着くと出力値（予測値）を得ることができる。ニューラルネットワークにお2.3.1．ニューラルネットワーク

い て 一 般 的 に，「 重 み｣ は 特 定 の 個 体 ご

ニューラルネットワークとは，人間のとに値を設定され，「重み｣ はシナプス結脳の神経細胞を模した数理モデルであ合の強さを表す。中間層では，予測の精る。 ニ ュ ー ラ ル ネ ッ ト ワ ー ク は「 入 力度を高めるための学習が行われる。

層」，「中間層」，「出力層｣ を持つ階層構
2.3.2．ディープラーニング

造で構成される（図 2）。
各層にはノード（図 2 中丸印）がいく

ディープラーニングは，ニューラルネッ

つも配置され，それぞれのノードの間は

トワークの多数 の中間層があるモデ ルをエッジ（図 2 中矢印）で結ばれる。ニュー構築できるため，「ディープニューラルネッ

ラルネットワークでは入力層から中間層，トワーク｣（Deep Neural Network：DNN）

中間層から出力層へとデータを伝播させとも呼 ば れ る。 従 来 のニューラルネットていく。各層のノードには数値データがワークでは中間 層は 2 ～ 3 層 程 度 であっ

―

4

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

図2

ニューラルネットワークの基本構成

たが，ディープニューラルネットワークでに画像や音声，言語などの非構造化デー

は中間層は 100 を超える学習も可能になっタから特徴量を抽出し，精度の高い推論ている。こういった多 層での学 習が 可能

モデルを構築することに長けている。ことなった要因として，コンピュータ処理能

れらの非構造化データは説明変数の数が力，
特に CPU（Central Processing Unit）や多く，特 徴 量の抽出が難しい。そのためGPU（Graphics Processing Unit：画像処理

従来の機械学習の手法を用いて精度の高に特化したプロセッサのこと）の性能向上

い推論モデルを構築するためには，画像などがあげられる。

データや音声データ，自然言語処理の専

また，画像認識などにおいては畳み込門知識が必要である。一方，ディープラー

みニューラルネットワーク（Convolutional

ニングを用いることにより，機 械 が自動

Neural Network，以下 CNN）が用いられ的に特徴量を抽出するため，専門知識がている。CNN では畳み込み層とプーリン得られないような場合にも精度の高い推グ層を有している。これらの層を使うこ論モデルを構築するが可能になっている。

と で CNN は 画 像 か ら 特 徴 を 抽 出 し， 画
3．Unity ML-Agents と機械学習

像内における対象の位置にかかわらず高い精度での認識が行える。

Unity11）と は ゲ ー ム 制 作 の 大 衆 化 を 目

このように，ディープラーニングは特―5―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

指 し て 作 ら れ た ゲ ー ム エ ン ジ ン で あ る。

て 学 習 さ せ る 手 法 で あ る。Unity ML-

Unity を 使 用 す れ ば 3D ゲ ー ム 開 発 や，Agents で は， 人 間（Player） が 操 作 す物理エンジンなど，専門知識が少なくてるエージェントの行動を模倣して学習すも導入することが可能である。

る。そのため人間に似た能力を素早く得

ま た，Unity ML-Agents は 機 械 学 習 のためのライブラリ「PyTorch｣

ることができる。

注1）と Unity
3.3．強化学習＋模倣学習で 作 成 し た 学 習 環 境 を 連 携 さ せ，Unityのシーン内のキャラクターを学習させることが可能である。これを利用すること

強化学習＋模倣学習は，まずは模倣学

により，深い専門知識なしで，視覚的に習により「人間の行動｣ という「正解デー

わかりやすく機械学習を体験することがタ｣ を元に学 習をする。 そして，その学できる。

習結果を更に強化学習により改善をする。

Unity ML-Agents で 利 用 可 能 な 主 な 学
3.4．その他の学習方法

習方法として「強化学習」「模倣学習」「強化学習＋模倣学習」がある。

その他にも，Recurrent Neural Network
3.1．強化学習（ R N N ）， L o n g S h o r t - T e r m Me m o r y（LSTM），カリキ ュラム 学 習 等 を 利 用 することができる。

強化学習は前述のように，ある「環境」に置かれた「エージェント」が環境に対

4．Unity ML-Agents の学習環境の構築

し「行動」し，得られる「報酬」が最大化するような方策を求め，推論モデルを生成する手法である。学習に時間がかか

Unity ML-Agents を 動 作 さ せ る た め にるが，人間を超える能力を得られることは以下のソフトウェアを導入する必要ががある。

あ る。 た だ し，OS の 種 類 に よ っ て 動 作
するバージョンなどが異なるため各節で3.2．模倣学習

Windows，Linux，Mac の 設 定 に つ い て説明する 注2）。
◦

注 1）

以前は TensorFlow が用いられていた。

注 2）

本論文執筆の 2022 年 11 月時点の情報

愛知大学情報メディアセンター

―

6

―

模倣学習は他人が行う行動を模倣しUnity Hub12）

Vol.32, No.1, 2023

Unity12）◦

めて Unity をインストールする手順につ13，14）◦

Unity-ML Agents◦

Python◦PyTorch15）
16）◦

いて＜ Windows 編＞」22）が参考になる。
Unity Hub の Preferences（ 図 4） か ら
Appearance を選び Language を「日本語」
17）

CUDA ・NVIDIA cuDNN （ 利 用にすることで，Unity Hub を日本語化でしたい場合）

きる（図 5）。

な お，Unity の イ ン ス ト ー ル の 際 にユーザ登録やライセンスの取得が必要になる。大学教員の場合に，個人で使用する PC では Unity Educator Plan18）を使い，教室や研究室では教育機関向けライセン
ス 19）を利用する必要がある。 学生の場合は Unity Student プ ラン 20）を 利 用 す る とよい。

図3

Unity Hub のダウンロード

図4

Unity Hub の Preference

図5

Unity Hub の言語の選択

4.1．Windows での設定
Windows10・11 では以下のバージョンの各ソフトウェアをインストールすることで，比較的容易に実行することができる。
◦

Unity Hub：3.3.0◦

Unity：2021.3.21◦

Unity ML-Agents：Release 19◦

Python: Anaconda21） Python 3.9・64Bit Graphical Installer を利用◦

PyTorch：1.13

4.1.1．Unity Hub と Unity のインストール
Unity Hub をダウンロード（図 3）・イン ス ト ー ル し，Unity Hub か ら Unity を
インストールする。インストールは「初―7―愛知大学情報メディアセンター

Vol.32, No.1, 2023

図6

ML-Agents のバージョンとダウンロード

4.1.2．Unity ML-Agents の ダ ウ ン ロ ー ド

展 開し た フォル ダ 名 の た め，
「ml-agents-と設定

release_19」のような名称となることもある。

利 用 し た い Unity ML-Agents の バ ー
4.1.3．Python と PyTorch の準備

ジョンを選びダウンロードする（図 6）。

Python は Anaconda 経由でインストー

download を ク リ ッ ク す る と zip フ ァ イルする。

ル が 得 ら れ る。git を 使 っ て い る 場 合 はAnaconda と PyTorch の イ ン ス ト ー ル

HTTPS 経 由 で も 同 様 の フ ァ イ ル が 得 ら

方 法 は「 コ ン ピ ュ ー タ ー に PyTorch をれる。

イ ン ス ト ー ル し て 構 成 す る」23）が 参 考 にそして，上記のいずれかの方法でダウン ロ ー ド し た ml-agents-release_19.zip をなる。

展開し，任意の場所に移動させる。

また，NVIDA 製のグラフィックスボー

次に，図 7 のように Unity Hub の「開ド を 搭 載 し て い る 場 合 は CUDA を イ ンく」から「ディスクから加える」を選び，ストールすることで利用できる。

ML-Agents のプロジェクトを加える。

Anaconda Prompt を 起 動 し 以 下 の コ

加 え る プ ロ ジ ェ ク ト は「ml-agents¥

マ ン ド で Python の 仮 想 環 境 を 作 成 すProject」 と な る。 た だ し，ml-agents はる。 仮 想 環 境 の 作 成 は 必 須 で は 無 い が，Anaconda の base 環 境 で pip3 を 使 う とAnaconda の 動 作 が お か し く な る こ と があるため，こだわりがない限りは仮想環境を作成した方がよい。なお，仮想環境を作成する前に pip を最新にしておく。

> python.exe -m pip install--upgrade pip

Unity へプロジェクトの追加

愛知大学情報メディアセンター

―

8

―

図7

Vol.32, No.1, 2023

ここで「>」 はプロンプトを表してい選択すると下部に実行すべきコマンドる。またコマンドは一行だが誌面の都合

Run this command：に表示される（図 8）

上折り返して記載する（以下同様）。

ので，それをコピーして実行する。
PyTorch のインストール（CPU）

ま た，Python の バ ー ジ ョ ン 情 報 が必 要 な た め，python--version で 確 認 す> conda install pytorch torchvision

る。このバージョン（本論文執筆時ではtorchaudio cpuonly

3.9.13） を 使 い， 以 下 の コ マ ン ド に よ り-c pytorch

仮想環境を作成することができる。

PyTorch のインストール（CUDA）> conda create --name ml-agents19
python=3.9.13> conda install pytorch torchvision
torchaudio pytorch-cuda=11.7 -c

仮想環境の作成ができたら以下のコマ

pytorch -c nvidia

ンドにより有効にする。

PyTorch がインストールできているか> conda activate ml-agents19

は，Python を 起 動 し「import torch」 をまた，仮想環境を無効にし，元の環境

実 行 す る こと で 確 認 す る こ と が で き る。

に戻る場合は「conda deactivate」を実行

また，CUDA が利用できるようになってする。なお，作成した仮想環境を確認すいるかどうかは，「import torch」 の後にる場合は「conda info -e」である。

「torch.cuda.is_available（ ）」 を 実 行 す る ことで確認が行える。

PyTorch の イ ン ス ト ー ル は CPU と
CUDA に よ っ て 異 な る の で 注 意 が 必 要である。PyTorch のページ 15）から環境を愛知大学情報メディアセンター

PyTorch の選択
―

9

―

図8

Vol.32, No.1, 2023

> python> pip3 install -e .￥ml-agents-envs￥>>> import torch> pip3 install -e .￥ml-agents￥>>> torch.cuda.is_available()

上 記 の 設 定 を 行 う と mlagents-envs とTrue

mlagents の 0.28.0 がインストールされる「True」と表示されれば CUDA が利用

が，python 3.9.13 で は 0.29.0 に 変 更 し なで き て い る。 こ こ で「>>>」 は Python

い と エ ラ ー が 起 き る。 そ こ で 以 下 の コ

インタプリタの対話モードであることを

マンドを実行する。なお，mlagents-envs

表している。なお，対話モードから抜けのインストールで警告が出るが無視してるには「quit（）」と入力する。

よい。

4.1.4．Python による ML-Agents の設定
Anaconda Prompt か ら，Download し> pip3 install mlagents-envs==0.29.0> pip3 install mlagents==0.29.0

展 開 し た ml-agents の フ ォ ル ダ に 移 動 する。例えば，Documents の下に展開して

4.2．Linux（Ubuntu）での設定あれば以下のようなコマンドになる。
本 節 で は Ubuntu 22.04.1 LTS で ML-> cd C:￥Users￥ユーザ名

Agents を 利 用 す る た め の 設 定 に つ い て￥Documents￥ml-agents-release_19

説明をする。Ubuntu では以下のバージョ

こ の フ ォ ル ダ（ こ こ で は ml-agents-

ンの各ソフトウェアを使う。

release_19） 以 下 に あ る ml-agents と ml-◦

Unity Hub：2.4.6

agents-envs の 内 容 を 編 集 可 能 な 状 態 の◦Unity：2022.1.23f1 注3）

パッケージとしてインストールする。

◦

Unity ML-Agents：Release 19◦

Python：Anaconda Python 3.7・64-

これにより，これらのフォルダ以下のファイルを編集しても，再インストール
することなしに編集結果を実行に反映でBit Graphical Installer を利用◦

PyTorch：1.8.2

きる。実行するコマンドは以下の通りで
ある。

注 3）

本論文執筆時には 2021.3.14f1(LTS) が推奨されるが，インストール時にエラーになる。また，
いずれのバージョンを利用しても Project がうまく読み込めないという問題が生じている。

― 10

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

4.2.1．Unity Hub と Unity の イ ン ス ト ー
ルと ML-Agents の設定

実 行 権限を付 与しても，そのまま実 行するとエラーが生じるので，以下のように

24）「Unity を ダ ウ ン ロ ー ド」 か ら「Unity
Hub を ダ ウ ン ロ ー ド 」（ 図 9） を 選 び，
「UnityHub.AppImage」をダウンロードする--no-sandbox オプションを付けて実行する。

> ./UnityHub.AppImage --no-sandbox（本来ならば Installing the Hub on Linux25）

UnityHub が 起 動 し た ら 4.1.1・4.1.2 とに従って Unity Hub をインストールするべ

同 様 に Unity や Unity ML-Agents の 設 定

きだが，起動時にエラーが生じる）。

を行う。
4.2.2．Python と PyTorch の準備
Windows と 同 様 に Python は Anaconda
経由で設定をする。
Anaconda のインストー
ルは「【Ubuntu Server 18.04】Anaconda を

図926）
インストールする」
が参考になる。

Unity Hub のダウンロード

Anaconda は「ANACONDA

ダ ウ ン ロ ー ド が で き た ら「UnityHub.

21）
DISTIRUTION」にアクセスし，Download

AppImage」に実行権限を与える。Google

を ク リ ッ ク す る。Anaconda3-YYYY.MM-

Chrome か ら ダ ウ ン ロ ー ド し た 場 合 は，Linux-x86_64.sh をダウンロードすることがホームディレクトリの下の Downloads にできるはずなので，以下のようにこのファ保存されているはずなので，次のような

イ ル を 実 行 す る（YYYYY に は 西 暦 が，コマンドを実行する。

MM には月が入る）。
ライセンスの認証には「yes」と入力し，> cd Downloads> bash Anaconda3-YYYY.MM-Linuxx86_64.sh

インストール先はデフォルトの「/home/<USERNAME>/anaconda3」を選択する。
これらの設定が完了したら，利用する

また，fuse がインストールされている

python を Anaconda の も の に す る た め

必要があるため，未インストールの場合に，ターミナルを再起動するなど，シェは apt を使いインストールしておく。

ルの設定を読み込み直す。以下のように
python の 場 所 を 調 べ て， 上 記 の イ ン ス> sudo apt install fuse libfuse2

ト ー ル 先 の bin 以 下 に あ る python が 指> cd Downloads

定されていればよい。

愛知大学情報メディアセンター

― 11

―

> chmod 777 UnityHub.AppImage

Vol.32, No.1, 2023

に行うことができる。前項のコマンドを> which python/home/<USERNAME>/anaconda3/
bin/python

トリに移動済みのはずなので，以下のコ
マンドを実行することで設定が完了す

その後は，4.1.3 と同様に設定を完了させ る。 た だ し，Ubuntu 22.04.1 LTS 上 では python のバージョンが 3.7 でないとエラーになるため，下記のコマンドを使い設定を行う。
◦

実 行 し て い る 場 合 は ml-agents デ ィ レ ク

pip の ア ッ プ グ レ ー ド と ML-Agentsのダウンロードる。

> pip install -e ./ml-agents-envs/> pip install -e ./ml-agents/> pip install mlagents-envs==0.29.0> pip install mlagents==0.29.0> pip install importlibmetadata==4.4> python --m pip install --upgrade

なお，これらの実行が完了したら，パ

pip

スの設定を更新するために再度ターミナ> git clone

ルを再起動する必要がある 注4）。

https://github.com/UnityTechnologies/ml-agents.git◦

4.3．Mac での設定

仮 想 環 境 の 設 定 と PyTorch の イ ン
本 節 で の 説 明 は Intel プ ロ セ ッ サ とストールApple シ リ コ ン の 両 方 に 対 応 し て い る。

> cd ml-agents> conda create --name ml-agents19
python=3.7

ま た，macOS Ventura 13.0.1 が 対 象 で ある。
利用するソフトウェアは以下の通> conda activate ml-agents19> conda install pytorch torchvision
torchaudio cpuonly -c pytorch-lts

り で あ る。 た だ し， 執 筆 時 点 で MLAgents に 対 応 す る PyTorch が Mac で は
動 作 し な い た め，Python や PyTorch はDocker27）上 で 動 作 さ せ る。 こ の Docker

4.2.3．Python による ML-Agents の設定
ML-Agents の 設 定 も 4.1.4 と 同 じ よ う◦

Unity Hub：3.3.0

rehash などを使ってもよい

愛知大学情報メディアセンター

― 12

―

注 4）

の設定についても後述する。

Vol.32, No.1, 2023

◦

Unity：2021.3.13f1◦

Unity ML-Agents：Release 19

くするために ml-agetns は Mac 上に置き，◦Docker v4.13.1

バ イ ン ド マ ウ ン ト で Docker に マ ウ ン ト

Docker 内部の設定を行う方式を採用している（図 10）。

◦

Ubuntu 22.04◦

Python: 3.7.1◦

PyTorch: 1.8.1

Agent のスクリプトなどを編集しやす

4.3.1．Unity Hub と Unity のインストール「Unity をダウンロード」24）から「Unity
Hub をダウンロード」をクリックすると

図 10「UnityHubSetup.dmg」がダウンロードさ

ml-agents のマウントれるはずなので，ダブルクリックしイン

ml-agents を 置 き た い デ ィ レ ク ト リ にストールをする。インストールが完了し移動し，以下のコマンドを実施することた ら， ア プ リ ケ ー シ ョ ン フ ォ ル ダ か ら

で ダ ウ ン ロ ー ド か ら build ま で 行 う こ とUnityHub を 起 動 し 4.1.1 と 同 様 に 設 定 をが で き る。 た だ し， あ ら か じ め docker

進 め る。 こ こ で，ML-Agents は Docker

や git が 使 え る よ う に 設 定 が な さ れ て い

か ら ダ ウ ン ロ ー ド す る た め 4.1.2 の 設 定る必要がある。

はまだ行わない。

> git clone https://github.com/

4.3.2．Docker を 利 用 し た Python とPyTorch の準備
前 述 の よ う に ML-Agents に 対 応 す る

kazunori-iwata/ml-agents19-formacOS.git> sh ./docker-build.sh

PyTorch が Mac 向けには提供が終了しているため，Docker を利用して ML-Agents

4.3.3．Unity ML-Agents の設定を動かせるようにする。Docker 内部で起Docker 上 で ML-Agents を 動 作 さ せ る

動 さ せ た OS は Ubuntu 22.04 の た め， 基に は，Unity か ら Linux 対 応 の ビ ル ド を

本 的 な 設 定 は 4.1.3・4.1.4 と 同 様 で あ る。

実施する必要がある。少し情報が古いがま た，Dockerfile や 各 種 ス ク リ プ ト は「Docker で Unity ML-Agents を 動 作 さ

GitHub に「macOS で Unity ML-Agents19

せ て み た（v0.11.0 対 応 ）」29）の「Unity にを動 作させるための Docker の設 定」28）とLinux ビルドサポートコンポーネントをして公開している（付録 1 〜 5）。

追加する」が参考になる。
― 13―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

図 11Unity へのモジュールの追加

まず，以下の手順でモジュールを追加する。
1．Unity Hub の「 イ ン ス ト ー ル 」 か ら
Unity の 右 側 に あ る 歯 車 を ク リ ッ ク
し て「モ ジ ュ ー ル を 加 え る」 を 選 択する（図 11）2．表 示 さ れ た モ ジ ュ ー ル を 加 え る に あ
る 「Linux Build Support（IL2CPP）］

図 12にチェックを入れて「インストール」

モジュールのインストール

ボタンをクリックする（図 12）
次に，ML-Agents に含まれているサン
プルを学習できるようにする。4.1.2 の図
7 と 同 様 に プ ロ ジ ェ ク ト の 追 加 を す る。
その際に，4.3.2 で保存したディレクトリ
以下を指定する必要がある。
また，本論文ではサンプルにある Walker
を 利 用 するため，プ ロジェクトが 読 み 込
めたら「Project」タブから「Asserts → MLAgents → Examples → Walker → Scenes」にある「Walker」をダブルクリックする（図 13）。
Unity 上部に図 14 のようなエージェン
トが表示されれば Scene の設定は完了で
ある。
― 14

―

愛知大学情報メディアセンター

図 13

Scene を開く

Vol.32, No.1, 2023

図 14

エージェントの設置例
図 15

Scene が 設 置 で き た ら， ビ ル ド の 設 定

Build Settings

をし Linux で動作するようにする。
1．Unity の「File」 メニューから「Build

5．ML-Agents の学習の実行と結果の利用

Settings...」を選ぶ（図 15）
ML-Agents で は 17 種 類 の サ ン プル 30）

2．
「Target Platform」 か ら「Linux」 を選択する。

が用意されており，さまざまな環境にお3．
「Add Open Scenes」 を ク リ ッ ク す る

いてエージェントを学習させることがでと 「ML-Agents/Examples/Walker/

き る。 本 論 文 で は 前 述 の よ う に Walker

Scenes/Walker」 が 追 加 さ れ る の で，を対象とする。

Scenes In Build に チ ェ ッ ク マ ー ク が入っていることを確認する（図 16）。

5.1．Walker の概要

4．
「Build」をクリックし（図 16），保存先
を 指 定 す る。 保 存 先 は ML-Agents のWalker は以下のパーツに関して自由度

トップディレクトリである「ml-agents」

26 を有した人型ロボットである（図 18）。

の下の「unity-volume」
にする。
また，
ファ

◦

腰

イル名は「Walker」とする（図 17）
。

◦

胸部

― 15

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

1.
2.
3.

Add Open Scenes をクリック
Scenes In Build にチェックが入––っていることを確認
Build をクリック

図 16

図 17

Build する Scene の設定

Build の保存先の指定

図 18

― 16

―

愛知大学情報メディアセンター

Walker エージェント

Vol.32, No.1, 2023

◦

背骨

値の積

◦

頭部



◦

大腿部

ターゲットの方向にどの程◦脛骨部

度一致しているかを基準に◦足部

判 断 する 注5）。0 以 上 1 以 下◦

腕の 値 に 正 規 化 さ れ て い る。

◦

前腕転んだ場合は 0 となる

◦

手



全 パーツの平均ベクトルが顔 （頭部）がターゲットの

このサンプルにおいてエージェントは，方を向いているかどうかをランダムな位置に配置されるターゲット

基 に 計 算 さ れ る。0 以 上 1（ボックス）に到達することを目的とする。

以下の値に正規化され，転んだ場合は 0 となる。

5.2．報酬（Rewards）の計算方法
5.3．学習の実行
強化学習の報酬は以下の方針に従って計算される。
◦◦

FixedUpdate の タ イ ミ ン グ で 報 酬 を

mlagents-learn.exe）によって行える。この受け取る。これは 0.02 秒に 1 回実施

プログラムはターミナルなどから実行する。

される。

Windows の 場 合 は Anaconda Powershell

本来の強化学習ではエピソードが終Prompt で実行する必要がある注6）。

了した際に合計値を受け取るが，学

mlagents-learn の 引 数 に 学 習 の 設 定

習を早くするためにこの方式が採用

ファイルを指定し，オプション「--run-id」

されている。

を 使 い 学 習 結 果 を 識 別 す る た め の ID を

以下のいずれかの値になる。

指定する。この ID で指定された値を使っ




注 5）

学習は「mlagents-learn」（Windows ではタ ーゲットに到達したステップて「ml-agents/results/<ID ＞ 」 以 下 に 実は1

行 結 果 が 保 存 さ れ る。Walker を 利 用 すそ れ以外のステップは以下の 2る場合に，学習の設定ファイルは「config/

原文では「Body velocity matches goal velocity」と書かれているが，コードを読むと Body
は bodyPartsList のベクトルの平均値を計算しており，goal velocity はボックスの方向に固定値 m_TargetWalkingSpee を乗算した値を利用している。
Anaconda Prompt では実行時にエラーになる。

愛知大学情報メディアセンター

― 17

―

注 6）

Vol.32, No.1, 2023

ppo/Walker.yaml」である 注7）。

なお，コンテナを既に起 動しておま た，「--torch-device=cuda:0」 の よ うり，exit している場合は，sh ./docker-に 指 定 す る こ と で CUDA を 利 用 す る こ

attach.sh で再利用できる。

とができる。
これらオプションについては「Unity ML31）

起 動 に 成 功 す る と 図 19 の よ う な 表

Agents Release 18 の mlagents-learn」 で詳

示 の 後 に「Listening on port 5004. Start

しく説明がされている。また，学習には時

training by pressing the Play button in the

間がかかるためアプリ化して学習環境を複Unity Editor.」と出力されるので，Unity

数起動することで高速化が可能である32）。

の上部にある再生ボタンをクリックする

ID を first と し た 場 合 の 実 行 方 法 は 以ことで学習が始まる。

下の通りである。
◦

Windows> mlagents-learn.exe.¥config¥ppo¥Walker.yaml--run-id=first
◦

図 19

Linux

学習が開始されると以下のように経過> mlagents-learnが表示される。

config/ppo/Walker.yaml--run-id=first◦［INFO］Walker. Step: 30000. Time
Elapsed: 12.147 s. Mean Reward: 0.247.

Mac（Docker 利用）

Std of Reward: 1.623. Training.

> sh ./docker-run.sh

ここで，Step が経過ステップ数，Mean（以下 Docker 内）

Reward は 1000 ステップ毎の報 酬の合計

> cd ml-agentsの平 均 値（この場 合は 30000 ステップま> mlagents-learn

での 1000 ステップ毎），Std of Reward はconfig/ppo/Walker.yaml

その標準偏差を表す。

--run-id=first

なお，本論文では以下の 2 台を利用し本論文では Proximal Policy Optimization（PPO）を利用する

愛知大学情報メディアセンター

― 18

―

注 7）

ml-agents の起動画面

Vol.32, No.1, 2023

エージェントの学習を進めた。

ID が first の場合について示す。

◦◦

Ubuntu 22.04.1 LTS
CPU: AMD Ryzen 7 5700G 3.8GHz> tensorboard.exe

RAM: 64.0 GB◦--logdir=.¥results¥first

Mac Studio
OS: macOS Ventura 13.0.1◦

CPU: A pple M1 Ultra 3.2GHzLinux> tensorboard

20 コア CPU，64 コア GPU--logdir=./results/first

RAM: 128.0GB◦
5.4．学習状況の監視・確認

Mac（Docker を利用）

> sh ./docker-attach.sh

学 習 が ど の よ う に 進 ん だ か は Tensor
Board を利用することで確認することができる。

（以下 Docker 内）> cd ml-agents> tensorboard--logdir=./results/first

logdir オ プ シ ョ ン で は「results/<ID>」--host=0.0.0.0

デ ィ レ ク ト リ を 指 定 す る。 こ こ で は，

TensorBoard の例
― 19

―

図 20

愛知大学情報メディアセンター

Windows

Vol.32, No.1, 2023

これらのコマンドを実行してて 起 動 することが できる。--run-id には 学

「TensorBoard 2.11.0 at http://

習時に利用した ID を指定する。また，学

localhost:6006/」 の よ う に 表 示 さ れ た ら

習の Time Scale（表 示速 度）が 初期値でWeb ブラウザから http://localhost:6006/ には 20 倍のため，--time-scale=1 を指定する。

アクセスすることで学 習状 況を監 視した◦り確認したりすることができる（図 20）。

> mlagents-learn.exe.¥config¥ppo¥Walker.yaml

5.5．学習結果の利用--run-id=first--inference --resume

学習結果を利用するには以下の手順で--time-scale=1

設 定 を し，Unity の 再 生 ボ タ ン を ク リ ッ
クすればよい 33）。

◦

1．results/<ID ＞ 以 下 に あ る Walker.
onnx フ ァ イ ル を Project/Assets/ML-

config/ppo/Walker.yaml--run-id=first

以下に置く。

--inference --resume

2．Unity か ら Prefabs に あ る Behavior--time-scale=1

Parameters の Model で 配 置 し た
Walker.onnx ファイルを指定しする◦

3．Behavior Type を inference にする
し か し， 本 論 文 執 筆 時 に は Unity からこれらを設定しても学習結果を利用できない 注8）。そこで，Unity 側ではなく，
mlagents-learn を 推 論 モ ー ド で 実 行 す る
ことで，学習結果を利用する方法についMac（Docker を利用）

> sh ./docker-attach.sh（学習で Docker のコンテは起動済みのはず。以下 Docker 内）> cd ml-agents> mlagents-learn
config/ppo/Walker.yamlて説明をする。

--run-id=firstと--inference --resume「--resume」を与えることで推論モードとし

注 8）

Linux

> mlagents-learn

Agents/Examples/Walker/TFModels

mlagents-learn に「--inference」

Windows--time-scale=1

筆 者の調査不足の可能性もあるため，確定情報ではない。また，参考文献 33) の最新版が2022 年 12 月に発刊が予定されており，その中で正確な手法が説明されているかもしれない。

― 20

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

6．報酬が与える影響と学習結果◦

頭 の位置が腰の位置よりも高い場合に報酬を与える。 こちらも 0 以上 1

サンプルに用意されている設定で学習以下の値に正規化をする（付録 8）。

を 進 め る と Walker は す り 足 で タ ー ゲ ッ

二つ目の報酬は設定しなくても足を上トに接近をする。これは転倒すると報酬

げて歩行を行うが，バランスをとろうとが 0 になるため，転倒しにくい移動方法

頭を大きく振ってしまう。そこで，頭のを学習したからであると考えられる。

位置をあまり移動させないようにするた

そこで，本論文では報酬を決定する方

め，この条件を加えている。
こ れ ら の 学 習 の 結 果 を YouTube で 公法を変更することで，すり足ではなく普通に人が移動しているような歩き方に開している 35）（図 21 のリンク先）。

近づけることを目差す。 修正は Project/
Assets/ML-Agents/Examples/Walker/
Scripts に 置 か れ て い る「WalkerAgent.
cs」に対して行う。
6.1.1．情報取得部分の修正
姿勢の制御に関わる情報が不十分なため，一部修正する。姿勢の制御について

図 21

は「物理ベースのキャラを強化学習向け

学習の経過動画へのリンク（YouTube）に調整する」にある「手順：既存のスク
リ プ ト を 修 正 す る」34）を 基 に 修 正 を す る

7．まとめと今後の課題（付録 6）。
本論文では機械学習の一つである強化
6.1.2．報酬部分の修正

学習において報酬がどのような影響を及報酬に関してはメソッド「FixedUpdate」

ぼすかについて検証した。この検証にはで決定しているため，この部分を編集す

Unity が提供する ML-Agents を利用した。

る。変更内容は以下の通りである（詳細こ の ML-Agents の 実 行 環 境 の 構 築 方 法は付録を参照）。

や 利 用 方 法 は 複 雑 な 上，OS に よ っ て 異◦左 右いずれかの足 先が，逆の足よりなるため Windows，Linux，Mac の各 OSも高い位置にあり，腰よりも低ければでの方法について解説した。そして，こ高さに応じた報酬を与える。0 以上 1の環境を使って，サンプル「Walker」の以下の値に正規化をする（付録 7）。

報酬を変更した場合の学習結果について

― 21

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

考察した。

2022），2022 年 9 月 31 日 更 新．http://

今後は，本論文では動作が確認出来な

www.tnlab.inf.uec.ac.jp/daihinmin/

か っ た Unity に お け る onnx の 利 用 方 法

2022/［アクセス日 : 2022 年 10 月 31 日］．

や，その他のエージェントの動作につい

7） N o a m B r o w n，T u o m a s S a n d h o l m，て検証を行う予定である。

“Superhuman AI for multiplayer poker”．
Science．365（6456）: 885-890．doi:10.1126/

参考文献

science.aay2400，2019．

1）Yann LeCun，Yoshua Bengio，Geoffrey8） 人 狼 知 能 プ ロ ジ ェ ク ト，2022 年 10 月 4

Hinton，“Deep Learning”． Nature． 521

日更新．http://aiwolf.org/［アクセス日 :（7553）: 436-444． Bibcode:2015Natur.521..

2022 年 10 月 31 日］．

436L．doi:10.1038/nature14539．PMID

9） Unity Machine Learning Agents，https://26017442．S2CID 307409，（2015）．

unity.com/ja/products/machine-learning-2） LOGISTELLO，2002 年 11 月更新． https://agents［アクセス日 : 2022 年 10 月 31 日］．

skatgame.net/mburo/log.html，［アクセス10）人 工 知 能 学 会，What’s AI，https://www.

日 : 2022 年 10 月 30 日］．

ai-gakkai.or.jp/whatsai/［アクセス日: 2022 年

3） Stockfish Outlasts “Rybkamura”，2014 年
8 月 25 日 更 新．https://www.chess.com/

10 月 31 日］．
11）Unity，https://unity.com/ja［アクセス日 :news/view/stockfish-outlasts-nakamura-2022 年 10 月 31 日］．

3634，［アクセス日 : 2022 年 10 月 30 日］．

12）Unity download archive，https://unity3d.

4） 山本 一成，下山 晃，齋藤 真樹，藤田 康博，

com/get-unity/download/archive?_秋葉 拓哉，土井 裕介，菊池 悠太，奥田 遼

ga=2.39544163.1505483174.1667441172-介，須藤 武文，大川 和仁，“ 第 27 回世界525719297.1667441172［アクセス日 : 2022

コンピュータ将棋選手権 Ponanza Chainer

年 10 月 31 日］

アピール文章 ”，第 27 回世界コンピュータ

13）ML-Agents 2022 年 1 月 14 更新．https://

将棋選手権，（2017）

github.com/Unity-Technologies/ml-

5） G o o g l e R e s e a r c h B l o g ，“ A l p h a G o :agents［アクセス日 : 2022 年 10 月 31 日］．

Mastering the ancient game of Go with

14）Installing ML-Agents for Windows，2018

Machine Learning”，2016 年 1 月 27 日更新．

年 3 月 5 日 更 新．https://github.com/

https://ai.googleblog.com/2016/01/alphago-

miyamotok0105/unity-ml-agents/blob/mastering-ancient-game-of-go.html，［アクセ

master/docs/Installation-Windows.md

ス日 : 2022 年 10 月 31 日］．

［アクセス日 : 2022 年 10 月 31 日］．

愛知大学情報メディアセンター― 2215）PyTorch https://pytorch.org/［アクセス―6） UEC コンピュータ大貧民大会 2022（UECda-

Vol.32, No.1, 2023

日 : 2022 年 10 月 31 日］．

jp/get-unity/download［アクセス日 : 2022

16）Accelerated Computing Tools https://

年 10 月 31 日］．

developer.nvidia.com/accelerated-

25）Installing the Hub on Linux．https://docs.

computing-toolkit［アクセス日 : 2022 年 11

unity3d.com/hub/manual/InstallHub.html?_

月 7 日］．

ga=2.126622349.1839134172.1669444065-

17）NVIDIA cuDNN，https://developer.

522614030.1668563380#install-hub-linux［アクnvidia.com/cudnn［アクセス日 : 2022 年 11
月 7 日］．

セス日 : 2022 年 10 月 31日］．
26）
【Ubuntu Server 18.04】Anaconda をインス18）UNITY EDUCATOR プラン，https://unity.

トールする，2019 年 5 月 4 日更新．https://com/ja/products/unity-educator［アクセス

paperface.hatenablog.com/entry/2019/

日 : 2022 年 10 月 31 日］．

05/04/【Ubuntu_Server_18.04】Anaconda
をインストールする［アクセス日 : 2022 年 1019）UNITY 教育機関向けライセンス，https://

月 31 日］．

unity.com/ja/products/unity-educationgrant-license［アクセス日 : 2022 年 10 月 3127）Docker．https://www.docker.com［アクセス日 : 2022 年 10 月 31 日］．

日］．
20）UNITY STUDENT プラン，https://unity.

28）岩田 員典，“macOS で Unity ML-Agents19

com/ja/products/unity-student［アクセスを動作させるための Docker の設定 ”，2022

日 : 2022 年 10 月 31 日］．

年 11 月 28 日 更 新．https://github.com/
kazunori-iwata/ml-agents19-for-macOS［ア21）ANACONDA DISTRIBUTION，https://

クセス日 : 2022 年 11 月 28 日］．

www.anaconda.com/products/distribution29）Docker で Unity ML-Agents を 動 作 さ せ［アクセス日 : 2022 年 10 月 31 日］．
22）初めて Unity をインストールする手順について み た（v0.11.0 対 応），2019 年 12 月 23て＜ Windows 編＞，2022 年 2 月 24 日更新．

日更新．https://qiita.com/kai_kou/items/

https://forpro.unity3d.jp/tutorial/unity-

6fbb8d7aa9d39820428b［アクセス日 : 2022

install-windows/［アクセス日 : 2022 年 10 月

年 10 月 31 日］．
30）Example Learning Environments，2022 年

31 日］．
23）コンピューターに PyTorch をインストールし11 月 19 日更新．https://github.com/Unity-て構成する 2022 年 9 月 22 日更新．https://

Technologies/ml-agents/blob/main/docs/

learn.microsoft.com/ja-jp/windows/ai/

Learning-Environment-Examples.md［アクwindows-ml/tutorials/pytorch-installation

セス日 : 2022 年 11 月 29 日］．
31）Unity ML-Agents Release 18 の mlagents-［アクセス日 : 2022 年 10 月 31 日］．

learn，2021 年 8 月 17 日更新 .https://note.

24）Unity をダウンロード https://unity3d.com/

― 23

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

com/npaka/n/n65bc79178744［ ア ク セ ス
日 : 2022 年 11 月 29 日］．
32）【Unity】ML-Agents の環境をアプリ化して学習を高速化する（ML-Agents で機械学習＆強化学習をやってみる その 6），2022 年1 月 28 日 更 新．https://wakky.tech/unityml-agents6-app-quick/［アクセス日 : 2022 年
11 月 29 日］．
33）布留川 英一（著），佐藤 英一（編），“Unity
ML-Agents 実践ゲームプログラミング v1.1
対応版（Unity ではじめる機械学習・強化”，ボーンデジタル，
学習）（2020）．
34）物理ベースのキャラを強化学習向けに調整する：Unity（ML-Agents（Walker）），UnityChan，VRM（VRoid），DAZ，2022 年 5 月
6 日 更 新．https://mkitys.xoxxox.net/doc/
setcmm_202205041439346698868957.htm［アクセス日 : 2022 年 11 月 29 日］．
35）岩田 員典，“Unity ML-Agents Release 19「Walker」における報酬の影響 ”，2022 年 12
月 1 日更新．https://youtu.be/xarzJGUXpjE［アクセス日 : 2022 年 12 月 1 日］
.

― 24

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

付録 1 Dockerfile

Dockerfile
FROM ubuntu:22.04
MAINTAINER Kazunori Iwata
ENV PATH /usr/bin:/usr/local/bin:$PATH
RUN apt-get -y upgrade && apt-get update && apt-get install -y curl software-properties-common vim && add-apt-repository ppa:deadsnakes/ppa
ENV LANG C.UTF-8
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get install -y python3.7
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
RUN apt-get -y install python3.7-distutils && apt-get install -y python3-pip git
RUN python3 -m pip install --upgrade pip
RUN pip3 install torch==1.8.1 torchvision==0.9.1 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cpu
COPY setup.sh /RUN mkdir /home/tmpuser
RUN useradd tmpuser
RUN USER=tmpuser && \GROUP=tmpuser && \curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.5/fixuid-0.5-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \chmod 4755 /usr/local/bin/fixuid && \mkdir -p /etc/fixuid && \printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml
RUN chown tmpuser:tmpuser /home/tmpuser
USER tmpuser:tmpuser
ENV PATH /home/tmpuser/.local/bin:$PATH#WORKDIR /ml-agents/ml-agents-envs#RUN pip3 install -e .
#WORKDIR /ml-agents/ml-agents#RUN pip3 install -e .
# port 5004 is the port used in Editor training.
# port 6006 is the port used by tensorboard.
EXPOSE 5004 6006
ENTRYPOINT ["fixuid"]

24

― 25

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

付録 2 setup.shDocker-build.sh#! /bin/sh
cd ml-agentsif [ ! -f .setup ]; thenpip3 install -e ./ml-agents-envs
pip3 install -e ./ml-agents
touch .setupfi

付録 4 docker-build.shDocker-build.sh#!/bin/sh
localUID=$(id -u $USER)
localGID=$(id -g $USER)
docker run -it -u ${localUID}:${localGID} -p 5004:5004 -p 6006:6006 -v ${PWD}/mlagents:/ml-agents --name ml-agents ml-agents /bin/bash

付録 5 docker-run.shDocker-run.sh#! /bin/shdocker build -t ml-agents .
if [ ! -d ml-agents ]; thengit clone https://github.com/Unity-Technologies/ml-agents.git
fi

25

― 26

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

付録 6 姿勢情報の取得に関する WalkerAgent.cs の修正部分--- WalkerAgent.cs-org

2022-11-29 16:41:34+++ WalkerAgent.cs

2022-11-30 12:04:26@@ -15,6 +15,11 @@ public class WalkerAgent : Agent//The walking speed to try and achieve
private float m_TargetWalkingSpeed = 10;+

private Quaternion hipsInitialRatation; /*MOD*/++

private Vector3 hipsInitialDirection; /*MOD*/+

private Vector3 headInitialDirection; /*MOD*/+public float MTargetWalkingSpeed // property{
get { return m_TargetWalkingSpeed; }@@ -85,6 +90,11 @@ public class WalkerAgent : Agent
m_ResetParams = Academy.Instance.EnvironmentParameters;+

hipsInitialRatation = hips.rotation; /*MOD*/+

hipsInitialDirection = (m_OrientationCube.transform.rotation * Quaternion.Inverse(hips.rotation)) * m_OrientationCube.transform.forward;+

headInitialDirection = (m_OrientationCube.transform.rotation * Quaternion.Inverse(head.rotation)) * m_OrientationCube.transform.forward;+
SetResetParameters();}@@ -100,7 +110,8 @@ public class WalkerAgent : Agent}//Random start rotation to help generalize-

hips.rotation = Quaternion.Euler(0, Random.Range(0.0f, 360.0f), 0);+// hips.rotation = Quaternion.Euler(0, Random.Range(0.0f, 360.0f), 0);+hips.rotation = Quaternion.Euler(0, Random.Range(0.0f, 360.0f), 0) * hipsInitialRatation; /*MOD*/
UpdateOrientationObjects();@@ -154,8 +165,10 @@ public class WalkerAgent : Agentsensor.AddObservation(m_OrientationCube.transform.InverseTransformDirection(velGoal));//rotation deltas-

sensor.AddObservation(Quaternion.FromToRotation(hips.forward, cubeForward));-sensor.AddObservation(Quaternion.FromToRotation(head.forward, cubeForward));+//sensor.AddObservation(Quaternion.FromToRotation(hips.forward, cubeForward));+//sensor.AddObservation(Quaternion.FromToRotation(head.forward, cubeForward));++sensor.AddObservation(Quaternion.FromToRotation(hips.rotation * hipsInitialDirection, cubeForward)); /*MOD*/sensor.AddObservation(Quaternion.FromToRotation(head.rotation * headInitialDirection, cubeForward)); /*MOD*///Position of target position relative to cube
sensor.AddObservation(m_OrientationCube.transform.InverseTransformPoint(target.transform.position));@@ -252,7 +265,64 @@ public class WalkerAgent : Agent
);
}

26

― 27

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

付録 7 報酬に関する WalkerAgent.cs 変更（足を上げる）
AddReward(matchSpeedReward * lookAtTargetReward);
を以下のように修正
float footReward = 0.001F;
float diffFootHeight = Mathf.Abs(footL.position.y - footR.position.y);float diffFootAndHip = 0;if(footL.position.y > footR.position.y){
diffFootAndHip = hips.position.y - footL.position.y;} else {diffFootAndHip = hips.position.y - footR.position.y;}if((diffFootAndHip > 0 ) && (0.0F < diffFootHeight ) || (0.2F >= diffFootHeight )){footReward = diffFootHeight /0.2F * .3F;}
AddReward(matchSpeedReward * lookAtTargetReward * footReward);

27

― 28

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023

付録 8 報酬に関する WalkerAgent.cs 変更（足を上げ，頭を高く保つ）
AddReward(matchSpeedReward * lookAtTargetReward);
を以下のように修正
float footReward = 0.001F;
float diffFootHeight = Mathf.Abs(footL.position.y - footR.position.y);float diffFootAndHip = 0;if(footL.position.y > footR.position.y){
diffFootAndHip = hips.position.y - footL.position.y;} else {diffFootAndHip = hips.position.y - footR.position.y;}if((diffFootAndHip > 0 ) && (0.0F < diffFootHeight ) || (0.2F >= diffFootHeight )){footReward = diffFootHeight /0.2F * 0.3F;}
float headHeight = head.position.y - hips.position.y;
float headReward = headHeight / 0.2F * 0.3F;
AddReward(matchSpeedReward * lookAtTargetReward * footReward * headReward);

28

― 29

―

愛知大学情報メディアセンター

Vol.32, No.1, 2023