(57)【要約】【課題】  ディープラーニングに用いられるＣＮＮを、より小型のハードウェアで実現し（小型のハードウェア化）、家庭電化製品や産業機器等に容易に実装できる仕組みを提供できるようになる。【解決手段】  ニューラルネットワークを構築するニューラルネットワーク構築方法は、畳み込みニューラルネットワークを設計し、所定の学習データを用いて学習させることによって、前記畳み込みニューラルネットワークを構築する構築ステップと、前記構築した前記畳み込みニューラルネットワークを論理回路でハードウェア化するハードウェア化ステップと、を含む。前記畳み込みニューラルネットワークは、ディープラーニングによって学習され、ＦＰＧＡに畳み込みニューラルネットワークのパラメータを書き込むことによって、論理回路でハードウェア化した前記畳み込みニューラルネットワークを構築することができる。【選択図】図１
2018132830.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを構築するニューラルネットワーク構築方法であって、
畳み込みニューラルネットワークを設計し、所定の学習データを用いて学習させることによって、前記畳み込みニューラルネットワークを構築する構築ステップと、
前記構築した前記畳み込みニューラルネットワークを論理回路でハードウェア化するハードウェア化ステップと、
を含み、論理回路でハードウェア化した前記畳み込みニューラルネットワークを構築する
ことを特徴とするニューラルネットワーク構築方法。
【請求項２】
前記畳み込みニューラルネットワークは、ディープラーニングを実行できる量子化ニューラルネットワークである
ことを特徴とする請求項１記載のニューラルネットワーク構築方法。
【請求項３】
前記畳み込みニューラルネットワークは、ディープラーニングを実行できる２値化ニューラルネットワークである
ことを特徴とする請求項１記載のニューラルネットワーク構築方法。
【請求項４】
前記ハードウェア化ステップは、前記論理回路としてプログラマブルロジックデバイスを用い、前記畳み込みニューラルネットワークのパラメータを、前記プログラマブルロジックデバイスに書き込むことによって、ハードウェア化した記畳み込みニューラルネットワークを構築する
ことを特徴とする請求項１から３のいずれか１項に記載のニューラルネットワーク構築方法。
【請求項５】
前記プログラマブルロジックデバイスは、ＦＰＧＡである
ことを特徴とする請求項１から４のいずれか１項に記載のニューラルネットワーク構築方法。
【請求項６】
ニューラルネットワークを備えたニューラルネットワーク装置であって、
論理回路を用いてハードウェア化した前記ニューラルネットワークと、
前記ニューラルネットワークの内容を更新するニューラルネットワーク制御部と、
を有し、
前記ニューラルネットワークは、畳み込みニューラルネットワークのパラメータが書き込まれたプログラマブルロジックデバイスであり、
前記ニューラルネットワーク制御部は、前記プログラマブルロジックデバイスに更新された畳み込みニューラルネットワークの更新データを書き込む
ことを特徴とするニューラルネットワーク装置。
【請求項７】
前記畳み込みニューラルネットワークは、ディープラーニングを実行できる量子化畳み込みニューラルネットワークである
ことを特徴とする請求項６記載のニューラルネットワーク装置。
【請求項８】
前記畳み込みニューラルネットワークは、ディープラーニングを実行できる２値化畳み込みニューラルネットワークである
ことを特徴とする請求項６記載のニューラルネットワーク装置。
【請求項９】
前記プログラマブルロジックデバイスは、ＦＰＧＡである
ことを特徴とする請求項６から８のいずれか１項に記載のニューラルネットワーク装置。
【請求項１０】
外部記憶装置に対して前記更新データの書き込み及び読み出しを行う外部入出力部、
を備え、
前記ニューラルネットワーク部は、前記外部入出力部が前記外部記憶装置から読み出した前記更新データを前記プログラマブルロジックデバイスに書き込む
ことを特徴とする請求項６から９のいずれか１項に記載のニューラルネットワーク装置。
【請求項１１】
外部のネットワークから前記更新データを受信する通信部、
を備え、前記ニューラルネットワーク制御部は、前記通信部が受信した前記更新データを、前記外部入出力部に対して送り、前記外部入出力部は、前記送られてきた前記更新データを前記外部記憶装置に書き込み、
さらに、前記外部入出力部は、前記外部記憶装置から前記更新データを読み出して、読み出した前記更新データを前記ニューラルネットワーク制御部に送り、前記ニューラルネットワーク制御部は、送られてきた前記更新データを、前記プログラマブルロジックデバイスに書き込む
ことを特徴とする請求項１０に記載のニューラルネットワーク装置。
【請求項１２】
請求項１１に記載のニューラルネットワーク装置の前記ニューラルネットワークを更新するニューラルネットワーク装置更新方法であって、
更新サーバが、前記ニューラルネットワーク装置に対して、前記更新された畳み込みニューラルネットワークの更新データを、送信する送信ステップと、
前記ニューラルネットワーク装置の前記通信部が、前記更新データを受信し、前記ニューラルネットワーク制御部は、前記通信部が受信した前記更新データを、前記外部入出力部に対して送り、前記外部入出力部は、前記送られてきた前記更新データを前記外部記憶装置に書き込む受信ステップと、
前記外部入出力部は、前記外部記憶装置から前記更新データを読み出して、読み出した前記更新データを前記ニューラルネットワーク制御部に送り、前記ニューラルネットワーク制御部は、送られてきた前記更新データを、前記プログラマブルロジックデバイスに書き込む更新ステップと、
を含むことを特徴とするニューラルネットワーク装置更新方法。
【請求項１３】
前記更新ステップの後、前記通信部が、更新が完了した旨のメッセージを前記更新サーバに送信する更新完了送信ステップ、
を含むことを特徴とする請求項１２記載のニューラルネットワーク装置更新方法。
【請求項１４】
前記更新サーバは、前記更新更新が完了した旨のメッセージを受信した場合、所定の登録データベース中にニューラルネットワークの内容が更新された旨の情報を登録する登録データベース更新ステップ、
を含むことを特徴とする請求項１３記載のニューラルネットワーク装置更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア化したニューラルネットワークの構築方法に関する。また、本発明は、内容を更新可能なハードウェア化したニューラルネットワークに関する。また、そのニューラルネットワークの更新方法に関する。
【背景技術】
【０００２】
ニューラルネットワーク（Neural Network）は、人工知能を実現する手法の一つとして広く研究が行われている。特に、２０１２年頃から、ディープラーニング（Deep Learning）技術が広く研究され画像認識や音声認識等の分野においてめざましい成果が得られている。
【０００３】
ディープラーニング技術においては、畳み込み層（Convolutional Layer）と、プーリング層（PoolingLayer）と呼ばれる２種の層を交互に２０層から３０層程度繰り返す構造を有する畳み込みニューラルネットワーク（Convolutional Neural Network ）が用いられる場合が多い。
畳み込み層は、一般的な画像処理におけるフィルター（例えば、ラプラシアンフィルター等）とほぼ同様の処理を実行するが、フィルターの内容が学習によって決定していく点が、通常のフィルターと異なる。ここで、そのフィルターの値がニューラルネットにおける重みに相当する。
プーリング層は、例えば、画像中の一定の領域内の最大値を取る等の手法で、画像解像度を落とす処理が実行される。プーリングとは、例えば画像処理の場合、フィルター結果について物体の画像中の位置への依存性を減らすために、画素を間引く処理と考えることもできる。
【０００４】
通常、ニューラルネットワーク（以下、ＮＮと称する）は、コンピュータ上で仮想的に構築され、ソフトウェアによって、各層の演算処理が実行される。しかし、畳み込みニューラルネットワーク（以下、ＣＮＮと称する）はこのように複雑な処理を実行する層が多数（２０層〜３０層程度）重畳しているので、その演算量は巨大なものとなりがちである。そのため、一般的な汎用のＣＰＵ等を用いる通常のコンピュータではなく、ＧＰＵ（Graphics Processing Unit）を用いた演算装置を用いてニューラルネットワークの演算処理を実行させる場合も多い。
その結果、ＮＮ、特にディープラーニングを実現しうるＣＮＮ等のコンピュータ装置は大規模なものとなりがちであり、一般的な家庭電化製品に実装することは困難であった。
【０００５】
汎用的なＣＰＵを用いたソフトウェアによる演算では演算処理速度が遅く、一般的な家庭電化製品や、産業機器等に実装することは困難である。また、上述したＧＰＵを用いれば比較的高速な演算処理を実現できるが、ハードウェア規模や消費電力を小さくすることは困難である。
例えば、ＣＮＮを１チップから数チップのＬＳＩで実現できれば、小型の家庭電化製品等にも実装しやすくなり、好適であるが、そのような手法は未だ知られていない。そのため、小型の家庭電化製品等や、産業機器にも搭載可能なＣＮＮを実現する手法が望まれている。
【０００６】
＜先行特許文献＞
３層程度のレイヤー構造を採用するＮＮをハードウェア化しようとする試みは、既に種々の提案がなされている。例えば、下記特許文献１においては、３層のＮＮのシナプスの荷重に上限値と下限値とを与える構成が開示されている。このような構成によって、学習によるシナプス荷重が収束しやすくなり、ハードウェア化を行いやすくなると記述されている。
また、下記特許文献２においては、ソフトウェアで実現されている３層のＮＮを、効率よくハードウェア化する技術が開示されている。そして、ＮＮのニューロンを、その応答関数を記録したＲＯＭ又はＲＡＭで構成することによって、ＮＮを効率よくハードウェア化できると記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−１５２７１６号公報
【特許文献２】特開平９−１０６３９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、ディープラーニングに用いられるＣＮＮは、畳み込みという複雑な処理を多層に渡り実行しなければならず、特許文献１や特許文献２の手法でハードウェア化しようとしても、ハードウェア量が膨大となってしまう。
本発明は上記事情に鑑み、ディープラーニングに用いられるＣＮＮを、より小型のハードウェアで実現し、家庭電化製品や産業機器等に容易に実装できる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の発明（以下同様）は、ニューラルネットワークを構築するニューラルネットワーク構築方法であって、畳み込みニューラルネットワークを設計し、所定の学習データを用いて学習させることによって、前記畳み込みニューラルネットワークを構築する構築ステップと、前記構築した前記畳み込みニューラルネットワークを論理回路でハードウェア化するハードウェア化ステップと、を含み、論理回路でハードウェア化した前記畳み込みニューラルネットワークを構築することを特徴とするニューラルネットワーク構築方法である。
【００１０】
第２の発明は、請求項１記載の発明において、前記畳み込みニューラルネットワークは、ディープラーニングを実行できる量子化ニューラルネットワークであることを特徴とする。
【００１１】
第３の発明は、請求項１記載の発明において、前記畳み込みニューラルネットワークは、ディープラーニングを実行できる２値化ニューラルネットワークであることを特徴とする。
【００１２】
第４の発明は、請求項１から３のいずれか１項に記載の発明において、前記ハードウェア化ステップは、前記論理回路としてプログラマブルロジックデバイスを用い、前記畳み込みニューラルネットワークのパラメータを、前記プログラマブルロジックデバイスに書き込むことによって、ハードウェア化した記畳み込みニューラルネットワークを構築することを特徴とする。
【００１３】
第５の発明は、請求項１から４のいずれか１項に記載の発明において、前記プログラマブルロジックデバイスは、ＦＰＧＡであることを特徴とする。
【００１４】
第６の発明は、ニューラルネットワークを備えたニューラルネットワーク装置であって、論理回路を用いてハードウェア化した前記ニューラルネットワークと、前記ニューラルネットワークの内容を更新するニューラルネットワーク制御部と、を有し、前記ニューラルネットワークは、畳み込みニューラルネットワークのパラメータが書き込まれたプログラマブルロジックデバイスであり、前記ニューラルネットワーク制御部は、前記プログラマブルロジックデバイスに更新された畳み込みニューラルネットワークの更新データを書き込むことを特徴とするニューラルネットワーク装置である。
【００１５】
第７の発明は、請求項６記載の発明において、前記畳み込みニューラルネットワークは、ディープラーニングを実行できる量子化畳み込みニューラルネットワークであることを特徴とする。
【００１６】
第８の発明は、請求項６記載の発明において、前記畳み込みニューラルネットワークは、ディープラーニングを実行できる２値化畳み込みニューラルネットワークであることを特徴とする。
【００１７】
第９の発明は、請求項６から８のいずれか１項に記載の発明において、前記プログラマブルロジックデバイスは、ＦＰＧＡであることを特徴とする。
【００１８】
第１０の発明は、請求項６から９のいずれか１項に記載の発明において、外部記憶装置に対して前記更新データの書き込み及び読み出しを行う外部入出力部、を備え、前記ニューラルネットワーク部は、前記外部入出力部が前記外部記憶装置から読み出した前記更新データを前記プログラマブルロジックデバイスに書き込むことを特徴とする。
【００１９】
第１１の発明は、請求項１０に記載の発明において、外部のネットワークから前記更新データを受信する通信部、を備え、前記ニューラルネットワーク制御部は、前記通信部が受信した前記更新データを、前記外部入出力部に対して送り、前記外部入出力部は、前記送られてきた前記更新データを前記外部記憶装置に書き込み、さらに、前記外部入出力部は、前記外部記憶装置から前記更新データを読み出して、読み出した前記更新データを前記ニューラルネットワーク制御部に送り、前記ニューラルネットワーク制御部は、送られてきた前記更新データを、前記プログラマブルロジックデバイスに書き込むことを特徴とする。
【００２０】
第１２の発明は、請求項１１に記載の発明の前記ニューラルネットワークを更新するニューラルネットワーク装置更新方法であって、更新サーバが、前記ニューラルネットワーク装置に対して、前記更新された畳み込みニューラルネットワークの更新データを、送信する送信ステップと、前記ニューラルネットワーク装置の前記通信部が、前記更新データを受信し、前記ニューラルネットワーク制御部は、前記通信部が受信した前記更新データを、前記外部入出力部に対して送り、前記外部入出力部は、前記送られてきた前記更新データを前記外部記憶装置に書き込む受信ステップと、前記外部入出力部は、前記外部記憶装置から前記更新データを読み出して、読み出した前記更新データを前記ニューラルネットワーク制御部に送り、前記ニューラルネットワーク制御部は、送られてきた前記更新データを、前記プログラマブルロジックデバイスに書き込む更新ステップと、を含むことを特徴とするニューラルネットワーク装置更新方法である。
【００２１】
第１３の発明は、請求項１２の発明において、前記更新ステップの後、前記通信部が、更新が完了した旨のメッセージを前記更新サーバに送信する更新完了送信ステップ、を含むことを特徴とする。
【００２２】
第１４の発明は、請求項１３の発明において、前記更新サーバは、前記更新更新が完了した旨のメッセージを受信した場合、所定の登録データベース中にニューラルネットワークの内容が更新された旨の情報を登録する登録データベース更新ステップ、を含むことを特徴とする。
【発明の効果】
【００２３】
本発明のニューラルネットワークシステム構築方法によれば、ニューラルネットワークを論理回路でハードウェア化したので、各種装置に容易に実装することができる。その結果、小型の装置にもニューラルネットワークを導入することができ、より多くの装置にニューラルネットワークを導入することができる。
【図面の簡単な説明】
【００２４】
【図１】実施形態のニューラルネットワーク装置の製造方法の流れを示すフロー図である。
【図２】実施形態のニューラルネットワーク装置の構成ブロック図である。
【図３】実施形態のニューラルネットワーク装置の更新の流れを示すフロー図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照して本発明を具体化した実施形態について説明する。実施形態のニューラルネットワーク装置の製造の流れは、ＮＮ（ニューラルネットワーク）の学習から、そのハードウェア化、製品への組み込み、等を含む。さらに、実施形態のニューラルネットワーク装置は、ニューラルネットワーク装置の使用中に当該製品中に実装されているＮＮの更新（メンテナンス）が可能であるが、その更新の流れについては図３において後述する。本実施形態においては、ＮＮとして例えばＣＮＮを中心として説明を行うが、他の種類のＮＮを用いてもよい。
このニューラルネットワーク装置（以下、ＮＮ装置と呼ぶ）は、例えば家庭電化製品、オフィス製品等を想定している。なお、ＮＮ装置としてはこれらにとどまらず、例えば産業機器など、今後新たに登場する各種機器・装置も含めることができる。
【００２６】
図１は、本ニューラルネットワーク装置の製造の流れを示すフローチャートである。
まず、ニューラルネットワーク開発者は、ディープラーニング技術に基づき、所定の目的のＮＮの構築（ここでは、例えばＣＮＮの構築）を行う（ステップＳ１）。ＮＮの構築は、ＮＮの設計、すなわち、ＣＮＮの構成、ニューロン数、レイヤー数等の設計が含まれる。さらに、ＮＮの構築には、目的に応じた学習も含まれる。この学習に際して、学習用のデータの作成、及びそれを用いたディープラーニング技術による学習等を行う。これらのＮＮの構築（設計・学習含む）は、既存の仕組みを用いて行って良く、例えば上述したＧＰＵ等でＣＮＮを構成し、学習させることによってＣＮＮを構築することが好適である。このステップＳ１は、請求の範囲の構築ステップの好適な一例に相当する。
【００２７】
本実施形態において特徴的なことは、このＣＮＮとして、Binary Convolution Neural Network（２値化畳み込みニューラルネットワーク：以下、ＢＣＮＮと称する）や、Qauantized Convolution Neural Network（量子化畳み込みニューラルネットワーク：以下、ＱＣＮＮと称する）等を用いたことである。ＢＣＮＮは、単にＢＮＮと呼ぶ場合もあり、また、ＱＣＮＮも、単にＱＮＮと呼ぶ場合もある。このようなＢＣＮＮやＱＣＮＮを利用してＮＮを構成することによって、データ量、演算量を大幅に減少させることができ、後述するようなＮＮのハードウェア化が容易になったものである。
【００２８】
＜ＢＣＮＮ＞
ＢＣＮＮは、例えば、次の論文にその一例が詳しい内容が記載されている。
"Mohammad et al.,: XNOR-Net:ImageNet Classification Using Binary Convolution Neural Networks. arXiv reprint arXiv:1603.05279v4(2 Aug. 2016)"
この論文におけるＢＣＮＮは、ＣＮＮのweightsとinputとをBinarization（２値化）したものであり、メモリ使用量が１／３２、演算速度が５８倍高速化されると記載されている。従来のＣＮＮのデータやパラメータは、３２ビット〜６４ビットの浮動小数点データであるのに対して、大幅なデータ量、パラメータ量の削減をすることが可能である。この結果、後述するようなハードウェア化を容易に行うことができる。
【００２９】
＜ＱＣＮＮ＞
ＱＣＮＮは、例えば、次の論文にその一例の詳しい内容が記載されている。
"Wu et al.,: Qantized Convolutional Neural Networks: Training Neural Networks with Low Precision Weights and Activations. arXiv reprint arXiv:1609.07061v1(22 Sep. 2016)"
また、ＱＮＮについては、例えば、下記の論文にその一例の詳細が記載されている。
"Hubara et al.,: Qantized Neural Networks: Training Neural Networks with Low Precision Weights and Activations. arXiv reprint arXiv:1609.07061v1(22 Sep. 2016)”
この論文のＱＮＮにおいては、ＣＮＮのweightsとactivationnsとがさまざまに量子化されている。例えば、特に１ビット幅に量子化することも好適であり、メモリやパラメータの演算量等を大幅に減少させることができると記載されている。１ビットに量子化の場合は、３２ビットの数値演算を行う例（例えばAlexNet）との比較で、５１％の正確性が実現されると上記ＱＮＮの論文には記載されている。
【００３０】
このように、ステップＳ１においては、ＱＣＮＮやＢＣＮＮを用いてＣＮＮを設計し、学習を行って、最終的な学習済みのＣＮＮを構築する。このステップＳ１の動作は、通常のＮＮ技術者やＮＮ開発会社が行ってよい。
次に、ステップＳ１で構築（設計・学習を含む）したＣＮＮを、ハードウェア化する（ステップＳ２）。ハードウェア化は、構築したＣＮＮのパラメータを用いて、そのＣＮＮと同様の動作を実行するハードウェアを製作することによって実行される。製作したハードウェアを特に、ハードウェア化ＮＮと呼ぶ。このステップＳ２は請求の範囲のハードウェア化ステップの好適な一例に相当する。
【００３１】
本実施形態においては、ハードウェア化ＮＮとして、例えば半導体チップを製作することによって行われる。特に、本実施形態においては、設計・開発したＣＮＮのパラメータその他の情報をＦＰＧＡ（Field Programmable Gate Array）に書き込むことによって、ＣＮＮと同様の動作を実行しうる半導体チップを製作する。本実施形態で特徴的なことは、このようにＮＮをＦＰＧＡ上の論理回路で構成していることである。上述したように、本実施形態のＣＮＮは、ＢＣＮＮや、ＱＣＮＮを利用しているので、パラメータの量を少なくすることができ、近年の汎用的な１チップのＦＰＧＡに書き込む（プログラムする）ことが可能であり、論理回路によってＣＮＮを実現することができる。本実施形態においては、ステップＳ２で製作したハードウェア化ＮＮ、すなわちＦＰＧＡを、便宜上ＮＮ−ＦＰＧＡと呼ぶ。
【００３２】
なお、本実施形態では、ＦＰＧＡを利用したが、プログラマブルロジックデバイス（Programmable Logic Device）、すなわち、製造後にユーザの手許で内部論理回路を定義・変更できる集積回路であれば、他のプログラマブルロジックデバイスを用いてもよい。本実施形態におけるＮＮ−ＦＰＧＡは、請求の範囲におけるプログラマブルロジックデバイスの好適な一例に相当する。
【００３３】
次に、このようにして製作したＮＮ−ＦＰＧＡを、ＮＮを利用した製品に実装し、最終的な製品を製造する（ステップＳ３）。
従来、ＮＮの構築には、上述したように、コンピュータのソフトウェアを利用して仮想的に構築する場合や、ＧＰＵ等を利用して構築する場合等があるが、いずれにしても大型の装置となりがちである。したがって、従来は、ＮＮを小型の装置（例えば家庭電化製品等）に実装することは困難であった。
【００３４】
これに対して、本実施形態では、ＮＮを１チップの半導体（ＦＰＧＡ）で構成することができたので、多種多様な製品に実装することができる。その結果、人工知能を利用した様々な製品を製造することが可能となった。例えば、家庭電化製品のような小型の機器であっても、ＮＮ−ＦＰＧＡを実装させることにより、容易に人工知能を搭載する事が可能である。例えば、人工知能によって食材を判断してその判断結果に応じて、その食材の適切な焼き加減を実現できる調理器や、人工知能によって食器の汚れぐあいを判断しその判断結果に応じて、食器に対する適切な洗浄を行える食器洗浄機等を製造することが可能である。
【００３５】
本実施形態では、１チップの半導体（ＦＰＧＡ）でＮＮを実現する例を主として説明するが、複数チップのＦＰＧＡで実現してもよい。どの程度の個数のＦＰＧＡを必要かは、利用するＱＣＮＮ（量子化畳み込みニューラルネットワーク）の量子化ビット数にも依存する。また、利用するＦＰＧＡの論理ブロック数にも依存する。例えば、量子化のビット数が大きい場合は、複数個のＦＰＧＡでＮＮを実現してもよい。
なお、ステップＳ３における製造の対象であるＮＮ装置は、ＮＮを実装することができる全ての装置を含む。家庭電化製品以外にも、各種産業機器、運輸・交通機器、各種工作機械や重機等、種々の装置を、本実施形態における製造対象（ＮＮ装置）とすることができる。
【００３６】
これまで説明したステップＳ１〜Ｓ３の実行者は誰でもよいが、例えば、ＮＮの技術者、ＮＮの開発企業、メーカー、ＮＮの研究所等が単独で、または複数主体が協力して実行することができる。また、ステップＳ１〜Ｓ３の実行者が互いに異なっていてもよい。本実施形態では、ステップＳ１〜３が、例えば、ＮＮ装置の研究製造会社及びその関連会社によって実行されるものとして説明を続ける。
【００３７】
このようにして製造された各種ＮＮ装置は、販売されてエンドユーザに渡される（ステップＳ４）。ステップＳ４の実行者も誰でもよく、各種商社や販売会社が実行することができる。また、各種の販売店や、インターネット上での販売を実施するネット上の店舗や通信販売会社が実行することもできる。本実施形態では、ステップＳ４は、例えば上記ＮＮ装置の研究製造会社（又はその関連販売会社）が実行することとして説明を続ける。
【００３８】
次に、エンドユーザは、入手したＮＮ装置の登録データベースへの登録を行う（ステップＳ５）。この登録は、エンドユーザが、例えば、インターネットを介して、ＮＮ装置の研究製造会社にアクセスし、当該ＮＮ装置の製造番号や、その所有者（つまり、そのエンドユーザ）の氏名や住所、インターネット上のアドレス等を入力することによって行うことが好適である。また、そのＮＮ装置に実装されているＮＮのバージョン番号や、ＮＮの更新を行った日時等を登録データベースに登録することも好適である。研究製造会社へのアクセスは、図２において後述する通信部１２を介して行ってもよいし、スマートホンやパソコンを介してアクセスしてもよい。研究製造会社は、登録データベースを保持し、外部からの登録アクセスを受け付ける管理サーバを備えることが好適である。この管理サーバは、後述する更新サーバと共用してもよい。
このようにして入力されたデータが、研究製造会社が管理している登録データベースに登録される。登録データベースは、研究製造会社（の管理サーバ）が管理してよいが他の主体が管理してもよい。なお、登録データベースへの登録はインターネット経由以外の方法でもよい。例えばエンドユーザは、上記エンドユーザの氏名や住所、ＮＮのバージョン情報等の情報を書面に記入して郵送やＦＡＸで研究製造会社又は登録データベースの管理会社に送付してもよい。
【００３９】
＜ＮＮ装置の更新＞
図１で説明したように、ＮＮは、ある所定の学習が完了したことを以て、そのＮＮが完成する。そして、完成したＮＮを実装したＮＮ装置が製造・販売される。しかし、製造・販売後も上記研究販売会社が当該ＮＮの学習を続行し、よりよいＮＮを構築することも好ましい。例えば、調理器においては、新しい食材が利用できる場合は、新しい食材に対する学習が必要である。そのため、調理器（ＮＮ装置）を製造・販売後も学習を続行し、新しい食材や、新しいメニューに対応させた（改良された）ＮＮを構築することも好適である。そして、この改良されたＮＮを、既に販売されたＮＮ装置に新たに導入させることができればエンドユーザにとって調理器（ＮＮ装置）の利便性が向上して好ましい。このような処理を実現するためには、例えば、そのＮＮ装置がＮＮ装置の研究販売会社と通信可能に構成されていることが好適である。
【００４０】
このように、販売後にＮＮの内容を更新可能なＮＮ装置１０の構成ブロック図が図２に示されている。同図に示すようにＮＮ装置１０は、通信部１２と、外部入出力部１４と、ＮＮ制御部１６と、ＮＮ−ＦＰＧＡ１８と、装置制御部２０と、を備えている。
通信部１２は、研究製造会社と通信を行い、上述したステップＳ５における登録や、ＮＮの更新データ（後に詳述する）を受信する通信のための手段である。例えば、インターネットに接続する通信インターフェースとそのドライバソフトウェア等で構成することが好適であるが、他の通信手段でもよい。外部のネットワーク接続し、ＮＮの更新データを受信することができればどのような手段でもよい。
【００４１】
外部入出力部１４は、ＮＮの更新データを入力（書き込み）・出力（読み出し）する手段の一つであり、更新データを外部記憶装置１５に書き込む動作と、読み出す動作と、を実行する。例えば、ＵＳＢインターフェースが好ましいが、その他、ＩＣカードリーダーや、メモリーカードリーダー等であってもよい。外部記憶装置１５は、不揮発性の所定の記憶手段であり、例えばＵＳＢメモリや、ＳＤカード等が好適に用いられる。
したがって、周囲にインターネット通信環境が利用できない場合（上記通信部１２が使用できない場合）等でも、更新データが格納された外部記憶装置１５から更新データを入力する（読み出す）ことができる。例えば、外部入出力部１４として、ＵＳＢメモリインターフェースを用いて、ＵＳＢメモリを介してＮＮの更新データを入力してもよい。外部入出力部１４は、ＵＳＢメモリ等の外部記憶装置１５から、ＮＮの更新データを入力することができればどのような手段でもよい。
【００４２】
ＮＮ制御部１６は、本ＮＮ装置１０に実装されているＮＮ−ＦＰＧＡ１８のデータの更新を制御する制御手段である。このＮＮ制御部１６は、外部入出力部１４からＮＮの更新データを受信し、受信したＮＮの更新データを、ＮＮ−ＦＰＧＡ１８に書き込む手段であるが、その他本実施形態で説明する種々の動作を実行する。このＮＮ制御部１６は、請求の範囲のニューラルネットワーク制御部の好適な一例に相当する。
ＮＮ制御部１６は、例えば、ＮＮ装置１０のＣＰＵと、このＣＰＵが実行するプログラムと、から構成することができる。本実施形態で説明するＮＮ制御部１６の動作はこのプログラムで記述されている。
【００４３】
ＮＮ−ＦＰＧＡ１８は、上述したハードウェア化ＮＮの好適な一例であり、ＮＮ装置に実装されるためにＮＮのデータが書き込まれ、ＮＮとして機能するＦＰＧＡである。このＮＮ−ＦＰＧＡは、請求の範囲のニューラルネットワークの好適な一例に相当し、プログラマブルロジックデバイスの好適な一例にも相当する。
【００４４】
装置制御部２０は、外部からの入力データ（外部入力：図２参照）をＮＮ−ＦＰＧＡ１８に供給し、その出力を受け取り、その出力に基づき装置の操作出力（図２参照）を送出する。この装置制御部２０は、ＮＮ−ＦＰＧＡ１８をＮＮとして用いて、各ＮＮ装置１０の動作を実行する手段である。例えば、食材の写真を撮影し、その画像データが「外部入力」（図２参照）として装置制御部２０に供給されると、装置制御部２０は、当該画像データをＮＮ−ＦＰＧＡ１８に供給し、食材名や、その加熱時間等を推定させる。これら推定結果は、図２における「出力」として、装置制御部２０に戻される。装置制御部２０は、かかる「出力」に基づき、加熱時間等を操作するために操作出力（図２参照）を出力することができる。このように、装置制御部２０は、各ＮＮ装置１０毎にＮＮを利用して種々の推定結果等を得て、その推定結果等に基づき種々の動作を実行する。ここでは、「推定」の例を示したが、「画像認識」「言語解析」等に用いる場合もあり、各ＮＮ装置の動作に応じて種々の判断を行ってよい。
装置制御部２０は、ＮＮ装置１０のＣＰＵと、このＣＰＵが実行するプログラムと、から構成してよい。また、例えば、ＮＮ制御部１６と共通のプログラムで実現されていてもよい。
【００４５】
次に、このような構成のＮＮ装置１０のＮＮ−ＦＰＧＡ１８の内容（データ）を更新する動作について説明する。図３には、かかる更新の動作のフロー図が示されている。
上述したように、研究製造会社は、ＮＮ装置１０を販売した後も、そこに実装されているＮＮ（ＮＮ−ＦＰＧＡ１８で実現されているＣＮＮ）の学習を続行し、改良を行うことが好適である（ステップＳ１０）。
【００４６】
研究製造会社は、改良したＮＮ（例えばＣＮＮ）のデータ（更新データ）を、既に販売されているＮＮ装置１０に供給するために、エンドユーザの当該ＮＮ装置に送信する（ステップＳ１１）。この送信は、例えばインターネットを介して、当該ＮＮ装置１０に上記更新データを送信することによって行われる。その宛先としては、上述した研究製造会社（の管理サーバ）が管理する登録データベースの登録内容を用いてよい。この登録データベースには、ＮＮ装置１０のインターネット上のアドレス等が登録されており、このアドレスを利用してエンドユーザのＮＮ装置１０に対して更新データを送信することができる。
なお、ステップＳ１１は、請求の範囲の送信ステップの好適な一例に相当する。また、研究製造会社の管理サーバは、請求の範囲の更新サーバの好適な一例に相当する。言い換えれば、研究製造会社の管理サーバは、登録データベースを関しており、請求の範囲の更新サーバとして機能する。そして、この管理サーバが、ステップＳ１１の送信の動作（請求の範囲の送信ステップの動作）を実行することが好適である。本実施形態では、管理サーバが登録データベースを備えており、更新サーバとして動作する例を説明する。しかし、登録データべースを他のユーザのアフターサービス等で利用し、管理サーバ・更新サーバとは別体に構成してもよい。
【００４７】
なお、図３のステップＳ１１においては、上で説明したように登録データベースに登録されているインターネット上のアドレスに基づき、更新データを送信したが、更新データを別の手段でエンドユーザに送ってもよい。例えば、研究製造会社は、ＮＮの更新データを、ＵＳＢメモリ等に格納して、このＵＳＢメモリをエンドユーザ宛に郵送してもよい。この場合、そのエンドユーザの住所は上記登録データベース中に登録されている住所を用いてよい。
【００４８】
ＮＮ装置１０の通信部１２は、ステップＳ１１で送信されてきた更新データを受信する（ステップＳ１２）。通信部１２は、この更新データをＮＮ制御部１６に送信する。ＮＮ制御部１６は、更新データを外部入出力部１４に送る。外部入出力部１４は、外部の外部記憶装置１５（例えばＳＤカード、ＵＳＢメモリ）に更新データを書き込む。なお、外部記憶装置１５は不揮発性であることが好ましいが、当該ＮＮの用途等によっては、ＲＡＭを用いてもよい場合もある。また、本実施形態では、外部記憶装置１５を用いたが、ＮＮ装置１０の内部の半導体記憶装置や、内部のハードディスク等を利用してもよい。
また、ステップＳ１２は、請求の範囲の受信ステップの好適な一例に相当する。すなわち、受信とは、外部記憶装置１５に更新データが書き込まれるまでの動作をいう。また、ＳＤカードやＵＳＢメモリメモリは、請求の範囲の外部記憶装置１５の好適な一例に相当する。外部記憶装置１５としては、磁気的（ハードディスク装置、磁気カード）、光学的（ＤＶＤ記憶装置、ＣＤ記憶装置）、電気的（半導体記憶装置、ＩＣカード）にデータを記憶可能な手段であれば、その他種々の記憶手段を用いることができる。
【００４９】
次に、ＮＮ制御部１６は、外部記憶装置１５中の更新データを読み出すように外部入出力部１４に指示する。外部入出力部１４は、かかる指示に従って、外部記憶装置１５（例えば、ＳＤカード）から更新データを読み出して、ＮＮ制御部１６に送信する。ＮＮ制御部１６は、送信されてきた更新データをＮＮ−ＦＰＧＡ１８に書き込む。ＮＮ−ＦＰＧＡ１８に書き込むことによってＮＮの内容を更新する（ステップＳ１３）。
なお、インターネットを介した更新を行わない場合は、ＮＮの更新データが格納されたＵＳＢメモリ（ＳＤカード、その他不揮発性記憶手段でよい）を、ＮＮ装置１０のエンドユーザに郵送することも好適である。このように郵送されてきた場合は、エンドユーザが郵送物（ＵＳＢメモリ）を受け取り、そのＵＳＢメモリを外部入出力部１４に接続する。外部入出力部１４はＵＳＢインターフェースを含み、接続されたＵＳＢメモリ内の更新データをＮＮ制御部１６に送信することができる。
ＮＮ制御部１６は、いずれの場合も、外部入出力部１４から更新データを受信し、受信した更新データをＮＮ−ＦＰＧＡ１８に書き込む。ＮＮ−ＦＰＧＡ１８に書き込むことによってＮＮの内容を更新する（ステップＳ１３）。
これによって、ＮＮ装置１０は、より優れたＮＮが実装され、エンドユーザにとってより便利なＮＮ装置１０が実現される。ステップＳ１３は、請求の範囲の更新ステップの好適な一例に相当する。また、ＮＮ制御部１６は、請求の範囲のニューラルネットワーク制御部の好適な一例に相当する。
更新が完了した後、ＮＮ制御部１６は、更新が完了した旨のメッセージを返すように通信部１２に指示を行う。通信部１２は、当該メッセージをインターネット等を介して研究製造会社に送信する（ステップＳ１４）。ステップＳ１４は、請求の範囲の更新完了送信ステップの好適な一例に相当する。
【００５０】
なお、更新データがＳＤカード（又はＵＳＢメモリ等）に格納されて、そのＳＤカードが郵送等で送られてきた場合は、更新が完了した旨のメッセージも郵送で送ることが好適である。その場合は、エンドユーザが、更新が完了した旨のメッセージの手紙等を郵送で研究製造会社宛に送付する。
研究製造会社は、更新が完了した旨のメッセージを受信すると、それに基づき、登録データベース中にＮＮの内容が更新された旨の情報や、ＮＮの更新データのバージョン番号等を登録し、更新する（ステップＳ１５）。更新が完了した旨のメッセージが郵送で送られてきたときも、同様に登録データベースを更新することが好適である。また、ステップＳ１５は、請求の範囲の登録データベース更新ステップの好適な一例に相当する。
このような図３に示す処理によって、販売された後でもＮＮの内容を更新することができ、エンドユーザに対してより優れたＮＮ装置１０を提供することができる。
【００５１】
＜その他の形態＞
上で説明した図３に示す構成では、通信部１２と外部入出力部１４と、が備えられている例を示したが、通信部１２は通常は備えていないような形態を採用してもよい。この場合は、ＳＤカード等からのみＮＮの更新を行うことができる。また、ＮＮ装置１０とは別体のパソコン等において、更新データをＳＤカードにダウンロードし、更新データをダウンロードしたＳＤカードを用いてＮＮ装置１０の更新を行ってもよい。
また、図３における説明では、研究製造会社の更新サーバが更新データを送信する構成を説明したが、更新データのアクセス先アドレスのみをＮＮ装置１０に送信し、ＮＮ装置１０の通信部１２が、そのアドレスにアクセスし、更新データをダウンロードするように構成してもよい。このようにＮＮ装置１０側がダウンロードしにいくような構成でも、実質的には「更新データの送信、更新データの受信」と同等であり、本発明の範囲に含まれる。
また、更新データは、ＮＮ装置１０のＮＮ（ＮＮ−ＦＰＧＡ１８）の全てのパラメータ等を更新するデータでもよいし、一部の更新部分のみを更新するデータであってもよい。
また、上記実施形態では、ハードウェア化したＮＮとして、ＦＰＧＡを用いる例を説明したが、プログラム可能なデバイスであれば他のデバイスを用いてもよいし、当該他のデバイスと、ＦＰＧＡとを組み合わせて構成としてもよい。
【００５２】
以上に示した本実施形態は、発明の構成の一例を示したものであり、構成は発明の範囲内において適宜変更することができる。
【符号の説明】
【００５３】
１０…ＮＮ装置
１２…通信部
１４…外部入出力部
１５…外部記憶装置
１６…ＮＮ制御部
１８…ＮＮ−ＦＰＧＡ
２０…装置制御部
【図１】
2018132830.tif 000003
【図２】
2018132830.tif 000004
【図３】
2018132830.tif 000005
【手続補正書】
【提出日】平成29年10月16日(2017.10.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューラルネットワークを備えたニューラルネットワーク装置であって、
論理回路を用いてハードウェア化した前記ニューラルネットワークと、
前記ニューラルネットワークの内容を更新するニューラルネットワーク制御部と、
外部のネットワークから前記ニューラルネットワークの内容を更新する更新データを受信する通信部と、
外部記憶装置に対して前記更新データの書き込み及び読み出しを行う外部入出力部と、
を有し、
前記ニューラルネットワークは、畳み込みニューラルネットワークのパラメータが書き込まれたプログラマブルロジックデバイスであり、
前記ニューラルネットワーク制御部は、前記通信部が受信した前記更新データを、前記外部入出力部に対して送り、前記外部入出力部は、前記送られてきた前記更新データを前記外部記憶装置に書き込み、
さらに、前記外部入出力部は、前記外部記憶装置から前記更新データを読み出して、読み出した前記更新データを前記ニューラルネットワーク制御部に送り、前記ニューラルネットワーク制御部は、送られてきた前記更新データを、前記プログラマブルロジックデバイスに書き込む
ことを特徴とするニューラルネットワーク装置。
【請求項２】
前記更新データは、前記ニューラルネットワークのパラメータを更新する更新データであることを特徴とする請求項１に記載のニューラルネットワーク装置。
【請求項３】
前記更新データは、前記ニューラルネットワークの一部を更新する更新データであることを特徴とする請求項１に記載のニューラルネットワーク装置。
【請求項４】
前記畳み込みニューラルネットワークは、ディープラーニングを実行できる量子化畳み込みニューラルネットワークである
ことを特徴とする請求項１から３のいずれか１項に記載のニューラルネットワーク装置。
【請求項５】
前記畳み込みニューラルネットワークは、ディープラーニングを実行できる２値化畳み込みニューラルネットワークである
ことを特徴とする請求項１から３のいずれか１項に記載のニューラルネットワーク装置。
【請求項６】
前記プログラマブルロジックデバイスは、ＦＰＧＡである
ことを特徴とする請求項１から５のいずれか１項に記載のニューラルネットワーク装置。
【請求項７】
請求項１から６のいずれか１項に記載のニューラルネットワーク装置の前記ニューラルネットワークを更新するニューラルネットワーク装置更新方法であって、
更新サーバが、前記ニューラルネットワーク装置に対して、前記更新された畳み込みニューラルネットワークの更新データを、送信する送信ステップと、
前記ニューラルネットワーク装置の前記通信部が、前記更新データを受信し、前記ニューラルネットワーク制御部は、前記通信部が受信した前記更新データを、前記外部入出力部に対して送り、前記外部入出力部は、前記送られてきた前記更新データを前記外部記憶装置に書き込む受信ステップと、
前記外部入出力部は、前記外部記憶装置から前記更新データを読み出して、読み出した前記更新データを前記ニューラルネットワーク制御部に送り、前記ニューラルネットワーク制御部は、送られてきた前記更新データを、前記プログラマブルロジックデバイスに書き込む更新ステップと、
を含むことを特徴とするニューラルネットワーク装置更新方法。
【請求項８】
前記更新ステップの後、前記通信部が、更新が完了した旨のメッセージを前記更新サーバに送信する更新完了送信ステップ、
を含むことを特徴とする請求項７記載のニューラルネットワーク装置更新方法。
【請求項９】
前記更新サーバは、前記更新が完了した旨のメッセージを受信した場合、所定の登録データベース中にニューラルネットワークの内容が更新された旨の情報を登録する登録データベース更新ステップ、
を含むことを特徴とする請求項８記載のニューラルネットワーク装置更新方法。
【請求項１０】
前記更新データは、前記ニューラルネットワークのパラメータを更新する更新データであることを特徴とする請求項７から９のいずれか１項に記載のニューラルネットワーク装置更新方法。
【請求項１１】
前記更新データは、前記ニューラルネットワークの一部を更新する更新データであることを特徴とする請求項７から１０のいずれか１項に記載のニューラルネットワーク装置更新方法。