第9回 じゃんけんで勝つにはどうすればよいか?

「AIとじゃんけん ‐機械学習の「学習」におけるパラメータの可視化による考察‐」の探究活動
皆さん、こんにちは。テラオカ電子です。皆さんは「じゃんけん」をよくしますか?「じゃんけん」は強いですか?今回、第9回は、AI技術を実装したじゃんけんマシンの探究活動を述べます。また、機械学習を実装したオリジナルの電子工作についても紹介します。
第9回では、まず、【研究の背景と概要】を述べ、次に、【「じゃんけんマシン」の概要】、【ニューラルネットワークの概要】、【通信プログラムの追加】、【動作実験とパラメータの変化】、【まとめと今後の課題】を述べ、最後に本探究活動の【評価】を述べたいと思います。
なお、生徒がサイエンスコンテストで本研究を発表したものを、私が代読した形ですがYouTubeで公開しています。ご視聴いただくと後の話が、良く分かると思います。
【研究の背景と概要】

この「課題研究」の前年、『機械学習(ニューラルネットワーク)の機構の「見える化」の研究』を行いました。これは、ニューラルネットワークを「エクセル」と「電子工作」で構築(可視化)して、手書き数字の分類をするものです。ここでは、ニューラルネットワークのパラメータ(重み、バイアス)は、私が別のパソコンで手書き数字のデータ(MNIST)を基に計算(「学習」)したものを使いました。すなわち、前年度の研究は、ニューラルネットワークの「推論」の可視化研究でした。
この年の研究では、さらに進めて、ニューラルネットワークの「学習」の可視化を行うことに挑戦しました。具体的には、まず、生徒は、私が設計したニューラルネットワークを使った「じゃんけんマシン」という電子ゲームをはんだ付けして製作します。次に、この電子ゲームがニューラルネットワークの「学習」の計算を行っている時の状態(重み、バイアスおよび交差エントロピー誤差のパラメータ)を、通信プログラムで電子ゲームからパソコンに送ります。そして、こうして得られたパラメータの変化を分析して「学習」の過程を考察します。
この「学習」の可視化により、学習データに矛盾、すなわち、同じ入力に対して異なる正解値を持った教師データ(具体的にどういう状態をいうのかは後で説明します)、で「学習」を行うと、交差エントロピー誤差が減少せず「学習」が進まないことを示します。 この活動は、生徒の既有知識が活かせる電子工作を媒体にして、機械学習の「学習」の進み方を可視化することで「学習」の理解を深めた探究活動です。
【「じゃんけんマシン」の概要】

写真1に製作した「じゃんけんマシン(コンピュータ)」の外観を示します。マシンの動作は以下の通りです。まず、スピーカーから「じゃんけんぽん」という音声が出たら、下部の3つの丸いタクトスイッチで人がじゃんけんの手を入力します。左から「グー」、「チョキ」、「パー」です。
入力が終わると、マトリックスLEDでマシンが自分のじゃんけんの手を表示します(写真1ではチョキを表示)。同時に、「あなたの勝ちです」などと勝負の判定結果を音声で知らせます。また、上段のLCDには、対戦結果(人が勝ち:〇、負け:×、あいこ:=)が表示され、下段のLCDには、マシンが人の出す手を予想した確率が表示されます。じゃんけんは20番勝負です。
マイコンには、Microchip社のPIC16F18877を、音声合成には、アクエスト社のATP3012を使いました。
次にマシンの「学習」の手順を説明します。じゃんけんの勝負は、20番ですが、マシンは、一つ前のじゃんけん勝負の手の組(マシンと人間)を、その次の勝負の人間の手を教師データとして過去6回分を機械学習します。具体的には、最初、初期値の学習結果(事前学習)で7番勝負を設定します。次に、このときの6回分の勝負の結果を学習(7番目の勝負は6番勝負の教師データになる)して、それを使って8番から14番勝負をします。このときも、8番から13番勝負の結果で学習(14番勝負は13番勝負の教師データになる)します。最後に、この学習結果で15番から20番勝負をして終了となります。

事前学習の内容を図1に示します。具体的には、1回目のデータは、マシンが「チョキ」で人が「グー」の場合で、2回目の人が出す手である「チョキ」を1回目の正解値とします。図1に示す6回分の学習データで「学習」します。この「学習」した結果で、1番から7番勝負を行います。この時、この勝負を記憶しておき、これらのデータで「学習」を行って次の8番から14番勝負を行います。同様に、この勝負を記憶して、それらを「学習」して、次の15番から20番勝負を行います。このように、本マシンは「学習」を合計3回行います。 すなわち、本マシンは、過去の経験を活かすために、人のじゃんけんの出す手は、一つ前の相手と自分の手から決まるという1階マルコフモデルで構成したものです。
このモデルは、金丸隆志:『RaspberryPiではじめる機械学習』を参考にしました。ただし、書籍では、オンライン学習(逐次学習)が紹介されていますが、今回は、学習の過程を可視化したかったので、バッチ学習に変えています。また、パラメータ数は、マイコンの容量を十分に使う方針でできるだけ増やしました。
【ニューラルネットワークの概要】
次に、「じゃんけんマシン」のニューラルネットワークの構造を示します。
1 ニューロンモデル

ニューロンモデルは、脳の神経細胞を模した数理もモデルです。ニューロンモデルを図2に示します。各入力にそれぞれ値の異なる「重み」(結合荷重)を掛け情報の伝達を調整し、それにニューロンの感度を表す「バイアス」を足します(ニューロンの興奮のしやすさを調整)。これを、ニューロンを興奮させる「活性化関数」に入力して出力します。ここで、入力をx、出力をy、重みをw、バイアスをbとすると、次式となります。

2 ニューラルネットワーク
ニューラルネットワークはニューロンモデルを繋げたものです。本マシンのニューラルネットワークの構造を図3に示します。入力を受け取る入力層、全体の出力をする出力層、その間にある中間層(隠れ層)で構成されます。ここで入力から出力に情報が伝わることを順伝播(「推論」)、逆に出力から入力に伝わることを逆伝播といいます。逆伝播は、重みとバイアスの「学習」に使います。

3 「学習」(勾配降下法)
次に、本マシンの「学習」で使った、パラメータの決定方法である勾配降下法を説明します。
図5に、勾配降下法の計算式を示します。ここで、矢印は、重みの更新を示します。また、ηは学習係数と呼ばれる定数で学習の速度を決めます。ここで、∂E/∂w と ∂E/∂b が勾配でです。
また、図6に交差エントロピー誤差の計算式を示します。これは、正解(tk)から離れるにつれてどこまでも大きくなり、出力(yk)が正解に近づくほど0に近づくものです。
4 勾配の求め方(バックプロパゲーション)
次に、勾配の求め方を説明します。この方法は、バックプロパゲーションといわれ、ニューラルネットワークを学習させる際に用いられるアルゴリズムです。出力と正解の誤差がネットワークを逆伝播することにより、ネットワークの重みとバイアスを最適化します。

図7に出力層の勾配の計算式を示します。①式のδは誤差を示しますが、これは出力層の活性化関数がソフトマックス関数であることから出力(yk)と正解(tk)の差となります。wjkは、j番目の中間層からk番目の出力層の重みです。
図8に中間層の勾配の計算式を示します。①式のδは誤差を示しますが、これは中間層の活性化関数がシグモイド関数であることからこのようになります。wijは、i番目の入力層からj番目の中間層の重みです。
以上、電子ゲームの「学習」は、図1に示すようなフォーマットで入力データを与え、図7と図8の計算式で勾配を求め、図5に示す勾配降下法でパラメータを更新して行います。なお、本じゃんけんマシンは、3回学習を行いますが、全て同じパラメータの初期値(乱数で設定)から更新を行っています。
【通信プログラムの追加】
「学習」の様子を分析するために、重みやバイアス、交差エントロピー誤差をじゃんけんマシンからパソコンに送る通信プログラムを追加しました。
プログラム作成には、PICマイコンの統合開発環境(IDE)であるMPLAB X IDEのMCC機能を使いました。図9に示すように、EUSARTの通信の割り込みの設定を行いました。また、プログラムは、図10のように作成しました。ここで、1181行目から1195行目の pc_send関数がEUSARTを使ってパソコンにデータを送信する関数です。配列kai[]には、改行コードが入っており、配列konx1[]には、交差エントロピー誤差が入っています。1169行目から1178行目のshouritu_hyouji関数により、交差エントロピー誤差は、LCDに表示されると同時にパソコンに送信されます。送信されたデータは、パソコンで起動されたTeraTermというフリーソフトで受信されます。この様子を写真2に示します。


【動作実験とパラメータの変化】
じゃんけんマシンと20番勝負を2パターン行いました。その結果を先の通信で得られたデータから分析します。2つの勝負のパターンをそれぞれ図11(パターンA)と図12(パターンB)に示します。

1 交差エントロピー誤差の学習係数に対する変化
まず、最適な学習係数を求めます。学習係数(η)を0.1、0.2、0.3、0.5として学習の更新をした場合の交差エントロピー誤差(E)の変化を図13に示します。なお、学習の更新回数は、エポック(EPOCH)と呼ばれます。
この結果から、学習係数が0.3以上だと、交差エントロピー誤差が振動することがわかりました。また、学習係数が0.1だと交差エントロピー誤差の減少に時間がかかります。そこで、学習係数を0.2と設定しました。
さらに、学習係数が0.2の場合の、中間層の重みとバイアス(中間層の1番目のニューロンへのパラメータ)の変化を図14に示します。不連続な変化は見られませんでした。なお、これらの結果は、事前学習(図1)を教師データとしたものです。

2 学習データに矛盾がある場合の交差エントロピー誤差の変化
事前学習のデータ(図1)には、データに矛盾はありませんが(ここで言うデータの矛盾とは、同じ入力に対して、異なる正解値があること意味します)、2つのじゃんけん勝負、パターンAおよびBにはデータに矛盾があります。
パターンA(図11)の勝負では、2回目の学習データである、3番勝負と6番勝負は、どちらも(マシン、人)=(グー、チョキ)なのに対し、その正解値は、チョキ(4番勝負の人の手)とグー(7番勝負の人の手)と違っています。さらに、3回目の学習データでは、2組に矛盾があります。また、パターンB(図12)では、2回目の学習データでは、矛盾はありませんが、3回目には2組矛盾があります。なお、正解値に矛盾がある場合、じゃんけんマシンは、どちらかの正解値の手を出力しています(後述)。
図15は、パターンA、図16は、パターンBの交差エントロピー誤差の変化をそれぞれ示したものです。ここで、更新回数の1回から50回は、事前学習データの更新、51回目から101回目は、1番勝負から7番勝負の学習データの更新、102回目から152回目は、8番勝負から14番勝負の学習データの更新を示しています。


また、図17に、最終学習回数更新(EPOCH:各50回目)の交差エントロピー誤差の値と矛盾の組数を示します。これらから、データに矛盾があると、交差エントロピー誤差が小さくならないことがわかります。また、学習データの矛盾の組数が多いほど交差エントロピー誤差は小さくならないこともわかります。このことは、逆に、交差エントロピー誤差が小さくならず、学習が進まない場合は、データに矛盾がある可能性があると考えられます。
図11、図12の一連の勝負のパターンから、学習の正解値が一意に決まっているパターンの場合には、じゃんけんマシンは、その「学習」した正解の手を出しています。それに対して、学習データに矛盾のある場合、例えば、パターンAの勝負で、3番勝負と6番勝負の場合、その正解値は異なっています。この時、8番勝負と13番勝負の次の勝負のマシン結果(9番勝負と14番勝負)では、人の出す手をグーと予想(7番勝負の正解値を採用)し、パーを出しています。
ここで、9番勝負、14番勝負マシンの予想確率を観ると、両者とも、
グー :51.99% チョキ:47.69% パー :0.303%
となっており、グーとチョキが拮抗した確率を示していました。マシンは、最終的に人の出す手は、わずかに高い確率であるグーと予想して、パーを出しました。ちなみに、10番勝負(学習データに正解値が1つある場合)は、
グー :95.64% チョキ: 4.28% パー :0.083%
であり、 また、12番勝負(学習データに正解値が1つある場合)は
グー :92.56% チョキ: 7.32% パー :0.122%
など、確信した確率を示していました。このことから、この確率の差の比較をすれば、迷っているかどうかがわかるので、この時のじゃんけんの手をなんらかの方法で新たに計算すれば、強いじゃんけんマシンが作れると考えられます。

【まとめと今後の課題】
まとめと今後の課題は、以下のようになりました(生徒の論文引用)。
以上、 本研究では、まず、顧問の先生が設計したニューラルネットワークを使った「じゃんけんマシン」という電子ゲームを製作した。次に、この電子ゲームがニューラルネットワークの「学習」の状態(重み、バイアスおよび交差エントロピー誤差のパラメータ)を電子ゲームからパソコンに送信するプログラムを追加した。そして、このプログラムを使ってパラメータの変化を分析し、「学習」の過程を考察した。
具体的には、2つの勝負パターン(20番勝負)のパラメータ変化を分析した。この「学習」の可視化により、学習データに矛盾、すなわち、同じ入力に対して異なる正解値を持った教師データで「学習」を行うと、交差エントロピー誤差が減少せず「学習」が進まないことを示せた。このことは、逆に、交差エントロピー誤差が小さくならない場合は、学習データに矛盾が無いかを疑う必要があるといえる。
本研究では、人のじゃんけんの出す手は、一つ前の相手と自分の手から決まる1階マルコフモデルという単純なモデルでじゃんけんマシンを製作した。実際、学習データに勝負のパターンがある場合には、正解値を提示してくれた。これは、従来の事前に決めたパターンで動作するシーケンス的なマシンではなく、過去の経験、状況を学習してじゃんけんの手を予測しているので、いわゆる「AIマシン」であるといえる。
しかしながら、強いじゃんけんマシンを目指すには、過去に正解値の無いパターンの場合や、正解値が矛盾した場合にじゃんけんの手をどう決定するかが問題となる。これについて、現状のモデルでは、ニューラルネットワークの分類を行う関数がブラックボックスであるため予測ができない。今回の例では、パターンAやパターンBが示すように、マシンが同じ手ばかり連続して出すということがおこった。このことから、この点を補正するモデルを検討していく必要がある。
【評価】
最後に、この探究活動の評価を述べたいと思います。
1 教材開発と授業実践から帰納的にAI教育を構築する
現在、AI人材が不足していると言われています。経済産業省の試算によれば、2030年には、その数は78.9万人とされます。そうした中、理系、文系を問わず全ての大学生にAI教育が実施され始めました。従って、工業高校生を含む高校生にもAIリテラシー教育が必要な状況にあります。
しかしながら、高等学校においてAIリテラシーを学ぶために、どのような教材を使い、どのような授業を行うかの先行事例は少なく、どう対応すれば良いか分からないというのが現状です。そこで、まずは様々なタイプの教材を開発し授業実践を蓄積することで、指導内容や方法を帰納的に構築していくことが必要と考えました。
私は、AIリテラシーを学ぶための教材を2018年から開発してきましたが、その過程でそれらが、「AIの仕組み」、「AIの活用」および「AIの工程(作り方)」の3つの軸で整理できると考えるようになりました。そして、開発した教材を使って、それらの特性に応じた授業を実践しています。今回の事例は、「AIの仕組み」を学ぶ活動です。特に、機械学習の「学習」に焦点を当てました。
2 教材はどのようなものが必要か? - Something New 100+ -
「教材はどのようなものが必要か?」という問いは、AIリテラシーと近い領域の「メディア・リテラシー」の知見から引用したものです。しかし、まず問いを考える場合、この問い自体の前提を問う必要もあります(宮野公樹:『問いの立て方』)。そもそもAIを学ぶ「正しい教材」というものを明確に定義できないからです。そこで、逆説として、様々なタイプの教材を開発して「教師が気まぐれで語った魅力的な未知の知に思わず聞き入ってしまう、「それってなに?」と問わずにいられなくなってしまう新しい何かを気付かせる教材」(神代健彦,:『「生存競争」教育への反抗』)を作ろうと考えました。そうすれば、生徒の興味関心や能力の違いから、この生徒には適切であっても別の生徒には向かないという問題も解決できます。すなわち、様々な教材を数多く開発すれば、どれかは「生徒に刺さる教材」になります。
そこで、100以上の教材を開発すると決め、2018年より生徒の既有知識を足掛かりに、試行錯誤しながら教材を製作してきました(現時点で概ね達成できたと思います)。そして「AIの仕組みを学ぶ教材」、「AIの活用を学ぶ教材」および「AIの工程(作り方)を学ぶ教材」の3つの軸で整理しています。今後も、これらの軸のベクトル上で簡単なものから高度なものまでを段階的に配置して多様な生徒が学べるように教材を整備していきたいと思います。
本教材は、機械学習の「学習」の仕組みを学ぶ教材です。そして、この教材を使った探究活動の問いは、「教師あり機械学習において、「学習」はどう進むか?特に、教師データに矛盾があった場合どうなるか?」でした。ニューラルネットワークの「学習」で扱う勾配降下法(バックプロパゲーション)の指導に挑戦しました。この理論の理解は数学や統計学の知識が必要であり高校生の学習範囲を超えているので(合成関数の微分など)、そのイメージ理解(推論の値と教師データの違いの大きさに応じてパラメータを調整する)と最終結果の使い方に限定して指導を行いました。バックプロパゲーションについては、生徒には「公式」として与え、そのプログラムを解説しました。
生徒は、この研究で複雑な理論でも数学的にうまく処理すると簡単な結果となり実装可能であることに納得した様子でした。また、製作に関しても、教材の電子回路の規模が大きいので、はんだ付けに苦労すると予想しましたが、事前の指導(ジグソー学習)もあり生徒は不具合なく製作できました。さらに、電子工作の「学習」の様子をパソコンに取り込むための通信プログラム(I2C)も作成し追加しました。
結果、図15,16で示すように「学習」の可視化により、学習データに矛盾、すなわち同じ入力に対して異なる正解値を持った教師データで「学習」を行うと交差エントロピー誤差が減少せず「学習」が進まないことを示しました。
この事実は当たり前のことではありますが、ネットで検索しても例が上がらなかったので研究意義はあったと感じています。なお、この授業は、全てのステップにおいて教師主導で行われました。すなわち、ここでの探求活動は教師が作成した問いに対する結果が事前に示されており、それを通して生徒は探究の方法を学びました。

これで、「AIとじゃんけん -機械学習の「学習」におけるパラメータの可視化による考察-」の探究活動の紹介は終わりです。今回は、技術的な内容が多かったですが、ここまで読んでくれて、ありがとうございます。
ご質問・ご意見・ご感想等がありましたらコメントください。 テラオカ電子
【イチオシのYouTube動画】
このコーナでは、記事に関連する(関連しないかもしれません)気になるYouTube動画を紹介しています。今回は、RCサクセションの『ぼくの好きな先生』です。皆さんは、どんな先生が好きですか? 教員志望の方、将来どんな先生になりたいですか? 私は、この歌の先生のようにタバコは吸いませんが、「職員室は嫌い」なところは同じです。
コメント