見出し画像

1と1で1を期待する

AIの基礎技術である神経電網(ニューラル・ネットワーク)を理解するのに、最小ネットワークによるAND回路「1と1は1」の学習を取り上げる。

これを理解するのに神経電網の数学の事は知る必要ないが、数値がどの様に動くかは知る必要がある。難しい事は無く小学生程度の足し算や掛け算で分る話だ。前回の疑問符「?」の部分の左側で説明しよう。

まず、電脳の無形具ソフトとして、電脳命令集プログラムを作る場合は、0〜1までの様々な小数点数値を扱ううつわが必要である。電脳命令技巧プログラミングでは、これを配列と言って[]の符号で表すことが多い。例えば、A[10]とすると、Aと言う配列に数値が10個入れられる事になる。
例、A[0.2、0.01、-0.48、0.9、0.16〜]等10個の小数点数値

この配列は、表計算 無形具スプレッドシート升目セルに相当させる事ができる。神経電網で表現する1個の脳細胞は、この升目の1個に相当する。従って、配列の一つの数値は1個の脳細胞の活動状態を表す。以下、図1.を使って説明する。

図の左上にある、大きな黒丸が神経細胞である。2つの小さな赤丸は「重み」と言う数値を格納する。この重み数値は乱数により-1<X<1の範囲で無作為に決められる。

実際の神経細胞(左下)では、他の細胞から電気信号が来ても直ぐには反応しない。この電気信号は一定の周期(約数百Hz)で発生する律動波パルスである。刺激信号がある量になると、それを受けた神経細胞は自ら信号を発する。これを発火、またこの時の信号量を閾値しきいちと言う。中には刺激信号を受けると、逆に活動を抑える細胞もある。

神経電網(ニューラル・ネットワーク)の「重み」は、実際の神経細胞が刺激を受けて続けて、ある時、突然発火する時の信号の蓄積量、即ち閾値しきいちに相当する状態を作り出すために使われる。図1.の左側「ネットワーク」の模式図は、最も単純な神経電網を表している。

第一層の二個は入力値を保持する。第二層の二個は計算値を保持する。第三層の一個には、神経電網が出す答えの値が入る。赤丸は「重み」を表し、その数は、一つ上の階層の細胞数と同じである。青線と橙(だいだい)線は、信号の方向、即ち計算方法を示している。第二層、第三層の細胞に集まる線は、重みを加味した(掛け算)した信号が足し合わされている事を表している。

右側の表は、上記の事を表計算で実際に計算したものである。電脳の神経電網も前述した配列を使って同様の計算を行う。どんな複雑な神経電網(各種AI)も基本は同じである。右側の表計算図を使って、実際の数値の動き(計算)を説明する。

緑で囲まれた升目B6はB1B5+E1C5と計算される。第一層の細胞の値と第二層の細胞の重みを掛けて足している。E6も同様の計算を行う。第二層に出力された値は、ある関数F(x)を使って処理される。良く使われるのが1/(1+EXP(-X))で、EXPは指数関数の「eのx乗」の事である。ここでの神経電網を理解するのに、関数の事は難しく考える必要はない。

関数F(x)は、図右下のグラフの緑の曲線(シグモイド)に乗る値を出力する。これは上述した様に、実際の神経細胞は刺激を受け続けると、ある時(閾値を超えると)自らも信号を出す(発火)ようになる。この事を模倣するための計算である。グラフの上と右に行くほど値は大きくなる。

第三層では、二層の時と同じ計算が行われる。最後に、値が0.5より大きいなら1.0、以下なら0.0として、ニ値化して出力する。どんな複雑巨大なAIでも、やっている根本の所は全く同じである。

今回の例では、神経電網にAND論理回路の「1と1は1」を期待していたが、答えは0.4049 < 0.5で0.0となり不正解である。「1と1は1」を学習させる必要がある。それは次回としよう。
尚、今まで説明してきた事は、全て前回の「?」の左側の話で「?」そのものではない。それも次回とする。

以上

この記事が気に入ったらサポートをしてみませんか?