(57)【特許請求の範囲】
【請求項１】
管理装置とＮ台のシェア計算装置で構成されたニューラルネットワークシステムであって、
Ｋを２以上の整数、Ｎを２Ｋ−１以上の整数、ｎを１以上Ｎ以下の整数、Ｄをニューラルネットワークの層数（ただし、１層目が入力層、Ｄ層目が出力層）、ｄを１以上Ｄ以下の整数、Ｍｄをｄ層目のノード数、ｍｄを１以上Ｍｄ以下の整数、Ｓを入力と教師データのセット数、ｓを１以上Ｓ以下の整数、Ｉ（ｓ）＝｛Ｉ（１）（ｓ），…，Ｉ（Ｍ１）（ｓ）｝をｓ番目の入力、Ｔ（ｓ）＝｛Ｔ（１）（ｓ），…，Ｔ（ＭＤ）（ｓ）｝をｓ番目の入力に対する教師データ、Ｏ（ｓ）＝｛Ｏ（１）（ｓ），…，Ｏ（ＭＤ）（ｓ）｝をｓ番目の入力に対する出力、Ｈ（ｄ，ｓ）＝｛Ｈ（１）（ｄ，ｓ），…，Ｈ（Ｍｄ）（ｄ，ｓ）｝をｓ番目の入力に対するｄ番目の隠れ層の値（ただし、Ｉ（ｓ）＝Ｈ（１，ｓ）、Ｏ（ｓ）＝Ｈ（Ｄ，ｓ））、ｗ（ｍｄ，ｍｄ−１）（ｄ）をｄ層目のｍｄ番目のノードとｄ−１層目のｍｄ−１番目のノードの間の重み、θ（ｍｄ）（ｄ）をｄ層目のｍｄ番目のノードの閾値、Δｗ（ｍｄ，ｍｄ−１）（ｄ）をｗ（ｍｄ，ｍｄ−１）（ｄ）の学習率、Δθ（ｍｄ）（ｄ）をθ（ｍｄ）（ｄ）の学習率、［］ｎをｎ番目のシェア計算装置が記録するシェアを示す記号、［Ｗ（ｄ）］ｎを［ｗ（１，１）（ｄ）］ｎ，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［ｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［Θ（ｄ）］ｎを［θ（１）（ｄ）］ｎ，…，［θ（Ｍｄ）（ｄ）］ｎの集合、［ΔＷ（ｄ）］ｎを［Δｗ（１，１）（ｄ）］ｎ，…，［Δｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［Δｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［ΔΘ（ｄ）］ｎを［Δθ（１）（ｄ）］ｎ，…，［Δθ（Ｍｄ）（ｄ）］ｎの集合、εをあらかじめ定めた誤差の閾値、ｆ（）を活性化関数、ｆ’（）を前記活性化関数の導関数とし、
前記管理装置は、データからＮ個のシェアを求めること、Ｋ個のシェアからデータを復元することができ、
あらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εと、Ｓ個の入力と教師データのセット（Ｉ（１），Ｔ（１）），…，（Ｉ（Ｓ），Ｔ（Ｓ））を記録する管理記録部と、
１≦ｎ≦Ｎのすべてのｎについて［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎをｎ番目のシェア計算装置に送信する初期設定部と、
１≦ｎ≦Ｎのすべてのｎについて（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）をｎ番目のシェア計算装置に送信し、Ｎ個のシェア計算装置に学習開始を指示する学習指示部と、
を備え、
ｎ番目のシェア計算装置は、シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定を、他の前記シェア計算装置と共に行うことができ、
［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎと（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）と、前記のあらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εを記録するシェア計算記録部と、
１≦ｍ１≦Ｍ１のすべてのｍ１について［Ｈ（ｍ１）（１，ｓ）］ｎ＝［Ｉ（ｍ１）（ｓ）］ｎとし、
ｄ＝１からｄ＝Ｄ−１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について
［Ｈ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎ＝［ｆ（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎ
ただし、
【数１０】
0006556659.tif 000011
を求め、
［Ｏ（ｍＤ）（ｓ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）］ｎ
とすることで、出力のシェア［Ｏ（ｓ）］ｎ＝｛［Ｏ（１）（ｓ）］ｎ，…，［Ｏ（ＭＤ）（ｓ）］ｎ｝）を求める前方伝播部と、
誤差のシェア［Ｅ］ｎを、
【数１１】
0006556659.tif 000012
のように求め、
Ｅとεの大小判定結果のシェアである［Ｅ＜ε］ｎを求める誤差計算部と、
Ｅ＜εでない場合には、
１≦ｍＤ≦ＭＤのすべてのｍＤについて［ＴＥＭＰ（ｍＤ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）−Ｔ（ｍＤ）（ｓ）］ｎとし、
ｄ＝Ｄ−１からｄ＝１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について
［δ（ｍｄ＋１）（ｄ＋１）］ｎ＝［ＴＥＭＰ（ｍｄ＋１）ｆ’（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎ
ただし、
【数１２】
0006556659.tif 000013
を求め、
１≦ｍｄ≦Ｍｄのすべてのｍｄについて
【数１３】
0006556659.tif 000014
とし、
１≦ｍｄ＋１≦Ｍｄ＋１、１≦ｍｄ≦Ｍｄのすべてのｍｄ＋１、ｍｄついて
［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ←［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Ｈ（ｍｄ）（ｄ，ｓ）Δｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ
のように重みのシェア［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎを更新し、
１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１ついて
［θ（ｍｄ＋１）（ｄ＋１）］ｎ←［θ（ｍｄ＋１）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Δθ（ｍｄ＋１）（ｄ＋１）］ｎ
のように閾値のシェア［θ（ｍｄ＋１）（ｄ＋１）］ｎを更新する逆誤差伝播部と、
前記前方伝播部、前記誤差計算部、前記逆誤差伝播部に、それぞれの処理を１≦ｓ≦Ｓのすべてのｓに対して実行させる学習制御部と、
を備え、
前記管理装置又はＮ台の前記シェア計算装置のいずれかが、Ｋ台以上の前記シェア計算装置からＥとεの大小判定結果のシェアを受信し、Ｅとεの大小判定結果を示すデータを復元する終了条件確認部も備え、
前記活性化関数ｆ（Ｘ）は、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘである
ことを特徴とするニューラルネットワークシステム。
【請求項２】
請求項１記載のニューラルネットワークシステムであって、
前記初期設定部は、
２≦ｄ≦Ｄ、１≦ｍｄ≦Ｍｄ、１≦ｍｄ−１≦Ｍｄ−１のすべてのｄ、ｍｄ、ｍｄ−１ついてのｗ（ｍｄ，ｍｄ−１）（ｄ）を所定の体上からランダムに選択し、１≦ｄ≦Ｄ、１≦ｍｄ≦Ｍｄのすべてのｄ、ｍｄついてのθ（ｍｄ）（ｄ）を前記所定の体上からランダムに選択し、選択したすべてのｗ（ｍｄ，ｍｄ−１）（ｄ）とθ（ｍｄ）（ｄ）について［ｗ（ｍｄ，ｍｄ−１）（ｄ）］１，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］Ｎと［θ（ｍｄ）（ｄ）］１，…，［θ（ｍｄ）（ｄ）］Ｎを求めることで、１≦ｎ≦Ｎのすべてのｎについて［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎを取得し、
前記学習指示部は、
１≦ｓ≦Ｓのすべての（Ｉ（ｓ），Ｔ（ｓ））について（［Ｉ（ｓ）］１，［Ｔ（ｓ）］１），…，（［Ｉ（ｓ）］Ｎ，［Ｔ（ｓ）］Ｎ）を求めることで、１≦ｎ≦Ｎのすべてのｎについて（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）を取得する
ことを特徴とするニューラルネットワークシステム。
【請求項３】
管理装置とＮ台のシェア計算装置で構成されたニューラルネットワークシステムのｎ番目のシェア計算装置であって、
Ｋを２以上の整数、Ｎを２Ｋ−１以上の整数、ｎを１以上Ｎ以下の整数、Ｄをニューラルネットワークの層数（ただし、１層目が入力層、Ｄ層目が出力層）、ｄを１以上Ｄ以下の整数、Ｍｄをｄ層目のノード数、ｍｄを１以上Ｍｄ以下の整数、Ｓを入力と教師データのセット数、ｓを１以上Ｓ以下の整数、Ｉ（ｓ）＝｛Ｉ（１）（ｓ），…，Ｉ（Ｍ１）（ｓ）｝をｓ番目の入力、Ｔ（ｓ）＝｛Ｔ（１）（ｓ），…，Ｔ（ＭＤ）（ｓ）｝をｓ番目の入力に対する教師データ、Ｏ（ｓ）＝｛Ｏ（１）（ｓ），…，Ｏ（ＭＤ）（ｓ）｝をｓ番目の入力に対する出力、Ｈ（ｄ，ｓ）＝｛Ｈ（１）（ｄ，ｓ），…，Ｈ（Ｍｄ）（ｄ，ｓ）｝をｓ番目の入力に対するｄ番目の隠れ層の値（ただし、Ｉ（ｓ）＝Ｈ（１，ｓ）、Ｏ（ｓ）＝Ｈ（Ｄ，ｓ））、ｗ（ｍｄ，ｍｄ−１）（ｄ）をｄ層目のｍｄ番目のノードとｄ−１層目のｍｄ−１番目のノードの間の重み、θ（ｍｄ）（ｄ）をｄ層目のｍｄ番目のノードの閾値、Δｗ（ｍｄ，ｍｄ−１）（ｄ）をｗ（ｍｄ，ｍｄ−１）（ｄ）の学習率、Δθ（ｍｄ）（ｄ）をθ（ｍｄ）（ｄ）の学習率、［］ｎをｎ番目のシェア計算装置が記録するシェアを示す記号、［Ｗ（ｄ）］ｎを［ｗ（１，１）（ｄ）］ｎ，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［ｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［Θ（ｄ）］ｎを［θ（１）（ｄ）］ｎ，…，［θ（Ｍｄ）（ｄ）］ｎの集合、［ΔＷ（ｄ）］ｎを［Δｗ（１，１）（ｄ）］ｎ，…，［Δｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［Δｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［ΔΘ（ｄ）］ｎを［Δθ（１）（ｄ）］ｎ，…，［Δθ（Ｍｄ）（ｄ）］ｎの集合、εをあらかじめ定めた誤差の閾値、ｆ（）を活性化関数、ｆ’（）を前記活性化関数の導関数とし、
当該シェア計算装置は、
シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定を、他の前記シェア計算装置と共に行うことができ、
あらかじめ前記管理装置から［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎと（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）を受信し、
［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎと（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）と、あらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εを記録するシェア計算記録部と、
１≦ｍ１≦Ｍ１のすべてのｍ１について［Ｈ（ｍ１）（１，ｓ）］ｎ＝［Ｉ（ｍ１）（ｓ）］ｎとし、
ｄ＝１からｄ＝Ｄ−１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について
［Ｈ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎ＝［ｆ（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎ
ただし、
【数１４】
0006556659.tif 000015
を求め、
［Ｏ（ｍＤ）（ｓ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）］ｎ
とすることで、出力のシェア［Ｏ（ｓ）］ｎ＝｛［Ｏ（１）（ｓ）］ｎ，…，［Ｏ（ＭＤ）（ｓ）］ｎ｝）を求める前方伝播部と、
誤差のシェア［Ｅ］ｎを、
【数１５】
0006556659.tif 000016
のように求め、
Ｅとεの大小判定結果のシェアである［Ｅ＜ε］ｎを求める誤差計算部と、
Ｅ＜εでない場合には、
１≦ｍＤ≦ＭＤのすべてのｍＤについて［ＴＥＭＰ（ｍＤ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）−Ｔ（ｍＤ）（ｓ）］ｎとし、
ｄ＝Ｄ−１からｄ＝１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について
［δ（ｍｄ＋１）（ｄ＋１）］ｎ＝［ＴＥＭＰ（ｍｄ＋１）ｆ’（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎ
ただし、
【数１６】
0006556659.tif 000017
を求め、
１≦ｍｄ≦Ｍｄのすべてのｍｄについて
【数１７】
0006556659.tif 000018
とし、
１≦ｍｄ＋１≦Ｍｄ＋１、１≦ｍｄ≦Ｍｄのすべてのｍｄ＋１、ｍｄついて
［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ←［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Ｈ（ｍｄ）（ｄ，ｓ）Δｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ
のように重みのシェア［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎを更新し、
１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１ついて
［θ（ｍｄ＋１）（ｄ＋１）］ｎ←［θ（ｍｄ＋１）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Δθ（ｍｄ＋１）（ｄ＋１）］ｎ
のように閾値のシェア［θ（ｍｄ＋１）（ｄ＋１）］ｎを更新する逆誤差伝播部と、
前記前方伝播部、前記誤差計算部、前記逆誤差伝播部に、それぞれの処理を１≦ｓ≦Ｓのすべてのｓに対して実行させる学習制御部と、
を備え、
前記活性化関数ｆ（Ｘ）は、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘである
ことを特徴とするシェア計算装置。
【請求項４】
管理装置とＮ台のシェア計算装置で構成されたニューラルネットワークシステムの学習方法であって、
Ｋを２以上の整数、Ｎを２Ｋ−１以上の整数、ｎを１以上Ｎ以下の整数、Ｄをニューラルネットワークの層数（ただし、１層目が入力層、Ｄ層目が出力層）、ｄを１以上Ｄ以下の整数、Ｍｄをｄ層目のノード数、ｍｄを１以上Ｍｄ以下の整数、Ｓを入力と教師データのセット数、ｓを１以上Ｓ以下の整数、Ｉ（ｓ）＝｛Ｉ（１）（ｓ），…，Ｉ（Ｍ１）（ｓ）｝をｓ番目の入力、Ｔ（ｓ）＝｛Ｔ（１）（ｓ），…，Ｔ（ＭＤ）（ｓ）｝をｓ番目の入力に対する教師データ、Ｏ（ｓ）＝｛Ｏ（１）（ｓ），…，Ｏ（ＭＤ）（ｓ）｝をｓ番目の入力に対する出力、Ｈ（ｄ，ｓ）＝｛Ｈ（１）（ｄ，ｓ），…，Ｈ（Ｍｄ）（ｄ，ｓ）｝をｓ番目の入力に対するｄ番目の隠れ層の値（ただし、Ｉ（ｓ）＝Ｈ（１，ｓ）、Ｏ（ｓ）＝Ｈ（Ｄ，ｓ））、ｗ（ｍｄ，ｍｄ−１）（ｄ）をｄ層目のｍｄ番目のノードとｄ−１層目のｍｄ−１番目のノードの間の重み、θ（ｍｄ）（ｄ）をｄ層目のｍｄ番目のノードの閾値、Δｗ（ｍｄ，ｍｄ−１）（ｄ）をｗ（ｍｄ，ｍｄ−１）（ｄ）の学習率、Δθ（ｍｄ）（ｄ）をθ（ｍｄ）（ｄ）の学習率、［］ｎをｎ番目のシェア計算装置が記録するシェアを示す記号、［Ｗ（ｄ）］ｎを［ｗ（１，１）（ｄ）］ｎ，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［ｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［Θ（ｄ）］ｎを［θ（１）（ｄ）］ｎ，…，［θ（Ｍｄ）（ｄ）］ｎの集合、［ΔＷ（ｄ）］ｎを［Δｗ（１，１）（ｄ）］ｎ，…，［Δｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［Δｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［ΔΘ（ｄ）］ｎを［Δθ（１）（ｄ）］ｎ，…，［Δθ（Ｍｄ）（ｄ）］ｎの集合、εをあらかじめ定めた誤差の閾値、ｆ（）を活性化関数、ｆ’（）を前記活性化関数の導関数とし、
前記管理装置は、データからＮ個のシェアを求めること、Ｋ個のシェアからデータを復元することができ、
あらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εと、Ｓ個の入力と教師データのセット（Ｉ（１），Ｔ（１）），…，（Ｉ（Ｓ），Ｔ（Ｓ））を記録する管理記録部を備え、
前記管理装置が、
１≦ｎ≦Ｎのすべてのｎについて［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎをｎ番目のシェア計算装置に送信する初期設定ステップと、
１≦ｎ≦Ｎのすべてのｎについて（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）をｎ番目のシェア計算装置に送信し、Ｎ個のシェア計算装置に学習開始を指示する学習指示ステップと、
を実行し、
ｎ番目のシェア計算装置は、シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定を、他の前記シェア計算装置と共に行うことができ、
［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎと（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）と、前記のあらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εを記録するシェア計算記録部を備え、
Ｎ台のシェア計算装置が、
１≦ｍ１≦Ｍ１のすべてのｍ１について［Ｈ（ｍ１）（１，ｓ）］ｎ＝［Ｉ（ｍ１）（ｓ）］ｎとし、
ｄ＝１からｄ＝Ｄ−１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について
［Ｈ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎ＝［ｆ（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎ
ただし、
【数１８】
0006556659.tif 000019
を求め、
［Ｏ（ｍＤ）（ｓ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）］ｎ
とすることで、出力のシェア［Ｏ（ｓ）］ｎ＝｛［Ｏ（１）（ｓ）］ｎ，…，［Ｏ（ＭＤ）（ｓ）］ｎ｝）を求める前方伝播ステップと、
誤差のシェア［Ｅ］ｎを、
【数１９】
0006556659.tif 000020
のように求め、
Ｅとεの大小判定結果のシェアである［Ｅ＜ε］ｎを求める誤差計算ステップと、
を実行し、
前記管理装置又はＮ台の前記シェア計算装置のいずれかが、Ｋ台以上の前記シェア計算装置からＥとεの大小判定結果のシェアを受信し、Ｅとεの大小判定結果を示すデータを復元する終了条件確認ステップを実行し、
Ｎ台の前記シェア計算装置が、
Ｅ＜εでない場合には、
１≦ｍＤ≦ＭＤのすべてのｍＤについて［ＴＥＭＰ（ｍＤ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）−Ｔ（ｍＤ）（ｓ）］ｎとし、
ｄ＝Ｄ−１からｄ＝１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について
［δ（ｍｄ＋１）（ｄ＋１）］ｎ＝［ＴＥＭＰ（ｍｄ＋１）ｆ’（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎ
ただし、
【数２０】
0006556659.tif 000021
を求め、
１≦ｍｄ≦Ｍｄのすべてのｍｄについて
【数２１】
0006556659.tif 000022
とし、
１≦ｍｄ＋１≦Ｍｄ＋１、１≦ｍｄ≦Ｍｄのすべてのｍｄ＋１、ｍｄついて
［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ←［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Ｈ（ｍｄ）（ｄ，ｓ）Δｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ
のように重みのシェア［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎを更新し、
１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１ついて
［θ（ｍｄ＋１）（ｄ＋１）］ｎ←［θ（ｍｄ＋１）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Δθ（ｍｄ＋１）（ｄ＋１）］ｎ
のように閾値のシェア［θ（ｍｄ＋１）（ｄ＋１）］ｎを更新する逆誤差伝播ステップを実行し、
Ｎ台の前記シェア計算装置は、前記前方伝播ステップ、前記誤差計算ステップ、前記逆誤差伝播ステップにおいて、それぞれの処理を１≦ｓ≦Ｓのすべてのｓに対して実行し、
前記活性化関数ｆ（Ｘ）は、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘである
ことを特徴とするニューラルネットワークの学習方法。
【請求項５】
請求項４記載のニューラルネットワークの学習方法であって、
前記初期設定ステップでは、
２≦ｄ≦Ｄ、１≦ｍｄ≦Ｍｄ、１≦ｍｄ−１≦Ｍｄ−１のすべてのｄ、ｍｄ、ｍｄ−１ついてのｗ（ｍｄ，ｍｄ−１）（ｄ）を所定の体上からランダムに選択し、１≦ｄ≦Ｄ、１≦ｍｄ≦Ｍｄのすべてのｄ、ｍｄついてのθ（ｍｄ）（ｄ）を前記所定の体上からランダムに選択し、選択したすべてのｗ（ｍｄ，ｍｄ−１）（ｄ）とθ（ｍｄ）（ｄ）について［ｗ（ｍｄ，ｍｄ−１）（ｄ）］１，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］Ｎと［θ（ｍｄ）（ｄ）］１，…，［θ（ｍｄ）（ｄ）］Ｎを求めることで、１≦ｎ≦Ｎのすべてのｎについて［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎを取得し、
前記学習指示ステップでは、
１≦ｓ≦Ｓのすべての（Ｉ（ｓ），Ｔ（ｓ））について（［Ｉ（ｓ）］１，［Ｔ（ｓ）］１），…，（［Ｉ（ｓ）］Ｎ，［Ｔ（ｓ）］Ｎ）を求めることで、１≦ｎ≦Ｎのすべてのｎについて（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）を取得する
ことを特徴とするニューラルネットワークの学習方法。
【請求項６】
請求項３記載のシェア計算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散型のニューラルネットワークを形成する場合のニューラルネットワークシステム、シェア計算装置、ニューラルネットワークの学習方法、プログラムに関する。
【背景技術】
【０００２】
ビッグデータと機械学習の活用によりサービスの高度化・付加価値の提供が盛んに行われており、その際の機械学習には大きな計算リソースが必要である場合が多い。 そしてクラウドが低コストとなっている状況においては機械学習の計算を第三者が運用するクラウド上で行う場面が増えてきている。例えば、非特許文献１に示したようなニューラルネットワークの学習では大きな計算リソースが必要である。
【０００３】
セキュリティーの分野においてはプライバシーの観点から、秘密計算を用いて個人情報などから構成される計算の入力データを秘密化する研究が存在する（非特許文献２〜７など）。非特許文献２には従来技術として、データａをＮ個のシェア［ａ］１，…，［ａ］Ｎに分割してＮ個のサーバに分散させる技術（シェアの生成）、およびその中のＫ個のシェアを集めて元のデータを復元する技術（データの復元）が示されている。ただし、Ｋを２以上の整数、Ｎを２Ｋ−１以上の整数、ｎを１以上Ｎ以下の整数とする。また、［］ｎをｎ番目のシェア計算装置が記録するシェアを示す記号とする。なお、シェアはＫ個以上集めれば元のデータが復元でき、Ｋ個未満では元のデータは復元できない。つまり、シェアを分散させることで、元のデータを秘密化している。
【０００４】
非特許文献３〜６には、シェアの加算、シェアの乗算、シェアの定数倍、シェアのビット分解、シェアの大小判定などが示されている。シェアの加算とは、データを秘密化した状態のままで加算し、加算結果のシェアを求める技術である。つまり、シェアの加算の前には、ｎ番目のサーバはデータａ，ｂのシェアである［ａ］ｎ，［ｂ］ｎを記録しており、データａ，ｂを復元することなく、シェアの加算後には、ｎ番目のサーバはデータａ＋ｂのシェアである［ａ＋ｂ］ｎを記録した状態になる。シェアの乗算では、ｎ番目のサーバはデータａ，ｂのシェアである［ａ］ｎ，［ｂ］ｎを記録しており、データａ，ｂを復元することなく、シェアの乗算後には、ｎ番目のサーバはデータａ×ｂのシェアである［ａ×ｂ］ｎを記録した状態になる。シェアの定数倍では、ｎ番目のサーバはデータａのシェアである［ａ］ｎと秘密化していないデータｃを記録しており、データａを復元することなく、シェアの定数倍後には、ｎ番目のサーバはデータａ×ｃのシェアである［ａ×ｃ］ｎを記録した状態になる。シェアのビット分解では、ｎ番目のサーバは、データａを復元することなく、シェアのビット分解後には、データａのシェア［ａ］ｎから｜ａ｜個のａのビットデータｂｉｔａ（１），…，ｂｉｔａ（｜ａ｜）のシェア［ｂｉｔａ（１）］ｎ，…，［ｂｉｔａ（｜ａ｜）］ｎを生成し、記録した状態になる。シェアの大小判定では、ｎ番目のサーバはデータａのシェアである［ａ］ｎと秘密化していないデータｃを記録しており、データａを復元することなく、シェアの大小判定後には、ｎ番目のサーバはデータａとｃの大小判定の結果のシェアを記録した状態になる。なお、大小判定の結果は（ａ＞ｃ）と表現し、そのシェアは［ａ＞ｃ］ｎのように表現する。大小判定の結果（ａ＞ｃ）は、例えば、ａ＞ｃならば“１”、ａ≦ｃならば“０”のように、あらかじめ定めた方法でａ，ｃの大小関係を示すことである。結果のシェア［ａ＞ｃ］ｎとは、例えば、Ｋ個以上のシェアを集めなければ“１”か“０”かが分からないようにＮ個に分割したものである。上述の説明では、ａ＞ｃとａ≦ｃに場合分けしたが、ａ＜ｃとａ≧ｃに場合分けしてもよい。
【０００５】
非特許文献７には、ニューラルネットワークの学習において、学習データを秘密化した状態で学習させ、重みのデータを得る方法が示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】DAIVID E. RUMELHART, GEOFFREY E. HINTON, RONALD J. WILLIAMS, “Learning representations by back-propagating errors”, Nature 323, pp.533-536, 09 October 1986. [平成２８年４月２２日検索]、インターネット<http://www.nature.com/nature/journal/v323/n6088/abs/323533a0.html>．
【非特許文献２】Adi Shamir, “How to Share a Secret”, Communications of the ACM, Vol.22, No.11, pp.612-613, November 1979. [平成２８年４月２２日検索]、インターネット<http://dl.acm.org/citation.cfm?doid=359168.359176>．
【非特許文献３】Michael Ben-Or, Shafi Goldwasser, Avi Wigderson, “Completeness theorems for non-cryptographic fault-tolerant distributed computation”, STOC '88 Proceedings of the twentieth annual ACM symposium on Theory of computing, pp.1-10, 1988. [平成２８年４月２２日検索]、インターネット<http://dl.acm.org/citation.cfm?id=62213>.
【非特許文献４】Rosario Gennaro, Michael O. Rabin, Tal Rabin, “Simplified VSS and fast-track multiparty computations with applications to threshold cryptography”, PODC '98 Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, pp.101-111, 1998. [平成２８年４月２２日検索]、インターネット<http://dl.acm.org/citation.cfm?id=277716>．
【非特許文献５】渡辺泰平，岩村惠市, “秘密分散法を用いたサーバ台数変化がない乗算手法”, 情報処理学会研究報告, pp.1-6 , December 2013. [平成２８年４月２２日検索]、インターネット<http://ci.nii.ac.jp/naid/110009634018>．
【非特許文献６】五十嵐 大, 濱田 浩気, 菊池 亮, 千田 浩司, “少パーティの秘密分散ベース秘密計算のためのO(l)ビット通信ビット分解およびO(|p’|)ビット通信Modulus変換法”, コンピュータセキュリティシンポジウム2013論文集, 4号, pp.785-792, 2013. [平成２８年４月２２日検索]、インターネット<https://ipsj.ixsq.nii.ac.jp/ej/index.php?active_action=repository_view_main_item_detail&page_id=13&block_id=8&item_id=98298&item_no=1>．
【非特許文献７】Jiawei Yuan, Shucheng Yu, “Privacy Preserving Back-Propagation Neural Network Learning Made Practical with Cloud Computing”, IEEE Transactions on Parallel and Distributed Systems, Vol.25, Issue 1, pp.212-221, Jan. 2013. [平成２８年４月２２日検索]、インターネット<http://ieeexplore.ieee.org/xpl/login.jsp?reload=true&tp=&arnumber=6410315&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6410315>．
【非特許文献８】Mehrdad Aliasgari, Marina Blanton, Yihua Zhang, Aaron Steele, “Secure Computation on Floating Point Numbers”. NDSS 2013, Internet Society, Feb. 2013. [平成２８年５月１１日検索]、インターネット<http://www.internetsociety.org/doc/secure-computation-floating-point-numbers>
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献７に示された従来技術は、学習データは秘密化した状態を維持しているが、学習した結果である重みのデータは秘密化できていない。学習データは、大量の入力と結果（教師データ）のセットであり、個人情報などの秘密情報が含まれている可能性もあるため秘密化する必要性が高い。一方、学習した結果である重みのデータからは個人情報は分からないので、個人情報の保護という観点からの秘密化の必要性は低い。しかし、学習した結果もニューラルネットワークシステムにとってのノウハウであり、第三者に知られたくない情報である。したがって、第三者のサーバを利用して学習する場合には、結果も秘密化する必要性が高くなる。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、学習データだけでなく、学習した結果として得られる重みのデータも秘密化できるニューラルネットワークシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
Ｋを２以上の整数、Ｎを２Ｋ−１以上の整数、ｎを１以上Ｎ以下の整数、Ｄをニューラルネットワークの層数（ただし、１層目が入力層、Ｄ層目が出力層）、ｄを１以上Ｄ以下の整数、Ｍｄをｄ層目のノード数、ｍｄを１以上Ｍｄ以下の整数、Ｓを入力と教師データのセット数、ｓを１以上Ｓ以下の整数、Ｉ（ｓ）＝｛Ｉ（１）（ｓ），…，Ｉ（Ｍ１）（ｓ）｝をｓ番目の入力、Ｔ（ｓ）＝｛Ｔ（１）（ｓ），…，Ｔ（ＭＤ）（ｓ）｝をｓ番目の入力に対する教師データ、Ｏ（ｓ）＝｛Ｏ（１）（ｓ），…，Ｏ（ＭＤ）（ｓ）｝をｓ番目の入力に対する出力、Ｈ（ｄ，ｓ）＝｛Ｈ（１）（ｄ，ｓ），…，Ｈ（Ｍｄ）（ｄ，ｓ）｝をｓ番目の入力に対するｄ番目の隠れ層の値（ただし、Ｉ（ｓ）＝Ｈ（１，ｓ）、Ｏ（ｓ）＝Ｈ（Ｄ，ｓ））、ｗ（ｍｄ，ｍｄ−１）（ｄ）をｄ層目のｍｄ番目のノードとｄ−１層目のｍｄ−１番目のノードの間の重み、θ（ｍｄ）（ｄ）をｄ層目のｍｄ番目のノードの閾値、Δｗ（ｍｄ，ｍｄ−１）（ｄ）をｗ（ｍｄ，ｍｄ−１）（ｄ）の学習率、Δθ（ｍｄ）（ｄ）をθ（ｍｄ）（ｄ）の学習率、［］ｎをｎ番目のシェア計算装置が記録するシェアを示す記号、［Ｗ（ｄ）］ｎを［ｗ（１，１）（ｄ）］ｎ，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［ｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［Θ（ｄ）］ｎを［θ（１）（ｄ）］ｎ，…，［θ（Ｍｄ）（ｄ）］ｎの集合、［ΔＷ（ｄ）］ｎを［Δｗ（１，１）（ｄ）］ｎ，…，［Δｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［Δｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［ΔΘ（ｄ）］ｎを［Δθ（１）（ｄ）］ｎ，…，［Δθ（Ｍｄ）（ｄ）］ｎの集合、εをあらかじめ定めた誤差の閾値、ｆ（）を活性化関数、ｆ’（）を前記活性化関数の導関数とする。
【００１０】
本発明のニューラルネットワークシステムは、管理装置とＮ台のシェア計算装置で構成される。管理装置は、データからＮ個のシェアを求めること、Ｋ個のシェアからデータを復元することができ、管理記録部と初期設定部と学習指示部を備える。管理記録部は、あらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εと、Ｓ個の入力と教師データのセット（Ｉ（１），Ｔ（１）），…，（Ｉ（Ｓ），Ｔ（Ｓ））を記録する。初期設定部は、１≦ｎ≦Ｎのすべてのｎについて［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎをｎ番目のシェア計算装置に送信する。学習指示部は、１≦ｎ≦Ｎのすべてのｎについて（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）をｎ番目のシェア計算装置に送信し、Ｎ個のシェア計算装置に学習開始を指示する。
【００１１】
ｎ番目のシェア計算装置は、シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定を、他のシェア計算装置と共に行うことができ、シェア計算記録部と前方伝播部と誤差計算部と逆誤差伝播部と学習制御部とを備える。シェア計算記録部は、［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎと（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）と、前記のあらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εを記録する。前方伝播部は、１≦ｍ１≦Ｍ１のすべてのｍ１について［Ｈ（ｍ１）（１，ｓ）］ｎ＝［Ｉ（ｍ１）（ｓ）］ｎとし、ｄ＝１からｄ＝Ｄ−１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について［Ｈ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎ＝［ｆ（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎを求め、［Ｏ（ｍＤ）（ｓ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）］ｎとすることで、出力のシェア［Ｏ（ｓ）］ｎ＝｛［Ｏ（１）（ｓ）］ｎ，…，［Ｏ（ＭＤ）（ｓ）］ｎ｝）を求める。ただし、
【００１２】
【数１】
0006556659.tif 000002
である。誤差計算部は、誤差のシェア［Ｅ］ｎを、
【００１３】
【数２】
0006556659.tif 000003
のように求め、Ｅとεの大小判定結果のシェアである［Ｅ＜ε］ｎを求める。
【００１４】
逆誤差伝播部は、Ｅ＜εでない場合には、１≦ｍＤ≦ＭＤのすべてのｍＤについて［ＴＥＭＰ（ｍＤ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）−Ｔ（ｍＤ）（ｓ）］ｎとする。逆誤差伝播部は、ｄ＝Ｄ−１からｄ＝１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について、［δ（ｍｄ＋１）（ｄ＋１）］ｎ＝［ＴＥＭＰ（ｍｄ＋１）ｆ’（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎを求める。ただし、
【００１５】
【数３】
0006556659.tif 000004
である。逆誤差伝播部は、１≦ｍｄ≦Ｍｄのすべてのｍｄについて
【００１６】
【数４】
0006556659.tif 000005
【００１７】
とする。そして、逆誤差伝播部は、１≦ｍｄ＋１≦Ｍｄ＋１、１≦ｍｄ≦Ｍｄのすべてのｍｄ＋１、ｍｄついて
［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ←［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Ｈ（ｍｄ）（ｄ，ｓ）Δｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ
のように重みのシェア［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎを更新し、１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１ついて
［θ（ｍｄ＋１）（ｄ＋１）］ｎ←［θ（ｍｄ＋１）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Δθ（ｍｄ＋１）（ｄ＋１）］ｎ
のように閾値のシェア［θ（ｍｄ＋１）（ｄ＋１）］ｎを更新する。学習制御部は、前方伝播部、誤差計算部、逆誤差伝播部に、それぞれの処理を１≦ｓ≦Ｓのすべてのｓに対して実行させる。
【００１８】
また、管理装置又はＮ台のシェア計算装置のいずれかが、Ｋ台以上のシェア計算装置からＥとεの大小判定結果のシェアを受信し、Ｅとεの大小判定結果を示すデータを復元する終了条件確認部も備える。そして、活性化関数ｆ（Ｘ）は、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘである。
【発明の効果】
【００１９】
本発明のニューラルネットワークシステムによれば、管理装置をシェアの生成とシェアの復元ができる装置とし、シェア計算装置をシェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定ができる装置としている。そして、活性化関数ｆ（Ｘ）として、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘとなる関数を用いている。
【００２０】
この活性化関数ｆ（Ｘ）とその導関数ｆ’（Ｘ）を用いれば、シェアの生成とシェアの復元ができる管理装置と、シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定ができるシェア計算装置によって、学習データだけでなく、学習した結果として得られる重みのデータも秘密化できる。
【図面の簡単な説明】
【００２１】
【図１】本発明のニューラルネットワークシステムの構成例を示す図。
【図２】学習時の初期設定の処理フローを示す図。
【図３】学習の処理フローを示す図。
【図４】前方伝播の処理フローの具体例を示す図。
【図５】逆誤差伝播の処理フローの具体例を示す図。
【図６】活性化関数ｆ（Ｘ）の計算での処理フローの例を示す図。
【図７】活性化関数の導関数ｆ’（Ｘ）の計算での処理フローの例を示す図。
【図８】予言フェーズの処理フローを示す図。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００２３】
まず、記号について説明する。Ｋを２以上の整数、Ｎを２Ｋ−１以上の整数、ｎを１以上Ｎ以下の整数、Ｄをニューラルネットワークの層数（ただし、１層目が入力層、Ｄ層目が出力層）、ｄを１以上Ｄ以下の整数、Ｍｄをｄ層目のノード数、ｍｄを１以上Ｍｄ以下の整数、Ｓを入力と教師データのセット数、ｓを１以上Ｓ以下の整数、Ｉ（ｓ）＝｛Ｉ（１）（ｓ），…，Ｉ（Ｍ１）（ｓ）｝をｓ番目の入力、Ｔ（ｓ）＝｛Ｔ（１）（ｓ），…，Ｔ（ＭＤ）（ｓ）｝をｓ番目の入力に対する教師データ、Ｏ（ｓ）＝｛Ｏ（１）（ｓ），…，Ｏ（ＭＤ）（ｓ）｝をｓ番目の入力に対する出力、Ｈ（ｄ，ｓ）＝｛Ｈ（１）（ｄ，ｓ），…，Ｈ（Ｍｄ）（ｄ，ｓ）｝をｓ番目の入力に対するｄ番目の隠れ層の値（ただし、Ｉ（ｓ）＝Ｈ（１，ｓ）、Ｏ（ｓ）＝Ｈ（Ｄ，ｓ））、ｗ（ｍｄ，ｍｄ−１）（ｄ）をｄ層目のｍｄ番目のノードとｄ−１層目のｍｄ−１番目のノードの間の重み、θ（ｍｄ）（ｄ）をｄ層目のｍｄ番目のノードの閾値、Δｗ（ｍｄ，ｍｄ−１）（ｄ）をｗ（ｍｄ，ｍｄ−１）（ｄ）の学習率、Δθ（ｍｄ）（ｄ）をθ（ｍｄ）（ｄ）の学習率、［］ｎをｎ番目のシェア計算装置が記録するシェアを示す記号、［Ｗ（ｄ）］ｎを［ｗ（１，１）（ｄ）］ｎ，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［ｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［Θ（ｄ）］ｎを［θ（１）（ｄ）］ｎ，…，［θ（Ｍｄ）（ｄ）］ｎの集合、［ΔＷ（ｄ）］ｎを［Δｗ（１，１）（ｄ）］ｎ，…，［Δｗ（ｍｄ，ｍｄ−１）（ｄ）］ｎ，…，［Δｗ（Ｍｄ，Ｍｄ−１）（ｄ）］ｎの集合、［ΔΘ（ｄ）］ｎを［Δθ（１）（ｄ）］ｎ，…，［Δθ（Ｍｄ）（ｄ）］ｎの集合、εをあらかじめ定めた誤差の閾値、ｆ（）を活性化関数、ｆ’（）を前記活性化関数の導関数とする。
【００２４】
図１に本発明のニューラルネットワークシステムの構成例を示す。本発明のニューラルネットワークシステムは、ネットワーク９００で接続された管理装置２００とＮ台のシェア計算装置１００１，…，１００Ｎで構成される。また、本発明のニューラルネットワークシステムの利用者の端末３００もネットワーク９００を介してニューラルネットワークシステムに接続される。
【００２５】
管理装置２００は、データからＮ個のシェアを求めること（シェアの生成）、Ｋ個のシェアからデータを復元すること（データの復元）ができ、管理記録部２９０と初期設定部２１０と学習指示部２２０を備える。ｎ番目のシェア計算装置１００ｎは、シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定を、他のシェア計算装置１００１，…，１００ｎ-１，１００ｎ+１，…，１００Ｎと共に行うことができ、シェア計算記録部１９０ｎと前方伝播部１１０ｎと誤差計算部１２０ｎと逆誤差伝播部１３０ｎと学習制御部１４０ｎとを備える。上述のとおり、シェアの生成、データの復元、シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定には既存技術を用いればよい。管理記録部２９０は、あらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εと、Ｓ個の入力と教師データのセット（Ｉ（１），Ｔ（１）），…，（Ｉ（Ｓ），Ｔ（Ｓ））を記録しておく。シェア計算記録部１９０ｎは、前記のあらかじめ定めたΔＷ（１），…，ΔＷ（Ｄ）、ΔΘ（１），…，ΔΘ（Ｄ）、εを記録しておく。
【００２６】
図２は学習時の初期設定の処理フローを示す図である。初期設定部２１０は、１≦ｎ≦Ｎのすべてのｎについて［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎをｎ番目のシェア計算装置１００ｎに送信する（Ｓ２１０）。シェア計算装置１００ｎ（ただし、ｎ＝１，…，Ｎ）は、［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎを受信し、シェア計算記録部１９０ｎに記録する（Ｓ２１１ｎ）。より具体的には、初期設定部２１０は、２≦ｄ≦Ｄ、１≦ｍｄ≦Ｍｄ、１≦ｍｄ−１≦Ｍｄ−１のすべてのｄ、ｍｄ、ｍｄ−１ついてのｗ（ｍｄ，ｍｄ−１）（ｄ）を所定の体上からランダムに選択する。また、初期設定部２１０は、１≦ｄ≦Ｄ、１≦ｍｄ≦Ｍｄのすべてのｄ、ｍｄついてのθ（ｍｄ）（ｄ）を前記所定の体上からランダムに選択する。「所定の体」とは、あらかじめ定めた四則演算を行える集合である。例えば、素数ｐを位数とする有限体を、非特許文献８を利用して小数に対応付けした集合を所定の体とすればよい。
【００２７】
初期設定部２１０は、選択したすべてのｗ（ｍｄ，ｍｄ−１）（ｄ）とθ（ｍｄ）（ｄ）について［ｗ（ｍｄ，ｍｄ−１）（ｄ）］１，…，［ｗ（ｍｄ，ｍｄ−１）（ｄ）］Ｎと［θ（ｍｄ）（ｄ）］１，…，［θ（ｍｄ）（ｄ）］Ｎを求めることで、１≦ｎ≦Ｎのすべてのｎについて［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎを取得すればよい。初期設定部２１０は、このような手順で得られた［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎをｎ番目のシェア計算装置１００ｎに送信すればよい。
【００２８】
図３は学習の処理フローを示す図である。図４に前方伝播の処理フローの具体例、図５に逆誤差伝播の処理フローの具体例を示す。学習指示部２２０は、１≦ｎ≦Ｎのすべてのｎについて（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）をｎ番目のシェア計算装置１００ｎに送信し、Ｎ個のシェア計算装置１００１，…，１００Ｎに学習開始を指示する（Ｓ２２０）。より具体的には、学習指示部２２０は、１≦ｓ≦Ｓのすべての（Ｉ（ｓ），Ｔ（ｓ））について（［Ｉ（ｓ）］１，［Ｔ（ｓ）］１），…，（［Ｉ（ｓ）］Ｎ，［Ｔ（ｓ）］Ｎ）を求めることで、１≦ｎ≦Ｎのすべてのｎについて（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）を取得する。そして、学習指示部２２０は、（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）をシェア計算装置１００ｎに送信し、学習開始を指示すればよい。シェア計算装置１００ｎは、シェア計算記録部１９０ｎに（［Ｉ（１）］ｎ，［Ｔ（１）］ｎ），…，（［Ｉ（Ｓ）］ｎ，［Ｔ（Ｓ）］ｎ）を記録する。
【００２９】
シェア計算装置１００１，…，１００Ｎは、同じ教師データに対するそれぞれが記録している教師データのシェアを選択する（Ｓ１４１（Ｓ１４１１，…，Ｓ１４１Ｎ））。なお、図３〜８において、Ｎ台のシェア計算装置１００１，…，１００Ｎが協調して処理を行う場合は点線で囲み、符号を付している。なお、ステップＳ１４１の場合は、同じ教師データに対するシェアを選択する必要があるため点線で囲んでいるが、あらかじめ選択する順番を定めておけば、ステップＳ１４１中で情報を送受信する必要はない。なお、「協調して処理を行う」とは、情報を送受信しながら処理を進めるだけでなく、あらかじめ定めた手順にしたがって処理を進めることで情報の送受信をすることなく処理を進めることも含んだ意味である。
【００３０】
前方伝播部１１０１，…，１１０Ｎは、１≦ｍ１≦Ｍ１のすべてのｍ１について［Ｈ（ｍ１）（１，ｓ）］ｎ＝［Ｉ（ｍ１）（ｓ）］ｎとし、ｄ＝１からｄ＝Ｄ−１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について［Ｈ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎ＝［ｆ（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎを秘密計算で求め、［Ｏ（ｍＤ）（ｓ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）］ｎとすることで、出力のシェア［Ｏ（ｓ）］ｎ＝｛［Ｏ（１）（ｓ）］ｎ，…，［Ｏ（ＭＤ）（ｓ）］ｎ｝）を求める（Ｓ１１０（Ｓ１１０１，…，Ｓ１１０Ｎ））。ただし、
【００３１】
【数５】
0006556659.tif 000006
である。
【００３２】
ここで、ステップＳ１１０ｎについて、図４を参照しながら詳細に説明する。前方伝播部１１０ｎは、１≦ｍ１≦Ｍ１のすべてのｍ１について［Ｈ（ｍ１）（１，ｓ）］ｎ＝［Ｉ（ｍ１）（ｓ）］ｎとし、ｄに１を代入する（Ｓ１１１１，…，Ｓ１１１Ｎ）。前方伝播部１１０ｎは、［Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎを上式のように秘密計算で計算する（Ｓ１１２（Ｓ１１２１，…，Ｓ１１２Ｎ））。前方伝播部１１０ｎは、１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について［Ｈ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎ＝［ｆ（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎを秘密計算で計算する（Ｓ１１３（Ｓ１１３１，…，Ｓ１１３Ｎ））。前方伝播部１１０ｎは、ｄにｄ＋１を代入する（Ｓ１１４１，…，Ｓ１１４Ｎ）。前方伝播部１１０ｎは、ｄがＤ未満かを確認し（Ｓ１１５１，…，Ｓ１１５Ｎ）、Ｙｅｓの場合はステップＳ１１２１，…，Ｓ１１２Ｎに戻る。Ｎｏの場合は、［Ｏ（ｍＤ）（ｓ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）］ｎとする（Ｓ１１６１，…，Ｓ１１６Ｎ）。
【００３３】
なお、活性化関数ｆ（Ｘ）としては、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘとなる活性化関数を用いればよい。図６にｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘとなる活性化関数ｆ（Ｘ）の計算の処理フローを示す。Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘなので、大小判定の結果（Ｘ＞０）は、Ｘ≦０のときは（Ｘ＞０）＝０、Ｘ＞０のときは（Ｘ＞０）＝１と決めておく。そして、前方伝播部１１０ｎ（ただし、ｎ＝１，…，Ｎ）は、Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）と“０”との大小判定を秘密計算で行い、大小評価の結果（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）＞０）のシェア［Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）＞０］ｎを求める（Ｓ１１３１（Ｓ１１３１１，…，Ｓ１１３１Ｎ））。前方伝播部１１０ｎ（ただし、ｎ＝１，…，Ｎ）は、［ｆ（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎ＝［Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）・（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）＞０）］ｎを秘密計算（シェアの乗算）で求める（Ｓ１１３２（Ｓ１１３２１，…，Ｓ１１３２Ｎ））。また、後述する逆誤差伝播では活性化関数の導関数ｆ’（Ｘ）を用いるので、ここで、導関数ｆ’（Ｘ）についても説明する。図７に活性化関数の導関数ｆ’（Ｘ）の計算での処理フローを示す。活性化関数ｆ（Ｘ）が、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘなので、導関数ｆ’（Ｘ）は、Ｘ＜０のときはｆ’（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝１、Ｘ＝０のときにはｆ’（Ｘ）は決まらない。ただし、Ｘ＝０となることはないので、実際には、Ｘ≦０のときはｆ（Ｘ）＝０とすることを前提に、Ｘと“０”との大小判定を秘密計算で行えば（Ｓ１３３１（Ｓ１３３１１，…，Ｓ１３３１Ｎ））、導関数ｆ’（Ｘ）の計算結果のシェアを求めることができる。つまり、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘとなる活性化関数ｆ（Ｘ）であれば、活性化関数の計算も、導関数の計算も、既存の秘密計算を容易に利用できる。
【００３４】
誤差計算部１２０１，…，１２０Ｎは、誤差のシェア［Ｅ］ｎを、
【００３５】
【数６】
0006556659.tif 000007
のように秘密計算で求め、Ｅとεの大小判定結果のシェアである［Ｅ＜ε］ｎを秘密計算で求める（Ｓ１２０（Ｓ１２０１，…，Ｓ１２０Ｎ））。
【００３６】
管理装置２００又はＮ台のシェア計算装置１００１，…，１００Ｎのいずれかが、Ｋ台以上のシェア計算装置からＥとεの大小判定結果のシェア［Ｅ＜ε］ｎを受信し、Ｅとεの大小判定結果を示すデータを復元する終了条件確認部２３０も備える。図３の処理フローでは、管理装置２００が終了条件確認部２３０を備えた例を示している。この図では、管理装置２００がＫ台以上のシェア計算装置からＥとεの大小判定結果のシェア［Ｅ＜ε］ｎを受信し、Ｅとεの大小判定結果を示すデータを復元する。そして、Ｅ＜εか（誤差が所定の範囲内か）を確認する。Ｙｅｓの場合にはステップＳ１４２１，…，Ｓ１４２Ｎに進み、Ｎｏの場合にはステップＳ１３０（Ｓ１３０１，…，Ｓ１３０Ｎ）に進む。
【００３７】
逆誤差伝播部１３０１，…，１３０Ｎは、Ｅ＜εでない場合（ステップＳ２３０がＮｏの場合）には、１≦ｍＤ≦ＭＤのすべてのｍＤについて［ＴＥＭＰ（ｍＤ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）−Ｔ（ｍＤ）（ｓ）］ｎとする。逆誤差伝播部１３０１，…，１３０Ｎは、ｄ＝Ｄ−１からｄ＝１まで順番に１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について、［δ（ｍｄ＋１）（ｄ＋１）］ｎ＝［ＴＥＭＰ（ｍｄ＋１）ｆ’（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎを求める。ただし、
【００３８】
【数７】
0006556659.tif 000008
である。逆誤差伝播部１３０１，…，１３０Ｎは、１≦ｍｄ≦Ｍｄのすべてのｍｄについて
【００３９】
【数８】
0006556659.tif 000009
【００４０】
とする。そして、逆誤差伝播部１３０１，…，１３０Ｎは、１≦ｍｄ＋１≦Ｍｄ＋１、１≦ｍｄ≦Ｍｄのすべてのｍｄ＋１、ｍｄついて
［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ←［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Ｈ（ｍｄ）（ｄ，ｓ）Δｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ
のように重みのシェア［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎを更新し、１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１ついて
［θ（ｍｄ＋１）（ｄ＋１）］ｎ←［θ（ｍｄ＋１）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Δθ（ｍｄ＋１）（ｄ＋１）］ｎ
のように閾値のシェア［θ（ｍｄ＋１）（ｄ＋１）］ｎを更新する（Ｓ１３０（Ｓ１３０１，…，Ｓ１３０Ｎ））。
【００４１】
ここで、ステップＳ１３０ｎについて、図５を参照しながら詳細に説明する。逆誤差伝播部１３０ｎは、１≦ｍＤ≦ＭＤのすべてのｍＤについて［ＴＥＭＰ（ｍＤ）］ｎ＝［Ｈ（ｍＤ）（Ｄ，ｓ）−Ｔ（ｍＤ）（ｓ）］ｎとし、ｄにＤ−１を代入する（Ｓ１３１ｎ）。逆誤差伝播部１３０ｎは、１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１について、［Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）］ｎを秘密計算で求める（Ｓ１３２ｎ）。逆誤差伝播部１３０ｎは、［δ（ｍｄ＋１）（ｄ＋１）］ｎ＝［ＴＥＭＰ（ｍｄ＋１）ｆ’（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））］ｎを秘密計算で求める（Ｓ１３３ｎ）。なお、活性化関数の導関数ｆ’（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ））の計算は、図７を参照して説明したように、Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）と“０”との大小判定を秘密計算で行い、大小評価の結果（Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）＞０）のシェア［Ｘ（ｍｄ＋１）（ｄ＋１，ｓ）＞０］ｎを求めればよい（Ｓ１３３１（Ｓ１３３１１，…，Ｓ１３３１Ｎ））。
【００４２】
逆誤差伝播部１３０ｎは、１≦ｍｄ≦Ｍｄのすべてのｍｄについて、秘密計算で
【００４３】
【数９】
0006556659.tif 000010
【００４４】
を実行する（Ｓ１３４ｎ）。そして、逆誤差伝播部１３０ｎは、１≦ｍｄ＋１≦Ｍｄ＋１、１≦ｍｄ≦Ｍｄのすべてのｍｄ＋１、ｍｄついて
［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ←［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Ｈ（ｍｄ）（ｄ，ｓ）Δｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎ
のように重みのシェア［ｗ（ｍｄ＋１，ｍｄ）（ｄ＋１）］ｎを更新し、１≦ｍｄ＋１≦Ｍｄ＋１のすべてのｍｄ＋１ついて
［θ（ｍｄ＋１）（ｄ＋１）］ｎ←［θ（ｍｄ＋１）（ｄ＋１）
−δ（ｍｄ＋１）（ｄ＋１）Δθ（ｍｄ＋１）（ｄ＋１）］ｎ
のように閾値のシェア［θ（ｍｄ＋１）（ｄ＋１）］ｎを更新する（Ｓ１３５ｎ）。逆誤差伝播部１３０ｎは、ｄにｄ−１を代入する（Ｓ１３６ｎ）。逆誤差伝播部１３０ｎは、ｄが０より大きいかを確認し（Ｓ１３７ｎ）、Ｙｅｓの場合にはステップＳ１３２ｎに戻り、Ｎｏの場合には逆誤差伝播Ｓ１３０ｎを終了する。
【００４５】
シェア計算装置１００１，…，１００Ｎの学習制御部１４０１，…，１４０Ｎは、すべての教師データの処理が終了したかを確認し（Ｓ１４２（Ｓ１４２１，…，Ｓ１４２Ｎ））、Ｎｏの場合にはステップＳ１４１（Ｓ１４１１，…，Ｓ１４１Ｎ）に戻り、Ｙｅｓの場合には学習を終了する。つまり、学習制御部１４０１，…，１４０Ｎは、ステップＳ１４１（Ｓ１４１１，…，Ｓ１４１Ｎ）とステップＳ１４２（Ｓ１４２１，…，Ｓ１４２Ｎ）によって、前方伝播部１１０１，…，１１０Ｎ、誤差計算部１２０１，…，１２０Ｎ、逆誤差伝播部１３０１，…，１３０Ｎに、それぞれの処理を１≦ｓ≦Ｓのすべてのｓに対して実行させる。これらの処理によって、シェア計算装置１００１，…，１００Ｎは、学習後（更新後）の［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎをシェア計算記録部１９０１，…，１９０Ｎに記録した状態となる。
【００４６】
図８に、学習済のシェア計算装置１００１，…，１００Ｎを用いた予言フェーズの処理フローを示す。ユーザの端末３００は、シェアの生成とデータの復元ができ、予言指示部３２０を備えている。端末３００は、入力データＩのシェア［Ｉ］１，…，［Ｉ］Ｎを求め、シェア計算装置１００１，…，１００Ｎに予言を開始する指示を出す（Ｓ３２０）。シェア計算装置１００１，…，１００Ｎは、学習後（更新後）の［Ｗ（１）］ｎ，…，［Ｗ（Ｄ）］ｎと［Θ（１）］ｎ，…，［Θ（Ｄ）］ｎを用いて、図４に示した処理にしたがって、出力のシェア［Ｏ］ｎ＝｛［Ｏ（１）］ｎ，…，［Ｏ（ＭＤ）］ｎ｝）を求め（Ｓ１１０（Ｓ１１０１，…，Ｓ１１０Ｎ））、端末３００に送信する。端末３００は、出力のシェアから出力Ｏを復元する（Ｓ３３０）。なお、図８では端末３００が入力のシェア生成、予言の指示、出力の復元を行ったが、管理装置２００が行ってもよい。この場合は、管理装置２００は、予言指示部３２０を備える。
【００４７】
本発明のニューラルネットワークシステムによれば、管理装置をシェアの生成とシェアの復元ができる装置とし、シェア計算装置をシェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定ができる装置としている。そして、活性化関数ｆ（Ｘ）として、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘとなる関数を用いている。
【００４８】
この活性化関数ｆ（Ｘ）とその導関数ｆ’（Ｘ）を用いれば、シェアの生成とシェアの復元ができる管理装置と、シェアの加算、シェアの乗算、シェアの定数倍、シェアの大小判定ができるシェア計算装置によって、学習データだけでなく、学習した結果として得られる重みのデータも秘密化できる。また、上述したように、Ｘ≦０のときはｆ（Ｘ）＝０、Ｘ＞０のときはｆ（Ｘ）＝Ｘとなる活性化関数の場合、既存のシェアの大小判定とシェアの乗算を用いて、簡単に活性化関数の秘密計算、活性化関数の導関数の秘密計算を行える。
【００４９】
［プログラム、記録媒体］
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００５０】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【００５１】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００５２】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００５３】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００５４】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００５５】
１００ｎ  シェア計算装置                  １１０ｎ  前方伝播部
１２０ｎ  誤差計算部                      １３０ｎ  逆誤差伝播部
１４０ｎ  学習制御部                      １９０ｎ  シェア計算記録部
２００  管理装置                          ２１０  初期設定部
２２０  学習指示部                        ２３０  終了条件確認部
２９０  管理記録部                        ３００  端末
３２０  予言指示部                        ９００  ネットワーク
【図１】
0006556659.tif 000023
【図２】
0006556659.tif 000024
【図３】
0006556659.tif 000025
【図４】
0006556659.tif 000026
【図５】
0006556659.tif 000027
【図６】
0006556659.tif 000028
【図７】
0006556659.tif 000029
【図８】
0006556659.tif 000030