徒然なるままにMake:

Fusion360 3Dプリンタ 電子工作 面白そうなモノづくりをやっていくブログ

ディープラーニングを始めてみる 3

前回

something-make.hatenablog.com

参考書はこれ

 

前回はパーセプトロンでいくつかの論理回路を作りました。そして、XORゲートはパーセプトロンでは作ることができないということがわかりました。

ではXORゲートはどうやって作られているか?

パーセプトロンは「値の和が一定値以上、以下で出力が変わる(0か1か)」という特性を持っています。これは半導体等に近い性質です。

基本的にコンピューターに使われる論理回路半導体の性質を利用して作られています。

しかしXORゲートも論理回路なわけですから、半導体と同じようにパーセプトロンで作ることができるはずなのです。

ならば参考にすべきは半導体論理回路です。XORゲートは半導体でどうやって作られているのか?

いくつか方法はありますが、その一つは論理回路を組み合わせて作ること。

AND,NAND,ORゲートを組み合わせることでXORゲートを作ることができます。

 

論理回路の記号は一般的に下の図のようになります。

f:id:something-make:20180915102523p:plain

記号はこちらからお借りしました。

要はこの論理回路を組み合わせることで、XORゲートを作ることができるわです。

f:id:something-make:20180915110951p:plain

 

このNANDとORとANDを組み合わせた論理回路の動作を見てみます。

まずNANDゲートの出力s1

f:id:something-make:20180915111536p:plain

次にORゲートの出力s2

f:id:something-make:20180915111546p:plain

この二つとXORゲートの出力yを並べてみると

f:id:something-make:20180915111733p:plain

s1,s2の片方が0,もう片方が1のとき0を出力,両方が1のとき1を出力するのがわかります。つまり最後にANDゲートを取り付けることで、XORゲートになります。

このとき、最後のANDゲートに両方が0の入力がされたときの反応が書いてありませんが、それを考える必要はありません。

この論理回路の入力はx1,x2だけで、入力される全組み合わせは(0,0),(0,1),(1,0),(1,1)の4通りだけです。そしてx1,x2に入力した場合の出力はs1,s2以外はありえません。

つまりどうやっても最後のANDゲートに(0,0)が入力されることは回路の構造を変えたりしない限りありえないので心配する必要はありません。

x1,x2からs1,s2を計算し、さらにs1,s2からyを計算することでXORゲートを実装することができました。

f:id:something-make:20180915122247p:plain

パーセプトロンの結果をさらにパーセプトロンに入れることで、単純なパーセプトロンでは作ることができなかった論理回路を製作することができます。このパーセプトロンの構造を図にすると下のような多層構造のネットワークになります。

f:id:something-make:20180915123028p:plain

このネットワークで一番左の段を第0層、その右が第1層、一番右の段を第2層と呼びます。

このパーセプトロンはこれまで見てきたANDやORような1層のパーセプトロンと違い、2層のパーセプトロンになっています。こういった何重の層になるように重ねたパーセプトロン多層パーセプトロンと呼びます。

 

パーセプトロンは層を重ねることで、XORのような直線でグラフを区切るだけの1層のパーセプトロンより柔軟な表現ができるようになりました。

このパーセプトロンをさらに組み合わせていくことで、コンピューター自体も作り上げることができます。

 

今日はここまで