Javaで3層パーセプトロンのsimulation

Neurosim

説明

概要
これは、3層パーセプトロンの応用として符号化を試みるsimulationです。 画像情報を圧縮するために入力層と中間層(隠れ素子)、出力層を用意します。 入力層は5×5(25個)の素子からなり、ここでは4枚の画像を扱いますので中間層として2個の素子を用意します。 出力層には入力層に入力されたものと同じものが出力される様に、各素子間の重みを更新(学習)していきます。 学習が終ると、入力された各画像は中間層にあるように圧縮されます。 つまり、ここでは画像が4枚ですので2ビット分あれば画像の判別はつくという事になります。
画面の説明
最上段には操作用のボタンと入出力用のテキスト領域、 その下には上から入力層、中間層、出力層になっています。 各セル内の黒領域は0〜1の値を示し、大きい程1に近く、0の時はセル内は白になります。
操作法
入力層の各セル内をクリックして4枚の画像を作ります。画像を作り終えたらstartボタンを押します。 学習が進むにつれて出力層に入力層と同じものが出来てくると思います。 学習を途中で止めるにはstopボタンを押します。OS、ブラウザによっては、なかなか止まらない事があります。 重みの更新のスピードを変えるには、学習をしていない状態でstepの値を変えて下さい。 あまり大きな値を入れると振動してなかなか学習が進みません。 学習はendに設定してある値よりdiff(入力と出力の誤差)の値が小さくなるまで行われます。
参考文献
上坂吉則、尾関和彦:「パターン認識と学習のアルゴリズム」、文一総合出版