ここでは一つの画像を入力としてとりこむ。まず、そのことを踏まえた上で入力層について考える。
画像パターンをニューラルネットワークに入力するにあたっては、画像の左はし上から画素を順々に調べ、白ならば``0''を、黒ならば``1''を入力層のニューロンに順々に与えていく。画素は全部で42個あるから、入力層のニューロンもまた42個いることになる。
次に中間層について考える。実験1においては、場合わけできるだけの数のニューロンを選んだが、ここではそんなに簡単に決めるわけにはいかない。
まず、五つのパターンを自由に組み合わせて最大五文字の周期パターンを作ることができるようになっている。その組み合わせは、 で3125通りある。
また、そのすべての場合においてすべて異なった特徴を見い出さなければならない。一画像につき42画素のパターンを3125通りと単純に考えても131250となる。
これを識別できうるビット数は
,
となり、最低18個のニューロンが必要だということになる。
しかし、このような複雑なパターンを扱う場合、単純な計算でニューロンの数を定めることはできない。現在の所は、試行錯誤で決めるしかない状態である。
[5]
プログラムを組んだ後、中間層の数を20,30,42,50としてそれぞれ試したところ、中間層の数は30個がいいらしいということが分かった。よって、中間層の数は30個とした。
なお、フィードバック層の数は中間層の数と同じということはいうまでもないことである。
最後に、出力層について述べる。検出すべき周期パターンは最高で三つである。これを区別するには、ニューロンをビットとみなし、場合わけすれば良い。ニューロン二つで四つの状態を表すことができるので、出力層のニューロンは二つで良いことになる。 具体的には、周期パターンでないときは``00''、周期パターン1を検出したときは``01'',周期パターン2を検出したときは``10"、周期パターン3を検出したときは``11''という出力になるように教師信号を与えれば良い。
ネットワークに中間層が二つあるのは、この問題は複雑に噛み合った領域を分ける必要があるからである。例えば、``ABC''と``BCD'',``ABCDE''と``BCD''などがそれである。これを完全に分離させるために中間層を二つ使う。ちなみに、中間層は中間層1と中間層2があるが、どちらもニューロンの数は30である。
今回は、入力にランダムにアルファベットを与えただけでは偶然に周期パターンが入力されるということは非常に少ない。そこで、一定の割合で強制的に周期パターンが入力されるようにプログラムを組んだ。