(57)【要約】  本開示に係る情報処理方法は、コンピュータが、第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価し、前記ニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する。
2020026741.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価し、
前記ニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する
情報処理方法。
【請求項２】
前記ニューラルネットワークの各層のうち、出力される情報のサイズが最大となる層よりも深部にあり、かつ、当該ニューラルネットワークの入力層から出力される情報のサイズよりも小さい情報が出力される層を、前記第１の装置から前記第２の装置へと情報が伝送される伝送ポイントと決定し、決定した伝送ポイントに関する情報に基づいて、当該ニューラルネットワークを評価する
請求項１に記載の情報処理方法。
【請求項３】
前記伝送ポイントよりも浅部に存在する層の数、及び、前記ニューラルネットワークを構成する層の総数に基づいて、当該ニューラルネットワークを評価する
請求項２に記載の情報処理方法。
【請求項４】
前記ニューラルネットワークの認識性能を示す指標値に基づいて、前記ニューラルネットワークを評価する
請求項１に記載の情報処理方法。
【請求項５】
前記ニューラルネットワークにおける演算量に基づいて、前記ニューラルネットワークを評価する
請求項１に記載の情報処理方法。
【請求項６】
前記第１の装置の演算処理の性能に関する情報に基づいて、前記ニューラルネットワークを評価する
請求項１に記載の情報処理方法。
【請求項７】
前記第１の装置に保持される前記ニューラルネットワークの各層における浮動小数点演算を行う回数と、浮動小数点演算以外の演算を行う回数とに基づいて、当該ニューラルネットワークを評価する
請求項６に記載の情報処理方法。
【請求項８】
前記第１の装置に保持される前記ニューラルネットワークの各層における乗算を行う回数と、乗算以外の演算を行う回数との関係性に基づいて、当該ニューラルネットワークを評価する
請求項６に記載の情報処理方法。
【請求項９】
前記伝送に関する情報、前記ニューラルネットワークの認識性能を示す指標値、当該ニューラルネットワークにおける演算量、及び、前記第１の装置の演算処理の性能に関する情報の各々に所定の重み値を乗算した値に基づいて、前記ニューラルネットワークを評価する
請求項１に記載の情報処理方法。
【請求項１０】
前記第１の装置及び前記第２の装置の構成、当該第１の装置と当該第２の装置間の通信規格、及び、前記ニューラルネットワークが提供される環境に関する情報に基づいて、前記重み値を決定する
請求項９に記載の情報処理方法。
【請求項１１】
第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価する評価部と、
前記評価部によるニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する決定部と
を備えた情報処理装置。
【請求項１２】
コンピュータを、
第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価する評価部と、
前記評価部によるニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する決定部と
として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理方法、情報処理装置及び情報処理プログラムに関する。詳しくは、ニューラルネットワークの構造を自動探索する処理に関する。
【背景技術】
【０００２】
様々な技術分野において、脳神経系の仕組みを模したニューラルネットワークが活用されている。また、ニューラルネットワークによる学習の精度は、与えられるデータやネットワークの構造に大きく依存することが知られていることから、ニューラルネットワークにおける適切な構造を探索する技術も提案されている。【０００３】
例えば、ニューラルネットワークの評価結果に基づいてパレート最適解を更新し、パレート最適解に係るニューラルネットワークから、構造の異なる別のニューラルネットワークを生成することで、環境に応じた構造を効率的に探索する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１７／１５４２８４号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術によれば、遺伝的操作によってネットワーク構造を順次生成しながら、最適な構造を探索する。このとき、従来技術は、認識性能に加えて演算量も考慮するため、演算性能の低い計算機にも処理可能なネットワーク構造を獲得し得る。【０００６】
しかしながら、従来技術は、単一の機器でニューラルネットワークを処理する場合を想定している。このため、例えば複数の機器でニューラルネットワークを共有するような分散処理が行われる場合においては、最適なネットワーク構造を探索できるとは限らない。【０００７】
そこで、本開示では、ニューラルネットワークの分散処理における適切なネットワーク構造を探索することができる情報処理方法、情報処理装置及び情報処理プログラムを提案する。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本開示に係る一形態の情報処理方法は、コンピュータが、第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価し、前記ニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する。
【発明の効果】
【０００９】
本開示に係る情報処理方法、情報処理装置及び情報処理プログラムによれば、ニューラルネットワークの分散処理における適切なネットワーク構造を探索することができる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１０】
【図１】本開示の第１の実施形態に係る情報処理システムを示す図である。
【図２】本開示に係るユーザインターフェイスの一例を示す図である。
【図３】本開示に係るニューラルネットワークの構造を説明するための図（１）である。
【図４】本開示に係るニューラルネットワークの構造を説明するための図（２）である。
【図５】本開示の第１の実施形態に係る情報処理装置の構成例を示す図である。
【図６】本開示の第１の実施形態に係る演算器情報記憶部の一例を示す図である。
【図７】本開示の第１の実施形態に係る通信規格記憶部の一例を示す図である。
【図８】本開示の第１の実施形態に係るモデル記憶部の一例を示す図である。
【図９】本開示に係る遺伝的操作による構造探索の一例を示す図である。
【図１０】本開示に係る演算器情報に基づく構造探索の一例を示す図である。
【図１１】本開示の第１の実施形態に係る情報処理サーバの構成例を示す図である。
【図１２】本開示の第１の実施形態に係る端末装置の構成例を示す図である。
【図１３】本開示の第１の実施形態に係る情報処理の手順を示すフローチャートである。
【図１４】本開示の第１の実施形態に係る探索処理の手順を示すフローチャートである。
【図１５】情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１１】
以下に、本開示の実施形態について図面に基づいて詳細に説明する。なお、以下の各実施形態において、同一の部位には同一の符号を付することにより重複する説明を省略する。
【００１２】
（１．第１の実施形態）
［１−１．本開示に係るニューラルネットワークについて］
【００１３】
ニューラルネットワークとは、人間の脳神経回路を模したモデルであり、人間が持つ学習能力をコンピュータ上で実現しようとする技法である。ニューラルネットワークは、学習能力を有することを特徴の一つとする。ニューラルネットワークでは、シナプスの結合によりネットワークを形成した人工ニューロン（ノード）が、学習によりシナプスの結合強度を変化させることで、問題に対する解決能力を獲得する。すなわち、ニューラルネットワークは、学習を重ねることで、問題に対する解決ルールを自動的に推論する。
【００１４】
ニューラルネットワークによる学習の例としては、画像認識や音声認識が挙げられる。ニューラルネットワークでは、例えば、手書きの数字パターンを繰り返し学習することで、入力される画像情報を０〜９の数字のいずれかに分類することが可能となる。ニューラルネットワークの有する上記のような学習能力は、人工知能（Artificial  Intelligence）の発展を推し進める鍵としても注目されている。また、ニューラルネットワークが有するパターン認識力は、種々の産業分野における応用が期待される。
【００１５】
ここで、ニューラルネットワークによる学習の精度は、与えられるデータやネットワーク構造に大きく依存することが知られている。すなわち、ニューラルネットワークによる学習では、与えられるデータの量と質が直接的に性能に影響する。また、同一のデータが与えられた場合でも、ネットワーク構造の異なるニューラルネットワークでは、学習精度に大きな差が生じる可能性がある。
【００１６】
また、ニューラルネットワークによる処理においては、学習精度のほか、演算量も重要な指標の一つとなる。ニューラルネットワークにおいて、演算量は、例えばネットワーク構造に依存して求められる。ニューラルネットワークでは、通常、演算量が増加するほど学習精度が向上する傾向がある。
【００１７】
しかし、演算量は、ニューラルネットワークが搭載されるハードウェアの使用メモリ量や実行時間に大きく影響するため、学習精度の高いニューラルネットワークが必ずしも最良とは限らない。言い換えると、ニューラルネットワークにおいて、演算量と学習精度とは、いわゆるトレードオフの関係となる。このため、演算量を抑えつつ、より学習精度の高いネットワーク構造を探索する手法が求められる。
【００１８】
本開示に係る情報処理は、上記で説明したようなネットワーク構造の探索に着目することで、生成されたニューラルネットワークに対して評価を行う。そして、本開示に係る情報処理は、評価結果に基づいて、効率の良いネットワーク構造を有するニューラルネットワークを生成し、生成したニューラルネットワークをユーザに提供する。なお、本開示において、ニューラルネットワークの生成とは、既存のニューラルネットワークの構造を更新する処理を含む。
【００１９】
例えば、ニューラルネットワークの生成は、突然変異や交叉などを含む遺伝的操作により実現されてもよい。ここで、突然変異とは、生物に見られる遺伝子の突然変異をモデル化したものであってよい。すなわち、本開示に係る情報処理方法では、ネットワークを構成する各レイヤーを遺伝子と見立て、レイヤーを突然変異させることで、ネットワーク構造の異なる別のニューラルネットワークを生成する。また、上記の交叉とは、生物の交配における染色体の部分的交換をモデル化したものであってよい。すなわち、本開示に係る情報処理方法では、２つのネットワークのレイヤー構成を部分的に交換することで、上記の別のニューラルネットワークを生成することができる。なお、本開示に係る突然変異及び交叉の詳細については後述する。
【００２０】
また、本開示に係るニューラルネットワークは、第１の装置と第２の装置とに分散される構造を有する。例えば、第１の装置は、例えばＩｏＴ（Internet  of  Things）機器であり、比較的演算性能の低い計算機である。また、第２の装置は、例えばクラウド上のサーバ装置であり、比較的演算性能の高い計算機である。一例として、第１の装置は、撮影機能を有するカメラであり、第２の装置は、カメラと無線ネットワーク等で接続するサーバ装置である。この場合、想定される情報処理は、カメラが撮影した画像に対する画像認識処理等である。
【００２１】
ＩｏＴ機器のような、比較的演算性能の低い計算機を用いて画像認識等の高度な処理を実行する場合、ＩｏＴ機器のみで処理を実行するのではなく、高度な処理を行うことができる機器と分散して処理を行う方が望ましい。例えば、ニューラルネットワークのうち、入力層から中間層の前段部分をＩｏＴ機器に分配し、中間層の後段部分から出力層をサーバ側に分配することで、ニューラルネットワークを利用した情報処理を分散することが可能である。
【００２２】
この場合、ＩｏＴ機器は、比較的小規模なニューラルネットワークを通じて、入力データよりサイズの小さい中間データを取得する。言い換えれば、ＩｏＴ機器は、入力層に入力される入力データ(例えば画像データ)よりも情報量が小さくなるよう、圧縮された中間データを取得する。かかる圧縮処理ののち、ＩｏＴ機器は、中間データをサーバ装置に送信する。そして、サーバ装置は、取得した中間データに基づいて、比較的大規模なニューラルネットワークの後段部分の処理を実行する。このような分散処理によれば、入力データをそのままサーバ装置に送るよりも消費電力量等のリソースを抑えながら、高度な認識処理を実現することができる。
【００２３】
そこで、本開示に係る情報処理方法では、上述した演算量等の評価に加えて、第１の装置における圧縮処理や、ニューラルネットワークのうちどのレイヤーで中間データを伝送するか（以下、この伝送箇所を「伝送ポイント」と表記する）等、データの伝送に関する情報に基づいて、前段と後段とに分割されるニューラルネットワークに対する評価を行う。これにより、本開示に係る情報処理方法は、分割されるニューラルネットワークにおいて効率の良い構造を適切に探索することができる。以下、本開示に係る情報処理方法について、具体的な実施例を挙げて説明する。
【００２４】
［１−２．第１の実施形態に係る情報処理の概要］
図１は、本開示の第１の実施形態に係る情報処理の概要を示す図である。本開示の第１の実施形態に係る情報処理は、図１に示す情報処理システム１によって実現される。情報処理システム１は、情報処理装置１００と、情報処理サーバ２００と、端末装置３００とを含む。
【００２５】
情報処理装置１００は、本開示に係る情報処理装置の一例であり、ニューラルネットワークの構造を探索するユーザ１０によって管理されるサーバ装置である。情報処理装置１００は、ユーザ１０の操作に従ってニューラルネットワークを生成する。
【００２６】
情報処理サーバ２００は、本開示に係る第２の装置の一例であり、情報処理装置１００によって生成されたニューラルネットワークのうち、後段の処理を実行するサーバ装置である。
【００２７】
端末装置３００は、本開示に係る第１の装置の一例であり、情報処理装置１００によって生成されたニューラルネットワークのうち、前段の処理を実行する情報処理端末である。
【００２８】
以下、図１を用いて、本開示の情報処理の概要を流れに沿って説明する。まず、ユーザ１０は、情報処理装置１００から提供される所定のユーザインターフェイスを介して、自身が生成を要望するニューラルネットワークを指定する（ステップＳ１）。例えば、ユーザ１０は、自身が実行したい処理（画像認識や音声認識等）に適した基本的なニューラルネットワークの構造を指定する。一例として、ユーザ１０は、画像認識を行うためのニューラルネットワークを生成する場合には、入力される画像データの解像度等に応じたレイヤー構造等を指定する。
【００２９】
また、ユーザ１０は、実際にニューラルネットワークに基づく処理を実行する情報処理サーバ２００や端末装置３００に関する情報を指定する。例えば、ユーザ１０は、端末装置３００が備える演算能力や、後段のニューラルネットワークが置かれる情報処理サーバ２００のサービス提供先等を指定する。また、ユーザ１０は、端末装置３００と情報処理サーバ２００との間の通信規格等を指定する。
【００３０】
この点について、図２を用いて説明する。図２は、本開示に係るユーザインターフェイスの一例を示す図である。ユーザ１０は、ユーザインターフェイス５０を介して、自身が生成を要望するニューラルネットワークに関する情報を入力する。
【００３１】
例えば、ユーザ１０は、ニューラルネットワークの前段を処理する端末装置３００の演算器に関する情報を入力する。例えば、ユーザ１０は、プルダウン表示５２から、端末装置３００が備えるボード名や、ＳｏＣ（System-on-a-Chip）や、アーキテクチャを選択する。詳細は後述するが、情報処理装置１００は、これら選択される情報に対応する所定の数値を記憶しており、ユーザ１０の選択に応じて、ニューラルネットワークの構造を変化させることができる。
【００３２】
なお、図２で示した情報の選択は一例であり、プルダウン表示５２は、例えば端末装置３００の機種名やメーカー名を選択させるものであってもよい。この場合、情報処理装置１００は、ユーザ１０から端末装置３００のボード名等を指定されずとも、端末装置３００の機種名やメーカー名に対応した情報を記憶しておくことで、選択された機種に対応する演算器や演算能力を参照することができる。
【００３３】
また、ユーザ１０は、プルダウン表示５４から、端末装置３００と情報処理サーバ２００との間の通信規格や、通信規格に関する、より詳細な情報を指定するサブカテゴリや詳細の欄の情報を選択する。通信規格は、例えば、３Ｇや４Ｇ、ＬＴＥ（Long  Term  Evolution）等である。
【００３４】
また、ユーザ１０は、プルダウン表示５６から、ニューラルネットワークの後段部分を置くクラウドサーバ等を提供するサービス提供企業の名称や、具体的なサービス名や、詳細情報を選択する。サービス提供企業とは、比較的高度な処理を行うためのクラウドサービスをユーザ１０や一般企業等に提供する企業をいう。
【００３５】
情報処理装置１００は、上記のようにユーザ１０に選択される情報に対応した所定の数値を予め記憶部１２０に格納しておき、ユーザ１０が選択した情報に適するニューラルネットワークの構造を探索する。
【００３６】
ここで、図３に用いて、端末装置３００と情報処理サーバ２００とに分割されて保持されるニューラルネットワークの構造について説明する。図３は、本開示に係るニューラルネットワークの構造を説明するための図（１）である。
【００３７】
図３に示す例では、ネットワークを介して、端末装置３００から情報処理サーバ２００に中間データが送信される状況を概念的に示す（ステップＳ１１）。このような処理が行われる場合、図３に示すように、端末装置３００は、第Ｎ層（Ｎは任意の自然数）の中間層を有するニューラルネットワークにおいて、ニューラルネットワークの前段部分２０を保持する。また、情報処理サーバ２００は、ニューラルネットワークの後段部分２５を保持する。そして、端末装置３００は、前段部分２０の処理を行い、中間データを伝送ポイント（図３の例では第３層）で送信する（ステップＳ１２）。情報処理サーバ２００は、伝送ポイントで送信された中間データを受信し、第４層以下の後段部分２５を用いて処理を行う。
【００３８】
続けて、図４を用いて、図３に示したニューラルネットワークが取り扱う情報量を概念的に示す。図４は、本開示に係るニューラルネットワークの構造を説明するための図（２）である。
【００３９】
図４のグラフ３０は、ニューラルネットワークの構造と情報量との関係を図示したものである。図４に示す表示３２（図４に示す「input_size」）は、ニューラルネットワークの入力層に入力される入力データの情報量を示す。また、図４に示す表示３４（図４に示す「compressed_size」）は、入力データよりも情報量が圧縮された際の情報量を示す。また、図４に示す表示３６（図４に示す「transfer_point」）は、中間データを情報処理サーバ２００に伝送するポイントである伝送ポイントを示す。
【００４０】
本開示に係るニューラルネットワークでは、各層のうち、出力される情報のサイズが最大となる層よりも深部（図４の例では、入力層に近い側（より左に近い側）を意味する）にあり、かつ、ニューラルネットワークの入力層から出力される情報のサイズよりも小さい情報が出力される層を、端末装置３００から情報処理サーバ２００へと情報が伝送される伝送ポイントと決定するものとする。すなわち、上記の条件を満たす層が、ニューラルネットワークにおける伝送ポイントとなる中間層である。グラフ３０に示すように、図４の例では、第３層が伝送ポイントに該当する。
【００４１】
なお、グラフ３０において、表示３８（図４に示す「all_layer_num」）は、当該ニューラルネットワークの層の総数を示す。また、表示４０（図４に示す「server_layer_num」）は、当該ニューラルネットワークの後段部分の層の数を示す。また、表示４２（図４に示す「出力レイヤー」）は、当該ニューラルネットワークの出力層を示す。
【００４２】
上記のように、情報処理装置１００は、条件を満たす伝送ポイントを探索することにより、分割して保持されるニューラルネットワークの構造を決定する。また、情報処理装置１００は、可能な限り、端末装置３００から情報処理サーバ２００に送信される中間データの情報量が少なくなる伝送ポイントを探索する。
【００４３】
これは、分割されたニューラルネットワークにおいて、できる限り早く端末装置３００から情報処理サーバ２００に情報を送信した方が望ましく、かつ、できる限り送信する情報量を少なくなくした方が、一般的に情報処理の効率が良くなることによる。
【００４４】
図１に戻り説明を続ける。図２乃至図４を用いて説明したように、情報処理装置１００は、ユーザ１０から指定された情報、及び、伝送ポイントの位置や中間データの圧縮量等の伝送に関する情報に基づいて、ニューラルネットワークを生成する（ステップＳ２）。
【００４５】
なお、情報処理装置１００は、上記の情報に限らず、演算量や端末装置３００の演算能力等、種々の情報を総合的に評価して、評価結果に基づいてニューラルネットワークを生成する。
【００４６】
例えば、情報処理装置１００は、ニューラルネットワークの評価値の算出において、以下の式（１）を用いる。
【００４７】
【数１】
2020026741.tif 000003
【００４８】
式（１）において、「Ｖeval」は、ニューラルネットワークの評価値を示す。「Ｖrecognition」は、ニューラルネットワークの認識性能を定量化したものである。認識性能は、例えば、ニューラルネットワークの認識処理のＦ値や適合率、再現率、ＩｏＵ（Intersection-over-Union）等により示される。情報処理装置１００は、上記の数値に対して、適宜、正規化等を行い、評価値としての数値を得る。
【００４９】
「Ｃcomputation」は、ニューラルネットワークの情報処理に要する演算量を定量化したものである。演算量は、例えば、積和演算数、特定のプロセッサにおけるインストラクション数等により示される。
【００５０】
「Ｖenergy_saving」は、対象とするニューラルネットワークのネットワーク構造の圧縮処理によって、どの程度の電力量が削減されるかをモデル化したものである。「Ｖenergy_saving」の算出の一例について、再度、図４のグラフ３０を用いて説明する。例えば、「Ｖenergy_saving」は、ニューラルネットワークの各レイヤーの出力サイズと、入力データのサイズ（図４で示した「input_size」）との関係から、下記式（２）のように示される。
【００５１】
【数２】
2020026741.tif 000004
【００５２】
式（２）に示されるように、「Ｖenergy_saving」は、ニューラルネットワーク全体が第２の装置（情報処理サーバ２００）で処理される構造となる場合、「０」の値をとる。一方、「Ｖenergy_saving」は、ニューラルネットワーク全体がサーバで処理されない、すなわち分割される構造となる場合、「ｒcompressinon」と「ｒdepth」という２つの変数によって求められる。「ｒcompressinon」は、例えば下記式（３）で示される。
【００５３】
【数３】
2020026741.tif 000005
【００５４】
式（３）に示されるように、「ｒcompressinon」は、「compressed_size」と「input_size」の比である。式（２）及び式（３）によれば、「compressed_size」がより小さくなるほど、「Ｖenergy_saving」の値が大きくなるため、当該ニューラルネットワークに高評価が与えられる。一方、「ｒdepth」は、例えば下記式（４）で示される。
【００５５】
【数４】
2020026741.tif 000006
【００５６】
式（４）に示されるように、「ｒdepth」は、「server_layer_num」と「all_layer_num」の比である。式（２）及び式（４）によれば、「server_layer_num」がより大きくなる（言い換えれば、「ｒdepth」がより大きくなる）ほど、「Ｖenergy_saving」の値が大きくなるため、当該ニューラルネットワークに高評価が与えられる。
【００５７】
以上のように、上記式（２）乃至（４）によれば、情報処理装置１００は、「よりニューラルネットワークの早い段階（深部）」で、かつ、「できる限り小さい中間データ」を送信する構造を持つニューラルネットワークが、より省電力であると評価する。
【００５８】
なお、上記式（１）において、「ｋ１」、「ｋ２」「ｋ３」は、各変数の係数であり、言い換えれば、評価に関する所定の重み値を示す。これら重み値は、どのような変数に重みをもたせてニューラルネットワークを生成するかといったユーザ１０の指定を受けて決定されてもよい。また、重み値は、端末装置３００の演算能力や、端末装置３００と情報処理サーバ２００との間の通信規格等の関係性に基づいて予め設定された数値（情報処理装置１００に格納された数値）に基づいて、自動的に決定されてもよい。
【００５９】
情報処理装置１００は、式（１）を用いて、生成したニューラルネットワークを評価する。そして、情報処理装置１００は、評価値が所定の条件を満たすまで、ニューラルネットワークの構造の探索を継続する。例えば、情報処理装置１００は、後述する遺伝的な構造探索手法を用いて、ニューラルネットワークの構造に変化を与え、変化した構造に対する評価値の算出を行う。
【００６０】
情報処理装置１００は、探索した構造が所定の条件を満たしている場合（例えば、ユーザ１０が予め指定した閾値を評価値が超えている場合等）に、評価したニューラルネットワークの構造が最適であると判定し、提供するニューラルネットワークの構造を決定する。情報処理装置１００は、決定した構造に基づいてニューラルネットワークを生成し、生成したニューラルネットワークを記憶部１２０に格納する。
【００６１】
そして、情報処理装置１００は、構造を決定したニューラルネットワークを情報処理サーバ２００に送信する（ステップＳ３）。情報処理サーバ２００は、送信されたニューラルネットワークを受信する。そして、情報処理サーバ２００は、受信したニューラルネットワークを伝送ポイントで分割する（ステップＳ４）。情報処理サーバ２００は、分割したニューラルネットワークのうち、後段部分を記憶部２２０に格納する。
【００６２】
さらに、情報処理サーバ２００は、分割したニューラルネットワークのうち、前段部分を端末装置３００に送信する（ステップＳ５）。端末装置３００は、送信されたニューラルネットワークの前段部分を受信し、受信した前段部分を記憶部３２０に格納する。
【００６３】
端末装置３００は、例えばニューラルネットワークを利用した画像認識処理を実行する機会が発生した場合、ニューラルネットワークの前段部分を用いて、入力された画像データを圧縮した中間データを取得する。そして、端末装置３００は、中間データを情報処理サーバ２００に送信する。情報処理サーバ２００は、端末装置３００から送信された中間データをニューラルネットワークの後段部分に入力し、画像認識処理を行う。これにより、端末装置３００及び情報処理サーバ２００は、情報量の多い画像データをそのまま情報処理サーバ２００に送信せずとも、高度な認識処理を実現することができるので、通信や演算の処理負荷を軽減することができる。
【００６４】
このように、本開示に係る情報処理方法は、第１の装置（端末装置３００）と第２の装置（情報処理サーバ２００）とで分割して保持される構造を有するニューラルネットワークにおける、第１の装置と第２の装置間の情報の伝送に関する情報に基づいて、ニューラルネットワークを評価する。また、本開示に係る情報処理方法は、ニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する。
【００６５】
具体的には、本開示に係る情報処理方法は、伝送に関する情報を評価に用いることにより、エッジ側（端末装置３００）が伝送するデータの圧縮量や、伝送ポイントの箇所等に基づいて、分割して保持されるニューラルネットワークの構造探索を行う。これにより、本開示に係る情報処理方法によれば、通信を介した認識処理等の分散された処理がニューラルネットワークを利用して行われる場合における最適な構造を探索することができる。
【００６６】
［１−３．第１の実施形態に係る情報処理装置の構成］
次に、第１の実施形態に係る情報処理を実行する情報処理装置の一例である情報処理装置１００の構成について説明する。図５は、本開示の第１の実施形態に係る情報処理装置１００の構成例を示す図である。
【００６７】
図５に示すように、情報処理装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、情報処理装置１００は、情報処理装置１００を管理する管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【００６８】
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１０は、ネットワークＮ（インターネット等）と有線又は無線で接続され、ネットワークＮを介して、情報処理サーバ２００や端末装置３００等との間で情報の送受信を行う。
【００６９】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory)、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部１２０は、学習データ記憶部１２１と、演算器情報記憶部１２２と、通信規格記憶部１２３と、モデル記憶部１２４とを有する。以下、各記憶部について順に説明する。
【００７０】
学習データ記憶部１２１は、ニューラルネットワークの学習に用いられる学習データ群を記憶する。例えば、学習データは、画像データと、当該画像データの認識結果となる正解データのセット等である。なお、学習データは、情報処理装置１００が保持せずに、外部サーバ等から、適宜取得してもよい。
【００７１】
演算器情報記憶部１２２は、ニューラルネットワークを用いて演算処理を行う装置が有する演算器に関する情報を記憶する。図６に、第１の実施形態に係る演算器情報記憶部１２２の一例を示す。図６は、本開示の第１の実施形態に係る演算器情報記憶部１２２の一例を示す図である。図６に示した例では、演算器情報記憶部１２２は、「装置ＩＤ」、「種別」、「演算器情報」といった項目を有する。
【００７２】
「装置ＩＤ」は、ニューラルネットワークを用いた処理を実行する装置を識別する識別情報である。「種別」は、装置の種別を示す。
【００７３】
「演算器情報」は、各装置が有する演算器に関する情報を示す。図６では、演算器情報の項目を「演算器情報＃１」のように概念的に記載しているが、実際には、演算器情報の項目には、浮動小数点演算を可能な演算器を装置が有しているか、あるいは、その演算性能や、演算に用いるボードやＳｏＣ等を識別する情報等、種々の情報が記憶される。詳細は後述するが、情報処理装置１００は、各装置が有する演算器や演算性能に応じて、ニューラルネットワークの評価を算出する場合がある。このとき、情報処理装置１００は、ニューラルネットワークを実行する装置の演算器情報に基づいて、評価値に対する所定の補正を行ってもよい。
【００７４】
すなわち、図６に示した例では、装置ＩＤが「Ａ０１」で識別される装置は、種別が「サーバ」であり、演算器情報が「演算器情報＃１」であることを示している。
【００７５】
次に、通信規格記憶部１２３について説明する。通信規格記憶部１２３は、ニューラルネットワークが分散されて保持される場合の第１の装置と第２の装置との間の通信で用いられる通信規格と、その通信規格に対して与えられる所定の数値との関係性を記憶する。図７に、第１の実施形態に係る通信規格記憶部１２３の一例を示す。図７は、本開示の第１の実施形態に係る通信規格記憶部１２３の一例を示す図である。図７に示した例では、通信規格記憶部１２３は、「通信規格ＩＤ」、「通信規格」、「補正値」といった項目を有する。
【００７６】
「通信規格ＩＤ」は、通信規格を識別する識別情報を示す。「通信規格」は、第１の装置と第２の装置との間の通信で用いられる通信規格を示す。「補正値」は、ニューラルネットワークの生成において通信規格がユーザ１０から指定された場合に、指定された通信規格に応じて補正される値であり、例えば、式（１）に示す重み値の決定に用いられる。図７では、補正値の項目を「補正値＃１１」のように概念的に記載しているが、実際には、補正値の項目には、実際に重み値として代入される数値や、重み値の算出において乗算される割合等の数値が記憶される。
【００７７】
すなわち、図７に示した例では、通信規格ＩＤ「Ｂ０１」で識別される通信規格は「３Ｇ」であり、その補正値は「補正値＃１１」であることを示している。
【００７８】
次に、モデル記憶部１２４について説明する。モデル記憶部１２４は、情報処理装置１００によって生成されたモデル（分割されたニューラルネットワークの構造を有する画像認識モデル等）を記憶する。図８に、第１の実施形態に係るモデル記憶部１２４の一例を示す。図８は、本開示の第１の実施形態に係るモデル記憶部１２４の一例を示す図である。図８に示した例では、モデル記憶部１２４は、「モデルＩＤ」、「構造情報」、「伝送情報」、「評価値」といった項目を有する。
【００７９】
「モデルＩＤ」は、モデルを識別する識別情報を示す。「構造情報」は、モデルが有する構造情報を示す。図８では、構造情報の項目を「構造情報＃１」のように概念的に記載しているが、実際には、構造情報の項目には、全体の層の数や、入力データとして受け付けるデータの種別や情報量、活性化関数の種別等、ニューラルネットワークの構造に関する種々の情報が記憶される。
【００８０】
「伝送情報」は、分割されて保持されるモデルにおける伝送に関する情報を示す。図８では、伝送情報の項目を「伝送情報＃１」のように概念的に記載しているが、実際には、伝送情報の項目には、伝送される中間データの圧縮率や、伝送ポイントに関する情報等が記憶される。
【００８１】
「評価値」は、モデルの評価値を示す。図８では、評価値の項目を「評価値＃１」のように概念的に記載しているが、実際には、評価値の項目には、式（１）を用いて算出された当該モデルの具体的な評価値の数値等が記憶される。
【００８２】
すなわち、図８に示した例では、モデルＩＤ「Ｍ０１」で識別されるモデルは、構造情報が「構造情報＃１」であり、伝送情報が「伝送情報＃１」であり、その評価値が「評価値＃１」であることを示している。
【００８３】
図５に戻り、説明を続ける。制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、情報処理装置１００内部に記憶されたプログラム（例えば、本開示に係る情報処理プログラム）がＲＡＭ（Random  Access  Memory）等を作業領域として実行されることにより実現される。また、制御部１３０は、コントローラ（controller）であり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されてもよい。
【００８４】
図５に示すように、制御部１３０は、受付部１３１と、生成部１３２と、探索部１３３と、評価部１３４と、決定部１３５と、送信部１３６とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図５に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００８５】
受付部１３１は、各種情報を受け付ける。例えば、受付部１３１は、図２に示したユーザインターフェイス５０を介して、ニューラルネットワークの生成要求をユーザ１０から受け付ける。
【００８６】
受付部１３１は、生成要求とともに、画像認識や音声認識等、ニューラルネットワークを利用して行う情報処理の種別をユーザ１０から受け付ける。また、受付部１３１は、入力するデータの種別や解像度等の情報を受け付ける。すなわち、受付部１３１は、ニューラルネットワークの基本的な構造を決定するために要する、基本的な情報をユーザ１０から受け付ける。
【００８７】
また、受付部１３１は、生成するニューラルネットワークが実行される第１の装置及び第２の装置の構成、第１の装置と第２の装置間の通信規格、及び、ニューラルネットワークが提供される環境に関する情報を、ユーザインターフェイス５０を介して受け付ける。
【００８８】
第１の装置及び第２の装置の構成とは、図２に示したプルダウン表示５２等を利用してユーザ１０から指定される情報であり、例えば、第１の装置のボード名やＳｏＣ等の名称である。また、第１の装置と第２の装置間の通信規格とは、図２に示したプルダウン表示５４等を利用してユーザ１０から指定される情報である。例えば、ユーザ１０は、第１の装置及び第２の装置がともに対応している通信規格や、実際にニューラルネットワークを用いた処理が行われる場合に、第１の装置と第２の装置間で想定される通信規格等を指定する。受付部１３１は、ユーザ１０が指定した通信規格を受け付ける。
【００８９】
また、ニューラルネットワークが提供される環境に関する情報とは、図２に示したプルダウン表示５６等を利用してユーザ１０から指定される情報であり、例えば、ニューラルネットワークの後段が置かれるクラウドサーバ等を提供するサービス提供企業の名称等である。
【００９０】
また、受付部１３１は、ユーザ１０から受け付けた第１の装置及び第２の装置の構成、第１の装置と第２の装置間の通信規格、及び、ニューラルネットワークが提供される環境に関する情報等に基づいて、式（１）における重み値を決定してもよい。例えば、重み値は、情報処理装置１００の管理者等によって、予め基準となるような数値が与えられるものとする。具体的には、重み値は、式（１）の「ｋ１」、「ｋ２」、「ｋ３」の合計が「１」となる関係を保持しつつ、例えば、通信規格が「３Ｇ」であれば、「ｋ３」の値が比較的大きくなるよう補正する等によって決定される。これは、例えば通信規格が「３Ｇ」である場合、伝送速度が比較的遅いことから、第１の装置と第２の装置間の伝送が情報処理のボトルネックとなる変数が「Ｖenergy_saving」になる、と想定されることによる。すなわち、第１の装置と第２の装置間の通信が低速で行われることが想定される場合には、より「Ｖenergy_saving」に重みを置いた方が、分割されたニューラルネットワークにおける情報処理が円滑に行われる可能性が高いことによる。なお、重み値の設定は、上記の例に限らず、実際の情報処理による結果を踏まえた学習処理等により、自動的にチューニングされてもよい。また、重み値は、ユーザ１０から数値の入力を受け付けることにより決定されてもよい。
【００９１】
生成部１３２は、第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークを生成する。例えば、生成部１３２は、受付部１３１によって受け付けられた情報に基づいて、ユーザ１０が要望するニューラルネットワークを生成する。
【００９２】
また、生成部１３２は、後述する探索部１３３及び評価部１３４による処理を経て、生成したニューラルネットワークを更新する。例えば、生成部１３２は、探索部１３３による探索処理を経て、既存のニューラルネットワークの構造を更新する。また、生成部１３２は、評価部１３４によって算出される評価値に基づいてニューラルネットワークを更新する。例えば、生成部１３２は、評価部１３４によって算出された評価値が所定の閾値よりも低い場合、当該ニューラルネットワークの構造が最適でないと判定し、探索部１３３によって新たに探索される構造にニューラルネットワークを更新する。
【００９３】
探索部１３３は、ニューラルネットワークの構造を探索する。探索部１３３は、既知の種々の手法を用いて構造を探索することができる。例えば、探索部１３３は、遺伝的操作を用いてニューラルネットワークの構造を探索してもよい。
【００９４】
ここで、図９を用いて、探索部１３３が遺伝的操作を用いてニューラルネットワークの構造を探索する例について説明する。図９は、本開示に係る遺伝的操作による構造探索の一例を示す図である。図９では、遺伝的操作として、突然変異によるニューラルネットワークの構造の探索（新たなニューラルネットワークの生成）を行う例を示す。
【００９５】
具体的には、図９に示す例では、元となる評価済のニューラルネットワーク（以下、「シードネットワーク」と表記する）から、ネットワーク構造の異なる別のニューラルネットワークを生成する。
【００９６】
上述のように、遺伝的操作を用いたニューラルネットワークの構造探索は、突然変異や交叉等を含む。すなわち、本開示に係る探索手法では、ネットワークを構成する各層を遺伝子と見立て、層を突然変異又は交叉させることで、ネットワーク構造の異なる別のニューラルネットワークを生成する。
【００９７】
図９に示す例では、シードネットワークＳＮは、「Ｉｎｐｕｔ」及び「Ｏｕｔｐｕｔ」を含む１０の層から構成される。「Ｉｎｐｕｔ」は入力層を示し、「Ｏｕｔｐｕｔ」は出力層を示す。また、図９に示す「Ｃｏｎｖ１」及び「Ｃｏｎｖ２」は、Ｃｏｎｖｏｌｕｔｉｏｎレイヤー（畳み込み層）を示す。また、「Ｐｏｏｌ１」及び「Ｐｏｏｌ２」は、Ｍａｘ−Ｐｏｏｌｉｎｇ（プーリング層）を示す。また、図９に示すように、「Ｃｏｎｖ１」及び「Ｃｏｎｖ２」には、カーネルシェイプや出力マップ数などのパラメータが設定される。また、「Ｐｏｏｌ１」及び「Ｐｏｏｌ２」には、プールシェイプを示すパラメータが設定される。なお、図９で示す各層については、広く一般に使用されるものであるため、詳細な説明は省略する。また、図９で示す各層の構造は、ニューラルネットワークを利用して処理するタスク固有の情報として、例えばユーザインターフェイス５０を介して、ユーザ１０によって定義される。
【００９８】
続いて、図９に示すニューラルネットワークＭＮ１について説明する。探索部１３３は、シードネットワークＳＮを突然変異又は交叉させることで、別のニューラルネットワークであるニューラルネットワークＭＮ１を生成する（ステップＳ２１）。
【００９９】
図９に示すように、ニューラルネットワークＭＮ１は、シードネットワークＳＮのネットワーク構造から、レイヤー構成の一部が変化されたものである。具体的には、ニューラルネットワークＭＮ１では、シードネットワークＳＮに係る活性化関数「ｒｅｌｕ１」が、別の活性化関数「Ｔａｎｈ１」に変化している。このように、本開示に係る情報処理方法では、ネットワーク構造を構成する層のレイヤー種類を変更することで、ネットワーク構造の異なる別のニューラルネットワークを生成することができる。
【０１００】
さらに、探索部１３３は、ニューラルネットワークＭＮ１を突然変異又は交叉させることで、別のニューラルネットワークであるニューラルネットワークＭＮ２を生成してもよい（ステップＳ２２）。
【０１０１】
図９に示すように、ニューラルネットワークＭＮ２のネットワーク構造では、ニューラルネットワークＭＮ１のレイヤー構成に加え、活性化関数「Ａｂｓ１」が挿入されている。このように、本開示に係る情報処理方法では、層を新規に挿入することで、ネットワーク構造の異なる別のニューラルネットワークＭＮ２を生成することができる。
【０１０２】
なお、遺伝的操作に係る突然変異とは、上記の処理以外にも、例えば、「レイヤー挿入」、「レイヤー削除」、「レイヤー種変更」、「パラメータ変更」、「グラフ分岐」、「グラフ分岐削除」等の操作を含む。また、遺伝的操作に係る交叉とは、ユーザ１０が追加で指定したシードネットワークと現在保持するニューラルネットワークの間で、レイヤーを入れ替える操作である。レイヤーの入れ替え方については、一点交叉、二点交叉、多点交叉を始め、様々な手法をサポートし得る。
【０１０３】
また、上記で説明した構造探索処理は一例であり、本開示に係る情報処理方法では、構造の探索及び生成手法は、遺伝的操作による例に限定されない。
【０１０４】
評価部１３４は、ニューラルネットワーク（言い換えれば、ニューラルネットワークが有するネットワーク構造）を評価する。
【０１０５】
まず、評価部１３４は、探索部１３３によって探索されたニューラルネットワークの構造を用いて、学習データ記憶部１２１等に保持された学習データを学習する。そして、評価部１３４は、後述するように、伝送に関する情報や省電力効果、ニューラルネットワークの認識性能や演算量等を総合的に考慮した上で、評価値を算出する。なお、上記の学習処理においては、ニューラルネットワークの学習や評価のために開発された既存のソフトウェアライブラリ等が適宜用いられてもよい。
【０１０６】
本開示において、評価部１３４は、第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、第１の装置と第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価する。
【０１０７】
例えば、評価部１３４は、ニューラルネットワークの各層のうち、出力される情報のサイズが最大となる層よりも深部にあり、かつ、当該ニューラルネットワークの入力層から出力される情報のサイズよりも小さい情報が出力される層を、第１の装置から第２の装置へと情報が伝送される伝送ポイントと決定する。そして、評価部１３４は、決定した伝送ポイントに関する情報に基づいてニューラルネットワークを評価する。
【０１０８】
一例として、評価部１３４は、伝送ポイントよりも浅部に存在する層の数、及び、ニューラルネットワークを構成する層の総数に基づいて、ニューラルネットワークを評価する。具体的には、評価部１３４は、上記式（１）乃至（４）に示した「Ｖenergy_saving」により示される指標値に基づいて、ニューラルネットワークを評価する。
【０１０９】
また、評価部１３４は、伝送に関する情報のみならず、上記式（１）に示される他の指標値に基づいて、ニューラルネットワークを総合的に評価してもよい。
【０１１０】
例えば、評価部１３４は、ニューラルネットワークの認識性能を示す指標値に基づいて、ニューラルネットワークを評価する。具体的には、評価部１３４は、上記式（１）の「Ｖrecognition」で示す指標値に基づいてニューラルネットワークを評価する。一例として、評価部１３４は、ニューラルネットワークの認識処理のＦ値や適合率、再現率、ＩｏＵ等を指標値として正規化した数値等に基づいて、ニューラルネットワークを評価する。
【０１１１】
また、評価部１３４は、ニューラルネットワークにおける演算量に基づいて、前記ニューラルネットワークを評価する。
具体的には、評価部１３４は、上記式（１）の「Ｃcomputation」で示す指標値に基づいてニューラルネットワークを評価する。一例として、評価部１３４は、ニューラルネットワークが実行される際の積和演算数や特定のプロセッサにおけるインストラクション数等に基づいて、ニューラルネットワークを評価する。
【０１１２】
また、評価部１３４は、第１の装置の演算処理の性能に関する情報に基づいてニューラルネットワークを評価してもよい。ニューラルネットワークの前段が処理される端末装置３００等の第１の装置は、ＩｏＴ機器等、種々の装置が想定される。このため、各装置が有する演算処理の性能も、また様々に異なると想定される。このため、評価部１３４は、第１の装置の演算処理の性能に関する情報を評価対象に加えることにより、より実状に即した評価を得ることができる。
【０１１３】
この場合、評価部１３４は、上記式（１）に変数を追加した下記式（５）を用いて評価を行ってもよい。
【０１１４】
【数５】
2020026741.tif 000007
【０１１５】
式（５）は、式（１）と比較して、重み値「ｋ４」と変数「Ｖefficient_arithmetic」をさらに有する。「Ｖefficient_arithmetic」は、第１の装置における演算効率を示す。すなわち、評価部１３４は、通信（伝送）に伴う電力量に限らず、端末装置３００等、ニューラルネットワークを処理するデバイス（第１の装置）の計算機としての特性についても考慮して、ニューラルネットワークを評価する。
【０１１６】
例えば、ユーザ１０は、上記変数の重みを重くすることにより、第１の装置側での演算効率が高まるネットワーク構造を獲得しやすくなる。このことは、第１の装置における特定の表現形式の演算効率が低い場合、その形式の演算数が多いネットワークの評価値を下げることを意味する。
【０１１７】
例えば、評価部１３４は、第１の装置に保持されるニューラルネットワークの各層における浮動小数点演算を行う回数（インストラクション数）と、浮動小数点演算以外の演算を行う回数とに基づいて、ニューラルネットワークを評価してもよい。
【０１１８】
すなわち、評価部１３４は、端末装置３００が浮動小数点演算器を保持していない場合、浮動小数演算数が比較的多いニューラルネットワークの評価値を下げる。一方、評価部１３４は、ニューラルネットワークにおいて、固定小数点数などの量子化手法によって重みや中間データを表現する層が多い場合には、そのニューラルネットワークの評価値を高める。
【０１１９】
評価部１３４は、浮動小数点演算に関する評価値を算出する場合、例えば下記式（６）のような式を用いて、変数「Ｖefficient_arithmetic」を算出してもよい。
【０１２０】
【数６】
2020026741.tif 000008
【０１２１】
上記式（６）において、「Ｎdev」は、端末装置３００側で処理する層の数を示す。また、「ＦＩi」は、各層において浮動小数点演算器を用いるインストラクション数を示す。また、「ＯＩi」は、その他のインストラクション数を示す。
【０１２２】
この点について、図１０を用いて説明する。図１０は、本開示に係る演算器情報に基づく構造探索の一例を示す図である。なお、図１０では、伝送ポイント（「transfer_point」）第３層である例を示す。
【０１２３】
図１０の表６０に示すように、評価部１３４は、端末装置３００内のニューラルネットワークの各層において、浮動小数点演算器を用いるインストラクション数と、その他のインストラクション数とを算出する。なお、図１０では、インストラクション数を「＃２１」のように概念的に示す。そして、評価部１３４は、表６０に示される各インストラクション数を式（６）に代入して「Ｖefficient_arithmetic」の値を算出するとともに、当該ニューラルネットワークの評価値である「Ｖeval」の値を算出する。例えば、評価部１３４は、図１０に示す表６０を記憶部１２０内に仮想的に展開し、上記の算出処理を経て、「Ｖeval」の値を得る。
【０１２４】
なお、上記式（１）や（５）で示されるように、評価値を求める各変数には、所定の重み値が設定される。すなわち、評価部１３４は、伝送に関する情報、ニューラルネットワークの認識性能を示す指標値、ニューラルネットワークにおける演算量、及び、第１の装置の演算処理の性能に関する情報の各々に所定の重み値を乗算した値に基づいて、ニューラルネットワークを評価する。
【０１２５】
また、上述のように、評価部１３４は、第１の装置及び第２の装置の構成、第１の装置と第２の装置間の通信規格、及び、ニューラルネットワークが提供される環境に関する情報に基づいて、重み値を決定する。あるいは、評価部１３４は、ユーザ１０からの指定に従い、各々の重み値を決定してもよい。これにより、ユーザ１０は、自身が重視する性能に重きを置いた重み値を任意に設定できるので、自身が所望するニューラルネットワークの構造を得ることができる。
【０１２６】
決定部１３５は、評価部１３４によるニューラルネットワークの評価結果に基づいて、ニューラルネットワークの構造を決定する。
【０１２７】
例えば、決定部１３５は、評価部１３４による評価の結果が所定の閾値を超えるなど、探索処理の終了条件に合致する場合に、当該ニューラルネットワークの構造が最適なものであると判定し、ニューラルネットワークの構造を決定する。
【０１２８】
一方、決定部１３５は、評価部１３４による評価の結果が所定の閾値以下であるなど、探索処理の終了条件に合致しない場合には、遺伝的操作を加えるなどの探索部１３３による探索処理を再度実行させてもよい。なお、終了条件は、ユーザ１０によって任意に設定されてもよい。終了条件は、ニューラルネットワークの認識性能や演算量、省電力効果、圧縮率、あるいは、探索処理を何度反復させるかといった反復処理の繰り返し回数等を組み合わせて作成されてもよい。
【０１２９】
送信部１３６は、決定部１３５によって決定された構造を有するニューラルネットワークを第２の装置に送信する。
【０１３０】
［１−４．第１の実施形態に係る情報処理サーバの構成］
次に、第１の実施形態に係る第２の装置の一例である情報処理サーバ２００の構成について説明する。図１１は、本開示の第１の実施形態に係る情報処理サーバ２００の構成例を示す図である。
【０１３１】
図１１に示すように、情報処理サーバ２００は、通信部２１０と、記憶部２２０と、制御部２３０とを有する。なお、情報処理サーバ２００は、情報処理サーバ２００を管理する管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【０１３２】
通信部２１０は、例えば、ＮＩＣ等によって実現される。通信部２１０は、ネットワークＮと有線又は無線で接続され、ネットワークＮを介して、情報処理装置１００や端末装置３００等との間で情報の送受信を行う。
【０１３３】
記憶部２２０は、例えば、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部２２０は、後段モデル記憶部２２１を有する。
【０１３４】
後段モデル記憶部２２１は、情報処理装置１００から送信されたニューラルネットワークのうち、伝送ポイント以後である後段部分を記憶する。
【０１３５】
制御部２３０は、例えば、ＣＰＵやＭＰＵ等によって、情報処理サーバ２００内部に記憶されたプログラムがＲＡＭ等を作業領域として実行されることにより実現される。また、制御部２３０は、コントローラであり、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されてもよい。
【０１３６】
図１１に示すように、制御部２３０は、モデル受信部２３１と、分割部２３２と、モデル送信部２３３と、中間データ受信部２３４と、認識部２３５と、認識結果送信部２３６とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部２３０の内部構成は、図１１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【０１３７】
モデル受信部２３１は、情報処理装置１００から送信されたモデル（ニューラルネットワークの構造を有する認識処理モデル等）を受信する。
【０１３８】
分割部２３２は、モデル受信部２３１によって受信されたモデルを分割する。そして、分割部２３２は、分割したモデルにおけるニューラルネットワークの後段部分を、後段モデル記憶部２２１に格納する。
【０１３９】
モデル送信部２３３は、分割部２３２によって分割したモデルにおけるニューラルネットワークの前段部分を、端末装置３００に送信する。
【０１４０】
中間データ受信部２３４は、端末装置３００から送信される中間データ（端末装置３００において圧縮処理されたデータ）を受信する。
【０１４１】
認識部２３５は、中間データ受信部２３４によって受信された中間データを、ニューラルネットワークの後段部分に入力し、各種認識処理を行う。例えば、認識部２３５は、入力データが画像データである場合、画像認識処理を行う。
【０１４２】
認識結果送信部２３６は、認識部２３５によって認識された結果を端末装置３００に送信する。これにより、端末装置３００のユーザは、自身が入力したデータの認識結果を得ることができる。また、認識結果送信部２３６は、認識部２３５によって認識された結果を情報処理装置１００に送信してもよい。
【０１４３】
［１−５．第１の実施形態に係る端末装置の構成］
次に、第１の実施形態に係る第１の装置の一例である端末装置３００の構成について説明する。図１２は、本開示の第１の実施形態に係る端末装置３００の構成例を示す図である。
【０１４４】
図１２に示すように、端末装置３００は、通信部３１０と、記憶部３２０と、制御部３３０とを有する。なお、端末装置３００は、端末装置３００を使用するユーザ等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【０１４５】
通信部３１０は、例えば、ＮＩＣ等によって実現される。通信部３１０は、ネットワークＮと有線又は無線で接続され、ネットワークＮを介して、情報処理装置１００や情報処理サーバ２００等との間で情報の送受信を行う。
【０１４６】
記憶部３２０は、例えば、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部３２０は、前段モデル記憶部３２１を有する。
【０１４７】
前段モデル記憶部３２１は、情報処理装置１００によって生成されたニューラルネットワークのうち、伝送ポイントよりも前段（深部）である後段部分を記憶する。
【０１４８】
制御部３３０は、例えば、ＣＰＵやＭＰＵ等によって、端末装置３００内部に記憶されたプログラムがＲＡＭ等を作業領域として実行されることにより実現される。また、制御部３３０は、コントローラであり、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されてもよい。
【０１４９】
図１２に示すように、制御部３３０は、モデル受信部３３１と、センシング部３３２と、認識部３３３と、中間データ送信部３３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部２３０の内部構成は、図１２に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【０１５０】
モデル受信部３３１は、情報処理サーバ２００から送信されたモデル（ニューラルネットワークの構造を有する認識処理モデル等）の前段部分を受信する。モデル受信部３３１は、受信したモデルの前段部分を前段モデル記憶部３２１に格納する。
【０１５１】
センシング部３３２は、各種センサを用いてセンシングを行い、各種データを取得する。例えば、センシング部３３２は、カメラを用いて画像データを取得する。また、センシング部３３２は、マイクを用いて音声を取得してもよい。なお、センシング部３３２は、センサを用いた情報のみならず、例えばユーザから入力されたデータ等、ニューラルネットワークを有するモデルの入力データとなりうる情報であれば、あらゆる情報を取得してもよい。
【０１５２】
認識部３３３は、センシング部３３２によって取得された情報をニューラルネットワークの前段部分に入力し、各種認識処理を行う。例えば、認識部３３３は、ニューラルネットワークの前段部分に入力データを入力することにより、入力データよりも情報量が圧縮された中間データを得る。すなわち、認識部３３３は、ニューラルネットワークにおける伝送ポイントまでの認識処理を行う。
【０１５３】
中間データ送信部３３４は、認識部３３３によって出力された中間データを情報処理サーバ２００に送信する。また、中間データ送信部３３４は、中間データを情報処理サーバ２００に送信したのちに、認識結果を情報処理サーバ２００から受信する。これにより、端末装置３００は、比較的高度な演算を要する後段部分の処理を行うことなく、画像認識等の結果を得ることができる。
【０１５４】
［１−６．第１の実施形態に係る情報処理の手順］
次に、図１３及び図１４を用いて、第１の実施形態に係る情報処理の手順について説明する。まず、図１３を用いて、本開示の第１の実施形態に係る情報処理の全体の流れについて説明する。図１３は、本開示の第１の実施形態に係る情報処理の手順を示すフローチャートである。
【０１５５】
図１３に示すように、情報処理装置１００は、ユーザインターフェイス５０を介して、モデルの設定情報をユーザ１０から受け付けたか否かを判定する（ステップＳ１０１）。モデルの設定情報を受け付けていない場合（ステップＳ１０１；Ｎｏ）、情報処理装置１００は、モデルの設定情報を受け付けるまで待機する。
【０１５６】
一方、モデルの設定情報を受け付けた場合（ステップＳ１０１；Ｙｅｓ）、情報処理装置１００は、ニューラルネットワークの構造に関する探索処理を実行する（ステップＳ１０２）。探索処理の詳細は、図１４を用いて後述する。
【０１５７】
探索処理が完了すると、情報処理装置１００は、ニューラルネットワークのネットワーク構造を決定する（ステップＳ１０３）。そして、情報処理装置１００は、構造が決定したモデルを情報処理サーバ２００に送信する（ステップＳ１０４）。
【０１５８】
次に、図１４を用いて、本開示の第１の実施形態に係る探索処理の詳細な流れについて説明する。図１４は、本開示の第１の実施形態に係る探索処理の手順を示すフローチャートである。
【０１５９】
図１４に示すように、情報処理装置１００は、基本となるシードネットワークを入力する（ステップＳ２０１）。続けて、情報処理装置１００は、シードネットワークのネットワーク構造に対して遺伝的操作を加える（ステップＳ２０２）。これにより、情報処理装置１００は、ネットワーク構造の異なるニューラルネットワークを得る。
【０１６０】
そして、情報処理装置１００は、得られたニューラルネットワークの評価値を算出する（ステップＳ２０３）。続けて、情報処理装置１００は、得られた評価値が、探索の終了条件に合致しているか否かを判定する（ステップＳ２０４）。
【０１６１】
終了条件に合致していない場合（ステップＳ２０４；Ｎｏ）、情報処理装置１００は、再び、ネットワーク構造に対して遺伝的操作を加えることにより、新たな構造のニューラルネットワークを得る（ステップＳ２０２）。
【０１６２】
一方、終了条件に合致していた場合（ステップＳ２０４；Ｙｅｓ）、情報処理装置１００は、探索処理を完了する。
【０１６３】
（２．第２の実施形態）
次に、第２の実施形態について説明する。上記第１の実施形態では、情報処理装置１００が、第１の装置（端末装置３００）の演算性能を評価値に反映する場合に、浮動小数点演算器の有無や、浮動小数点演算の性能を用いる例を示した。ここで、情報処理装置１００は、上記とは異なる演算の性能を用いて、第１の装置の演算性能を評価値に反映してもよい。
【０１６４】
例えば、第２の実施形態に係る情報処理装置１００は、第１の装置に保持されるニューラルネットワークの層において乗算を行う回数と、乗算以外の演算を行う回数との関係性に基づいて、ニューラルネットワークを評価する。
【０１６５】
これは、ＩｏＴ機器等の比較的演算性能の低い装置の場合、乗算を行う回数が多いほど、演算処理に負荷が生じることによる。すなわち、情報処理装置１００は、乗算を行わずに第１の装置が演算を行うことができるか否かに基づいて、ニューラルネットワークの構造を評価することにより、より高い省電力化を達成することができる可能性がある。
【０１６６】
具体的には、第１の装置上での畳み込み演算や内積演算をBinaryNet等と称される既知の技術を用いて比較的負荷の低い演算に置き換えた場合、第１の装置は、加算や乗算を行うことなく、XNORやビットカウント等の単純な演算によって、近似計算を行うことができる。例えば、上記のように、第１の装置がＡＳＩＣやＦＰＧＡ等によって実現される場合、この置き換えによって、第１の装置から乗算器を取り除くことができるため、より大幅な省電力化を達成可能である。このような省電力化を図る場合、上記式（６）で示した変数は、下記式（７）で再定義される。
【０１６７】
【数７】
2020026741.tif 000009
【０１６８】
上記式（７）において、「Ｎdev」は、ニューラルネットワーク全体の層数のうち第１の装置側で処理する層の数を示す。また、「ＭＩi」は、第１の装置の各層における乗算のインストラクション数を示す。また、「ＯＩi」は、第１の装置の各層における乗算以外のインストラクション数を示す。
【０１６９】
式（７）を用いてニューラルネットワークの構造を評価することで、第１の装置の計算機としての特性がより考慮されるため、情報処理装置１００は、第１の装置側での演算効率が高まるようなネットワーク構造を獲得しやすくなる。結果として、情報処理装置１００は、第１の装置及び第２の装置が電力量を抑えつつ高度な認識を行うことを間接的に支援することができる。
【０１７０】
（３．その他の実施形態）
上述した各実施形態に係る処理は、上記各実施形態以外にも種々の異なる形態にて実施されてよい。
【０１７１】
上記した各実施形態では、伝送ポイントが一つであるニューラルネットワークを例として説明した。しかし、伝送ポイントは複数存在してもよい。例えば、ニューラルネットワークを利用した処理は、三以上の装置によって実行される場合がある。具体的には、ニューラルネットワークを利用した処理は、イヤホン等のウェアラブルデバイスと、スマートフォン等のスマートデバイスと、クラウドサーバ等により行われる場合がある、この場合、情報処理装置１００は、二以上の伝送ポイントを有するニューラルネットワークの構造を生成し、かかる構造について評価してもよい。
【０１７２】
また、上記した各実施形態では、圧縮に関する評価量として省電力化を例に挙げて説明した。しかし、評価量は、電力に限らず、伝送される情報量や演算量等、何らかの指標を有する数値であれば、いずれの情報が採用されてもよい。
【０１７３】
また、情報処理装置１００は、実際に端末装置３００や情報処理サーバ２００で実行された認識結果のフィードバックを受けて、ニューラルネットワークの構造を再探索してもよい。例えば、情報処理装置１００は、端末装置３００と情報処理サーバ２００の間の伝送回数が想定以上に頻繁に行われることや、想定以上に通信状態が悪い場合等には、伝送に関する情報の重み値を重く調整して、ニューラルネットワークの構造を再探索する等の調整を行ってもよい。
【０１７４】
また、上記各実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０１７５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１７６】
また、上述してきた各実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０１７７】
また、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、他の効果があってもよい。
【０１７８】
（４．ハードウェア構成）
上述してきた各実施形態に係る情報処理装置１００、情報処理サーバ２００、端末装置３００等の情報機器は、例えば図１５に示すような構成のコンピュータ１０００によって実現される。以下、第１の実施形態に係る情報処理装置１００を例に挙げて説明する。図１５は、情報処理装置１００の機能を実現するコンピュータ１０００の一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス１５００、及び入出力インターフェイス１６００を有する。コンピュータ１０００の各部は、バス１０５０によって接続される。
【０１７９】
ＣＰＵ１１００は、ＲＯＭ１３００又はＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。例えば、ＣＰＵ１１００は、ＲＯＭ１３００又はＨＤＤ１４００に格納されたプログラムをＲＡＭ１２００に展開し、各種プログラムに対応した処理を実行する。
【０１８０】
ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０１８１】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を非一時的に記録する、コンピュータが読み取り可能な記録媒体である。具体的には、ＨＤＤ１４００は、プログラムデータ１４５０の一例である本開示に係る情報処理プログラムを記録する記録媒体である。
【０１８２】
通信インターフェイス１５００は、コンピュータ１０００が外部ネットワーク１５５０（例えばインターネット）と接続するためのインターフェイスである。例えば、ＣＰＵ１１００は、通信インターフェイス１５００を介して、他の機器からデータを受信したり、ＣＰＵ１１００が生成したデータを他の機器へ送信したりする。
【０１８３】
入出力インターフェイス１６００は、入出力デバイス１６５０とコンピュータ１０００とを接続するためのインターフェイスである。例えば、ＣＰＵ１１００は、入出力インターフェイス１６００を介して、キーボードやマウス等の入力デバイスからデータを受信する。また、ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやスピーカーやプリンタ等の出力デバイスにデータを送信する。また、入出力インターフェイス１６００は、所定の記録媒体（メディア）に記録されたプログラム等を読み取るメディアインターフェイスとして機能してもよい。メディアとは、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０１８４】
例えば、コンピュータ１０００が第１の実施形態に係る情報処理装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされた情報処理プログラムを実行することにより、制御部１３０等の機能を実現する。また、ＨＤＤ１４００には、本開示に係る情報処理プログラムや、記憶部１２０内のデータが格納される。なお、ＣＰＵ１１００は、プログラムデータ１４５０をＨＤＤ１４００から読み取って実行するが、他の例として、外部ネットワーク１５５０を介して、他の装置からこれらのプログラムを取得してもよい。
【０１８５】
なお、本技術は以下のような構成も取ることができる。
（１）
コンピュータが、
第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価し、
前記ニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する
情報処理方法。
（２）
前記ニューラルネットワークの各層のうち、出力される情報のサイズが最大となる層よりも深部にあり、かつ、当該ニューラルネットワークの入力層から出力される情報のサイズよりも小さい情報が出力される層を、前記第１の装置から前記第２の装置へと情報が伝送される伝送ポイントと決定し、決定した伝送ポイントに関する情報に基づいて、当該ニューラルネットワークを評価する
前記（１）に記載の情報処理方法。
（３）
前記伝送ポイントよりも浅部に存在する層の数、及び、前記ニューラルネットワークを構成する層の総数に基づいて、当該ニューラルネットワークを評価する
前記（２）に記載の情報処理方法。
（４）
前記ニューラルネットワークの認識性能を示す指標値に基づいて、前記ニューラルネットワークを評価する
前記（１）〜（３）のいずれかに記載の情報処理方法。
（５）
前記ニューラルネットワークにおける演算量に基づいて、前記ニューラルネットワークを評価する
前記（１）〜（４）のいずれかに記載の情報処理方法。
（６）
前記第１の装置の演算処理の性能に関する情報に基づいて、前記ニューラルネットワークを評価する
前記（１）〜（５）のいずれかに記載の情報処理方法。
（７）
前記第１の装置に保持される前記ニューラルネットワークの各層における浮動小数点演算を行う回数と、浮動小数点演算以外の演算を行う回数とに基づいて、当該ニューラルネットワークを評価する
前記（６）に記載の情報処理方法。
（８）
前記第１の装置に保持される前記ニューラルネットワークの各層における乗算を行う回数と、乗算以外の演算を行う回数との関係性に基づいて、当該ニューラルネットワークを評価する
前記（６）又は（７）に記載の情報処理方法。
（９）
前記伝送に関する情報、前記ニューラルネットワークの認識性能を示す指標値、当該ニューラルネットワークにおける演算量、及び、前記第１の装置の演算処理の性能に関する情報の各々に所定の重み値を乗算した値に基づいて、前記ニューラルネットワークを評価する
前記（１）〜（８）のいずれかに記載の情報処理方法。
（１０）
前記第１の装置及び前記第２の装置の構成、当該第１の装置と当該第２の装置間の通信規格、及び、前記ニューラルネットワークが提供される環境に関する情報に基づいて、前記重み値を決定する
前記（９）に記載の情報処理方法。
（１１）
第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価する評価部と、
前記評価部によるニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する決定部と
を備えた情報処理装置。
（１２）
コンピュータを、
第１の装置と第２の装置とで分割して保持される構造を有するニューラルネットワークにおける、前記第１の装置と前記第２の装置間の情報の伝送に関する情報に基づいて、当該ニューラルネットワークを評価する評価部と、
前記評価部によるニューラルネットワークの評価に基づいて、当該ニューラルネットワークの構造を決定する決定部と
として機能させるための情報処理プログラム。
【符号の説明】
【０１８６】
１  情報処理システム
１００  情報処理装置
１１０  通信部
１２０  記憶部
１２１  学習データ記憶部
１２２  演算器情報記憶部
１２３  通信規格記憶部
１２４  モデル記憶部
１３０  制御部
１３１  受付部
１３２  生成部
１３３  探索部
１３４  評価部
１３５  決定部
１３６  送信部
２００  情報処理サーバ
３００  端末装置
【図１】
2020026741.tif 000010
【図２】
2020026741.tif 000011
【図３】
2020026741.tif 000012
【図４】
2020026741.tif 000013
【図５】
2020026741.tif 000014
【図６】
2020026741.tif 000015
【図７】
2020026741.tif 000016
【図８】
2020026741.tif 000017
【図９】
2020026741.tif 000018
【図１０】
2020026741.tif 000019
【図１１】
2020026741.tif 000020
【図１２】
2020026741.tif 000021
【図１３】
2020026741.tif 000022
【図１４】
2020026741.tif 000023
【図１５】
2020026741.tif 000024
【国際調査報告】
2020026741.tif 000025
2020026741.tif 000026