【授業☆しょ~かい】『パーセプトロン』の解析と複数個の『パーセプトロン』でXORゲートを再現!(前編) 電子技術科(都留キャンパス)No.455

2021年09月10日

令和3年8月24日(月)『前編』:
こんにちは。あんどくんです。
電子技術科をPRしているよ☆彡
みんな、令和3年もリアルに応援よろしくね (`・ω・´)ノ
産短大は、前期授業がスタートして19週目なんだよ。
今日、令和3年8月23日(月)の『前編』では、3,4限におじゃました1,2年生の『プログラミング演習』の前半について紹介するよ。また『前編』では『プログラミング演習』の後半についてを紹介するよ。

この授業では、いま世界中が注目している最新のプログラミング言語『パイソン』によるプログラミングを、『ドローン』や『ロボット』などをリアルにプログラム制御しながら学んでいるんだよ。
昨年は『ドローン』を制御したんだよ。で、今年は戦車型ロボット『オムニ・ローバー』を制御しているんだ。これまでに『オムニ・ローバー』を製作して、『パイソン言語』の文法についてひととおり体験したんだ。で、いまは『パイソン言語』の文法を一から本格的に学んでいるんだよ。1年生の目標はプログラミングを体験することで、2年生は文法を習得することだよ。

はじめに前回の『ふりかえり』をしたんだよ。前回学んだ内容はつぎのとおりだよ。

  • ①『パイソン言語』の本格的な文法
  • ②『AI』のより詳しい概要
  • ③人工ニューロン『パーセプトロン』でANDゲートを再現するプログラムの作成

 

ここで『パーセプトロン』の復習をしたんだよ。
パーセプトロン』は1個の『ニューロン (脳神経細胞)』を人工的に再現したモノなんだよ。
AI』は複数個の『パーセプトロン』からなるネットワークで構成されるんだよ。ここで1個の『パーセプトロン』に注目して、その入力信号を x1 と x2 とおいてみるんだ。このとき『パーセプトロン』は入力信号 x1 と x2 のそれぞれに重み付けをした和:

w1 * x1 + w2 * x2     (1)

を求めるんだよ。で、この和が『しきい値』θを超えると出力 y が 1 (『ニューロン』の発火)になり、『しきい値』θ以下だと出力yは0になるんだよ。

y = 1      for w1*x1 +w2*x2 > θ       (2a)
y = 0     for w1*x1 +w2*x2 <= θ    (2b)

 

 

パーセプトロン』の動作をまとめると、つぎの①~④のようになるんだ。

  • ①入力に重みをかける
  • ② ①の和をもとめる
  • ③ ②の和をしきい値と比較する
  • ④ 和がしきい値を超えているときは出力を1、そうでないときは出力を0にする

数千から数億個の『パーセプトロン』でネットワークを構成すると、人間の知的なふるまいを再現する『AI』ができるんだけど・・・
いきなり数千から数億個の『パーセプトロン』を扱うのは大変なんで、前回は1個の『パーセプトロン』に注目したんだ。
それで、1コの『パーセプトロン』で『デジタル電子回路』を構成する最小単位である『ゲート素子』のふるまいを再現するプログラムを作成したんだよ。
今回は、そのつづきからやっていくよ。

 

というわけで、まずは『オムニ・ローバー』に搭載した超小型PC『ラズパイ』にモニタ、キーボード、マウスを接続して・・・
ラズパイ』を起動したんだよ。

 

ラズパイ』が起動したら『パイソン言語』でプログラムを開発するアプリ『Thonny Python IDE』を立ち上げたんだ。

 

で、前回作成した1個の『パーセプトロン』でANDゲートのふるまいを再現するプログラムをひらいて、プログラムの内容を復習したん だ。

 

このプログラムでは、ANDゲートのふるまいを関数化してあるんだよ。関数は def キーワードをつかって定義するんだよ。

 

同様にして、1個の『パーセプトロン』でORゲートのふるまいを再現するプログラムもつくったんだよ。下の写真みたいに なるんだよ。

 

ここでもう1個 NANDゲートのふるまいを再現するプログラムをつくることになったんだ。ちなみにNANDゲート真理値表は下の写真の とおりだよ。

 

はじめは『重み』w1とw2、それに『しきい値』θ の値を適当に仮定しておくんだ。で、プログラムができたら実行して・・・
NANDゲートのふるまいが再現されていなければ、『重み』w1とw2、それに『しきい値』θ の値を調整して再度プログラムを実行するんだ。この作業をNANDゲートのふるまいが実現されるまで繰り返すんだよ。

 

下の写真は、南湖 准教授が示した、NANDゲートのふるまいを再現するプログラムだよ。

 

ここで南湖 准教授が『パーセプトロン』の『重み』w1と w2と、それに『しきい値』θの決め方について、グラフをつかって説明したんだ。 下の写真みたいに、方眼紙に横軸を入力 x1、縦軸を入力 x2 とした座標系を描くんだ。で、入力 (x1, x2) に対して出力 y が 1 のときには、座標 (x1, x2) の位置に『黒丸』を描き込むんだ。同様にして、出力 y が 0 のときには『白丸』を描き込むんだよ。下の写真はANDゲートについて『黒丸』と『白丸』を描いたところだよ。

 

ここで出力 y の値が 0 の領域と 1 の領域の境界線について考えることになったんだ。
この境界線は、重み付けした入力信号の和が、ちょうど『しきい値』に等しくなるときだから

w1 x1 + w2 x2 = θ    (3)

で表せるんだ。

 

ここでANDゲートに対する『重み』と『しきい値』の値:

w1 = w2 = 0.5,   θ = 0.8     (4)

を式 (3) に代入して、これを x2 について解いてみるんだ。
そうすると、つぎの式が得られるんだよ。

x2 = – x1 + 1.6     (5)

 

式 (5) は、中学校の数学で学んでように、『傾き』が -1 で『切片』が 1.6 の直線の式だよ。
下の写真のようにグラフ上に、この直線の式を描いてみると、この直線より上側の領域は『黒丸』のみなんで出力 y が 1 の領域なんだ。一方、この直線より下側の領域は『白丸』のみなんで出力 y が 0 の領域なんだよ。
このグラフからわかるように、『黒丸』のみの領域と『白丸』のみの領域にわける直線は、何種類も引けるんだよ。
なので『重み』w1と w2、それに『しきい値』θの値も、一意的には決まらないんだよ。こんな風に、直線で出力 y の領域を分離できる問題を『線形分離問題』っていうんだよ。

 

 

つぎにNANDゲートについてグラフを描いて解析したんだよ。
その結果、出力 y の領域を直線で分離できることが確認できたんだよ。
こんな風にゲートのふるまいを1個の『パーセプトロン』で再現しようと思ったときには・・・
出力 y をグラフに描いてみて、直線で『黒丸』の領域と『白丸』の領域がわけられるときには、グラフから直線の『傾き』と『切片』の値を読み取ることで、『重み』w1と w2と、それに『しきい値』θ の値を決めることができるんだ。
ここで、
式 (3) を x2 について解くと

x2 = – (w1 / w2) x1 + (θ / w2)     (6)

となるから境界線傾き』が –(w1 / w2)で、『切片』が (θ / w2) になるんだ。
なので、グラフに引いた境界線から読み取った『傾き』を a、『切片』を b とおくと

 – (w1 / w2) = a,   (θ / w2) = b     (7)

が成り立つんだよ。あとは w2 の値を適当に設定すれば、式 (7) から w1 と θ の値が決まるね!

というわけで『前編』では『線形分離問題』をグラフをつかって解析して、『重み』と『しきい値』の決め方を学んだんだよ。

後編』では『非線形分離問題』としてXOR (eXclusive OR:排他的論理和) ゲートのふるまいが複数個の『パーセプトロン』で再現できることを示していくよ。

後編』につづく≡3 ≡3 ≡3

★バックナンバー★

2020年度
電子工学の理論を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15087
最新の電子技術 (IoT) を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15051
最新の電子技術 (パイソン言語) を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15018
就活準備の授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=15076

2019年度
電子工学の理論を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=9556
最新の電子技術 (IoT) を学ぶ授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=9534
就活準備の授業・・・https://www.yitjc.ac.jp/yitjc/blog/?p=9604

★学生募集中★

県内イチ♪ 最新の設備と最高のスタッフで、みなさんをお待ちしています♪ 2年間で電子工学の理論を学んで、最新の電子技術を身に付けるんだったら、『電子技術科☆都留キャンパス』で決まりだね!
詳細はお問い合わせください。

★お問い合わせ先★

山梨県立産業技術短期大学校 都留キャンパス
〒402-0053 山梨県都留市上谷5-7-35
TEL 0554-43-8911(代)