(57)【特許請求の範囲】
【請求項１】
入力データに対してカーネルを移動させつつ行う複数回の畳み込み演算及び当該複数回の畳み込み演算の結果に対して行う平均プーリングに代わる処理を行う情報処理装置であって、
前記カーネルの要素毎に、前記入力データに含まれる入力値の中から前記複数回の畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第１算出部と、
前記カーネルの要素毎に、当該要素について前記第１算出部により算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する第２算出部と、
を有する情報処理装置。
【請求項２】
前記入力データからＳＡＴ（Summed Area Table）を生成する生成部
をさらに有し、
前記第１算出部は、
特定された前記入力値を含む矩形領域について、前記入力値の総和を前記ＳＡＴを用いて算出する、
請求項１記載の情報処理装置。
【請求項３】
入力データに対してカーネルを移動させつつ行う複数回の畳み込み演算及び当該複数回の畳み込み演算の結果に対して行う平均プーリングに代わる処理を行うための演算方法であって、
コンピュータが、
記憶部に記憶された前記カーネルの要素毎に、前記入力データに含まれる入力値の中から前記複数回の畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
前記記憶部に記憶された前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
処理を実行する、畳み込みニューラルネットワークの演算方法。
【請求項４】
入力データに対してカーネルを移動させつつ行う複数回の畳み込み演算及び当該複数回の畳み込み演算の結果に対して行う平均プーリングに代わる処理を行うための演算プログラムであって、
コンピュータに、
記憶部に記憶された前記カーネルの要素毎に、前記入力データに含まれる入力値の中から前記複数回の畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
前記記憶部に記憶された前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
処理を実行させる、畳み込みニューラルネットワークの演算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、畳み込みニューラルネットワークに関する。
【背景技術】
【０００２】
多層ニューラルネットワークは多層構造を有するニューラルネットワークであり、主に音声、画像或いは言語等に関する情報処理に利用されている。図１に、多層ニューラルネットワークの一例を示す。図１において、丸の図形はノードを表し、ノードを結ぶ線分はエッジを表し、同じ矩形に含まれるノードは同じ層に属する。多層ニューラルネットワークにおいては、下位の層から上位の層へ順に演算が行われる。例えば、図１において左に位置する層ほど階層が下である場合、左の層から右の層へ順に演算が行われる。多層ニューラルネットワークに対しては学習用の入力データが与えられ、入力データに対する演算の結果である出力データと教師データとの差分に基づきエッジの重みが更新される。
【０００３】
一般に画像処理の分野では、多層ニューラルネットワークの一種である畳み込みニューラルネットワークが利用される。図２に、畳み込みニューラルネットワークの一例を示す。畳み込みニューラルネットワークは、畳み込み層とプーリング層とを含む。畳み込み層においては、学習による最適化の対象であるカーネル（フィルタとも呼ばれる）によって入力画像に対して畳み込み演算が行われる。畳み込み層において検出された特徴は、プーリング層でのプーリングによって選別及び集約される。そのため、畳み込みニューラルネットワークにおいては畳み込み層及びプーリング層がセットとして取り扱われる。
【０００４】
例えば図３に示すように、Ｎ＊Ｎの入力データｕに対してｋ＊ｋのカーネルｗによって畳み込み演算を実行した場合、（Ｎ−ｋ）＊（Ｎ−ｋ）の出力データｚが得られる。ここで、出力データｚにおける出力値ｚx,yは以下のように計算される。
【０００５】
【数１】
0006750203.tif 000002
【０００６】
また、例えば図４に示すように、プーリング層においては畳み込み層から出力された出力データｚの各領域（図４の例では４つの領域の各々）に対して演算が行われ、演算結果Ｐ＿ｏが出力される。プーリングには最大プーリングと平均プーリングとが有り、前者は領域に含まれる値の最大値を特定する処理であり、後者は領域に含まれる値の平均を算出する処理である。
【０００７】
なお、多層ニューラルネットワークによる機械学習は、学習時間が非常に長く、学習時間を短縮するために並列分散処理に関する研究が盛んに行われている。学習時間の長期化は主に畳み込み演算の演算量の多さに起因しているため、畳み込み演算の演算量を削減すれば学習時間を大幅に短縮することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−９８９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、１つの側面では、平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減するための技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第１算出部と、カーネルの要素毎に、当該要素について第１算出部により算出された総和と当該要素との積を算出し、算出された当該積の平均を算出する第２算出部とを有する。
【発明の効果】
【００１１】
１つの側面では、平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減できるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、多層ニューラルネットワークの一例を示す図である。
【図２】図２は、畳み込みニューラルネットワークの一例を示す図である。
【図３】図３は、畳み込み層の処理の一例を示す図である。
【図４】図４は、プーリング層の処理の一例を示す図である。
【図５】図５は、畳み込み演算を説明するための図である。
【図６】図６は、平均プーリングを説明するための図である。
【図７】図７は、ＳＡＴの生成処理を説明するための図である。
【図８】図８は、ＳＡＴを用いて矩形領域内の入力値の総和を算出する方法を説明するための図である。
【図９】図９は、情報処理装置の機能ブロック図である。
【図１０】図１０は、メインの処理フローを示す図である。
【図１１】図１１は、生成処理の処理フローを示す図である。
【図１２】図１２は、カーネル要素と入力データとの関係を示す図である。
【図１３】図１３は、総和テーブル格納部に格納される総和テーブルの一例を示す図である。
【図１４】図１４は、本実施の形態の処理を実行するためのプログラムの一例を示す図である。
【図１５】図１５は、本実施の形態における計算の具体例を示す図である。
【図１６】図１６は、本実施の形態における計算の具体例を示す図である。
【図１７】図１７は、本実施の形態における計算の具体例を示す図である。
【図１８】図１８は、プーリング層の出力が複数要素である場合を説明するための図である。
【図１９】図１９は、プーリング層の出力が複数要素である場合を説明するための図である。
【図２０】図２０は、プーリング層の出力が複数要素である場合を説明するための図である。
【図２１】図２１は、プーリング層の出力が複数要素である場合を説明するための図である。
【図２２】図２２は、プーリング層の出力が複数要素である場合を説明するための図である。
【図２３】図２３は、プーリング層の出力が複数要素である場合を説明するための図である。
【図２４】図２４は、ＳＧＥＭＭを使用した畳み込み演算の一例を示す図である。
【図２５】図２５は、行列積の一例を示す図である。
【図２６】図２６は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１３】
まず、本実施の形態の概要を説明する。
【００１４】
通常、畳み込み演算においては、入力データに含まれる、カーネルサイズと同サイズの部分領域に対してカーネルが適用される。例えば図５においては、サイズが３＊３である９つの部分領域に対してカーネルが適用され、出力ｚ0乃至ｚ8が計算される。計算式は上で述べたとおりである。そして、平均プーリングにおいては、畳み込み層の出力の平均を求める処理が実行される。例えば図６においては、畳み込み層の出力に含まれる値の総和を値の数（＝９）で割ることによってプーリング層の出力Ｐoutが算出される。
【００１５】
本実施の形態においては、プーリング層の出力Ｐoutを別の方法によって算出することによって演算量を削減する。着眼点を以下で説明する。
【００１６】
図６に示した式において、ｚ0乃至ｚ8の総和が求められているが、この式の右辺は｛Ａ（ｅ0＋ｅ1＋・・・＋ｅ12）＋Ｂ（ｅ1＋ｅ2＋・・・＋ｅ13）＋Ｃ（ｅ2＋ｅ3＋・・・＋ｅ14）＋Ｄ（ｅ5＋ｅ6＋・・・＋ｅ17）＋Ｅ（ｅ6＋ｅ7＋・・・＋ｅ18）＋Ｆ（ｅ7＋ｅ8＋・・・＋ｅ19）＋Ｇ（ｅ10＋ｅ11＋・・・＋ｅ22）＋Ｈ（ｅ11＋ｅ12＋・・・＋ｅ23）＋Ｉ（ｅ12＋ｅ13＋・・・＋ｅ24）｝／９と書き換えることができる。すなわち、各カーネル要素は入力データにおける矩形領域内の入力値の総和に掛け合わされている。例えば図５に示した入力データのうち、実線で囲まれた部分領域内の入力値に対してはカーネル要素「Ａ」が掛け合わされており、一点鎖線で囲まれた部分領域内の入力値に対してはカーネル要素「Ｂ」が掛け合わされている。従って、各矩形領域内の入力値の総和を高速で算出できれば、プーリング層の出力を算出するまでの時間を大幅に短縮することができる。
【００１７】
そこで本実施の形態においては、矩形領域内の入力値の総和を、ＳＡＴ（Summed Area Table）（積分画像とも呼ばれる）を利用することで算出する。ＳＡＴの生成処理はよく知られた処理であるが、念のため図７を用いてＳＡＴの生成処理を説明する。例えば、入力データが図７に示すような行列データであるとする。この入力データからＳＡＴが生成される場合、まず列方向に累積和を求めることによって中間的なデータが生成される。そして、中間的なデータについて、行方向に累積和を求めることによってＳＡＴが生成される。ＳＡＴの各要素は、その要素に対応する入力値、及び、その要素より左又は上に位置する要素に対応する入力値の総和を表す。例えば、「４６」である要素は、４＋６＋９＋４＋２＋５＋７＋５＋４に相当する。
【００１８】
図８を用いて、ＳＡＴを用いて矩形領域内の入力値の総和を算出する方法について説明する。例えば、入力データのうちハッチングが付された矩形領域内の入力値の総和を算出することを考える。この場合には、矩形領域内の右下の要素に対応するＳＡＴの要素から、矩形領域内の左下の要素に対応するＳＡＴの要素の左に隣接する要素と、矩形領域内の右上の要素に対応するＳＡＴの要素の上に隣接する要素とを差し引き、矩形領域内の左上の要素に対応するＳＡＴの要素の左上に隣接する要素を加えることで、矩形領域内の入力値の総和が算出される。
【００１９】
このように、本実施の形態によれば、畳み込み演算を矩形領域内の入力値の総和を求める問題に置き換え、総和をＳＡＴによって求めることで、平均プーリングの完了までに要する時間を短縮することができる。
【００２０】
以下では、本実施の形態の詳細を説明する。図９に、本実施の形態の情報処理装置１の機能ブロック図を示す。情報処理装置１は、入力データ格納部１０１と、ＳＡＴ生成部１０２と、ＳＡＴ格納部１０３と、総和テーブル生成部１０４と、カーネル格納部１０５と、総和テーブル格納部１０６と、算出部１０７と、プーリング出力データ格納部１０８と、処理部１０９と、更新部１１０とを含む。算出部１０７は、第１算出部１０７１と第２算出部１０７２とを含む。
【００２１】
ＳＡＴ生成部１０２は、入力データ格納部１０１に格納されたデータに基づき処理を実行し、処理結果をＳＡＴ格納部１０３に格納する。総和テーブル生成部１０４は、入力データ格納部１０１に格納されたデータ、ＳＡＴ格納部１０３に格納されたデータ及びカーネル格納部１０５に格納されたデータに基づき処理を実行し、処理結果を総和テーブル格納部１０６に格納する。算出部１０７における第１算出部１０７１及び第２算出部１０７２は、カーネル格納部１０５に格納されたデータ及び総和テーブル格納部１０６に格納されたデータに基づき処理を実行し、処理結果をプーリング出力データ格納部１０８に格納する。処理部１０９は、プーリング出力データ格納部１０８に格納されたデータに基づき処理を実行し、処理結果を更新部１１０に通知する。更新部１１０は、処理部１０９から受け取った処理結果に基づき、カーネル格納部１０５に格納されたカーネルを更新する。
【００２２】
次に、図１０乃至図２３を用いて、情報処理装置１の動作を説明する。本実施の形態においては、プーリング層の処理が平均プーリングであり且つ畳み込み層でのストライド（すなわち横方向の移動間隔）が１であるとする。また、説明を簡単にするため、ミニバッチサイズを１とし、カーネル数を１とし、プーリング層の出力が１要素であるとする。
【００２３】
まず、ＳＡＴ生成部１０２は、入力データ格納部１０１に格納された入力データを読み出す（図１０：ステップＳ１）。入力データは例えば画像データであり、複数の入力値（例えば画素値）を含む。但し、入力データが画像データ以外のデータであってもよい。
【００２４】
ＳＡＴ生成部１０２は、ステップＳ１において読み出した入力データからＳＡＴを生成し（ステップＳ３）、ＳＡＴ格納部１０３に格納する。
【００２５】
そして、総和テーブル生成部１０４は、生成処理を実行する（ステップＳ５）。生成処理については、図１１乃至図１３を用いて説明する。
【００２６】
総和テーブル生成部１０４は、カーネル格納部１０５に格納されたカーネルの要素（以下、カーネル要素と呼ぶ）のうち未処理のカーネル要素（以下、処理対象のカーネル要素と呼ぶ）を１つ特定する（図１１：ステップＳ２１）。
【００２７】
総和テーブル生成部１０４は、入力データ格納部１０１に格納された入力データから、処理対象のカーネル要素と掛け合わされる入力値を含む矩形領域（以下、処理対象の矩形領域と呼ぶ）を特定する（ステップＳ２３）。
【００２８】
総和テーブル生成部１０４は、処理対象の矩形領域内の入力値の総和を、ＳＡＴを用いて算出する（ステップＳ２５）。矩形領域内の入力値の総和を算出する方法については、上で説明したとおりである。
【００２９】
総和テーブル生成部１０４は、ステップＳ２５において算出された総和を、総和テーブル格納部１０６における総和テーブルに格納する（ステップＳ２７）。総和は、掛け合わされるカーネル要素の位置に対応する位置に格納される。例えば図１２に示すように、丸印のカーネル要素は矩形領域１１０１内の入力値の総和に掛け合わされ、星印のカーネル要素は入力データのうち矩形領域１１０２内の入力値の総和に掛け合わされる場合、丸印のカーネル要素について算出された総和は丸印のカーネル要素の位置に対応する位置に格納され、星印のカーネル要素について算出された総和は星印のカーネル要素の位置に対応する位置に格納される。なお、入力データのサイズをＮ＊Ｎ、カーネルのサイズをｋ＊ｋとすると、矩形領域のサイズは（Ｎ−ｋ＋１）＊（Ｎ−ｋ＋１）である。
【００３０】
図１３に、入力データが図５に示したデータである場合において総和テーブル格納部１０６に格納される総和テーブルの一例を示す。総和テーブルの各要素は、図５に示した入力データにおける矩形領域内の入力値の総和に相当する。
【００３１】
図１１の説明に戻り、総和テーブル生成部１０４は、未処理のカーネル要素が有るか判定する（ステップＳ２９）。未処理のカーネル要素が有る場合（ステップＳ２９：Ｙｅｓルート）、ステップＳ２１の処理に戻る。一方、未処理のカーネル要素が無い場合（ステップＳ２９：Ｎｏルート）、呼び出し元の処理に戻る。
【００３２】
図１０の説明に戻り、算出部１０７における第１算出部１０７１は、カーネルのデータをカーネル格納部１０５から読み出し、また、総和テーブル格納部１０６に格納された総和テーブルを読み出す（ステップＳ７）。そして、第１算出部１０７１は、カーネル要素毎に、カーネル要素と対応する総和テーブルの要素との積を算出する（ステップＳ９）。例えば、図５に示したカーネル及び図１３に示した総和テーブルについてステップＳ９の処理を実行すると、Ａｓ0、Ｂｓ1、Ｃｓ2、Ｄｓ3、Ｅｓ4、Ｆｓ5、Ｇｓ6、Ｈｓ7及びＩｓ8が算出される。
【００３３】
第２算出部１０７２は、ステップＳ９において算出された積の平均を算出し（ステップＳ１１）、算出された平均をプーリング出力データ格納部１０８に格納する。なお、ステップＳ１乃至Ｓ１１の処理と同様の処理を実行するためのプログラムは、例えば図１４に示すようなプログラムである。但し、このようなプログラムに限られるわけではない。
【００３４】
処理部１０９は、プーリング出力データ格納部１０８に格納されたデータを読み出し、読み出したデータに対して畳み込み層及びプーリング層の後の層（例えば、全結合層又はソフトマックス層など）の処理を実行し、畳み込みニューラルネットワークの出力データを生成する（ステップＳ１３）。なお、畳み込み層及びプーリング層の後の層が無い場合には、ステップＳ１３の処理はスキップされ、ステップＳ１１において算出された平均が出力データである。ステップＳ１３の処理は通常の畳み込みニューラルネットワークにおいても行われる処理であり、本実施の形態の主要な部分ではないので、詳細な説明を省略する。
【００３５】
処理部１０９は、ステップＳ１３において生成された出力データと、予め用意された教師データとの誤差を算出し（ステップＳ１５）、ステップＳ１５において算出された誤差を更新部１１０に通知する。これに応じ、更新部１１０は、カーネル格納部１０５に格納されたカーネルを更新する（ステップＳ１７）。そして処理は終了する。ステップＳ１５及びＳ１７の処理も通常の畳み込みニューラルネットワークにおいて行われる処理であり、本実施の形態の主要な部分ではないので、詳細な説明を省略する。
【００３６】
図１５乃至図１７に、本実施の形態における計算の具体例を示す。本具体例では、プーリング層の出力が１要素であるものとする。そして、図１５に示すように、カーネルのサイズは２＊２であり、入力データのサイズは５＊５であるとする。この場合、入力データに含まれる入力値の累積和を列方向及び行方向に算出することによって、サイズが５＊５であるＳＡＴが生成される。
【００３７】
そして、図１６に示すように、サイズが４（＝５−２＋１）＊４である矩形領域内の入力値の総和が、ＳＡＴを用いて算出される。１行目における１列目のカーネル要素に対応する総和は６６であり、１行目における２列目のカーネル要素に対応する総和は６４であり、２行目における１列目のカーネル要素に対応する総和は５６であり、２行目における２列目のカーネル要素に対応する総和は６２である。ＳＡＴの枠外の値は０であるとする。算出された総和は、総和テーブルに格納される。
【００３８】
そして、図１７に示すように、ステップＳ９及びＳ１１の畳み込み演算及び平均の算出によって、プーリング層の出力が生成される。
【００３９】
以上のように、本実施の形態によれば、ＳＡＴを利用することで任意の矩形領域内の入力値の総和を定数時間で算出できるので、畳み込み演算の演算量を削減することができるようになる。また、通常の畳み込み演算においてはカーネルのサイズ及び数が大きくなった場合には演算量が多くなるが、本実施の形態の方法はカーネルのサイズに依存せず、畳み込み演算の演算量を安定的に削減することができる。さらに、通常の畳み込み演算においては、カーネルのサイズが異なる場合にはライブラリに投入される行列が変わるため、カーネルのサイズが異なる畳み込みニューラルネットワークは別の畳み込みニューラルネットワークであるとして取り扱われる。しかし、本実施の形態の方法であれば、カーネルのサイズが不均一であっても問題は無い。
【００４０】
ここまではプーリング層の出力が１要素である場合について説明をしたが、以下では、プーリング層の出力が複数要素である場合について説明をする。また、ＳＡＴの使用方法を変更することを考える。
【００４１】
ここでは、図１８に示すように、入力データのサイズが８＊８であり、カーネルのサイズが３＊３であるとする。また、プーリング層の出力が４（＝２＊２）要素であるとする。通常の畳み込み演算を実行する場合、カーネルが適用される３６の部分領域が入力データから生成され、各部分領域とカーネルとによって畳み込み演算が実行される。畳み込み層の出力は、図１９に示すように、３６の要素を有する。そして、図２０に示すように、畳み込み層の出力は４（＝２＊２）つの部分領域に分割され、各部分領域に含まれる要素の平均が算出される。結果として、プーリング層の出力は４要素である。なお、通常の畳み込み演算を実行するためのプログラムは、例えば図２１に示すようなプログラムである。
【００４２】
ここで、畳み込み層の出力からＳＡＴを生成することを考える。例えば図２２に示すように、畳み込み層の出力に対して列方向の累積和を計算し、さらに行方向の累積和を計算することでＳＡＴを生成する。このようにすれば、ＳＡＴの要素ｔ１４を要素数９で割った値と、ＳＡＴの要素ｔ１７を要素数９で割った値と、ＳＡＴの要素ｔ３２を要素数９で割った値と、ＳＡＴの要素ｔ３５を要素数９で割った値とがプーリング層の出力に該当する。しかし、この方法においてはＳＡＴが４つ生成されるので、通常の畳み込み演算よりも演算量が多くなってしまう。
【００４３】
従って、ＳＡＴを生成するのであれば、本実施の形態のように入力データから生成することが効果的である。本実施の形態を適用する場合、図２３に示すように、入力データから４つの矩形領域を生成し、各矩形領域について上で述べた処理を実行すればよい。本実施の形態によれば、入力データから生成したＳＡＴが１つあれば任意の矩形領域内の入力値の総和を求めることができる。また、入力データからＳＡＴを生成するのでＳＡＴはカーネルと無関係であり、カーネルが複数有ってもＳＡＴは１つ有ればよい。
【００４４】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００４５】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００４６】
また、カーネルの形状は正方形には限られず、任意の矩形のカーネルに対して本実施の形態の処理を適用可能である。
【００４７】
また、畳み込み層の数は１つには限られない。複数の畳み込み層が連なった畳み込みネットワークであっても、１度生成したＳＡＴによって一度にプーリング層の出力を生成することができる。
【００４８】
［付録］
以下の付録においては、ＳＧＥＭＭ（Single precision floating GEneral Matrix Multiply）を使用して畳み込み演算を実行する方法について説明を追加する。
【００４９】
図２４に、ＳＧＥＭＭを使用した畳み込み演算の概要を示す。ＳＧＥＭＭにおいては、ＧＰＵ（Graphics Processing Unit）による高速な行列積計算によって畳み込み演算を行うため、入力画像及びカーネルが行列計算ライブラリに投入可能な形式に変形される。図２４に示したように、入力画像に対応する行列と、カーネルに対応する行列とが生成され、これらの行列の行列積が計算される。入力画像のサイズがＮ＊Ｎであり、ミニバッチのサイズが１であり、カーネルのサイズがｋ＊ｋであり、カーネル数がｄであるとすると、図２５に示すような行列積を計算することになる。この場合、乗算の演算量はｄｋ2（Ｎ−ｋ＋１）2であり、加算の演算量もｄｋ2（Ｎ−ｋ＋１）2である。これに加え、ＳＧＥＭＭを利用するために行列生成のパーミュテーション操作及び一般的なプーリング層での処理が行われるので、さらに演算量が多くなる。
【００５０】
一方、本実施の形態においては、（１）各列の累積和の計算、（２）各行の累積和の計算、（３）カーネル数＊４の要素を取得する処理及び総和を算出する処理、（４）各カーネル要素への乗算、（５）カーネルごとに値の総和を求める処理、が実行される。この場合、乗算の演算量はｄｋ2であり、加算の演算量は２Ｎ2＋４ｄｋ2＋ｋ2−１である。次数が減っているので、演算量を大幅に削減することができている。
【００５１】
以上で付録を終了する。
【００５２】
なお、上で述べた情報処理装置１は、コンピュータ装置であって、図２６に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００５３】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００５４】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第１算出部と、（Ｂ）カーネルの要素毎に、当該要素について第１算出部により算出された総和と当該要素との積を算出し、算出された当該積の平均を算出する第２算出部とを有する。
【００５５】
これにより、畳み込み演算が矩形領域内の入力値の総和を求める問題に変換されるので、平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減することができるようになる。
【００５６】
また、本情報処理装置は、（Ｃ）入力データからＳＡＴ（Summed Area Table）を生成する生成部をさらに有してもよい。そして、上で述べた第１算出部は、（ａ１）特定された入力値を含む矩形領域について、入力値の総和をＳＡＴを用いて算出してもよい。ＳＡＴを利用すれば、任意の矩形領域内の入力値の総和を定数時間で算出できるので、畳み込み演算及び平均プーリングに要する時間を短縮できるようになる。
【００５７】
また、上で述べた第２算出部は、（ｂ１）算出された積の総和をカーネルの要素数で除することで積の平均を算出してもよい。
【００５８】
本実施の形態の第２の態様に係る、畳み込みニューラルネットワークの演算方法は、（Ｄ）畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、（Ｅ）カーネルの要素毎に、当該要素について算出された総和と当該要素との積を算出し、算出された当該積の平均を算出する処理を含む。
【００５９】
なお、上記方法による処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００６０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００６１】
（付記１）
畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第１算出部と、
前記カーネルの要素毎に、当該要素について前記第１算出部により算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する第２算出部と、
を有する情報処理装置。
【００６２】
（付記２）
前記入力データからＳＡＴ（Summed Area Table）を生成する生成部
をさらに有し、
前記第１算出部は、
特定された前記入力値を含む矩形領域について、前記入力値の総和を前記ＳＡＴを用いて算出する、
付記１記載の情報処理装置。
【００６３】
（付記３）
前記第２算出部は、
算出された前記積の総和を前記カーネルの要素数で除することで前記積の平均を算出する、
付記１又は２記載の情報処理装置。
【００６４】
（付記４）
コンピュータが、
畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
処理を実行する、畳み込みニューラルネットワークの演算方法。
【００６５】
（付記５）
コンピュータに、
畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
処理を実行させる、畳み込みニューラルネットワークの演算プログラム。
【符号の説明】
【００６６】
１  情報処理装置    １０１  入力データ格納部
１０２  ＳＡＴ生成部    １０３  ＳＡＴ格納部
１０４  総和テーブル生成部    １０５  カーネル格納部
１０６  総和テーブル格納部    １０７  算出部
１０７１  第１算出部    １０７２  第２算出部
１０８  プーリング出力データ格納部    １０９  処理部
１１０  更新部
【図１】
0006750203.tif 000003
【図２】
0006750203.tif 000004
【図３】
0006750203.tif 000005
【図４】
0006750203.tif 000006
【図５】
0006750203.tif 000007
【図６】
0006750203.tif 000008
【図７】
0006750203.tif 000009
【図８】
0006750203.tif 000010
【図９】
0006750203.tif 000011
【図１０】
0006750203.tif 000012
【図１１】
0006750203.tif 000013
【図１２】
0006750203.tif 000014
【図１３】
0006750203.tif 000015
【図１４】
0006750203.tif 000016
【図１５】
0006750203.tif 000017
【図１６】
0006750203.tif 000018
【図１７】
0006750203.tif 000019
【図１８】
0006750203.tif 000020
【図１９】
0006750203.tif 000021
【図２０】
0006750203.tif 000022
【図２１】
0006750203.tif 000023
【図２２】
0006750203.tif 000024
【図２３】
0006750203.tif 000025
【図２４】
0006750203.tif 000026
【図２５】
0006750203.tif 000027
【図２６】
0006750203.tif 000028