(57)【要約】【課題】ネットワーク構造及び重みデータを用いて入力データを処理するための計算を行う装置において、計算コストを考慮して計算手法を変更する計算手法決定システムを提供する。【解決手段】計算手法決定システムは、計算が実行される実行環境において、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて各層の計算を実行する事前計算部と、事前計算部の計算結果に基づいて層ごとに少なくとも１つの計算手法の計算コストを取得するコスト取得部と、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいて層ごとに１つの計算手法を選択し、層と選択された１つの計算手法とを対応付ける決定部と、各層に対応付けられた計算手法を用いて入力データに対するネットワーク構造の各層の計算を実行環境において実行する計算部と、を備える。【選択図】図４
2019128831.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対する前記ネットワーク構造の各層の計算を実行する事前計算部と、
前記事前計算部の計算結果に基づいて、前記ネットワーク構造の層ごとに前記少なくとも１つの計算手法の計算コストを取得するコスト取得部と、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部と、
前記決定部により前記ネットワーク構造の各層に対応付けられた前記計算手法を用いて、前記入力データに対する前記ネットワーク構造の各層の計算を前記実行環境において実行する計算部と、
を備える計算手法決定システム。
【請求項２】
前記少なくとも１つの計算手法は、前記実行環境で実行可能であり、それぞれが異なる演算で同一機能を発揮する複数のアルゴリズムを含む、請求項１に記載の計算手法決定システム。
【請求項３】
前記少なくとも１つの計算手法は、前記実行環境で実行可能であり、それぞれが異なるリソースを用いて同一の演算を行う複数のアルゴリズムを含む、請求項１又は２に記載の計算手法決定システム。
【請求項４】
前記実行環境に基づいて、前記ネットワーク構造の各層に対して前記少なくとも１つの計算手法を準備する候補決定部をさらに備える、請求項１〜３の何れか一項に記載の計算手法決定システム。
【請求項５】
前記ネットワーク構造及び前記重みデータを外部装置から取得し、所定フォーマットに変換する変換部を備え、
前記事前計算部及び前記計算部は、前記変換部により変換された前記所定フォーマットの前記ネットワーク構造及び前記重みデータに基づいて計算する、請求項１〜４の何れか一項に記載の計算手法決定システム。
【請求項６】
前記重みデータのデータ順を、前記実行環境に基づいて変更する第１調整部をさらに備え、
前記事前計算部及び前記計算部は、前記第１調整部により調整された前記重みデータに基づいて計算する、請求項１〜５の何れか一項に記載の計算手法決定システム。
【請求項７】
前記計算部の計算に関連した事前処理を前記重みデータに対して行う第２調整部をさらに備え、
前記事前計算部及び前記計算部は、前記第２調整部により調整された前記重みデータに基づいて計算する、請求項１〜６の何れか一項に記載の計算手法決定システム。
【請求項８】
前記事前計算部及び前記計算部は、第１端末に備わり、
前記第１端末の実行環境と同一の実行環境を有する第２端末に対して、前記決定部により決定された前記計算手法を提供する提供部をさらに備える、請求項１〜７の何れか一項に記載の計算手法決定システム。
【請求項９】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、前記ネットワーク構造の層ごとに取得するデータ取得部と、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部と、
を備える計算手法決定装置。
【請求項１０】
ネットワーク構造、重みデータ、及び、前記ネットワーク構造の層と計算手法との対応関係を取得する取得部と、
前記取得部により取得された前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行する計算部と、
を備える、処理装置。
【請求項１１】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対する前記ネットワーク構造の各層の計算を実行するステップと、
前記ネットワーク構造の各層の計算結果に基づいて、前記ネットワーク構造の層ごとに前記少なくとも１つの計算手法の計算コストを取得するステップと、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付けるステップと、
前記ネットワーク構造の各層に対応付けられた前記計算手法を用いて、前記入力データに対する前記ネットワーク構造の各層の計算を前記実行環境において実行するステップと、
を備える計算手法決定方法。
【請求項１２】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、前記ネットワーク構造の層ごとに取得するステップと、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付けるステップと、
を備える計算手法決定方法。
【請求項１３】
ネットワーク構造、重みデータ、及び、前記ネットワーク構造の層と計算手法との対応関係を取得するステップと、
前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行するステップと、
を備える、処理方法。
【請求項１４】
コンピュータを動作させる計算手法決定プログラムであって、
前記コンピュータを、
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対する前記ネットワーク構造の各層の計算を実行する事前計算部、
前記事前計算部の計算結果に基づいて、前記ネットワーク構造の層ごとに前記少なくとも１つの計算手法の計算コストを取得するコスト取得部、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部、及び、
前記決定部により前記ネットワーク構造の各層に対応付けられた前記計算手法を用いて、前記入力データに対する前記ネットワーク構造の各層の計算を前記実行環境において実行する計算部として機能させる、計算手法決定プログラム。
【請求項１５】
コンピュータを動作させる計算手法決定プログラムであって、
前記コンピュータを、
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、前記ネットワーク構造の層ごとに取得するデータ取得部、及び、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部として機能させる、
計算手法決定プログラム。
【請求項１６】
コンピュータを動作させる処理プログラムであって、
前記コンピュータを、
ネットワーク構造、重みデータ、及び、前記ネットワーク構造の層と計算手法との対応関係を取得する取得部、及び、
前記取得部により取得された前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行する計算部として機能させる、
処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、計算手法決定システム、計算手法決定装置、処理装置、計算手法決定方法、処理方法、計算手法決定プログラム、及び、処理プログラムに関する。
【背景技術】
【０００２】
特許文献１は、入力層、中間層、出力層という複数層で構成される階層型ネットワークを有する認識装置を開示する。認識装置は、学習装置にて学習されたネットワーク構造及び重みデータを用いて認識を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１５７４２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般的に、認識装置は、携帯端末やカメラなど、学習装置に比べて小型ではあるものの処理能力が低い機器となる。画像センサの高性能化や通信データの大容量化に伴い、認識装置において、入力データの処理時間や処理に必要なリソースが増大する傾向にある。
【０００５】
本技術分野では、ネットワーク構造及び重みデータを用いて入力データを処理するための計算を行う装置において、計算コストを考慮して計算手法を決定することができる計算手法決定システム、計算手法決定装置、処理装置、計算手法決定方法、処理方法、計算手法決定プログラム、及び、処理プログラムが望まれている。
【課題を解決するための手段】
【０００６】
本開示の一側面は、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対するネットワーク構造の各層の計算を実行する事前計算部と、事前計算部の計算結果に基づいて、ネットワーク構造の層ごとに少なくとも１つの計算手法の計算コストを取得するコスト取得部と、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付ける決定部と、決定部によりネットワーク構造の各層に対応付けられた計算手法を用いて、入力データに対するネットワーク構造の各層の計算を実行環境において実行する計算部と、を備える計算手法決定システムである。
【０００７】
この計算手法決定システムでは、予め準備された計算手法の中から、それらを実行環境にて実際に動作させて得られた計算コストに基づいて、層ごとに１つの計算手法が選択される。このように、計算手法決定システムは、計算コストを考慮して最適な計算手法を層ごとに決定することができる。よって、計算手法決定システムは、計算コストを考慮して計算手法を決定することができる。
【０００８】
一実施形態においては、少なくとも１つの計算手法は、実行環境で実行可能であり、それぞれが異なる演算で同一機能を発揮する複数のアルゴリズムを含んでもよい。この場合、計算手法決定システムは、同一結果を出力するものの演算方法がそれぞれ異なる複数のアルゴリズムを実行環境にて実際に動作させ、得られた計算コストに基づいて最適なアルゴリズムを決定することができる。
【０００９】
一実施形態においては、少なくとも１つの計算手法は、実行環境で実行可能であり、それぞれが異なるリソースを用いて同一の演算を行う複数のアルゴリズムを含んでもよい。この場合、計算手法決定システムは、同一の演算で同一結果を出力するものの使用するリソースがそれぞれ異なる複数のアルゴリズムを実行環境にて実際に動作させ、得られた計算コストに基づいて最適な計算手法を決定することができる。
【００１０】
一実施形態においては、計算手法決定システムは、実行環境に基づいて、ネットワーク構造の各層に対して少なくとも１つの計算手法を準備する候補決定部をさらに備えてもよい。この場合、計算手法決定システムは、実行環境のリソースを考慮して計算手法を準備することができる。
【００１１】
一実施形態においては、計算手法決定システムは、ネットワーク構造及び重みデータを外部装置から取得し、所定フォーマットに変換する変換部を備えてもよい。この場合、計算手法決定システムは、外部装置の学習結果を所定フォーマットで取り扱うことができる。
【００１２】
一実施形態においては、計算手法決定システムは、重みデータのデータ順を、実行環境に基づいて変更する第１調整部を備え、事前計算部及び計算部は、第１調整部により調整された重みデータに基づいて計算してもよい。この場合、計算手法決定システムは、例えばデータがキャッシュに乗りやすい状態となるように、重みデータのデータ配列を変更することができる。
【００１３】
一実施形態においては、計算手法決定システムは、計算部の計算に関連した事前処理を重みデータに対して行う第２調整部を備え、事前計算部及び計算部は、第２調整部により調整された重みデータに基づいて計算してもよい。この場合、計算手法決定システムは、計算部の計算負荷を軽減することができる。
【００１４】
一実施形態においては、事前計算部及び計算部は、第１端末に備わり、第１端末の実行環境と同一の実行環境を有する第２端末に対して、決定部により決定された計算手法を提供する提供部をさらに備えてもよい。この場合、計算手法決定システムは、同一環境の端末には、実際にその端末で計算することなく、同一環境を有する他の端末で決定した計算手法を適用させることができる。
【００１５】
本開示の他の側面は、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、ネットワーク構造の層ごとに取得するデータ取得部と、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付ける決定部と、を備える計算手法決定装置である。
【００１６】
この計算手法決定装置は、計算コストを考慮して最適な計算手法を層ごとに決定することができる。よって、計算手法決定装置は、計算コストを考慮して計算手法を変更することができる。
【００１７】
本開示の他の側面は、ネットワーク構造、重みデータ、及び、ネットワーク構造の層と計算手法との対応関係を取得する取得部と、取得部により取得されたネットワーク構造、重みデータ、及び、対応関係に基づいて、入力データに対するネットワーク構造の各層の計算を実行する計算部と、を備える処理装置である。
【００１８】
この処理装置は、入力データに対するネットワーク構造の各層の計算を実行するにあたり、層ごとに計算手法を変更することができる。
【００１９】
本開示の他の側面は、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対するネットワーク構造の各層の計算を実行するステップと、ネットワーク構造の各層の計算結果に基づいて、ネットワーク構造の層ごとに少なくとも１つの計算手法の計算コストを取得するステップと、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付けるステップと、ネットワーク構造の各層に対応付けられた計算手法を用いて、入力データに対するネットワーク構造の各層の計算を実行環境において実行するステップと、を備える計算手法決定方法である。
【００２０】
この計算手法決定方法は、上述した計算手法決定システムと同一の効果を奏する。
【００２１】
本開示の他の側面は、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、ネットワーク構造の層ごとに取得するステップと、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付けるステップと、を備える計算手法決定方法である。
【００２２】
この計算手法決定方法は、上述した計算手法決定装置と同一の効果を奏する。
【００２３】
本開示の他の側面は、ネットワーク構造、重みデータ、及び、ネットワーク構造の層と計算手法との対応関係を取得するステップと、ネットワーク構造、重みデータ、及び、対応関係に基づいて入力データに対するネットワーク構造の各層の計算を実行するステップと、を備える処理方法である。
【００２４】
この処理方法は、上述した処理装置と同一の効果を奏する。
【００２５】
本開示の他の側面は、コンピュータを動作させる計算手法決定プログラムである。計算手法決定プログラムは、コンピュータを、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対するネットワーク構造の各層の計算を実行する事前計算部、事前計算部の計算結果に基づいて、ネットワーク構造の層ごとに少なくとも１つの計算手法の計算コストを取得するコスト取得部、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付ける決定部、及び、決定部によりネットワーク構造の各層に対応付けられた計算手法を用いて、入力データに対するネットワーク構造の各層の計算を実行環境において実行する計算部として機能させる。
【００２６】
この計算手法決定プログラムは、上述した計算手法決定システムと同一の効果を奏する。
【００２７】
本開示の他の側面は、コンピュータを動作させる計算手法決定プログラムである。計算手法決定プログラムは、コンピュータを、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、ネットワーク構造の層ごとに取得するデータ取得部、及び、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付ける決定部として機能させる。
【００２８】
この計算手法決定プログラムは、上述した計算手法決定装置と同一の効果を奏する。
【００２９】
本開示の他の側面は、コンピュータを動作させる処理プログラムである。処理プログラムは、コンピュータを、ネットワーク構造、重みデータ、及び、ネットワーク構造の層と計算手法との対応関係を取得する取得部、及び、取得部により取得されたネットワーク構造、重みデータ、及び、対応関係に基づいて、入力データに対するネットワーク構造の各層の計算を実行する計算部として機能させる。
【００３０】
この処理プログラムは、上述した処理装置と同一の効果を奏する。
【発明の効果】
【００３１】
本開示の種々の側面によれば、ネットワーク構造及び重みデータを用いて入力データを処理するための計算を行う装置において、計算コストを考慮して計算手法を変更することができる。
【図面の簡単な説明】
【００３２】
【図１】認識部を説明する図である。
【図２】認識部におけるニューラルネットワークを説明する図である。
【図３】図２に示す人工ニューロンを説明する図である。
【図４】第１実施形態に係る計算手法決定システムの機能ブロック図である。
【図５】図４に示す装置のハードウェア構成を示すブロック図。
【図６】変換処理のフローチャートである。
【図７】プロファイル取得処理のフローチャートである。
【図８】情報付与処理のフローチャートである。
【図９】計算処理のフローチャートである。
【図１０】計算処理のフローチャートである。
【図１１】第２実施形態に係る計算手法決定システムの機能ブロック図である。
【図１２】情報付与処理のフローチャートである。
【図１３】計算処理のフローチャートである。
【図１４】計算処理のフローチャートである。
【発明を実施するための形態】
【００３３】
以下、添付図面を参照して実施形態について説明する。なお、図面の説明において同一の要素には同一の符号を付し、重複する説明は繰り返さない。
【００３４】
［第１実施形態］
（計算手法決定システムの概要）
実施形態に係る計算手法決定システム１００（図４参照）は、階層型ネットワークを有する処理装置の最適な計算手法を決定するシステムである。階層型ネットワークとは、階層構造を有するネットワークであり、一例としてニューラルネットワークである。ニューラルネットワークは、ネットワーク構造及び重みデータなどを用いて定義される。ニューラルネットワークの詳細は後述される。
【００３５】
処理装置は、種々のプログラムを実行可能な実行環境を有する。実行環境では、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される。入力データとは、階層型ネットワークの目的を達成するために処理されるデータである。例えば、階層型ネットワークの目的が認識である場合には、入力データは認識対象データとなる。処理装置は、階層型ネットワークを有する装置であれば特に限定されない。処理装置は、一例として、画像の内容をラベリングする端末装置であったり、画像内の物体位置（人の位置など）を特定する監視カメラであったり、一般的なパーソナルコンピュータであってもよい。以下では、処理装置の一例として、ニューラルネットワークを用いて認識対象データの内容を認識する認識部１１（図１，図４参照、計算部の一例）を有する端末装置を説明する。認識対象データとは、コンピュータに認識させる対象となるデータであり、例えば、画像データ、音声データ、テキストデータなどである。
【００３６】
計算手法決定システム１００により決定される認識部１１の計算手法とは、入力に対して演算を行い、結果を出力する手法である。計算手法決定システム１００は、入力に対して所定の精度で同一の結果を出力することを前提として、実行可能な複数種類のアルゴリズムの中から最適なアルゴリズムを決定したり、リソースの使用量又は使用形態が異なる複数の同一アルゴリズムの中から最適なアルゴリズムを決定したりする。リソースは、ハードウェアリソースやソフトウェアリソースが含まれる。ハードウェアリソースは、例えば演算するためのＣＰＵやキャッシュである。ソフトウェアリソースは、例えばライブラリである。アルゴリズムが使用するリソースは、例えばアルゴリズムのパラメータで定義される。
【００３７】
計算手法決定システム１００は、計算コストを考慮して認識部１１の計算手法を決定する。計算コストとは、一例として、計算に要する時間で評価される。この場合、計算コストは、計算に要する時間が長いほど大きくなる。計算コストは、リソースの使用量で評価されてもよい。この場合、計算コストは、リソースの使用量が大きくなるほど大きくなる。計算コストは、計算に要する時間及びリソースの使用量の２つを用いて評価されてもよい。
【００３８】
計算手法決定システム１００は、認識部１１の実行環境で実行可能な計算手法の中から計算コストが最も小さくなる計算手法を決定する。計算手法決定システム１００は、実行可能な計算手法の計算コストの平均よりも小さい計算コストとなる計算手法を選択するようにしてもよい。このように、計算手法決定システム１００は、認識部１１の計算速度を最適化したり、認識部１１のリソース使用量を最適化したりする。
【００３９】
計算手法決定システム１００は、計算手法を決定する際に、認識部１１の実行環境で実行可能な計算手法を網羅的に実行し、実行結果に基づいて計算手法を評価し、最適な計算手法を決定する。
【００４０】
具体的な一例として、計算手法決定システム１００は、認識部１１の実行環境において、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対するネットワーク構造の各層の計算を実行することと、ネットワーク構造の各層の計算結果に基づいて、ネットワーク構造の層ごとに少なくとも１つの計算手法の計算コストを取得することと、層ごとに予め準備された少なくとも１つの計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付けることと、ネットワーク構造の各層に対応付けられた計算手法を用いて、入力データに対するネットワーク構造の各層の計算を実行環境において実行することと、を実行可能に構成される。
【００４１】
（認識部の詳細）
最初に、計算手法決定システムが計算手法を決定する対象となる認識部１１を説明する。以下では、一例として、認識対象データが画像データであり、認識する対象が画像の内容（人、動物、物体、風景、室内など）である場合を説明する。
【００４２】
図１は、認識部１１を説明する図である。図１に示されるように、認識部１１は、端末装置１０に備わる。認識部１１は、画像データである認識対象データＧ１を入力し、認識結果を出力する。図１の（Ａ）に示されるように、認識対象データＧ１は、犬が描画された画像の画像データである。認識部１１は、画像データ（より詳細には画素値）を入力し、学習結果（例えばネットワーク構造及び重みデータ）を用いて画像の内容を表すラベルを出力する。ラベルとは、認識対象データの内容を分類するために用いるものであり、システム利用者によって予め設定されたカテゴリを識別する情報である。図１の（Ａ）の例では、認識部１１は「犬」のラベルを出力する。ラベルは、認識部１１によって認識対象データＧ１に付与される。付与とは、関連付けされることを意味し、例えば関連テーブルなどで認識対象データＧ１とラベルとの関係性のみが記録されてもよいし、認識対象データＧ１そのものに組み込まれてもよい。一般的に、認識対象データにラベルを付与することをアノテーションという。認識部１１は、画像データを入力してラベルを付与することができるため、画像データを自動的に分類したり、Ｗｅｂ上で所望の画像を検索したりすることができる。
【００４３】
システム利用者によって予め設定されたラベルが複数ある場合、その中から最も確からしいラベルを認識対象データに付与するシングルラベル処理と、ある一定の確からしさとなったラベルの全てを認識対象データに付与するマルチラベル処理が存在する。図１の（Ｂ）に示されるように、認識対象データＧ２は、人及び花が描画された画像の画像データである。認識部１１がシングルラベル処理を行う場合、認識部１１によって認識対象データＧ２に「人」のラベルが付与される。認識部１１がマルチラベル処理を行う場合、認識部１１によって認識対象データＧ２に「人」のラベルと「花」のラベルの２つが付与される。
【００４４】
図２は、認識部１１におけるニューラルネットワークを説明する図である。認識部１１は、ニューラルネットワークを用いて画像データに対応するラベルを認識する。ニューラルネットワークとは、脳神経系をモデルにした情報処理システムである。図２に示すように、認識部１１のニューラルネットワークは、いわゆる階層型ニューラルネットワークであり、円で示す多数の人工ニューロンが階層を形成しつつ連結されている。階層型ニューラルネットワークは、入力用の人工ニューロン、処理用の人工ニューロン及び出力用の人工ニューロンを備える。
【００４５】
入力用の人工ニューロンは、認識対象データを取得して処理用の人工ニューロンへ分配する。以下では、ニューラルネットワークでやり取りされる信号そのものをスコアという。スコアは数値である。入力用の人工ニューロンは、並列配置されることで入力層１１１を形成する。
【００４６】
処理用の人工ニューロンは、入力用の人工ニューロンに接続され、人工ニューロンの機能にしたがって入力を処理し、出力を他のニューロンへ伝える。処理用の人工ニューロンは、並列配置されることで中間層１１２を形成する。中間層１１２は、複数の層であってもよい。なお、中間層１１２を備えた３階層以上のニューラルネットワークをディープニューラルネットワークという。
【００４７】
出力用の人工ニューロンは、外部へ認識スコアを出力する。出力用の人工ニューロンは、ラベルの数と同じ数だけ用意される。つまり、ニューラルネットワークでは、ラベルごとに認識スコアを出力する。図２の例では、「犬」「人」「花」の３つのラベルに合わせて３つの人工ニューロンが用意されている。出力用の人工ニューロンは、「犬」のラベルに対応する認識スコアＢ１、「人」のラベルに対応する認識スコアＢ２、「花」のラベルに対応する認識スコアＢ３を出力する。認識スコアは、認識結果を表すスコアであり、正評価を「１」、負評価を「０」として学習した場合には、ラベルの認識スコアが高いほど画像の内容を示すラベルである確からしさが高くなる。出力用の人工ニューロンは、並列配置されることで出力層１１３を形成する。
【００４８】
認識部１１は、出力層１１３によって出力された認識スコアを用いて、付与ラベルを決定する。例えば、認識部１１は、所定値以上の認識スコアに対応するラベルを認識対象データに付与する。これにより、認識対象データにその内容を示すラベルが自動的に付与される。なお、シングルラベル処理の場合には、認識部１１は、最も高い認識スコアに対応するラベルを認識対象データに付与する。
【００４９】
図３は、図２に示す人工ニューロンを説明する図である。図３の（Ａ）に示す人工ニューロンは、ｘ１，ｘ２，ｘ３を入力し、それぞれに対応する重み係数ｗ1，ｗ２，ｗ３をそれぞれ積算する。人工ニューロンは、積算値（ｘ１・ｗ1，ｘ２・ｗ２，ｘ３・ｗ３）とバイアス値ｂとの総和を算出する。この総和を活性化関数に代入して、人工ニューロンの出力とする。
【００５０】
より詳細には、対象の人工ニューロンの出力は、以下の数式となる。
【数１】
2019128831.tif 000003
ここで、ｇは活性化関数であり、例えばシグモイド関数である。
【００５１】
図３の（Ｂ）は、Ｎ階層（Ｎ＝３）の人工ニューロンを説明する図である。図３の（Ｂ）に示されるように、３階層の場合には、２階層に位置する人工ニューロンの出力ｈ１（２）、ｈ２（２）、ｈ３（２）はそれぞれ以下の数式３〜５となる。ここで、ｎは対象階層の人工ニューロンの数、w１ｊ（１）は２階層１番目の人工ニューロンにおける１階層ｊ番目の出力に対応する重み係数、ｂ１（１）は１階層のバイアス値である。
【数２】
2019128831.tif 000004
ｗ２ｊ（１）は２階層２番目の人工ニューロンにおける１階層ｊ番目の出力に対応する重み係数、ｗ３ｊ（１）は２階層３番目の人工ニューロンにおける１階層ｊ番目の出力に対応する重み係数、ｂ２（１）は１階層２番目のバイアス値、ｂ３（１）は１階層３番目のバイアス値である。これにより、３階層の人工ニューロンの出力ｈ１（３）は以下の数式６で表される。
【数３】
2019128831.tif 000005
なお、バイアス値ｂは必ずしも必要ではなく、前段の人工ニューロンの出力と重み係数との積算値だけで出力を演算してもよい。
【００５２】
人工ニューロンは上記に限定されるものではなく、一般化したものでもよい。ｉ番目の中間層１１２の機能に関する一般式は以下の数式７となる。
【数４】
2019128831.tif 000006
ここで、ｘ(i)は中間層１１２への入力ベクトル、ｗ(i) は中間層１１２の重みパラメータベクトル、ｂ(i) はバイアスベクトル、v(i) は中間層１１２の出力ベクトルである。画像認識で一般的に使用される中間層１１２の一例として、全結合層及び畳み込み層がある。図３で表現されている全結合層の出力は、一般的には以下の数式８となる。
【数５】
2019128831.tif 000007
ここで、ｘｐ(i) はｉ番目の中間層１１２の入力の第ｐ成分、vｑ(i)は中間層１１２の出力の第ｑ成分、ｗｐ，ｑ(i) は中間層１１２の重み係数のｐ，ｑ成分である。また、畳み込み層の出力は以下の数式９となる。
【数６】
2019128831.tif 000008
ここで、ｘｐ，（r，s）(i) はｉ番目の中間層１１２の入力の第ｐチャンネルの（r，s）成分、vｑ，（r，s）(i)は中間層１１２の出力の第ｑチャンネルの（r，s）成分、ｗｐ，ｑ，（r’，s’）(i)は中間層１１２の畳み込みフィルタに関する重み係数である。r’，s’は、０から畳み込みフィルタの（幅−１）、(高さ−１)の値まで変化する。以上のような中間層１１２及び活性化関数ｇ(i)の計算を繰り返すことにより、出力層１１３直前の中間層の出力が以下の数式１０となる。
【数７】
2019128831.tif 000009
【００５３】
上述したネットワーク構造、重み係数（重みデータ）及びバイアス値は、後述する学習装置３０で学習され、学習結果として認識部１１へ配布されたものである。つまり、学習装置３０は、認識対象データの特徴量とその内容を示すラベルとを対応させるためのネットワーク構造、重み係数及びバイアス値を学習する装置である。なお、認識部１１がバイアス値ｂを用いない場合には、学習装置３０は、ネットワーク構造及び重み係数のみを学習する。
【００５４】
（計算手法決定システムの構成）
図４は、実施形態に係る計算手法決定システム１００の機能ブロック図である。図４に示されるように、計算手法決定システム１００は、端末装置１０及び変換装置４０を含み、学習装置３０に接続される。学習装置３０は、画像データを収集して学習する。学習装置３０の学習結果は、変換装置４０を介して端末装置１０へ提供される。
【００５５】
（ハードウェア構成）
最初に、端末装置１０、学習装置３０及び変換装置４０のハードウェアについて説明する。図５は、図４に示す装置のハードウェア構成を示すブロック図である。図５に示すように、端末装置１０は、物理的には、ＣＰＵ（Central  Processing  Unit）１０１、ＲＡＭ（Random  Access  Memory）１０２及びＲＯＭ（Read  Only  Memory）１０３などの主記憶装置、タッチパネルやキーボードなどの入力デバイス１０４、ディスプレイなどの出力デバイス１０５、ハードディスクなどの補助記憶装置１０６などを含む通常のコンピュータシステムとして構成される。端末装置１０の各機能は、ＣＰＵ１０１が、ＲＡＭ１０２、ＲＯＭ１０３などのハードウェア上に所定のコンピュータソフトウェアを読み込ませ、ＣＰＵ１０１の制御の元で入力デバイス１０４及び出力デバイス１０５を動作させるとともに、主記憶装置や補助記憶装置１０６におけるデータの読み出し及び書き込みを行うことで実現される。なお、端末装置１０は、上記以外のハードウェアを備えてもよい。例えば、端末装置１０は、ＧＰＵ(Graphics  Processing  Unit)、ＦＰＧＡ(Field-Programmable  Gate  Array)、ＤＳＰ(Digital  Signal  Processor)などを備えてもよい。
【００５６】
学習装置３０及び変換装置４０のハードウェアも端末装置１０と同一のハードウェアで構成可能である。すなわち、学習装置３０は、物理的には、ＣＰＵ３０１、ＲＡＭ３０２及びＲＯＭ３０３などの主記憶装置、入力デバイス３０４、出力デバイス３０５、補助記憶装置３０６などを含む通常のコンピュータシステムとして構成される。変換装置４０は、物理的には、ＣＰＵ４０１、ＲＡＭ４０２及びＲＯＭ４０３などの主記憶装置、入力デバイス４０４、出力デバイス４０５、補助記憶装置４０６などを含む通常のコンピュータシステムとして構成される。変換装置４０の各機能は、ＣＰＵ４０１が、ＲＡＭ４０２、ＲＯＭ４０３などのハードウェア上に所定のコンピュータソフトウェアを読み込ませ、ＣＰＵ４０１の制御の元で入力デバイス４０４及び出力デバイス４０５を動作させるとともに、主記憶装置や補助記憶装置４０６におけるデータの読み出し及び書き込みを行うことで実現される。なお、学習装置３０及び変換装置４０は、ハードウェアとして１つの筐体に収まっている必要はなく、いくつかの装置に分離していてもよい。
【００５７】
（機能的構成）
最初に、学習装置３０の機能的構成について説明する。学習装置３０は、画像データを収集して学習する。学習装置３０は、画像データを格納したデータベース２１、画像データを生成するカメラ２２、画像データをダウンロード可能なＷｅｂサイト２３などに接続されており、学習の入力データとなる画像データを取得することができる。もちろん、学習装置３０は、外部記憶媒体を接続して画像データを取得してもよいし、通信を介して画像データを受信してもよく、画像データ取得の態様には限定されない。
【００５８】
学習装置３０は、ニューラルネットワークを機械学習により構築するプラットフォームを有する。プラットフォームは、学習モデルを学習データに基づいて機械学習する動作環境である。学習モデルは、例えばネットワーク構造及び重みデータなどであり、学習データは、例えば画像データである。プラットフォームは、機械学習を行うソフトウェア群であるフレームワークを備える。プラットフォーム及びフレームワークは、使用言語の違いや設計思想の違いなどによって、学習結果出力に複数のフォーマットが存在する。
【００５９】
一例として、学習装置３０は、第１プラットフォーム３１と第２プラットフォーム３２とを備える。第１プラットフォーム３１及び第２プラットフォーム３２は、互いに異なるプラットフォームである。つまり、学習装置３０は、互いに異なるフォーマットで、学習済みの学習モデルを学習結果として出力する。学習結果は、ネットワーク構造及び重みデータを含む。
【００６０】
変換装置４０は、学習装置３０から取得した、フォーマットの異なる学習結果を、統一フォーマットに変換し、端末装置１０へ提供する。これにより、端末装置１０は、あらゆるプラットフォームで学習された学習結果を利用することができる。
【００６１】
変換装置４０は、変換部４１を備える。変換部４１は、ネットワーク構造及び重みデータを学習装置３０（外部装置の一例）から取得し、統一フォーマット（所定フォーマットの一例）の学習結果Ｍ１に変換する。
【００６２】
変換装置４０は、学習結果のフォーマット変換だけでなく、端末装置１０における認識部１１の動作が効率的となるように、学習結果Ｍ１に所定の処理を施す。具体的には、変換装置４０は、ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される端末装置１０（処理装置の一例）から、ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、ネットワーク構造の層ごとに取得することを実行可能に構成される。
【００６３】
このような処理のために、変換装置４０は、データ取得部４２を備える。変換装置４０のデータ取得部４２は、端末装置１０から、ネットワーク構造の層ごとに予め準備された計算手法で計算した場合の計算コストを、ネットワーク構造の層ごとに取得する。ネットワーク構造の層ごとに計算コストを取得とは、上述したニューラルネットワークの層ごとのそれぞれ計算コストを取得することであり、一例としては、データ取得部４２は、中間層１１２それぞれの計算コストを取得する。具体的な一例として、データ取得部４２は、第１の畳み込み層に対して準備された複数のアルゴリズムぞれぞれの計算コスト、第１の全結合層に対して準備された複数のアルゴリズムそれぞれの計算コスト、第２の畳み込み層に対して準備された１のアルゴリズムの計算コストなど、層ごとに準備された計算手法で、実際に処理を実行した結果から計算コストを取得する。より具体的な一例として、データ取得部４２は、層と計算手法と計算コストとが関連付けられた結果リストＴＤ２を端末装置１０から取得する。以下では、結果リストＴＤ２をプロファイルともいう。
【００６４】
変換装置４０は、データ取得部４２により取得された結果リストＴＤ２を学習結果Ｍ１と結合させる結合部４３を備える。一例として、結合部４３は、学習結果のデータの属性データ領域に、選択されたアルゴリズムの情報を格納する。これにより、結合部４３は、結果リストＴＤ２を関連付けさせた学習結果Ｍ２を生成する。学習結果Ｍ２は、端末装置１０へ出力されるデータである。
【００６５】
端末装置１０は、上述したデータ取得部４２が結果リストＴＤ２を取得することができるように、認識部１１だけでなく、候補決定部１２、事前計算部１４、コスト取得部１５を備える。
【００６６】
事前計算部１４は、変換装置４０から学習結果Ｍ１を取得する。そして、学習結果Ｍ１に含まれる層の情報を候補決定部１２へ出力する。
【００６７】
候補決定部１２は、実行環境に基づいて、ネットワーク構造の各層に対して少なくとも１つの計算手法を準備する。一例として、候補決定部１２は、端末装置１０の実行環境のハードウェア構成プロファイル、ソフトウェアライブラリなどを参照しつつ、学習結果Ｍ１に含まれる層の情報に基づいて、各層に対して実行可能な計算手法ＴＤ１を決定する。これにより、事前計算部１４の実行前に、層ごとに計算手法が予め準備される。
【００６８】
計算手法ＴＤ１は、例えば、実行環境で実行可能であり、それぞれが異なる演算で同一機能を発揮する複数のアルゴリズムを含む。計算手法ＴＤ１の一例としては、ループの階層の順番が異なるアルゴリズムや、ＣＰＵ拡張機能を利用したアルゴリズムとＣＰＵ拡張機能を利用しないアルゴリズムなどである。計算手法ＴＤ１は、それぞれが異なる演算で同一機能を発揮するアルゴリズムであれば、同一リソースを用いても異なるリソースを用いてもよい。また、計算手法ＴＤ１は、例えば、実行環境で実行可能であり、それぞれが異なるリソースを用いて同一の演算を行う複数のアルゴリズムを含んでもよい。計算手法ＴＤ１の一例としては、パラメータ（使用スレッド、使用キャッシュサイズなど）が異なる同一アルゴリズム、ＣＰＵを用いて演算するアルゴリズムとＧＰＵを用いて演算するアルゴリズム、ハードウェアアクセラレーションを用いるアルゴリズムとハードウェアアクセラレーションを用いないアルゴリズムなどである。
【００６９】
事前計算部１４は、端末装置１０において、ネットワーク構造の層ごとに予め準備された計算手法ＴＤ１を用いて、所定データに対するネットワーク構造の各層の計算を実行する。所定データは、ニューラルネットワークで処理可能な予め定められたデータであれば何でもよく、事前に用意されたテストデータであってもよい。事前計算部１４は、計算手法ＴＤ１を網羅的に実行する。例えば、畳み込み層に３つの計算手法が準備されている場合、事前計算部１４は、畳み込み層の計算をそれぞれの計算手法で１回または複数回実行する。
【００７０】
コスト取得部１５は、事前計算部１４の計算結果に基づいて、ネットワーク構造の層ごとに少なくとも１つの計算手法の計算コストを取得する。コスト取得部１５は、層と計算手法と計算コストとを対応させた結果リストＴＤ２を生成する。一例として、コスト取得部１５は、層と計算手法と演算速度とを関連付けた結果リストＴＤ２を生成する。結果リストＴＤ２は、上述のとおり、変換装置４０へ出力され、データ取得部４２によって取得される。
【００７１】
端末装置１０は、取得部１６及び決定部１７をさらに備える。取得部１６は、変換装置４０から、結果リストＴＤ２が関連付けられた学習結果Ｍ２を取得する。
【００７２】
決定部１７は、学習結果Ｍ２に基づいて、層ごとに予め準備された計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付ける。決定部１７は、例えば、層ごとに計算コストが最も低い計算手法を選択する。具体的な一例として、決定部１７は、第１の畳み込み層に対して準備された複数のアルゴリズムのうち、計算コストが最も低いアルゴリズムを選択する。そして、決定部１７は、第１の畳み込み層と選択されたアルゴリズムとを対応付ける。対応付けるとは、特定の層の計算として特定のアルゴリズムを呼び出し可能にすることである。
【００７３】
認識部１１は、学習結果Ｍ２を参照し、決定部１７によりネットワーク構造の各層に対応付けられた計算手法を用いて、入力データに対するネットワーク構造の各層の計算を実行環境において実行する。これにより、認識処理効率が向上する。
【００７４】
（データの調整）
変換装置４０は、学習結果のデータ配列（データ順）を変更してもよい。学習結果は、重みデータが非常に大きな容量のデータとなる。このため、端末装置１０で参照しやすいように、重みデータのデータ配列が変更されてもよい。このような処理のために、変換装置４０は、第１調整部４４を備えてもよい。
【００７５】
第１調整部４４は、学習結果Ｍ１の重みデータのデータ配列を変更してもよいし、学習結果Ｍ２の重みデータのデータ配列を変更してもよい。以下では、第１調整部４４が学習結果Ｍ１の重みデータのデータ配列を変更する場合を一例として説明する。
【００７６】
第１調整部４４は、学習結果Ｍ１の重みデータのデータ配列を、端末装置１０の実行環境に基づいて変更する。例えば、端末装置１０のキャッシュサイズなどに応じて、データがキャッシュに乗りやすい状態となるように、重みデータのデータ配列を変更する。これにより、事前計算部１４及び認識部１１は、第１調整部により調整された重みデータに基づいて計算する。
【００７７】
あるいは、変換装置４０は、認識部１１の計算に関連した事前処理を重みデータに対して行ってもよい。このような処理のために、変換装置４０は、第２調整部４５を備えてもよい。認識部１１は、例えば畳み込み層の処理を行う場合、重みデータを周波数変換した上で演算する。このため、第２調整部４５は、畳み込み層に用いられる重みデータを予め周波数変換する事前処理を行う。これにより、端末装置１０側で周波数変換する必要がなくなるため、認識処理効率が向上する。あるいは、認識部１１の計算においてＯｐｅｎＣＬ（Open  Computing  Language）（登録商標）などのコンパイルが必要な場合、第２調整部４５は、オフラインでコンパイルする事前処理を行ってもよい。
【００７８】
また、結合部４３は、セキュリティ向上のため、学習結果Ｍ２を暗号化してもよい。
【００７９】
（計算手法決定システムの動作：計算手法決定方法）
以下、変換装置４０及び端末装置１０の動作について説明する。
【００８０】
（変換処理）
図６は、変換処理のフローチャートである。図６に示されるフローチャートは、変換装置４０の変換部４１により実行される。
【００８１】
図６に示されるように、変換装置４０の変換部４１は、モデル取得処理（Ｓ１０）として、学習装置３０から学習モデル（ネットワーク構造及び重みデータ）を取得する。つづいて、変換部４１は、フォーマット変換処理（Ｓ１２）として、モデル取得処理（Ｓ１０）で取得された学習モデルを統一フォーマットに変換する。つづいて、変換部４１は、モデル出力処理（Ｓ１４）として、統一フォーマットの学習結果Ｍ１を出力する。モデル出力処理（Ｓ１４）が終了すると、図６のフローチャートは終了する。
【００８２】
図６に示されるフローチャートが実行されることで、学習モデルが取得され、統一フォーマットに変換される。
【００８３】
（プロファイル取得処理）
図７は、プロファイル取得処理のフローチャートである。図７に示されるフローチャートは、端末装置１０により実行される。
【００８４】
図７に示されるように、端末装置１０の事前計算部１４は、学習結果取得処理（Ｓ２０）として、学習結果Ｍ１を取得する。つづいて、事前計算部１４は、計算手法取得処理（Ｓ２２）として、予め準備された計算手法ＴＤ１を取得する。事前計算部１４は、候補決定部１２によって記憶された計算手法ＴＤ１を参照する。つづいて、事前計算部１４は、事前計算処理（Ｓ２４）として、テストデータを学習結果Ｍ１に入力し、準備された計算手法を網羅的に実行する。このとき、演算コストとして、計算手法ごとの処理速度や使用リソースが測定される。端末装置１０のコスト取得部１５は、コスト取得処理（Ｓ２６）として、事前計算部１４の計算に要する時間、使用リソースに基づいて、層と計算手法と演算コストとを関連付けた結果リストＴＤ２を生成する。コスト取得処理（Ｓ２６）が終了すると、図７のフローチャートは終了する。なお、学習結果取得処理（Ｓ２０）及び計算手法取得処理（Ｓ２２）は実行順が逆でもよい。事前計算処理Ｓ２４とコスト取得処理とは層ごとに交互に実行されてもよい。
【００８５】
図７に示されるフローチャートが実行されることで、動作環境の動作結果を取得することができる。
【００８６】
（情報付与処理）
図８は、情報付与処理のフローチャートである。図８に示されるフローチャートは、変換装置４０により実行される。
【００８７】
図８に示されるように、変換装置４０のデータ取得部４２は、結果リスト取得処理（Ｓ３０）として、端末装置１０から結果リストＴＤ２を取得する。つづいて、結合部４３は結合処理（Ｓ３４）として、学習結果Ｍ１と結果リストＴＤ２（プロファイル）とを結合させて、学習結果Ｍ２を生成する。結合処理（Ｓ３４）が終了すると、図８に示されるフローチャートが終了する。
【００８８】
図８に示されるフローチャートが実行されることで、計算コストの結果が付与された学習結果Ｍ２が生成される。
【００８９】
（計算処理）
図９は、計算処理のフローチャートである。図９に示されるフローチャートは、端末装置１０により実行される。
【００９０】
図９に示されるように、端末装置１０は、第１初期化処理（Ｓ４０）として、処理に必要なメモリを確保する。つづいて、端末装置１０の認識部１１は、学習結果読み込み処理（Ｓ４２）として、変換装置４０から取得された学習結果Ｍ２を読み込む。同様に、端末装置１０の認識部１１は、プロファイル読み込み処理（Ｓ４４）として、変換装置４０から取得された学習結果Ｍ２に付与された結果リストＴＤ２を読み込む。つづいて、端末装置１０は、第２初期化処理（Ｓ４６）として、処理に必要なメモリを確保する。つづいて、認識部１１は、入力データ読み込み処理（Ｓ４８）として、識別対象データを入力する。つづいて、認識部１１は、計算処理（Ｓ５０）として、認識のための計算処理を各層で行う。このとき、プロファイル読み込み処理（Ｓ４４）で読み込まれた結果リストＴＤ２が利用される。計算処理（Ｓ５０）の詳細は後述する（図１０）。最後に、認識部１１は、結果出力処理（Ｓ５２）として、認識の結果を出力する。結果出力処理（Ｓ５２）が終了すると、図９に示されるフローチャートは、終了する。
【００９１】
図１０は、計算処理のフローチャートであり、図９の計算処理（Ｓ５０）の詳細である。図１０に示されるように、認識部１１は、入力処理（Ｓ６０）として入力層に１つの画像に対応した画素値すべてを入力する。つづいて、認識部１１は、層情報読み込み処理（Ｓ６２）として、処理対象の層の情報を入力する。層の情報には、処理対象の層がニューラルネットワークのどの層であるかを識別する情報が含まれている。つづいて、認識部１１は、層判定処理（Ｓ６４）として、層情報読み込み処理（Ｓ６２）で取得された識別情報に基づいて、処理を分岐させる。
【００９２】
処理対象の層が畳み込み層である場合、決定部１７は、対応判定処理（Ｓ６６）として、結果リストＴＤ２を参照し、畳み込み層処理の中で最も計算コストが小さい計算手法を特定する。畳み込み層処理Ａが最も計算コストが小さい場合、決定部１７は、畳み込み層処理Ａと処理対象の層とを対応付ける。そして、認識部１１は、実行処理（Ｓ６８）として、畳み込み層処理Ａを実行する。一方、畳み込み層処理Ｂが最も計算コストが小さい場合、決定部１７は、畳み込み層処理Ｂと処理対象の層とを対応付ける。畳み込み層処理Ｂは、機能が同一であるが、実装が異なる処理である。そして、認識部１１は、実行処理（Ｓ７０）として、畳み込み層処理Ｂを実行する。上記例では、計算手法が畳み込み層処理Ａ及び畳み込み層処理Ｂの２つの場合を説明したが、これらの処理は３以上であってもよい。このように、決定部１７は、結果リストＴＤ２に応じて処理を分岐させる。
【００９３】
一方、処理対象の層が全結合層である場合、決定部１７は、対応判定処理（Ｓ７２）として、結果リストＴＤ２を参照し、全結合層処理の中で最も計算コストが小さい計算手法を特定する。全結合層処理Ａが最も計算コストが小さい場合、決定部１７は、全結合層処理Ａと処理対象の層とを対応付ける。そして、認識部１１は、実行処理（Ｓ７４）として、全結合層処理Ａを実行する。一方、全結合層処理Ｂが最も計算コストが小さい場合、決定部１７は、全結合層処理Ｂと処理対象の層とを対応付ける。全結合層処理Ｂは、機能が同一であるが、実装が異なる処理である。そして、認識部１１は、実行処理（Ｓ７６）として、全結合層処理Ｂを実行する。上記例では、計算手法が全結合層処理Ａ及び全結合層処理Ｂの２つの場合を説明したが、これらの処理は３以上であってもよい。このように、決定部１７は、結果リストＴＤ２に応じて処理を分岐させる。
【００９４】
処理対象の層がさらに別の層である場合、例えば、プーリング層、活性化関数層などである場合には、畳み込み層及び全結合層の処理と同様の処理が行われる。
【００９５】
各層に対応する処理が終了すると、認識部１１は、判定処理（Ｓ８０）として、ニューラルネットワークの全ての層に関して処理が終了したか否かを判定する。全ての層について処理が終了していないと判定された場合、層情報読み込み処理（Ｓ６２）へ移行し、次の層に関する処理が継続される。全ての層について処理が終了したと判定された場合、図１０に示されるフローチャートは終了する。
【００９６】
次に、計算手法決定システム１００として機能させるための計算手法決定プログラムを説明する。計算手法決定プログラムは、メインモジュール、事前計算モジュール、コスト取得モジュール、決定モジュール及び計算モジュールを備えている。メインモジュールは、装置を統括的に制御する部分である。事前計算モジュール、コスト取得モジュール、決定モジュール及び計算モジュールを実行させることにより実現される機能は、上述した事前計算部１４、コスト取得部１５、決定部１７及び認識部１１の機能とそれぞれ同様である。
【００９７】
プログラムは、例えば、ＲＯＭ又は半導体メモリなどの非一時的な記録媒体によって提供される。また、プログラムは、ネットワークなどの通信を介して提供されてもよい。
【００９８】
（第１実施形態のまとめ）
計算手法決定システム１００では、予め準備された計算手法の中から、それらを実行環境にて実際に動作させて得られた計算コストに基づいて、層ごとに１つの計算手法が選択される。このように、計算手法決定システム１００は、計算コストを考慮して最適な計算手法を層ごとに決定することができる。よって、計算手法決定システム１００は、計算コストを考慮して計算手法を決定することができる。
【００９９】
計算手法決定システム１００は、同一結果を出力するものの演算方法がそれぞれ異なる複数のアルゴリズムを実行環境にて実際に動作させ、得られた計算コストに基づいて最適なアルゴリズムを決定することができる。
【０１００】
計算手法決定システム１００は、候補決定部１２を備えることにより、実行環境のリソースを考慮して計算手法を準備することができる。
【０１０１】
計算手法決定システム１００は、変換部４１を備えることにより、学習装置３０の学習結果を所定フォーマットで取り扱うことができる。
【０１０２】
計算手法決定システム１００は、第１調整部４４を備えることにより、データがキャッシュに乗りやすい状態となるように、重みデータのデータ配列を変更することができる。
【０１０３】
計算手法決定システム１００は、第２調整部４５を備えることにより、認識部１１の計算負荷を軽減することができる。
【０１０４】
［第２実施形態］
第２実施形態に係る計算手法決定システム１００Ａは、第１実施形態に係る計算手法決定システム１００と比較して、決定部１７の機能が変換装置４０側に存在する点が相違し、その他は同一である。第２実施形態においては、第１実施形態と重複する説明は繰り返さない。
【０１０５】
（計算手法決定システムの構成）
図１１は、第２実施形態に係る計算手法決定システム１００Ａの機能ブロック図である。図１１に示されるように、計算手法決定システム１００Ａは、変換装置４０Ａ（計算手法決定装置の一例）及び端末装置１０Ａを備える。
【０１０６】
変換装置４０Ａは、変換装置４０と比較して、決定部１７Ａを備える点が相違する。決定部１７Ａは、決定部１７と比較して、入力先と出力先が異なり、その他は同一である。つまり、決定部１７Ａは、結果リストＴＤ２に基づいて、層ごとに予め準備された計算手法の中から、計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択し、ネットワーク構造の層と選択された１つの計算手法とを対応付ける。
【０１０７】
結合部４３Ａは、決定部１７Ａによって対応付けられた対応関係を学習結果Ｍ１に付与する。つまり、結合部４３Ａは、結果リストＴＤ２そのものを学習結果Ｍ１に付与するのではなく、結果リストＴＤ２から導き出された結果を学習結果Ｍ１に付与する。これにより、学習結果Ｍ３が生成される。
【０１０８】
取得部１６Ａは、取得部１６と比較して、学習結果Ｍ３を取得する点が相違し、その他は同一である。つまり、取得部１６Ａは、ネットワーク構造、重みデータ、及び、ネットワーク構造の層と計算手法との対応関係を取得する。これにより、認識部１１は、決定部１７Ａによって対応付けられた対応関係を用いて、入力データに対するネットワーク構造の各層の計算を実行する。
【０１０９】
計算手法決定システム１００Ａのその他の構成は、計算手法決定システム１００と同一である。
【０１１０】
（計算手法決定システムの動作）
計算手法決定システム１００Ａの動作は、計算手法決定システム１００の動作と比較して、情報付与処理（図８）及び計算処理（図９及び図１０）が相違し、その他は同一である。
【０１１１】
（情報付与処理）
図１２は、情報付与処理のフローチャートである。図１２に示されるフローチャートは、変換装置４０Ａにより実行される。
【０１１２】
図１２に示されるように、変換装置４０Ａのデータ取得部４２は、結果リスト取得処理（Ｓ３００）として、端末装置１０から結果リストＴＤ２を取得する。つづいて、変換装置４０の決定部１７Ａは、決定処理（Ｓ３２０）として、層ごとに予め準備された計算手法の中から、データ取得部４２により取得された計算コストに基づいてネットワーク構造の層ごとに１つの計算手法を選択する。つづいて、結合部４３は結合処理（Ｓ３４０）として、学習結果Ｍ１と、層ごとに選択された１つの計算手法とを結合させて、学習結果Ｍ３を生成する。結合処理（Ｓ３４０）が終了すると、図１２に示されるフローチャートが終了する。
【０１１３】
図１２に示されるフローチャートが実行されることで、計算コストの結果が付与された学習結果Ｍ３が生成される。
【０１１４】
（計算処理）
図１３は、計算処理のフローチャートである。図１３に示されるフローチャートは、端末装置１０Ａにより実行される。
【０１１５】
図１３に示されるように、端末装置１０Ａは、第１初期化処理（Ｓ４００）として、処理に必要なメモリを確保する。つづいて、端末装置１０Ａの認識部１１は、学習結果読み込み処理（Ｓ４２０）として、変換装置４０Ａから取得された学習結果Ｍ３を読み込む。つづいて、端末装置１０Ａは、第２初期化処理（Ｓ４６０）として、処理に必要なメモリを確保する。つづいて、認識部１１は、入力データ読み込み処理（Ｓ４８０）として、識別対象データを入力する。つづいて、認識部１１は、計算処理（Ｓ５００）として、認識のための計算処理を各層で行う。計算処理（Ｓ５００）の詳細は後述する（図１４）。最後に、認識部１１は、結果出力処理（Ｓ５２０）として、認識の結果を出力する。結果出力処理（Ｓ５２０）が終了すると、図１３に示されるフローチャートは、終了する。
【０１１６】
図１４は、計算処理のフローチャートである。図１４に示されるフローチャートは、端末装置１０Ａにより実行される。
【０１１７】
図１４に示されるように、認識部１１は、入力処理（Ｓ６００）として入力層に一つの画像に対応した画素値すべてを入力する。つづいて、認識部１１は、層情報読み込み処理（Ｓ６２０）として、処理対象の層の情報を入力する。層の情報には、処理対象の層がニューラルネットワークのどの層であるかを識別する情報が含まれている。つづいて、認識部１１は、計算手法特定処理（Ｓ６２２）として、学習結果Ｍ３に付与された対応関係を読み込んで、層に対応する計算手法を特定する。つづいて、認識部１１は、計算処理（Ｓ６２４）として、対応関係で特定された計算手法で、認識のための計算処理を行う。
【０１１８】
各層に対応する処理が終了すると、認識部１１は、判定処理（Ｓ８００）として、ニューラルネットワークの全ての層に関して処理が終了したか否かを判定する。全ての層について処理が終了していないと判定された場合、層情報読み込み処理（Ｓ６２０）へ移行し、次の層に関する処理が継続される。全ての層について処理が終了したと判定された場合、図１４に示されるフローチャートは終了する。
【０１１９】
端末装置１０Ａ及び変換装置４０Ａとして機能させるための処理プログラム及び計算手法決定プログラムは、第１実施形態で説明したプログラムと同様に、装置の機能部に対応するモジュールを備える。
【０１２０】
（第２実施形態のまとめ）
計算手法決定システム１００Ａでは、予め準備された計算手法の中から、それらを実行環境にて実際に動作させて得られた計算コストに基づいて、層ごとに１つの計算手法が選択される。このように、計算手法決定システム１００Ａは、計算コストを考慮して最適な計算手法を層ごとに決定することができる。よって、計算手法決定システム１００Ａは、計算コストを考慮して計算手法を決定することができる。
【０１２１】
なお、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【０１２２】
計算手法決定システム１００はハードウェアとして端末装置１０及び変換装置４０を含むことが例示されたが、これに限定されない。例えば、計算手法決定システム１００は、事前計算部１４用の装置、コスト取得部１５用の装置、決定部１７用の装置、認識部１１用の装置など、機能ごとに用意された装置が通信ネットワークを介して接続されてなる集合体として構成されてもよい。あるいは、計算手法決定システム１００は、全ての機能を発揮可能な単一のハードウェアで構成されていてもよい。計算手法決定システム１００Ａも同様に、種々のハードウェアで構成されてもよいし、単一のハードウェアで構成されてもよい。
【０１２３】
計算手法決定システム１００は認識部１１の層ごとに最適な計算手法を決定しているため、１の認識部１１に対して最適な計算手法のセットが１つ提供されることになる。しかしながら、提供される最適な計算手法のセットの数は１つに限定されず、２セット以上提供されてもよい。この場合、認識部１１は、例えば、提供された複数のセットをそれぞれ実行し、最も速く処理することができたセットを選択すればよい。
【０１２４】
計算手法決定システム１００は、同一環境を有する他の端末に最適な計算手法を展開してもよい。例えば、端末装置１０（第１端末の一例）と同一の環境を有する端末装置１０Ｘ（第２端末の一例）が存在するとする。端末装置１０Ｘは、例えば端末装置１０と同一機種である。計算手法決定システム１００は、端末装置１０Ｘに対して、決定部１７により決定された計算手法を提供する提供部をさらに備えてもよい。この場合、計算手法決定システム１００は、同一環境の端末には、実際にその端末で計算することなく、同一環境を有する他の端末で決定した計算手法を適用させることができる。
【符号の説明】
【０１２５】
１０，１０Ａ…端末装置、１１…認識部、１２…候補決定部、１４…事前計算部、１５…コスト取得部、１６，１６Ａ…取得部、１７，１７Ａ…決定部、３０…学習装置、４０，４０Ａ…変換装置、４１…変換部、４２…データ取得部、４３，４３Ａ…結合部、４４…第１調整部、４５…第２調整部、１００，１００Ａ…計算手法決定システム。
【図１】
2019128831.tif 000010
【図２】
2019128831.tif 000011
【図３】
2019128831.tif 000012
【図４】
2019128831.tif 000013
【図５】
2019128831.tif 000014
【図６】
2019128831.tif 000015
【図７】
2019128831.tif 000016
【図８】
2019128831.tif 000017
【図９】
2019128831.tif 000018
【図１０】
2019128831.tif 000019
【図１１】
2019128831.tif 000020
【図１２】
2019128831.tif 000021
【図１３】
2019128831.tif 000022
【図１４】
2019128831.tif 000023
【手続補正書】
【提出日】令和1年6月10日(2019.6.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対する前記ネットワーク構造の各層の計算を実行する事前計算部と、
前記事前計算部の計算結果に基づいて、前記ネットワーク構造の層ごとに前記少なくとも１つの計算手法の計算コストを取得するコスト取得部と、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部と、
前記決定部により前記ネットワーク構造の各層に対応付けられた前記計算手法を用いて、前記入力データに対する前記ネットワーク構造の各層の計算を前記実行環境において実行する計算部と、
を備える計算手法決定システム。
【請求項２】
前記少なくとも１つの計算手法は、前記実行環境で実行可能であり、それぞれが異なる演算で同一機能を発揮する複数のアルゴリズムを含む、請求項１に記載の計算手法決定システム。
【請求項３】
前記少なくとも１つの計算手法は、前記実行環境で実行可能であり、それぞれが異なるリソースを用いて同一の演算を行う複数のアルゴリズムを含む、請求項１又は２に記載の計算手法決定システム。
【請求項４】
前記実行環境に基づいて、前記ネットワーク構造の各層に対して前記少なくとも１つの計算手法を準備する候補決定部をさらに備える、請求項１〜３の何れか一項に記載の計算手法決定システム。
【請求項５】
前記ネットワーク構造及び前記重みデータを外部装置から取得し、所定フォーマットに変換する変換部を備え、
前記事前計算部及び前記計算部は、前記変換部により変換された前記所定フォーマットの前記ネットワーク構造及び前記重みデータに基づいて計算する、請求項１〜４の何れか一項に記載の計算手法決定システム。
【請求項６】
前記重みデータのデータ順を、前記実行環境に基づいて変更する第１調整部をさらに備え、
前記事前計算部及び前記計算部は、前記第１調整部により調整された前記重みデータに基づいて計算する、請求項１〜５の何れか一項に記載の計算手法決定システム。
【請求項７】
前記計算部の計算に関連した事前処理を前記重みデータに対して行う第２調整部をさらに備え、
前記事前計算部及び前記計算部は、前記第２調整部により調整された前記重みデータに基づいて計算する、請求項１〜６の何れか一項に記載の計算手法決定システム。
【請求項８】
前記事前計算部及び前記計算部は、第１端末に備わり、
前記第１端末の実行環境と同一の実行環境を有する第２端末に対して、前記決定部により決定された前記計算手法を提供する提供部をさらに備える、請求項１〜７の何れか一項に記載の計算手法決定システム。
【請求項９】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、前記ネットワーク構造の層ごとに取得するデータ取得部と、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部と、
を備える計算手法決定装置。
【請求項１０】
請求項９に記載の前記計算手法決定装置の前記データ取得部の計算コスト取得先である処理装置であって、
ネットワーク構造、重みデータ、及び、前記決定部により対応付けられた前記ネットワーク構造の層と計算手法との対応関係を取得する取得部と、
前記取得部により取得された前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行する計算部と、
を備える、処理装置。
【請求項１１】
請求項９に記載の前記計算手法決定装置の前記データ取得部の計算コスト取得先である処理装置と同一の実行環境を有する処理装置であって、
ネットワーク構造、重みデータ、及び、前記決定部により対応付けられた前記ネットワーク構造の層と計算手法との対応関係を取得する取得部と、
前記取得部により取得された前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行する計算部と、
を備える、処理装置。
【請求項１２】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対する前記ネットワーク構造の各層の計算を実行するステップと、
前記ネットワーク構造の各層の計算結果に基づいて、前記ネットワーク構造の層ごとに前記少なくとも１つの計算手法の計算コストを取得するステップと、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付けるステップと、
前記ネットワーク構造の各層に対応付けられた前記計算手法を用いて、前記入力データに対する前記ネットワーク構造の各層の計算を前記実行環境において実行するステップと、
を備える計算手法決定方法。
【請求項１３】
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、前記ネットワーク構造の層ごとに取得するステップと、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付けるステップと、
を備える計算手法決定方法。
【請求項１４】
請求項１３に記載の前記計算手法決定方法の前記取得するステップにおける計算コスト取得先の処理装置において入力データを処理する処理方法であって、
ネットワーク構造、重みデータ、及び、前記対応付けるステップにより対応付けられた前記ネットワーク構造の層と計算手法との対応関係を取得するステップと、
前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行するステップと、
を備える、処理方法。
【請求項１５】
請求項１３に記載の前記計算手法決定方法の前記取得するステップにおける計算コスト取得先の処理装置と同一の実行環境を有する処理装置において入力データを処理する処理方法であって、
ネットワーク構造、重みデータ、及び、前記対応付けるステップにより対応付けられた前記ネットワーク構造の層と計算手法との対応関係を取得するステップと、
前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行するステップと、
を備える、処理方法。
【請求項１６】
コンピュータを動作させる計算手法決定プログラムであって、
前記コンピュータを、
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される実行環境において、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法を用いて、所定データに対する前記ネットワーク構造の各層の計算を実行する事前計算部、
前記事前計算部の計算結果に基づいて、前記ネットワーク構造の層ごとに前記少なくとも１つの計算手法の計算コストを取得するコスト取得部、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部、及び、
前記決定部により前記ネットワーク構造の各層に対応付けられた前記計算手法を用いて、前記入力データに対する前記ネットワーク構造の各層の計算を前記実行環境において実行する計算部として機能させる、計算手法決定プログラム。
【請求項１７】
コンピュータを動作させる計算手法決定プログラムであって、
前記コンピュータを、
ネットワーク構造及び重みデータを用いて入力データを処理するための計算が実行される処理装置から、前記ネットワーク構造の層ごとに予め準備された少なくとも１つの計算手法で計算した場合の計算コストを、前記ネットワーク構造の層ごとに取得するデータ取得部、及び、
層ごとに予め準備された前記少なくとも１つの計算手法の中から、前記計算コストに基づいて前記ネットワーク構造の層ごとに１つの計算手法を選択し、前記ネットワーク構造の層と前記選択された１つの計算手法とを対応付ける決定部として機能させる、
計算手法決定プログラム。
【請求項１８】
請求項１７に記載の前記計算手法決定プログラムにより動作する前記コンピュータの計算コスト取得先である処理装置を動作させる処理プログラムであって、
前記処理装置を、
ネットワーク構造、重みデータ、及び、前記決定部により対応付けられた前記ネットワーク構造の層と計算手法との対応関係を取得する取得部、及び、
前記取得部により取得された前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行する計算部として機能させる、
処理プログラム。
【請求項１９】
請求項１７に記載の前記計算手法決定プログラムにより動作する前記コンピュータの計算コスト取得先である処理装置と同一の実行環境を有する処理装置を動作させる処理プログラムであって、
前記同一の実行環境を有する処理装置を、
ネットワーク構造、重みデータ、及び、前記決定部により対応付けられた前記ネットワーク構造の層と計算手法との対応関係を取得する取得部、及び、
前記取得部により取得された前記ネットワーク構造、前記重みデータ、及び、前記対応関係に基づいて、入力データに対する前記ネットワーク構造の各層の計算を実行する計算部として機能させる、
処理プログラム。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2019128831.tif 000024