×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
今後の展望 •個体数をより多くする •世代数をさらに増やしてみる •関節に加える力の大きさも考慮してみる •モデルの改良 •平面以外での実験(コブ斜面など)