(57)【要約】装置に新たな能力を追加するための開発業務を効率化する仕組みを提供する。また、機械学習に関する知識やシステムをもたない者でも、機械学習により獲得された新たな能力を自身の装置に簡単に追加できる仕組みを提供する。依頼受付部が、対象装置に追加する能力の機械学習を行うために必要な情報を、学習依頼情報として、依頼者から受け付ける。学習シミュレータが、前記依頼者から受け付けた前記学習依頼情報にしたがって機械学習を行う。能力付与データ生成部が、前記学習シミュレータによる学習結果に基づいて、前記学習結果として獲得された新たな能力を前記対象装置に追加するデータである能力付与データを生成する。サービス提供部が、前記能力付与データを前記依頼者に提供する。
2017159614.tif 000002
【特許請求の範囲】
【請求項１】
対象装置に追加する能力の機械学習を行うために必要な情報を、学習依頼情報として、依頼者から受け付ける、依頼受付部と、
前記依頼者から受け付けた前記学習依頼情報にしたがって機械学習を行う、学習シミュレータと、
前記学習シミュレータによる学習結果に基づいて、前記学習結果として獲得された新たな能力を前記対象装置に追加するデータである能力付与データを生成する、能力付与データ生成部と、
前記能力付与データを前記依頼者に提供するサービス提供部と、
を有することを特徴とする学習サービス提供装置。
【請求項２】
前記対象装置は、前記対象装置に新たな能力を組み込むためのアーキテクチャを有しており、
前記学習シミュレータは、前記対象装置が有する前記アーキテクチャに整合する能力を獲得するように前記機械学習を行う
ことを特徴とする請求項１に記載の学習サービス提供装置。
【請求項３】
前記アーキテクチャは、能力を実行する能力部、前記能力部の入力のインタフェースであるデータ入力部、および、前記能力部の出力のインタフェースであるデータ出力部を含む能力獲得モデルによりモデル化されるアーキテクチャであり、
前記学習シミュレータは、前記対象装置の能力獲得モデルと整合する能力獲得モデルを用いて前記機械学習を行う
ことを特徴とする請求項２に記載の学習サービス提供装置。
【請求項４】
前記学習シミュレータは、前記機械学習の過程において、前記対象装置をモデル化した対象装置モデルを用いて前記対象装置の動作をシミュレーションする
ことを特徴とする請求項１〜３のうちいずれか１項に記載の学習サービス提供装置。
【請求項５】
前記学習受付部は、前記依頼者から、前記対象装置または前記対象装置モデルを特定する情報を受け付ける
ことを特徴とする請求項４に記載の学習サービス提供装置。
【請求項６】
前記学習シミュレータは、前記機械学習の過程において、前記対象装置が関係を有する対象をモデル化した対象モデルをさらに用いて前記対象装置の動作をシミュレーションする
ことを特徴とする請求項４又は５のうちいずれか１項に記載の学習サービス提供装置。
【請求項７】
依頼を受け付け可能な機械学習の種類ごとに、機械学習を行うために必要な情報が記述されたトレーニング情報をあらかじめ記憶するトレーニング情報データベースをさらに有し、
前記依頼受付部は、依頼する機械学習の種類を前記依頼者に指定させ、前記指定された機械学習の種類に対応する前記トレーニング情報を用いて前記学習依頼情報を生成する
ことを特徴とする請求項１〜６のうちいずれか１項に記載の学習サービス提供装置。
【請求項８】
前記トレーニング情報のうちの一部の項目が、パラメータで定義されたパラメトリック項目であり、
前記依頼受付部は、前記パラメトリック項目について前記依頼者から情報の入力を求める
ことを特徴とする請求項７に記載の学習サービス提供装置。
【請求項９】
前記機械学習によって新たな能力を獲得するための能力獲得部をさらに有し、
前記トレーニング情報は、学習モデルに関する情報である学習モデル情報を含み、
前記学習モデルは、前記能力獲得部の構成に関する定義、前記能力獲得部の入力に関する定義及び前記能力獲得部の出力に関する定義を含む
ことを特徴とする請求項７又は８に記載の学習サービス提供装置。
【請求項１０】
前記能力獲得部によって獲得される新たな能力は、センサ群から得られる複数のセンサデータを用いて監視を行う能力であり、
前記能力獲得部の入力に関する定義は、複数のセンサデータを含み、
前記能力獲得部の出力に関する定義は、監視結果を含む
ことを特徴とする請求項９に記載の学習サービス提供装置。
【請求項１１】
前記能力獲得部によって獲得される新たな能力は、画像を分類する能力であり、
前記能力獲得部の入力に関する定義は、静止画像の形式を含み、
前記能力獲得部の出力に関する定義は、画像の分類結果を含む
ことを特徴とする請求項１０に記載の学習サービス提供装置。
【請求項１２】
前記能力獲得部によって獲得される新たな能力は、動きを予測する能力であり、
前記能力獲得部の入力に関する定義は、動画像の形式を含み、
前記能力獲得部の出力に関する定義は、動きの予測結果を含む
ことを特徴とする請求項１０に記載の学習サービス提供装置。
【請求項１３】
前記能力獲得部によって獲得される新たな能力は、運転対象機械の運転能力であり、
前記能力獲得部の入力に関する定義は、センサ入力を含み、
前記能力獲得部の出力に関する定義は、アクチュエータ出力を含む
ことを特徴とする請求項９に記載の学習サービス提供装置。
【請求項１４】
コンピュータが、対象装置に追加する能力の機械学習を行うために必要な情報を、学習依頼情報として、依頼者から受け付けるステップ、
コンピュータが、前記依頼者から受け付けた前記学習依頼情報にしたがって機械学習を行うステップ、
コンピュータが、前記機械学習による学習結果に基づいて、前記学習結果として獲得された新たな能力を前記対象装置に追加するデータである能力付与データを生成するステップ、
コンピュータが、前記能力付与データを前記依頼者に提供するステップ、
を有することを特徴とする学習サービス提供方法。
【請求項１５】
請求項１４に記載の学習サービス提供方法の各ステップをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２０１６年３月１４日に出願された日本出願番号２０１６−０４９２３６号に基づくもので、ここにその記載を援用する。
【技術分野】
【０００２】
本発明は、機械学習を利用した開発業務を効率化するための仕組みに関する。
【背景技術】
【０００３】
（背景技術）
以前から、人工知能やニューラルネットワークに関する研究は幅広く行われてきた。例えば、画像による対象物の認識技術は、改良が進められて、徐々に認識率が向上してきている。Ｄｅｅｐ  Ｌｅａｒｎｉｎｇと呼ばれる新たな学習の方式によって、ここ数年で認識率が急速に向上して、画像の分類については人の認識率を超えるレベルになってきている。Ｄｅｅｐ  Ｌｅａｒｎｉｎｇの技術は、画像の認識のみではなく、音声認識や、個人認証、行動予測、文章の要約、自動翻訳、監視、自動運転、故障予測、センサデータの分析、楽曲のジャンル判定、コンテンツ生成、セキュリティシステムなど幅広い分野に応用することができる。Ｄｅｅｐ  Ｌｅａｒｎｉｎｇのような機械学習を利用することで、人が関与することなく、機械が新たな能力を獲得することができる。【０００４】
現時点では、Ｄｅｅｐ  ＬｅａｒｎｉｎｇなどのＡＩ技術は特殊な技術であり、ＡＩ技術を特定分野に適用するためには、特殊なスキルを持つ要員による研究と開発が必要となる。例えば、ＡＩ技術を持つ要員が、顧客の依頼ごとに顧客の装置と要望を分析して、学習プランを作成し、トレーニングシステムを構築し、学習により新たなニューラルネットワークを生成し、それを客先のシステムに組み込むためのシステム開発を行っている。Ｄｅｅｐ  ＬｅａｒｎｉｎｇなどのＡＩ技術を用いた学習では、大規模なデータが必要となることが多く、さらに繰り返し演算回数が多いために、大規模なトレーニングシステムが必要となる。トレーニングシステムにおいては、ＡＩ技術の実装のみでなく、大規模データを扱うしくみや、並列化や演算プログラムのハードウェア化など、従来のＷｅｂアプリとは異なる、より複雑なシステムが用いられる。現状では、ＡＩ技術を保有するＡＩ技術サービス企業が、ＡＩ技術には詳しくない顧客企業に対してコンサルティングとシステム開発の双方を行うケースが多い。【０００５】
装置に新たな能力を実装する方法に関連する技術として、特許文献１、２では、プリンタのファームウェアを書き換える技術が開示されている。また、特許文献３、４には、機械学習に関連する技術が開示され、特許文献５には、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇを利用した文字識別システムが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１３４４７４号公報
【特許文献２】特開２００７−１４０９５２号公報
【特許文献３】特開２０１４−２２８９７２号公報
【特許文献４】特許第５８１６７７１号公報
【特許文献５】特開２０１５−５３００８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
今後は、装置を開発する企業が自身でＡＩ技術を組み込んだ製品を開発したいというニーズが高まることが予想される。特に、組込機器においては、このような要望が多い。しかし、機械学習（トレーニング）には、高度なシステムと、それをメンテナンスできる要員が必要となる。このため、一般のメーカの技術者が自身で機械学習を実施するのは容易ではない。【０００８】
本発明は上記実情に鑑みなされたものであり、機械学習に関する知識やシステムを持たない者でも、簡単に自身の装置に新たな能力を追加するための仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記のうち少なくともいずれかの目的を達成するため、本発明は以下の構成を採用する。【００１０】
本発明の第一態様は、対象装置に追加する能力の機械学習を行うために必要な情報を、学習依頼情報として、依頼者から受け付ける、依頼受付部と、前記依頼者から受け付けた前記学習依頼情報にしたがって機械学習を行う、学習シミュレータと、前記学習シミュレータによる学習結果に基づいて、前記学習結果として獲得された新たな能力を前記対象装置に追加するデータである能力付与データを生成する、能力付与データ生成部と、前記能力付与データを前記依頼者に提供するサービス提供部と、を有することを特徴とする学習サービス提供装置である。【００１１】
対象装置の開発者（依頼者）にとっては次のような利点がある。まず、この学習サービス提供装置を利用すれば、依頼者自身は機械学習を実施する必要がないので、対象装置に新たな能力を追加するための開発業務を効率化することができる。また、依頼者は機械学習に必要な情報を与えるだけでよいので、機械学習に関する知識やシステムをもたない者でも学習サービス提供装置の利用が容易である。また、学習結果が能力付与データ（新たな能力を対象装置に追加するデータ）で提供されるので、依頼者は、機械学習により獲得された新たな能力を自身の装置に簡単に追加することができる。【００１２】
一方、機械学習を実施する者（サービス提供者）にとっては次のような利点がある。機械学習を行うために必要な情報は依頼者から提供されるので、依頼どおりの機械学習の実行が担保できる。また、依頼者からの依頼の受け付け、機械学習の実施などの処理を可及的に自動化・省力化できる。さらに学習結果を能力付与データに変換し依頼者に提供するので、学習結果の提供および対象装置への実装についても可及的に自動化・省力化することができる。【００１３】
前記対象装置は、前記対象装置に新たな能力を組み込むためのアーキテクチャを有しており、前記学習シミュレータは、前記対象装置が有する前記アーキテクチャに整合する能力を獲得するように前記機械学習を行うとよい。対象装置があらかじめこのようなアーキテクチャを有することで、新たな能力の組み込みが容易となる。また、学習シミュレータが対象装置のアーキテクチャに整合するように機械学習を実施することで、機械学習の結果として獲得された能力を対象装置に組み込むことが容易となる。【００１４】
前記アーキテクチャは、能力を実行する能力部、前記能力部の入力のインタフェースであるデータ入力部、および、前記能力部の出力のインタフェースであるデータ出力部を含む能力獲得モデルによりモデル化されるアーキテクチャであり、前記学習シミュレータは、前記対象装置の能力獲得モデルと整合する能力獲得モデルを用いて前記機械学習を行うとよい。このように対象装置と学習シミュレータの間の能力獲得モデルを整合させることによって、対象装置の能力部と学習シミュレータの能力部が同等の能力を実行できること、および、それぞれの能力部に同等のデータが入出力されることが担保される。また、学習シミュレータで獲得した能力の対象装置への組み込みが容易に実現できる。このとき、能力付与データは、対象装置の能力獲得モデルにおける能力部、データ入力部、およびデータ出力部のそれぞれに機能を設定するデータであるとよい。前記学習受付部は、前記依頼者から、前記対象装置の能力獲得モデルを特定する情報を受け付けるとよい。【００１５】
前記学習シミュレータは、前記機械学習の過程において、前記対象装置の動作をシミュレーションするとよい。このとき、前記学習シミュレータは、前記機械学習の過程において、前記対象装置をモデル化した対象装置モデルを用いて前記対象装置の動作をシミュレーションするとよい。また、前記学習シミュレータは、前記機械学習の過程において、前記対象装置が関係を有する対象をモデル化した対象モデルをさらに用いて前記対象装置の動作をシミュレーションするとよい。対象装置モデルや対象モデルを用いることにより、対象装置の実機がなくても、対象装置や対象の振る舞いや影響などを考慮した機械学習を行うことができる。対象装置の実機が不要となれば、機械学習の代行がきわめて実現容易となる。特に、生産設備のように大型の装置や稼働中の装置の場合、実機を機械学習に利用することは現実的でない。本発明の学習サービスはそのようなケースでも利用可能であり、適用の自由度および利便性に優れる。前記学習受付部は、前記依頼者から、前記対象装置または前記対象装置モデルを特定する情報を受け付けるとよい。また、前記学習受付部は、前記依頼者から、前記対象または前記対象モデルを特定する情報を受け付けるとよい。【００１６】
依頼を受け付け可能な機械学習の種類ごとに、機械学習を行うために必要な情報が記述されたトレーニング情報をあらかじめ記憶するトレーニング情報データベースをさらに有し、前記依頼受付部は、依頼する機械学習の種類を前記依頼者に指定させ、前記指定された機械学習の種類に対応する前記トレーニング情報を用いて前記学習依頼情報を生成するとよい。この構成によれば、装置の開発者（依頼者）が自身の装置に追加したい能力の学習依頼を機械学習を実施する者（サービス提供者）に対し簡単に依頼することができる。また、サービス提供者にとっても、機械学習を行うために必要な情報を漏れなく取得できるという利点がある。【００１７】
前記トレーニング情報のうちの一部の項目が、パラメータで定義されたパラメトリック項目であり、前記依頼受付部は、前記パラメトリック項目について前記依頼者から情報の入力を求めるとよい。依頼者が指定可能なパラメータを用意しておくことで、依頼者の希望に応じた機械学習を行うことができる。なお、依頼者が入力しなければならない項目が増えると依頼手続きが困難になるというデメリットがある。したがって、パラメトリック項目はトレーニング情報のうちの一部の項目に限定するとよい。【００１８】
前記依頼受付部は、前記パラメトリック項目について複数の選択肢を前記依頼者に提示し、前記複数の選択肢のなかから前記依頼者に入力する情報を選択させるとよい。これにより、依頼者の入力負担を軽減することができる。【００１９】
前記サービス提供部は、前記能力付与データを電子的手段により前記依頼者に提供するとよい。電子的手段は、例えば、電子メール、ＦＴＰ、ファイルサーバからのダウンロードなどである。このような電子的手段を利用することで、能力付与データの提供を可及的に自動化・省力化することができる。【００２０】
前記能力付与データは、前記対象装置が備える回路に組み込むデータ（例えば、対象装置が備えるＦＰＧＡに書き込むデータなど）や、前記対象装置が備えるプロセッサで実行されるプログラムなどを含むとよい。このような形式で能力付与データを提供することで、依頼者が能力付与データを対象装置に追加する作業が容易になる。【００２１】
なお、本発明は、上記構成ないし機能の少なくとも一部を有する学習サービス提供装置として捉えることができる。学習サービス提供装置は、単体の装置で構成してもよいし、複数の装置の組み合わせで構成してもよい。また、本発明は、上記処理の少なくとも一部を含む学習サービス提供方法、または、かかる方法をコンピュータに実行させるためのプログラム、または、そのようなプログラムを非一時的に記録したコンピュータ読取可能な記録媒体として捉えることもできる。上記構成および処理の各々は技術的な矛盾が生じない限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【００２２】
本発明によれば、装置に新たな能力を獲得させるための開発業務を効率化する仕組みを提供することができる。また本発明によれば、機械学習に関する知識やシステムをもたない者でも、機械学習により獲得された新たな能力を自身の装置に簡単に実装できる仕組みを提供することができる。また本発明によれば、装置の開発者（依頼者）が自身の装置に獲得させたい能力の学習依頼を機械学習を実施する者（サービス提供者）に対し簡単に依頼することができる仕組みを提供することができる。また本発明によれば、機械学習を実施する者（サービス提供者）が装置の開発者（依頼者）からの依頼の受け付け、機械学習の実施、依頼者への学習結果の提供を可及的に自動化・省力化できる仕組みを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】図１は学習サービス提供システムが提供する学習サービスの概念図である。
【図２】図２は学習サービス提供システムのシステム構成図である。
【図３】図３はサービス管理部の構成図である。
【図４】図４はトレーニング情報ＤＢの登録データの一例を示す図である。
【図５】図５は能力獲得モデルの構成図である。
【図６】図６はＤｅｅｐ  Ｌｅａｒｎｉｎｇによる能力獲得モデルの一例を示す図である。
【図７】図７はトレーニング情報およびトレーニング受け付け情報のデータ構造の一例を示す図。
【図８】図８は依頼受付部の構成図である。
【図９】図９は対象装置の構成図である。
【図１０】図１０は学習指令部と学習シミュレータの詳細構成図である。
【図１１】図１１は学習シミュレータの構成例を示す図である。
【図１２】図１２は学習サービス提供システムの処理フローである。
【図１３】図１３は学習依頼情報のデータ構造の一例を示す図である。
【図１４】図１４Ａ〜図１４Ｄは依頼入力画面の一例を示す図である。
【図１５】図１５Ａ〜図１５Ｄは依頼入力画面の一例を示す図である。
【図１６】図１６Ａ〜図１６Ｂは依頼入力画面の一例を示す図である。
【発明を実施するための形態】
【００２４】
本発明は、装置に新たな「能力」を追加するための開発業務を効率化するための学習サービス提供装置に関する。以下に述べる実施形態では、学習サービス提供装置の好ましい具体例の一つである「学習サービス提供システム」について説明する。
【００２５】
＜用語の説明＞
実施形態の説明に入る前に、本明細書で使用する用語について説明する。
【００２６】
「学習サービス」とは、機械学習を代行するサービスである。詳しくは、依頼者（対象装置に新たな能力を付与したいと望む者）からの依頼に基づき、依頼者に代わって対象装置に追加するための新たな能力の機械学習を実施し、機械学習の結果として得られた「能力」を依頼者の対象装置に提供するサービスである。「学習サービス提供システム」は、依頼者からの学習依頼の受け付け、機械学習の実施、依頼者への学習結果の提供など、学習サービスに関わる一連の処理を担うシステムである。
【００２７】
「機械学習」は、機械に目標を入力すると、機械が目標を達成するための能力を獲得して、機械自身が新たに獲得した能力を発揮できるようになることである。本明細書では、特に明記がない場合、「学習」は機械学習を意味する。
【００２８】
「能力」は、装置が提供しうる機能ないし装置が実行しうる処理である。装置に新たな能力を追加するとは、装置に新しい機能ないし処理を追加すること、または、装置が既に有する機能ないし処理の性能を向上することである。なお、依頼者の「対象装置」は、新たな能力を組み込み可能な構成をもつ装置であれば、いかなる種類の装置でもよい。例えば、製造装置、ＦＡロボット、検査装置、生産管理システム、プラント制御システム、監視システム、ビル制御システム、店舗管理システム、人型ロボット、防災ロボット、Ｗｅｂサービス、モバイル端末、家電装置、業務システム、組込システム、生体情報システム、画像認識装置、音声認識装置、自動運転システム、故障予測システム、データ分析装置、コンテンツ生成装置、セキュリティシステム、金融システム、ウィルス監視装置などさまざまな分野の装置の開発に利用できる。
【００２９】
「能力付与データ」は、学習結果として得られた「能力」を依頼者の対象装置に追加するためのデータである。能力付与データは依頼者の対象装置にそのまま組み込み可能（実装可能）なデータ形式をもつデータである。学習結果を適切な形式でデータ化することで、学習サービスの学習結果を依頼者の対象装置へ組み込むことが容易になる。
【００３０】
以下に述べる実施形態では、実行形式のプログラムとプログラムの定義とを区別するため、プログラムの定義を「モデル」により記述している。「モデル」は、対象の振る舞いや性質などを一般化・抽象化し、所定の記述言語を用いて表現したものであり、モデルベース開発において用いられるモデルと同じである。任意のプログラムやデータ構造をモデルで定義することができる。また、任意の装置、環境、物理現象などもモデルで定義することができる。モデルベース開発では、モデルによって各構成要素の内部構成と各構成要素間の関係を定義し、複数のモデルを組み合わせた状態をシミュレーションすることができる。また、モデルベース開発ツールを用いることで、モデルから実行形式のプログラムや回路を自動生成できる。
【００３１】
モデルにはプログラムの定義のみでなく、実行形式のプログラムを含めることができる。それによって、依頼された学習を学習シミュレータで実行する時の処理を減らすことができる。
【００３２】
以下に述べる実施形態において、モデルベース開発ツールでプログラムを開発することで、学習のシミュレーションにおける各部分の関係を明確に定義できる。ただし、システムの実装においてモデルベース開発ツールを用いずに、同様のプログラムを開発することができる。従って、本発明はモデルベース技術で開発したシステムには限定されない。
【００３３】
モデルに記述する項目の一部を「パラメータ化」することができる。つまり、項目の値をパラメータ（変数）で定義しておき、学習依頼を受け付ける際に依頼者にパラメータの値を入力または選択させたり、学習実行時にシステム側でパラメータの値を適宜設定することができる。以後、パラメータ化された項目を「パラメトリック項目」または「未定義項目」または単に「パラメータ」と呼び、値や内容が定義されている項目を「定数項目」または「定義済み項目」と呼ぶ。パラメトリック項目はデータ項目に限られない。例えば関数型プログラミング言語を利用することで、処理項目（メソッド項目）もパラメータ化できる。関数型プログラミング言語では、関数の引数として関数を渡すことができる。この機能により、所定のプログラムが別のプログラムの引数として扱われて起動できる。関数の引数に異なる関数（プログラム）のＩＤ情報を指定することで、選択可能な処理がパラメータ化される。コード量は増えるが、同様の処理を、一般的なオブジェクト指向言語やＣ言語で記述することが可能である。
【００３４】
「学習モデル」は、対象装置に追加する新たな能力を機械学習によって獲得する方法を定式化したモデルである。学習モデルは、本システムが依頼を受け付け可能な機械学習の種類ごとにそれぞれ作成される。以後の記載では、「学習モデル」の語を単に「機械学習の種類」という意味で用いている文脈もある。
【００３５】
「対象装置モデル」は、依頼者の対象装置（新たな能力を追加される装置）のモデルである。本システムは、この対象装置モデルで実行できるようにするための能力付与データを生成し出力する。
【００３６】
「対象モデル」は、依頼者の対象装置（新たな能力を追加される装置）が関係を有する対象のモデルである。対象装置が関係を有する対象には、例えば、対象装置の周囲の環境、対象装置との間で入出力を行う他の装置、対象装置が作用を及ぼす対象などが該当する。
【００３７】
＜システム全体の動作概念＞
図１に本実施形態の学習サービス提供システムが提供する学習サービスの概念図を示す。依頼者１０１は、インターネットなどのネットワークを介して学習サービス提供システム１００にアクセスし、対象装置１０４に追加する能力の機械学習を依頼する。機械学習を行うために必要な情報は、学習依頼情報１０２として、依頼者１０１から学習サービス提供システム１００に提供される。学習サービス提供システム１００は、依頼者１０１から提供された学習依頼情報１０２をもとに、依頼者１０１側の対象装置１０４および対象１０５をシミュレートしながら必要な機械学習を行う。学習サービス提供システム１００は、依頼者１０１から依頼された学習が完了したら、学習結果として獲得した新たな能力を、対象装置１０４に組み込み可能なデータ形式の能力付与データ１０３として、依頼者１０１に対し提供する。なお、依頼者１０１は、パーソナルコンピュータを利用して学習サービス提供システム１００にアクセスしてもよいし、対象装置１０４がインターネットアクセス可能であれば対象装置１０４から学習サービス提供システム１００に直接アクセスしてもよい。
【００３８】
＜システムの構成＞
図２に学習サービス提供システムのシステム構成図を示す。学習サービス提供システム１００は、依頼受付部２００、サービス管理部２０１、学習指令部２０２、学習シミュレータ２０３、能力付与データ生成部２０４、サービス提供部２０５を有する。
【００３９】
本システム１００は、例えば、プロセッサ、メモリ、記憶装置（ハードディスク、半導体ディスクなど）、入力装置（キーボード、マウス、タッチパネルなど）、表示装置、通信装置などのハードウェア資源を有する汎用のコンピュータにより構成することができる。図２に示す本システム１００の機能は、記憶装置に格納されたプログラムがメモリにロードされ、プロセッサにより実行されることにより、実現されるものである。なお、本システム１００は、一台のコンピュータにより構成してもよいし、複数台のコンピュータによる分散コンピューティングにより構成してもよい。また、処理の高速化のため、本システム１００の機能の一部または全部を専用のハードウェア（例えばＧＰＵやＦＰＧＡ、ＡＳＩＣなど）を用いて実現することも可能である。
【００４０】
（サービス管理部２０１）
図３にサービス管理部２０１の構成を示す。サービス管理部２０１は、サービス管理端末３００、サービス管理制御部３０１、トレーニング情報ＤＢ（データベース）３０２を有する。サービス管理部２０１は、本システム１００が受け付け可能な複数の学習モデルを管理する。
【００４１】
本システム１００の運営者（サービス提供者）側の要員であるＡＩ技術者が、サービス管理端末３００を利用して、個々の学習モデルごとに、トレーニング受け付け情報３０３とトレーニング情報３０４のペアを作成する。作成されたトレーニング受け付け情報３０３およびトレーニング情報３０４は、サービス管理制御部３０１によってトレーニング情報ＤＢ３０２に登録される。これにより、依頼者１０１が依頼時に選択可能な学習モデルが学習メニューに追加される。図４はトレーニング情報ＤＢ３０２の登録データの一例を示している。トレーニング情報ＤＢ３０２には、学習モデルごとに、トレーニング受け付け情報３０３とトレーニング情報３０４とが一対一に対応付けられて登録されている。
【００４２】
ＡＩ技術に詳しくない者でも簡単に依頼ができるよう、依頼者１０１に対して提示する学習メニューを工夫することが好ましい。例えば、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇを学習に利用する場合、層の数、層の構造、活性化関数などニューラルネットワークのパラメータを設計する必要があるが、これらのパラメータは固定（学習モデルに定義済み）とし、依頼者１０１が考えなくてもよいようにしてもよい。また、依頼者１０１に学習メニューを提示する際に、専門用語を極力避け、わかりやすい説明文を提示して入力を支援することも好ましい。
【００４３】
学習メニューは、例えば、
・静止画像を用いた分類の学習
・センサデータにおける異常検出の学習
・動画像を用いた動き予測の学習
・自然言語情報におけるトピック抽出の学習
・プラント運転能力の学習
のように、本システム１００が実行可能な機械学習の種類を選択肢として用意するとよい。このとき、学習の内容や目的を分かりやすい文章で提示するとよい。
【００４４】
学習メニューの構成は上記に限定されず、他にも様々な方法を採り得る。例えば、上位メニューを「分類の学習」、「異常検出の学習」、「運転能力の学習」のような、能力の分類で分けてもよい。このようにすることで、依頼ごとの違いを効率よく分類することができる。
【００４５】
新たな能力を追加する対象装置１０４とその対象１０５は、依頼ごとにさまざまである。依頼者１０１が、依頼入力画面で、依頼に必要な事項を順次入力していく過程で、依頼内容が自動的に分類されながら依頼受け付けに必要となる情報が集められる。したがって、依頼受付部２００が依頼の受け付けを完了すると、依頼内容に対応可能な、いずれかの学習モデルが選択されているようにしてもよい。
【００４６】
あるいは、「画像に関する能力」、「音声に関する能力」、「自然言語に関する能力」、「システム制御に関する能力」のような、能力を獲得する対象ごとの分類に対応した学習メニューを用意してもよい。この場合、獲得する能力の分類を先に指定し、後で入力と出力を指定できるようにするとよい。入力と出力の組み合わせをマトリクスにして、表形式で提示して選択するようにしてもよい。あるいは、マトリクスの情報をツリー形式で表示して選択するようにしてもよい。上位メニューの選択肢が選択されたときに、それぞれのメニューごとのサブメニューを提示するようにして、依頼を詳細に分類して階層的に受け付けることができるようにしてもよい。例えば、上位メニューで「カメラ画像」を選択すると「静止画像／動画像」の選択肢が提示され、「静止画像」を選択すると「画像の分類／異常検出／物体認識」という処理内容の選択肢が提示される、というような階層的なメニューでもよい。
【００４７】
学習メニューを例示せず、次のようにしてもよい。各学習モデルごとに、説明文を作成しておく。依頼者１０１は依頼内容を文章（自由文）で記載する。依頼受け付け時には、依頼者１０１が入力した文章との類似度が高い説明文を類似度が高い順にリストアップして、依頼者１０１にリストから希望する学習モデルを選択させる。
【００４８】
あるいは、学習メニューの詳細をデータベース化して、分野や目標、課題から検索できるようにしてもよい。あるいは、依頼者１０１に依頼情報を文字列で入力させたり、モデル記述言語で記述されたモデルのアップロードを求めてもよい。あるいは、自動受け付けできないような案件については、担当者に通知するようにして、オペレータや技術者が依頼の受け付けを行うようにできる。この場合は、受け付けた依頼に対する学習モデルを作成することになる。このようにすることで、より幅広い案件に対応できるようになる。
【００４９】
（能力の獲得）
さまざまな種類の対象装置１０４に対し本学習サービスを提供するにあたり、対象装置１０４に新たな能力を組み込むためのアーキテクチャを共通化しておく必要がある。そこで本実施形態では、対象装置１０４に新たな能力を組み込むためのアーキテクチャをモデル化し、これを「能力獲得モデル」と呼ぶ。対象装置１０４が能力獲得モデルに従った組み込みインタフェースを用意し、本システム１００の学習シミュレータ２０３が能力獲得モデルに整合する能力を獲得するように機械学習を行うことで、本システム１００で生成した能力付与データ１０３の対象装置１０４への組み込みが可能となる。
【００５０】
能力獲得モデルを定義することによって、共通させるべきアーキテクチャに関する情報がモデルデータとしてデータ化される。データ化された能力獲得モデルに関する情報は、それぞれの学習モデルにおいて学習シミュレータ２０３と対象装置１０４の間で論理的な整合をとるために用いられる。データ化されることで、各種の開発ツールを用いた、プログラムや回路の自動生成や自動テストを行うことが可能となる。
【００５１】
あらかじめ準備されていた能力獲得モデルが対象装置１０４に適合しない場合に、学習依頼者１０１があらかじめ準備されていた能力獲得モデルの一部または全てを変更して新たな能力獲得モデルを作成してもよい。能力獲得モデルをシステムモデリング言語で記述して、ファイルに格納して学習サービス提供システム１００に提供する学習依頼情報１０２に含めることによって、任意の対象装置１０４について、学習依頼を行うことが可能となる。
【００５２】
それぞれの能力獲得モデルに対して能力獲得モデルを相互に識別する識別情報（例えば、能力獲得モデルＩＤや能力獲得モデル名）を付与することで、識別情報を使って学習シミュレータ２０３と対象装置１０４の間で能力獲得モデルを特定して論理的に整合させることができる。
【００５３】
能力獲得モデルを用いることで、学習を依頼する依頼者１０１と依頼を受ける者との間で、必要以上の技術情報をやりとりすることなく、それぞれの開発を進めることができる。
【００５４】
能力獲得モデルの情報を公開することで、公開された特定の能力獲得モデルに対応する対象装置１０４である製品の普及が促進される。また、公開された特定の能力獲得モデルに対応する学習モデルが複数のベンダーから提供されることが可能となり、競争による学習レベルの向上が期待できる。
【００５５】
図５に能力獲得モデルの構成を示す。本実施形態の能力獲得モデル５００は、能力を実行する構成である能力部５０２と、能力部５０２の入力のインタフェースであるデータ入力部５０１と、能力部５０２の出力のインタフェースであるデータ出力部５０３の３つの定義を含む。データ入力部５０１は、対象装置１０４やその他の機器から所定の仕様でデータを受け取り、必要なデータ処理を施し、能力部５０２に適合するようにデータ形式を変換して入力する。データ入力部５０１は、対象装置１０４などから受け取るデータの仕様、データ処理の仕様、能力部５０２に入力するデータの仕様などの、対象装置１０４やその他の機器から能力部５０２にデータを入力する仕様の定義を含む。能力部５０２は、データ入力部５０１から入力されたデータに基づき情報処理を実施し、その結果をデータ出力部５０３に出力する。この能力部５０２の内部の構成を変えることで、能力獲得モデル５００の能力を変更することができる。データ出力部５０３は、能力部５０２から結果を受け取り、必要なデータ処理を施し、対象装置１０４やその他の機器に適合するようにデータ形式を変換して出力する。データ出力部５０３は、能力部５０２から出力されるデータの仕様、データ処理の仕様、対象装置１０４などへ所定のインタフェース仕様で出力するデータの仕様などの、能力部５０２から対象装置１０４やその他の機器にデータを出力する仕様の定義を含む。
【００５６】
能力獲得モデル５００を用いることで、学習シミュレータ２０３と対象装置１０４において、データ入力部５０１と能力部５０２とデータ出力部５０３は、実装方法が異なっても、論理的に同じ動作を行うことが保証される。また、能力獲得モデルを用いることで、学習依頼者と依頼を受ける者の間で、必要以上の情報をやりとりすることなく、学習を依頼することができる。
【００５７】
なお、本システム１００の学習シミュレータ２０３側では、能力獲得モデル５００を新たな能力獲得のための学習シミュレーションに利用するため、以後の説明では、システム１００側の能力部５０２を「能力獲得部」とも称する（図１０の能力獲得部１００４を参照）。一方、対象装置１０４側では、システム１００で獲得された新たな能力を受容し実行するために能力獲得モデル５００を利用するため、対象装置１０４側の能力部５０２を「能力受容部」とも称する（図９の能力受容部９０４を参照）。また、以後の説明において、学習シミュレータ２０３側の能力獲得モデルと対象装置１０４側の能力獲得モデルを区別するために、図９および図１０に示される符号を用いる。
【００５８】
学習シミュレータ２０３で獲得した能力を対象装置１０４に付与できるようにするために、能力獲得モデル５００は、少なくともデータ入力部５０１と能力部５０２の間のインタフェース仕様と、能力部５０２とデータ出力部５０３の間のインタフェース仕様と、学習モデルが学習に用いるときに対象装置１０４の能力受容部９０４の構成を特定するための情報とを含むとよい。例えば、獲得する能力が「画像の分類」の場合は、対象装置１０４と能力獲得モデルの関係がシンプルなので、それだけで学習シミュレータ２０３と対象装置１０４を整合させることができる。具体的には、入力が画像データで、出力が分類結果であることが定義されていればよい。
【００５９】
能力獲得モデル５００は、さらに以下のような詳細な情報を含むようにできる。
【００６０】
学習シミュレータ２０３に実装された能力獲得部１００４に入力されるデータと対象装置１０４の能力受容部９０４に入力されるデータは同等である必要がある。能力獲得モデル５００のデータ入力部５０１は、対象装置１０４の基本構成９０２からデータ入力部９０３に対するデータ入力のインタフェース仕様を定義する情報を含むようにできる。データ入力部５０１には任意のロジックを組み込むようにできる。
【００６１】
学習にＤｅｅｐ  Ｌｅａｒｎｉｎｇを用いる場合、能力受容部９０４は学習モデルで使用される深層ニューラルネットワークとなるので、能力獲得モデル５００は、受容可能なネットワークの構成を特定する情報を含む必要がある。構成を特定する情報は受容可能なネットワークを一意に定めるものでもよいし、複数の選択可能な範囲を示すようにしてもよい。他の学習方法の場合は、能力を獲得する回路やソフトウェアなど学習ロジックを特定するための情報を含むようにする。それによって、学習シミュレータ２０３の能力獲得部１００４と対象装置１０４の能力受容部９０４の論理的な構成が一致することが担保される。一方で、学習シミュレータ２０３の能力獲得部１００４と対象装置１０４の能力受容部９０４の実装方法が、例えばハードウェア実装とソフトウェア実装のように相違していてもよい。例えば、対象装置１０４の能力受容部９０４がソフトウェア実装であるときに、学習シミュレータ２０３側では、学習時間を短くするためにハードウェアで能力獲得部１００４のニューラルネットワークを構成することができる。
【００６２】
学習シミュレータ２０３に実装された能力獲得部１００４からデータ出力部１００５を介して出力されるデータと対象装置１０４の能力受容部９０４からデータ出力部９０５を介して出力されるデータは同等である必要がある。そのために、能力獲得モデル５００のデータ出力部５０３は、データ出力部９０５から対象装置１０４の基本構成９０２に対するデータ出力のインタフェース仕様を定義する情報を含むようにできる。
【００６３】
能力獲得モデル５００と対象装置１０４の基本構成９０２との間で入出力のインタフェース仕様を定義することで、学習シミュレータ２０３において基本構成９０２のモデル１００６を用いたシミュレーションを行うことが可能になる。例えば、獲得した能力が対象装置１０４の基本構成９０２を制御するような場合に、上記のような詳細な情報が必要になる。
【００６４】
能力獲得モデル５００が学習シミュレータ２０３における実装や、対象装置１０４における実装の内容である回路情報や実行形式のプログラムを含むようにしてもよい。逆に、最小限のインタフェース仕様のみを定義するようにしてもよい。最小限のインタフェース仕様のみを定義することで、能力獲得モデル５００を定義するファイルのサイズを小さくすることができる。インタフェース仕様と実装されるロジックの定義を含むようにして、学習シミュレータ２０３と対象装置１０４のそれぞれに対してモデルから自動生成するようにしてもよい。自動生成することで、学習モデルの開発効率を向上させることが可能となり、モデル情報を用いた厳密な仕様チェックを機械的に行うことが可能となる。
【００６５】
能力獲得モデル５００は、それぞれの学習モデルにおいて学習シミュレータ２０３と対象装置１０４の間で矛盾なく定義されていればよい。学習シミュレータ２０３と対象装置１０４における能力獲得モデル５００に相当する部分の実装は、それぞれ異なるものであってよい。
【００６６】
能力獲得モデル５００は、例えばオブジェクト指向プログラミング言語や関数型プログラミング言語の抽象クラスあるいはインタフェースを定義するクラス相当の言語機能によって定義できる。さらに実装クラスを加えるようできる。あるいは、システムモデリング言語で、インタフェース仕様として定義できる。システムモデリング言語で、実装されるロジックを含むようにも定義できる。あるいは、ハードウェア記述言語のインタフェース仕様として定義できる。ハードウェア記述言語で、実装されるロジックを含むようにも定義できる。
【００６７】
それぞれ、インタフェース仕様のみ定義するようにしてもよいし、データ入力部５０１、能力部５０２、データ出力部５０３に対応して実装されるロジックの定義を含むようにしてもよい。
【００６８】
学習シミュレータ２０３におけるデータ入力部１００３とデータ出力部１００５は、対象装置１０４におけるデータ入力部９０３とデータ出力部９０５から入出力されるデータと同等のデータを、学習用データとして能力獲得部１００４に入出力するような動作を行う。対象装置１０４と同等のデータが能力獲得部１００４に入力されればよいので、学習シミュレータ２０３におけるデータ入力部１００３、データ出力部１００５と、対象装置１０４におけるデータ入力部９０３、データ出力部９０５は必ずしも同じ構成である必要はない。学習に用いるデータの形式や出力データの形式が、対象装置１０４内で扱われるデータ形式と異なるような場合は、学習シミュレータ２０３におけるデータ入力部１００３およびデータ出力部１００５と、能力獲得部１００４との間のインタフェースが一致するように変換すればよい。学習シミュレータ２０３と対象装置１０４の間で能力獲得モデルを整合させることで、学習時の能力獲得部１００４と対象装置１０４の能力受容部９０４が同等の能力を実行できること、および、それぞれに同等のデータが入出力されることが担保される。また、能力付与データ１０３により、対象装置１０４へ新たな能力を組み込むことが容易に実現できる。能力獲得モデルが整合されていれば、学習シミュレータ２０３の能力獲得部１００４と対象装置１０４の能力受容部９０４が異なる実装形態（例えば、ハードウェア実装とソフトウェア実装、あるいは使用するプログラミング言語の相違）となっている場合も、能力付与データ１０３による能力付与が可能となる。
【００６９】
能力部５０２が発揮する能力（情報処理を実現するためのプログラムや各種パラメータなど）は機械学習によって生成される。機械学習は例えばＤｅｅｐ  Ｌｅａｒｎｉｎｇの技術を用いて実施できる（以下の実施形態では、主にＤｅｅｐ  Ｌｅａｒｎｉｎｇを用いた実施方法を想定している。）。ただし、学習方法はＤｅｅｐ  Ｌｅａｒｎｉｎｇに限られない。
【００７０】
例えば、モータ制御の学習において、以下のような方法により新たな能力を獲得できる。あらかじめ複数の制御ロジックの構成要素を用意する。トレーニングでいくつかの構成要素をランダムに選択して、接続する。接続したモデルで遺伝アルゴリズムにより、結果を最適化する。所定の範囲で上記を繰り返して、最もよいものを選択する。
【００７１】
例えば、文字列の分類学習において、以下のような方法により新たな能力を獲得できる。人が分類した多数のサンプルを準備する。さまざまな文字列関数を用意する。文字列関数をランダムに選択して、複数の文字列関数を組み合わせる。文字列関数のパラメータを遺伝アルゴリズムにより最適化する。所定の範囲で上記を繰り返して、最もよいものを選択する。
【００７２】
例えば、プログラムの機械コードを部分ごとにランダムに生成して、入力に対する出力が最良となるものを選択することで、新たな能力を獲得できる。目的ごとにプログラムの分割を適切に選択しておくことで、学習速度を向上させることができる。
【００７３】
ＡＩ技術者は、受け付ける依頼ごとに、効率がよい能力獲得モデルとそのトレーニング方法を選んで、学習依頼を受け付けられるようにする。Ｄｅｅｐ  Ｌｅａｒｎｉｎｇにおける学習方法として様々な手法が知られている。ＡＩ技術者は応用する対象ごとに、より少ない処理で学習が終了するような手法を選択する。
【００７４】
（Ｄｅｅｐ  Ｌｅａｒｎｉｎｇの例）
図６にＤｅｅｐ  Ｌｅａｒｎｉｎｇによる能力獲得モデルの一例を示す。データ入力部５０１は、対象装置１０４に入力される信号形式をニューラルネットワークに適合するように変換してデータ化した信号を入力する機能ブロックである。データ入力部５０１には、対象装置１０４から受け取るデータの仕様として「動画像、ＲＧＢ、解像度１０２４×７６８、３０ｆｐｓ」、能力部５０２に入力するデータの仕様として「静止画像、グレースケール、解像度６４０×４８０」などが定義されている。色情報が不要な場合は、グレースケールに変換することで、学習時間が短縮され、能力部５０２の回路構成が簡単になる。これはデータ形式の変換を行う場合の例であり、色情報が必要な場合はＲＧＢのカラー信号をそのまま入力するようにもできる。能力部５０２は、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ技術を用いたトレーニングによって学習済みのニューラルネットワークにより、入力データから目的とする結果を出力する機能ブロックである。能力部５０２は、任意の数で任意サイズの各層の入出力が全て接続されたニューラルネットワークのサブセットとしてモデル化できる。能力部５０２のモデルには、必要に応じて、フィードバック回路や演算回路、論理回路、記憶回路、同期回路、遅延回路、リセット回路などの付加回路を追加できる。能力部５０２は、例えば、ＡＩの種類、層数、各層の構造、活性化関数、重みフィルタなどの定義を含む。学習を行うときは、学習モデルで定義された構成で、順次ニューラルネットワークを構成して、パラメータを最適化する。データ出力部５０３は、ニューラルネットワークの出力を、対象装置１０４や他の機器で利用できる情報へ変換し出力する機能ブロックである。データ出力部５０３には、能力部５０２から出力されるデータの仕様、とそれを対象装置１０４が必要とするデータ形式に変換して最終的に出力するデータの仕様などが定義されている。
【００７５】
（トレーニング情報３０４）
図７にトレーニング情報のデータ構造の一例を示す。トレーニング情報３０４は、機械学習の実施に必要な情報を定義するものであり、学習モデル情報７００、対象装置モデル情報７０１、対象モデル情報７０２、学習シミュレータモデル情報７０３、能力付与データ生成モデル情報７０４を含む。以下、それぞれの情報７００〜７０４について説明する。
【００７６】
（１）学習モデル情報７００
学習モデル情報７００は学習モデルに関する情報である。学習モデルは、対象装置１０４に追加する新たな能力を機械学習によって獲得する方法を定式化したモデルである。学習モデルは、扱う対象装置１０４や対象１０５ごとに、それぞれ作成される。ただし、振る舞いが類似する装置１０４や対象１０５については、同じ学習モデルを適用することもできる。学習モデルが扱うことができる対象装置１０４や対象１０５に関する情報は、対応するトレーニング受け付け情報３０３に記述することができる。
【００７７】
学習モデルは、以下の情報を含むとよい。
【００７８】
・「学習の目標」：学習の目標を構成する項目の一部あるいは全部をパラメータ化し、学習目標の条件を指定可能な項目として定義することができる。学習目標の項目としては、例えば、能力部５０２の出力結果の精度や誤差、評価式による評価結果、学習の繰り返し計算の回数、出力の安定性など、どのようなものでもよい。
【００７９】
・「能力部の入力に関する定義」：能力部５０２に入力するデータを対象装置１０４またはその他の外部機器からどのように入力するかを定義する。例えば、対象装置１０４から２種類のセンサデータが入力され、能力部５０２にはそれらの平均データを与える場合であれば、２種類のセンサデータの仕様、平均データを求めるための処理方法、能力部に与えるデータの仕様などを定義する。取り扱うデータには、例えば、画像、音声、自然言語、センサデータなどさまざまな種類のデータがあるが、データの種類や仕様が異なれば、それぞれ異なるモデルが定義される。
【００８０】
・「能力部の構成に関する定義」：能力部５０２の内部構成を定義する。例えばＤｅｅｐ  Ｌｅａｒｎｉｎｇのニューラルネットワークを用いる場合であれば、層数、各層の構造（畳み込み層、プーリング層、全接続層、ノード）、活性化関数、フィルタなどを定義する。対応可能な構成を複数定義し（例えば、層数の範囲、層構造のバリエーションなど）、それらの範囲内で選択可能にしてもよい。
【００８１】
・「能力部の出力に関する定義」：能力部５０２から出力するデータを対象装置１０４またはその他の外部機器へどのような情報として出力するかを定義する。例えば、能力部５０２が予測確率（実数値）を出力する場合に、確率が閾値より大きいか否かの２値の判定結果を対象装置１０４に出力するのであれば、予測確率のデータの仕様、判定結果のデータの仕様、閾値の仕様などを定義する。
【００８２】
・「能力部をトレーニングする方法」：能力部５０２の機械学習に使用する方法、具体的には機械学習を実施するトレーニングプログラムを定義する。ＡＩ技術者が、あらかじめトレーニングプログラムを作成しておくことで、依頼時には自動的にトレーニングを実行できる。例えば、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇのトレーニングプログラムは、ニューラルネットワークの入出力の構成と、ニューラルネットワークの各層の構成と、学習用データなどを指定して作成される。Ｄｅｅｐ  Ｌｅａｒｎｉｎｇのトレーニングプログラムは、学習用データを順次入力して、ニューラルネットワークの各層でのパラメータを最適化することにより、新たな能力を獲得させるものである。トレーニングプログラムは、モデルとして定義することもできる。トレーニングにおいて選択可能な項目をパラメータ化することで、少ないモデルで多くのバリエーションに対応することができる。本実施形態では、依頼者１０１に提示する学習モデルごとに、上記トレーニングプログラムをモデルとして定義する。
【００８３】
以上述べた学習モデルは、モデル記述言語を用いて記述できる。モデル記述言語を用いて学習モデルを記述した場合は、モデル記述言語からシミュレータで実行可能なプログラムに自動変換することができる。モデル記述言語を用いずに、学習モデルをシミュレータで実行可能なプログラムで記述してもよい。
【００８４】
学習モデルには、モデルベースで記述できる任意の方法を適用できる。例えば、Ｄｅｅｐ  ＬｅａｒｎｉｎｇをはじめとしたＡＩ技術をサポートするプログラムがいくつか提供されるようになっている。学習モデルは、それらを利用して構築することもできる。より高度化、高速化するモデルを作成してもよい。トレーニング情報に学習モデルに関する情報を含めることで、学習シミュレータによって新たな能力が獲得できる。
【００８５】
学習サービス提供システム１００は、それぞれの学習モデルごとに、それぞれ能力獲得モデル５００で定義された共通のアーキテクチャで学習シミュレーションを行うことで、能力付与データ１０３を用いて対象装置１０４に学習によって獲得した能力を組み込むことを可能としている。
【００８６】
（２）対象装置モデル情報７０１
対象装置モデル情報７０１は対象装置１０４のモデルに関する情報である。対象装置モデルを用いることで、依頼者１０１の対象装置１０４（実機）を用いなくても、コンピュータシミュレーションにより対象装置１０４の動作や入出力をシステム１００側で模擬することができる。
【００８７】
対象装置モデルは、以下の情報を含むとよい。
【００８８】
・「能力部（能力受容部）の構成」：対象装置１０４が有する能力受容部９０４のハードウェア構成を定義する情報である。例えば、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の型式を指定してもよいし、ゲート数を指定してもよい。あるいは、ソフトウェア実装の場合はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の型式と追加利用可能な記憶容量で指定してもよい。クラウドサービスを利用する場合、クラウドの種類、ＣＰＵ種別、ＣＰＵ数やクロック数、使用する記憶容量で指定してもよい。これらの例に限らず、回路構成の定義はどのような方法で指定してもよい。
【００８９】
・「能力獲得モデルのインタフェース仕様」：対象装置１０４が有するデータ入力部９０３、能力受容部９０４、データ出力部９０５の間の接続方法を定義する。例えば、ＦＰＧＡの場合、各入出力端子の信号に関する定義が含まれる。ソフトウェア実装の場合は、能力受容部９０４のソフトウェアインタフェースの定義が含まれる。クラウドサービスを利用する場合、能力を利用するための通信方法の定義が含まれる。能力獲得モデルのインタフェースとしては、モデルとして定義できる任意のインタフェースが利用できる。
【００９０】
対象装置１０４のデータ入力部９０３、能力受容部９０４、データ出力部９０５は、それぞれハードウェアまたはソフトウェアによって実装される。対象装置１０４のデータ入力部９０３、能力受容部９０４、データ出力部９０５は、それぞれ能力獲得モデル５００のデータ入力部５０１、能力部５０２、データ出力部５０３で定義された仕様に合わせて構成される。
【００９１】
それぞれの学習モデルにおいて、対象装置１０４の能力獲得モデル９０１と学習シミュレータ２０３の能力獲得モデル１００２の間で、インタフェース仕様を整合させる必要がある。学習モデルの能力獲得モデル５００で定義されるデータ入力部５０１、能力部５０２、データ出力部５０３のインタフェース仕様は、対象装置１０４のデータ入力部９０３、能力受容部９０４、データ出力部９０５と整合させるように定義する。能力獲得モデルを整合させることによって、学習シミュレータ２０３で獲得した能力を能力付与データ１０３に変換して、対象装置１０４に組み込むことが可能になる。
【００９２】
・「装置の基本構成のモデル」：対象装置１０４がもともと備えている基本構成９０２（能力獲得モデル５００に対応する構成以外の構成部分）を定義する情報である。能力獲得モデル５００に対応する構成９０１は、対象装置１０４の基本構成９０２との間で信号やデータの入出力を行うため、学習シミュレーションを行う際に対象装置１０４の基本構成９０２の仕様が必要となる。基本構成のモデルには、例えば、対象装置１０４の基本構成９０２と能力獲得モデル９０１により実現される新たな能力とのあいだのインタフェースの定義が含まれる。具体的には、基本構成９０２からデータ入力部９０３に入力される入力信号の定義、データ出力部９０５から基本構成９０２に出力される出力信号の定義、それぞれの信号が対象装置１０４の中でどのように扱われるかの定義などである。
【００９３】
対象装置モデルは、対象装置１０４のインタフェースのみを記述するだけでもよい。対象装置モデルは、トレーニングを開始する前に依頼者１０１やＤＢから取得できた情報をもとに生成できる。
【００９４】
（３）対象モデル情報７０２
対象モデル情報７０２は、対象装置１０４が関係を有する対象１０５のモデルに関する情報である。対象モデルを用いることで、対象装置１０４に影響を与える可能性のある対象１０５（例えば、対象装置１０４の外側にある他の装置や環境や利用者）を考慮したシミュレーションすることが可能になる。
【００９５】
以下に、対象モデル情報７０２の例を示す。
Ｗｅｂサービスの場合、対象モデルは例えばＨＴＭＬ５をサポートするブラウザとしてモデル化できる。さらに、利用者をシミュレートするモデルを加えてもよい。
カーレースゲームの場合、ゲームのルール、レースに用いる車両の仕様、性能やコース仕様、物理現象がモデル化される。何らかの装置やシステム、プラントを制御する場合は、制御対象となる装置についてモデル化したものを、対象モデル情報７０２とする。さらに、対象装置１０４または制御対象となる装置が対応する外界を物理モデルなどでモデル化すれば、外界を含めてシミュレートできる。
【００９６】
対象モデルは、対象１０５と対象装置１０４のインタフェースのみを記述するだけでもよい。対象モデルは、トレーニングを開始する前に依頼者１０１やＤＢから取得できた情報をもとに生成できる。
【００９７】
（４）学習シミュレータモデル情報７０３
学習シミュレータモデルは、本システム１００での学習に用いるシミュレータの構成を定義するモデルである。本実施形態では、学習モデル、対象装置モデル、対象モデルを組み合わせて学習シミュレータが構成される（詳しくは後述する）。
【００９８】
（５）能力付与データ生成モデル情報７０４
能力付与データ生成モデルは、本システム１００における学習結果を基に、対象装置１０４の回路に組み込むための「能力付与データ」１０３を生成する方法などを定義するモデルである。具体的には、学習結果を能力付与データ１０３に変換する変換プログラムを、能力付与データ生成モデルとして準備しておけばよい。
【００９９】
例えば、ＦＰＧＡで実装する場合は、ニューロ回路と入力インタフェース回路と出力インタフェース回路を構成できるようにする。ソフトウェアで実装する場合は、ニューロ回路をエミュレーションするソフトウェアと、学習結果として得られた各パラメータを設定するプログラムを準備する。能力付与データ１０３を用いて、獲得した能力を実装するための回路を部品化して、対象装置１０４の受け入れスロットに当該部品を物理的に挿入するようにしてもよい。
【０１００】
以上述べたトレーニング情報３０４に含まれるそれぞれの情報は、ＡＩ技術者によってあらかじめ値が定義されている定数項目と、値が未定義の状態であるパラメトリック項目とを含む。パラメトリック項目については、学習依頼を受け付ける際に依頼者１０１に情報の入力を求める。依頼者１０１の入力負担を軽減し、学習依頼を簡単化するために、パラメトリック項目はできるだけ少ないことが好ましい。したがって、例えば、学習シミュレータモデル情報７０３や能力付与データ生成モデル情報７０４はあらかじめ定義しておくとよい。また、学習モデル情報７００、対象装置モデル情報７０１、対象モデル情報７０２についても、基本的な項目についてはあらかじめ定義しておき、依頼者１０１に入力させる項目は、能力部５０２の構成と入出力、学習目標など、できるだけ少ない項目に限定することが好ましい。
【０１０１】
（トレーニング受け付け情報３０３）
トレーニング受け付け情報３０３は、依頼者１０１による情報入力を支援するための情報である。学習モデル（トレーニング情報３０４）ごとに必要な情報が異なるため、トレーニング受け付け情報３０３は個々のトレーニング情報３０４に対応してそれぞれ用意される。トレーニング受け付け情報３０３を用いて依頼者１０１にトレーニング情報３０４の各項目の入力を行わせながら学習依頼情報１０２の受け付けを行うことにより、学習のために必要な情報が漏れなく入力されることが担保される。トレーニング受け付け情報３０３には、依頼者１０１からの入力が必要な項目ごとに、依頼者１０１の入力を支援する情報が定義されている。
【０１０２】
図７に、トレーニング受け付け情報３０３の一例を示す。トレーニング受け付け情報３０３は、説明情報７０５、選択受け付け情報７０６、必要入力情報７０７を含む。説明情報７０５は、依頼者１０１に各項目の内容を説明するための情報である。選択受け付け情報７０６は、各項目の入力をメニュー選択によりできるように、各項目の選択肢を定義する情報である。必要入力情報７０７は、依頼者１０１による入力が必要な項目を定義する情報である。このようなトレーニング受け付け情報３０３を用いて、依頼者１０１に必要な情報の入力を求めることができる。
【０１０３】
（依頼受付部２００）
図８を用いて依頼受付部２００の構成について説明する。依頼受付部２００は、依頼者１０１の依頼端末８０５からインターネットを介して学習依頼情報１０２を受け付ける機能を有する。依頼受付部２００は、例えば、依頼受付アプリケーション８０１が動作するＷｅｂサーバ８００、依頼情報ＤＢ８０２、対象装置情報ＤＢ８０３、対象情報ＤＢ８０４などから構成される。
【０１０４】
依頼受付アプリケーション８０１は、学習依頼に必要な情報を入力するための対話型ユーザインタフェースを依頼端末８０５に表示し、依頼者１０１によって入力された情報を取得する機能を提供するプログラムである。依頼情報ＤＢ８０２は、受け付けた学習依頼情報１０２を格納するデータベースである。対象装置情報ＤＢ８０３は、対象装置モデル情報７０１など、依頼者１０１の対象装置１０４に関する情報を格納するデータベースであり、対象情報ＤＢ８０４は、対象モデル情報７０２など、対象１０５に関する情報を格納するデータベースである。
【０１０５】
依頼受付部２００は、トレーニング情報ＤＢ３０２に登録されている複数の学習モデルの中から希望する学習モデルを選択するための学習メニューを依頼者１０１に提示する。依頼者１０１によって希望する学習モデルが指定されると、依頼受付部２００は、指定された学習モデル（機械学習の種類）に対応するトレーニング情報３０４およびトレーニング受け付け情報３０３を用いて、機械学習の実施に必要な情報を受け付け、学習依頼情報１０２を生成する。
【０１０６】
具体的には、依頼受付部２００は、選択された学習モデルに対応するトレーニング受け付け情報３０３をトレーニング情報ＤＢ３０２から読み出し、トレーニング受け付け情報３０３に基づいて必要な情報の入力を依頼者１０１に行わせる。例えば、依頼受付部２００は、必要入力情報７０７で定義された要入力項目について、説明情報７０５で定義された説明文と選択受け付け情報７０６で定義された選択肢を依頼者１０１に提示し、情報の入力（選択）を求める。要入力項目には、例えば、入力データの種類や仕様、学習の目標、出力データの種類や仕様、対象装置または対象装置モデルを特定する情報、対象または対象モデルを特定する情報などがある。すべての要入力項目についてこのような入力処理を繰り返すことにより、依頼者１０１が希望する学習モデルに関して必要な情報が全て入力済みとなる。
【０１０７】
依頼受付部２００は、学習依頼情報１０２を依頼情報ＤＢ８０２に登録する。学習依頼情報１０２には、選択された学習モデルに対応するトレーニング情報３０４を特定する情報、依頼者１０１により入力された情報（例えば、パラメトリック項目の値）などが含まれる。依頼受付部２００は、学習依頼情報１０２の登録完了を学習指令部２０２に通知する。
【０１０８】
なお、依頼受付部２００は、システム記述言語などを用いて学習に必要な情報を記述した依頼ファイルを依頼端末８０５から受け取ることもできる。例えば依頼者１０１が希望する学習モデルが学習メニューの中に無い場合、依頼者１０１は希望する学習内容を記述した依頼ファイルを作成し、学習依頼を行うことができる。依頼ファイルによる学習依頼を受け付けた場合には、ＡＩ技術者が依頼ファイルに基づき新たな学習モデルを作成して、学習メニューに追加する。
【０１０９】
本実施形態では、トレーニング受け付け情報３０３を用いて学習依頼の受け付けを行う構成を採用している。このような構成ではなく、個々の学習モデルごとに、必要な情報を依頼者１０１から受け取るための個別の依頼受付プログラムを用意し、依頼者１０１によって選択された学習モデルに応じた依頼受付プログラムに切り替えて学習依頼の受け付けを行ってもよい。
【０１１０】
（対象装置１０４）
依頼者１０１は、能力を付与する対象となる対象装置１０４を指定して、学習を依頼する。能力獲得モデル５００に従った新たな能力の追加が可能な装置であれば、どのような装置も対象装置１０４になり得る。一例を挙げると、静止画像を分類する画像分類装置、センサデータにより監視を行う監視装置、動画像を用いて対象の動きを予測する予測システム、Ｗｅｂサービスシステム、運転装置などを例示できる。
【０１１１】
図９に対象装置の構成を模式的に示す。対象装置１０４は、概略、能力設定部９００と、能力獲得モデル５００に対応する構成９０１と、対象装置１０４にもともと備わっている基本構成９０２とを有する。能力獲得モデル５００に対応する構成９０１は、データ入力部９０３、能力受容部９０４、データ出力部９０５から構成される。能力設定部９００は、本システム１００から提供される能力付与データ１０３を用いて、能力受容部９０４が新たな能力を発揮できるように能力獲得モデル５００に対応する構成９０１を設定する機能である。
【０１１２】
能力獲得モデル５００に対応する構成９０１は、機能を変更可能なハードウェアにより構成される。例えば、ＦＰＧＡのプログラムを書き換える構成でもよい。また、ＣＰＵやＧＰＵのようなプロセッサで実行するプログラムを変更したり、プログラムで使用するパラメータを変更したりする構成でもよい。例えば、ニューラルネットワークのエミュレーションを行うプログラムに対し、パラメータを変更することで、ニューラルネットワークの機能を変更できる。あるいは、部品の一部や接続する装置を交換することで機能を変更する構成でもよい。
【０１１３】
能力付与データ１０３は、例えば、「能力設定データ」と「入力設定データ」と「出力設定データ」とを含む。能力設定データは、学習により獲得された新たな能力（例えば、ニューラルネットワークによる画像の分類能力）を実行する機能を、能力受容部９０４に対し設定するためのデータである。入力設定データは、能力受容部９０４へのデータ入力のインタフェースに関する機能を、データ入力部９０３に対し設定するためのデータである。データ入力のインタフェースに関する機能には、例えば、対象装置１０４の基本構成９０２から必要なデータをデータ入力部９０３に取り込む機能、対象装置１０４以外のデバイス（例えばセンサなど）から必要なデータをデータ入力部９０３に取り込む機能、取り込んだデータに対し必要な加工（例えば、平均化、統合、サンプリング、ノイズ除去、特徴量抽出、二値化、色変換、解像度変換など）を施す機能、能力受容部９０４に適合するようにデータ形式を変換する機能、などがある。また、出力設定データは、能力受容部９０４からのデータ出力のインタフェースに関する機能を、データ出力部９０５に対し設定するためのデータである。データ出力のインタフェースに関する機能には、例えば、能力受容部９０４から出力されるデータに対し必要な加工（例えば、平均化、統合、サンプリング、ノイズ除去、特徴量抽出、二値化、色変換、解像度変換など）を施す機能、対象装置１０４の基本構成９０２に適合するようにデータ形式を変換する機能、などがある。能力設定データ、入力設定データ、出力設定データは、プログラムそのものでもよいし、プログラムで使用するパラメータでもよいし、プログラムとパラメータの両方でもよい。能力設定部９００が、能力付与データ１０３により与えられた各設定データにより能力獲得モデル５００に対応する構成９０１の設定を行うことで、データ入力部９０３、能力受容部９０４、およびデータ出力９０５が新たな能力に対応する情報処理を実行可能となる。
【０１１４】
設定済みのデータ入力部９０３は、対象装置１０４の基本構成９０２からデータを取得し、必要な加工を行い、能力受容部９０４に適合するようにデータ形式を変換してデータを入力する。入力データとしては、例えば、カメラデータ、センサデータ、イベントデータが入力される。自然言語処理では、入力データとして、多数のテキストファイルが入力される。
【０１１５】
設定済みのデータ出力部９０５は、能力受容部９０４から出力されるデータに必要な加工を行い、対象装置１０４の基本構成９０２に適合するようにデータ形式を変換してデータを出力する。例えば、能力受容部９０４に組み込まれたニューラルネットワークの出力が、データ出力部９０５に入力され、データ出力部９０５から基本構成９０２にデータが出力される。
【０１１６】
能力受容部９０４について、具体例を挙げてさらに詳しく説明する。能力受容部９０４は、例えば、外部から入力された能力付与データ１０３にもとづいて、ニューラルネットワークを構成することで、新たな能力を受容する。能力受容部９０４と能力付与データ１０３は例えば以下のように実現できる。
【０１１７】
・書き換え可能なＦＰＧＡ。この場合、例えば、ＦＰＧＡに書き込むニューラルネットワークの回路とパラメータのデータを能力付与データとする。
・能力をＣＰＵのプログラムとして実装する。この場合、例えば、ニューラルネットワーク回路の動作を演算する実行形式のＣＰＵプログラムを能力付与データとする。
・能力をＧＰＵのプログラムとして実装する。この場合、例えば、ニューラルネットワーク回路の動作を演算する実行形式のＧＰＵプログラムを能力付与データとする。
・能力を部品として追加する。この場合、例えば、書き換え可能なＦＰＧＡにニューラルネットワークを書き込んだものを、能力付与データを含む部品とする。
・能力をクラウドサービスとして利用する。この場合、例えば、上記のいずれかを組み込んだネットワークサービスの利用プログラムを能力付与データとする。
・対象装置以外の装置が外部で提供する能力を利用する。この場合、上記のいずれかを組み込んだ装置を利用するためのプログラムを能力付与データとする。
・能力を装置として追加する。この場合、例えば、上記のいずれかを組み込んだ装置を利用するプログラムを能力付与データとする。
【０１１８】
（対象装置モデル）
対象装置１０４がいかなる種類の装置であっても、図９に示すように、能力獲得モデル５００に対応する構成９０１と、対象装置１０４にもともと備わっている基本構成９０２との組み合わせでモデル化することができる。基本構成９０２に対応する基本構成モデルと能力獲得モデル５００を組み合わせると、新たな能力を獲得した後の対象装置１０４のモデルとなる。この対象装置モデルと、対象装置１０４の外部にある対象１０５をモデル化した対象モデルとを用いれば、コンピュータ上で、対象装置１０４の動作をシミュレーションすることができる。基本構成モデルは、必ずしも対象装置１０４が備える全ての構成をモデル化する必要はない。少なくとも、能力獲得モデル５００と相互に影響する部分の構成が基本構成モデルにより定義されていればよい。
【０１１９】
この実施例では、対象装置１０４が１つの能力獲得モデルを含む構成について示したが、複数の能力獲得モデルを含む構成にしてもよい。複数の能力獲得モデルを備えることで、複数の項目について能力を獲得することが可能になる。以上の実施例では、対象装置１０４と学習サービス提供システム１００が異なる装置として実施された例を示したが、対象装置１０４が学習サービス提供システム１００の一部または全部を含む構成とすることができる。それによって、対象装置１０４は自己学習能力を備えた製品となる。例えば、学習能力を備えた本発明による人型ロボットが、人から学習依頼を受けて学習を行って、自分と同じ構成の自分以外の他のロボットに能力付与データを与えるようにできる。
【０１２０】
本システム１００のサービスは、対象装置モデルおよび対象モデルが提供されれば、どのような種類の対象装置１０４にも対応することができる。なお、これらのモデルは依頼者１０１自身が作成し提供してもよいし、依頼者１０１以外の者が作成し提供してもよい。例えば、依頼者１０１に部品や製品を提供する業者がモデルを提供してもよいし、本システム１００のサービス提供者がモデルを提供してもよい。また、対象装置モデルや対象モデルが既に本システム１００の対象装置情報ＤＢ８０３や対象情報ＤＢ８０４に登録されているときは、依頼者１０１はそれらのＤＢに登録されているモデルを利用することもできる。その場合、学習依頼を受け付ける際に、対象装置１０４を特定する情報（装置の型式など）または対象装置モデルを特定する情報（モデルＩＤなど）の入力を依頼者１０１に求めればよい。対象モデルについても同様である。
【０１２１】
（学習シミュレータ２０３）
図１０に学習指令部２０２と学習シミュレータ２０３の詳細構成を示す。
【０１２２】
学習シミュレータ２０３は、対象装置１０４の基本構成モデル１００６と能力獲得モデル１００２と対象モデル１００７を用いて、対象装置１０４の動作をシミュレートしながら対象装置１０４に追加する新たな能力の機械学習を実施する。能力獲得モデル１００２は、データ入力部１００３、能力部（能力獲得部）１００４、データ出力部１００５を有する。
【０１２３】
能力獲得部１００４は、依頼者１０１の対象装置１０４に組み込まれて能力を遂行する部分をシミュレートする。学習を行うとき、能力獲得部１００４の回路構成は、適宜変更することができる。能力獲得部１００４は、例えばＤｅｅｐ  Ｌｅａｒｎｉｎｇのニューラルネットワークで実現できる。ニューラルネットワークの層数や各層の構成については、学習モデル情報７００に基づき設定される。
【０１２４】
データ入力部１００３は、能力獲得モデル１００２の外部からデータを受け取り、必要な処理を行った後、能力獲得部１００４にデータを入力する、という動作をシミュレートする。データ入力部１００３は、対象装置１０４の基本構成９０２からデータを受け取ることもできるし、対象装置１０４の外部からデータを受け取ることもできる。対象装置１０４の外部からデータを受け取る形態としては、例えば、対象装置１０４に接続されたセンサからセンサデータを取得する形態、データベースからデータを取得する形態、ネットワークを通じてデータストリームを受信する形態などが想定される。
【０１２５】
データ出力部１００５は、能力獲得部１００４からデータを受け取り、必要な処理を行った後、能力獲得モデル１００２の外部にデータを出力する、という動作をシミュレートする。データ出力部１００５は、例えば、能力獲得部１００４のニューラルネットワークの出力を、対象装置１０４の基本構成９０２あるいは対象装置１０４の外部の装置が必要とするデータ形式に変換する。
【０１２６】
基本構成モデル１００６は、対象装置１０４の基本構成９０２の動作をシミュレートする。能力獲得部１００４が対象装置１０４の基本構成９０２と相互に影響する場合、データ入力部１００３は基本構成モデル１００６から必要なデータを取得し、データ出力部１００５は能力獲得部１００４の出力を基本構成モデル１００６へ引き渡す。
【０１２７】
対象モデル１００７は、対象装置１０４の外部の対象１０５をシミュレートする。例えば、対象モデル１００７は、対象装置１０４が接続される他の装置、対象装置１０４の周囲の環境（物理現象を含む）、対象装置１０４が取り扱う器具、対象装置１０４が生産・加工する物体、対象装置１０４を操作するオペレータなどをシミュレートする。
【０１２８】
図１１に学習シミュレータ２０３の構成例を示す。学習シミュレータ２０３には多くの計算資源が必要となるため、図１１の例では、学習指令部２０２を実装する学習管理サーバ１１００と、学習シミュレータ２０３を実装するハードウェア資源とを別々にしている。
【０１２９】
例えば、インターネット上に設置されるクラウドサーバ群１１０１により学習シミュレータ２０３を構成することができる。この場合、学習指令部２０２は、ゲートウェイ１１０２を介して各クラウドサーバに対し必要な設定情報と処理タスクを送信して、学習シミュレーションを実行させ、その結果を受け取る。あるいは、ローカルエリアネットワーク上に存在するプライベートサーバ群１１０３により学習シミュレータ２０３を構成してもよい。サーバ群１１０１、１１０３を利用する場合、能力獲得モデル１００２、基本構成モデル１００６、対象モデル１００７のシミュレーション処理をそれぞれ個別のサーバで実行してもよい。各モデル１００２、１００６、１００７のシミュレーション処理をさらに複数のサーバで分散処理してもよい。これによりシミュレーションの高速化が図られる。
【０１３０】
シミュレーション処理を高速化するため、組込シミュレータ１１０４のような専用システムを用いてもよい。ソフトウェア処理の一部をハードウェアに置き換えた構成としてもよい。学習モデルごとに、例えばデータ量が多い依頼や、階層数が多い構成、学習にリアルタイム性が求められる構成など、シミュレーションを実施する装置として最適なものを選択するようにできる。
【０１３１】
シミュレーションは、例えば、多数のＣＰＵによる分散処理を利用する方法、ＧＰＵと呼ばれる高速演算装置を利用する方法などで高速化できる。またＦＰＧＡなどでニューロ回路を構成することで、並列動作が行われ、シミュレーションを高速化することができる。このような高速化の方法を学習シミュレータモデルに含めることができる。
【０１３２】
シミュレータを実機（依頼者１０１の対象装置１０４）に接続した構成にすることができる。例えば、依頼者１０１の対象装置１０４をシミュレータ（シミュレータを実行するコンピュータ）に接続してもよい。あるいは依頼者１０１の対象装置１０４が有する回路（ＣＰＵ、ＧＰＵ、ＦＰＧＡなど）でシミュレーションを実行するようにできる。ＩｏＴの技術を適用することで、リアルタイムのビッグデータを扱うことが可能になる。この技術を利用し、依頼者１０１の対象装置１０４に関する各種データをインターネットを介してリアルタイムにシミュレータに送り、そのデータを用いてシミュレーションを行うこともできる。あるいは、シミュレータが対象装置１０４のモデルに相当する機能を備えるようにしてもよい。
【０１３３】
サービスを提供する装置をシミュレータとして利用してもよい。例えば、自然言語処理によるＷｅｂサービスの場合、クラウド上のサーバ資源を使って、Ｗｅｂサービスと学習サービスの双方を実施することができる。
【０１３４】
（学習指令部２０２）
学習指令部２０２は、トレーニングの設定および制御を担う処理部であり、図１０に示すように、トレーニング設定部１０００とトレーニング制御部１００１を有する。トレーニング設定部１０００は、依頼者１０１から受け付けた学習依頼情報１０２および対応するトレーニング情報３０４に基づいて、学習シミュレータ２０３に対しトレーニングに必要な設定を行う。トレーニング制御部１００１は、学習シミュレータ２０３を制御してトレーニングを実施し、対象装置１０４に追加する能力を開発（学習により生成）する。
【０１３５】
具体的には、トレーニング設定部１０００は、学習モデル情報７００に基づき、学習の目標、データ入力部１００３およびデータ出力部１００５の入出力データの仕様や処理内容、能力獲得部１００４の内部構成、トレーニングプログラムなどを設定する。また、トレーニング設定部１０００は、対象装置モデル情報７０１に基づき、対象装置１０４の基本構成モデル１００６、能力獲得モデル１００２との間の入出力などを設定し、さらに、対象モデル情報７０２に基づき、対象モデル１００７を設定する。
【０１３６】
（能力付与データ生成部２０４）
能力付与データ生成部２０４は、学習シミュレータ２０３の学習結果（トレーニングによって獲得した能力）を、対象装置１０４の能力受容部９０４に組み込むためのデータ（能力付与データ１０３）に変換する。学習結果から能力付与データ１０３を生成する変換プログラムは、あらかじめ能力付与データ生成モデル情報７０４により与えられる。この変換プログラムにより、対象装置１０４が有するハードウェア構成（例えば、ＦＰＧＡ、ＣＰＵ、ＧＰＵなどの回路構成）に適合する能力付与データ１０３（例えば、プログラム、プログラムで使用するパラメータ）が生成される。能力付与データ１０３は前述のように能力設定データ、入力設定データ、出力設定データを含むとよい。
【０１３７】
（サービス提供部２０５）
サービス提供部２０５は、能力付与データ生成部２０４によって生成された能力付与データ１０３を依頼者１０１に提供する。提供方法はいかなる方法でもよい。例えば、サービス提供部２０５は、電子的手段（例えば、電子メール、ＦＴＰ、ファイルサーバからのダウンロードなど）を利用して能力付与データ１０３を依頼者１０１に送信してもよい。また、サービス提供部２０５は、能力付与データ１０３をＤＶＤ−ＲＯＭのような記録媒体に記録し、依頼者１０１に送付してもよい。また、サービス提供部２０５は、ネットワークを介して、能力付与データ１０３を依頼者１０１の対象装置１０４に直接送信してもよい。能力付与データ１０３は、対象装置１０４で実行可能なプログラムとして提供されてもよいし、クラウド上で実行されるプログラムやクラウドから提供されるサービスとして提供されてもよい。また、能力付与データ１０３を複数の装置を組み合わせたＩｏＴサービスの形態で提供してもよい。また、能力付与データ１０３を半導体部品に組み込んだり、対象装置１０４に組み込み可能な部品に実装してもよい。あるいは、サービスマンが依頼者１０１のところに出向き、対象装置１０４に能力付与データ１０３を実装してもよい。また、対象装置１０４を依頼者１０１から預かり、能力付与データ１０３を組み込んだ後、対象装置１０４を返却してもよい。
【０１３８】
（システムの動作）
図１２に学習サービス提供システム１００における学習依頼の受け付けから能力付与データの提供までの処理フローを示す。
【０１３９】
依頼者１０１がインターネットを介して本システム１００にアクセスし新規の学習依頼を申し込むと、依頼受付部２００が学習依頼の受け付けを開始する（ステップＳ１２００）。依頼受付部２００は、依頼入力画面を依頼者１０１の端末８０５に提示し、希望する学習モデルおよび学習に必要な情報を依頼者１０１に入力させる（ステップＳ１２０１）。このとき、トレーニング受け付け情報３０３に従って依頼者１０１に情報入力を行わせることで、学習に必要な情報を漏れなく入力させることができる。学習依頼情報の入力が完了すると（ステップＳ１２０２のＹＥＳ）、依頼受付部２００が学習依頼情報１０２を依頼情報ＤＢ８０２に登録し、学習指令部２０２に新規の学習依頼を受け付けた旨を通知する（ステップＳ１２０３）。
【０１４０】
図１３に学習依頼情報１０２のデータ構造の一例を示す。学習依頼情報１０２は、学習目標情報１３００と学習モデル識別情報１３０１と学習モデルパラメータ１３０２を含む。学習目標情報１３００は、依頼者１０１により指定された学習目標に関する情報を含む。学習モデル識別情報１３０１は、依頼者１０１により指定された学習モデルに対応するトレーニング情報３０４を特定する情報（例えば、トレーニング情報ＤＢ３０２におけるトレーニング情報３０４のＩＤなど）を含む。学習モデルパラメータ１３０２は、学習モデルの各パラメトリック項目について依頼者１０１により入力された情報を含む。
【０１４１】
次に、学習指令部２０２は、学習依頼情報１０２に従って学習シミュレータ２０３に対し学習モデル、対象装置モデル、対象モデルなどの設定を行い（ステップＳ１２０４）、学習シミュレータ２０３を制御してトレーニングを実施する（ステップＳ１２０５）。例えば、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇなどのニューラルネットワークの場合であれば、複数の層のそれぞれについて段階的にパラメータを変えながら出力を評価し、学習目標との適合度が高くなるようにパラメータの最適化を行う。学習目標に対する適合度があらかじめ設定された完了条件を満足したら（ステップＳ１２０６のＹＥＳ）、学習指令部２０２はトレーニングを終了する。
【０１４２】
次に、能力付与データ生成部２０４は、学習シミュレータ２０３の学習結果（トレーニングによって獲得した能力）に基づき能力付与データ１０３を生成する（ステップＳ２１０７）。最後に、サービス提供部２０５が、能力付与データ１０３を依頼者１０１に提供する（ステップＳ１２０８）。
【０１４３】
（依頼入力画面の例）
図１４Ａ〜図１４Ｃ、図１５Ａ〜図１５Ｅ、図１６Ａ〜図１６Ｂに依頼入力画面の一例を示す。
【０１４４】
図１４Ａは依頼するときに入力する項目の一覧を示す画面である。この例では、「１  
依頼の種類」、「２  入力情報」、「３  学習の目標」、「４  対象装置情報」の４つの項目の入力を求めている。図１４Ｂは、図１４Ａで「１  依頼の種類」が選択されたときに表示される画面であり、依頼の種類を指定する画面である。図１４Ｃは、入力情報の種類を指定する画面である。入力情報の選択肢は、図１４Ｂで指定された依頼の種類に応じて適宜設定される。図１４Ｃの例は、「分類能力を学習する」が選択された後に表示される入力情報の指定画面である。この例では、「時系列センサ情報」、「カメラ画像」、「文字列ファイル」、「入力情報を記述したファイルのアップロード」のいずれかが選択可能である。図１４Ｄは、図１４Ｃで「時系列センサ情報」が選択された後に表示される学習目標の指定画面である。この例では、時系列センサ情報を分類する能力に対する学習目標の指定方法として、「分類するグループ数を指定する」、「判定適合度をプログラムで指定する」、「分類の要件を指定したファイルをアップロードする」のいずれかが選択可能である。
【０１４５】
図１５Ａは、図１４Ｂで「操作能力を学習する」が選択された場合の学習目標の指定画面の例である。操作対象の指定方法と学習目標の指定方法を求めている。同様に、図１５Ｂは、図１４Ｂで「フィルタリング能力を学習する」が選択された場合の学習目標の指定画面の例であり、図１５Ｃは、図１４Ｂで「情報生成能力を学習する」が選択された場合の学習目標の指定画面の例であり、図１５Ｄは、図１４Ｂで「業務遂行能力を学習する」が選択された場合の学習目標の指定画面の例である。
【０１４６】
図１６Ａは、対象装置情報の入力画面の例である。対象装置情報の入力画面では、対象装置モデルと対象モデルの作成または指定に必要な情報が入力される。この例では、「部品ＩＤで指定」、「装置ＩＤで指定」、「仕様記述ファイルで指定」のいずれかが選択可能である。図１６Ｂは、図１６Ａで「部品ＩＤで指定」が選択された後に表示される部品ＩＤの指定画面の例である。例えば、対象装置１０４の能力受容部９０４がＦＰＧＡで構成される場合には、部品ＩＤとしてＦＰＧＡの型式を指定すればよい。あるいは、対象装置１０４の型式などを装置ＩＤとして指定したり、対象装置１０４のモデル情報を含むファイルを仕様記述ファイルとして指定してもよい。あるいは、対象装置情報ＤＢ８０３に登録されている対象装置モデルを識別するモデルＩＤを指定してもよい。対象１０５および対象モデルの指定方法についても同様である。
【０１４７】
＜適用例＞
以下に、いくつかの学習モデルについて具体的な事例を示す。
【０１４８】
（１）画像を扱う装置
画像をＤｅｅｐ  Ｌｅａｒｎｉｎｇで扱うとき、各層の構成は相違するが、全体のニューラルネットワークの構成は類似している。画像の場合、例えば畳み込みニューラルネットワーク（ＣＮＮ；Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）が用いられる。ニューラルネットワークの構成については従来から多くの研究がなされており、扱う対象ごとに適切な構成があることが知られている。よって、学習依頼を受け付けるときに、画像の種類、画像の仕様、画像から識別すべき情報などに応じて、適切な構成が選ばれるように受け付けを行うとよい。それぞれ、学習モデルが異なるため、個別に学習モデルを作成しておく。
【０１４９】
例えば、静止画像を分類する能力に関する学習モデルの場合、以下のような情報が学習モデルに含まれる。
・入力：種類＝静止画像、１２８０×１２８０画素、ＲＧＢ
・出力：画像の分類結果（１００分類）
・学習データ：教師ありサンプルデータ
・獲得する能力：画像を分類する能力
・能力部の構成：層数＝１０、層構造（畳み込み層、プーリング層）、活性化関数
・学習の目標：識別正解率＞９８％
・トレーニング方法：トレーニングプログラムＡ
・・・
【０１５０】
また、動画像を用いて動きを予測する能力に関する学習モデルの場合、以下のような情報が学習モデルに含まれる。
・入力：動画像、１９２０×８００画素、ＲＧＢ、６０ｆｐｓ、カメラのＵＲＬ
・出力：識別対象ごとの動きの予測結果
・獲得する能力：動画像内の識別対象の動きの予測
・能力部の構成：層数＝１３、層構造（畳み込み層、プーリング層）、活性化関数
・学習の目標：評価関数の値＜０．１
・トレーニング方法：トレーニングプログラムＢ
・・・
【０１５１】
（２）音声を扱う装置
音声をＤｅｅｐ  Ｌｅａｒｎｉｎｇで扱うときは、例えば時系列のデータを扱えるリカレントニューラルネットワーク（ＲＮＮ；Ｒｅｃｕｒｒｅｎｔ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）が利用できる。音声に関する能力としては、音声認識、話者の識別、話者の属性分析（性別、年齢、国籍、人種などの推定）、話者の感情分析、音声データを用いる監視装置などがある。例えば、話者の識別の能力を学習する場合、多数の話者について教師データおよびテストデータとなる発声サンプルをデータベースに格納し、教師データと一致するときにペナルティを少なく、教師データと不一致の場合にペナルティを大きくして、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇによる学習を行えばよい。
【０１５２】
（３）自然言語を扱う装置  自然言語を扱う装置について学習モデルを作成することで、Ｗｅｂサービスに活用でき
る能力を獲得できる。自然言語を扱うときは、文字列にエンコードされたデータが入力となる。自然言語をＤｅｅｐ  Ｌｅａｒｎｉｎｇで扱うときは、例えばＲＮＮが利用できる。あるいはＷｏｒｄ  Ｖｅｃｔｏｒを利用するようにできる。エンコードされたデータを入力として、出力を最適化することで、新たな能力が獲得できる。自然言語に関する能力としては、例えば、文章の翻訳、要約の生成、トピックの抽出、文章の分類、作者または作者の属性の推定、文章の注目度の予測などがある。
【０１５３】
（４）センサデータを扱う装置
センサデータに基づいて分析、特徴抽出、変化点検出、異常検出、予測、監視などを行う能力を学習により獲得することができる。例えば、センサ群から得られる複数のセンサデータを用いて監視を行う能力の場合、入力は複数のセンサデータであり、出力は監視結果（異常の有無、異常の種類など）である。センサデータが時系列データの場合、ＲＮＮが利用できる。
【０１５４】
（５）運転装置
運転装置の学習モデルでは、例えばセンサ入力に対して、アクチュエータ出力を行う。センサ入力が、能力獲得モデルの入力となり、アクチュエータ出力が能力獲得モデルの出力となる。センサ入力に対する、アクチュエータ出力を最適化することで、運転能力が獲得できる。この場合、対象装置モデルとして運転装置の情報を設定し、対象モデルとして運転対象機械の情報を設定する。モデルさえ定義すればどのような種類の機械も運転対象機械になり得る。例えば、組み立て装置、ゲーム機のコンピュータ側プレイヤー、乗り物、プラント、工作機械、建設装置、農業機械、漁業機械、コンピュータなどが例示できる。学習シミュレーションにおいて、運転対象機械の実機を用いてもよい。
【０１５５】
運転装置の一例として、カーレースゲームのコンピュータ側プレイヤーの能力を獲得する学習モデルを説明する。例えば、Ｑ  ＬｅａｒｎｉｎｇにＤｅｅｐ  Ｌｅａｒｎｉｎｇを適用したＤＱＮ（Ｄｅｅｐ  Ｑ  Ｌｅａｒｎｉｎｇ）によって能力を獲得することができる。学習により獲得する能力は、自車の周囲の状況に応じて、ステアリング、アクセル、ブレーキを操作する能力である。能力獲得部への入力として、自車の状況（自車のコース上の位置、進行方向、速度、周囲の道路状態、周囲にいる他車の位置、進行方向、速度など）を入力する。能力獲得部からの出力は、ステアリングの舵角、アクセル量、ブレーキ量である。対象装置モデルとして、カーレースの参加車両の物理モデルを設定し、対象モデルとして、カーレースゲームのモデルを設定する。モデルは、ゲームのルール、コース情報、車両の走行環境であるコースの物理モデルを含む。学習シミュレーションは、カーレースの参加車両のモデルと、カーレースゲームのモデルを組み合わせて行う。
【０１５６】
学習は、段階的に行う。最初は、自車のみを用いてステアリング、アクセル、ブレーキを操作することで、所定の方向に運転することについて学習させる。所定の方向に運転できるようになったら、コースをより短い時間で周回できるように、学習させる。コースを短い時間で周回できるようになったら、複数の同一車両で学習させる。さらに、性能の異なる複数の車両に対して、それぞれ異なるプレイヤーとして学習させる。上記学習の過程で、学習した状態のプレイヤーを、取得したスコアで分類して、データベースに登録する。これによって、コンピュータ側プレイヤーのレベルを設定できるようになる。学習の結果、性能の異なる車両に対して、さまざまなレベルのプレイヤーがデータベースに登録される。
【０１５７】
この例では、カーレースゲームの例を示したが、実車と道路のモデルを精密に作成することで、実車を走行させる能力を獲得するようにもできる。能力獲得モデルの入力と出力を規格化することで、さまざまな対象装置を運転する汎用的な制御装置の制御能力を獲得することもできる。
【０１５８】
（６）業務遂行装置
業務をモデルとして記述することで、業務を遂行する能力を獲得することもできる。学習モデルは、モデル化された業務を最適化するモデルとして作成できる。業務を遂行する能力として、例えば、予算の最適活用、生産計画の最適化、対人応対業務、輸送業務の最適化、健康増進アドバイス業務の最適化、投資判断業務などの能力を獲得することができる。
【０１５９】
業務遂行装置の場合、業務と業務の対象をモデル化することで、学習による新たな能力の獲得が可能となる。業務は業務入力に対して業務出力を行う装置としてモデル化できる。業務入力と業務出力が、それぞれ能力獲得モデルの入力と出力となる。例えば、輸送業務の場合、過去の輸送実績データと当該データごとの周囲環境情報を用いて、輸送計画策定能力を獲得することができる。この場合、入力は輸送依頼と周囲環境情報、車両情報を含む。出力は輸送計画となる。例えば、対人応対業務の場合、応対する内容をモデル化することで、新たな能力を獲得できる。この場合、入力はそれぞれの業務に関連する情報と、応対する相手の人から得られる情報を含む。出力は、応対行動となる。例えば、文字列の出力、ＧＵＩ（グラフィカルユーザインタフェース）による応対、アバターによる応対、人型ロボットによる応対が可能である。
【０１６０】
＜本システムの利点＞
依頼者１０１にとっては次のような利点がある。まず、このシステム１００を利用すれば、依頼者１０１自身は機械学習を実施する必要がないので、対象装置１０４に新たな能力を追加するための開発業務を効率化することができる。また、依頼者１０１は機械学習に必要な情報を与えるだけでよいので、機械学習に関する知識やシステムをもたない者でも本システム１００の利用が容易である。また、学習結果が能力付与データ１０３（新たな能力を対象装置１０４に追加するデータ）で提供されるので、依頼者１０１は、機械学習により獲得された新たな能力を自身の装置１０４に簡単に追加することができる。
【０１６１】
一方、サービス提供者にとっては次のような利点がある。機械学習を行うために必要な情報は依頼者１０１から提供されるので、依頼どおりの機械学習の実行が担保できる。また、依頼者１０１からの依頼の受け付け、機械学習の実施などの処理を可及的に自動化・省力化できる。さらに学習結果を能力付与データ１０３に変換し依頼者１０１に提供するので、学習結果の提供および対象装置１０４への実装についても可及的に自動化・省力化することができる。
【０１６２】
また、機械学習の過程で対象装置モデルや対象モデルを用いたシミュレーションを行うことにより、対象装置１０４の実機がなくても、対象装置１０４や対象１０５の振る舞いや影響などを考慮した機械学習を行うことができる。対象装置１０４の実機が不要となれば、機械学習の代行がきわめて実現容易となる。特に、生産設備のように大型の装置や稼働中の装置の場合、実機を機械学習に利用することは現実的でない。本学習サービスはそのようなケースでも利用可能であり、適用の自由度および利便性に優れる。
【０１６３】
また、依頼受付部２００の対話的なユーザインタフェースを利用することで、依頼者１０１が自身の装置１０４に追加したい能力の学習依頼をサービス提供者に対し簡単に依頼することができる。また、サービス提供者にとっても、機械学習を行うために必要な情報を漏れなく取得できるという利点がある。
【０１６４】
また、本システム１００では、トレーニング情報３０４のうちの一部の項目をパラメトリック項目とし、依頼者１０１に情報を入力させるようにしたので、依頼者１０１の希望に応じた機械学習を行うことができる。ここで、パラメトリック項目をトレーニング情報３０４のうちの一部に限定することで依頼者１０１の入力負担を軽減し、学習依頼の容易さと学習のカスタマイズ性の両立を図っている。さらに、依頼者１０１による情報入力を選択肢のなかから選択させる形式で行わせることで、依頼者１０１の入力負担を軽減している。
【０１６５】
なお、上述した実施形態の構成は本発明の一具体例を示したものにすぎず、本発明の範囲を限定する趣旨のものではない。本発明はその技術思想を逸脱しない範囲において、種々の具体的構成を採り得るものである。例えば上記実施形態で示したシステム構成、データ構造、ユーザインタフェース、パラメータ等は一例であり、機械学習の種類、学習の目的、獲得したい能力、対象装置の構成等に応じて適宜変更することができる。
【０１６６】
（付記１）
少なくとも１つのメモリと、前記メモリと接続された少なくとも１つのハードウェアプロセッサとを備え、
前記ハードウェアプロセッサが、
対象装置に追加する能力の機械学習を行うために必要な情報を、学習依頼情報として、
依頼者から受け付け、
前記依頼者から受け付けた前記学習依頼情報にしたがって機械学習を行い、
前記機械学習による学習結果に基づいて、前記学習結果として獲得された新たな能力を前記対象装置に追加するデータである能力付与データを生成し、
前記能力付与データを前記依頼者に提供する、
学習サービス提供装置。
【０１６７】
（付記２）
少なくとも１つのメモリと、前記メモリと接続された少なくとも１つのハードウェアプロセッサとを備えるコンピュータが、
対象装置に追加する能力の機械学習を行うために必要な情報を、学習依頼情報として、依頼者から受け付けるステップ、
前記依頼者から受け付けた前記学習依頼情報にしたがって機械学習を行うステップ、
前記機械学習による学習結果に基づいて、前記学習結果として獲得された新たな能力を前記対象装置に追加するデータである能力付与データを生成するステップ、及び
前記能力付与データを前記依頼者に提供するステップ、
を実行する学習サービス提供方法。
【図１】
2017159614.tif 000003
【図２】
2017159614.tif 000004
【図３】
2017159614.tif 000005
【図４】
2017159614.tif 000006
【図５】
2017159614.tif 000007
【図６】
2017159614.tif 000008
【図７】
2017159614.tif 000009
【図８】
2017159614.tif 000010
【図９】
2017159614.tif 000011
【図１０】
2017159614.tif 000012
【図１１】
2017159614.tif 000013
【図１２】
2017159614.tif 000014
【図１３】
2017159614.tif 000015
【図１４】
2017159614.tif 000016
【図１５】
2017159614.tif 000017
【図１６】
2017159614.tif 000018
【国際調査報告】
2017159614.tif 000019
2017159614.tif 000020
2017159614.tif 000021
2017159614.tif 000022