(57)【要約】【課題】ニューラルネットワークのハードウェア化に有用な設計支援を提供する。【解決手段】設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御する制御部、を備える、情報処理装置が提供される。また、プロセッサが、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御すること、を含む、情報処理方法が提供される。【選択図】図２３
2019181137.tif 000002
【特許請求の範囲】
【請求項１】
設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御する制御部、
を備える、
情報処理装置。
【請求項２】
前記最適化構造に係る情報は、現状のネットワーク構造と最適化後のネットワーク構造との差分に係る情報を含み、
前記制御部は、前記差分に係る情報をユーザに対し提示させる、
請求項１に記載の情報処理装置。
【請求項３】
前記最適化構造に係る情報は、前記最適化を行うべき理由を含み、
前記制御部は、前記最適化を行うべき理由をユーザに対し提示させる、
請求項１に記載の情報処理装置。
【請求項４】
前記最適化構造に係る情報は、最適化されたネットワーク構造を含み、
前記制御部は、前記最適化されたネットワーク構造をユーザに対し提示させる、
請求項１に記載の情報処理装置。
【請求項５】
前記制御部は、ニューラルネットワークの設計に用いられるプログラミングツール上で、前記最適化構造に係る情報を提示させる、
請求項１に記載の情報処理装置。
【請求項６】
前記制御部は、ユーザによるプログラミングの実行中に、前記最適化構造に係る情報を前記ユーザに対し動的に提示させる、
請求項５に記載の情報処理装置。
【請求項７】
前記制御部は、前記ユーザによるプログラミングの実行中に、前記最適化が可能なネットワーク構造が検出された場合に、前記最適化構造に係る情報を前記ユーザに対し動的に提示させる、
請求項６に記載の情報処理装置。
【請求項８】
前記制御部は、前記最適化構造に係る情報を確認したユーザの承認に基づいて、最適化されたネットワーク構造を前記ユーザに対し提示させる、
請求項５に記載の情報処理装置。
【請求項９】
前記制御部は、ユーザが選択したハードウェアの特性に基づいて前記最適化を行った場合の前記最適化構造に係る情報を前記ユーザに対し提示させる、
請求項５に記載の情報処理装置。
【請求項１０】
前記制御部は、ユーザが設定した最適化設定に基づいて前記最適化を行った場合の前記最適化構造に係る情報を前記ユーザに対し提示させる、
請求項５に記載の情報処理装置。
【請求項１１】
前記制御部は、前記ハードウェア処理に適さないプログラミングが行えないように前記プログラミングツールを制御する、
請求項５に記載の情報処理装置。
【請求項１２】
前記最適化は、除算の排除を目的としたネットワーク構造の変更を含む、
請求項１に記載の情報処理装置。
【請求項１３】
前記最適化は、シフト演算の適用を目的としたネットワーク構造の変更を含む、
請求項１に記載の情報処理装置。
【請求項１４】
前記最適化は、前記ネットワーク構造中に複数含まれるブロックに関し、前記ブロック間で入力サイズおよび出力サイズを共通化することを目的としたネットワーク構造の変更を含み、
前記ブロックは、少なくとも１つ以上のレイヤーを含んで構成される、
請求項１に記載の情報処理装置。
【請求項１５】
前記最適化は、前記ブロックに係る処理を実行する演算回路の共通化を目的としたネットワーク構造の変更を含む、
請求項１４に記載の情報処理装置。
【請求項１６】
前記最適化は、前記ネットワーク構造中に複数含まれる同一種のレイヤー間で、パラメータを共通化することを目的としたネットワーク構造の変更を含む、
請求項１に記載の情報処理装置。
【請求項１７】
前記最適化は、前記ネットワーク構造中に複数含まれる同一種のレイヤー間で、フィルタまたは出力サイズを共通化することを目的としたネットワーク構造の変更を含む、
請求項１に記載の情報処理装置。
【請求項１８】
前記最適化は、積和演算とＢａｔｃｈ  Ｎｏｒｍａｌｉｚａｔｉｏｎとに係る演算処理の効率化を目的としたネットワーク構造の変更を含む、
請求項１に記載の情報処理装置。
【請求項１９】
前記最適化は、ルックアップテーブルの参照を要する非線形関数の排除を目的としたネットワーク構造の変更を含む、
請求項１に記載の情報処理装置。
【請求項２０】
プロセッサが、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御すること、
を含む、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
近年、ニューラルネットワークを利用した種々の機能が開発されている。また、ニューラルネットワークの開発効率を向上させるための種々の手法が提案されている。例えば、非特許文献１には、ニューラルネットワークの開発に利用可能なソフトウェアライブラリに関する情報が開示されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Google Research、「TensorFlow: Large-ScaleMachine Learning on Heterogeneous Distributed Systems」、２０１５年１１月９日、［Online］、［平成２８年１月１２日検索］、インターネット<http://download.tensorflow.org/paper/whitepaper2015.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、近年では、プロセッサ上でニューラルネットワークをソフトウェアとして動作させるのではなく、ニューラルネットワークをハードウェア化することで、低コストでの高速化を実現する手法も提案されている。しかし、非特許文献１に記載されるソフトウェアライブラリでは、ニューラルネットワークのハードウェア化を考慮した設計支援が十分とはいえない。【０００５】
そこで、本開示では、ニューラルネットワークのハードウェア化に有用な設計支援を提供することが可能な、新規かつ改良された情報処理装置および情報処理方法を提案する。
【課題を解決するための手段】
【０００６】
本開示によれば、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御する制御部、を備える、情報処理装置が提供される。【０００７】
また、本開示によれば、プロセッサが、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御すること、を含む、情報処理方法が提供される。
【発明の効果】
【０００８】
以上説明したように本開示によれば、ニューラルネットワークのハードウェア化に有用な設計支援を提供することが可能となる。【０００９】
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１０】
【図１】本開示の一実施形態に係る情報処理システムの構成例を示すブロック図である。
【図２】同実施形態に係る情報処理端末の機能構成例を示すブロック図である。
【図３】同実施形態に係る情報処理サーバの機能構成例を示すブロック図である。
【図４】同実施形態に係るフォームの表示例を示す図である。
【図５】同実施形態に係るネットワーク構造の状態遷移について説明するための図である。
【図６】同実施形態に係る除算の排除を目的とした最適化について説明するための図である。
【図７】同実施形態に係るシフト演算の適用を目的とした最適化について説明するための図である。
【図８】同実施形態に係るシフト演算の適用を目的とした最適化について説明するための図である。
【図９】同実施形態に係るシフト演算の適用を目的とした最適化について説明するための図である。
【図１０】同実施形態に係るシフト演算の適用を目的とした最適化について説明するための図である。
【図１１】同実施形態に係るシフト演算の適用を目的とした最適化について説明するための図である。
【図１２】同実施形態に係るシフト演算の適用を目的とした最適化について説明するための図である。
【図１３】同実施形態に係るブロック構造の共通化について説明するための図である。
【図１４】同実施形態に係る同一種のレイヤー間に用いられる要素の共通化について説明するための図である。
【図１５】同実施形態に係る積和演算とＢａｔｃｈ  Ｎｏｒｍａｌｉｚａｔｉｏｎとに係る演算処理の効率化を目的とした最適化について説明するための図である。
【図１６】同実施形態に係るバイアスの最適化について説明するための図である。
【図１７】同実施形態に係るルックアップテーブルの参照を要する非線形関数の排除を目的とした最適化について説明するための図である。
【図１８】同実施形態に係るパディングの排除を目的とした最適化について説明するための図である。
【図１９】同実施形態に係るストライドの幅を２以下に抑えることを目的とした最適化について説明するための図である。
【図２０】同実施形態に係るＰｏｏｌｉｎｇ領域の重複の排除を目的とした最適化について説明するための図である。
【図２１】同実施形態に係るレイヤー内で用いるカーネルを構造化することを目的とした最適化について説明するための図である。
【図２２】同実施形態に係るコード記述を行うプログラミングツールにおける最適化構造の情報提示について説明するための図である。
【図２３】同実施形態に係る最適化構造に係る情報提示の一例を示す図である。
【図２４】同実施形態に係るユーザが選択したハードウェアの特性やユーザが設定した最適化設定に基づく情報提示について説明するための図である。
【図２５】本開示の一実施形態に係る情報処理サーバのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１２】
なお、説明は以下の順序で行うものとする。
１．実施形態
１．１．概要
１．２．システム構成例
１．３．情報処理端末１０の機能構成
１．４．情報処理サーバ２０の機能構成
１．５．最適化構造に係る情報提示
１．６．最適化構造に係る情報提示の一例
２．ハードウェア構成例
３．まとめ
【００１３】
＜１．実施形態＞
＜＜１．１．概要＞＞
まず、本開示の一実施形態に係る概要について説明する。上述したように、近年では、ニューラルネットワークの開発効率を向上させるための種々の手法が提案されている。また、一方で、ニューラルネットワークをハードウェア化することで、処理の高速化を実現する手法も提案されている。
【００１４】
しかし、非特許文献１に記載されるソフトウェアライブラリなどでは、一般に、ニューラルネットワークのハードウェア化を考慮した設計支援が十分ではない。このため、ニューラルネットワークをハードウェア化する場合、ソフトウェア設計者が入力データに基づいて、設計、学習、評価を繰り返すことにより構築したニューラルネットワークを、ハードウェア設計者がハードウェア向けに調整する作業が求められる。
【００１５】
ハードウェア設計者は、上記の作業において、入力データとソフトウェア設計者が構築したニューラルネットワークに基づいて、当該ニューラルネットワークのハードウェア向けに調整、学習、評価を繰り返すことにより、ニューラルネットワークのハードウェア化を実現する。
【００１６】
しかし、ハードウェア設計者による上記の調整、学習、評価作業は、多くの時間を必要とする。特に、学習には、１日〜１か月ほどの期間が必要となることから、ハードウェア設計者による上記の作業を効率化する手法が求められていた。
【００１７】
本開示の一実施形態に係る技術思想は、上記の点に着目して発想されたものであり、ニューラルネットワークのハードウェア化に有用な設計支援の提供を可能とする。このために、本開示の一実施形態に係る情報処理方法を実現する情報処理装置は、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御する制御部を備えることを特徴の一つとする。
【００１８】
すなわち、本開示の一実施形態に係る情報処理装置は、ソフトウェア設計者が予めハードウェアに特化したニューラルネットワークの設計が行えるよう、ネットワーク構造の最適化に係る種々の提案をユーザに対し提示させることができる。
【００１９】
本開示の一実施形態に係る情報処理装置が有する上記の機能によれば、ソフトウェア設計者が、ハードウェア化を考慮したニューラルネットワークの設計を容易に行うことができ、ハードウェア設計者による二度手間を排除し、ニューラルネットワークのハードウェア化作業の効率を大幅に改善することが可能となる。
【００２０】
以下、本開示の一実施形態に係る情報処理装置が有する機能の特徴、および当該特徴により奏される効果について詳細に説明する。
【００２１】
＜＜１．２．システム構成例＞＞
次に、本開示の一実施形態に係る情報処理システムの構成例について説明する。図１は、本実施形態に係る情報処理システムの構成例を示すブロック図である。図１を参照すると、本実施形態に係る情報処理システムは、情報処理端末１０および情報処理サーバ２０を備える。また、情報処理端末１０と情報処理サーバ２０は、互いに通信が行えるように、ネットワーク３０を介して接続される。
【００２２】
（情報処理端末１０）
本実施形態に係る情報処理端末１０は、ニューラルネットワークのプログラミングを行うためのクライアント端末である。本実施形態に係る情報処理端末１０は、情報処理サーバ２０による制御に基づいて、プログラミングを行うためのフォームを表示し、当該フォームに対するユーザの入力操作に係る情報を情報処理サーバ２０へ送信する。本実施形態に係る情報処理端末１０は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などであってよい。なお、後述するように、本実施形態に係る情報処理端末１０は、情報処理サーバ２０と同等の機能を有する情報処理装置として機能してもよい。
【００２３】
（情報処理サーバ２０）
本実施形態に係る情報処理サーバ２０は、本実施形態に係る情報処理方法を実現する情報処理装置である。本実施形態に係る情報処理サーバ２０は、ニューラルネットワークをハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御する。本実施形態に係る情報処理サーバ２０は、例えば、情報処理端末１０から入力されたネットワーク構造の少なくとも一部に基づいて、上記の最適化構造に係る情報を情報処理端末１０に送信する。
【００２４】
（ネットワーク３０）
ネットワーク３０は、情報処理端末１０と情報処理サーバ２０とを接続する機能を有する。ネットワーク３０は、インターネット、電話回線網、衛星通信網などの公衆回線網や、Ｅｔｈｅｒｎｅｔ（登録商標）を含む各種のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを含んでもよい。また、ネットワーク３０は、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などの専用回線網を含んでもよい。また、ネットワーク３０は、Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）など無線通信網を含んでもよい。
【００２５】
以上、本開示の一実施形態に係る情報処理システムの構成例について説明した。なお、図１を用いて説明した上記の構成はあくまで一例であり、本実施形態に係る情報処理システムの構成は係る例に限定されない。本実施形態に係る情報処理システムの構成は、仕様や運用に応じて柔軟に変形可能である。
【００２６】
＜＜１．３．情報処理端末１０の機能構成＞＞
次に、本開示の一実施形態に係る情報処理端末１０の機能構成例について説明する。図２は、本実施形態に係る情報処理端末１０の機能構成例を示すブロック図である。図２を参照すると、本実施形態に係る情報処理端末１０は、表示部１１０、入力部１２０、制御部１３０、およびサーバ通信部１４０を備える。
【００２７】
（表示部１１０）
本実施形態に係る表示部１１０は、画像やテキストなどの視覚情報を出力する機能を有する。本実施形態に係る表示部１１０は、例えば、情報処理サーバ２０による制御に基づいて、ニューラルネットワークのビジュアルプログラミングに係るフォームを表示する。
【００２８】
このために、本実施形態に係る表示部１１０は、視覚情報を提示する表示デバイスなどを備える。上記の表示デバイスには、例えば、液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置、タッチパネルなどが挙げられる。また、本実施形態に係る表示部１１０は、プロジェクション機能により視覚情報を出力してもよい。
【００２９】
（入力部１２０）
本実施形態に係る入力部１２０は、ユーザによる入力操作を検出する機能を有する。本実施形態に係る入力部１２０は、例えば、フォーム上におけるコンポーネントやユニットの配置操作を検出する。このために、本実施形態に係る入力部１２０は、キーボード、タッチパネル、マウス、各種のボタンなどを備える。
【００３０】
（制御部１３０）
本実施形態に係る制御部１３０は、情報処理端末１０が備える各構成を制御する機能を有する。制御部１３０は、例えば、各構成の起動や停止を制御する。また、制御部１３０は、情報処理サーバ２０により生成される制御信号を表示部１１０に入力する。また、本実施形態に係る制御部１３０は、後述する情報処理サーバ２０のフォーム制御部２１０と同等の機能を有してもよい。
【００３１】
（サーバ通信部１４０）
本実施形態に係るサーバ通信部１４０は、ネットワーク３０を介して情報処理サーバ２０との情報通信を行う機能を有する。具体的には、サーバ通信部１４０は、情報処理サーバ２０からフォーム制御に係る制御信号を受信する。また、サーバ通信部１４０は、入力部１２０が検出したユーザの入力操作に係る情報を、情報処理サーバ２０に送信する。
【００３２】
以上、本開示の一実施形態に係る情報処理端末１０の機能構成例について説明した。なお、図２を用いて説明した上記の構成はあくまで一例であり、本実施形態に係る情報処理端末１０の機能構成は係る例に限定されない。例えば、上述したように、本実施形態に係る制御部１３０は、情報処理サーバ２０のフォーム制御部２１０と同等の機能を有してもよい。本実施形態に係る情報処理端末１０の機能構成は、仕様や運用に応じて柔軟に変形可能である。
【００３３】
＜＜１．４．情報処理サーバ２０の機能構成＞＞
次に、本開示の一実施形態に係る情報処理サーバ２０の機能構成について説明する。図３は、本実施形態に係る情報処理サーバ２０の機能構成例を示すブロック図である。図３を参照すると、本実施形態に係る情報処理サーバ２０は、フォーム制御部２１０、生成部２２０、および端末通信部２３０を備える。
【００３４】
（フォーム制御部２１０）
本実施形態に係るフォーム制御部２１０は、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御する制御部として動作する。
【００３５】
本実施形態に係る最適化構造に係る情報は、例えば、現状のネットワーク構造と最適化後のネットワーク構造との差分に係る情報を含んでよい。フォーム制御部２１０は、例えば、現状のネットワーク構造の一部のレイヤーを最適化した場合における、置換後のレイヤー情報などをユーザに提案してもよい。
【００３６】
また、この際、本実施形態に係るフォーム制御部２１０は、最適化を行うべき理由を上記の差分に係る情報と共にユーザに対し提示させることで、ニューラルネットワークのハードウェア化を考慮した設計に関するユーザの知見を向上させることが可能である。
【００３７】
また、本実施形態に係る最適化構造に係る情報は、最適化されたネットワーク構造自体であってもよい。この場合、フォーム制御部２１０は、入力されたネットワーク構造に対し、当該ネットワーク構造をハードウェア向けに最適化したネットワーク構造をユーザに対し提示させることが可能である。この際、実際の最適化処理は、生成部２２０により実行されてもよい。
【００３８】
以上、本実施形態に係るフォーム制御部２１０が有する機能の概要について説明した。本実施形態に係るフォーム制御部２１０が有する機能の詳細については別途後述する。
【００３９】
（生成部２２０）
本実施形態に係る生成部２２０は、フォーム制御部２１０が制御するフォームにおいて入力された情報に基づいて、ニューラルネットワークに係るソースコードを生成する機能を有する。また、本実施形態に係る生成部２２０は、入力されたネットワーク構造を、ハードウェア処理向けに最適化する機能を有する。
【００４０】
（端末通信部２３０）
本実施形態に係る端末通信部２３０は、ネットワーク３０を介して、情報処理端末１０との情報通信を行う。具体的には、端末通信部２３０は、フォーム制御部２１０が生成する最適化構造に係る情報や、フォーム制御に係る制御信号を情報処理端末１０に送信する。また、端末通信部２３０は、情報処理端末１０から、フォーム上におけるユーザの入力操作に係る情報などを受信する。
【００４１】
以上、本開示の一実施形態に係る情報処理サーバ２０の機能構成例について説明した。なお、図３を用いて説明した上記の構成はあくまで一例であり、本実施形態に係る情報処理サーバ２０の機能構成は係る例に限定されない。例えば、上記に示した構成は、複数の装置により分散されて実現されてもよい。また、上述したように、フォーム制御部２１０が有する機能は、情報処理端末１０の制御部１３０の機能として実現されてもよい。本実施形態に係る情報処理サーバ２０の機能構成は、仕様や運用に応じて柔軟に変形可能である。
【００４２】
＜＜１．５．最適化構造に係る情報提示＞＞
次に、本実施形態に係る最適化構造に係る情報提示の制御について詳細に説明する。なお、以下では、本開示に係る制御部の一例であるフォーム制御部２１０が、ニューラルネットワークの設計に用いられるプログラミングツール上で、最適化構造に係る情報を提示させる場合を例に述べる。一方、本実施形態に係る制御部は、例えば、入力されるネットワーク構造に対し、最適化構造に係る情報を出力するバッチプログラムの一部として機能してもよい。
【００４３】
また、以下における説明では、本実施形態に係るフォーム制御部２１０が、ニューラルネットワークのビジュアルプログラミングを実現するツールにおいて、ユーザがビジュアルプログラミングを実行するフォームの制御を行う場合を主な例として述べる。
【００４４】
ここで、ビジュアルプログラミングとは、ソフトウェア開発において、プログラムコードをテキストで記述することなく、視覚的なオブジェクトを用いて作成する手法を指す。ビジュアルプログラミングでは、例えば、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）上で、オブジェクトを操作することで、プログラムを作成することができる。
【００４５】
ここで、本実施形態に係るフォーム制御部２１０が制御するフォームの表示例について説明する。図４は、本実施形態に係るフォームの表示例を示す図である。図４に示すように、本実施形態に係るフォームＦ１は、例えば、ペインＰ１〜Ｐ３を含む。
【００４６】
ペインＰ１は、ネットワークを構成するためのレイヤーのリストを表示するための領域であってよい。ペインＰ１には、図４に示すように、各種のレイヤーが分類ごとに表示されてもよい。また、分類名をクリックすることで、分類ごとのレイヤーの一覧が展開されるよう制御されてもよい。また、ペインＰ１には、選択したレイヤーのプロパティ情報ＬＰが表示される。ユーザは、プロパティ情報ＬＰを編集することで、例えば、レイヤーの出力サイズや、カーネルシェイプ、バイアスの有無などを設定することが可能である。
【００４７】
ペインＰ２は、レイヤーを配置し、ニューラルネットワークを構築するための領域である。ユーザは、各レイヤーを移動、追加または削除することで、ニューラルネットワークを視覚的に構築することができる。図４に示す一例の場合、ペインＰ２には、レイヤーＬ１〜Ｌ１３から構成されるネットワーク構造が視覚的に示されている。ユーザは、例えば、ペインＰ１に表示されるコンポーネントをドラッグ＆ドロップすることで、任意のコンポーネントをペインＰ２に追加することができる。
【００４８】
ペインＰ３は、構築中のニューラルネットワークに関する各種の情報を表示する領域である。ペインＰ３には、例えば、ネットワーク構造の全体像を示すオーバービューＯＶや、ニューラルネットワークに係る統計情報ＳＴなどが表示されてよい。
【００４９】
なお、本実施形態に係る統計情報ＳＴには、例えば、出力サイズ、パラメータの使用メモリ量、および各種の演算量などの情報が含まれる。また、本実施形態に係るフォーム制御部２１０は、統計情報ＳＴが含む上記のような要素のうち、ユーザが選択した要素の値を、レイヤーごとに比較して提示する機能を有してよい。この際、本実施形態に係るフォーム制御部２１０は、例えば、レイヤーごとの要素の値と当該要素の値の大きさを示すインジケータとを、各レイヤーに関連付けて提示してもよい。
【００５０】
図４に示す一例の場合、フォーム制御部２１０は、ユーザが出力サイズを選択したことに基づいて、レイヤーごとに出力サイズの値と当該値に対応するインジケータを表示させている。本実施形態に係るフォーム制御部２１０が有する上記の機能によれば、ユーザが、各レイヤーの出力サイズや演算量を直観的に知覚することができ、ネットワーク構造を変更する際などの参考にすることができる。
【００５１】
以上、本実施形態に係るフォームの表示例について説明した。続いて、本実施形態に係るネットワーク構造の状態遷移について説明する。図５は、本実施形態に係るネットワーク構造の状態遷移について説明するための図である。
【００５２】
図５の左側には、本実施形態の最適化構造に係る情報の提示機能をＯＮにした場合の状態遷移が、図５の右側には、上記提示機能をＯＦＦにした場合の状態遷移がそれぞれ示されている。
【００５３】
なお、図５における「ＮＮ」は、ニューラルネットワークを示し、また「ＮＮ＊」は、ハードウェア向けに最適化されておらず、最適化構造に係る情報提示が成されている（提案または警告などが表示されている）状態のニューラルネットワークを示す。
【００５４】
最適化構造に係る情報の提示機能が有効となっている場合、まず、ユーザによりレイヤーが追加されることで、ネットワーク構造の構築が開始される。この後、ユーザは、レイヤーの追加、変更、削除などを繰り返し行う。この際、上記のような操作により、ネットワークがハードウェア向けに最適化されていない状態「ＮＮ＊」となったことが生成部２２０により検知されると、フォーム制御部２１０による制御により最適化構造に係る情報提示が動的に実行される。
【００５５】
その後、ユーザが、さらにレイヤーの追加、変更、削除などを繰り返すことで、「ＮＮ＊」と「ＮＮ」を行き来しながらネットワークの構築が完遂される。
【００５６】
一方、最適化構造に係る情報の提示機能が無効となっている場合、ネットワークがハードウェア向けに最適化されていない場合であっても、「ＮＮ」は、「ＮＮ＊」には遷移せず、すなわち最適化構造に係る情報の提示が行われないまま、ネットワークの構築が完遂される。
【００５７】
以上、本実施形態に係るネットワーク構造の状態遷移について説明した。なお、最適化構造に係る情報の提示機能は、プログラミングの実行中であっても、任意のタイミングで有効または無効に切り替えることが可能である。ユーザは、例えば、プログラミング中には、上記の提示機能を無効にし、プログラミングが完了した時点で、例えば、チェックボタンを押下することなどにより提示機能を有効化することで、最適化構造に係る情報を享受することが可能である。
【００５８】
次に、本実施形態に係るハードウェア処理に向けた最適化について、具体例を挙げながら説明する。本実施形態に係るフォーム制御部２１０は、ハードウェア処理に向けた種々の最適化に係る情報提示を制御することが可能である。
【００５９】
例えば、本実施形態に係る最適化は、除算の排除を目的としたネットワーク構造の変更を含んでよい。図６は、本実施形態に係る除算の排除を目的とした最適化について説明するための図である。図６の左側には、ユーザにより設計されたネットワーク構造が、図６の右側には、ハードウェア向けに最適化された後のネットワーク構造がそれぞれ示されている。
【００６０】
ここで両者を比較すると、設計時のネットワーク構成に含まれていた「ＡｖｅｒａｇｅＰｏｏｌｉｎｇ」が、最適化後には、「ＳｕｍＰｏｏｌｉｎｇ」に変化している。このように、本実施形態に係るフォーム制御部２１０は、演算コストが高い除算を用いる「ＡｖｅｒａｇｅＰｏｏｌｉｎｇ」に代えて、除算を用いない「ＳｕｍＰｏｏｌｉｎｇ」を利用するよう、ユーザに提案を行うことが可能である。
【００６１】
また、本実施形態に係る最適化は、シフト演算の適用を目的としたネットワーク構造の変更を含んでよい。図７〜図１２は、本実施形態に係るシフト演算の適用を目的とした最適化について説明するための図である。図７〜図１２の左側には、ユーザにより設計されたネットワーク構造が、図７〜図１２の右側には、ハードウェア向けに最適化された後のネットワーク構造がそれぞれ示されている。
【００６２】
例えば、図７に示す一例の場合、設計時のネットワーク構成における「ＡｖｅｒａｇｅＰｏｏｌｉｎｇ」の出力サイズが「６４，６，６」であるのに対し、最適化後には、「６４，８，８」に変化している。これは、「ＡｖｅｒａｇｅＰｏｏｌｉｎｇ」の出力サイズが２のべき乗ではない場合、シフト演算が行えないためである。このため、本実施形態に係るフォーム制御部２１０は、除算に比べ演算コストが低いシフト演算が行えるように、「ＡｖｅｒａｇｅＰｏｏｌｉｎｇ」の出力サイズを２のべき乗にするよう、ユーザに提案してよい。上記出力サイズの変更は、例えば、前段の「Ｃｏｎｖｏｌｕｔｉｏｎ」レイヤーのｐａｄｄｉｎｇを調整することなどにより可能である。
【００６３】
また、図８に示す一例の場合、設計時のネットワーク構成における「ＲＤｉｖＳｃａｌａｒ」の値が「６」であるのに対し、最適化後には、「８」に変化している。これは、除算に用いる値を２のべき乗とすることで、シフト演算を適用するためである。このため、本実施形態に係るフォーム制御部２１０は、除算に比べ演算コストが低いシフト演算が行えるように、Ｄｉｖｉｓｉｏｎの値を２のべき乗にするよう、ユーザに提案してよい。
【００６４】
また、図９に示す一例の場合、設計時のネットワーク構成における「ＲＤｉｖＳｃａｌａｒ」の値が「２５５」であるのに対し、最適化後には、「２５６」に変化している。多くの場合、画像の正規化では、「０〜２５５」の分布を用いることが一般的であるが、「２５５」は２のべき乗ではないため、シフト演算を行うことができない。このため、本実施形態に係るフォーム制御部２１０は、「２５５」に代え、２のべき乗である「２５６」を用いることで、演算コストを削減するよう、ユーザに提案してよい。なお、画像の正規化に「０〜２５６」の分布を用いても学習における影響はほぼないことが実験的に知られている。
【００６５】
また、図１０に示す一例の場合、設計時のネットワーク構成における「Ｃｏｎｖｏｌｕｔｉｏｎ＿２」の出力サイズが「７０，３２，３２」であるのに対し、最適化後には、「６２，３２，３２」に変化している。これは、メモリアライメントを２のべき乗に揃えるためであり、ｗａｒｐが３２であることから出力サイズも３２の倍数に最適化されている。このように、本実施形態に係るフォーム制御部２１０は、メモリアライメントが２のべき乗となるように、「Ｃｏｎｖｏｌｕｔｉｏｎ」などの出力サイズを変更するよう、ユーザに提案してもよい。
【００６６】
また、図１１に示す一例の場合、設計時のネットワーク構成における各「Ｃｏｎｖｏｌｕｔｉｏｎ」が、最適化後には、「Ｐｏｗ２Ｃｏｎｖｏｌｕｔｉｏｎ」に変化している。ここで、「Ｐｏｗ２Ｃｏｎｖｏｌｕｔｉｏｎ」とは、２のべき乗で量子化した重みやバイアスなどを用いて内積演算を行う「Ｃｏｎｖｏｌｕｔｉｏｎ」である。係るレイヤーによれば、内積演算をシフト演算および加算のみで行うことが可能となり、演算コストを大幅に低減することが可能である。このように、本実施形態に係るフォーム制御部２１０は、通常の積和演算レイヤーに代えて、「Ｐｏｗ２Ｃｏｎｖｏｌｕｔｉｏｎ」などの量子化レイヤーを利用するよう、ユーザに提案してもよい。なお、量子化の手法は上記の例に限定されず、ＢｉｎａｒｙやＦｉｘｅｄ  Ｐｏｉｎｔが用いられてもよい。
【００６７】
また、図１２に示す一例の場合、設計時のネットワーク構成における各「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」が、最適化後には、「Ｐｏｗ２ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」に変化している。ここで、「Ｐｏｗ２ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」とは、２のべき乗で表現される値を用いて正規化の演算を行う「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」である。係るレイヤーによれば、通常ｆｌｏａｔで行う処理をシフト演算で実現することが可能となり、演算コストを効果的に削減することが可能である。このため、本実施形態に係るフォーム制御部２１０は、通常の「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」に代えて、「Ｐｏｗ２ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」を利用するよう、ユーザに提案してもよい。
【００６８】
以上、本実施形態に係るシフト演算の適用を目的とした最適化について説明した。次に、本実施形態に係るブロック構造の共通化について述べる。図１３は、本実施形態に係るブロック構造の共通化について説明するための図である。図１３の左側には、ユーザにより設計されたネットワーク構造が、図１３の右側には、ハードウェア向けに最適化された後のネットワーク構造がそれぞれ示されている。
【００６９】
図１３を参照すると、設計時のネットワーク構成には、「Ｃｏｎｖｏｌｕｔｉｏｎ」、「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」、「ＲｅＬＵ」、「ＭａｘＰｏｏｌｉｎｇ」の順に接続されるレイヤー構成が２つ含まれている。本実施形態では、上記のような同一のレイヤーを同一の順に含む構成をブロックと定義する。すなわち、図１３に示す一例では、設計時のネットワーク構成は、２つのブロックＢ１およびＢ２を含んで構成されている。
【００７０】
一方、ブロックＢ１とＢ２とでは、「Ｃｏｎｖｏｌｕｔｉｏｎ」に係るカーネルシェイプが異なっているため、入出力サイズがそれぞれ異なっている状態である。この場合、レイヤー構成が同一であっても、同一の演算回路を共通して用いることができない。
【００７１】
このため、本実施形態に係るフォーム制御部２１０は、ブロックＢ１およびＢ２が共通の演算回路を共通して用いることができるように、「Ｃｏｎｖｏｌｕｔｉｏｎ」のカーネルシェイプを「３，３」に共通化し、入出力サイズが同一となるよう、ユーザに提案してよい。係る最適化によれば、演算回路を共通化し、ハードウェア回路の面積を節約することが可能となる。
【００７２】
また、本実施形態に係る最適化には、ブロックの他、ネットワーク構造中に複数含まれる同一種のレイヤー間で、パラメータを共通化する変更が含まれてよい。上記変更には、例えば、同一種のレイヤー間で、フィルタサイズ、出力サイズなどを共通化する変更が含まれる。
【００７３】
図１４は、本実施形態に係る同一種のレイヤー間に用いられる要素の共通化について説明するための図である。図１４の左側には、ユーザにより設計されたネットワーク構造が、図１４の右側には、ハードウェア向けに最適化された後のネットワーク構造がそれぞれ示されている。
【００７４】
図１４を参照すると、設計時のネットワーク構造には、３つの「Ｃｏｎｖｏｌｕｔｉｏｎ」が含まれているが、出力サイズやカーネルシェイプが共通していないことがわかる。この場合、本実施形態に係る本実施形態に係るフォーム制御部２１０は、３つの「Ｃｏｎｖｏｌｕｔｉｏｎ」が共通のパラメータを用いるようにユーザに提案してよい。図１４に示す一例の場合、フォーム制御部２１０は、３つの「Ｃｏｎｖｏｌｕｔｉｏｎ」で出力サイズおよびフィルタサイズ（カーネルシェイプ）を共通化するよう提案している。
【００７５】
この際、上記の共通化を実現するために、最適化後のネットワーク構造では、「ＭａｘＰｏｏｌｉｎｇ」が削除されている。このように、本実施形態に係る共通要素を用いる最適化では、レイヤーの削除、挿入、置換、順番の変更などが提案されてもよい。また、上記で述べたブロックは、少なくとも１つ以上のレイヤーを含んで構成される、と定義してもよい。この場合、図１４に示す３つの「Ｃｏｎｖｏｌｕｔｉｏｎ」は、ブロックであるともいえる。
【００７６】
本実施形態に係る上記の最適化によれば、ブロックやレイヤー間で用いるパラメータなどを共通化することで、ネットワークが用いるパラメータ数を削減し、メモリロードの電力消費を効果的に低減することが可能となる。
【００７７】
次に、本実施形態に係る積和演算とＢａｔｃｈ  Ｎｏｒｍａｌｉｚａｔｉｏｎとに係る演算処理の効率化を目的とした最適化について説明する。本実施形態に係る最適化は、上記の演算処理の効率化を目的とするネットワーク構造の変更を含んでよい。図１５は、本実施形態に係る積和演算とＢａｔｃｈ  Ｎｏｒｍａｌｉｚａｔｉｏｎとに係る演算処理の効率化を目的とした最適化について説明するための図である。図１５の左側には、ユーザにより設計されたネットワーク構造が、図１５の右側には、ハードウェア向けに最適化された後のネットワーク構造がそれぞれ示されている。
【００７８】
図１５を参照すると、設計時のネットワーク構造では、「Ｃｏｎｖｏｌｕｔｉｏｎ＿２」と「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ＿２」の間に、「ＭａｘＰｏｏｌｉｎｇ」が配置されている。しかし、学習後、「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」レイヤーのパラメータは、積和演算レイヤーのパラメータにマージすることが可能である。
【００７９】
このため、本実施形態に係るフォーム制御部２１０は、積和演算レイヤーの直後に「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」レイヤーが配置されるよう提案を行ってよい。図１５に示す一例の場合、フォーム制御部２１０は、両者の間に配置される「Ｃｏｎｖｏｌｕｔｉｏｎ＿２」と「ＭａｘＰｏｏｌｉｎｇ」の順序を入れ替えるようにユーザに提案を行うことができる。
【００８０】
また、積和演算レイヤーの直後に「ＢａｔｃｈＮｏｒｍａｌｉｚａｔｉｏｎ」レイヤーが配置されるように、バイアスが連続するレイヤー構成が存在する場合、本実施形態に係るフォーム制御部２１０は、後段に配置されるレイヤーでのみバイアスを付けるよう提案を行ってもよい。
【００８１】
図１６は、本実施形態に係るバイアスの最適化について説明するための図である。図１６の左側には、図１５に示す設計時のネットワーク構造における「Ｃｏｎｖｏｌｕｔｉｏｎ＿２」のプロパティ情報ＬＰ１ｂが、図１６の右側には、図１５に示す最適化後のネットワーク構造における「Ｃｏｎｖｏｌｕｔｉｏｎ＿２」のプロパティ情報ＬＰ１ａが、それぞれ示されている。
【００８２】
ここで、両者を比較すると、最適化後のプロパティ情報ＬＰ１ｂでは、バイアスの設定が「Ｆａｌｓｅ」に変化していることがわかる。このように、本実施形態に係るフォーム制御部２１０は、後段に配置されるレイヤーでのみバイアスを付けるよう提案することで、不必要な演算コストの増大を防止することができる。
【００８３】
また、本実施形態に係る最適化は、ルックアップテーブルの参照を要する非線形関数の排除を目的としたネットワーク構造の変更を含んでよい。図１７は、本実施形態に係るルックアップテーブルの参照を要する非線形関数の排除を目的とした最適化について説明するための図である。図１７の左側には、ユーザにより設計されたネットワーク構造が、図１７の右側には、ハードウェア向けに最適化された後のネットワーク構造がそれぞれ示されている。
【００８４】
ここで両者を比較すると、設計時のネットワーク構成に含まれていた「Ｔａｎｈ」や「Ｓｉｇｍｏｉｄ」が、最適化後には、「ＲｅＬＵ」に変化している。このように、本実施形態に係るフォーム制御部２１０は、ルックアップテーブルの参照を要する非線形関数に代えて、「ＲｅＬＵ」などの線形関数を利用するよう、ユーザに提案を行うことが可能である。係る制御によれば、不要なメモリ消費や電力消費を効果的に低減することが可能となる。
【００８５】
また、本実施形態に係る最適化は、パディングの排除を目的としたネットワーク構造の変更を含んでよい。図１８は、本実施形態に係るパディングの排除を目的とした最適化について説明するための図である。図１８の左側には、設計時のネットワーク構造に含まれる「Ｃｏｎｖｏｌｕｔｉｏｎ」のプロパティ情報ＬＰ２ｂが、図１８の右側には、最適化後のネットワーク構造に含まれる「Ｃｏｎｖｏｌｕｔｉｏｎ」のプロパティ情報ＬＰ２ａが、それぞれ示されている。
【００８６】
ここで両者を比較すると、最適化後のネットワークでは、パディングが行われないよう設定が変更されている。このように、本実施形態に係るフォーム制御部２１０は、ハードウェアにとって非効率な処理であるパディングを行わないよう、ユーザに提案することで、処理効率を向上させることが可能である。
【００８７】
また、本実施形態に係る最適化は、ストライドの幅を２以下に抑えることを目的としたネットワーク構造の変更を含んでよい。図１９は、本実施形態に係るストライドの幅を２以下に抑えることを目的とした最適化について説明するための図である。図１９の左側には、設計時のネットワーク構造に含まれる「Ｃｏｎｖｏｌｕｔｉｏｎ」のプロパティ情報ＬＰ３ｂが、図１９の右側には、最適化後のネットワーク構造に含まれる「Ｃｏｎｖｏｌｕｔｉｏｎ」のプロパティ情報ＬＰ３ａが、それぞれ示されている。
【００８８】
ここで両者を比較すると、最適化後のネットワークでは、ストライドが「２，２」が変更されている。このように、本実施形態に係るフォーム制御部２１０は、ストライドによる処理負担が過度に増加しないように、ユーザに提案することで、処理効率を向上させることが可能である。
【００８９】
また、本実施形態に係る最適化は、Ｐｏｏｌｉｎｇ領域の重複の排除を目的としたネットワーク構造の変更を含んでよい。図２０は、本実施形態に係るＰｏｏｌｉｎｇ領域の重複の排除を目的とした最適化について説明するための図である。図２０の左側には、設計時のネットワーク構造に含まれる「ＭａｘＰｏｏｌｉｎｇ」のプロパティ情報ＬＰ４ｂが、図２０の右側には、最適化後のネットワーク構造に含まれる「ＭａｘＰｏｏｌｉｎｇ」のプロパティ情報ＬＰ４ａが、それぞれ示されている。
【００９０】
ここで両者を比較すると、最適化後のネットワークでは、カーネルシェイプとストライドの値が「２，２」に共通化されており、Ｐｏｏｌｉｎｇ領域が重複しないように変更されていることがわかる。ストライドを行う場合には、一度読み込んだデータを保持しておくか、あるいは再度読み込みを行う必要がある。このため、Ｐｏｏｌｉｎｇ領域が重複しないように最適化することにより、保持するデータ分のメモリが削減したり、データへのアクセス回数を削減することが可能となる。
【００９１】
また、本実施形態に係る最適化は、レイヤー内で用いるカーネルを構造化することを目的としたネットワーク構造の変化を含む。図２１は、本実施形態に係るレイヤー内で用いるカーネルを構造化することを目的とした最適化について説明するための図である。図２１の上段には、設計時におけるカーネルの一例が、図２１の下段には、最適化後のカーネルの一例がそれぞれ示されている。
【００９２】
ハードウェアにおいてＣｏｎｖｏｌｕｔｉｏｎの演算を行う際には、図示するように奥行方向に部分的にカーネルＫをＳＲＡＭに読み込む処理が行われる。なお、図２１では、Ｋｈがカーネルの高さを、Ｋｗがカーネルの幅をそれぞれ示している。また、Ｎは、入力される特徴マップの奥行方向の長さを、Ｍが出力される特徴マップをそれぞれ示している。
【００９３】
この際、図２１の上段に示すように、カーネルＫ１〜Ｋ５の構造が共通化されていない場合、ＳＲＡＭにカーネルを読み込む回数が増加するのに対し、図２１の下段に示すように、カーネルＫ１〜Ｋ４の構造が共通化されている場合、ＳＲＡＭにカーネルを読み込む回数を削減することが可能である。
【００９４】
以上、本実施形態に係る最適化について具体例を挙げながら説明した。なお、上記では、本実施形態に係るフォーム制御部２１０が、ニューラルネットワークのビジュアルプログラミングを実現するフォームを提供する場合について述べた。一方、本実施形態に係るプログラミングツールは、係る例に限定されない。本実施形態に係るフォーム制御部２１０は、通常のコード記述を行うプログラミングツールにおいて、最適化構造に係る情報の提示を制御してもよい。
【００９５】
図２２は、本実施形態に係る通常のコード記述を行うプログラミングツールにおける最適化構造の情報提示について説明するための図である。図２２の上段には、設計時のコードの一例が、図２２の下段には、最適化後のコードの一例がそれぞれ示されている。
【００９６】
ここで、両者を比較すると、最適化後のコードにおいては、画像の正規化において、「２５６」を用いたシフト演算が行われるよう変化している。また、「Ｃｏｎｖｏｌｕｔｉｏｎ」および「Ａｆｆｉｎｅ」が、量子化レイヤーにそれぞれ変化していることがわかる。また、「ＡｖｅｒａｇｅＰｏｏｌｉｇ」が除算を必要としない「ＳｕｍＰｏｏｌｉｎｇ」に変化していることがわかる。
【００９７】
このように、本実施形態に係る情報処理サーバ２０によれば、プログラミングの種類を問わず、ニューラルネットワークのハードウェア化に有用な設計支援を提供することが可能である。
【００９８】
＜＜１．６．最適化構造に係る情報提示の一例＞＞
次に、本実施形態に係る最適化構造に係る情報提示の一例について述べる。上述したように、本実施形態に係るフォーム制御部２１０は、種々の最適化に係る情報をユーザに提案することで、ユーザがハードウェアに最適化したニューラルネットワークの設計を行えるよう補助することができる。
【００９９】
この際、フォーム制御部２１０は、例えば、ユーザの設定に基づいて、情報の提示有無を制御してもよい。図２３は、本実施形態に係る最適化構造に係る情報提示の一例を示す図である。
【０１００】
例えば、図２３には、ペインＰ２において右クリックをした場合に表示されるウィンドウＷ１が示されている。ウィンドウＷ１には、機能Ｆ１およびＦ２を含む複数の機能を実行または制御するためのリストが表示されてよい。
【０１０１】
ここで、機能Ｆ１は、最適化構造に係る情報提示の要否をユーザが設定するための機能であってよい。図２３に示す一例の場合、機能Ｆ１に対応する「ＨＷ  ａｆｆｉｎｉｔｙ」には、機能が有効であることを示すチェックが入っている。
【０１０２】
この場合、フォーム制御部２１０は、ユーザによるプログラミングの実行中に、生成部最適化が可能なネットワーク構造が生成部２２０により検出された際、例えば、図２３に示すようなメッセージＭｓｇを表示させることで、ユーザに最適化構造に係る情報提示を行う。なお、上記のような情報提示は、音声により実現されてもよい。また、メッセージＭｓｇは、例えば、アイコンＩにマウスオンした場合にのみ表示されるよう制御されてもよい。
【０１０３】
なお、フォーム制御部２１０は、上記のような情報提示に対し、ユーザが承認を行った場合、生成部２２０により最適化されたネットワークをユーザに対し提示させる。すなわち、フォーム制御部２１０は、最適化されたネットワーク構造を、作成中のネットワーク構成に反映してよい。なお、ユーザの承認は、例えば、ボタンの押下や、音声などを用いて行われてよい。
【０１０４】
また、上記のような最適化されたネットワーク構造の反映は、情報提示なしに自動的に実行されてもよい。上記のような自動反映は、ユーザによる設定により実行され得る。
【０１０５】
また、機能Ｆ２は、機能Ｆ１による情報提示の要否設定に依らずに、最適化構造に係る情報提示を即時実行させるための機能であってよい。例えば、ユーザは、機能Ｆ１により動的な情報提示を無効に設定している場合でも、プログラミング完了後など任意のタイミングで機能Ｆ２に対応する「Ｒｅｄｕｎｄａｎｃｙ  ｃｈｅｃｋ」をクリックすることで、最適化構造に係る情報提示を享受することができる。
【０１０６】
また、本実施形態に係るフォーム制御部２１０は、ハードウェアに適さないプログラミングが行えないようにフォームの制御を行うことも可能である。図２３に示す一例の場合、フォーム制御部２１０は、ペインＰ１において、除算が必要となる「ＡｖｅｒａｇｅＰｏｏｌｉｎｇ」をそもそもユーザが配置できないように制御している。本実施形態に係るフォーム制御部２１０が有する上記の機能によれば、ハードウェアに適さない設計をユーザが行えないようコントロールすることも可能である。
【０１０７】
また、本実施形態に係るフォーム制御部２１０は、ユーザが選択したハードウェアの特性や、ユーザが設定した最適化設定に基づいて、最適化を行った場合の最適化構造に係る情報をユーザに対し提示させることも可能である。
【０１０８】
図２４は、本実施形態に係るユーザが選択したハードウェアの特性やユーザが設定した最適化設定に基づく情報提示について説明するための図である。
【０１０９】
図２４には、図２３に示したウィンドウＷ１を含むメニューの階層構造の一例が示されている。ユーザは、例えば、機能Ｆ１に対応する「ＨＷ  ａｆｆｉｎｉｔｙ」にマウスオンすることで、ウィンドウＷ２を表示させることができる。
【０１１０】
ここで、ウィンドウＷ２は、最適化構造に係る情報提示を行うためのハードウェア種別を選択するためのウィンドウであってよい。図２４に示す一例の場合、ウィンドウＷ２には、「Ｇｅｎｅｒａｌ」、「ＤＳＰ」、「ＦＰＧＡ」、「ＡＳＩＣ」などのハードウェア種別が一覧で表示されている。ユーザは、上記のようなハードウェア種別から、ハードウェア化を行う対象となるハードウェア種別を選択することで、当該ハードウェア種別に特化して設定された最適化構造の情報を享受することができる。
【０１１１】
また、ウィンドウＷ２には、ユーザが、情報提示を受ける最適化手法を選択するためのメニュー「Ｃｕｓｔｏｍ」が表示されている。ユーザは、メニュー「Ｃｕｓｔｏｍ」にマウスオンすることで、有効化する最適化手法を選択するためのウィンドウＷ３を表示させることができる。なお、図２４に示される「Ｆｅａｔｕｒｅ  １」〜「Ｆｅａｔｕｒｅ  ｎ」は、図６〜図２１を用いて説明した各種の最適化手法に対応する項目であってよい。
【０１１２】
このように、本実施形態に係る情報処理サーバ２０によれば、ユーザが選択したハードウェアの特性や、ユーザが設定した最適化設定に基づいて、より有効な情報提示を実現することが可能である。
【０１１３】
＜２．ハードウェア構成例＞
次に、本開示の一実施形態に係る情報処理サーバ２０のハードウェア構成例について説明する。図２５は、本開示の一実施形態に係る情報処理サーバ２０のハードウェア構成例を示すブロック図である。図２５を参照すると、情報処理サーバ２０は、例えば、プロセッサ８７１と、ＲＯＭ８７２と、ＲＡＭ８７３と、ホストバス８７４と、ブリッジ８７５と、外部バス８７６と、インターフェース８７７と、入力装置８７８と、出力装置８７９と、ストレージ８８０と、ドライブ８８１と、接続ポート８８２と、通信装置８８３と、を有する。なお、ここで示すハードウェア構成は一例であり、構成要素の一部が省略されてもよい。また、ここで示される構成要素以外の構成要素をさらに含んでもよい。
【０１１４】
（プロセッサ８７１）
プロセッサ８７１は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ８７２、ＲＡＭ８７３、ストレージ８８０、又はリムーバブル記録媒体９０１に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。
【０１１５】
（ＲＯＭ８７２、ＲＡＭ８７３）
ＲＯＭ８７２は、プロセッサ８７１に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。ＲＡＭ８７３には、例えば、プロセッサ８７１に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【０１１６】
（ホストバス８７４、ブリッジ８７５、外部バス８７６、インターフェース８７７）
プロセッサ８７１、ＲＯＭ８７２、ＲＡＭ８７３は、例えば、高速なデータ伝送が可能なホストバス８７４を介して相互に接続される。一方、ホストバス８７４は、例えば、ブリッジ８７５を介して比較的データ伝送速度が低速な外部バス８７６に接続される。また、外部バス８７６は、インターフェース８７７を介して種々の構成要素と接続される。
【０１１７】
（入力装置８７８）
入力装置８７８には、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力装置８７８としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ（以下、リモコン）が用いられることもある。また、入力装置８７８には、マイクロフォンなどの音声入力装置が含まれる。
【０１１８】
（出力装置８７９）
出力装置８７９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＬＣＤ、又は有機ＥＬ等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。また、本開示に係る出力装置８７９は、触覚刺激を出力することが可能な種々の振動デバイスを含む。
【０１１９】
（ストレージ８８０）
ストレージ８８０は、各種のデータを格納するための装置である。ストレージ８８０としては、例えば、ハードディスクドライブ（ＨＤＤ）等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。
【０１２０】
（ドライブ８８１）
ドライブ８８１は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９０１に記録された情報を読み出し、又はリムーバブル記録媒体９０１に情報を書き込む装置である。
【０１２１】
（リムーバブル記録媒体９０１）
リムーバブル記録媒体９０１は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙ（登録商標）メディア、ＨＤ  ＤＶＤメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体９０１は、例えば、非接触型ＩＣチップを搭載したＩＣカード、又は電子機器等であってもよい。
【０１２２】
（接続ポート８８２）
接続ポート８８２は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＲＳ−２３２Ｃポート、又は光オーディオ端子等のような外部接続機器９０２を接続するためのポートである。
【０１２３】
（外部接続機器９０２）
外部接続機器９０２は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はＩＣレコーダ等である。
【０１２４】
（通信装置８８３）
通信装置８８３は、ネットワークに接続するための通信デバイスであり、例えば、有線又は無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ、又は各種通信用のモデム等である。
【０１２５】
＜３．まとめ＞
以上説明したように、本開示の一実施形態に係る情報処理サーバ２０は、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御するフォーム制御部２１０を備える。係る構成によれば、ニューラルネットワークのハードウェア化に有用な設計支援を提供することが可能となる。
【０１２６】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１２７】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１２８】
また、コンピュータに内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアに、情報処理サーバ２０が有する構成と同等の機能を発揮させるためのプログラムも作成可能であり、当該プログラムを記録した、コンピュータに読み取り可能な記録媒体も提供され得る。
【０１２９】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御する制御部、
を備える、
情報処理装置。
（２）
前記最適化構造に係る情報は、現状のネットワーク構造と最適化後のネットワーク構造との差分に係る情報を含み、
前記制御部は、前記差分に係る情報をユーザに対し提示させる、
前記（１）に記載の情報処理装置。
（３）
前記最適化構造に係る情報は、前記最適化を行うべき理由を含み、
前記制御部は、前記最適化を行うべき理由をユーザに対し提示させる、
前記（１）または（２）に記載の情報処理装置。
（４）
前記最適化構造に係る情報は、最適化されたネットワーク構造を含み、
前記制御部は、前記最適化されたネットワーク構造をユーザに対し提示させる、
前記（１）〜（３）のいずれかに記載の情報処理装置。
（５）
前記制御部は、ニューラルネットワークの設計に用いられるプログラミングツール上で、前記最適化構造に係る情報を提示させる、
前記（１）〜（４）のいずれかに記載の情報処理装置。
（６）
前記制御部は、ユーザによるプログラミングの実行中に、前記最適化構造に係る情報を前記ユーザに対し動的に提示させる、
前記（５）に記載の情報処理装置。
（７）
前記制御部は、前記ユーザによるプログラミングの実行中に、前記最適化が可能なネットワーク構造が検出された場合に、前記最適化構造に係る情報を前記ユーザに対し動的に提示させる、
前記（６）に記載の情報処理装置。
（８）
前記制御部は、前記最適化構造に係る情報を確認したユーザの承認に基づいて、最適化されたネットワーク構造を前記ユーザに対し提示させる、
前記（５）〜（７）のいずれかに記載の情報処理装置。
（９）
前記制御部は、ユーザが選択したハードウェアの特性に基づいて前記最適化を行った場合の前記最適化構造に係る情報を前記ユーザに対し提示させる、
前記（５）〜（８）のいずれかに記載の情報処理装置。
（１０）
前記制御部は、ユーザが設定した最適化設定に基づいて前記最適化を行った場合の前記最適化構造に係る情報を前記ユーザに対し提示させる、
前記（５）〜（９）のいずれかに記載の情報処理装置。
（１１）
前記制御部は、前記ハードウェア処理に適さないプログラミングが行えないように前記プログラミングツールを制御する、
前記（５）〜（１０）のいずれかに記載の情報処理装置。
（１２）
前記最適化は、除算の排除を目的としたネットワーク構造の変更を含む、
前記（１）〜（１１）のいずれかに記載の情報処理装置。
（１３）
前記最適化は、シフト演算の適用を目的としたネットワーク構造の変更を含む、
前記（１）〜（１２）のいずれかに記載の情報処理装置。
（１４）
前記最適化は、前記ネットワーク構造中に複数含まれるブロックに関し、前記ブロック間で入力サイズおよび出力サイズを共通化することを目的としたネットワーク構造の変更を含み、
前記ブロックは、少なくとも１つ以上のレイヤーを含んで構成される、
前記（１）〜（１３）のいずれかに記載の情報処理装置。
（１５）
前記最適化は、前記ブロックに係る処理を実行する演算回路の共通化を目的としたネットワーク構造の変更を含む、
前記（１４）に記載の情報処理装置。
（１６）
前記最適化は、前記ネットワーク構造中に複数含まれる同一種のレイヤー間で、パラメータを共通化することを目的としたネットワーク構造の変更を含む、
前記（１）〜（１５）のいずれかに記載の情報処理装置。
（１７）
前記最適化は、前記ネットワーク構造中に複数含まれる同一種のレイヤー間で、フィルタまたは出力サイズを共通化することを目的としたネットワーク構造の変更を含む、
前記（１）〜（１６）のいずれかに記載の情報処理装置。
（１８）
前記最適化は、積和演算とＢａｔｃｈ  Ｎｏｒｍａｌｉｚａｔｉｏｎとに係る演算処理の効率化を目的としたネットワーク構造の変更を含む、
前記（１）〜（１７）のいずれかに記載の情報処理装置。
（１９）
前記最適化は、ルックアップテーブルの参照を要する非線形関数の排除を目的としたネットワーク構造の変更を含む、
前記（１）〜（１８）のいずれかに記載の情報処理装置。
（２０）
プロセッサが、設計されたニューラルネットワークのネットワーク構造の少なくとも一部をハードウェア処理に最適化した場合の最適化構造に係る情報の提示を制御すること、
を含む、
情報処理方法。
【符号の説明】
【０１３０】
１０      情報処理端末
１１０    表示部
１２０    入力部
１３０    制御部
１４０    サーバ通信部
２０      情報処理サーバ
２１０    フォーム制御部
２２０    生成部
２３０    端末通信部
【図１】
2019181137.tif 000003
【図２】
2019181137.tif 000004
【図３】
2019181137.tif 000005
【図４】
2019181137.tif 000006
【図５】
2019181137.tif 000007
【図６】
2019181137.tif 000008
【図７】
2019181137.tif 000009
【図８】
2019181137.tif 000010
【図９】
2019181137.tif 000011
【図１０】
2019181137.tif 000012
【図１１】
2019181137.tif 000013
【図１２】
2019181137.tif 000014
【図１３】
2019181137.tif 000015
【図１４】
2019181137.tif 000016
【図１５】
2019181137.tif 000017
【図１６】
2019181137.tif 000018
【図１７】
2019181137.tif 000019
【図１８】
2019181137.tif 000020
【図１９】
2019181137.tif 000021
【図２０】
2019181137.tif 000022
【図２１】
2019181137.tif 000023
【図２２】
2019181137.tif 000024
【図２３】
2019181137.tif 000025
【図２４】
2019181137.tif 000026
【図２５】
2019181137.tif 000027
【国際調査報告】
2019181137.tif 000028
2019181137.tif 000029
2019181137.tif 000030
2019181137.tif 000031