![見出し画像](https://assets.st-note.com/production/uploads/images/93290157/rectangle_large_type_2_52fa4ee705d7f8723bad1322170605fd.png?width=800)
強化学習で遊ぶ part1 AIが育つ「強化学習」の面白さ
こんにちは!ナガメ研究所です。普段はポーカーAIの開発をしています。ポーカーを通して強化学習というものの面白さを伝えたいのですが、なかなか思うように開発が進められていません(ポーカーって難しい・・・)
そこで、もっと身近で面白そうなテーマをいろいろつまみ食いして、その発見をお伝えする強化学習で遊ぶシリーズを考えました。このシリーズでは、ナガメ研究所の博士と助手、ナガメの3人に強化学習の紹介をしてもらいます。難しい数式や計算は省き、なるべく理解しやすい用語で解説します。AIや強化学習についてご興味のある方、ぜひご覧ください!
![](https://assets.st-note.com/img/1671417738047-fDwtkcB0IY.png?width=800)
はじめに
![](https://assets.st-note.com/img/1671180087223-ldrX7uiz3u.png?width=800)
博士じゃ。2022年のFIFAワールドカップ、面白かったの~~。なので今日は我が研究所のスーパーAI”ナガメ”にサッカーを覚えさせて、AI選手だけのワールドカップを開こうかの。
![](https://assets.st-note.com/img/1671180411800-GApNnsf4Dd.png?width=800)
![](https://assets.st-note.com/img/1671180312884-qZsFm24yMw.png?width=800)
助手です!面白そうですね!・・・でも博士、私AIもサッカーの戦法も全く知りません。サッカーをするAIなんて作れるかな・・・・。
![](https://assets.st-note.com/img/1671180421628-vQOWxCiRc7.png?width=800)
![](https://assets.st-note.com/img/1671415424391-8c2aip7Bmt.png?width=800)
強化学習のポイントさえ知っていれば大丈夫じゃ。さっそく解説していくぞい。
![](https://assets.st-note.com/img/1671415424390-nlquHqhOZ5.png?width=800)
強化学習
![](https://assets.st-note.com/img/1671180697268-BEGG18lZQ6.png?width=800)
そもそも強化学習とはなんぞや?じゃが、AIが特定の問題を解決するために必要なパラメータを探索する手法のことを指すのじゃ。
![](https://assets.st-note.com/img/1671180697285-4dbcqMjwKj.png?width=800)
![](https://assets.st-note.com/img/1671180697457-QnVguqHr0x.png?width=800)
ちんぷんかんぷんです。特定の問題ってなんですか?
![](https://assets.st-note.com/img/1671180697480-TskUvcIuJx.png?width=800)
![](https://assets.st-note.com/img/1671416664320-BdzR8sgG6P.png?width=800)
実は、この問題を設定することが重要なポイントの一つじゃ。今回はサッカーの対戦を想定しよう。サッカーの勝敗は、相手より多くの得点を決めることじゃ。つまり、ゴールを決めるためにどんな行動をすればよいのか?を考える必要がある。これが問題じゃ。
![](https://assets.st-note.com/img/1671416664391-Xk97IcHS6q.png?width=800)
![](https://assets.st-note.com/img/1671425100371-G429qBspmN.png?width=800)
サッカーを、そういう問題ってことにして、考えるんですね。パラメータを探索というのは?
![](https://assets.st-note.com/img/1671425100374-Wt8nng6zsr.png?width=800)
![](https://assets.st-note.com/img/1671425185340-cXH49ch0RS.png?width=800)
パラメータとは、モデル内で使われる数値のことじゃ。モデルとは、入力データに対する出力をするコンピュータだと思えばよいかの。
実際に学習する様子を見てもらったほうが早い。さっそく、サッカー場へゆくぞ。
![](https://assets.st-note.com/img/1671425185377-Hv4lVeMtNG.png?width=800)
学習環境
![](https://assets.st-note.com/img/1671424556962-xiGsJQ5aXS.png?width=800)
![](https://assets.st-note.com/img/1671425599267-krcpvLIWw6.png?width=800)
UnityのML-agentsのサンプルをお借りしているぞ。
強化学習を理解するには、環境、観測、行動、報酬という単語と関係を把握することが重要じゃ。上の写真は、AI”ナガメ”にサッカーをしてもらう様子じゃ。”環境”とは、壁であったり、ボールやゴールがある”世界”の事を言う。
![](https://assets.st-note.com/img/1671425599243-nWJKD8NBBI.png?width=800)
![](https://assets.st-note.com/img/1671425599407-XrPLJ8KRm5.png?width=800)
(よく見たらナガメのお面してる・・・)
![](https://assets.st-note.com/img/1671425599427-inANORZ4b8.png?width=800)
![](https://assets.st-note.com/img/1671426086072-5mS4MN1GYe.png?width=800)
![](https://assets.st-note.com/img/1671426096353-yWmrzWjQ92.png?width=800)
次に環境を観測するのじゃ。見える範囲の位置情報をモデルの入力とする。壁やボール、ゴールの他、味方や相手の位置も観測データとなるのじゃ。Unityでは、赤い線上にあるオブジェクトがナガメの見えている範囲じゃな。
![](https://assets.st-note.com/img/1671426096754-kKSO213pDL.png?width=800)
![](https://assets.st-note.com/img/1671426257022-NyI7Et0szU.png?width=800)
![](https://assets.st-note.com/img/1671426265435-jaOlHUDrBb.png?width=800)
ナガメはこの環境を前後左右に行動できる。ボールをゴールに入れることでプラスの報酬を得る。逆に入れられたチームはマイナスの報酬を得るのじゃ。報酬が沢山もらえるようモデルのパラメータを調整することで、良い行動を学習するのじゃ。
これが、環境・観測・行動・報酬の流れじゃな。
![](https://assets.st-note.com/img/1671426265434-uNcHxLzi4g.png?width=800)
![](https://assets.st-note.com/img/1671427636429-wzX3HxRJrQ.png?width=800)
これだけなんですね~。どれくらい学習すると良いんですか?
![](https://assets.st-note.com/img/1671427636474-dX8vBCnfJb.png?width=800)
![](https://assets.st-note.com/img/1671427668992-bhXN2XlHen.png?width=800)
良い質問じゃ。学習の流れでも話した通り、モデルへの入力は環境の情報だけじゃ。良い行動が何かは報酬がもらえたかどうかで決まる。つまり、最初は目的であるゴールすら分からない状態なのじゃ。学習の初期段階の様子を撮影したので見てみるかの。
![](https://assets.st-note.com/img/1671427669017-xt0kUY07bP.png?width=800)
![](https://assets.st-note.com/production/uploads/images/93637660/picture_pc_e0613db5a67719f1ec2afe0ea9c8207d.gif?width=800)
![](https://assets.st-note.com/img/1671427669334-EqzosFfTUb.png?width=800)
ありゃりゃ。ゴールどころか、ボールに見向きもしていませんね。
![](https://assets.st-note.com/img/1671427669392-UTtjbYXbLe.png?width=800)
![](https://assets.st-note.com/img/1671428142708-RNM0jMzijZ.png?width=800)
最初はランダムに動いてばかりで、得点はできていないの。じゃが、沢山の試合を経験すると、たまたまボールがゴールに入ったり、入れられたりする。この積み重ねで、良い行動・悪い行動を学習するのじゃ。さて、後は茶でも飲んでのんびり待つとしよう。
![](https://assets.st-note.com/img/1671428142658-MCpfxD9f4c.png?width=800)
~~~数時間後~~~
学習結果
![](https://assets.st-note.com/img/1671430170162-6PMolevmCh.png?width=800)
博士!そろそろ見てみましょう!
![](https://assets.st-note.com/img/1671430170075-TBcC9GN0O7.png?width=800)
![](https://assets.st-note.com/production/uploads/images/93643427/picture_pc_2c56dede5d7656e4342421049c80c0a0.gif?width=800)
![](https://assets.st-note.com/img/1671435786232-qVtRYbY1qr.png?width=800)
相手のゴールに入れることに成功しておる。学習は成功じゃな。
![](https://assets.st-note.com/img/1671435786192-8sp8w8gjEO.png?width=800)
![](https://assets.st-note.com/production/uploads/images/93643870/picture_pc_9e83ce56fbd7a35ccc2adb6c75c3519e.gif?width=800)
![](https://assets.st-note.com/img/1671435786332-3UjgjndXlV.png?width=800)
こっちはゴールの前に立ってキーパーのような役割をしているナガメもいますね!何も教えてないのに、すごい!
![](https://assets.st-note.com/img/1671435786332-LF1caDvpfW.png?width=800)
![](https://assets.st-note.com/img/1671436457626-qFWx4nEwOz.png?width=800)
このように、強化学習を使うことでサッカーの問題を解くことができた。しかし、ご覧の通り”非常に簡略化された”学習環境じゃ。人数はたった4人じゃ。相手にぶつかってもOK。オフサイドやペナルティもない。
こういったルールや設定も、環境の一部じゃ。ぶつかった場合はマイナスの報酬を与えたり、PKを行うこともできる。
![](https://assets.st-note.com/img/1671436457636-OFK2n5IvnZ.png?width=800)
![](https://assets.st-note.com/img/1671436457762-DpKW8MxVky.png?width=800)
ナガメ?はまだ四角のキャラクターですが、足を使ったりヘディングしたりできるんでしょうか?
![](https://assets.st-note.com/img/1671436457788-DQTupX6fBr.png?width=800)
![](https://assets.st-note.com/img/1671436803054-PpcT2zBD0W.png?width=800)
関節の動きも強化学習で獲得することは可能じゃ。しかし、沢山の関節の角度を決定するのは非常に難しい問題になるので、工夫が必要じゃの。そういった発展問題も、そのうちやっていこうかの。
![](https://assets.st-note.com/img/1671436802996-J9kanotHtX.png?width=800)
おわりに
![](https://assets.st-note.com/img/1671436902823-AeooCtXf9o.png?width=800)
さて、今回の実験はここまでじゃ。ちと補足じゃが、今回のサッカーAIは”self-play”といって、AIが自分自身と対戦して強くなる強化学習手法の一つじゃ。対戦以外にもいろんなタスクをこなす複数の学習方法があるのじゃ。
今日触ったサンプルは、無料で使わせてもらえることができる。興味がある方はサンプルをカスタマイズして新しい問題を設定し、強化学習を使ってAIに解いてもらいたい。とても面白いぞ!
![](https://assets.st-note.com/img/1671436902673-kzwBOKpdgp.png?width=800)
![](https://assets.st-note.com/img/1671436902862-Vs9HbW7l92.png?width=800)
ありがとうございました。私もモンダイセッテイしてみます!
![](https://assets.st-note.com/img/1671436902899-TV8x0bteJv.png?width=800)
この記事が気に入ったらサポートをしてみませんか?