(57)【要約】  重みデータの保存方法とニューラルネットワークにおける畳み込み計算の方法とが開示されている。重みデータの保存方法は、重み畳み込みカーネルマトリクスにおける有効重みを検出し、有効重みの指数を算出し、前記有効重みはゼロではなく、前記有効重み指数は前記重み畳み込みカーネルマトリクスにおける前記有効重みの位置をマーキングするために用いられるステップと、前記有効重み及び前記有効重み指数を保存するステップと、を備えている。本発明の重みデータの保存方法及び畳み込み計算の方法によれば、保存スペースを省くことが可能になり、計算が効率的に改良される。
2021503644.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークにおける重みデータ（weight data）の保存方法であって、
重み畳み込みカーネルマトリクス（weight convolution kernel matrix）における有効重み（effective weight）を検出し、有効重みの指数（index of effective weight）を算出し、前記有効重みはゼロではなく、前記有効重み指数は前記重み畳み込みカーネルマトリクスにおける前記有効重みの位置をマーキングするために用いられるステップ１と、
前記有効重み及び前記有効重み指数を保存するステップ２と、
を備える方法。
【請求項２】
前記ステップ１は、Ｋ×Ｋの正方形マトリクスがＰ２個のサブマトリクスに均等に分割できるように、前記重み畳み込みカーネルマトリクスをＫ×Ｋの正方形マトリクスに拡張し、前記Ｐは２以上の整数であるステップ１１と、
前記正方形マトリクスをＰ２個のサブマトリクスに均等に分割するステップ１２と、
各サブマトリクスが１個のみの重みを示すようになるまで、各々が有効重みを構成している前記Ｐ２個のサブマトリクスをサブマトリクスに再帰的かつ均等に分割し、複数レベルのサブマトリクスを得るステップ１３と、
前記複数レベルのサブマトリクスにおいて各々が有効重みを構成しているサブマトリクスに対して、ビット値が１である有効パスブランチ（effective path branch）を形成し、前記有効重み指数を得るステップ１４と、
からなるものであることを特徴とする請求項１に記載の方法。
【請求項３】
前記Ｋはｍｎの値を取り、ｍは２以上の整数であり、ｎは１以上の整数であることを特徴とする請求項２に記載の方法。
【請求項４】
前記ステップ１において、前記有効重み指数は前記重み畳み込みカーネルマトリクスにおける前記有効重みの縦横座標を示すものであることを特徴とする請求項１に記載の方法。
【請求項５】
ニューラルネットワークにおける畳み込み計算の方法であって、
請求項１乃至４の何れか一項に記載の方法により保存された有効重み及び有効重み指数を取得するステップ４１と、
前記有効重み指数に従って、前記有効重みと適合する畳み込みドメインニューロン（domain neuron）を取得するステップ４２と、
前記有効重み及び前記畳み込みドメインニューロンの畳み込み処理を実行するステップ４３と、
を備える方法。
【請求項６】
請求項１乃至４の何れか一項に記載の方法により得られた有効重み及び有効重み指数を保存可能な重み・指数保存ユニットと、
前記有効重み指数に従って、前記有効重みと適合する畳み込みドメインニューロン（domain neuron）を取得可能なニューロン指数ユニットと、
前記有効重み及び前記畳み込みドメインニューロンの畳み込み処理を実行可能な計算アレイユニットと、
を備えるニューラルネットワークプロセッサ。
【請求項７】
前記畳み込みドメインニューロンと畳み込みの結果とを保存する保存ユニットと、
前記有効重み及び前記畳み込みドメインニューロンの畳み込み処理の実施順序を制御する制御ユニットと、
をさらに備えることを特徴とする請求項６に記載のニューラルネットワークプロセッサ。
【請求項８】
コンピュータプログラムを記憶するためのコンピュータが読み取り可能な記憶媒体であって、前記プログラムがプロセッサによって実行されたときに、請求項１乃至５の何れか一項に記載の方法の各ステップが実行されるものである記憶媒体。
【請求項９】
プロセッサと、前記プロセッサ上で実行可能なコンピュータプログラムが記憶されているメモリと、を備えるコンピュータ機器であって、前記プロセッサが前記プログラムを実行したときに、請求項１乃至５の何れか一項に記載の方法の各ステップが実行されるものであるコンピュータ機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータラーニングの技術分野に関するものであり、より詳細には、重みデータの保存方法及びこの方法をベースとするニューラルネットワークプロセッサに関する。
【背景技術】
【０００２】
近年では、深層学習（ディープラーニング）の技術が急速に発展し、画像認識、言語認識、自然言葉の理解、天気予報、遺伝子発現、回答の提示、ＩＴロボットなどのハイレベルな抽象的認識の問題を解決するために広く応用され、さらに、学問や産業における研究の的になっている。
深層ニューラルネットワークは人工知能の分野において最も大きな発展を示した認識モデルの一つである。この深層ニューラルネットワークはモデルを構築することにより人間の脳の神経接続構造のシミュレーションを行い、複数回の形質転換の段階を経て階層的にデータの特質を記述し、静止画、動画及び音声などの高スケールのデータ処理作業に打開策をもたらしている。深層ニューラルネットワークのモデルは、メッシュ状に相互接続された構造によって接続された多数のノードからなる作動的なモデルである。これらのノードはニューロンと呼ばれている。二つのノード間の接続強度は重み付けされた重さ、すなわち、接続信号を介する二つのノード間において、人間の神経ネットワークにおける記憶に対応する重さを表している。
【０００３】
しかしながら、従来技術においては、ニューラルネットワークは処理速度が遅いことや消費電力が大きいことなどの問題点を有していた。これはディープラーニングの技術が巨大な計算量に依存しているためである。例えば、学習段階においても、ニューラルネットワークの重みデータを取得するためには、多量のデータの反復計算の繰り返しが必要とされる。推論段階においても、特に、ニューラルネットワークが自律運転などのリアルタイムのシステムに応用されている場合などには、ニューラルネットワークは極めて短い応答時間（通常はミリ秒単位）内に、入力されたデータの処理を完了することが要求される。ニューラルネットワークが行う計算には、主に、畳み込み処理、活性化処理、プーリング処理などが含まれるが、これらの処理の中でも畳み込み処理とプーリング処理とがニューラルネットワークによる処理時間の大半を占めている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従って、ニューラルネットワークの応用範囲を拡大するためには、例えば、ＩＴ装着品、ＩＴロボット、自律運転、パターン認識などの分野において、リアルタイムでのデータ処理、低電力消費量、計算資源の有効活用などを実現するために従来技術を改良することが必要である。
【課題を解決するための手段】
【０００５】
本発明は、従来技術の欠点を解消するために、重みデータの保存方法及びこの方法をベースとするニューラルネットワークプロセッサを提供することを目的とする。
本発明の第一の態様においては、ニューラルネットワークにおける重みデータ（weight data）の保存方法であって、重み畳み込みカーネルマトリクス（weight convolution kernel matrix）における有効重み（effective weight）を検出し、有効重みの指数（index of effective weight）を算出し、前記有効重みはゼロではなく、前記有効重み指数は前記重み畳み込みカーネルマトリクスにおける前記有効重みの位置をマーキングするために用いられるステップ１と、前記有効重み及び前記有効重み指数を保存するステップ２と、を備える方法が提供される。
【０００６】
一実施形態においては、前記ステップ１は、前記重み畳み込みカーネルマトリクスを、Ｋ×Ｋの正方形マトリクスがＰ２個のサブマトリクスに均等に分割できるように、Ｋ×Ｋの正方形マトリクスに拡張し、前記Ｐは２以上の整数であるステップ１１と、前記正方形マトリクスをＰ２個のサブマトリクスに均等に分割するステップ１２と、各サブマトリクスが１個のみの重みを示すようになるまで、各々が有効重みを構成している前記Ｐ２個のサブマトリクスをサブマトリクスに再帰的かつ均等に分割し、複数レベルのサブマトリクスを得るステップ１３と、前記複数レベルのサブマトリクスにおいて各々が有効重みを構成しているサブマトリクスに対して、ビット値が１である有効パスブランチ（effective path branch）を形成し、前記有効重み指数を得るステップ１４と、を備える。
【０００７】
一実施形態においては、前記Ｋはｍｎの値を取り、ｍは２以上の整数であり、ｎは１以上の整数である。
【０００８】
一実施形態においては、前記ステップ１において、前記有効重み指数は前記重み畳み込みカーネルマトリクスにおける前記有効重みの縦横座標を示すものである。
【０００９】
本発明の第二の態様においては、ニューラルネットワークにおける畳み込み計算の方法であって、本発明に係る上記の方法により保存された有効重み及び有効重み指数を取得するステップ４１と、前記有効重み指数に従って、前記有効重みと適合する畳み込みドメインニューロン（domain neuron）を取得するステップ４２と、前記有効重み及び前記畳み込みドメインニューロンの畳み込み処理を実行するステップ４３と、を備える方法が提供される。
【００１０】
本発明の第三の態様においては、本発明に係る上記の方法により得られた有効重み及び有効重み指数を保存可能な重み・指数保存ユニットと、前記有効重み指数に従って、前記有効重みと適合する畳み込みドメインニューロン（domain neuron）を取得可能なニューロン指数ユニットと、前記有効重み及び前記畳み込みドメインニューロンの畳み込み処理を実行可能な計算アレイユニットと、を備えるニューラルネットワークプロセッサが提供される。
【００１１】
一実施形態においては、前記ニューラルネットワークプロセッサは、前記畳み込みドメインニューロンと畳み込みの結果とを保存する保存ユニットと、前記有効重み及び前記畳み込みドメインニューロンの畳み込み処理の実施順序を制御する制御ユニットと、をさらに備える。
【発明の効果】
【００１２】
従来技術と比較して、本発明は以下の利点を有している。
指数を求め、ゼロではない重みをコンパクトに保存し、さらに、この重みに対応するニューロンを畳み込みドメイン内に直接的にロックし、重みの指数を用いて畳み込み処理を実行することにより、値がゼロの重みと、ゼロの重みに対応するニューロンとが畳み込み計算の間に破棄され、これにより、ニューラルネットワークのデータ処理の保存スペースと、ロードするニューロンの数とを減らすことができる。結果的に、ニューラルネットワークの計算処理の電力消費量を効果的に減らすことができるとともに、計算資源の利用の仕方を改善することができる。本発明においては、重みデータは重みの指数とは別個に分けて保存されるので、目的のニューロンを並列的にサーチすることが容易になる。
【図面の簡単な説明】
【００１３】
添付の図面は本発明の単なる図示及び説明であって、本発明の範囲をそれに限定することを意図するものではない。
【図１（ａ）】図１（ａ）は、入力の畳み込みプロセスを示す図である。
【図１（ｂ）】図１（ｂ）は、入力の畳み込みプロセスを示す図である。
【図２】図２は、本発明の一実施形態に係る重みデータの保存方法のフローチャートである。
【図３（ａ）】図３（ａ）は、本発明の一実施形態に係る重み保存方法を示す図である。
【図３（ｂ）】図３（ｂ）は、本発明の一実施形態に係る重み保存方法を示す図である。
【図３（ｃ）】図３（ｃ）は、本発明の一実施形態に係る重み保存方法を示す図である。
【図４】図４は、本発明の一実施形態に係るニューラルネットワークプロセッサを示す図である。
【図５】図５は、図４に示したニューラルネットワークプロセッサの各ユニット間の接続を示す図である。
【図６】図６は、図５に示したニューラルネットワークプロセッサの動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
本発明の目的、技術的手段、方法及び利点の理解を容易にするため、添付の図面及び特定の実施形態を参照して本発明を以下に詳細に説明する。以下に記載される特定の実施形態は単に本発明を説明するためのものであり、本発明の範囲を限定することを意図するものではない。
【００１５】
典型的には、深層ニューラルネットワークはニューラルネットワークの複数の層を有するトポロジーであり、ニューラルネットワークの複数の層の各々が複数のフィーチャレイヤー（feature layer）を有している。例えば、畳み込みニューラルネットワークに関しては、データ処理のプロセスは、畳み込みレイヤー、プーリングレイヤー、正規化レイヤー、非線形レイヤー、完全接続レイヤーなどの複数のレイヤーからなる。畳み込みレイヤーの処理プロセスは以下の通りである：入力特性マップを二次元重み畳み込みカーネルでスキャンする、次いで、スキャンの間に、重み畳み込みカーネルと特性マップ内において対応する畳み込みドメイン内のニューロンとの内積を計算し、全ての畳み込みドメインの内積の値を合計し、出力特性マップ、すなわち、畳み込みレイヤーの出力ニューロンを得ることができる。図１は、５×５の重み畳み込みカーネルで３個の入力特性マップをスキャンするプロセスを示す図である。その後、出力特性マップは、非線形活性化機能（例えば、ＲｅＬＵなど）により、次のレイヤー（すなわち、プーリングレイヤー）にさらに移される。各畳み込みレイヤーがＮ個の出力特性マップを有している場合には、Ｌ×Ｌの大きさのＮ個の畳み込みカーネルが畳み込みレイヤーの入力特性マップを畳み込む。プーリングレイヤーはダウンサンプリングレイヤーとも呼ばれ、そのプロセスは次の通りである：特性マップ（例えば、畳み込みレイヤーによってプーリングレイヤーに出力された特性マップ）がＰ×Ｐの大きさの二次元ウインドウ（すなわち、プーリングドメイン）でスキャンされ、このスキャンの間に、そのレイヤー内にあるウインドウの対応ニューロンの最大値または平均値が計算され、プーリングレイヤーの出力ニューロンが求められる。一方、プーリングレイヤーはノイズ情報を消去することも可能であり、これにより、特性の抽出が容易になる。一方、プーリングレイヤーは次のレイヤーにおける多数の特性ニューロンを減らすことも可能であり、これによって、ネットワークのサイズを小さくすることができる。
【００１６】
ニューラルネットワークにおける畳み込み計算の効率を上げるため、本発明は重みデータの保存方法を提供する。この方法は既存のニューラルネットワークモデルにも適用可能である。簡潔に言えば、本発明に係る重みデータの保存方法は有効重み（すなわち、ゼロではない重み）の指数を求め、この指数を求めるプロセスをベースとして、重みをコンパクトに保存するものである。
【００１７】
図２は、本発明の一実施形態に係る重みデータ保存方法のフローチャートである。重みデータ保存方法は以下のステップを備えている。
【００１８】
ステップ２１０においては、オリジナルの重み畳み込みカーネルマトリクスが拡張される。
このステップにおいて、オリジナルの重み畳み込みカーネルマトリクスはＫ×Ｋの正方形マトリクスに拡張される。拡張されたマトリクスはＰ２個のサブマトリクスに均等に分割可能であるようになっている。Ｐは２以上の整数である。本実施形態においては、Ｋはｍｎの値を取り、ｍは２以上の整数であり、ｎは１以上の整数とすることができる。オリジナルの重み畳み込みカーネルマトリクスに関しては、上記の正方形マトリクスに新たに追加された要素は０（ゼロ）に設定される。
【００１９】
例えば、オリジナルの重み畳み込みカーネルマトリクスは５×５のマトリクスＡであり、このマトリクスＡが８×８のマトリクス（すなわち、Ｋ＝８、ｍ＝２、ｎ＝３）に拡張される。この場合、図３（ａ）に示すように、新たに追加される要素は０（ゼロ）に設定される。
【００２０】
【数１】
2021503644.tif 000003
【００２１】
なお、オリジナルの重み畳み込みカーネルマトリクスでは、Ｋは複数の値を取ることができる。例えば、５×５のマトリクスはＫ＝９（すなわち、ｍ＝３、ｎ＝２）のマトリクスに拡張することもできる。拡張したマトリクスをＰ２個の均等なパーツに分割する場合には、オリジナルの重み畳み込みカーネルマトリクスの大きさに最も近いＫの値を選定することが好ましい。すなわち、５×５のマトリクスについて言えば、Ｋは８に設定することが好ましい。さらに、オリジナルの畳み込みカーネルマトリクスがＰ２個の均等なパーツに分割可能な場合には、拡張を行うことなく、以下のステップＳ２２０及びＳ２３０が直接的に実行される。
【００２２】
ステップＳ２２０においては、有効重みに対して指数が求められる。
このステップにおいては、各重み畳み込みカーネルは重み指数の１単位として扱われる。指数の形成及び重み保存方法は、図３（ａ）に一例として示されている５×５の重み畳み込みカーネルを参照して以下に説明される。
【００２３】
最初に、拡張したマトリクスの中心を選定し、拡張したマトリクスを均等に分割する。本実施形態においては、４分割法、すなわち、Ｐ２＝４を採用する。図３（ａ）を参照すると、第一レベルの均等分割点は拡張した８×８のマトリクスの中心である。中心を選択することにより、拡張マトリクスを４個の同サイズのサブマトリクスに均等に分割される。例えば、このようにして得られた４個の４×４のサブマトリクスはそれぞれ次のようになる。
【００２４】
【数２】
2021503644.tif 000004
【００２５】
【数３】
2021503644.tif 000005
【００２６】
【数４】
2021503644.tif 000006
【００２７】
【数５】
2021503644.tif 000007
【００２８】
次いで、各サブマトリクスに有効重みが存在するか否かが調べられる。存在する場合には、パスブランチ（path branch）には１の印が付けられる。存在しない場合には、パスブランチには０（ゼロ）の印が付けられる。例えば、サブマトリクスＡ１、Ａ２及びＡ３は全て有効重みを有しているため、パスブランチは１となり、サブマトリクスＡ１、Ａ２及びＡ３に対応するブランチは有効ブランチと呼ばれる。サブマトリクスＡ４は有効重みを有していないため、そのパスブランチは０となる。従って、これら４個のサブマトリクスに対応するブランチのビット値は順に１１１０となり、第一レイヤーのノードは１１１０と表される。すなわち、図３（ｂ）に示すように、第一レイヤーのノードは３個の有効ブランチと１個の非有効ブランチ（図示せず）を有することになる。本実施形態においては、４個のサブマトリクスの単一ノード状況ツリーが形成され、有効ブランチのみが示される。
【００２９】
次いで、第一レイヤーノードのゼロのブランチに対応するサブマトリクスが除去され、同時に、４分割法に従って、ブランチが１であるサブマトリクスの各々について中心点（すなわち、第二レベルの均等分割点）が選定され、さらに、サブマトリクスＡ１、Ａ２及びＡ３の３個の有効ブランチのサブブランチのビット値がそれぞれ１１１１、００１０及び０１００に設定される。これら３個の値は第二レイヤーの３個のノードを構成している、すなわち、第二レイヤーのノードは合計６個の有効ブランチを有している。
【００３０】
同様に、第二レイヤーノードの１のブランチに対応するサブマトリクスは再帰的に４分割され（各サブマトリクスの中心点は第三レベルの均等分割点である）、第二レベルノードの６個の有効ブランチのサブブランチのビット値はそれぞれ０１１０、００１０、０１００、０１１０、００１０及び０１００となる。これらの６個の値は第三レイヤーの６個のノードを構成する。第三レイヤーのノードのブランチによって表されるマトリクスは１×１のマトリクスであるので、それはただ一つの重みを有し、第三レイヤーの各ノードはリーフノード（leaf node）である。
【００３１】
上述のプロセスから理解できることは、オリジナルの重み畳み込みカーネルマトリクスについては、有効重みの指数は、非リーフノード（第一レイヤー及び第二レイヤーの各ノードを含む）に対してはＴ：１１１０１１１１００１００１００（２バイト）であり、リーフノード（すなわち、第三レイヤーのノード）に対してはＬ：０１１０００１００１０００１１０００１００１００（３バイト）である。ここで、上述のプロセスにより得られた非リーフノード及びリーフノードは別個に保存され、さらに、まとめて有効重み指数と呼ばれる。このように、有効重み指数を保存するために必要なスペースを減らすことができる。例えば、本実施形態においては、８個の有効重みの指数をわずか５バイトで保存することが可能である。
【００３２】
図３（ｂ）に示す実施形態においては、各ノードは４個のサブマトリクスを有しているため、４個のブランチは左から右に向かって順に２ビット、すなわち、００、０１、１０及び１１でコード化することができ、有効ブランチのコードを組み合わせて有効パスのコードにすることができる。例えば、重み畳み込みカーネルにおいて５番目の有効重み０．３２では、有効パスのビットコードは００１１０１であり、このコードは第一レイヤーノードの有効ブランチ００と、第二レイヤーの第一ノードの有効ブランチ１１と、第四リーフノードの有効ブランチ０１とから構成されている。オリジナルの畳み込みカーネルにおける重みの縦横座標はその重みの有効パスの対応ビットコードを用いて説明することができる。例えば、ビットコードが００１１０１である場合には、このコードに対応する重みは横（Row）０１０（バイナリー表示、ビットコード００１１０１の１番目、３番目及び５番目のビット）と縦（Column）０１１（バイナリー表示、ビットコード００１１０１の２番目、４番目及び６番目のビット）、すなわち、横２と縦３（０から数える）であることが示される。同様にして、全ての有効重みのコード、すなわち、０００００１、００００１０、０００１１０、００１００１、００１１０１、００１１１０、０１１０１０及び１００１０１を得ることができる。従って、保存されている有効重みと予め定められた有効パスのコード化規則とによれば、オリジナルの畳み込みカーネルにおける有効重みの位置座標を説明することができる。
【００３３】
図３（ｂ）に示す実施形態おいては、均等分割により得られた４個のサブマトリクス（４個のサブマトリクスは２×２の順列として扱うことができる）はそれぞれ００、０１、１０及び１１にコード化されている。すなわち、００は横０及び縦０のサブマトリクスを表し、０１は横０及び縦１のサブマトリクスを表し、１０は横１及び縦０のサブマトリクスを表し、１１は横１及び縦１のサブマトリクスを表している。すなわち、各２ビット値においては、（左から右に見て）最初のビットは横の番号を、２番目のビットは縦の番号に対応している。このため、ビットコードにおける各２ビットの最初のビットは横の位置表示を形成し（すなわち、ビットコード００１１０１における１番目、３番目及び５番目のビット）、２番目のビットは縦の位置表示を形成している（ビットコード００１１０１における２番目、４番目及び６番目のビット）。
【００３４】
図３（ｂ）は単にコード化方法を図示しているだけであって、当業者であれば、他のコード化方法を用いることも可能である。例えば、各ノードの４個のブランチを左から右に１１、１０、０１及び００にコード化する方法や、ブランチを表現可能な他のコード化方法などである。コード化方法が異なれば、それに応じて、横位置及び縦位置の表示も変わってくる。他の実施形態においては、５×５のオリジナル畳み込みカーネルは９×９に拡張される。このケースでは、拡張されたマトリクスは９個の均等な部分に均等に分割可能であり（すなわち、Ｐ２＝９）、有効重みの指数は上述の方法を用いて求めることができる。
【００３５】
ステップＳ２３０においては、重みは、求めた指数に対応する重みの有効パスをベースとして保存される。
【００３６】
ステップＳ２１０及びＳ２２０からは、ゼロではない各リーフノードのバックトラッキングパスは有効重みの有効パスを表していることがわかる。有効重みは有効パスに従って左から右に保存され、重み指数を形成する。このため、本実施形態の５×５の重み畳み込みカーネルについては、有効重みは０．６０−０．７５−０．８４−０．９３−０．３２−０．８２−０．６３の順番で保存される。
【００３７】
上述の重みデータ保存方法からは、オリジナルの重み畳み込みカーネルの各有効重みの位置または座標は有効重みの保存の順番と保存された重み指数とから解析することができる、ということが理解できる。
【００３８】
他の実施形態における重みデータ保存方法は、オリジナルの重み畳み込みマトリクスを直接的にスキャンするステップと、有効重みと、当該有効重みに対応する横縦座標を求めるステップと、当該有効重みの横座標及び縦座標を有効重みの指数として当該有効重みとともに保存するステップと、を備える。図２に示した実施形態と比較すると、この実施形態はオリジナルの畳み込みカーネルを拡張し、さらに、均等に分割するプロセスを単純化することができるが、重み指数を保存するために必要なスペースは相対的に増大する。
【００３９】
要約すると、本発明においては、有効重み指数を求め、さらに、重み指数の有効パスとともに順番に重みを保存することにより、畳み込みカーネルにおいて重みがゼロである多数の要素を圧縮することが可能になり、これにより、重みをコンパクトに保存することができる効果を達成するとともに、保存のスペースを効果的に減らすことが可能になる。
【００４０】
さらに、重み畳み込みカーネルと畳み込みドメインのニューロンの畳み込み計算のプロセスにおいて、畳み込みドメインのニューロンを有効重み指数に従ってスクリーニングすることができ、非有効重みに対応するニューロンのロードを回避することが可能になる。詳細には、オリジナル畳み込みカーネルの重みの縦横座標は、有効重み指数に対応してパスをコード化することにより得ることができ、それらの座標は畳み込みドメインにおける有効重み畳み込みに適合するニューロンの座標でもある。さらに、目標のニューロンの位置は図３（ｃ）に示すようにして正確に固定（ロック）することができる。入力特性マップの畳み込みドメインにおける有効重みに対応するニューロンを重み指数を介して求めることにより、畳み込みの結果に影響を与えないニューロンを廃棄することができ、これにより、畳み込み計算の効率を向上させることができる。
【００４１】
本発明の重みデータ保存方法及びこの保存方法に対応して重み指数をベースとしてニューロンを畳み込みドメインにロードする方法はニューラルネットワークプロセッサに応用して、畳み込み処理の効率を向上させることができる。図４は本発明の一実施形態に係るニューラルネットワークプロセッサを示す。このニューラルネットワークプロセッサ４０１は、制御ユニット４０２と、入力データ保存ユニット４０３と、出力データ保存ユニット４０５と、重み保存ユニット４０４と、入力されたニューロンの貯蔵ユニット４０６と、重み貯蔵ユニット４０７と、計算アレイ４００（少なくとも１個の計算ユニット４１０を備えている）と、出力貯蔵ユニット４１１と、重み指数形成ユニット４１２と、重みをコンパクトに保存するユニット４１３と、ニューロン指数ユニット４１４と、を備えている。
【００４２】
入力データ保存ユニット４０３は入力ニューロン貯蔵ユニット４０６に接続されており、ニューラルネットワークの各層により処理される目標データを保存するように構成されている。データには、オリジナル特性マップと、中間レイヤーの計算に関与する入力データとが含まれる。
【００４３】
出力データ保存ユニット４０５は出力貯蔵ユニット４１１に接続されており、出力されたニューロンと、計算アレイ４００により計算された中間結果とを保存するように構成されている。
【００４４】
重み保存ユニット４０４は重み貯蔵ユニット４０７に接続されており、重み及び畳み込み処理による指数の他に、形成されたニューラルネットワークの重みをも保存するように構成されている。
【００４５】
入力ニューロン貯蔵ユニット４０６は計算アレイ４００に接続されており、計算アレイ４００にニューロン入力値を送り込む。
【００４６】
重み貯蔵ユニット４０７は計算アレイ４００に接続されており、種々の出力特性マップに対して圧縮された重みを計算アレイ４００に送る。
【００４７】
重み指数形成ユニット４１２は重み貯蔵ユニット４０７に接続されており、有効重みに対する指数を形成し、指数形成の間に得られた有効重みを重みコンパクト貯蔵ユニット４１３に出力し、さらに、重み指数を重み保存ユニット４０４に出力する。
【００４８】
重みコンパクト貯蔵ユニット４１３は重み指数形成ユニット４１２に接続されており、指数形成の間に抽出された有効重みを受け取り、これらの有効重みをコンパクトに保存することを実行し、さらに、重み圧縮の結果を重み保存ユニット４０４に出力する。
【００４９】
ニューロン指数ユニット４１４は重み貯蔵ユニット４０７に接続されており、重み貯蔵ユニット４０７内の重み指数を受け取り、これらの有効重みの有効パスを解析し、有効パスを相対的アドレスに変換し、入力ニューロン貯蔵ユニット４０６に送る。
【００５０】
計算アレイ４００は出力貯蔵ユニット４１１に接続されており、畳み込み計算を実行し、出力特性マップの畳み込み計算野結果を得るように構成されている。
【００５１】
出力貯蔵ユニット４１１は出力データ保存ユニット４０５に接続されており、出力特性マップの畳み込み計算の結果または中間結果を得るように構成されている。
【００５２】
制御ユニット４０２は、入力データ保存ユニット４０３と、重み保存ユニット４０４と、出力データ保存ユニット４０５と、入力ニューロン貯蔵ユニット４０６と、重み貯蔵ユニット４０７と、計算アレイ４００と、重み指数形成ユニット４１２と、重みをコンパクトに保存するユニット４１３と、ニューロン指数ユニット４１４とにそれぞれ接続されている。制御ユニット４０２はニューラルネットワークの各レイヤーのパラメータとプロセッサ内の計算アレイ４００のパラメータとを取得し、ニューロン及び重みに対して畳み込み計算を実行し、各貯蔵ユニットにおけるデータのロードとデータの貯蔵の順番とを制御することにより、畳み込み処理の結果の正確性を保証している。
【００５３】
本発明の重みデータ保存方法や重み指数に基づいて畳み込みドメインニューロンをロードするための方法を実行することが要求されている重み指数形成ユニット４１２、重みコンパクト保存ユニット４１３及びニューロン指数ユニット４１４に加えて、図４に示すニューラルネットワークプロセッサは出力貯蔵ユニット４１１、出力データ保存ユニット４０５、入力データ保存ユニット４０３及び他の形式の保存または貯蔵ユニットをさらに備えている。これらの保存ユニットはデータのロード、データ処理、ニューラルネットワークプロセッサの計算結果の出力を円滑に実行することを保証し、これにより、ニューラルネットワークプロセッサのデータ量を改善している。
【００５４】
図４はニューラルネットワークプロセッサをモジュラー形式で図示している。各ユニット間の接続関係及びデータ処理のプロセスのより一層の理解を可能にするため、図５は図４に示したニューラルネットワークプロセッサをさらに詳しく示している。図５の入力された重み及び指数の貯蔵ユニットは図４の重み貯蔵ユニットに対応し、図示されている活性化ユニット及びプーリングユニットはそれぞれ各ニューラルネットワークレイヤーにおいて活性化とプーリングを行うように構成されている。
【００５５】
図５を参照すると、ニューラルネットワークプロセッサの処理プロセスは、例えば、１個の入力特性マップと４個の出力特性マップとを取得し、さらに、ユニットとしての１個の重み畳み込みカーネル（図６を参照）を取得することにより、開始される。具体的には、本処理プロセスは以下のステップを有している。
【００５６】
ステップＳ６１０においては、圧縮された重み、入力されたニューロン及び重み指数がそれぞれ対応する貯蔵ユニットにロードされる。
本発明に係る重みデータ保存方法により得られた圧縮された重み及び重み指数は入力重み・指数貯蔵ユニットにロードされ、入力されたニューロンはニューロン貯蔵ユニットにロードされる。貯蔵ユニットが一杯である場合には、データのロードは保留される。
【００５７】
ステップＳ６２０においては、圧縮された重みと、対応する畳み込みドメインのニューロンとは計算アレイにロードされる。
具体的には、ステップＳ６２０は、記憶されたオリジナルの順番に従って圧縮された重みを計算アレイに直接的にロードするステップと、重み指数を用いて、貯蔵されたニューロン畳み込みドメイン内の圧縮された重みに対応するニューロンをロックするステップと、を備えている。
【００５８】
例えば、４個の出力特性マップ（すなわち、４組の畳み込みカーネルがあり、各畳み込みドメイン内のニューロンは全ての畳み込みカーネルで畳み込み処理されることが必要である）については、畳み込みドメインのニューロンの４個のコピーが作成された後にニューロンはニューロン指数ユニット内に配置され、ニューロン指数ユニットは、種々の出力特性マップに対応する重み指数に従って、有効重み指数に対応するニューロンを含むようにニューロンを選択し、次いで、他のニューロンを廃棄する。
ステップＳ６３０においては、計算アレイは圧縮重み及びそれに対応するニューロンに対して畳み込み処理を実行する。
【００５９】
具体的には、圧縮重み及びそれに対応するニューロンは二つの有効ベクトルを構成し、計算アレイはこれらの二つのベクトルに対して畳み込み処理を実行し、中間処理または畳み込みの結果は出力貯蔵ユニットにロードされる。貯蔵ユニットが一杯である場合には、書き込みは保留され、貯蔵ユニット内のデータは出力データ貯蔵ユニットに出力される。
ステップＳ６１０、Ｓ６２０及びＳ６３０によって、畳み込みドメイン内のニューロンに対する畳み込みカーネルの畳み込み処理が完了する。
【００６０】
ステップＳ６４０においては、ロードされた圧縮重みを再び用いて、更新された畳み込みドメインに対して畳み込み計算が実行される。
【００６１】
畳み込みドメインの畳み込み処理が完了した後には、ロードされた重みは計算アレイ内に保持される。更新された畳み込みドメインはストライド状にシフトされ、新たな畳み込みドメインのニューロンがロードされる。新たな畳み込みドメインの有効ニューロンは重み指数に従ってロックされ、さらに、計算アレイにロードされる。このプロセスは、入力特性マップの全てのニューロンの畳み込み計算が完了するまで、繰り返される。
【００６２】
本発明の他の実施形態においては、入力特性マップが複数ある場合には、１個の入力特性マップにおける種々の畳み込みドメインの畳み込み処理が最初に実行され、次いで、他の特性マップが順番に処理される。このようにして、ロードされた圧縮重みを再利用することができる。
【００６３】
ステップＳ６５０においては、活性化及びプーリングが実行される。
得られた畳み込みの結果は活性化され、プーリングされる。このプロセスは従来技術に属するものであるので、ここでは詳細には説明しない。
【００６４】
要約すると、本発明においては、有効重みをコンパクトに貯蔵することにより、貯蔵のスペースを節約することができ、さらに、有効重み指数に基づいて行われる対応ニューロンのロードは畳み込み計算の効率を向上させ、これにより、特に、多数の重みがゼロである希薄なニューラルネットワークに対して顕著な効果を発揮する。
【００６５】
本発明に係るニューラルネットワークプロセッサは、携帯電話や埋め込み式電子機器などの様々な電子機器に応用可能である。
【００６６】
本発明においては、重みは圧縮して保存される。このため、本発明に係る方法に従って保存された重みは圧縮重みとも呼ぶことがある。さらに、畳み込みカーネル、重み畳み込みカーネル及び重み畳み込みカーネルマトリクスは全て同じ意味である。それらは重みの値により形成されたマトリクスでもあり、畳み込みドメインにおいてニューロンを畳み込むために使用される。
【００６７】
各種ステップを上述の特定の順番で説明したが、これらのステップはその特定の順番に従って実行されるべきものであることを意味するものではない。実際には、所望の機能が達成される限りにおいて、これらのステップのうちのいくつかは同時に実行してもよく、あるいは、異なる順番で実行してもよい。
【００６８】
本発明はシステム、方法及び／またはコンピュータプログラムとして成立し得る。コンピュータプログラムには、プロセッサに本発明の種々の態様を実行させるためのコンピュータが読み取り可能なプログラムによる指示を保存可能なコンピュータによる読み取り可能な記憶媒体をも含めることができる。
【００６９】
コンピュータが読み取り可能な記憶媒体は、指示実行機器によって使用される機器であって、指示を保持・保存可能な物理的な機器として構成することができる。コンピュータが読み取り可能な記憶媒体は、例えば、電子記憶機器、磁気記憶機器、光学記憶機器、電磁気記憶機器、半導体記憶機器、あるいは、他のこれらの適切な組み合わせとして構成することができるが、それらに限定されるものではない。コンピュータが読み取り可能な記憶媒体のより具体的な例としては（全てを挙げるものではない）、プログラム可能なコンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、消去可能かつプログラム可能なリードオンリーメモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、携帯式コンパクトディスク型リードオンリーメモリ（ＣＤ−ＲＯＭ）、ディジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、パンチ式カードまたは指示が保存された、溝内の凸状体などの機械式コーディング機器、これらの適切な組み合わせなどがある。
【００７０】
本発明の様々な実施形態を説明したが、上記の説明は限定的なものではなく例示的なものであり、上記の実施形態に限定されるものではない。当業者にとっては、図示した様々な実施形態の範囲・概念を逸脱することなく、多くの応用・変更が可能であることが明白である。本明細書における用語は種々の実施形態の原理や実際の応用、または、市場における技術の改良を最も適切に説明することを意図して、あるいは、当業者が本明細書において記載された実施形態を理解し得るように、選択されている。
【図１（ａ）】
2021503644.tif 000008
【図１（ｂ）】
2021503644.tif 000009
【図２】
2021503644.tif 000010
【図３（ａ）】
2021503644.tif 000011
【図３（ｂ）】
2021503644.tif 000012
【図３（ｃ）】
2021503644.tif 000013
【図４】
2021503644.tif 000014
【図５】
2021503644.tif 000015
【図６】
2021503644.tif 000016
【国際調査報告】
2021503644.tif 000017
2021503644.tif 000018
2021503644.tif 000019
2021503644.tif 000020