(57)【要約】【課題】ニューロンへの結合荷重の初期値設定が容易なニューロチップを提供する。【解決手段】中間層モジュール１０３〜１０５及び出力層モジュール１０６，１０７は、それぞれ各入力に対する結合荷重を保持している。入力層の３つの入力端子１１１〜１１３から中間層モジュール１０３〜１０５の各入力ＩＮ１〜ＩＮ３への接続関係は、中間層モジュール１０３，１０４，１０５の各々で異なっている。また中間層モジュール１０３〜１０５の出力から出力層モジュール１０６，１０７の各入力ＩＮ１〜ＩＮ３への接続関係も、出力層モジュール１０６，１０７の各々で異なっている。このように接続関係を同層のモジュール間でシフトさせたことで、各モジュールに同じ結合荷重の組を初期設定しても、上位からの入力に対して各モジュールの出力がばらつくので学習が進む。【選択図】図１
2006154992.tif 000002
【特許請求の範囲】
【請求項１】
複数の信号源を含む上位層と、
複数のニューロンモジュールを含む下位層と、
を備え、
前記各ニューロンモジュールは、前記信号源から信号が入力される複数の入力端子であって所定の順序で並んだ複数の入力端子と、それら入力端子ごとの結合荷重を記憶する結合荷重記憶部と、各入力端子から入力された信号と各入力端子に対応する結合荷重とを用いて順伝搬演算を行う順伝搬演算回路と、を備え、
前記各信号源と前記ニューロンモジュールの所定の順序で並んだ各入力端子との接続関係を、それらニューロンモジュールごとに異ならせたことを特徴とするニューロプロセッサ。
【請求項２】
請求項１記載のニューロプロセッサであって、
前記下位層の各ニューロンモジュールは、前記順伝搬演算回路の演算結果と与えられた逆伝搬信号とに基づき、前記結合荷重記憶部に記憶された前記入力端子ごとの結合荷重を修正するとともに、前記上位層の各信号源に対する逆伝搬信号を生成する逆伝搬演算回路と、それら各逆伝搬信号を出力する逆伝搬出力端子と、を備え、
前記各逆伝搬出力端子は、それぞれ対応する前記信号源の逆伝搬入力端子に接続される、
ことを特徴とするニューロプロセッサ。
【請求項３】
請求項２記載のニューロプロセッサであって、
学習モード時に、与えられた基準クロックから学習用順伝搬クロック及び学習用逆伝搬クロックを生成する第１のクロック生成回路を備え、
前記上位層の各信号源がそれぞれニューロンモジュールであり、
前記上位層の各ニューロンモジュールと前記下位層の各ニューロンモジュールとが、前記学習用順伝搬クロックと前記学習用逆伝搬クロックとに従って、順伝搬演算と逆伝搬演算を交互に実行することを特徴とするニューロプロセッサ。
【請求項４】
請求項３記載のニューロプロセッサであって、
前記学習用順伝搬クロック及び前記学習用逆伝搬クロックは、前記上位層及び前記下位層での一連の順伝搬演算及び逆伝搬演算に要する時間以上の所定の周期を持つとともに、学習用逆伝搬クロックは学習用順伝搬クロックに対して、前記上位層及び前記下位層での一連の順伝搬演算に要する時間以上の所定遅れ時間だけ位相が遅れており、
前記上位層のニューロンモジュールは、学習用順伝搬クロックの立下がりをトリガとして順伝搬演算を実行すると共に、学習用逆伝搬クロックの立上がりをトリガとして逆伝搬演算を実行し、
前記下位層のニューロンモジュールは、学習用順伝搬クロックの立上がりをトリガとして順伝搬演算を実行すると共に、学習用逆伝搬クロックの立下がりをトリガとして逆伝搬演算を実行する、
ことを特徴とするニューロプロセッサ。
【請求項５】
請求項３記載のニューロプロセッサであって、
前記学習用順伝搬クロック及び前記学習用逆伝搬クロックは、前記上位層及び前記下位層での一連の順伝搬演算及び逆伝搬演算に要する時間以上の所定の周期を持つとともに、学習用逆伝搬クロックは学習用順伝搬クロックに対して、前記上位層及び前記下位層での一連の順伝搬演算に要する時間以上の所定遅れ時間だけ位相が遅れており、
前記上位層のニューロンモジュールは、学習用順伝搬クロックの立上がりをトリガとして順伝搬演算を実行すると共に、学習用逆伝搬クロックの立下がりをトリガとして逆伝搬演算を実行し、
前記下位層のニューロンモジュールは、学習用順伝搬クロックの立下がりをトリガとして順伝搬演算を実行すると共に、学習用逆伝搬クロックの立上がりをトリガとして逆伝搬演算を実行する、
ことを特徴とするニューロプロセッサ。
【請求項６】
請求項４又は５に記載のニューロプロセッサであって、
認識モード時に、前記基準クロックから前記上位層及び前記下位層での一連の順伝搬演算に要する時間以上の所定の周期を持つ認識用順伝搬クロックを生成する第２のクロック生成回路を備え、
前記上位層のニューロンモジュールは前記認識用順伝搬クロックの立上がり又は立下がりのうちの一方を、前記下位層のニューロンモジュールは前記認識用順伝搬クロックの立上がり又は立下がりのうちの他方を、それぞれトリガとして順伝搬演算を実行する、
ことを特徴とするニューロプロセッサ。
【請求項７】
請求項６記載のニューロプロセッサであって、
前記上位層及び前記下位層の各ニューロンモジュールは、それぞれ順伝搬クロック入力端子及び逆伝搬クロック入力端子を備え、
前記第１のクロック生成回路の学習用順伝搬クロックと前記第２のクロック生成回路の認識用順伝搬クロックとの出力端子を共通化し、該出力端子を前記上位層及び前記下位層の各ニューロンモジュールの順伝搬クロック入力端子に接続し、
前記第１のクロック生成回路の学習用逆伝搬クロックの出力端子を前記上位層及び前記下位層の各ニューロンモジュールの逆伝搬クロック入力端子に接続し、
学習モード時には前記第１のクロック生成回路を動作させて前記第２のクロック生成回路を停止し、認識モード時には前記第１のクロック生成回路を停止して前記第２のクロック生成回路を動作させる、
ことを特徴とするニューロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークをハードウエア回路で実現したニューロプロセッサに関する。
【背景技術】
【０００２】
ニューラルネットワークをハードウエア化したプロセッサとして、例えば特許文献１〜４に示されるものがある。
【０００３】
このうち特許文献１及び２に示されるものは、ニューラルネットワークの認識処理のみをハードウエア化し、学習は外部の汎用計算機で行っている。
【０００４】
また特許文献３及び４に示されるものは、認識処理と学習処理の両方をハードウエア化している。特に特許文献３には、階層型ニューラルネットワークの入力層、中間層及び出力層の各ニューロンをそれぞれ１つのチップとして構成し、各チップ内のメモリに上位層の各ニューロンとのシナプス結合の結合荷重を記憶させ、これら結合荷重を用いて順伝搬（フォワードプロパゲーション）と逆伝搬（バックプロパゲーション）の演算処理を行っている。
【０００５】
【特許文献１】特開平７−１９２０７３号公報
【特許文献２】特開平７−２１０５３２号公報
【特許文献３】特開平５−１５９０８７号公報
【特許文献４】特開平５−３４６９１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ニューラルネットワークの学習の際に、各ニューロン間の結合荷重の初期値の設定が適切になされていないと、学習の収束が著しく遅くなることや、場合によっては学習が収束しないことが起こり得る。同一層の各チップに対し、上位層の各ニューロンとの結合荷重の初期値としてチップ同士で同じ値を設定すると、各チップは同一の入力値に対し同一の出力値を出力することになるので、ニューラルネットワークが均一な状態のまま変化せず、学習が進まない。
【０００７】
かといって、各シナプス結合の結合荷重が同一層のニューロン（チップ）間で同じにならないように設定するのは、ニューロン数が多くなると非常に手間が掛かる。チップ間で初期値が同じにならないようにする初期値設定プログラムを用意したり、或いは同様の機能をハードウエア回路としてプロセッサに組み込んだりするといった対策をとれば、そのような手間は軽減されるが、その対策のためのコストは必ずしも少なくない。
【課題を解決するための手段】
【０００８】
本発明の１つの側面では、各ニューロンモジュールに対する結合荷重の初期値設定が容易なニューロプロセッサを提供する。
【０００９】
また本発明の別の側面では、学習のための順伝搬処理と逆伝搬処理とを交互に実行できるニューロプロセッサを提供する。
【００１０】
本発明のニューロプロセッサは、複数の信号源を含む上位層と、複数のニューロンモジュールを含む下位層と、を備え、前記各ニューロンモジュールは、前記信号源から信号が入力される複数の入力端子であって所定の順序で並んだ複数の入力端子と、それら入力端子ごとの結合荷重を記憶する結合荷重記憶部と、各入力端子から入力された信号と各入力端子に対応する結合荷重とを用いて順伝搬演算を行う順伝搬演算回路と、を備え、前記各信号源と前記ニューロンモジュールの所定の順序で並んだ各入力端子との接続関係を、それらニューロンモジュールごとに異ならせたことを特徴とする。
【００１１】
この構成において、信号源は、単なる信号の入力端子の場合もあれば、或いは上位の層のニューロンモジュールの場合もある。例えば入力層１層、中間層１層、出力層１層の３層構造のニューロプロセッサの場合、中間層を「下位層」と考えれば入力層が「上位層」となり、出力層を「下位層」と考えれば中間層が「上位層」となる。
【００１２】
好適な態様では、前記下位層の各ニューロンモジュールは、前記順伝搬演算回路の演算結果と、与えられた逆伝搬信号とに基づき、前記結合荷重記憶部に記憶された前記入力端子ごとの結合荷重を修正するとともに、前記上位層の各信号源に対する逆伝搬信号を生成する逆伝搬演算回路と、それら各逆伝搬信号を出力する逆伝搬出力端子と、を備え、前記各逆伝搬出力端子は、それぞれ対応する前記信号源の逆伝搬入力端子に接続される。
【００１３】
この態様において、逆伝搬信号は、出力層の場合は外部から与えられる教師信号であり、その他の層の場合は、下位層から逆伝搬される誤差逆伝搬信号である。
【００１４】
また別の好適な態様では、ニューロプロセッサは、学習モード時に、与えられた基準クロックから学習用順伝搬クロック及び学習用逆伝搬クロックを生成する第１のクロック生成回路を備え、前記上位層の各信号源がそれぞれニューロンモジュールであり、前記上位層の各ニューロンモジュールと前記下位層の各ニューロンモジュールとが、前記学習用順伝搬クロックと前記学習用逆伝搬クロックとに従って、順伝搬演算と逆伝搬演算を交互に実行する。
【００１５】
更に好適な態様では、前記学習用順伝搬クロック及び前記学習用逆伝搬クロックは、前記上位層及び前記下位層での一連の順伝搬演算及び逆伝搬演算に要する時間以上の所定の周期を持つとともに、学習用逆伝搬クロックは学習用順伝搬クロックに対して、前記上位層及び前記下位層での一連の順伝搬演算に要する時間以上の所定遅れ時間だけ位相が遅れており、前記上位層のニューロンモジュールは、学習用順伝搬クロックの立下がりをトリガとして順伝搬演算を実行すると共に、学習用逆伝搬クロックの立上がりをトリガとして逆伝搬演算を実行し、前記下位層のニューロンモジュールは、学習用順伝搬クロックの立上がりをトリガとして順伝搬演算を実行すると共に、学習用逆伝搬クロックの立下がりをトリガとして逆伝搬演算を実行する。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して、本発明を実施するための最良の形態（以下「実施形態」と呼ぶ）について説明する。
【００１７】
まず、図１を参照して、本実施形態のニューロプロセッサ１０１のシステム構成を説明する。
【００１８】
ニューロプロセッサ１０１は、中間層が１層の階層型ニューラルネットワークをハードウエアチップ化したものであり、クロック生成器１０２、中間層モジュール１０３〜１０５、出力層モジュール１０６〜１０７から構成される。このチップの学習方式には、誤差逆伝搬（Back Propagation：バックプロパゲーション）法による学習則を適用している。
【００１９】
なお、図１に例示したニューロプロセッサ１０１は、ＲＧＢ（赤、緑、青）表色系のデジタルカラー画像から人間の肌領域を抽出することを目的とてしてネットワークを構築したものであるため、入力層はＲ，Ｇ，Ｂの各色に１つずつで合計３ユニット設けられている。具体的には、入力層のユニットは、Ｒ色データ用の入力端子１１１，Ｇ色データ用の入力端子１１２，Ｂ色データ用の入力端子１１３である。また、出力層は、入力された色（Ｒ，Ｇ，Ｂ）が肌の色である確からしさ（肌色度と呼ぶ）と、肌の色でない確からしさ（非肌色度と呼ぶ）とをそれぞれ求めるように２ユニット構成となっている。例えば出力層モジュール１０６が肌色度を出力し、出力層モジュール１０７が非肌色度を出力する。すなわち、このニューロプロセッサ１０１は、１画素の色を示すＲ，Ｇ，Ｂの各値を入力として受け入れ、その色の肌色度と非肌色度をそれぞれ出力する。図１の例では、中間層は、中間層モジュール１０３〜１０５の３ユニット構成を採っている。
【００２０】
ただし、このようなユニット構成はあくまで一例であり、各層のユニット数は適用する問題領域に応じて自由に変更することができる。
【００２１】
図１の左側の入力端子１１１〜１１３から入力されるＲ，Ｇ，Ｂの入力データは、それぞれ、各中間層モジュール１０３〜１０５に分配される。本実施形態では、入力層の分配機能は、各入力端子１１１〜１１３と各中間層モジュール１０３〜１０５とを結ぶ専用バス１０８により実現している。図１の結線構造から分かるように、各中間層モジュール１０３〜１０５には、入力層のすべてのユニットの入力データ（すなわちＲ，Ｇ，Ｂのすべて）が入力される。
【００２２】
ここで、本実施形態では、入力層の各入力端子１１１〜１１３と、各中間層モジュール１０３〜１０５の３つの入力ＩＮ１〜ＩＮ３との接続関係が、中間層モジュールごとに異なっている。すなわち中間層モジュール１０３には、Ｒ，Ｇ，Ｂの信号が入力ＩＮ１，ＩＮ２，ＩＮ３に対しこの順に入力されるが、中間層モジュール１０４ではＲがＩＮ２に、ＧがＩＮ３に、ＢがＩＮ１に入力され、中間層モジュール１０５ではＲがＩＮ３に、ＧがＩＮ１に、ＢがＩＮ２に入力される。
【００２３】
また中間層モジュール１０３〜１０５と出力層モジュール１０６，１０７間は、順伝搬用の専用バス１０９と逆伝搬用の専用バス１１０によって結合している。各出力層モジュール１０６，１０７には、中間層モジュール１０３〜１０５のすべての順伝搬出力が入力される。また、各中間層モジュール１０３〜１０５には、各出力層モジュール１０６，１０７の逆伝搬出力が１つずつ入力される。
【００２４】
ここで、本実施形態では、中間層モジュール１０３〜１０５からの３つ順伝搬出力と、各出力層モジュール１０６，１０７の３つの入力ＩＮ１〜ＩＮ３との接続関係が、中間層モジュールごとに異なっている。すなわち出力層モジュール１０６には、中間層モジュール１０３〜１０５の信号が入力ＩＮ１，ＩＮ２，ＩＮ３に対しこの順に入力されるが、出力層モジュール１０７では、中間層モジュール１０３の出力がＩＮ２に、１０４の出力がＩＮ３に、１０５の出力がＩＮ１に入力される。
【００２５】
また、図１の回路構成では、このような接続関係に応じて、出力層モジュール１０６，１０７の逆伝搬出力と、各中間層モジュール１０３〜１０５の各逆伝搬入力との接続がなされている。すなわち、図４において、出力層モジュール４０１の逆伝搬出力ＤＷ１は順伝搬入力ＩＮ１を用いて求めた逆伝搬値を出力していることから分かるように、各逆伝搬出力ＤＷ１〜ＤＷ３は、対応する番号の順伝搬入力の入力値から求めた逆伝搬値を出力する。すなわち、出力層モジュールは、中間層モジュールからの順伝搬入力値を用いてその中間層モジュールに対する逆伝搬出力を生成しているのである。したがって、出力層モジュール１０６，１０７の逆伝搬出力ＤＷ１〜ＤＷ３はそれぞれ、中間層モジュール１０３〜１０５のうち、対応する番号の順伝搬入力ＩＮ１〜ＩＮ３の接続先であるモジュールに対して接続される。
【００２６】
ニューロプロセッサ１０１による処理結果は、図１右側の出力端子１１４，１１５から出力される。出力端子１１４は出力層モジュール１０６の順伝搬出力を、出力端子１１５は出力層モジュール１０７の順伝搬出力を、それぞれ出力する。また、ニューロプロセッサ１０１は、教師信号入力端子１１６，１１７を有し、前者から入力される教師信号は出力層モジュール１０６に、後者からの教師信号は出力層モジュール１０７に、それぞれ入力される。
【００２７】
クロック生成器１０２は、外部から基準クロックＣＬＫを受け取り、この基準クロックＣＬＫから、順伝搬処理の際の中間層モジュール１０３〜１０５及び出力層モジュール１０６，１０７の動作制御に用いる順伝搬クロックＣＬＫ_ＦＰと、逆伝搬処理の際のそれらの動作制御に用いる逆伝搬クロックＣＬＫ_ＢＰとを生成する。順伝搬クロックＣＬＫ_ＦＰと逆伝搬クロックＣＬＫ_ＢＰとは、それぞれ専用のクロック信号線を介して、各中間層モジュール１０３〜１０５及び各出力層モジュール１０６，１０７に供給される。また、このクロック生成器１０２は、学習モードと認識モードとで異なるクロック信号を生成する。ニューロプロセッサ１０１が学習動作を行うモードが学習モードであり、パターン認識動作を行うモードが認識モードである。モードの指定は、モード信号ＭＯＤＥとして外部から入力される。なお、クロック生成器１０２の詳細については後で詳しく説明する。
【００２８】
以上、ニューロプロセッサ１０１の概略構成を説明した。次に、中間層モジュール１０３〜１０５、及び出力層モジュール１０６，１０７の詳細や、ニューロプロセッサ１０１の動作について詳しく説明する前に、この実施形態で採用している階層型ニューラルネットワークの工学的モデルを説明する。
【００２９】
図２は、階層型ニューラルネットワークの工学的モデルを示す。図２の（ａ）には、入力層２０１が３ユニット（ニューロン）、中間層２０２が３ユニット、出力層２０３が２ユニットの階層型ニューラルネットワークを例として図示した。（ｂ）には、下位の層の１つのユニット２０６とそれに接続される上位層のユニット２０４との関係を模式的に示す。例えば、下位層が中間層であれば上位層は入力層、下位層が出力層であれば上位層は中間層である。このモデルでは、下位層の各ユニット２０６は、上位層の全ユニット２０４と結合しており、それら各結合は結合荷重２０５を有している。下位層のユニット２０６の内部では、１つ前の上位層の各ユニット２０４から出力される順伝搬出力値と各結合荷重２０５の積和演算（Σ）が行われ、その結果が所定の伝達関数（ｆ）に通されることによってユニット２０６の出力値が決定される。伝達関数としては、シグモイド関数が良く用いられる。
【００３０】
次に、図１に示した中間層モジュール１０３〜１０５の内部構成のハードウエアモデルを、図３を参照して説明する。本実施形態では、中間層モジュール１０３〜１０５のハードウエア的な内部構成は共通であり、これを図３では中間層モジュール３０１として示している。図では、信号の流れを矢印で示しており、順伝搬処理時の信号の流れを実線の矢印で、逆伝搬処理時の信号の流れを破線の矢印で示している。
【００３１】
中間層モジュール３０１は、３つの順伝搬入力ＩＮ１，ＩＮ２，ＩＮ３を有しており、これら各入力に対しバス１０８を介して入力層の各入力端子１１１〜１１３からの順伝搬の入力信号３０９，３１０，３１１が入力される。中間層モジュール３０１は、順伝搬入力ＩＮ１に対応する結合荷重ｗ１を記憶する荷重記憶部３０２，順伝搬入力ＩＮ２に対応する結合荷重ｗ２を記憶する荷重記憶部３０３，及び入力ＩＮ３に対応する結合荷重ｗ３を記憶する記憶部３０４を有する。順伝搬時に入力ＩＮ１から入力される順伝搬の入力信号３０９には、乗算器３２０により結合荷重ｗ１が乗じられる。同様に入力ＩＮ２，ＩＮ３から入力される信号３１０，３１１には、乗算器３２１及び３２２により結合荷重ｗ２及びｗ３がそれぞれ乗じられる。また、閾値記憶部３０５には、ニューロンの閾値（オフセット）が記憶されている。各乗算器３２０〜３２２の乗算結果と、閾値記憶部３０５からの閾値とが、Σ演算ブロック３０６により足し合わされる。以上が順伝搬処理における積和演算である。
【００３２】
シグモイド関数ＬＵＴ部（ルックアップテーブル）３０７は、ニューロンの伝達関数であるシグモイド関数を示したテーブルを記憶している。シグモイド関数ＬＵＴ部３０７には、Σ演算ブロック３０６の出力値が入力され、この入力の値に対応したシグモイド関数値をそのテーブルから読み出して出力する。このようにシグモイド関数ＬＵＴ部３０７を通すことにより、積和演算結果は０〜１の範囲に正規化される。このようにシグモイド関数ＬＵＴ部３０７から出力される値が、中間層モジュール３０１の出力値３１２となる。この出力値３１２は、中間層モジュールの順伝搬出力ＯＵＴから出力され、順伝搬用の専用バス１０９を介して出力層モジュール１０６，１０７に供給される。以上が、中間層モジュール３０１内の順伝搬のための構成である。
【００３３】
次に、図中破線で示す逆伝搬処理の際の構成について説明する。逆伝搬処理は学習過程で実行される。学習過程では、出力層モジュール１０６，１０７から逆伝搬信号３１３，３１４が伝搬される。逆伝搬信号３１３は逆伝搬入力ＤＷ１から、逆伝搬信号３１４は逆伝搬入力ＤＷ２から入力される。これら逆伝搬信号３１３及び３１４は、加算器３２３で足し合わされ、乗算器３２４に入力される。乗算器３２４のもう一方の入力には、シグモイド微分関数ＬＵＴ部３０８の出力値が入力される。このシグモイド微分関数ＬＵＴ部３０８は、シグモイド関数ＬＵＴ部３０７が持つシグモイド関数の微分関数を示すテーブルを記憶している。シグモイド微分関数ＬＵＴ部３０８は、学習過程での順伝搬の際にΣ演算ブロック３０６で求められた積和演算結果を受け、これに対応するシグモイド微分関数値を出力する。このシグモイド微分関数値を、乗算器３２４により、逆伝搬信号３１３と３１４の和に乗じることで、誤差信号Ａが求められる。この誤差信号Ａは、加算器３２５と、乗算器３３０，３３２，３３４に入力される。
【００３４】
加算器３２５は、誤差信号Ａを、閾値記憶部３０５から出力される閾値と加算することで、閾値の更新値を計算する。求められた閾値の更新値は閾値記憶部３０５に書き込まれ、これにより閾値が更新される。
【００３５】
乗算器３３０は、順伝搬入力ＩＮ１からの入力信号３０９に誤差信号Ａを乗算する。この乗算の結果は、加算器３３１により荷重記憶部３０２からの結合荷重ｗ１と加算される。この加算結果により、荷重記憶部３０２の持つ結合荷重ｗ１の値が更新される。
【００３６】
同様に、誤差信号Ａは、乗算器３３２及び３３４により入力信号３１０及び３１１にそれぞれ乗算され、これら各乗算結果を加算器３３３及び３３５により元の結合荷重ｗ２及びｗ３にそれぞれ加算することで、荷重記憶部３０３及び３０４が持つ結合荷重ｗ２及びｗ３の値が更新される。
【００３７】
以上が中間層モジュール３０１の構成と、この構成による順伝搬と逆伝搬の処理である。
【００３８】
次に図４を参照して、出力層モジュール１０６及び１０７のハードウェアモデルを説明する。出力層モジュール１０６及び１０７のハードウエア的な内部構成は共通であり、これを図４では出力層モジュール４０１として示している。
【００３９】
出力層モジュール４０１は、３つの順伝搬入力ＩＮ１，ＩＮ２，ＩＮ３を有しており、これら各入力に対し、３つの中間層モジュール１０３〜１０５からの順伝搬の入力信号４０９，４１０，４１１が入力される。出力層モジュール４０１は、順伝搬入力ＩＮ１に対応する結合荷重ｗ１を記憶する荷重記憶部４０２，順伝搬入力ＩＮ２に対応する結合荷重ｗ２を記憶する荷重記憶部４０３，及び入力ＩＮ３に対応する結合荷重ｗ３を記憶する記憶部４０４を有する。順伝搬時に入力ＩＮ１，ＩＮ２，ＩＮ３から入力される信号４０９，４１０，４１１には、乗算器４２０，４２１，４２２により結合荷重ｗ１，ｗ２，ｗ３がそれぞれ乗じられる。また、閾値記憶部４０５には、ニューロンの閾値（オフセット）が記憶されている。Σ演算ブロック４０６は、各乗算器４２０〜４２２の乗算結果と、閾値記憶部４０５からの閾値とを総和し、その結果を出力する。
【００４０】
シグモイド関数ＬＵＴ部４０７は、中間層モジュールと同様のシグモイド関数を示したテーブルを記憶しており、Σ演算ブロック４０６の出力値が入力され、この入力の値に対応したシグモイド関数値をそのテーブルから出力する。このようにしてシグモイド関数ＬＵＴ部４０７を通して０〜１の範囲に正規化された値が、中間層モジュール４０１の出力値４１２となり、順伝搬出力ＯＵＴから出力される。以上が、出力層モジュール４０１内の順伝搬のための構成である。
【００４１】
次に逆伝搬の構成について説明する。逆伝搬処理は上記中間層モジュールと同様、学習過程で実行される。学習過程では、教師信号入力ＴＣＨから教師信号４１３が入力される。教師信号４１３は加算器４２３の一方の入力に供給される。加算器４２３のもう一方の入力には、シグモイド関数ＬＵＴ部４０７が出力する順伝搬出力値をインバータ４１８により符号反転した値が入力される。したがって、加算器４２３からは、教師信号４１３から当該出力層モジュール４０１の順伝搬出力を引いた差分値が出力される。この差分値は、乗算器４２４の一方の入力に与えられる。乗算器４２４のもう一方の入力には、シグモイド微分関数ＬＵＴ部４０８の出力値が入力される。このシグモイド微分関数ＬＵＴ部４０８は、シグモイド関数ＬＵＴ部４０７が持つシグモイド関数の微分関数を示すテーブルを記憶しており、順伝搬の際にΣ演算ブロック４０６で求められた積和演算結果を受け、これに対応するシグモイド微分関数値を出力する。このシグモイド微分関数値を、乗算器４２４により、逆伝搬信号４１３と４１４の和に乗じることで、誤差信号Ａが求められる。この誤差信号Ａは、加算器４２５と、乗算器４３０，４３２，４３４に入力される。
【００４２】
加算器４２５は、誤差信号Ａを、閾値記憶部４０５から出力される閾値と加算することで、閾値の更新値を計算する。求められた閾値の更新値は閾値記憶部４０５に書き込まれ、これにより閾値が更新される。
【００４３】
乗算器４３０，４３２，４３４は、順伝搬入力ＩＮ１，ＩＮ２，ＩＮ３からの入力信号４０９，４１０，４１１に誤差信号Ａをそれぞれ乗算する。この乗算の結果は、加算器４３１，４３３，４３５により荷重記憶部４０２、４０３，４０４からの結合荷重ｗ１，ｗ２，ｗ３とそれぞれ加算される。この加算結果により、荷重記憶部４０２、４０３，４０４の持つ結合荷重ｗ１，ｗ２，ｗ３の値が更新される。
【００４４】
また、誤差信号Ａは、乗算器４３６，４３７，４３８によりそれぞれ結合荷重ｗ１，ｗ２，ｗ３と掛け合わされる。これら各乗算結果が逆伝搬出力ＤＷ１，ＤＷ２，ＤＷ３からそれぞれ逆伝搬値４１４，４１６，４１７としてそれぞれ出力される。出力された逆伝搬値は、逆伝搬用の専用バス１１０を介して中間層モジュール１０３〜１０５へと供給される。
【００４５】
以上が出力層モジュール４０１の構成と、この構成による順伝搬と逆伝搬の処理である。
【００４６】
次に、図５を参照して、クロック生成器１０２が各モードで生成するクロック信号と、これに基づく各モジュールの動作について説明する。
【００４７】
クロック生成器１０２は、外部からＣＬＫ入力に与えられる基準クロック５０１から順伝搬を制御する順伝搬クロック５０２，５０４、逆伝搬を制御する逆伝搬クロック５０３，５０５の２種類のクロックを生成する。中間層モジュール１０３〜１０５及び出力層モジュール１０６，１０７のニューロンの学習及び認識（テスト）処理は、順伝搬クロック５０２又は５０４と逆伝搬クロック５０３又は５０５によって制御する。クロック生成器１０２は、ＭＯＤＥ入力に対して外部から入力されるモード設定信号に従い、学習モードと認識モードに切り替わる。
【００４８】
まず学習モードでは、クロック生成器１０２は、順伝搬クロック５０２及び逆伝搬クロック５０３を生成し、前者を順伝搬クロック出力ＣＬＫ_ＦＰから出力し、後者を逆伝搬クロック出力ＣＬＫ_ＢＰから出力する。
【００４９】
図５の例では、基準クロック４クロックで１回の学習を行う。すなわち、まず基準クロック５０１の１クロック目の立上がりで順伝搬クロック５０２を立ち下げる。この順伝搬クロック５０２の立下がりをトリガとして、中間層モジュール１０３〜１０５が並列的に順伝搬の演算処理を行う。そして、基準クロック５０１の２クロック目の立上がりで順伝搬クロック５０２を立ち上げる。この順伝搬クロック５０２の立上がりをトリガとして、出力層モジュール１０６，１０７が並列的に順伝搬の演算処理を行う。
【００５０】
続いて、基準クロック５０１の３クロック目の立上がりで逆伝搬クロック５０３を立ち下げる。出力層モジュール１０６，１０７は、この逆伝搬クロック５０３の立下がりをトリガとして逆伝搬の演算処理を行する。そして、基準クロック５０１の４クロック目の立上がりで逆伝搬クロック５０３を立ち上げ、これをトリガとして中間層モジュール１０３〜１０５が逆伝搬処理を行う。
【００５１】
このように、順伝搬クロック５０２及び逆伝搬クロック５０３の１周期で１回の学習処理、すなわち学習データをニューロプロセッサ１０１の入力層に与えて順伝搬させて出力層からの出力を求め、その出力層に対して教師信号を与え、これを逆伝搬させて出力層モジュール及び中間層モジュールの閾値や結合荷重を更新する処理、を実行する。したがって、クロック周期は、ニューロプロセッサ１０１内の各層での順伝搬処理とその後に続く逆伝搬処理に要する時間の合計以上の期間とすればよい。
【００５２】
図５の例では、順伝搬クロック５０２及び逆伝搬クロック５０３の１周期は、基準クロック４周期の長さである。順伝搬クロック５０２は、その周期の１／４（すなわちち基準クロック１周期分）の期間Ｌ（ロー）レベルであり、残りの３／４周期はＨ（ハイ）レベルである。この例では、基準クロックの立上がりにより順伝搬クロック５０２を生成しているので、順伝搬クロック５０２のＬレベル期間は基準クロック５０１の１周期となっているが、これは一例に過ぎない。原理的には、この順伝搬クロック５０２のＬレベル期間の長さは、中間層モジュール１０３〜１０５が入力ＩＮ１〜ＩＮ３から入力される入力信号に対し、内部の順伝搬用の演算回路による演算を行い、出力ＯＵＴから出力する出力信号を生成するまでに要する時間以上であればよい。同様に、逆伝搬クロック５０４のＬレベル期間の長さは、原理的には、出力層モジュール１０６，１０７が教師信号入力ＴＣＨから入力される教師信号を用いて、内部の逆伝搬用の演算回路による演算を行い、逆伝搬出力ＤＷ１〜３から出力する出力信号を生成するまでに要する時間以上であればよい。また、順伝搬クロック５０２の立上がりの後、次に逆伝搬クロック５０３が立ち下がるまでの間隔は、原理的には、出力層モジュール１０６，１０７が入力ＩＮ１〜ＩＮ３から入力される入力信号に対し、内部の順伝搬用の演算回路による演算を行い、出力ＯＵＴから出力する出力信号を生成するまでに要する時間以上であればよい。したがって、逆伝搬クロック５０３は、順伝搬クロック５０２に対して、ニューロプロセッサ１０１内での各層の順伝搬に要する時間の合計以上だけ位相が遅れていればよい。
【００５３】
以上のような順伝搬クロック５０２及び逆伝搬クロック５０３を用いることで、１つの学習データに対する順伝搬の演算処理とそれに対応する教師信号に基づく逆伝搬の演算処理とを交互に、言い換えれば１回の学習ごとに同時並列的に、実行することができる。このように学習時に順伝搬と逆伝搬を交互に実行できることで、入力された学習データに対する順伝搬処理の結果とその学習データに対する教師信号との対応付けが容易になる。例えば特許文献３の装置では、一旦全ての学習データに対する順伝搬結果を求めて記憶装置に蓄積し、その後で蓄積した順伝搬結果に対し、これに対応する教師データを順に与えて誤差逆伝搬学習を行っているが、この方式では蓄積した順伝搬結果と教師データの対応を管理する必要がある。これに対し、本実施形態のように順伝搬と逆伝搬を交互に行えば、そのような対応付けは不要になる。
【００５４】
なお、学習時の順伝搬クロック及び逆伝搬クロックとして、図５に示したのとＨ，Ｌのレベルを反転させたものを用いることももちろん可能である。この場合、順伝搬クロックの立上がりで中間層モジュールに、立下がりで出力層モジュールに、それぞれ順伝搬処理を行わせ、逆伝搬クロックの立上がりで出力層モジュールに、立下がりで中間層モジュールに、それぞれ逆伝搬処理を行わせればよい。
【００５５】
次に、認識モードでの処理を説明する。認識モードでは、クロック生成器１０２は、順伝搬クロック５０４及び逆伝搬クロック５０５を生成し、前者を順伝搬クロック出力ＣＬＫ_ＦＰから出力し、後者を逆伝搬クロック出力ＣＬＫ_ＢＰから出力する。
【００５６】
この例では、基準クロック２クロックで１回の認識動作を行う、すなわち、まず基準クロック５０１の１クロック目の立上がりで順伝搬クロック５０２を立ち下げる。これをトリガとして、中間層モジュール１０３〜１０５が順伝搬の演算処理を並列的に行う。次に、基準クロック５０１の２クロック目の立上がりで順伝搬クロック５０２を立ち上げる。これをトリガとして、出力層モジュール１０６，１０７が順伝搬の演算処理を実行する。認識処理では、逆伝搬は行わないので、逆伝搬クロック５０５は平坦な信号となる。
【００５７】
この例では、認識時の順伝搬クロック５０４は、基準クロック５０１の２クロックを１周期としているが、原理的には、ニューロプロセッサ１０１内の各層での順伝搬処理に要する時間の総和以上の周期であればよい。また、原理的には、順伝搬クロック５０４のＬレベル期間は中間層モジュール１０３〜１０５の順伝搬演算に要する時間以上、Ｈレベル期間は出力層モジュール１０６，１０７の順伝搬演算に要する時間以上、であればよい。
【００５８】
以上、ニューロプロセッサ１０１の回路構成と、その動作について説明した。その説明から分かるように、本実施形態では、各層間を専用のバスで結合し、各層のモジュール１０３〜１０７に共通の順伝搬クロック及び逆伝搬クロックを供給することで、それら各モジュールを完全に並列動作させることができる。そして、学習モードでは、適切な位相関係を持つ順伝搬クロックと逆伝搬クロックとを用いることで、学習データの認識とそれに対する教師データを用いた誤差逆伝搬学習とを交互に実行することができる。
【００５９】
また、本実施形態では、上述のように入力層の各入力端子１１１〜１１３と中間層モジュール１０３〜１０５の各入力ＩＮ１〜ＩＮ３との接続関係を中間層モジュールごとにシフトし、各中間層モジュール１０３〜１０５の順伝搬出力と各出力層モジュール１０６，１０７の各順伝搬入力ＩＮ１〜ＩＮ３との接続関係を出力層モジュールごとにシフトしたので、各モジュールに対する結合荷重の初期値設定が容易であるという利点がある。この点につき、図６を参照して説明する。
【００６０】
図６は、結合荷重の初期値として３つの中間層モジュール１０３〜１０５の間で同じ値を設定したときに、入力層−中間層の間の接続関係を従来のようにシフトしない場合（ａ）と、本実施形態のようにシフトした場合（ｂ）とでどのように出力値が変化するかを示している。図示例では、全ての中間層モジュール１０３〜１０５に対し、結合荷重の初期値として、ｗ１＝０．２，ｗ２＝０．６，ｗ３＝０．５が設定されている。
【００６１】
このような初期値設定をした場合、接続関係のシフトをしない場合（ａ）では、入力層からＲ，Ｇ，Ｂの入力を与えると、中間層モジュール１０３も、中間層モジュール１０４も、中間層モジュール１０５も、全て同じ値（この例では０．４２）を出力する。このように全ての中間層モジュール１０３〜１０５の出力値が同じでは、これに対して誤差逆伝搬により学習を行っても、全ての中間層モジュールが同じ出力値と同じ逆伝搬値に基づき結合荷重や閾値を変更するので、すべて同じように変化するだけでニューラルネットワークが均一状態のままとなり、学習が進まない。
【００６２】
これに対し、（ｂ）のように接続関係をシフトすれば、中間層モジュール１０３〜１０５内の結合荷重がモジュール間で同じでも、入力に対する出力値がモジュール間で相互に異なったものとなる。このように中間層モジュール間で出力値が異なれば、ニューラルネットワークの状態にばらつきができ、学習が進む。
【００６３】
したがって、本実施形態では、複数の中間層モジュール１０３〜１０５に対し、共通の荷重の組（ｗ１，ｗ２，ｗ３）を設定すれば、学習が進む初期設定ができる。このためには、中間層モジュール１０３〜１０５の荷重記憶部３０２同士を同じ初期値設定用のラインで結び、同様に３０３同士、３０４同士をそれぞれ同じ初期値設定用のラインで結び、それら各ラインに対してそれぞれ対応する荷重の初期値を与えればよい。ｗ１＝ｗ２＝ｗ３となる初期値の組を与えない限り、接続関係のシフトの効果により、順伝搬の演算結果にモジュールごとのばらつきが出やすくなるので、学習が進みやすい。
【００６４】
なお、接続関係をシフトしない回路構成でも、３つの結合荷重の初期値を各中間層モジュールの荷重記憶部３０２〜３０４に、モジュールの順にシフトしながら設定するような内部回路を組み込めば上述と同様の効果が得られるが、これでは内部回路の分だけニューロプロセッサの回路規模が増大するという不利益がある。
【００６５】
これに対し、接続関係をシフトする本実施形態の回路構成では、回路規模の増大を押さえることができる。また、ＦＰＧＡ(Field Programmable Gate Array)などのようなプログラマブルなロジックデバイスを用いてニューロプロセッサ１０１を構成する場合、接続関係のシフトは、ＶＨＤＬ等のハードウエア記述言語での回路記述において、入力層・中間層間のポートマップに記述する関係を、各中間層モジュールごとにシフトするだけでよいので、実現が容易である。
【００６６】
以上、入力層・中間層間の接続関係のシフトについて説明したが、中間層・出力層間の接続関係についても同様である。なお、実施形態では、入力層・中間層間と中間層・出力層間の両方で接続関係をシフトしたが、どちらか一方だけでもある程度の効果が得られる。
【００６７】
以上の実施形態は、中間層が１層しかない３層構造のニューラルネットワークであったが、中間層が２層以上あるニューラルネットワークも、本実施形態と同様の方式で構成することができる。
【００６８】
次に本実施形態に基づくニューロプロセッサ１０１の具体例について説明する。
【００６９】
一つの具体例では、ニューロプロセッサ１０１には、基準クロックとしてＶＧＡ(Video Graphics Array)のピクセルクロック２４．５４５４ＭＨｚを用いる。この場合学習過程では４クロックで１回の学習処理が行えることから、毎秒６０フレームで描画される画像に対しては、１フレームで１０万回（24,545,400÷4÷60≒100,000）の学習処理を実行することができる。すなわち、例えば１フレームの画像のうちの１０万画素のデータを１画素ずつ順に入力層に与え、学習することができる（もちろんこのときには各画素に対応する教師信号の値も同時に出力層に与える）。なお、１フレームの画素数が１０万より多い場合には、例えば学習に使う領域（領域の画素数の合計を１０万以下とすればよい）をあらかじめ設定しておき、これら学習領域の画素のデータを順にニューロプロセッサ１０１に与えればよい。
【００７０】
図８に、このような学習領域の設定例を示す。この例では、ＶＧＡの６４０×４８０画素の画面７０１の中央に６４×６４画素の目的領域７０２、その周囲に３２×３２画素の４つの非目的領域７０３，７０４，７０５，７０６を設定している。目的領域７０２は肌色として学習して欲しい色の画像が来る領域であり、非目的領域７０３〜７０６は肌色ではないと学習して欲しい色の画像が来る領域である。したがって、目的領域７０２の画素のデータを学習データとしてニューロプロセッサ１０１の入力に与えるときには、教師信号として、肌色度を出力する出力層モジュール１０６には例えば「１」を、非肌色度を出力する出力層モジュール１０６には例えば「０」を、それぞれ与える。逆に、非目的領域７０３〜７０６の画素のデータを学習データとしてニューロプロセッサ１０１の入力に与えるときには、教師信号として、肌色度を出力する出力層モジュール１０６には例えば「０」を、非肌色度を出力する出力層モジュール１０６には例えば「１」を、それぞれ与える。
【００７１】
また、認識過程では、２クロック毎に１回の認識処理が行えることから、ノンインターレース画像では２画素に１回の割合で、インターレース画像の場合はアップスキャン前の全画素に対して、認識処理を行うことができる。
【００７２】
また、一つの具体例では、ニューロプロセッサ１０１内部の数値表現には、図７に示すように１６ビットの固定小数点を用いる。この１６ビットの内訳は、小数部６０３を８ビット、整数部６０２を７ビット、符号部６０１を１ビットとした。よって、分解能は0.00390625、最大値は127.99609375、最小値は-127.99609375となる。
【００７３】
ここでニューロプロセッサ１０１に対する入力値はＲ，Ｇ，Ｂのそれぞれに対して８ビットなので、その８ビットを０〜１の小数とする。これが入力された中間層モジュール１０３〜１０５は、その８ビットの上位の整数部７ビットと符号部１ビットにそれぞれ０をパディングすることで、１６ビットの固定小数点データとし、そのモジュール１０３〜１０５では１６ビットの固定小数点データとして加算や乗算を実行する。結合荷重や閾値も同じ１６ビットの固定小数点データの形で設定しておく。なお、このようにモジュール内部では１６ビット固定小数点で演算を行うが、出力の際にはシグモイド関数ＬＵＴ部３０７により０〜１の値に正規化され、これが８ビットデータとして出力される。これを受け取った出力層モジュール１０６，１０７は、中間層と同様、その８ビットデータの上位ビットの０をパディングして１６ビットの固定小数点データとし、内部の演算を実行する。
【００７４】
例えばＣ言語などの高級言語を用いてニューラルネットワークを記述し、ノイマン型計算機により逐次的に実行する場合には、通常、倍精度浮動小数点が用いられる。これに対し本願発明の発明者はシミュレーション実験から、１６ビットの固定小数点表現を用いた場合でも、倍精度浮動小数点を用いた場合と比較して遜色のない結果が得られること確認している。この比較の結果については、後で図１１を参照して説明する。
【００７５】
また、このように１６ビットの固定小数点データを用いることに伴い、この具体例ではシグモイド関数は階段関数に、シグモイド関数の微分形はピラミッド型関数で近似した。
【００７６】
すなわち、図９の（ａ）に示すように、順伝搬時に用いるシグモイド関数（破線）は、２３段の階段関数（実線）として近似した。また図９の（ｂ）に示すように、逆伝搬時に用いるシグモイド１次微分関数（実線）は、１２段のピラミッド型関数（破線）として近似した。なお、これら各関数のｘ軸方向の変異幅（ステップの刻み）はそれぞれ０．５としている。シグモイド関数ＬＵＴ部３０７，４０７には図９（ａ）の階段関数を表すテーブルが、シグモイド微分関数ＬＵＴ部３０８，４０８には図９（ｂ）のピラミッド型関数を表すテーブルが、それぞれ保持されることになる。
【００７７】
本実施形態のニューロプロセッサは、IP（Intellectual Property）コアとしての提供を想定しており、図１０の例ではＦＰＧＡ８０４上に実装している。この実装例は、一般的なシーン画像からリアルタイムに肌領域を学習し抽出する処理を対象に、その有効性を確認した段階にある。したがって、ここでは、肌領域を抽出するためのシステムを例に挙げて説明する。しかしながら、本実施形態の方式は、肌領域の抽出を目的としたシステムに限らず、形状や音声等のパターン認識一般に拡張可能である。
【００７８】
この実装例では、ボード８０７に対し、ＦＰＧＡ８０４としてAltera社のStratixシリーズEP1S80を搭載している。また、画像入力用ＬＳＩとしてデジタルビデオデコーダ８０５、画像出力用ＬＳＩとしてビデオＤ／Ａコンバータ８０６を搭載している。ＣＣＤカメラ８０８から入力される画像は、デジタルビデオレコーダ８０５を通してデジタルデータとしてＦＰＧＡ８０４内の画像処理ブロック８０２に入力される。ＦＰＧＡ８０４内のニューロプロセッサ部８０１には画像処理ブロック８０２を介して画像データが１画素分ずつ順に受け渡される。ニューロプロセッサ部８０１は、受け取ったデータに対し上述の処理を行う。その処理結果は、画像処理ブロック８０２に入力される認識モードでは、画像処理ブロック８０２は、例えばニューロプロセッサ部８０１から供給される各画素の肌色度及び非肌色度の値から各画素が肌色領域に属するかどうかを判定し、デジタルビデオデコーダ８０５から入力された画像データのうち肌色領域に属さない画素の値はマスクし、肌色領域に属する画素の値のみを出力する。これにより、例えば顔認識に利用できる顔領域の画像を抽出できる。画像処理ブロック８０２の出力はビデオＤ／Ａコンバータ８０６によりアナログデータに変換され、ＶＧＡディスプレイ８０９に表示される。なお、デジタルビデオレコーダ８０５からはインターレースの画像データが入力され、ビデオＤ／Ａコンバータ８０６ではノンインターレースの画像データを扱うため、インターレースからノンインターレースの変換、すなわちアップスキャン処理は画像処理ブロック８０２が担っている。また、ＲＡＭ８０３は、画像処理ブロック８０２等の処理の際の作業用のメモリ領域として用いられる。
【００７９】
最後に、図１１を参照して、上述の具体的な実装例の装置を用いて肌領域を抽出した抽出結果９０１と、通常のノイマン型計算機で実行した倍精度浮動小数点モデルによる抽出結果９０２を比較する。本実施形態の実装例では、１０万回の学習に対してエラーレートが1.746094まで収束している。これに対し、倍精度浮動小数点モデルでは、２１，１５５回の学習でエラーレートが0.01まで収束した。これ以上の学習はオーバーフィッティングを招くことが考えられることから、0.01をもって学習を打ち切った。実装例による抽出結果９０１は、特に画面右下を中心とする背景領域での誤抽出、右眼の下側や鼻の上部などで未検出が発生している。しかしながら、倍精度浮動小数点モデルによる抽出結果９０２と比較して遜色ない結果が得られていることから、本実施形態の構成は、ソフトウェアモデル（倍精度浮動小数点モデル）にかなり近いレベルで、ニューラルネットワークの学習及び認識処理を並列かつ高速に演算できるハードウェアモデルであるといえる。
【図面の簡単な説明】
【００８０】
【図１】実施形態のニューロプロセッサの構成を示す図である。
【図２】階層型ニューラルネットワークの工学モデルを説明するための図である。
【図３】中間層モジュールの内部構成を示す図である。
【図４】出力層モジュールの内部構成を示す図である。
【図５】クロック生成器が生成するクロック信号を示す図である。
【図６】接続関係のシフトの効果を説明するための図である。
【図７】具体例での各モジュール内部での固定小数点データ表現を説明する図である。
【図８】画面中に設定される学習領域の例を示す図である。
【図９】具体例でのシグモイド関数及びシグモイド微分関数の近似関数の例を示す図である。
【図１０】ニューロプロセッサを用いた画像処理システムの具体例を示す図である。
【図１１】内部的なデータ処理を固定小数点で行う具体例のニューロプロセッサと、倍精度浮動小数点演算を行うソフトウエアによるニューラルネットワークとの比較例を示す図である。
【符号の説明】
【００８１】
１０１  ニューロプロセッサ、１０２  クロック生成器、１０３〜１０５  中間層モジュール、１０６，１０７  出力層モジュール、１０８〜１１０  バス、１１１〜１１３  入力端子、１１４，１１５  出力端子、１１６，１１７  教師信号入力端子。
【図１】
2006154992.tif 000003
【図２】
2006154992.tif 000004
【図３】
2006154992.tif 000005
【図４】
2006154992.tif 000006
【図５】
2006154992.tif 000007
【図６】
2006154992.tif 000008
【図７】
2006154992.tif 000009
【図８】
2006154992.tif 000010
【図９】
2006154992.tif 000011
【図１０】
2006154992.tif 000012
【図１１】
2006154992.tif 000013