(57)【特許請求の範囲】
【請求項１】
複数の入力デジタル値から構成される入力データを識別する識別装置であって、
縦続接続され、そのそれぞれが複数の演算装置を有する複数の演算層を備え、
初段の演算層における前記複数の演算装置のそれぞれは、前記複数の入力デジタル値と、そのそれぞれに対応する予め定められた重み係数と、からデジタル値を生成し、
２段目以降の演算層における前記複数の演算装置のそれぞれは、前段の演算層における前記複数の演算装置により生成された複数のデジタル値と、そのそれぞれに対応する予め定められた重み係数と、から新たなデジタル値を生成し、
最終段の演算層における前記複数の演算装置が生成するデジタル値が、識別結果を示し、
前記複数の演算装置の少なくとも１つは、
縦続接続された複数のデジタル時間変換回路であって、そのそれぞれは、入力されるデジタル値およびこのデジタル値に対応する前記重み係数に応じた時間だけ、第１の時間信号を遅延させて第２の時間信号を生成し、前記第２の時間信号は前記第１の時間信号として次段のデジタル時間変換回路に入力される、デジタル時間変換回路と、
最終段の前記デジタル時間変換回路から出力される前記第２の時間信号と、所定の時間閾値信号とを比較して、デジタル信号を生成する時間デジタル変換回路と、を有する、識別装置。
【請求項２】
複数の演算装置を用いたニューラルネットワークにより入力データを識別する識別装置であって、
前記複数の演算装置の少なくとも１つは、
縦続接続された複数のデジタル時間変換回路であって、そのそれぞれは、入力されるデジタル値およびこのデジタル値に対応する重み係数に応じた時間だけ、第１の時間信号を遅延させて第２の時間信号を生成し、前記第２の時間信号は前記第１の時間信号として次段のデジタル時間変換回路に入力される、デジタル時間変換回路と、
最終段の前記デジタル時間変換回路から出力される前記第２の時間信号と、所定の時間閾値信号とを比較して、デジタル信号を生成する時間デジタル変換回路と、を有する、識別装置。
【請求項３】
前記デジタル時間変換回路は、前記重み係数に応じた時間だけ、信号を遅延させる遅延回路を有する、請求項１または２に記載の識別装置。
【請求項４】
前記遅延回路は、縦続接続される複数の遅延素子を有する、請求項３に記載の識別装置。
【請求項５】
前記遅延回路は、供給される電源電圧に応じた時間だけ、入力信号を遅延させる遅延素子を有する、請求項３に記載の識別装置。
【請求項６】
前記遅延回路は、
可変抵抗素子と、
この可変抵抗素子の抵抗値に応じた時間だけ、入力信号を遅延させる遅延素子と、を有する、請求項３に記載の識別装置。
【請求項７】
前記遅延素子は、ｐＭＯＳトランジスタおよびｎＭＯＳトランジスタを有し、
前記可変抵抗素子は、前記ｐＭＯＳトランジスタのソース端子と電源電圧との間、および、前記ｎＭＯＳトランジスタのソース端子とグラウンドとの間、の少なくとも一方に挿入される、請求項６に記載の識別装置。
【請求項８】
前記可変抵抗素子は、
デジタル値である前記重み係数をアナログ電圧に変換するＤＡコンバータと、
前記アナログ電圧が制御端子に供給され、そのアナログ電圧値に応じて抵抗値が変化するトランジスタと、を有する、請求項６または７に記載の識別装置。
【請求項９】
前記可変抵抗素子は、前記重み係数を記憶した抵抗可変型不揮発性記憶素子である、請求項６または７に記載の識別装置。
【請求項１０】
前記抵抗可変型不揮発性記憶素子は、前記重み係数に応じた閾値電圧を有し、前記閾値電圧に応じて抵抗値が変化する、請求項８に記載の識別装置。
【請求項１１】
前記遅延回路は、
可変容量と、
この可変容量素子の容量値に応じた時間だけ、入力信号を遅延させる遅延素子と、を有する、請求項３に記載の識別装置。
【請求項１２】
前記可変容量は、容量変化型不揮発性記憶素子である、請求項１１に記載の識別装置。
【請求項１３】
前記重み係数が書き換え可能である、請求項１または２に記載の識別装置。
【請求項１４】
ニューラルネットワークにより入力データを識別する識別装置に用いられる演算装置であって、
縦続接続された複数のデジタル時間変換回路であって、そのそれぞれは、入力されるデジタル値およびこのデジタル値に対応する重み係数に応じた時間だけ、第１の時間信号を遅延させて第２の時間信号を生成し、前記第２の時間信号は前記第１の時間信号として次段のデジタル時間変換回路に入力される、デジタル時間変換回路と、
最終段の前記デジタル時間変換回路から出力される前記第２の時間信号と、所定の時間閾値信号とを比較して、デジタル信号を生成する時間デジタル変換回路と、演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、識別装置および演算装置に関する。
【背景技術】
【０００２】
ニューラルネットワークは、脳のニューロンおよびシナプスを模して考えられたモデルであり、学習および識別の２段階の処理により構成される。学習段階では、多数の入力からその特徴を学習し、識別処理のためのニューラルネットワークを構築する。識別段階では、ニューラルネットワークを用いて新たな入力が何であるかを識別する。
【０００３】
近年では、学習段階の技術が大きく発展しており、例えばディープラーニングにより、高い表現力を持った多層ニューラルネットワークを構築できるようになりつつある。
【０００４】
一方、識別段階の処理をソフトウェアで実装すると、処理に時間がかかったり消費電力が高くなったりするおそれがある。そこで、識別段階の処理をハードウェアで行うことも考えられる。しかしながら、多層ニューラルネットワークにおいては、パラメータ数や演算量が多いことから、ハードウェア構成が複雑になりかねない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５１５５８４３号
【特許文献２】特許第５１５４６６６号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
識別段階の処理を簡易な構成のハードウェアで行うことができる識別装置およびそのような識別装置に用いられる演算装置を提供する。
【課題を解決するための手段】
【０００７】
実施形態によれば、複数の入力デジタル値から構成される入力データを識別する識別装置であって、縦続接続され、そのそれぞれが複数の演算装置を有する複数の演算層を備え、初段の演算層における前記複数の演算装置のそれぞれは、前記複数の入力デジタル値と、そのそれぞれに対応する予め定められた重み係数と、からデジタル値を生成し、２段目以降の演算層における前記複数の演算装置のそれぞれは、前段の演算層における前記複数の演算装置により生成された複数のデジタル値と、そのそれぞれに対応する予め定められた重み係数と、から新たなデジタル値を生成し、最終段の演算層における前記複数の演算装置が生成するデジタル値が、識別結果を示し、前記複数の演算装置の少なくとも１つは、縦続接続された複数のデジタル時間変換回路であって、そのそれぞれは、入力されるデジタル値およびこのデジタル値に対応する前記重み係数に応じた時間だけ、第１の時間信号を遅延させて第２の時間信号を生成し、前記第２の時間信号は前記第１の時間信号として次段のデジタル時間変換回路に入力される、デジタル時間変換回路と、最終段の前記デジタル時間変換回路から出力される前記第２の時間信号と、所定の時間閾値信号とを比較して、デジタル信号を生成する時間デジタル変換回路と、を有する、識別装置が提供される。
【図面の簡単な説明】
【０００８】
【図１】識別システムの概略構成を示すブロック図。
【図２】識別装置３の概略構成を示すブロック図。
【図３】演算部Ｐの演算処理を模式的に説明する図。
【図４】図３の演算部Ｐのハードウェア構成を模式的に示すブロック図。
【図５】時間信号Ｔ［ｋ］を説明する図。
【図６】ＤＴＣ回路２１ｋの回路構成の一例を示す図。
【図７】図６のＤＴＣ回路２１ｋの動作を説明するタイムチャート。
【図８】ＴＤＣ回路２２の回路構成の一例を示す図。
【図９】図８のＴＤＣ回路２２の動作を説明するタイムチャート。
【図１０】ＤＴＣ回路２１ｋの回路構成の別の例を示す図。
【図１１】図１０のＤＴＣ回路２１ｋの動作を説明するタイムチャート。
【図１２】ＴＤＣ回路２２の回路構成の別の例を示す図。
【図１３】図１１のＴＤＣ回路２２の動作の一例を示すタイムチャート。
【図１４】シグモイド関数を示す図。
【図１５】遅延回路３２の第１の例を示す回路図。
【図１６】遅延回路３２’の第２の例を説明する図。
【図１７】遅延回路３２’’の第３の例を示す回路図。
【図１８】図１７（ａ）における可変抵抗素子３２１の一例を詳しく示す図。
【図１９】図１７（ａ）における可変抵抗素子３２１の別の例を詳しく示す図。
【図２０】遅延回路３２’’’の第４の例を示す回路図。
【図２１】図２０における可変容量３２４を詳しく示す図。
【発明を実施するための形態】
【０００９】
以下、実施形態について、図面を参照しながら具体的に説明する。
【００１０】
本実施形態では、ニューラルネットワークを利用した識別システムを想定している。本識別システムでは、まず学習段階として、ニューラルネットワーク（後述）を構築する。そして、ニューラルネットワークが構築されると、識別段階として、このニューラルネットワークを用いて新たな入力が何であるかを識別できる。以下では、入力が１桁の数字０〜９のいずれが描かれた画像であり、いずれの数字が描かれているかを識別する識別システムを例に取って説明する。
【００１１】
図１は、識別システムの概略構成を示すブロック図である。識別システムは、センサ１と、学習装置２と、識別装置３と、アプリケーション４とを備えている。
【００１２】
センサ１は例えばイメージセンサであり、数字が描かれた画像から、当該画像に対応する入力データを生成する。図示のように入力データはｎ個の画素から構成され、各画素の値Ａｋは１または複数ビットのデジタル値であるとする。
【００１３】
学習装置２は、センサ１が生成した多数の入力データからその特徴を学習し、ニューラルネットワークを構築する。後に詳述するが、構築されたニューラルネットワークは、認識装置３における各演算部で用いられる重み係数として表される。そして、学習装置２は、ある数字「ｘ」が描かれた画像に対応する入力データが入力されたときに、入力データが「ｘ」であることを出力するような重み係数を見出す。
【００１４】
ユーザから多くの入力データを受信することで、ニューラルネットワークの精度を向上できるし、データを収集するコストを低減できる。なお、本実施形態では、学習装置２は公知の手法によりニューラルネットワークを構築するものとする。
【００１５】
識別装置３は学習装置２からニューラルネットワークにおける重み係数を取得する。学習装置２によりニューラルネットワークがアップデートされた場合、識別装置３は新たなニューラルネットワークの重み係数を取得することで、識別の精度が向上する。
【００１６】
そして、重み係数を取得した識別装置３は、センサ１が生成した識別対象の入力データを受け取る。そして、識別装置３は、重み係数を用いたニューラルネットワークに入力データを適用して、画像に描かれた数字が何であるかを識別する。
【００１７】
アプリケーション４は識別結果を利用して種々の処理を行う。
【００１８】
一旦、ニューラルネットワークのパラメータが学習装置２から取得されると、以降は、学習装置２を経由することなく、識別装置３が入力データを識別でき、その結果がアプリケーション４により利用される。そのため、識別段階において、本識別システムは極めて低消費電力で動作可能である。
【００１９】
図２は、識別装置３の概略構成を示すブロック図であり、ニューラルネットワークを示している。この識別装置３は、例えば１または複数の半導体集積回路により実装されてもよい。識別装置３は、入力層３１と、１または複数の隠れ層３２と、出力層３３とを備えている。隠れ層３２および出力層３３をまとめて演算層とも呼ぶ。同図では、識別装置３が２層の隠れ層３２ａ，３２ｂを含む例を示している。この場合、隠れ層３２ａは初段の隠れ層とも言える。また、隠れ層３２ｂは、前段の隠れ層３２ａに引き続く隠れ層とも言えるし、最終段の隠れ層とも言える。
【００２０】
入力層３１はｎ個の入力部Ｉ１〜Ｉｎを有する。入力部Ｉ１〜Ｉｎの数ｎは、センサ１が生成する入力データの画素数と等しい。そして、入力データにおけるｋ番目の画素値Ａｋが入力部Ｉｋに設定される。
【００２１】
隠れ層３２ａはｐ（ｐは任意の整数）個の演算部Ｐ１１〜Ｐ１ｐを有する。演算部Ｐ１１〜Ｐ１ｐの動作は同様であるので、以下代表して演算部Ｐ１ｋとして説明する。演算部Ｐ１ｋには、入力層３１における入力部Ｉ１〜Ｉｎからｎ個の画素値Ａ１〜Ａｎが入力される。そして、演算部Ｐ１ｋは、画素値Ａ１〜Ａｎと、そのそれぞれに対応する重み係数Ｆｋ１〜Ｆｋｎとに対して所定の演算処理を行い、新たなデジタル値Ｂｋを生成する。デジタル値Ｂｋは１ビットであってもよいし複数ビットであってもよい。重み係数Ｆｋ１〜Ｆｋｎは、学習装置２から取得される。
【００２２】
隠れ層３２ｂはｑ（ｑは任意の整数）個の演算部Ｐ２１〜Ｐ２ｑを有する。演算部Ｐ２１〜Ｐ２ｑの動作は同様であるので、以下代表して演算部Ｐ２ｋとして説明する。演算部Ｐ２ｋには、前段の隠れ層３２ａにおける演算部Ｐ１１〜Ｐ１ｐからｐ個のデジタル値Ｂ１〜Ｂｐが入力される。そして、演算部Ｐ２ｋは、デジタル値Ｂ１〜Ｂｐと、そのそれぞれに対応する重み係数Ｇｋ１〜Ｇｋｐとに対して所定の演算処理を行い、新たなデジタル値Ｃｋを生成する。デジタル値Ｃｋは１ビットであってもよいし複数ビットであってもよい。重み係数Ｇｋ１〜Ｇｋｐは、学習装置２から取得される。
【００２３】
出力層３３は１０個の演算部Ｐ３０〜Ｐ３９を有する。本実施形態ではあり得る識別結果の数が１０種類（すなわち１桁の数字０〜９）であるため、そのそれぞれに対応する演算部Ｐ３０〜Ｐ３９が設けられる。演算部Ｐ３０〜Ｐ３９の動作は同様であるので、以下代表して演算部Ｐ３ｋとして説明する。演算部Ｐ３ｋには、隠れ層３２ｂにおける演算部Ｐ２１〜Ｐ２ｑからｑ個のデジタル値Ｃ１〜Ｃｑが入力される。そして、演算部Ｐ３ｋは、デジタル値Ｃ１〜Ｃｑと、そのそれぞれに対応する重み係数Ｈｋ１〜Ｈｋｑとに対して所定の演算処理を行い、新たなデジタル値Ｄｋを生成する。重み係数Ｈｋ１〜Ｈｋｎは、学習装置２から取得される。
【００２４】
好ましくは、デジタル値Ｄｋは１ビットであり、デジタル値Ｄ０〜Ｄ９のうちの１つのみが“１”となる。そして、例えばデジタル値Ｄ６が“１”である場合、画像には数字「６」が描かれている、という識別結果となる。
【００２５】
ここで、上記重み係数Ｆｋ１〜Ｆｋｎ，Ｇｋ１〜Ｇｋｐ，Ｈｋ１〜Ｈｋｑがニューラルネットワークにおける重要なパラメータであり、これらを適切に定めることで、入力データを正しく識別できる。
【００２６】
なお、図２では２層の隠れ層を持つニューラルネットワークを例示しているが、隠れ層３２ａ，３２ｂ間にさらに１または複数の隠れ層３２を設けてもよい。一般に、隠れ層の数が多いほど識別の精度が向上する。特に、多くの隠れ層についての重み係数を定めることを「ディープラーニング」ともいう。あるいは、隠れ層を１層のみとしてもよい。この場合、隠れ層３２ｂが省略され、隠れ層３２ａの出力が出力層３３に入力される。
【００２７】
続いて、各演算部の演算処理について説明する。ニューラルネットワークでは、隠れ層３２ａにおける演算部Ｐ１１〜Ｐ１ｐも、隠れ層３２ｂにおける演算部Ｐ２１〜Ｐ２ｑも、出力層３３における演算部Ｐ３０〜Ｐ３９も、ほぼ同様の演算処理を行う。よって、以下では代表して演算部Ｐと表記する。
【００２８】
図３は、演算部Ｐの演算処理を模式的に説明する図である。演算部Ｐは、積和演算部１１と、閾値処理部１２とを有する。
【００２９】
演算部Ｐには、前段の演算部または入力部から、複数のデジタル値ｘ１〜ｘｒが入力される。ここで、デジタル値ｘ１〜ｘｒとは、初段の隠れ層３２ａにおける演算部Ｐ１１〜Ｐ１ｐについては画素値Ａ１〜Ａｎ（ｒ＝ｎ）であり、２段目の隠れ層３２ｂにおける演算部Ｐ２１〜Ｐ２ｑについてはデジタル値Ｂ１〜Ｂｐ（ｒ＝ｐ）であり、出力層３３における演算部Ｐ３０〜Ｐ３９についてはデジタル値Ｃ１〜Ｃｑ（ｒ＝ｑ）である。
【００３０】
また、演算部Ｐには、デジタル値ｘ１〜ｘｒにそれぞれ対応する重み係数ｗ１〜ｗｒが予め定められている。重み係数ｗ１〜ｗｒは学習装置２から取得されるものである。
【００３１】
そして、積和演算部１１は、下記（１）に示す積和演算処理を行って、中間信号Ｍを生成する。
Ｍ＝Σｗｉ＊ｘｉ  ・・・（１）
ここで、Σはｉ＝１〜ｒまでの総和を意味する。
【００３２】
さらに、閾値処理部１２は、中間信号Ｍと閾値ＴＨとを比較する閾値処理を行って、デジタル値ｘｏｕｔを生成する。閾値ＴＨは予め定めた定数であってもよいし、学習装置２から取得されてもよい。また、閾値ＴＨは、全演算部Ｐに対して共通でもよいし、演算部Ｐごとに異なっていてもよい。
【００３３】
ここで、デジタル値ｘｏｕｔとは、初段の隠れ層３２ａにおける演算部Ｐ１１〜Ｐ１ｐについてはそれぞれデジタル値Ｂ１〜Ｂｐであり、２段目の隠れ層３２ｂにおける演算部Ｐ２１〜Ｐ２ｑについてはそれぞれデジタル値Ｃ１〜Ｃｑであり、出力層３３における演算部Ｐ３０〜Ｐ３９についてはそれぞれデジタル値Ｄ０〜Ｄ９である。
【００３４】
本実施形態では、図３の演算処理をハードウェアで行う。ただし、重み係数の数が多い（数十億に至ることもある）ため、通常のデジタル回路を用いると回路構成が複雑になり、消費電力の増大を招きかねない。そこで、本実施形態では、上記の積和演算処理や閾値処理に適した回路を用いて演算することで回路構成を簡略化し、高速処理および低消費電力化を図る。以下、より詳しく説明する。
【００３５】
図４は、図３の演算部Ｐのハードウェア構成を模式的に示すブロック図である。演算部Ｐは、積和演算部１１を構成するｒ個のデジタル時間変換回路（Digital to Time Converter、以下ＤＴＣ回路という）２１１〜２１ｒと、閾値処理部１２を構成する時間デジタル変換回路（Time to Digital Converter、以下ＴＤＣ回路という）２２とを有する。
【００３６】
ｒ個のＤＴＣ回路２１１〜２１ｒは縦続接続されている。初段のＤＴＣ回路２１１には基準時間信号Ｔ［０］が入力される。基準時間信号Ｔ［０］ある基準の時刻で電圧値が遷移する信号である。各ＤＴＣ回路２１ｋ（ｋ＝１〜ｒ）は時間信号Ｔ［ｋ］を生成する。時間信号Ｔ［ｋ］は次段のＤＴＣ回路２１（ｋ＋１）に入力される。最終段のＤＴＣ回路２１ｒが生成する時間信号Ｔ［ｒ］が中間信号Ｍとなる。ここで、時間信号Ｔ［ｋ］について説明する。
【００３７】
図５は、時間信号Ｔ［ｋ］を説明する図である。水平方向は時間の経過を表しており、垂直方向は電圧値である。図示のように、時間信号Ｔ［ｋ］はある時刻で電圧値が遷移する信号である。そして、所定の基準時刻ｔ０と、時間信号Ｔ［ｋ］の電圧値が遷移する時刻との差が時間信号Ｔ［ｋ］の値に対応する。あるいは、時間信号Ｔ［ｋ］とは、時刻ｔ０で電圧値が遷移する基準時間信号を、時間信号Ｔ［ｋ］の値に対応する時間だけ遅延させた信号とも言える。なお電圧値の遷移は、図示のような“０”から“１”への遷移でもよいし、“１”から“０”への遷移でもよい。
【００３８】
図４に戻り、ＤＴＣ回路２１ｋにはデジタル値ｘｋおよび重み係数ｗｋが設定される。そして、ＤＴＣ回路２１ｋは、前段のＤＴＣ回路２１（ｋ−１）から入力される時間信号Ｔ［ｋ−１］をデジタル値ｘｒおよび重み係数ｗｒに応じた時間だけ遅延させて、時間信号Ｔ［ｋ］を生成する。より具体的には、ＤＣＴ回路２１ｋは下記（２）式に示す時間信号Ｔ［ｋ］を生成する。
Ｔ［ｋ］＝Ｔ［ｋ−１］＋ｗｉ＊ｘｉ  ・・・（２）
【００３９】
結果として、最終段のＤＴＣ回路２１ｒからは、下記（３）式に示す中間信号Ｍが生成される。
Ｍ＝Ｔ［ｒ］＝Ｔ［０］＋Σｗｉ＊ｘｉ  ・・・（３）
【００４０】
上記（３）式は、上記（１）式と対応している。このように、本実施形態では、中間信号Ｍを時間信号とすることで、ハードウェア構成を簡略化できる。以下、ＤＴＣ回路２１ｋおよび閾値回路２２の具体的な回路構成の例について説明する。
【００４１】
図６は、ＤＴＣ回路２１ｋの回路構成の一例を示す図である。このＤＴＣ回路２１ｋはデジタル値ｘｋが１ビットである場合の回路例であり、単位ＤＴＣ回路２１０から構成される。図示のように、単位ＤＴＣ回路２１０は、ＮＯＲ回路３１と、遅延回路３２と、ＮＯＲ回路３３，３４とを有する。
【００４２】
ＮＯＲ回路３１は、デジタル値ｘｋの反転と時間信号Ｔ［ｋ］とのＮＯＲ演算により、信号Ａを生成する。遅延回路３２は重み係数ｗｋに応じた時間Ｄｋだけ信号Ａを遅延させて信号Ｂを生成する。ＮＯＲ回路３３は、一方の入力は“０”に固定されているため、時間信号Ｔ［ｋ−１］を反転して信号Ｃを生成する。ＮＯＲ回路３４は、信号Ｂと信号ＣとのＮＯＲ演算により、時間信号Ｔ［ｋ］を生成する。
【００４３】
なお、遅延回路３２の具体的な構成例については、第２の実施形態で説明する。
【００４４】
図７は、図６のＤＴＣ回路２１ｋの動作を説明するタイムチャートであり、デジタル値ｘｋ、時間信号Ｔ［ｋ−１］、信号Ａ〜Ｃおよび時間信号Ｔ［ｋ］の波形を示している。ここで、時間信号Ｔ［ｋ−１］は、時刻ｔ１で“０”から“１”に遷移するものとする。同図（ａ）はデジタル信号ｘｋが“０”の場合のタイムチャートであり、同図（ｂ）はデジタル信号ｘｋが“１”の場合のタイムチャートである。なお、以下の説明では、特に断らない限り、ＮＯＲ回路３１，３３，３４の遅延時間は遅延回路３２の遅延時間に比べて十分に小さいため無視する。
【００４５】
図７（ａ）に示すように、デジタル値ｘｋが“１”の場合、時間信号Ｔ［ｋ］は時刻ｔ１から重み係数ｗｋに応じた時間Ｄｋだけ経過した時刻ｔ２で“０”から“１”に遷移する信号でとなり、すなわち、時間信号Ｔ［ｋ−１］をＤｋだけ遅延させた信号となる。
【００４６】
一方、図７（ｂ）に示すように、デジタル値ｘｋが“１”の場合、時間信号Ｔ［ｋ］は時刻ｔ１で“０”から“１”に遷移する信号となり、すなわち、時間信号Ｔ［ｋ−１］そのものである。
【００４７】
図８は、ＴＤＣ回路２２の回路構成の一例を示す図である。このＴＤＣ回路２２もデジタル値ｘｏｕｔが１ビットである場合の回路例である。図示のように、ＴＤＣ回路２２は１つのフリップフロップ２２ａから構成される。そして、ＴＤＣ回路２２は、中間信号Ｍと時間閾値信号Ｔｈ０とを比較して、１ビットのデジタル値ｘｏｕｔを生成する。
【００４８】
図９は、図８のＴＤＣ回路２２の動作を説明するタイムチャートである。同図では、中間信号Ｍ０、時間閾値信号Ｔｈ０およびデジタル信号ｘｏｕｔと、参考のために基準時間信号Ｔ０とを示している。
【００４９】
時間閾値信号Ｔｈ０は、閾値に対応する時刻ｔ１１で論理が“０”から“１”に遷移する信号である。そして、フリップフロップ２２ａは、時間閾値信号Ｔｈ０が遷移するタイミングで、中間信号Ｍの値を取り込み、デジタル信号ｘｏｕｔとする。
【００５０】
より具体的には、図９（ａ）の場合、中間信号Ｍは、基準信号Ｔ０に対する遅延時間が小さく、時刻ｔ１１より前に“１”から“０”に遷移している。よって、フリップフロップ２２ａはデジタル値ｘｏｕｔを“０”に設定する。一方、図９（ｂ）の場合、中間信号Ｍは、基準信号Ｔ０に対する遅延時間が大きく、時刻ｔ１１より後に“１”から“０”に遷移している。よって、フリップフロップ２２ａはデジタル値ｘｏｕｔを“１”に設定する。
【００５１】
図１０は、ＤＴＣ回路２１ｋの回路構成の別の例を示す図である。このＤＴＣ２１ｋはデジタル値ｘｋが３ビットである場合の回路例であり、図６に示す単位ＤＴＣ回路２１０を３つ縦続接続したものである。なお、より一般的には、デジタル値ｘｋがｎビットである場合、ｎ個の単位ＤＴＣ回路２１０を縦続接続すればよい。
【００５２】
初段の単位ＤＴＣ回路２１０には、前段のＤＴＣ回路２１（ｋ−１）からの時間信号Ｔ［ｋ−１］およびデジタル値ｘｋの最上位ビットｘｋ［２］が入力される。そして、初段の単位ＤＴＣ回路２１０における遅延回路３２の遅延時間は、重み係数ｗｋに応じた時間Ｄｋの４倍である。
【００５３】
２段目の単位ＤＴＣ回路２１０には、初段の単位ＤＴＣ回路２１０からの時間信号およびデジタル値ｘｋの上位から２ビット目ｘｋ［１］が入力される。そして、２段目の単位ＤＴＣ回路２１０における遅延回路３２の遅延時間は、重み係数ｗｋに応じた時間Ｄｋの２倍である。
【００５４】
最終段の単位ＤＴＣ回路２１０には、２段目の単位ＤＴＣ回路２１０からの時間信号およびデジタル値ｘｋの最下位ビット目ｘｋ［０］が入力される。そして、最終段の単位ＤＴＣ回路２１０における遅延回路３２の遅延時間は、重み係数ｗｋに応じた時間Ｄｋである。
【００５５】
図１１は、図１０のＤＴＣ回路２１ｋの動作を説明するタイムチャートである。図示のように、ＤＴＣ回路２１ｋは、デジタル値ｘｋに応じて、入力される時間信号Ｔ［ｋ−１］を遅延させて時間信号Ｔ［ｋ］を出力する。デジタル値ｘｋが１大きくなると、重み係数ｗｋに応じた時間Ｄｋだけ遅延時間は大きくなる
図１２は、ＴＤＣ回路２２の回路構成の別の例を示す図である。このＴＤＣ回路２１は３ビットのデジタル値ｘｏｕｔを生成する例を示している。ＴＤＣ回路２２は、２つの遅延素子２２１，２２２と、３つのフリップフロップ２２３〜２２５から構成される。
【００５６】
遅延素子２２１は中間信号Ｍを所定時間遅延させて信号Ｍ１Ｄを生成する。遅延素子２２２は信号Ｍ１Ｄを所定時間遅延させて信号Ｍ２Ｄを生成する。フリップフロップ２２３〜２２５には、中間信号Ｍ、信号Ｍ１Ｄ，Ｍ２Ｄがそれぞれ入力される。そして、フリップフロップ２２３〜２２５は、中間信号Ｍおよびその遅延信号Ｍ１Ｄ，Ｍ２Ｄと、時間閾値信号Ｔｈ０とを比較して、それぞれデジタル値ｘｏｕｔ［２］，ｘｏｕｔ［１］，ｘｏｕｔ［０］を生成する。
【００５７】
図１３は、図１２のＴＤＣ回路２２の動作の一例を示すタイムチャートである。同図では、中間信号Ｍ、信号Ｍ１Ｄ，Ｍ２Ｄ、時間閾値信号Ｔｈ０および信号ｘｏｕｔ［２］，ｘｏｕｔ［１］，ｘｏｕｔ［０］とを示している。
【００５８】
時間閾値信号Ｔｈ０は、閾値に対応する時刻ｔ１１で論理が“０”から“１”に遷移する信号である。そして、フリップフロップ２２３〜２２５は、時間閾値信号Ｔｈ０が遷移するタイミングで、中間信号Ｍ、信号Ｍ１Ｄ，Ｍ２Ｄの値をそれぞれ取り込み、信号ｘｏｕｔ［２］，ｘｏｕｔ［１］，ｘｏｕｔ［０］とする。
【００５９】
より具体的には、図１３の場合、中間信号Ｍおよび信号Ｍ１Ｄは、時刻ｔ１１より前に“１”から“０”に遷移している。一方、信号Ｍ１Ｄを遅延させた信号Ｍ２Ｄは、時刻ｔ１１より後に“１”から“０”に遷移している。よって、フリップフロップ２２３〜２２５は、信号ｘｏｕｔ［２］，ｘｏｕｔ［１］，ｘｏｕｔ［０］をそれぞれ、“０”，”０”，”１”に設定する。結果として、デジタル信号ｘｏｕｔは“００１”となる。
【００６０】
図１２および図１３に示すように時間信号である中間信号Ｍの遅延時間を細かく判定して、図１４に示すシグモイド関数１／（１＋ｅｘ）を近似してもよい。
【００６１】
以上説明したＤＴＣ回路２１ｒおよびＴＤＣ回路２２により、各演算部Ｐは図３に示す演算を行うことができる。
【００６２】
このように、第１の実施形態では、電圧値が遷移する時刻で情報を表現する時間信号を利用してニューラルネットワークによる識別に必要な演算処理を行う。よって、ハードウェア構成を簡略化できる。
【００６３】
（第２の実施形態）
第２の実施形態では、図６のＤＴＣ回路における遅延回路３２の具体的な回路の例をいくつか示す。
【００６４】
図１５は、遅延回路３２の第１の例を示す回路図である。図示のように、遅延回路３２は縦続接続された複数のインバータ（遅延素子）を有する。各インバータは入力される信号を所定時間だけ遅延させて、次段のインバータに供給する。インバータの数を多くするほど遅延時間を長くできる。これにより、簡易に遅延回路３２を構成できる。なお、図１５の遅延回路の場合、遅延時間はインバータの数に応じて定まる固定値となり、識別装置３の製造後に変更するのは困難である。
【００６５】
図１６は、遅延回路３２’の第２の例を説明する図であり、同図（ａ）は回路図、同図（ｂ）はその動作を模式的に示すタイムチャートである。
【００６６】
図１６（ａ）に示すように、遅延回路３２’は、可変の電源電圧Ｖｄｄが供給される遅延素子３２２を有する。遅延素子３２２は、例えば図１５に示すように複数のインバータで構成してもよく、これらの少なくとも１つに可変の電源電圧Ｖｄｄが供給されるようにしてもよい。
【００６７】
図１６（ｂ）に示すように、遅延素子３２２は、供給される電源電圧Ｖｄｄに応じて、信号Ａを遅延させて信号Ｂを生成する。例えば、電源電圧Ｖｄｄが高い場合（Ｖｄｄ：Ｈ）、遅延時間は短くなる。一方、電源電圧Ｖｄｄが低い場合（Ｖｄｄ：Ｌ）、遅延時間は長くなる。
【００６８】
図１７は、遅延回路３２’’の第３の例を示す回路図である。図示のように、遅延回路３２’は可変抵抗素子３２１と、ｐＭＯＳトランジスタＱｐと、ｎＭＯＳトランジスタＱｎとを有する。トランジスタＱｐ，Ｑｎは遅延素子３２２を構成する。図１７（ａ）に示すように、電源端子とトランジスタＱｐのソース端子との間に可変抵抗素子３２１が挿入されてもよい。また、図１７（ｂ）に示すように、グラウンド端子とトランジスタＱｎのソース端子との間に可変抵抗素子３２１が挿入されてもよい。さらに、図１７（ｃ）に示すように、電源端子とトランジスタＱｐのソース端子との間、および、グラウンド端子とトランジスタＱｎのソース端子との間の両方に可変抵抗素子３２１が挿入されてもよい。
【００６９】
図１７の遅延回路３２’’では、可変抵抗素子３２１の抵抗値が大きくなるほど、遅延時間が長くなる。
【００７０】
なお、信号Ｂの極性を調整するために、図１７の遅延回路３２’’の前後にインバータを設けてもよい。
【００７１】
図１８は、図１７（ａ）における可変抵抗素子３２１の一例を詳しく示す図である。図示のように、可変抵抗素子３２１は、ＤＡ変換器（ＤＡＣ）と、ＭＯＳトランジスタＱとを有する。ＤＡＣには、例えば識別装置３とは別のメモリチップ３２３から重み係数が入力される。なお、このメモリチップ３２２は前もって学習装置２から取得した重み係数を記憶している。
【００７２】
そして、ＤＡＣは重み係数をアナログ電圧に変換してトランジスタＱのゲートに入力する。トランジスタＱの抵抗値はアナログ電圧に応じた値となる具体的には、アナログ電圧が大きいほど、抵抗値は小さくなる。
【００７３】
図１８のような構成により、識別装置３の製造後であっても、メモリチップ３２３の重み係数を書き換えることで、可変抵抗素子３２１の抵抗値を変更できる。よって、ニューラルネットワークを柔軟に変更することができる。例えばニューラルネットワークのバージョンアップや、用途の変更（数字を識別するためのニューラルネットワークから平仮名を識別するためのニューラルネットワークへの変更など）に対応できる。
【００７４】
図１９は、図１７（ａ）における可変抵抗素子３２１の別の例を詳しく示す図である。図示のように、可変抵抗素子３２１は抵抗可変型の不揮発性記憶素子３２１ａから構成される。記憶素子３２１ａはＮＡＮＤ型フラッシュメモリやＲｅＲＡＭなどであるが、特に制限はない。
【００７５】
記憶素子３２１ａはニューラルネットワークにおける重み係数を記憶している。そして、記憶素子３２１ａは重み係数に応じた閾値電圧Ｖｔｈを有する。よって、記憶素子３２１ａの抵抗値Ｒは閾値Ｖｔｈに応じたＲ＝ｆ（Ｖ０−Ｖｔｈ）となる。
【００７６】
すなわち、記憶素子３２１ａは、可変抵抗素子としての機能に加え、重み係数を記憶するメモリとしての機能も持っている。
【００７７】
図１９のような構成により、識別装置３の製造後であっても、記憶素子３２１ａの閾値電圧Ｖｔｈを再調整することで、可変抵抗素子３２１の抵抗値を変更できる。さらに、記憶素子３２１ａ自身が重み係数を記憶できる。そのため、図１８と比べ、メモリチップ３２２を設ける必要がないし、メモリチップ３２２から重み係数をロードする時間も節約できる。
【００７８】
なお、図１７（ｂ）や図１７（ｃ）における可変抵抗素子３２１に、図１８や図１９を適用してもよい。
【００７９】
図２０は、遅延回路３２’’’の第４の例を示す回路図である。図示のように、遅延回路３２’’’は、遅延素子３２２の出力端子と、グラウンド端子との間に可変容量３２４が設けられる。この可変容量３２４の容量値が大きいほど、遅延時間は長くなる。
【００８０】
図２１は、図２０における可変容量３２４を詳しく示す図である。図示のように、可変容量として、容量変化型不揮発性記憶素子３２４ａを用いてもよい。図１９と同様に、記憶素子３２４ａは、可変容量素子としての機能に加え、重み係数を記憶するメモリとしても機能する。
【００８１】
上述したような遅延回路３２はアナログ回路であるため、必ずしも厳密に所望の遅延時間が実現されるとは限らない。しかしながら、ニューラルネットワーク自体がフォールトトレラントなシステムであるため、このことはほとんど問題にならない。
【００８２】
上述した各実施形態では、画像に描かれた数字を識別する例を示した。しかしながら、各実施形態の用途に限定はなく、数字以外の画像を識別してもよい。また、画像以外に音声の識別を行ってもよい。この場合、センサ１は音声を入力データに変換すればよい。あるいは、化合物の活性予測などに適用してもよい。
【００８３】
なお、以上説明した「識別」は、数字が何であるかといった「認識」のみならず、分類や予測をも含む概念である。また、図２に示すすべての演算装置が実施形態で説明した構成であるのが望ましいが、少なくとも一部が異なる構成であっても構わない。
【００８４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００８５】
１  センサ
２  学習装置
３  識別装置
４  アプリケーション
３１  入力層
３２ａ，３２ｂ  隠れ層
３３  出力層
Ｉ１〜Ｉｎ  入力部
Ｐ１１〜Ｐ１ｐ，Ｐ２１〜Ｐ２ｑ，Ｐ３０〜Ｐ３９  演算装置
１１  積和演算部
１２  閾値処理部
２１１〜２１ｒ  デジタル時間変換（ＤＴＣ）回路
２２  時間デジタル変換（ＴＤＣ）回路
３２１  可変抵抗素子
３２１ａ  不揮発性記憶素子
３２２  インバータ
【図１】
0005885719.tif 000002
【図２】
0005885719.tif 000003
【図３】
0005885719.tif 000004
【図４】
0005885719.tif 000005
【図５】
0005885719.tif 000006
【図６】
0005885719.tif 000007
【図７】
0005885719.tif 000008
【図８】
0005885719.tif 000009
【図９】
0005885719.tif 000010
【図１０】
0005885719.tif 000011
【図１１】
0005885719.tif 000012
【図１２】
0005885719.tif 000013
【図１３】
0005885719.tif 000014
【図１４】
0005885719.tif 000015
【図１５】
0005885719.tif 000016
【図１６】
0005885719.tif 000017
【図１７】
0005885719.tif 000018
【図１８】
0005885719.tif 000019
【図１９】
0005885719.tif 000020
【図２０】
0005885719.tif 000021
【図２１】
0005885719.tif 000022