ニューラルネットワーク
|
|
|
|
|
|
|
|
|
|
|
階層型ニューラルネットワークの優れた学習方式の開発
ニューラルネットワークのデモプログラムです、下をクリックしてください。
要旨 当ホームページでは、従来の階層型ニューラルネットワークの学習における主な課題を解決した、優れた学習方式を提供する。
1.はじめに ニューラルネットワークは、学習や並列処理など従来のコンピュータが苦手としてきた事を可能にすることができるシステムとして期待され、盛んに研究されてきた。しかし、従来の階層型ネットワークにおける誤差逆伝播法などの学習方式には、以下のような課題があった。
1−1従来の学習方式における課題 (1)学習後パターンの分解能力が不完全な場合がある。 従来の誤差逆伝播法などによる学習では、局所解に陥り必ずしも最善な結合に収束しない場合があった。これは初期化のために乱数を使用しているため、最善な結合に比較的近い初期化であった場合は良い結果が得られるが、程遠い初期化であった場合は、適正な学習ができないケースが考えられる。例えば強い結合が必要とされる箇所が、偶然非常に弱い結合値に初期化されたとすると、その結合箇所には、信号がほとんど通わないために、結合値を増やす量も少ないままとなってしまうためである。
(2)学習によりでき上がったネットワークの解析が困難 従来の誤差逆伝播法などによる学習では、でき上がったネットワークは極めて複雑な結合値を持ち、さらに全数結合を持っているため、その機能解析は極めて困難となってしまう(ブラックボックスとなる)。
(3)中間ユニットの適正な数の把握が不可能 パターンの分解に必要となる中間ユニットは、多すぎると余分な結合が残り、少ないと十分な解能力が発揮できないなどの不具合につながる。このため、あらかじめ学習により必要となる中間ユニット数が把握できれば良いのだが、適正な中間ユニット数は、従来予測不可能であった。このため多くの中間ユニットを用意した場合は、有効に使用さないユニットが多くできてしまう。また、逆に少ない場合は、ネットワークの分解能力に限界が現れるなどの不具合につながっていた。
(4)追加学習が不可能 学習方式を検討していく上で、教示パターンを増やし追加学習をさせたいといったニーズは当然考えられる課題である。しかし従来の学習方式では、教示パターンを増やす場合、再び初期化した後、教示パターンの種類を増やして最初から学習させるという手段しかなかった。もし、容易に追加学習が可能となれば、教示による学習を繰り返し行うことが可能となり、限りなく高機能に成長することとなる。
1−2本方式による課題解決の概要 課題(1)について 課題(1)の解決方法としては、乱数による初期化を行わず、結合はすべて値ゼロに初期化し、必要な都度結合値を設定する方式とする。この方式は、必要な都度結合値を設定し中間ユニットを使用するため、学習が進まなくなることは無く、最善な結合に収束する。
課題(2)について 課題(2)の解決方法としては、出力ユニットの閾値を低い状態に固定(論理OR)する方式が有効である。この方式では、中間ユニットの閾値を高い状態に収束させる(論理AND)ため、加法標準型の論理式として理解できるネットワークができ上がる。
課題(3)について 課題(1)の解決方法により、中間ユニットは必要な都度使用されるようにするため、使用される数は適正となる。
課題(4)について 課題(1)の解決方法により、必要な都度中間ユニットの使用を増やしていく方式であるため、中間ユニットを使い切らない限り、学習済みのネットワークに追加して学習させたいパターンのみを与えるだけで追加学習が可能となる。
1−3本方式の概要 三層の階層型ニューラルネットワークにおいて、ユニット数は出力ユニット固定、使用中間ユニットは可変とする。学習前の段階では結合が無く、中間ユニットは必要の都度必要な関係のみ結合が作られて使用する。出力ユニットの閾値は、低い状態に固定(論理OR)、中間ユニットの閾値は低い状態から上昇させる。教示により既存中間ユニットが発火した場合は、当該中間ユニットの入力との結合最適化を行う。アクティブな教示信号に対し、出力ユニットに結合する既存中間ユニットが発火しない場合には、別の適切な発火をした中間ユニットと結合を作る。この時、他の中間ユニットがいずれも適切な発火をしない場合にのみ、新たな中間ユニットを使用する。 中間ユニットを学習過程で増やしてゆくという手法は従来もありましたが、その中間ユニットの結合を最適化してゆく手法が従来のものであった。また別の適切な発火をした中間ユニットと結合を作るという方式は存在しなかった。 この方式は、論理式から論理回路を作るときの最適化手法に似ており、中間ユニットの発火を主項選択と見ることができる。そういった見方をすれば動作が理解しやすいと思われます。論理式の場合は出力に対応する論理式が与えられるが、入力データからの学習では、教師信号という信号が与えられることになる。その信号により必要な回路を形成するような学習をしなければならない点が大きな相違点である。
2.学習方式の解説
入力〜中間ユニット間の結合は、新規中間ユニット使用時にアクティブであった入力を正の値に設定する。(非アクティブなものとはゼロに設定) (1)入力〜中間ユニット結合更新式と表 ΔW=k・Fu・(2Ii−1)、Fu=Fn・Mu、Fn=(2Tn−On)
(注)中間ユニット発火時のみの更新である。学習判定F=−1時は更新しない。 従ってΔW=k・On・Tn・Mu・(2Ii−1)となる。
(2)中間〜出力ユニット結合設定の解説図
2−2.計算式の解説 Fn 出力ユニット学習信号 Fn=(2・Tn−On)・On Fu 中間ユニット学習信号、 Fu=Mu・Wnu・Fn (優先順位、Fu=1←Fu=−1←Fu=0) 更に出力ユニットに接続する(Wnu=1)中間ユニットの内、最大発火値の中間ユニットのみFu=1とすることにより分化が促進する。(相互抑制と同等)
Wui 中間ユニット入力の重み(−1〜1) ΔWui 中間ユニット入力の重み更新値(Fu=1の時のみ更新) (1)Ii 中間ユニット入力(0〜1 又は 0or1)の場合 ΔWui =(Fu・(2・Ii−1)−Wui)・k (2)Ii 中間ユニット入力(−1〜1 又は −1or0or1)の場合 ΔWui =(Fu・Ii−Wui)・k
My 中間ユニット計算値 My=狽vui・Ii/狽vui (0〜1) Hu 中間ユニット閾値 (0〜1 、Huの初期値は0.5以下) Hu=Hu+(Mu−Hu−0.5・Bu)・k Mu 中間ユニット出力 (0or1) Bu 中間ユニットPuの結合最大値Wuimax/結合積算値ΣWui Wnu 出力と中間ユニット結合の重み (0or1) On 出力 (0or1) Tn 教師信号 (0or1) k 学習係数 (1以下)
2−3補足 中間ユニットの初期結合時点での入力との結合は、真に必要な入力と余分な入力が含まれている。出力ユニットに入力する中間ユニットが一つで、教師信号が単純であれば(一つの積項)、単に教師信号と入力の相関を取れば真に必要な入力のみが分離できる。さらに中間ユニットの発火を考慮した場合、入力がアクティブである数の割合は50%なので、閾値を50%以下とすることにより初期では常に発火する可能性が高くなる。(学習が進むと真に必要な入力のみでしか発火しなくなり発火は減少します)。一つの出力ユニットに入力する既存中間ユニットが発火し、教師信号がアクティブな場合は、真に必要な入力が含まれていて発火した可能性が高いため、正の補正信号により入力のあった結合を増やし、入力の無かった結合を減らす処理をする。中間ユニットが発火し教師信号がアクティブでない場合は、必要でない入力により発火した可能性が高いが、発火する比率が多いため何もしない。 次に出力ユニットに複数の中間ユニットが接続した場合、教師信号が欲する真に必要な入力が含まれていない中間ユニットにも正の補正信号が返るのは学習の妨げとなる。そこで発火した中間ユニットのみの学習とすることにより真に必要な入力が含まれている中間ユニットにだけ補正信号が返るようにする。(補正信号の算出に関与したのも発火した中間ユニットのみである)。尚ここでも、一つの中間ユニットの発火により正の補正信号が返り、間違って発火した別の中間ユニットにも正の補正信号が返ることが排除できないが、これは最大の反応をした中間ユニットにのみ補正信号が返るよう設定することにより排除が可能となる。 教師信号がアクティブで、対する出力ユニットに接続する既存中間ユニットがいずれも発火しない場合は、それら中間ユニットの結合のある入力に教師信号が欲する真に必要な入力が含まれていないか、または、それら中間ユニットはある程度学習が進んでいるため、その入力パターンには反応しないと考えられます。そこで新しく中間ユニットを使用し、真に必要な入力が含まれている現在アクティブな入力との結合を作ります。尚既存中間ユニットが発火せず教師信号がアクティブな場合でも、既存中間ユニットに真に必要な入力が含まれている場合を排除できない点が考えられるが(同じ中間ユニットが複数作られてしまう)、この場合に対応するには、中間ユニットの初期閾値を50%よりもう少し低く設定し、ユニットが発火しやすくすればかなり排除することが可能となる。 (閾値について) 初期の閾値を50%以下としてあるのは、前記のように初期の結合により余分な入力が含まれていても、中間ユニットが発火しやすくするためであり、学習が進み必要な入力との結合が高くなるに従い正の補正信号が返る率が上がり、それに伴い閾値を上昇させればさらに必要な入力との結合が高くなる。これにより学習の進んだ段階では中間ユニットの反応は必要な入力のあったときのみに固定され、他のパターンの影響を受けなくできる。また、かなり近い入力パターンの時でも発火しないことにより別ユニットの使用が促進できる。閾値上昇の極限値は100%で、この時点で入力の論理積となっている。 (否定側入力について) 否定側入力は当然必要である。最初に否定側入力は作らないが、中間ユニットの学習途中で必要な入力のみ作られます。これは教師信号と無関係の入力とは相関がないが、教師信号と負の相関があり、否定入力が必要な入力は教師信号がアクティブな時常にゼロとなっているためである。
3.結果 試験用プログラムを作り、テストを行いました。 学習結果の解説図(実例) (1)AND 平均学習回数 5サイクル
(2)OR 平均学習回数 6サイクル
(3)EXOR 平均学習回数 12サイクル
従来の学習方式では2入力EXORの例で、良ければ400サイクル程度の教示で収束し、悪ければ1000サイクルでも収束しないといった性能であると認識している。この方式では平均12サイクル(50回教示)程度で収束することができた。また、いずれの場合も出来上がったネットワークの解析が容易であった。 中間ユニットの閾値を上手く上昇させることが重要である。これは中間ユニットの閾値を急に上昇させると学習が早く進む場合もあるが、中間ユニットが沢山できてしまい収束しにくくなってしまう場合の方が多かった。逆に中間ユニットの閾値の上昇をかなり緩やかに設定すると、新たな中間ユニットが使用されにくくなり中間ユニットの数を最小限に留めることができる反面、学習は遅くなってしまう。ただ中間ユニットの数を最小限に留めることは合理的でなく、若干多めになる事で収束が容易になる(多少余分な中間ユニットができてしまう)。
(2)学習によりでき上がったネットワークは加法標準型になっているため解析は容易である。 また、結合値が不要な部分では、中間〜出力ユニット間ではゼロ、入力〜中間ユニット間でもほぼゼロとなっているため一層解析が容易である。
(3)必要となる中間ユニットの数は必要な都度使用されるため、ほぼ適正である。
(4)教示パターンの種類を増やしての追加学習は、問題なく可能である。
(5)出力のフィードバックを作り学習させることも可能になる(この場合二種類のユニットによる相互結合型ネットワークとなる)。フィードバックを作ることは、以前の教師信号により作られた出力を入力として使うこととなる。この場合のメリットは、例えば始めに論理的に単純な教師信号から与え学習させて、徐々に複雑な教師信号により学習させて行くことにより、一度に学習させた場合よりはるかに少ないユニット数で複雑な論理を学習できる。さらに高次の教師信号を学習させる場合に必要となる結合数も少なくて済み学習が容易である。このように単純な事から始めて徐々に高度な事に学習を進めることの合理性は、人間の場合を考えれば良く理解できるはずである。尚この様にフィードバックを作り学習させる場合は、入力と教師信号の区別は曖昧になってくる。
新たな中間ユニットを使用する際の入力との結合値設定のところで、アクティブとなっている入力は少ないと仮定しているが、大規模になった場合、前処理としてあらかじめ教師信号と相関のある入力を選んでおくことが有効である。 またこの方式は二値を出力するものであるが、従来と同様に前処理によりアナログ値を複数のユニットにあてはめれば、アナログ値を扱うことも可能である。尚外部でアナログ化する代わりに、中間〜出力ユニット結合値をアナログ教示信号に応じて重み付けしても良い。この場合出力ユニットは最大入力値を出力させるよう設定する。 (サンプルプログラム対応済み) パターン認識への利用については、はじめに線分やエッジなどを教示する。次にそれら教示した出力を、フィードバックとして入力に含め簡単な図形を教示し、さらに同じように入力に含め、最後に文字を教示するという方法により応用可能と考えている。しかし位置や大きさなどのずれをすべてのパターンについて教示させることは現実的ではない。またそれを吸収できるネットワークが学習により作られることも考えにくい。他の方法で前処理としてずれを吸収する必要があると考えている。 この方式の利用分野としては、データマイニング・プロダクションシステム・学習型翻訳システムなどがあげられる。
5.最後に
*補足、関数近似について
出力ユニットに任意の関数を学習させると、中間ユニットが単純な閾値素子では上記のように離散的な出力となってしまう。
中間ユニット出力にシグモイド関数などを使用し、入力パターンに対する反応に幅を持たせて、入力パターン間の隙間を埋めることにより、関数近似が可能となる。
|
|||||||||||||||||||||||||