1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Scratchで応用情報技術者試験問3(令和元年秋期:ニューラルネットワーク)をプログラム

Last updated at Posted at 2020-03-29

#Scratchで応用情報技術者試験問3(令和元年秋期:ニューラルネットワーク)をプログラム

令和元年秋期の応用情報技術者試験問3では、ニューラルネットワークがテーマとして出題されました。本題では、初歩であるパーセプトロンについの問題でした。私自身ディープラーニングの知識はあまりないのですが、今後の勉強に繋げたいと思います。

IPAの過去問は、こちらです。
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31.html#01aki

Scratchでは、こちらで公開しています。
https://scratch.mit.edu/projects/380609416

##1. 単純パーセプトロンを用いた論理演算

###1-1. 使用する定数、変数及び配列

  • NI:入力ノードの数を表す定数。今回は2入力で、2となる。
  • NC:論理演算の入力値の全ての組み合わせを表す定数。今回は4となる。
  • X:論理演算の入力値の全ての組合せを表す2次元配列。[[0,0],[0,1],[1,0],[1,1]]が設定されている。
  • Y:論理演算の出力値(演算結果)を格納する1次元配列。
  • WY:ノードyのアークがもつ重みの値を表す1次元配列。
  • BY:ノードyのバイアスの値を表す変数。

####1-1-1. 配列X(2次元配列)の用意

Scratchは、2次元配列は使用できないので、リスト(1次元)を2次元配列のようにしています。
MakeListX.PNG

####1-1-2. 配列Y(1次元配列)の用意

MakeListY.PNG

####1-1-3. 配列WY(1次元配列)の用意

論理積(AND)、論理和(OR)、排他的論理和(XOR:3層パーセプトロンで使う)では、[0.5, 0.5]を与えます。

MakeListWY.PNG

否定論理積(XOR)では[-0.5, -0.5]を与えます。

MakeListWY2.PNG


###1-2. プログラムsimple_perceptron
単純パーセプトロンのプログラムです。
f_simple_perceptron.PNG


###1-2-1. 論理積(AND)

ノードyのバイアスの値BYとして、-0.7を与えています。

論理積実行.PNG

###実行結果

論理積実行結果.PNG


###1-2-2. 論理和(OR)

ノードyのバイアスの値BYとして、-0.2を与えています。

論理和実行.PNG

###実行結果

論理和実行結果.PNG


###1-2-3. 否定論理積(NAND)

ノードyのバイアスの値BYとして、0.7を与えています。

否定論理積実行.PNG

###実行結果

否定論理積実行結果.PNG


##2. 3層パーセプトロンを用いた論理演算

###2-1. 使用する定数、変数及び配列
単純パーセプトロンを用いた論理演算にて使用したものに加えて、以下のものを使用します。

  • NM:中間ノードの数を表す定数。今回、中間ノードの数は二つなので、2となる。
  • M:中間ノードの演算結果を格納する2次元配列。
  • WM:中間ノードのアークがもつ重みの値を表す2次元配列。
  • BM:中間ノードのバイアス値を入れる1次元配列。

####2-1-1. 配列M(2次元配列)の用意
Scratchでは2次元配列は使用できないので、以下のようにしました。(配列Xとは異なる方法です)

先ず、空の1次元リストを作成します。

MakeListM.PNG

配列Mへの出し入れは以下の
(おーはしさんという方の、Scratchで二次元配列を使う方法という記事を参考に作成しています。)

Mへの出し入れ.PNG


####2-1-2. 配列WM(2次元配列)の用意
Scratchは、2次元配列は使用できないので、以下のようにしました。(配列X、配列Mとは異なる方法を試してみました。)

MakeListWM.PNG

配列WMからの値の取り出しは、以下のようにしています。
WM取り出し.PNG


####2-1-3. 配列BM(1次元配列)の用意
中間のノードのバイアス値として、排他的論理和では、[-0.2, 0.7]を与えています。

MakeListBM.PNG


###2-2. プログラムthree_layer_perceptron
3層パーセプトロンのプログラムです。

f_three_layer_perceptron.PNG


###2-2-1. 排他的論理和(XOR)

ノードyのバイアスの値BYとして、-0.6を与えています。

排他的論理和実行.PNG

###実行結果
ちゃんと、動いています。
排他的論理和実行結果.PNG


Scratchは子ども向けのものですが、情報技術者試験にもつながる良いツールだと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?