(57)【要約】【課題】積和演算にニューロモルフィック素子を使用する場合に、結果の精度を向上させることができるニューロモルフィック素子を含むアレイの制御装置などを提供する。【解決手段】可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイの制御装置であって、前記ニューロモルフィック素子の前記特性の分解能よりも高い精度で求められた前記重みの真値を用いた場合と前記ニューロモルフィック素子の前記特性について設定される離散化ステップサイズを用いた場合に基づいて誤差を小さくする所定の条件あるいは精度を大きくする所定の条件が満たされるように求められた前記離散化ステップサイズを使用して、前記ニューロモルフィック素子の前記特性を制御する制御部を備える、制御装置。【選択図】図１
2019046072.tif 000002
【特許請求の範囲】
【請求項１】
可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイの制御装置であって、
前記ニューロモルフィック素子の前記特性の分解能よりも高い精度で求められた前記重みの真値を用いた場合と前記ニューロモルフィック素子の前記特性について設定される離散化ステップサイズを用いた場合に基づいて誤差を小さくする所定の条件あるいは精度を大きくする所定の条件が満たされるように求められた前記離散化ステップサイズを使用して、前記ニューロモルフィック素子の前記特性を制御する制御部を備える、
制御装置。
【請求項２】
前記制御部は、前記離散化ステップサイズと前記分解能と所定のオフセット量に応じた前記ニューロモルフィック素子のダイナミックレンジを使用して、前記ニューロモルフィック素子の前記特性を制御する、
請求項１に記載の制御装置。
【請求項３】
前記制御部は、前記アレイが前記ニューロモルフィック素子を含む複数の層を有する場合に、それぞれの層ごとに共通の前記離散化ステップサイズを使用して、前記ニューロモルフィック素子の前記特性を制御する、
請求項１または請求項２のいずれか１項に記載の制御装置。
【請求項４】
前記制御部は、前記アレイが複数の前記ニューロモルフィック素子を含む層を有する場合に、同一の層に含まれる複数の前記ニューロモルフィック素子がグループ分けされたグループごとに共通の前記離散化ステップサイズを使用して、前記ニューロモルフィック素子の前記特性を制御する、
請求項１または請求項２のいずれか１項に記載の制御装置。
【請求項５】
前記アレイが前記ニューロモルフィック素子を含む複数の層を有しており、それぞれの層ごとに共通の前記分解能を有する前記ニューロモルフィック素子を備え、異なる層における前記ニューロモルフィック素子の前記分解能は異なる、
請求項１から請求項４のいずれか１項に記載の制御装置。
【請求項６】
前記制御部は、前記離散化ステップサイズを使用して、前記アレイについて学習を行う、
請求項１から請求項５のいずれか１項に記載の制御装置。
【請求項７】
前記アレイは、前記ニューロモルフィック素子を用いてニューラルネットワークにおける積和演算を行う回路を有する、
請求項１から請求項６のいずれか１項に記載の制御装置。
【請求項８】
可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイについて、前記ニューロモルフィック素子の前記特性の離散化ステップサイズを演算する演算方法であって、
前記ニューロモルフィック素子の前記特性の分解能よりも高い精度で前記重みの真値を演算するステップと、
前記重みの真値を用いた場合と前記ニューロモルフィック素子の前記特性について設定される前記離散化ステップサイズを用いた場合に基づいて、誤差を小さくする所定の条件あるいは精度を大きくする所定の条件が満たされるように、前記離散化ステップサイズを演算するステップと、を備える、
離散化ステップサイズの演算方法。
【請求項９】
可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイについて、前記ニューロモルフィック素子の前記特性の離散化ステップサイズを演算するプログラムであって、
前記ニューロモルフィック素子の前記特性の分解能よりも高い精度で前記重みの真値を演算するステップと、
前記重みの真値を用いた場合と前記ニューロモルフィック素子の前記特性について設定される前記離散化ステップサイズを用いた場合に基づいて、誤差を小さくする所定の条件あるいは精度を大きくする所定の条件が満たされるように、前記離散化ステップサイズを演算するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューロモルフィック素子を含むアレイの制御装置、離散化ステップサイズの演算方法およびプログラムに関する。
【背景技術】
【０００２】
従来から、ニューラルネットワークの技術が検討されている。
深層学習をはじめ、ニューラルネット技術を用いた高度な情報の識別技術、分類技術が金融、マーケティング、認証、セキュリティなどの広い分野で実用化されている。このような技術では、通常、膨大な量の積和演算が必要であり、クラウドサーバあるいは巨大な計算機を用いて実行される場合が多い。
【０００３】
近年、アナログ的にコンダクタンス（抵抗の逆数）が変化するニューロモルフィック（Ｎｅｕｒｏｍｏｒｐｈｉｃ）素子を利用して、上述の積和演算を低電力で高速に実行することが可能な新たな演算機構が研究されている。これらは、人間の脳の認識プロセスにおけるニューロンとシナプスの関係を模倣することで低消費電力、高速な信号処理を実現しようとするもので、ニューラルネットワークの構造をスタティックなネットワークモデルとして模倣する技術、あるいは、スパイク信号のタイミングからニューロンの発火モデルを実現しようとする技術など、幅広い研究が行われている。
【０００４】
一例として、特許文献１では、スパイク型のニューラルネットワークにおいて、実数値シミュレーションによって求められた重み（結合重み）を、離散値シナプス・デバイスを含むニューラルネットワークの回路チップにロードする手法が開示されており、当該回路チップはニューロモルフィック素子を含む（特許文献１参照。）。
【０００５】
しかしながら、ニューロモルフィック素子をニューラルネットワークに適用する場合における課題の一つとして、抵抗変化の分解能がある。つまり、ニューロモルフィック素子の抵抗変化は、完全にアナログ的ではなく、量子化ステップのように飛び飛びの値を持つことから、ニューロモルフィック素子をニューラルネットワークに使用すると、量子化誤差が発生し、識別などの性能が低下することがある。
【０００６】
例えば、ニューロモルフィック素子をニューラルネットワークにおける重みの記憶機能および重みの更新機能に使用する場合、コンピュータを用いた実数ベースのシミュレーションと比較して、変数の表現力が不足するため、識別性能が低下すること、あるいは、収束までに要する時間が長くなること、が生じ得る。
一例として、３層の多層パーセプトロン（ＭＬＰ：Ｍｕｌｔｉ−Ｌａｙｅｒ  Ｐｅｒｃｅｐｔｒｏｎ）を用いて、ｍｎｉｓｔの文字（手書き数字）を認識させる場合、ニューロモルフィック素子の特性の分解能に起因して、識別精度が低下することが把握されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１２／０５５５９３号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のように、積和演算にニューロモルフィック素子を使用する場合、当該ニューロモルフィック素子の量子化ステップに起因して、結果の精度が低下することがあった。
なお、従来では、数学的に得られた重みの値をニューロモルフィック素子に割り当てる手法については、十分に検討されていなかった。
【０００９】
本発明は、このような事情を考慮してなされたもので、積和演算にニューロモルフィック素子を使用する場合に、結果の精度を向上させることができるニューロモルフィック素子を含むアレイの制御装置、離散化ステップサイズの演算方法およびプログラムを提供することを課題とする。
【課題を解決するための手段】
【００１０】
本発明の一態様は、可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイの制御装置であって、前記ニューロモルフィック素子の前記特性の分解能よりも高い精度で求められた前記重みの真値を用いた場合と前記ニューロモルフィック素子の前記特性について設定される離散化ステップサイズを用いた場合に基づいて誤差を小さくする所定の条件あるいは精度を大きくする所定の条件が満たされるように求められた前記離散化ステップサイズを使用して、前記ニューロモルフィック素子の前記特性を制御する制御部を備える、制御装置である。
【００１１】
本発明の一態様は、制御装置において、前記制御部は、前記離散化ステップサイズと前記分解能と所定のオフセット量に応じた前記ニューロモルフィック素子のダイナミックレンジを使用して、前記ニューロモルフィック素子の前記特性を制御する。
本発明の一態様は、制御装置において、前記制御部は、前記アレイが前記ニューロモルフィック素子を含む複数の層を有する場合に、それぞれの層ごとに共通の前記離散化ステップサイズを使用して、前記ニューロモルフィック素子の前記特性を制御する。
本発明の一態様は、制御装置において、前記制御部は、前記アレイが複数の前記ニューロモルフィック素子を含む層を有する場合に、同一の層に含まれる複数の前記ニューロモルフィック素子がグループ分けされたグループごとに共通の前記離散化ステップサイズを使用して、前記ニューロモルフィック素子の前記特性を制御する。
本発明の一態様は、制御装置において、前記アレイが前記ニューロモルフィック素子を含む複数の層を有しており、それぞれの層ごとに共通の前記分解能を有する前記ニューロモルフィック素子を備え、異なる層における前記ニューロモルフィック素子の前記分解能は異なる。
本発明の一態様は、制御装置において、前記制御部は、前記離散化ステップサイズを使用して、前記アレイについて学習を行う。
本発明の一態様は、制御装置において、前記アレイは、前記ニューロモルフィック素子を用いてニューラルネットワークにおける積和演算を行う回路を有する。
【００１２】
本発明の一態様は、可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイについて、前記ニューロモルフィック素子の前記特性の離散化ステップサイズを演算する演算方法であって、前記ニューロモルフィック素子の前記特性の分解能よりも高い精度で前記重みの真値を演算するステップと、前記重みの真値を用いた場合と前記ニューロモルフィック素子の前記特性について設定される前記離散化ステップサイズを用いた場合に基づいて、誤差を小さくする所定の条件あるいは精度を大きくする所定の条件が満たされるように、前記離散化ステップサイズを演算するステップと、を備える、離散化ステップサイズの演算方法である。
【００１３】
本発明の一態様は、可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイについて、前記ニューロモルフィック素子の前記特性の離散化ステップサイズを演算するプログラムであって、前記ニューロモルフィック素子の前記特性の分解能よりも高い精度で前記重みの真値を演算するステップと、前記重みの真値を用いた場合と前記ニューロモルフィック素子の前記特性について設定される前記離散化ステップサイズを用いた場合に基づいて、誤差を小さくする所定の条件あるいは精度を大きくする所定の条件が満たされるように、前記離散化ステップサイズを演算するステップと、をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１４】
本発明によれば、積和演算にニューロモルフィック素子を使用する場合に、結果の精度を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るニューラルネットワークシステムの概略的な構成を示すブロック図である。
【図２】本発明の実施形態に係るニューラルネットワーク回路の概略的な構成を示すブロック図である。
【図３】本発明の実施形態に係る素子アレイの概念的な構成を示すブロック図である。
【図４】本発明の実施形態に係る識別対象の画像の例を示す図である。
【図５】本発明の実施形態に係るパラメーターα、βに関する特性の一例を示す図である。
【図６】本発明の実施形態に係る重みの学習の結果の一例を示す図である。
【図７】本発明の実施形態に係るニューロモルフィック素子に設定されるダイナミックレンジに応じた識別精度の一例を示す図である。
【図８】すべての層について同じダイナミックレンジをニューロモルフィック素子に設定した場合における結果の一例を示す図である。
【図９】本発明の実施形態に係る各層について異なるダイナミックレンジをニューロモルフィック素子に設定した場合における結果の一例を示す図である。
【図１０】すべての層について同じダイナミックレンジをニューロモルフィック素子に設定した場合における結果の他の例を示す図である。
【図１１】本発明の実施形態に係る各層について異なるダイナミックレンジをニューロモルフィック素子に設定した場合における結果の他の例を示す図である。
【図１２】本発明の実施形態に係るニューロモルフィック素子に設定されるダイナミックレンジのオフセット量に応じた識別精度の一例を示す図である。
【図１３】本発明の実施形態に係るニューラルネットワーク回路において行われる処理の手順の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照し、本発明の実施形態について説明する。
【００１７】
［ニューラルネットワークシステムの概要］
図１は、本発明の実施形態に係るニューラルネットワークシステム１の概略的な構成を示すブロック図である。
ニューラルネットワークシステム１は、制御装置１１と、素子アレイ部１２を備える。
制御装置１１は、識別制御部２１と、重み演算制御部２２と、重み割り当て制御部２３と、記憶部２４を備える。
【００１８】
素子アレイ部１２は、ニューラルネットワークにおける積和演算を行う。素子アレイ部１２は、ニューロモルフィック素子を含む。
制御装置１１は、素子アレイ部１２に関する制御を行う。
識別制御部２１は、ニューラルネットワークにおける識別の処理を制御する。
重み演算制御部２２は、ニューロモルフィック素子に割り当てられる重みの演算（計算）の処理を制御する。
重み割り当て制御部２３は、ニューロモルフィック素子に対して重みを割り当てる。
記憶部２４は、情報を記憶する。本実施形態では、説明の便宜上、１個の記憶部２４を示したが、他の構成例として、制御装置１１が２個以上の記憶部を備えてそれぞれの記憶部を使い分けてもよい。
【００１９】
図２は、本発明の実施形態に係るニューラルネットワーク回路１０１の概略的な構成を示すブロック図である。
図２に示されるニューラルネットワーク回路１０１は、図１に示されるニューラルネットワークシステム１の機能を実装した回路の一例である。
ニューラルネットワーク回路１０１は、識別用制御回路１１１と、重み演算制御回路１１２と、重み割り当て制御回路１１３と、素子アレイ１２１と、入出力インタフェース回路（入出力ＩＦ回路）１２２と、入出力インタフェース回路（入出力ＩＦ回路）１２３を備える。
【００２０】
図１および図２の例では、識別用制御回路１１１により識別制御部２１の機能が実現されており、重み演算制御回路１１２により重み演算制御部２２の機能が実現されており、重み割り当て制御回路１１３により重み割り当て制御部２３の機能が実現されている。なお、記憶部２４の機能は、識別用制御回路１１１と重み演算制御回路１１２と重み割り当て制御回路１１３のそれぞれに分散されて実現されている。
図１および図２の例では、素子アレイ１２１および入出力ＩＦ回路１２２〜１２３により素子アレイ部１２の機能が実現されている。
素子アレイ１２１は、複数のニューロモルフィック素子を含む。
【００２１】
なお、図２の例では、素子アレイ１２１の内部に、１個のニューロモルフィック素子１３１のみを例示してある。ニューロモルフィック素子１３１は、入力された信号に対して重みの値を乗算し、この乗算の結果の値を持つ信号を出力信号として出力する。当該重みの値は、ニューロモルフィック素子１３１の可変な特性の値に応じた値である。ニューロモルフィック素子１３１の特性の値は、外部から制御されることで、変化する。
本実施形態では、素子アレイ１２１において、このようなニューロモルフィック素子を複数使用して、所望のニューラルネットワークに対応する積和演算を行う回路が構成されている。素子アレイ１２１への信号の入力および素子アレイ１２１からの信号の出力は、入出力ＩＦ回路１２２、１２３を介して行われる。素子アレイ１２１の回路は、一例として、マトリクス状になっており、マトリクスの一辺（例えば、縦の辺）における信号の入出力が入出力ＩＦ回路１２２を介して行われ、マトリクスの他の一辺（例えば、横の辺）における信号の入出力が入出力ＩＦ回路１２３を介して行われる。
【００２２】
ここで、識別用制御回路１１１は、入出力ＩＦ回路１２２、１２３と接続されており、入出力ＩＦ回路１２２、１２３を介して素子アレイ１２１に識別対象の情報を出力し、当該情報に基づいて素子アレイ１２１により演算された結果（識別結果）の情報を入出力ＩＦ回路１２２、１２３を介して入力する。そして、識別用制御回路１１１は、入力された情報（識別結果の情報）を記憶部２４に記憶すること、あるいは、入力された情報（識別結果の情報）に基づいて所定の解析を実行することなどを行う。
また、識別用制御回路１１１は、例えば、素子アレイ１２１により実現されるニューラルネットワークについて、学習（機械学習）を行う機能を有する。
【００２３】
重み演算制御回路１１２は、識別用制御回路１１１と接続されており、また、重み割り当て制御回路１１３と接続されている。
また、本実施形態では、重み演算制御回路１１２は、素子アレイ１２１に含まれるニューロモルフィック素子の特性の分解能よりも高い精度で、素子アレイ１２１により実現されるニューラルネットワークにおける重み（結合重み）の値を演算する機能を有する。そして、本実施形態では、重み演算制御回路１１２は、素子アレイ１２１に含まれるニューロモルフィック素子に割り当てる適切な重みの値（本実施形態では、誤差あるいは識別精度に関する所定の条件を満たす重みの値）を演算する機能を有する。
また、本実施形態では、重み演算制御回路１１２は、識別用制御回路１１１により取得された識別結果の情報（例えば、学習に関する情報）に基づいて、素子アレイ１２１に含まれるニューロモルフィック素子に割り当てる重みの値を更新（演算）する機能を有する。
【００２４】
重み割り当て制御回路１１３は、入出力ＩＦ回路１２２、１２３と接続されており、入出力ＩＦ回路１２２、１２３を介して素子アレイ１２１に含まれるニューロモルフィック素子に重みの値を設定する。重み割り当て制御回路１１３は、当該重みの値として、重み演算制御回路１１２により演算された値を使用する。
重み割り当て制御回路１１３は、一例として、素子アレイ１２１に含まれるニューロモルフィック素子に対して所定の信号を送信することで、当該信号に応じた重みの値を当該ニューロモルフィック素子に設定してもよい。当該所定の信号としては、任意の信号が用いられてもよく、例えば、電圧パルスの信号が用いられてもよい。
【００２５】
ニューロモルフィック素子では、重み割り当て制御回路１１３により制御されて、当該ニューロモルフィック素子の特性（本実施形態では、コンダクタンス）が変化することで、重みの値が変化する。つまり、当該ニューロモルフィック素子では、当該ニューロモルフィック素子の特性に応じた重み（値）を入力された信号に乗算し、その乗算の結果の信号を出力する。
具体例として、抵抗Ｒが変化し得るニューロモルフィック素子が乗算器の機能として用いられる場合、当該ニューロモルフィック素子のコンダクタンスＧ（＝１／Ｒ）を使用し、当該ニューロモルフィック素子への入力信号として電圧Ｖを入力し、そのときに当該ニューロモルフィック素子を流れる電流Ｉ（＝Ｇ×Ｖ）の大きさを乗算結果として使用する。
なお、素子アレイ１２１に複数のニューロモルフィック素子が含まれる構成では、例えば、それぞれのニューロモルフィック素子ごとに制御されてもよく、あるいは、すべてのニューロモルフィック素子についてまとめて制御されてもよく、あるいは、２個以上の異なるグループに複数のニューロモルフィック素子が分けられて、それぞれのグループごとにまとめて制御されてもよい。
【００２６】
ここで、特性の変化量が変動するニューロモルフィック素子が用いられる場合には、その点が考慮されて、当該ニューロモルフィック素子が制御されることが好ましい。特性の変化量が変動するとは、例えば、特性の変化が非線形的であるような素子のことを言う。
具体例として、コンダクタンスの変化量（ΔＧ）が変動するニューロモルフィック素子では、例えば、コンダクタンスの値が低い値から高い値へ変化するにしたがって、当該ニューロモルフィック素子に与えられる電圧Ｖの一定変化量に対するコンダクタンスの変化量（ΔＧ）が増加していく場合がある。この場合、一例として、当該ニューロモルフィック素子のコンダクタンスの変化量（ΔＧ）を一定値間隔ごとに切り替えるために、コンダクタンスの値が低い値から高い値へ変化するにしたがって、当該ニューロモルフィック素子に与えられる電圧Ｖの変化量（切り替えの段階ごとの変化量）を小さくしていく構成が用いられてもよい。あるいは、コンダクタンスの変化量Δの変動に応じて、割り当てる重みの変化量を変動させるような構成が用いられてもよい。
なお、ニューロモルフィック素子の特性の変化量が他の態様で変動する場合においても、その態様に合わせて制御が行われればよい。このような制御の仕方は、例えば、あらかじめ設定されて記憶部２４などに記憶されてもよい。
【００２７】
図３は、本発明の実施形態に係る素子アレイ１２１の概念的な構成を示すブロック図である。
ここで、図３の例では、素子アレイ１２１において行われる積和演算の様子を概念的に示してある。素子アレイ１２１の回路構成としては、このような積和演算が実現される任意の回路構成が用いられてもよい。
【００２８】
図３の例では、３層のパーセプトロンを用いた例を示す。
素子アレイ１２１は、ｐ（ｐは１以上の整数）個の値（信号）を入力し、ｒ（ｒは１以上の整数）個の値（信号）を出力する。
素子アレイ１２１は、入力層に、ｐ個のユニットＡ１−１〜Ａ１−ｐと、１個のバイアス項のユニットＡ１−０を備える。
素子アレイ１２１は、隠れ層に、ｑ個のユニットＡ２−１〜Ａ２−ｑと、１個のバイアス項のユニットＡ２−０を備える。
素子アレイ１２１は、出力層に、ｒ個のユニットＡ３−１〜Ａ３−ｒを備える。
【００２９】
本実施形態では、ｐ個のユニットＡ１−１〜Ａ１−ｐと、ｑ個のユニットＡ２−１〜Ａ２−ｑと、ｒ個のユニットＡ３−１〜Ａ３−ｒにより実現される演算を行う回路を、ニューロモルフィック素子を用いて構成した。この演算は、例えば、積和演算である。
なお、本実施形態では、前段の層におけるそれぞれのユニットから後段の層におけるすべてのユニット（バイアス項のユニットを除く。）へ信号を出力するニューラルネットワークの構成を示すが、他の構成が用いられてもよい。図３の例では、入力層におけるそれぞれのユニットＡ１−０〜Ａ１−ｐから隠れ層におけるｑ個のユニットＡ２−１〜Ａ２−ｑへ信号を出力しており、また、隠れ層におけるそれぞれのユニットＡ２−０〜Ａ２−ｑから出力層におけるｒ個のユニットＡ３−１〜Ａ３−ｒへ信号を出力している。
【００３０】
入力層におけるそれぞれのユニットＡ１−１〜Ａ１−ｐは、ｐ個の入力値（信号）のそれぞれを入力して出力する。
また、入力層におけるユニットＡ１−０は、所定の値（信号）を出力する。
【００３１】
隠れ層におけるそれぞれのユニットＡ２−１〜Ａ２−ｑは、入力層における（ｐ＋１）個のユニットＡ１−０〜Ａ１−ｐからの出力値（信号）について所定の重みを用いて積和演算した結果の値（信号）を、出力層におけるそれぞれのユニットＡ３−１〜Ａ３−ｒに出力する。この積和演算は、入力層の出力から隠れ層の出力までの間で行われる。重みは、例えば、入力層におけるそれぞれのユニットＡ１−１〜Ａ１−ｐごとに異なってもよく、また、隠れ層におけるそれぞれのユニットＡ２−１〜Ａ２−ｑごとに異なってもよい。
また、隠れ層におけるユニットＡ２−０は、所定の値（信号）を出力する。
【００３２】
出力層におけるそれぞれのユニットＡ３−１〜Ａ３−ｑは、隠れ層における（ｑ＋１）個のユニットＡ２−０〜Ａ２−ｑからの出力値（信号）について所定の重みを用いて積和演算した結果の値（信号）を出力する。この積和演算は、隠れ層の出力から出力層の出力までの間で行われる。重みは、例えば、隠れ層におけるそれぞれのユニットＡ２−１〜Ａ２−ｑごとに異なってもよく、また、出力層におけるそれぞれのユニットＡ３−１〜Ａ３−ｒごとに異なってもよい。
【００３３】
素子アレイ１２１は、画像２１１を入力し、入力された画像２１１の識別結果の情報を出力する。
一例として、画像２１１は、７８４個の画素（０番目〜７８３番目の画素）を有する画像である。この場合、入力層のユニット数（ｐ）は７８４個となる。
また、図３の例では、識別結果の情報は、出力層から出力されるｒ個の情報である。
【００３４】
なお、複数の層を有するニューラルネットワークが構成される場合、それぞれの層間（例えば、１−２層間、２−３層間）に対応する重みは、例えば、それぞれの層間ごとに別々のアレイ（例えば、複数のニューロモルフィック素子の並びを層間ごとに持つアレイ）を用いて構成されてもよく、あるいは、１組のアレイ（例えば、複数のニューロモルフィック素子の並びを持つ１組のアレイ）が、時間差（時分割）などによって仮想的に分割されて、２つ以上の層間に対応する重みを実現する構成が用いられてもよい。さらには、１組のアレイを空間的に複数のサブアレイに分割して２つ以上の層間に対応する重みを実現する構成が用いられてもよい。同様に、本実施形態では、１個のニューロモルフィック素子は、例えば、１個の重みに対応して用いられてもよく、あるいは、時間差（時分割）などによって仮想的に分割されて、２個以上の重みに対応して用いられてもよい。
【００３５】
図４は、本発明の実施形態に係る識別対象の画像Ｂ１−１〜Ｂ１−ｎ、Ｂ２−１〜Ｂ２−ｎ、・・・、Ｂ０−１〜Ｂ０−ｎ（ｎは２以上の整数であり、例えば、十分に多い数）の例を示す図である。
画像Ｂ１−１〜Ｂ１−ｎは、数字の「１」を手書きした場合における複数の異なる手書きパターンの画像である。
画像Ｂ２−１〜Ｂ２−ｎは、数字の「２」を手書きした場合における複数の異なる手書きパターンの画像である。
画像Ｂ０−１〜Ｂ０−ｎは、数字の「０」を手書きした場合における複数の異なる手書きパターンの画像である。
なお、図４の例では、数字の「３」〜「９」については図示を省略してある。
また、図４の例では、数字の「１」〜「９」、「０」のすべてについて同じ数（ｎ個）の画像を示したが、それぞれの数字ごとに異なる数の画像が用いられてもよい。
【００３６】
図３に示される素子アレイ１２１では、数字の「１」〜「９」、「０」の画像が用いられる場合、例えば、出力層からの出力の数（ｒ個）として１０個が用いられる。識別制御部２１では、これら１０個の出力のそれぞれを１０個の数字（「１」〜「９」、「０」）のそれぞれに割り当て、それぞれの出力の値をそれぞれの数字である尤度（尤もらしさ）とみなす。そして、識別制御部２１では、入力された画像２１１の数字は、これら１０個の出力のうちで最も値が大きい出力に対応する数字であると識別する。
なお、ここでは、出力の値が大きい方が尤度が大きい構成としているが、逆に、出力の値が大きい方が尤度が小さくなるように構成されてもよい。
【００３７】
本実施形態では、このような画像の一例として、ｍｎｉｓｔの画像が用いられる場合を示す。
なお、図４に示される画像は、ｍｎｉｓｔの画像そのものではないが、説明の便宜上から、手書きの数字を表す画像を例示したものである。
【００３８】
ここで、ニューロモルフィック素子としては、任意の素子が用いられてもよい。また、ニューロモルフィック素子としては、例えば、１種類のニューロモルフィック素子が複数組み合されて用いられてもよく、あるいは、２種類以上のニューロモルフィック素子が組み合されて用いられてもよい。
一例として、ニューロモルフィック素子として、結晶と非晶質との相変化を段階的に制御するＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）を使用する素子が用いられてもよい。
他の例として、ニューロモルフィック素子として、電気化学的反応により金属析出とイオン化との間のパスの形成および消滅を利用するＣＢＲＡＭ（Ｃｏｎｄｕｃｔｉｖｅ  Ｂｒｉｄｇｅ  ＲＡＭ）を使用する素子が用いられてもよい。
他の例として、ニューロモルフィック素子としてスピントロニクス（Ｓｐｉｎｔｒoｎｉｃｓ）を使用する素子も用いられている。例えば、磁壁の制御による線形的抵抗変化を発生させるドメインウォール型、あるいは、スピン軌道トルク作用による磁化反転を使用したＳＯＴ（Ｓｐｉｎ  Ｏｒｂｉｔ  Ｔｏｒｑｕｅ）型の素子の研究が進められている。
他の例として、ニューロモルフィック素子として、ＴａＯ２等の媒体に金属析出によるフィラメントを形成して抵抗変化を利用するＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用する素子が用いられてもよい。
【００３９】
本実施形態では、素子の特性としてコンダクタンスの値を変化させることが可能なニューロモルフィック素子が用いられており、その変化の分解能が有限である。
なお、ニューロモルフィック素子としては、任意の特性を変化させることが可能なものが用いられてもよく、例えば、抵抗、あるいは、光位相などの特性を変化させることが可能なものが用いられてもよい。
【００４０】
［ニューロモルフィック素子の特性の分解能が性能に与える影響］
分解能が有限であるニューロモルフィック素子をニューラルネットワークに適用する場合について、ニューラルネットワークの性能に与える影響を説明する。
ニューロモルフィック素子は、完全なアナログ線形的なコンダクタンス（Ｇ）の変化特性を有しておらず、有限な分解能を有している。ニューロモルフィック素子のコンダクタンス変化の分解能（本実施形態では、ビットの個数）が決まっている場合、値のダイナミックレンジ（全体的な幅）と量子化ステップサイズ（量子化ステップの幅）とは比例関係にある。
【００４１】
ここで、量子化ステップサイズが大きくなると、ニューラルネットワークの性能の劣化が生じることが予想されることから、ニューロモルフィック素子に与えるダイナミックレンジを最適化する問題として考えることができる。
ここでは、分解能を固定した条件を想定する。各層のニューロモルフィック素子に割り当てられるダイナミックレンジ（値域）によって、識別性能への影響が変わり得ると考えられる。
【００４２】
ここでは、倍精度浮動小数点で表された実数を用いて重みの収束の推移を考える。それぞれの層における重みを、ニューロモルフィック素子の可変なコンダクタンスを制御することで実現する。
なお、本実施形態において、実数を用いたシミュレーションはコンピュータを用いて実行されることから、当該シミュレーションにおいて「実数」といっているのは、厳密には実数ではなく、コンピュータの演算語長の制約によって離散化された値である。
例えば、１層目における重みの最大値、最小値、平均値、および２層目における重みの最大値、最小値、平均値が表されるグラフを考える（図示は省略。）。
【００４３】
重みをニューロモルフィック素子のモデルへ変換するにあたり、ニューロモルフィック素子の特性の分解能が５（５個のステップ）であるとした。そして、ニューロモルフィック素子のダイナミックレンジとして複数種類の異なる組み合わせを想定して、識別性能を評価した。ニューロモルフィック素子の特性の分解能が固定されている場合、ダイナミックレンジの割り当て方によって識別性能は大きく変化し得る。
【００４４】
実数演算における識別結果は次のようになった。ここで、（±Ｕ、±Ｖ）は、１層目における重みのダイナミックレンジが±Ｕであり、２層目における重みのダイナミックレンジが±Ｖであることを示す。また、Ｗ［％］は、識別結果の精度（識別精度）を示す。
（±２、±２）              ７６．９２［％］
（±１、±２）              ８３．４１［％］
（±２、±１）              ７２．０２［％］
（±１、±１）              ８４．９０［％］
（±０．５、±０．５）      ９４．８８［％］
（±０．５、±０．３）      ９１．４５［％］
（±０．３、±０．５）      ９４．０１［％］
（±０．３、±０．３）      ８９．８１［％］
（±０．１、±０．１）      ６９．４６［％］
（±０．０５、±０．０５）  ５７．０９［％］
【００４５】
この結果から、次のことが推測される。
一つの推測結果として、ニューロモルフィック素子に割り当てられるダイナミックレンジとしては、上限値および下限値の理論値が用いられる場合が最適であるとは限られず、ダイナミックレンジが小さい方が有利となる場合もあり得る。量子化ステップサイズが小さいことが重要であると考えられるが、最適値があると考えられる。
他の一つの推測結果として、１層目における量子化ステップサイズを、２層目における量子化ステップサイズと比べて、小さくする方が有利となり得る。
【００４６】
一般に、Ｍ（Ｍは、２以上の整数であるとする。）層からなるニューラルネットワークにおいて、１層目からＮ（Ｎは、１以上でＭより小さい整数であるとする。）層目までは特徴抽出に関連し、（Ｎ＋１）層目からＭ層までは識別に関連する。識別は、特徴抽出の結果に依存し得る。特徴抽出の性能が良い場合には、それによって、識別の性能をある程度良い性能に維持することができる。上位の層ほど分解能が重要であり、下位の層は大きいダイナミックレンジが必要であると推測された。
【００４７】
上記のことから、本実施形態では、ニューロモルフィック素子の特性の分解能を固定して、当該ニューロモルフィック素子に割り当てられるダイナミックレンジと量子化ステップサイズの最適化の問題として取り扱う。
通常、ニューロモルフィック素子において、量子化ステップサイズが小さくなると、重みの誤差が減少する一方、重みが取り得る値のダイナミックレンジが小さくなる。また、ニューロモルフィック素子において、ダイナミックレンジが小さくなると、本来の重みの値によって演算される値が上限あるいは下限に固着する可能性が増加し、誤識別の原因となる。本実施形態では、以下で説明するように、良好な解（好ましくは、最適解）を求める。
【００４８】
［ニューラルネットワークにおける識別精度の演算の概要］
本実施形態において想定するニューラルネットワークについて説明する。なお、本実施形態では、図３に示されるニューラルネットワークを想定する。
入力層におけるユニット数をｐ個とし、バイアス項の１個のユニットも設ける。
隠れ層におけるユニット数をｑ個とし、バイアス項の１個のユニットも設ける。
出力層におけるユニット数をｒ個とする。
重みｗ（Ｌ）ｓ，ｔについて、Ｌは層の番号を表し、ｓは出力側の層のユニットの番号を表し、ｔは入力側の層のユニットの番号を表す。ここで、本実施形態では、入力層と隠れ層との間を第１層（Ｌ＝１）とし、隠れ層と出力層との間を第２層（Ｌ＝２）とする。
【００４９】
バックプロパゲーションの演算上、バイアス項を、０次項で表現した。なお、バイアス項の出力値を常に１とし、バイアス項と各ユニットとの間の重みについても学習対象とした。
以下で、重みの分解能、ダイナミックレンジおよび量子化ステップサイズが識別性能に与える影響について説明する。
【００５０】
重みの誤差が出力に与える影響を示す。
ｘｉ（ｉ＝０、１、２、・・・、ｐ）は入力層におけるバイアス項および出力値（本実施形態では、入力値と同じ値）であるとし、ｙｊ（ｊ＝０、１、２、・・・、ｑ）は隠れ層におけるバイアス項および出力値であるとする。
式（１）に示されるように、２層目における重みｗ（２）ｋ，ｊの分解能の制約によって生じる量子化誤差（符号Δが付された項）を導入する。
ニューラルネットワークからの出力値ｚｋ（ｋ＝１、２、・・・、ｒ）は、式（２）のように表される。
【００５１】
【数１】
2019046072.tif 000003
【００５２】
【数２】
2019046072.tif 000004
【００５３】
次に、ｙｊの誤差を考える。活性化関数としてｒｅｌｕ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）が用いられる場合、式（３）および式（４）のように表される。
【００５４】
【数３】
2019046072.tif 000005
【００５５】
【数４】
2019046072.tif 000006
【００５６】
式（１）と同様に、１層目における重みｗ（１）ｊ，ｉの分解能の制約によって生じる量子化誤差（符号Δが付された項）を導入する。これにより、式（５）のように表される。
【００５７】
【数５】
2019046072.tif 000007
【００５８】
したがって、ニューラルネットワークからの出力値ｚｋ（ｋ＝１、２、・・・、ｒ）の誤差を考慮した式は、式（６）のように表される。
ここで、ｕｊ＜０である場合には、出力が０になるため、この式は恒等的に成立する。
【００５９】
【数６】
2019046072.tif 000008
【００６０】
ニューラルネットワークからの出力値ｚｋ（ｋ＝１、２、・・・、ｒ）の誤差の成分（Δｚｋ）のみを抽出すると、式（７）のように表される。
【００６１】
【数７】
2019046072.tif 000009
【００６２】
ここで、パラメーターとしてαおよびβを導入して、式（８）に示される変換を行う。αおよびβは、式（９）に示される条件を満たす一様な確率分布を構成することを想定する。
ニューラルネットワークからの出力値ｚｋ（ｋ＝１、２、・・・、ｒ）の誤差の成分（Δｚｋ）は、式（１０）のように表される。
【００６３】
【数８】
2019046072.tif 000010
【００６４】
【数９】
2019046072.tif 000011
【００６５】
【数１０】
2019046072.tif 000012
【００６６】
ここで、式（１０）の最後の右辺について、項の評価を行うと、すべての積和演算項の要素は同じであり、式（９）を考慮すると、第三項（αとβの両方が含まれる項）は第一項（αが含まれる項）、第二項（βが含まれる項）に比較して小さい。これを考慮すると、式（１１）のように表される。
【００６７】
【数１１】
2019046072.tif 000013
【００６８】
式（１１）により、各層における重みの量子化誤差による出力の変動は、１層目における量子化誤差による影響の総和と２層目における量子化誤差による影響の総和との和として演算されることが示される。これにより、量子化後の誤差（例えば、二乗誤差などでもよい。）を小さくする（好ましくは、最小にする）解を適用することで、出力誤差を小さくすること（好ましくは、最小にすること）が実現されると考えられる。
ここで、識別精度は、例えば、（１／Δｚｋ）の値、あるいは、それに比例などする値で表すことが可能である。
【００６９】
本実施形態では、素子アレイ１２１では、１層目における重みｗ（１）ｊ，ｉについて、それぞれのｊ、ｉの組み合わせごとに１個のニューロモルフィック素子を備える。
同様に、本実施形態では、素子アレイ１２１では、２層目における重みｗ（２）ｋ，ｊについて、それぞれのｋ、ｊの組み合わせごとに１個のニューロモルフィック素子を備える。
なお、共通化することが可能な２個以上の重み演算がある場合には、これら２個以上の重み演算についてニューロモルフィック素子が、１個のニューロモルフィック素子に共通化されてもよい。
【００７０】
２個のパラメーターα、βの値を求める手法について説明する。
一例として、２個のパラメーターα、βの値を様々に変化させて所定の誤差を表す値を演算し、当該誤差を表す値が小さくなる（好ましくは、最小になる）パラメーターα、βの値を求める手法が用いられてもよい。当該手法では、例えば、２個のパラメーターα、βの値を総当たりで変化させてもよい。適切なパラメーターα、βの値が決定されることで、ニューロモルフィック素子に設定すべき適切なダイナミックレンジが決定される。
なお、所定の誤差を表す値が小さくなる（好ましくは、最小になる）という条件の代わりに、所定の識別精度が大きくなる（好ましくは、最大になる）という条件が用いられてもよい。
【００７１】
他の例として、２個のパラメーターα、βの値を解析的に求めるための手法がある場合には、その解析的手法が用いられてもよい。
ここで、２個のパラメーターα、βの値は、例えば、識別対象の数あるいは内容などによって、変わり得る。
【００７２】
一般に、ニューラルネットワークの構成では、入力層は識別対象の画像データの各ピクセルに相当するユニットを有しており、そして、隠れ層、出力層へ行くにしたがって、ユニットの数が少なくなる。
一例として、ｍｎｉｓｔのテストセット（テストのための画像の組み合わせ）の識別において、入力層の次元を７８４個のユニットとし、隠れ層の次元を１００個のユニットとし、出力層の次元を１０個のユニットとすることで、実数演算において９７［％］以上の識別性能を達成することができる。
【００７３】
ニューロモルフィック素子に割り当てられる分解能とダイナミックレンジが決定された場合、量子化誤差に関するパラメーターα、βは、次の２つの要素から発生する。
（要素１）量子化ステップサイズによって発生する純量子化誤差という要素がある。これは、（量子化ステップサイズ／２）に相当する分を最小、最大とする分布である。
（要素２）割り当てられるダイナミックレンジが実数演算値によるレンジよりも狭い場合に、割り当てられるダイナミックレンジを超えた値（実数演算値）に発生する切り捨て誤差という要素がある。
【００７４】
したがって、ニューロモルフィック素子の特性の分解能が固定されている場合、各層における誤差に関する和を小さく（好ましくは、最小に）するように、ニューロモルフィック素子に対して割り当てられるダイナミックレンジを決定することで、出力の誤差を抑制することが可能になると考えられる。
なお、所定の誤差を表す値が小さくなる（好ましくは、最小になる）という条件の代わりに、所定の識別精度が大きくなる（好ましくは、最大になる）という条件が用いられてもよい。
【００７５】
［パラメーターα、βの分布］
図５は、本発明の実施形態に係るパラメーターα、βに関する特性１０１１の一例を示す図である。
図５に示されるグラフでは、横軸にパラメーターａを表し、縦軸に関数Ｐ（ａ）を表わしている。そして、図５の例では、特性１０１１を示してある。特性１０１１は、Ａを所定の正の値として、ａ＝−Ａからａ＝＋Ａまでの間、一定値となる特性である。ここで、ニューラルネットワークにおける重みは正規乱数等で初期化されることが一般的であり、その重みの値が一様に分布すると仮定し、その場合、量子化誤差もまた一様分布であると想定した。なお、この想定は一例であり、本実施形態では、必ずしも量子化誤差の分布形状に依存するものではない。また、特性１０１１は、全体の確率が１となる確率密度関数である。
ここで、（２×Ａ）が量子化ステップサイズであり、｛（２×Ａ）×分解能＝ダイナミックレンジ｝という関係がある。
式（８）より、パラメーターαおよびパラメーターβは重みの真値に対する誤差成分の割合を示すものであるため、パラメーターαおよびパラメーターβをそれぞれ正の値とすると、パラメーターαおよびパラメーターβは、それぞれ、（２×Ａ）／ダイナミックレンジ幅に相当する。つまり、パラメーターαおよびパラメーターβは、それぞれ、量子化ステップサイズに対応する値である。
なお、ここでは、説明の便宜上から、２個のパラメーターα、βについて共通の文字Ａを用いて説明したが、本実施形態では、２個のパラメーターα、βの値を異ならせる。
【００７６】
［ニューロモルフィック素子にダイナミックレンジを割り当てる手順の第１の例］
ニューロモルフィック素子にダイナミックレンジを割り当てる手順の第１の例として、（第１の例における手順１）〜（第１の例における手順８）を示す。なお、同様な結果が得られれば、手順の順序が異なってもよい。
本例（第１の例）では、演算方法の一例として、各層の重みの量子化誤差に基づいて演算する方法を用いる。
本例では、ユーザーがコンピュータを操作することで、当該コンピュータによって以下の手順の処理を行う。なお、ユーザーにより行われる操作の一部または全部が、コンピュータにより自動で行われてもよい。
【００７７】
ここで、本実施形態では、このようなコンピュータは、例えば、ニューラルネットワーク回路１０１に備えられたコンピュータであり、一例として、重み演算制御回路１１２に備えられたコンピュータである。他の例として、このようなコンピュータとして、ニューラルネットワーク回路１０１とは別のコンピュータが用いられてもよい。なお、コンピュータとしては、例えば、マイクロコンピュータなどであってもよい。
また、本例では、このようなコンピュータが所定の実数シミュレーターの機能を有しており、当該実数シミュレーターが（第１の例における手順１）〜（第１の例における手順８）の処理を実行することを想定して説明する。なお、これらの処理は、例えば、実数シミュレーター以外の機能により行われてもよく、それぞれの処理ごとに任意の機能（総じて２以上の異なる機能）により行われてもよい。また、これらの処理は、例えば、それぞれの処理ごとに任意のコンピュータ（総じて２以上の異なるコンピュータ）により行われてもよい。
【００７８】
（第１の例における手順１）ユーザーは、ニューラルネットワークの構造を実数シミュレーターに定義する。ここで、ニューラルネットワークの構造としては、例えば、種別、層の数、層の構造、ユニットの数などがある。また、本例では、実数シミュレーターは、コンピュータを用いて実現され、定義されたニューラルネットワークにおけるシミュレーションの数値演算を、実数を用いて、実行する。
【００７９】
（第１の例における手順２）ユーザーは、実数シミュレーターにより、学習データを用いて、ニューラルネットワークの学習を行い、重みの真値を求める。ここで、重みの真値は、例えば、所定の誤差を表す関数が収束した際における重みの値である。所定の誤差を表す関数としては、任意の関数が用いられてもよい。また、学習データとしては、任意のデータが用いられてもよい。
【００８０】
（第１の例における手順３）ユーザーは、最適解を探索する量子化ステップサイズの範囲を決めて、当該範囲を実数シミュレーターに設定する。具体例として、重みの真値の範囲が−１〜＋１であり、ニューロモルフィック素子の特性の分解能が５である場合、これらの値を使用すると量子化ステップサイズは０．４（＝２／５）となり、例えば、探索範囲を０．０４〜４などに設定する。
【００８１】
（第１の例における手順４）ユーザーは、実数シミュレーターにより、｛（量子化ステップサイズ×分解能）＝（ニューロモルフィック素子に割り当てられる重みのダイナミックレンジ）｝として、重みの真値に対して、分解能で離散化された重みの値を演算する。
【００８２】
（第１の例における手順５）ユーザーは、実数シミュレーターにより、誤差に関する関数を演算する。一例として、誤差に関する関数として、離散化された重みの値と真値との誤差をすべての重みについて加算した結果を全体的な誤差（以下で、誤差総和ともいう。）とする関数が用いられてもよい。他の例として、誤差に関する関数として、離散化された重みの値と真値との誤差の二乗値をすべての重みについて加算した結果を全体的な誤差（以下で、誤差二乗総和ともいう。）とする関数が用いられてもよい。
【００８３】
（第１の例における手順６）ユーザーは、実数シミュレーターにより、誤差に関する関数の値（本実施形態では、誤差総和あるいは誤差二乗総和）が最小になる量子化ステップサイズの値を決定する。ここで、量子化ステップサイズの値を決定する手法としては、例えば、複数の値の候補のなかから１つの値を選択することで、当該値を決定する手法が用いられてもよい。
【００８４】
なお、本例では、好ましい態様の一例として、誤差の値（誤差に関する関数の値）が最小になる量子化ステップサイズの値を決定する態様が用いられるが、他の例として、所定の条件に基づいて、誤差の値（誤差に関する関数の値）が小さくなる量子化ステップサイズの値を決定する態様が用いられてもよい。所定の条件としては、任意の条件が用いられてもよく、例えば、誤差の値（誤差に関する関数の値）が所定の閾値以下となる（または、所定の閾値未満となる）条件が用いられてもよい。
【００８５】
（第１の例における手順７）ユーザーは、実数シミュレーターにより、決定された量子化ステップサイズの値を採用して、｛（量子化ステップサイズ×分解能）＝（ニューロモルフィック素子に割り当てられる重みのダイナミックレンジ）｝として、ニューロモルフィック素子にダイナミックレンジを割り当てる。具体例として、量子化ステップサイズが０．２５であり、分解能が５である場合、ダイナミックレンジは１．２５（＝０．２５×５）となる。
【００８６】
（第１の例における手順８）ユーザーは、実数シミュレーターにより、ニューロモルフィック素子に割り当てられたダイナミックレンジを、０を中心とする範囲（下限値Ｗｍｉｎ〜上限値Ｗｍａｘ）へ変換する。ここで、当該範囲は０を中心とするため、｜Ｗｍｉｎ｜＝｜Ｗｍａｘ｜である。Ｚを任意の値として、｜Ｚ｜はＺの絶対値を表す。また、ユーザーは、実数シミュレーターにより、ニューロモルフィック素子のコンダクタンスの値として、ダイナミックレンジの範囲の下限値Ｗｍｉｎに対応するコンダクタンスの値Ｇｍｉｎを設定するとともに、ダイナミックレンジの範囲の上限値Ｗｍａｘに対応するコンダクタンスの値Ｇｍａｘを設定する。
【００８７】
［ニューロモルフィック素子にダイナミックレンジを割り当てる手順の第２の例］
ニューロモルフィック素子にダイナミックレンジを割り当てる手順の第２の例として、（第２の例における手順１）〜（第２の例における手順５）を示す。なお、同様な結果が得られれば、手順の順序が異なってもよい。
本例（第２の例）では、演算方法の他の例として、識別精度を用いて演算する方法を用いる。なお、別の例として、最終段の出力について誤差の総和あるいは誤差の二乗の総和を用いて演算する方法が用いられてもよい。
本例では、ユーザーがコンピュータを操作することで、当該コンピュータによって以下の手順の処理を行う。なお、ユーザーにより行われる操作の一部または全部が、コンピュータにより自動で行われてもよい。
【００８８】
ここで、本実施形態では、このようなコンピュータは、例えば、ニューラルネットワーク回路１０１に備えられたコンピュータであり、一例として、重み演算制御回路１１２に備えられたコンピュータである。他の例として、このようなコンピュータとして、ニューラルネットワーク回路１０１とは別のコンピュータが用いられてもよい。
また、本例では、このようなコンピュータが所定の実数シミュレーターの機能を有しており、当該実数シミュレーターが（第２の例における手順１）〜（第２の例における手順５）の処理を実行することを想定して説明する。なお、これらの処理は、例えば、実数シミュレーター以外の機能により行われてもよく、それぞれの処理ごとに任意の機能（総じて２以上の異なる機能）により行われてもよい。また、これらの処理は、例えば、それぞれの処理ごとに任意のコンピュータ（総じて２以上の異なるコンピュータ）により行われてもよい。
【００８９】
（第２の例における手順１）は、（第１の例における手順１）と同様である。
（第２の例における手順２）は、（第１の例における手順２）と同様である。
【００９０】
（第２の例における手順３）ユーザーは、実数シミュレーターにより、重みの真値を用いて構成されたニューラルネットワークにデータを入力し、当該ニューラルネットワークからの出力（量子化されていない場合の出力）を演算する。
【００９１】
（第２の例における手順４）ユーザーは、実数シミュレーターにより、重みの真値を使用して、パラメーターα、βを用いた出力を表す関数にデータを入力し、当該出力（量子化された場合の出力）を演算する。当該出力は、例えば、式（６）にパラメーターα、βを導入した式の出力（識別クラスの数ｒの出力値ｚｋ）となる。
【００９２】
（第２の例における手順５）ユーザーは、実数シミュレーターにより、（第２の例における手順３）で求められる出力の値と（第２の例における手順４）で求められる出力の値との誤差に関する値が小さくなる（好ましくは、最小になる）量子化ステップサイズを決定する。誤差に関する値としては、例えば、最終段の出力について誤差の総和あるいは誤差の二乗の総和が用いられてもよい。また、量子化ステップサイズの値を決定する手法としては、例えば、複数の値の候補のなかから１つの値を選択することで、当該値を決定する手法が用いられてもよい。
ここで、他の例として、誤差に関する値として、式（１１）に示されるΔｚｋが用いられてもよい。
【００９３】
また、他の例として、上記した（第２の例における手順５）において、ユーザーは、実数シミュレーターにより、量子化された場合における識別精度が大きくなる（好ましくは、最大になる）量子化ステップサイズを決定してもよい。
【００９４】
なお、誤差に関する値が小さくなる条件としては、例えば、誤差に関する値が所定の閾値以下となる（または、所定の閾値未満となる）条件が用いられてもよい。
また、識別精度が大きくなる条件としては、例えば、識別精度が所定の閾値以上となる（または、所定の閾値を超える）条件が用いられてもよい。
【００９５】
［誤差を用いた条件と、識別精度を用いた条件］
誤差を用いた条件が設定されたシミュレーションの結果の例と、識別精度を用いた条件が設定されたシミュレーションの結果の例を示す。
誤差を用いた条件が設定されたシミュレーションとして、誤差の二乗の総和が最小となるダイナミックレンジを探索するシミュレーションを行った。その結果、１層目における最適なダイナミックレンジは０．４２となり、２層目における最適なダイナミックレンジは０．９６となり、識別精度は９５．６４［％］となった。
一方、識別精度を用いた条件が設定されたシミュレーションとして、識別精度が最大となるダイナミックレンジを探索するシミュレーションを行った。その結果、１層目における最適なダイナミックレンジは０．４２となり、２層目における最適なダイナミックレンジは０．９６となり、識別精度は９５．６４［％］となった。
ここで、両者は一致した。このため、誤差を用いた条件が満たされるダイナミックレンジを採用することで、良好な識別精度が実現されることが推測される。
【００９６】
［ニューロモルフィック素子に対するダイナミックレンジの割り当ての具体例］
図６は、本発明の実施形態に係る重みの学習の結果の一例を示す図である。
図６に示されるグラフにおいて、横軸は学習サイクル（本実施形態では、エポックの回数）を表わしており、縦軸は重みの値を表わしている。
なお、エポックは、トレーニング用の１個の識別対象（例えば、１枚の画像）についてニューラルネットワークの誤差を最小にする処理の単位を表す。
【００９７】
図６の例では、実数を用いたシミュレーションにより取得された真値の特性として、１層目における重みの最大値の特性１１１１と、１層目における重みの最小値の特性１１１２と、２層目における重みの最大値の特性１１２１と、２層目における重みの最小値の特性１１２２を示してある。
また、図６の例では、１層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−０．５以上で＋０．５以下の範囲」に設定しており、２層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−１．０以上で＋１．０以下の範囲」に設定している。図６の例では、１層目におけるニューロモルフィック素子に設定するダイナミックレンジに相当する範囲１１３１と、２層目におけるニューロモルフィック素子に設定するダイナミックレンジに相当する範囲１１３２を示してある。
【００９８】
図７は、本発明の実施形態に係るニューロモルフィック素子に設定されるダイナミックレンジに応じた識別精度の一例を示す図である。
図７に示されるグラフにおいて、２種類の横軸のうち、一方の軸は１層目におけるニューロモルフィック素子に設定されるダイナミックレンジ（１層目のレンジ）を表わしており、他方の軸は２層目におけるニューロモルフィック素子に設定されるダイナミックレンジ（２層目のレンジ）を表わしている。また、縦軸は、このようなダイナミックレンジの設定により得られる識別精度［％］を表わしている。
図７の例では、これら三者の関係を表す特性１２１１を示してあり、識別精度が最大となる位置に矢印１２２１（なお、図７の例では、矢印１２２１は縦軸と平行ではない。）を示してある。
図７の例では、識別精度が最大となる位置で、１層目のダイナミックレンジが「−０．４２以上で＋０．４２以下の範囲」であり、２層目のダイナミックレンジが「−０．９６以上で＋０．９６以下の範囲」であり、識別精度が「９５．６４［％］」である。
【００９９】
次に、図８〜図１１を参照して、複数の層のそれぞれごとにダイナミックレンジが異なる場合にニューラルネットワーク回路の性能が良好になることを説明する。
まず、図８および図９について説明する。
図８および図９の例では、ニューロモルフィック素子の特性の分解能が１００ステップである場合を想定している。
図８は、すべての層（本実施形態では、１層目〜２層目）について同じダイナミックレンジをニューロモルフィック素子に設定した場合における結果の一例を示す図である。
図９は、本発明の実施形態に係る各層（本実施形態では、１層目、２層目）について異なるダイナミックレンジをニューロモルフィック素子に設定した場合における結果の一例を示す図である。
図８および図９に示されるグラフにおいて、横軸は学習サイクル（本実施形態では、エポックの回数）を表わしており、縦軸は重みの値を表わしている。
【０１００】
図８の例では、１層目および２層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−２．０以上で＋２．０以下の範囲」に設定している。
図８の例では、ニューロモルフィック素子を含むニューラルネットワークの回路の学習について、１層目における重みの最大値の特性１３１１と、１層目における重みの最小値の特性１３１２と、１層目における重みの平均値の特性１３１３と、２層目における重みの最大値の特性１３２１と、２層目における重みの最小値の特性１３２２と、２層目における重みの平均値の特性１３２３を示してある。
図８の例では、識別精度は「９２．６［％］」である。
【０１０１】
図９の例では、１層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−１．０以上で＋１．０以下の範囲」に設定しており、２層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−２．０以上で＋２．０以下の範囲」に設定している。
図９の例では、ニューロモルフィック素子を含むニューラルネットワークの回路の学習について、１層目における重みの最大値の特性１４１１と、１層目における重みの最小値の特性１４１２と、１層目における重みの平均値の特性１４１３と、２層目における重みの最大値の特性１４２１と、２層目における重みの最小値の特性１４２２と、２層目における重みの平均値の特性１４２３を示してある。
図９の例では、識別精度は「９６．６［％］」である。
【０１０２】
続いて、図１０および図１１について説明する。
図１０および図１１の例では、ニューロモルフィック素子の特性の分解能が５０ステップである場合を想定している。
図１０は、すべての層（本実施形態では、１層目〜２層目）について同じダイナミックレンジをニューロモルフィック素子に設定した場合における結果の他の例を示す図である。
図１１は、本発明の実施形態に係る各層（本実施形態では、１層目、２層目）について異なるダイナミックレンジをニューロモルフィック素子に設定した場合における結果の他の例を示す図である。
図１０および図１１に示されるグラフにおいて、横軸は学習サイクル（本実施形態では、エポックの回数）を表わしており、縦軸は重みの値を表わしている。
【０１０３】
図１０の例では、１層目および２層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−２．０以上で＋２．０以下の範囲」に設定している。
図１０の例では、ニューロモルフィック素子を含むニューラルネットワークの回路の学習について、１層目における重みの最大値の特性１５１１と、１層目における重みの最小値の特性１５１２と、１層目における重みの平均値の特性１５１３と、２層目における重みの最大値の特性１５２１と、２層目における重みの最小値の特性１５２２と、２層目における重みの平均値の特性１５２３を示してある。
図１０の例では、識別精度は「６５．３［％］」である。
【０１０４】
図１１の例では、１層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−１．０以上で＋１．０以下の範囲」に設定しており、２層目におけるニューロモルフィック素子に設定するダイナミックレンジを「−２．０以上で＋２．０以下の範囲」に設定している。
図１１の例では、ニューロモルフィック素子を含むニューラルネットワークの回路の学習について、１層目における重みの最大値の特性１６１１と、１層目における重みの最小値の特性１６１２と、１層目における重みの平均値の特性１６１３と、２層目における重みの最大値の特性１６２１と、２層目における重みの最小値の特性１６２２と、２層目における重みの平均値の特性１６２３を示してある。
図１１の例では、識別精度は「９０．８［％］」である。
【０１０５】
ここで、図８〜図１１は、シミュレーションの結果を示すものであるが、当該シミュレーションの条件の都合により、１回分の重み更新が余計に発生している。このため、図８〜図１１の例では、設定されたダイナミックレンジ（本例では、「−２．０以上で＋２．０以下の範囲」あるいは「−１．０以上で＋１．０以下の範囲」）の外側に特性がはみ出しているところがあるが、これは単にシミュレーションの事情によるもので、正確な値を示唆するものではない。このように本シミュレーションの結果では、一部で正確な値ではないところもあるが、全体としては特性の傾向を表わしている。
ここで、図８〜図１１の例に示されるように、すべての層（本実施形態では、１層目〜２層目）について同じダイナミックレンジをニューロモルフィック素子に設定した場合と比べて、各層（本実施形態では、１層目、２層目）について異なるダイナミックレンジをニューロモルフィック素子に設定した場合の方が識別性能が良好になることが生じ得る。
【０１０６】
［ダイナミックレンジのオフセット量］
上記では、ニューロモルフィック素子に設定されるダイナミックレンジが「−Ｂ以上で＋Ｂ以下の範囲」（Ｂは任意の正の値であるとする。）であり、当該ダイナミックレンジの中央値が０である場合を示した。この場合におけるダイナミックレンジのオフセット量を０とする。
【０１０７】
これに対して、ニューロモルフィック素子に設定されるダイナミックレンジについて、オフセット量が設定されてもよい。この場合、ダイナミックレンジの中央値が０からオフセット量だけずれる。
なお、本実施形態では、オフセット量の大きさにかかわらず、ダイナミックレンジの幅は一定であるとする。
【０１０８】
例えば、オフセット量が０である場合にダイナミックレンジが「−Ｂ以上で＋Ｂ以下の範囲」であるとき、オフセット量が０ではないＣ（Ｃは正の値または負の値）である場合には、ダイナミックレンジは「（−Ｂ＋Ｃ）以上で（＋Ｂ＋Ｃ）以下の範囲」となる。
ダイナミックレンジのオフセット量が０であるときと比べて、ダイナミックレンジのオフセット量が０ではないときの方が、識別精度が高くなる場合が生じ得る。
【０１０９】
図１２は、本発明の実施形態に係るニューロモルフィック素子に設定されるダイナミックレンジのオフセット量に応じた識別精度の一例を示す図である。
図１２に示されるグラフにおいて、２種類の横軸のうち、一方の軸は１層目におけるニューロモルフィック素子に設定されるダイナミックレンジのオフセット量（１層目のオフセット量）を表わしており、他方の軸は２層目におけるニューロモルフィック素子に設定されるダイナミックレンジのオフセット量（２層目のオフセット量）を表わしている。また、縦軸は、このようなオフセット量の設定により得られる識別精度［％］を表わしている。
図１２の例では、これら三者の関係を表す特性１７１１を示してあり、識別精度が最大となる位置に矢印１７２１（なお、図１２の例では、矢印１７２１は縦軸と平行ではない。）を示してある。
図１２の例では、識別精度が最大となる位置で、１層目のオフセット量が「０．００３８」であり、２層目のオフセット量が「０．１１９６」であり、識別精度が「８７．９８［％］」である。
【０１１０】
ここで、本実施形態では、コンピュータにより、ニューロモルフィック素子に設定されるダイナミックレンジのオフセット量を演算する。このようなオフセット量を演算する機能は、例えば、実数シミュレーターにより実現される機能であってもよい。なお、このようなコンピュータは、例えば、ニューラルネットワーク回路１０１（例えば、重み演算制御回路１１２）に備えられるコンピュータであってもよく、あるいは、他のコンピュータであってもよい。
【０１１１】
本実施形態では、コンピュータにより、素子アレイ１２１に含まれるニューロモルフィック素子の特性の分解能よりも高い精度で、素子アレイ１２１により実現されるニューラルネットワークにおける重みの値（真値）を演算した結果に基づいて、当該重みの値（真値）の平均値と一致する値をオフセット量として設定する。
他の例として、コンピュータにより、各層におけるダイナミックレンジのオフセット量を様々に変化させて所定の誤差を表す値を演算し、当該誤差を表す値が小さくなる（好ましくは、最小になる）オフセット量を求める手法が用いられてもよい。なお、誤差を表す値が小さくなる（好ましくは、最小になる）オフセット量の代わりに、識別精度が大きくなる（好ましくは、最大になる）オフセット量が求められてもよい。
【０１１２】
［事後学習］
ニューラルネットワーク回路１０１では、素子アレイ１２１に含まれるニューロモルフィック素子について、ダイナミックレンジが割り当てられた後に、事後学習を行うことで、重みのチューニングを行ってもよい。
ここで、チューニングを行う手法としては、任意の手法が用いられてもよい。
【０１１３】
［情報の記憶］
ニューラルネットワーク回路１０１では、素子アレイ１２１に含まれるニューロモルフィック素子について、割り当てられたダイナミックレンジ（ダイナミックレンジの幅、オフセット量）、量子化ステップサイズ、分解能、各ニューロモルフィック素子に設定されたステップ番号などの情報を記憶部（記憶部２４に相当するメモリなど）に記憶してもよい。
【０１１４】
［複数のニューロモルフィック素子に対するダイナミックレンジの設定］
素子アレイ１２１では、例えば、複数の層があり、それぞれの層ごとに複数（複数のユニット）のニューロモルフィック素子を備える。
一例として、複数の層を有するニューラルネットワークに含まれるニューロモルフィック素子について、それぞれの層ごとに、共通の離散化ステップサイズを使用して、共通のダイナミックレンジ（例えば、ダイナミックレンジの幅、オフセット量）が求められて設定されてもよい。
他の例として、それぞれの層ごとに含まれる複数のニューロモルフィック素子を２個以上のグループに分けて、それぞれのグループごとに、共通の離散化ステップサイズを使用して、共通のダイナミックレンジ（例えば、ダイナミックレンジの幅、オフセット量）が求められて設定されてもよい。この場合、同一の層において、当該層に含まれる複数のニューロモルフィック素子が２個以上のグループにグループ分けされる。これにより、例えば、それぞれのユニットの重要度（寄与度）などに応じて、異なるダイナミックレンジを設定することが可能である。
他の例として、それぞれのニューロモルフィック素子ごとに、任意の異なり得る離散化ステップサイズを使用して、任意の異なり得るダイナミックレンジ（例えば、ダイナミックレンジの幅、オフセット量）が求められて設定されてもよい。これにより、例えば、それぞれのニューロモルフィック素子の重要度（寄与度）などに応じて、異なるダイナミックレンジを設定することが可能である。
【０１１５】
［ニューラルネットワーク回路において行われる処理の手順の一例］
図１３は、本発明の実施形態に係るニューラルネットワーク回路１０１において行われる処理の手順の一例を示す図である。
【０１１６】
（ステップＳ１）
コンピュータにより、素子アレイ１２１に含まれるニューロモルフィック素子の特性の分解能よりも高い精度で、素子アレイ１２１により実現されるニューラルネットワークにおける重みの値（真値）を演算する。
【０１１７】
（ステップＳ２）
コンピュータにより、素子アレイ１２１に含まれるニューロモルフィック素子の特性の分解能を想定した演算を行う。これにより、例えば、コンピュータにより、素子アレイ１２１に含まれるニューロモルフィック素子の特性の分解能を想定した場合について、誤差に関する関数、あるいは、識別精度に関する関数を演算する。
【０１１８】
（ステップＳ３）
コンピュータにより、素子アレイ１２１に含まれるニューロモルフィック素子について、所定の条件を満たす量子化ステップサイズを演算する。当該所定の条件としては、例えば、誤差に関する条件、あるいは、識別精度に関する条件のうちの一方または両方が用いられてもよい。
【０１１９】
（ステップＳ４）
コンピュータにより、素子アレイ１２１に含まれるニューロモルフィック素子について、ダイナミックレンジのオフセット量を演算する。
ここで、あらかじめオフセット量が所定値（例えば、０）に設定されている場合には、ステップＳ４の処理は省略されてもよい。
【０１２０】
（ステップＳ５）
コンピュータにより、重みのダイナミックレンジを演算する。この場合、例えば、分解能、量子化ステップサイズおよびオフセット量に基づいて、ダイナミックレンジが演算される。
【０１２１】
（ステップＳ６）
演算されたダイナミックレンジがニューラルネットワーク回路１０１に設定される。そして、ニューラルネットワーク回路１０１により、素子アレイ１２１により実現されるニューラルネットワークについて、所定の事後学習を行う。
なお、事後学習が不要である場合には、ステップＳ６の処理は省略されてもよい。
【０１２２】
ここで、ニューラルネットワーク回路１０１とは別のコンピュータによりダイナミックレンジの演算結果が得られる場合には、ユーザーまたは当該コンピュータなどにより、演算されたダイナミックレンジがニューラルネットワーク回路１０１に設定される。この場合、例えば、オフチップラーニング（Ｏｆｆ  Ｃｈｉｐ  Ｌｅａｒｎｉｎｇ）が行われてもよく、つまり、ニューラルネットワーク回路１０１とは別に設けられた実数等の高精度計算機（コンピュータ）により学習などの演算が実行されて、その演算の結果がニューラルネットワーク回路１０１に設定されてもよい。
【０１２３】
［実施形態のまとめ］
以上のように、本実施形態に係るニューラルネットワークシステム１では、分解能が有限であるニューロモルフィック素子により重み（結合重み）を実現する構成において、当該分解能より高い精度で実数シミュレーターなどにより求められた結合重みの真値を用いた場合と、当該ニューロモルフィック素子の特性に設定する離散化ステップサイズを用いた場合に基づいて、適した離散化ステップサイズが決定される。また、決定された離散化ステップサイズと、当該分解能に基づいて、ダイナミックレンジ（ダイナミックレンジの幅）が決定される。また、ダイナミックレンジのオフセット量（０、または、０以外の値）に基づいて、ダイナミックレンジ（ダイナミックレンジの幅およびオフセット量であり、上限値と下限値）が決定される。
【０１２４】
そして、本実施形態に係るニューラルネットワークシステム１では、決定されたダイナミックレンジ（上限値と下限値）に基づいて、ニューロモルフィック素子の特性（本実施形態では、コンダクタンス）の値を制御する。当該ニューロモルフィック素子では、当該ニューロモルフィック素子の特性の範囲（本実施形態では、コンダクタンスの上限値と下限値の間の範囲）において、制御された特性の値に応じた重みを信号に与える。これにより、素子アレイ部１２（素子アレイ１２１）では、当該素子アレイ部１２により構成されるニューラルネットワークの処理（例えば、入力される識別対象を識別する処理）が実現される。
【０１２５】
本実施形態に係るニューラルネットワークシステム１では、ニューラルネットワークにおける積和演算にニューロモルフィック素子を使用する場合に、結果の精度を向上させることができる。
【０１２６】
例えば、ニューロモルフィック素子を用いてニューラルネットワークが実現される場合、学習で得られた結合重みを規格化してニューロモルフィック素子の出力レンジ（ダイナミックレンジ）に割り当てることが想定される。その際、ニューロモルフィック素子の特性の変化はステップ状であるため、量子化誤差が発生する。
また、例えば、ニューラルネットワークにおける重みの更新に使用される誤差逆伝搬法では、重みの更新量は入力データあるいは教師データの絶対値に依存し、層ごとに重みの取り得るダイナミックレンジが異なる。さらに、重みの更新量は、重みの更新に使用されるアルゴリズムに依存する。
そこで、本実施形態に係るニューラルネットワークシステム１では、量子化誤差がニューラルネットワークの識別性能に与える影響を考慮し、ニューロモルフィック素子に割り当てる重みの値を適切に設定する。これにより、本実施形態に係るニューラルネットワークシステム１では、ニューロモルフィック素子を用いたニューラルネットワークにおける識別性能の低下を抑制することができる。
【０１２７】
ここで、実数を用いたシミュレーションなどによる演算結果で得られるダイナミックレンジよりも狭いダイナミックレンジをニューロモルフィック素子に設定しても、当該ニューロモルフィック素子を用いたニューラルネットワークにおける識別精度が改善し得る。
【０１２８】
また、本実施形態に係るニューラルネットワークシステム１では、多層のニューラルネットワークにおいて、入力に近い層（本実施形態では、入力層から隠れ層の出力までの１層目）に対して、それよりも後段の層（本実施形態では、隠れ層の出力から出力層の出力までの２層目）と比べて、小さい（狭い）ダイナミックレンジを設定する。本実施形態では、ユニット数が大きい入力層の側の精度の方が後段の層と比べて重要であると考えられるため、入力層の側では量子化ステップサイズが小さくなるように（つまり、高演算精度に）設定する。
【０１２９】
ここで、本実施形態では、ニューラルネットワークにより識別する対象（識別対象）として、数字の画像のデータが用いられたが、識別対象としては任意のデータが用いられてもよい。
また、ニューラルネットワークとしては、任意の種類のニューラルネットワークが用いられてもよく、例えば、全結合型のニューラルネットワーク、畳み込みニューラルネットワーク、あるいは、再帰型ニューラルネットワークなどが用いられてもよい。
【０１３０】
また、本実施形態では、ニューラルネットワークを実現するための積和演算で使用されるニューロモルフィック素子のダイナミックレンジを設定する場合について説明したが、本実施形態と同様な構成はニューラルネットワーク以外の分野に適用されてもよい。
例えば、任意の分野における積和演算を行うアレイ（積和演算アレイ）、あるいは、任意の分野における積和演算を含むアナログ演算器などに、本実施形態と同様な構成が適用されてもよい。
また、アレイに備えられるニューロモルフィック素子の分解能としては、様々な分解能が用いられてもよい。例えば、アレイがニューロモルフィック素子を含む複数の層を有する場合に、それぞれの層ごとに共通の分解能（同じ分解能）を有するニューロモルフィック素子を備えてもよい。また、このような場合に、異なる層におけるニューロモルフィック素子の分解能は異なる、構成が用いられてもよい。つまり、同一の層に含まれる複数のニューロモルフィック素子の分解能が同じである構成が用いられてもよく、また、ニューロモルフィック素子が含まれる層が異なると分解能も異なる構成が用いられてもよく、また、これら両方の構成が用いられてもよい。
【０１３１】
なお、以上に示した実施形態に係る各装置（例えば、制御装置１１）の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体（記憶媒体）に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。
なお、ここでいう「コンピュータシステム」とは、オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）あるいは周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また、記録媒体としては、例えば、一時的にデータを記録する記録媒体であってもよい。
【０１３２】
さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバあるいはクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）あるいは電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【０１３３】
＜構成例＞
一構成例として、可変な特性（例えば、コンダクタンスなど）の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイ（本実施形態では、素子アレイ１２１）の制御装置（本実施形態では、制御装置１１）であって、ニューロモルフィック素子の特性の分解能よりも高い精度で求められた重みの真値（本実施形態では、実数シミュレーターにより演算された真値）を用いた場合とニューロモルフィック素子の特性について設定される離散化ステップサイズ（本実施形態では、離散化ステップサイズに対応するパラメーターα、β）を用いた場合に基づいて所定の条件（誤差を小さくする所定の条件、あるいは、精度を大きくする所定の条件）が満たされるように求められた離散化ステップサイズを使用して、ニューロモルフィック素子の特性を制御する制御部（本実施形態では、制御装置１１の機能であり、例えば、重み割り当て制御部２３）を備える、制御装置である。
一構成例として、制御装置において、制御部は、離散化ステップサイズと分解能と所定のオフセット量に応じたニューロモルフィック素子のダイナミックレンジを使用して、ニューロモルフィック素子の特性を制御する。
一構成例として、制御装置において、制御部は、アレイがニューロモルフィック素子を含む複数の層を有する場合に、それぞれの層ごとに共通の離散化ステップサイズを使用して、ニューロモルフィック素子の特性を制御する。
一構成例として、制御装置において、制御部は、アレイが複数のニューロモルフィック素子を含む層を有する場合に、同一の層に含まれる複数のニューロモルフィック素子がグループ分けされたグループごとに共通の離散化ステップサイズを使用して、ニューロモルフィック素子の特性を制御する。
一構成例として、制御装置において、アレイがニューロモルフィック素子を含む複数の層を有しており、それぞれの層ごとに共通の分解能を有するニューロモルフィック素子を備え、異なる層におけるニューロモルフィック素子の分解能は異なる。
一構成例として、制御装置において、制御部（本実施形態では、制御装置１１の機能であり、例えば、識別制御部２１、重み演算制御部２２および重み割り当て制御部２３）は、離散化ステップサイズを使用して、アレイについて学習を行う。
一構成例として、制御装置において、アレイは、ニューロモルフィック素子を用いてニューラルネットワークにおける積和演算を行う回路を有する。
【０１３４】
一構成例として、可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイについて、ニューロモルフィック素子の特性の離散化ステップサイズを演算する演算方法（例えば、制御装置１１の重み演算制御部２２あるいは他のコンピュータにより行われる演算の方法）であって、ニューロモルフィック素子の特性の分解能よりも高い精度で重みの真値を演算するステップと、重みの真値を用いた場合とニューロモルフィック素子の特性について設定される離散化ステップサイズを用いた場合に基づいて、所定の条件（誤差を小さくする所定の条件、あるいは、精度を大きくする所定の条件）が満たされるように、離散化ステップサイズを演算するステップと、を備える、離散化ステップサイズの演算方法である。
【０１３５】
一構成例として、可変な特性の値に応じた重みを信号に乗算するニューロモルフィック素子を含むアレイについて、ニューロモルフィック素子の特性の離散化ステップサイズを演算するプログラム（例えば、制御装置１１の重み演算制御部２２を構成するコンピュータあるいは他のコンピュータにおいて実行されるプログラム）であって、ニューロモルフィック素子の特性の分解能よりも高い精度で重みの真値を演算するステップと、重みの真値を用いた場合とニューロモルフィック素子の特性について設定される離散化ステップサイズを用いた場合に基づいて、所定の条件（誤差を小さくする所定の条件、あるいは、精度を大きくする所定の条件）が満たされるように、離散化ステップサイズを演算するステップと、をコンピュータに実行させるためのプログラムである。
ここで、コンピュータでは、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのプロセッサがメモリに記憶されたプログラムを読み出して実行する。
【０１３６】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１３７】
１…ニューラルネットワークシステム、１１…制御装置、１２…素子アレイ部、２１…識別制御部、２２…重み演算制御部、２３…重み割り当て制御部、２４…記憶部、１０１…ニューラルネットワーク回路、１１１…識別用制御回路、１１２…重み演算制御回路、１１３…重み割り当て制御回路、１２１…素子アレイ、１２２、１２３…入出力ＩＦ回路、２１１…画像（画像のデータ）、１０１１、１１１１〜１１１３、１１２１〜１１２３、１２１１、１３１１〜１３１３、１３２１〜１３２３、１４１１〜１４１３、１４２１〜１４２３、１５１１〜１５１３、１５２１〜１５２３、１６１１〜１６１３、１６２１〜１６２３、１７１１…特性、１１３１、１１３２…範囲、１２２１、１７２１…矢印、Ａ１−０〜Ａ１−ｐ、Ａ１−ｉ、Ａ２−０〜Ａ２−ｑ、Ａ２−ｊ、Ａ３−１〜Ａ３−ｒ、Ａ３−ｋ…ユニット、Ｂ１−１〜Ｂ１−ｎ、Ｂ２−１〜Ｂ２−ｎ、Ｂ０−１〜Ｂ０−ｎ…画像
【図１】
2019046072.tif 000014
【図２】
2019046072.tif 000015
【図３】
2019046072.tif 000016
【図４】
2019046072.tif 000017
【図５】
2019046072.tif 000018
【図６】
2019046072.tif 000019
【図７】
2019046072.tif 000020
【図８】
2019046072.tif 000021
【図９】
2019046072.tif 000022
【図１０】
2019046072.tif 000023
【図１１】
2019046072.tif 000024
【図１２】
2019046072.tif 000025
【図１３】
2019046072.tif 000026