Slide 1

Slide 1 text

GAでスケーティング学習 yusumi

Slide 2

Slide 2 text

アジェンダ 1.はじめに 2.実験内容 3.モデル 4.遺伝子 5.シミュレーション 6.デモ

Slide 3

Slide 3 text

アジェンダ 1.はじめに 2.実験内容 3.モデル 4.遺伝子 5.シミュレーション 6.デモ

Slide 4

Slide 4 text

スケーティングとは? スキー板を履いて雪面を移動する方法

Slide 5

Slide 5 text

スケーティングのポイント • スキー板のエッジ(板の両側の金属部)に体重をかける • 足は進行方向に対して斜めに傾ける 右足の動き 体重を かけるライン 進む方向 蹴る方向 スキー板 進みたい方向 エッジ

Slide 6

Slide 6 text

アジェンダ 1.はじめに 2.実験内容 3.モデル 4.遺伝子 5.シミュレーション 6.デモ

Slide 7

Slide 7 text

目的 •GAでスケーティング学習させる

Slide 8

Slide 8 text

目的 •GAでスケーティング学習させる いくつかの課題あり しかし...

Slide 9

Slide 9 text

課題点 雪面の実装が困難 エッジングが効かない

Slide 10

Slide 10 text

シミュレーション上での実装 •現実世界の雪面 → 完全な平面(摩擦小) •スケーティング学習 → 歩行学習 (倒れずに歩くことが目標)

Slide 11

Slide 11 text

シミュレーション方法 モデル作成 シミュレーション プログラミング blender Unity C# 実装 エクスポート

Slide 12

Slide 12 text

アジェンダ 1.はじめに 2.実験内容 3.モデル 4.遺伝子 5.シミュレーション 6.デモ

Slide 13

Slide 13 text

モデル •スキー板、ストックを装着した人型モデルを作成

Slide 14

Slide 14 text

動かせる関節(ボーン)の設定 : X軸回転 : Y軸回転 : Z軸回転

Slide 15

Slide 15 text

関節の可動域 関節 可動域 頭 X軸回転, -30~30° 胴体 X軸回転, 0~40° 肩 X軸回転, -80~80° 肘 X軸回転, 0~160° 手 Y軸回転, 0~90° 股 YZ軸回転, -45~45° 膝 X軸回転, 0~60°

Slide 16

Slide 16 text

モデル複製 •50体生成

Slide 17

Slide 17 text

体重と摩擦係数の設定 • 人の体重を設定 • スキー板、ストック、平面の摩擦を設定 スキー板 静止摩擦係数 : 0.6 動摩擦係数 : 0.3 ストック 静止摩擦係数 : 0.6 動摩擦係数 : 0.3 平面 静止摩擦係数 : 0.6 動摩擦係数 : 0.1 人の体重 57.4kg

Slide 18

Slide 18 text

アジェンダ 1.はじめに 2.実験内容 3.モデル 4.遺伝子 5.シミュレーション 6.デモ

Slide 19

Slide 19 text

遺伝子情報 • 遺伝子は各関節の角度(整数値) • 一周期で10個の状態 • 各状態は0.5秒で遷移 • 腕・脚の動きは半周期ずらして左右対称 状態10 初期状態 状態1 状態2 0.5秒 0.5秒 0.5秒

Slide 20

Slide 20 text

遺伝子の構造 頭 胴体 左肩 左肘 左手 左股 左膝 右肩 右肘 右手 右股 右膝 28 38 0 10 33 -15 18 5 5 47 36 18 30 37 10 -4 41 45 1 58 -77 6 86 -76 27 18 23 41 76 10 69 13 34 -11 8 6 状態1 状態2 状態 n=10 これが一つの遺伝子 0.5秒 0.5秒 0.5秒 • 状態周期 : n = 10 • 関節数 : m = 12 遺伝子 : n × m 行列 (=120個の要素) m=12 関節の角度

Slide 21

Slide 21 text

遺伝子の構造 腕・脚の動きは半周期ずらして左右対称 頭 胴体 左肩 左肘 左手 左股 左膝 右肩 右肘 右手 右股 右膝 28 38 0 10 33 -15 18 5 5 47 36 18 15 22 18 10 -36 状態 i 状態 i + n/2 18 33 0 47 5 5 15 股は正負反転

Slide 22

Slide 22 text

任意の時刻の関節角度 • 開始から 𝑡 時間経過したときの各関節の角度 𝑡 > 0かつ𝑚𝑜𝑑 𝑡, 𝜏 = 0で状態遷移(𝑮𝑖 → 𝑮𝑖+1 ) 𝑺𝑡 = 𝑮𝑖 + (𝑮𝑖+1 − 𝑮𝑖 ) 𝑚𝑜𝑑(𝑡, 𝜏) 𝜏 𝑺𝑡 𝑡 時間経過後の各関節角度を要素 にもつベクトル 𝑮𝑖 状態 𝑖 の各関節角度を要素にもつ ベクトル(1 ≤ 𝑖 ≤ 𝑛) 𝜏 • 状態遷移時間(=0.5秒) 𝑚𝑜𝑑 𝐴, 𝐵 𝐴を𝐵で割ったときの余り

Slide 23

Slide 23 text

任意の時刻の関節角度(状態遷移図) 𝑮1 𝑮2 𝑮𝑛 𝑮𝑖 𝑮𝑖+1 𝑺𝑡 𝑡∗ 1 − 𝑡∗ 𝑡∗ = 𝑚𝑜𝑑(𝑡, 𝜏) 𝜏

Slide 24

Slide 24 text

アジェンダ 1.はじめに 2.実験内容 3.モデル 4.遺伝子 5.シミュレーション 6.デモ

Slide 25

Slide 25 text

シミュレーションの構造 開始 初期個体生成 終了 条件 適応度評価 終了 No Yes 交叉 選択 突然変異

Slide 26

Slide 26 text

シミュレーションの構造 初期個体生成 終了 条件 適応度評価 終了 No Yes 交叉 選択 突然変異 開始 各世代は20秒で交代

Slide 27

Slide 27 text

シミュレーションの構造 初期個体生成 終了 条件 適応度評価 終了 No Yes 交叉 選択 突然変異 開始 250世代で終了

Slide 28

Slide 28 text

シミュレーションの構造 終了 条件 適応度評価 終了 No Yes 交叉 選択 突然変異 開始 初期個体生成 • 50体生成 • 遺伝子の値はランダム

Slide 29

Slide 29 text

シミュレーションの構造 終了 条件 適応度評価 終了 No Yes 交叉 選択 突然変異 開始 初期個体生成

Slide 30

Slide 30 text

適応度評価 「長い距離進む」 かつ 「倒れない」 プレイヤーほど評価を高くする

Slide 31

Slide 31 text

適応度評価 「距離」と「転倒」に関するスコアを定義 • 距離は進行方向のみ(Z軸上)を考慮 ➢「現在のフレーム位置」 - 「前のフレーム位置」を加点 (<= 0 なら加点なし)

Slide 32

Slide 32 text

適応度評価 •倒れた場合(XYZ軸の傾き角度の絶対値>80) ➢スコアの加算終了・停止 •最後まで倒れなければ5点追加

Slide 33

Slide 33 text

シミュレーションの構造 終了 条件 適応度評価 終了 No Yes 交叉 選択 突然変異 開始 初期個体生成

Slide 34

Slide 34 text

選択 スコアの高い上位5体 次の世代にそのまま受け継がれる

Slide 35

Slide 35 text

シミュレーションの構造 終了 条件 適応度評価 終了 No Yes 交叉 選択 突然変異 開始 初期個体生成

Slide 36

Slide 36 text

• 上位5体のうち親となる2体を確率的に選択 • 優秀な個体ほど選ばれやすくする 1位 2位 3位 4位 5位 40% 30% 15% 10% 5% 1体目の選択 交叉(親選択)

Slide 37

Slide 37 text

交叉(親選択) • 上位5体のうち親となる2体を確率的に選択 • 優秀な個体ほど選ばれやすくする 1位 2位 3位 4位 45% 30% 15% 10% 2体目の選択 (順位再計算)

Slide 38

Slide 38 text

交叉(多点交叉法) • 頭、胴体、左腕、左脚、右腕、右脚の6点で交叉 • どちらの親かはランダムに決定 頭1 胴体1 左肩1 左肘1 左手1 左股1 左膝1 右肩1 右肘1 右手1 右股1 右膝1 親1 頭2 胴体2 左肩2 左肘2 左手2 左股2 左膝2 右肩2 右肘2 右手2 右股2 右膝2 親2 頭1 胴体2 左肩1 左肘1 左手1 左股2 左膝2 右肩1 右肘1 右手1 右股2 右膝2 子 交叉

Slide 39

Slide 39 text

シミュレーションの構造 終了 条件 適応度評価 終了 No Yes 交叉 選択 開始 初期個体生成 突然変異

Slide 40

Slide 40 text

突然変異 • 各関節は2%の確率でランダムな値に置き換わる 頭1 胴体1 左肩1 左肘1 左手1 左股1 左膝1 右肩1 右肘1 右手1 右股1 右膝1 親1 頭2 胴体2 左肩2 左肘2 左手2 左股2 左膝2 右肩2 右肘2 右手2 右股2 右膝2 親2 頭1 胴体2 左肩1 110 左手1 左股2 左膝2 右肩1 右肘1 右手1 右股2 右膝2 子 交叉 突然変異

Slide 41

Slide 41 text

アジェンダ 1.はじめに 2.実験内容 3.モデル 4.遺伝子 5.シミュレーション 6.デモ

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

学習結果 最大スコア 平均スコア 世代ごとの スコア 全体的に 増加傾向

Slide 44

Slide 44 text

結果の考察 • 「長い距離進む」かつ「倒れない」個体が増えた! • しっかり足を交互に斜めに蹴りだして前進している • 腰は低め(1回だけ上体を起こして大きく前進) スケーティング初心者に近い動き

Slide 45

Slide 45 text

結果の考察 •実験前、失敗時 ➢倒れずに前進すれば十分だろう... •最終結果 ➢意外とスケーティングに近い動きを再現できた?

Slide 46

Slide 46 text

今後の展望 •個体数をより多くする •世代数をさらに増やしてみる •関節に加える力の大きさも考慮してみる •モデルの改良 •平面以外での実験(コブ斜面など)