2020年4月15日水曜日

じゃんけん機械学習スマホアプリ(古典的マルコフ過程) - 高校生向け(advanced)

【要旨】機械学習を学ぶためのチュートリアルがあります。モダンAIではなく、古典的(マルコフ過程に基づく)機械学習によって、スマホを「じゃんけん」に強くします。K12(高校生)向けですが、難易度はAdvancedですから、学生諸君にも取り組んでもらえればよいと思います。

このチュートリアルのねらいと内容
 米国MITによるAI関係チュートリアルのひとつ[1]です。古典的(マルコフ過程に基づく)機械学習というものを、「じゃんけんに強くなるスマホ」 の作成を通して理解します。同時に、MIT App Inventorを用いて、現実的なスマホアプリの作成能力を高めます。

 マルコフ過程を、ジャンケンの学習を題材に丁寧に説明しています。「あなた」と「コンピュータ」が連続ジャンケンするのですが、「コンピュータ」側は、「あなた」の出す2回連続のパターンを記憶していき、次第に、「あなた」の次の手を予測して勝とうする戦略をとります。それをスマホアプリとして実現する方法をきめ細かく述べています。与えられているのは、図2に示すような、プログラムの作成案内と画面設計例です。自分で案内に従って作成していきます。完成プログラムは提供されていません。ただし、行き詰まった場合を考慮して、ステップ毎にヒントやプログラムの断片を見せています。


 小生がこれに従って作成した完成版プログラム(ブロック図)を図3に示します。小さくて詳細は見えないと思いますが、プログラムの複雑さの程度は分かると思います。小生はApp Inventorでの一定の開発経験があるのですが、完成までに約1.5時間を要しました。ですから、これを高校生あるいは大学1,2年生を対象とした講座で行うとすれば、半日〜丸1日の時間を要するものと思われます。


マルコフ過程を利用した効果
 早速ですが、この完成版プログラムを実行させました。図1に示すように2つのケースで実験しました。いずれのケースでも、「あなた」と「コンピュータ」で連続1,000回ジャンケンしてみました。
(a)「あなた」が人間らしく人手でジャンケンした場合
(b)「あなた」が乱数となってジャンケンした場合


 図1(a)のケースでは、「あなた」は、行動をコンピュータに悟られないようにと、できるだけランダムに手を出しました。いや、出したつもりです。でも、3つ並んだボタンを完全にランダムに次々と打つことは難しいです。実際、最終的に例えば、"パー"を出した後に続けて"パー"を出した回数は24回であり、他のパタンよりもかなり少ないです。逆に、"チョキ"の後に"パー"を出した回数は170回とかなり多いです。そういうパターンを、ゲーム進行中に随時、コンピュータに悟られてしまいました。その結果、「コンピュータ」の勝ち数は、「あなた」勝ち数の1.69倍になりました。Markovにやられてしまった!

 一方、図1(b)は、「あなた」は、自分で手を選択するのではなく、乱数におまかせして手を出した場合です。すなわち、「あなた」の行動パターンが把握されないようにしました。こうすると、さすがのMarkovもお手上げのようです。「コンピュータ」の勝ち数は、「あなた」勝ち数の0.98倍であり、ほぼ互角という期待どおりの結果になりました。(この(b)は、このチュートリアルにはありませんでしたが、少しの変更で可能です。)

プログラム作成のポイント
 いかがでしょうか?やってみたい気になったでしょうか?このチュートリアルの説明は平易な英語であり、丁寧に書かれていますので、特に補足する必要はないかも知れません。それでも、なお、初心者には多分ここは少し分かり難いのではないか、と感じた点もあります。その一部を、図4〜図7で補足しますので、ご参考にしてください。






参考文献
[1] Rock Paper Scissors tutorial
https://appinventor.mit.edu/explore/resources/ai/rock-paper-scissors
https://appinventor.mit.edu/explore/ai-with-mit-app-inventor

0 件のコメント:

コメントを投稿