(58)【調査した分野】(Int.Cl.,DB名)
自装置の基本構成に追加的に新たな能力を組み込むためのアーキテクチャとして、能力を実行する能力部、前記能力部の入力のインタフェースであるデータ入力部、および、前記能力部の出力のインタフェースであるデータ出力部を含む能力獲得モデルによりモデル化されるアーキテクチャと、
能力設定データ、入力設定データ、および出力設定データを含む能力付与データに基づいて、前記能力部、前記データ入力部、および前記データ出力部のそれぞれに機能を設定することにより、自装置に新たな能力を追加する能力設定部と、
を有することを特徴とする拡張性保有装置。
前記シーケンス制御部は、前記検査対象を検出するセンサから出力される検出信号を受信した場合に、前記画像入力部が所定時間後の前記画像データを保持するように、前記画像入力部に対し制御信号を出力する
ことを特徴とする請求項4に記載の拡張性保有装置。
前記動作確認用データは、1つ以上の入力データと、前記入力データを前記データ入力部に入力したときに前記能力部での処理を経て前記データ出力部から出力されるべきデータであるかを判定するための判定情報と、を含み、
前記能力設定部は、前記入力データを前記データ入力部に入力し、前記データ出力部から出力されるデータを前記判定情報を用いて判定することにより、追加された前記新たな能力が正常に動作するかを確認する
ことを特徴とする請求項7に記載の拡張性保有装置。
前記能力部への入力のインタフェースに関する機能は、前記基本構成から前記データ入力部にデータを取り込む機能、自装置以外のデバイスから前記データ入力部にデータを取り込む機能、取り込んだデータに対し加工を施す機能、および、前記能力部に適合するようにデータ形式を変換する機能、のうち少なくとも1つを含む
ことを特徴とする請求項9に記載の拡張性保有装置。
前記能力部からの出力のインタフェースに関する機能は、前記能力部から出力されるデータに対し加工を施す機能、前記基本構成に適合するようにデータ形式を変換する機能、および、自装置以外のデバイスに適合するようにデータ形式を変換する機能、のうち少なくとも1つを含む
ことを特徴とする請求項9または10に記載の拡張性保有装置。
【発明を実施するための形態】
【0022】
本発明は、機械学習により獲得された新たな「能力」を追加することが可能なアーキテクチャをもつ、拡張性(Extensibility)に優れた装置に関する。本明細書では、このような拡張性をもつ装置を「拡張性保有装置」または「拡張性設計(Extensibility Design)された装置」と呼ぶ。以下に述べる実施形態では、依頼者が外部の学習サービスを利用し、自身の拡張性保有装置(新たな能力を追加する対象の装置という意味で以下「対象装置」と記す)に新たな能力を組み込む例について説明する。
【0023】
<用語の説明>
実施形態の説明に入る前に、本明細書で使用する用語について説明する。
【0024】
「学習サービス」とは、機械学習を代行するサービスである。詳しくは、依頼者(対象装置に新たな能力を付与したいと望む者)からの依頼に基づき、依頼者に代わって対象装置に追加するための新たな能力の機械学習を実施し、機械学習の結果として得られた「能力」を依頼者の対象装置に提供するサービスである。「学習サービス提供システム」は、依頼者からの学習依頼の受け付け、機械学習の実施、依頼者への学習結果の提供など、学習サービスに関わる一連の処理を担うシステムである。
【0025】
「機械学習」は、機械に目標を入力すると、機械が目標を達成するための能力を獲得して、機械自身が新たに獲得した能力を発揮できるようになることである。本明細書では、特に明記がない場合、「学習」は機械学習を意味する。
【0026】
「能力」は、装置が提供しうる機能ないし装置が実行しうる処理である。装置に新たな能力を追加するとは、装置に新しい機能ないし処理を追加すること、または、装置が既に有する機能ないし処理の性能を向上することである。なお、依頼者の「対象装置」は、新たな能力を組み込み可能な構成をもつ装置であれば、いかなる種類の装置でもよい。例えば、製造装置、FAロボット、検査装置、生産管理システム、プラント制御システム、監視システム、ビル制御システム、店舗管理システム、人型ロボット、防災ロボット、Webサービス、モバイル端末、家電装置、業務システム、組込システム、生体情報システム、画像認識装置、音声認識装置、自動運転システム、故障予測システム、データ分析装置、コンテンツ生成装置、セキュリティシステム、金融システム、ウィルス監視装置などさまざまな分野の装置の開発に利用できる。
【0027】
「能力付与データ」は、学習結果として得られた「能力」を依頼者の対象装置に追加するためのデータである。能力付与データは依頼者の対象装置にそのまま組み込み可能(実装可能)なデータ形式をもつデータである。学習結果を適切な形式でデータ化することで、学習サービスの学習結果を依頼者の対象装置へ組み込むことが容易になる。
【0028】
以下に述べる実施形態では、実行形式のプログラムとプログラムの定義とを区別するため、プログラムの定義を「モデル」により記述している。「モデル」は、対象の振る舞いや性質などを一般化・抽象化し、所定の記述言語を用いて表現したものであり、モデルベース開発において用いられるモデルと同じである。任意のプログラムやデータ構造をモデルで定義することができる。また、任意の装置、環境、物理現象などもモデルで定義することができる。モデルベース開発では、モデルによって各構成要素の内部構成と各構成要素間の関係を定義し、複数のモデルを組み合わせた状態をシミュレーションすることができる。また、モデルベース開発ツールを用いることで、モデルから実行形式のプログラムや回路を自動生成できる。
【0029】
モデルにはプログラムの定義のみでなく、実行形式のプログラムを含めることができる。それによって、依頼された学習を学習シミュレータで実行する時の処理を減らすことができる。
【0030】
以下に述べる実施形態において、モデルベース開発ツールでプログラムを開発することで、学習のシミュレーションにおける各部分の関係を明確に定義できる。ただし、システムの実装においてモデルベース開発ツールを用いずに、同様のプログラムを開発することができる。従って、本発明はモデルベース技術で開発したシステムには限定されない。
【0031】
モデルに記述する項目の一部を「パラメータ化」することができる。つまり、項目の値をパラメータ(変数)で定義しておき、学習依頼を受け付ける際に依頼者にパラメータの値を入力または選択させたり、学習実行時にシステム側でパラメータの値を適宜設定することができる。以後、パラメータ化された項目を「パラメトリック項目」または「未定義項目」または単に「パラメータ」と呼び、値や内容が定義されている項目を「定数項目」または「定義済み項目」と呼ぶ。パラメトリック項目はデータ項目に限られない。例えば関数型プログラミング言語を利用することで、処理項目(メソッド項目)もパラメータ化できる。関数型プログラミング言語では、関数の引数として関数を渡すことができる。この機能により、所定のプログラムが別のプログラムの引数として扱われて起動できる。関数の引数に異なる関数(プログラム)のID情報を指定することで、選択可能な処理がパラメータ化される。コード量は増えるが、同様の処理を、一般的なオブジェクト指向言語やC言語で記述することが可能である。
【0032】
「学習モデル」は、対象装置に追加する新たな能力を機械学習によって獲得する方法を定式化したモデルである。学習モデルは、本システムが依頼を受け付け可能な機械学習の種類ごとにそれぞれ作成される。以後の記載では、「学習モデル」の語を単に「機械学習の種類」という意味で用いている文脈もある。
【0033】
「対象装置モデル」は、依頼者の対象装置(新たな能力を追加される装置)のモデルである。本システムは、この対象装置モデルで実行できるようにするための能力付与データを生成し出力する。
【0034】
「対象モデル」は、依頼者の対象装置(新たな能力を追加される装置)が関係を有する対象のモデルである。対象装置が関係を有する対象には、例えば、対象装置の周囲の環境、対象装置との間で入出力を行う他の装置、対象装置が作用を及ぼす対象などが該当する。
【0035】
<システム全体の動作概念>
図1に本実施形態の学習サービス提供システムが提供する学習サービスの概念図を示す。依頼者101は、インターネットなどのネットワークを介して学習サービス提供システム100にアクセスし、対象装置104に追加する能力の機械学習を依頼する。機械学習を行うために必要な情報は、学習依頼情報102として、依頼者101から学習サービス提供システム100に提供される。学習サービス提供システム100は、依頼者101から提供された学習依頼情報102をもとに、依頼者101側の対象装置104および対象105をシミュレートしながら必要な機械学習を行う。学習サービス提供システム100は、依頼者101から依頼された学習が完了したら、学習結果として獲得した新たな能力を、対象装置104に組み込み可能なデータ形式の能力付与データ103として、依頼者101に対し提供する。なお、依頼者101は、パーソナルコンピュータを利用して学習サービス提供システム100にアクセスしてもよいし、対象装置104がインターネットアクセス可能であれば対象装置104から学習サービス提供システム100に直接アクセスしてもよい。
【0036】
<システムの構成>
図2に学習サービス提供システムのシステム構成図を示す。学習サービス提供システム100は、依頼受付部200、学習指令部202、学習シミュレータ203、能力付与データ生成部204、サービス提供部205を有する。
【0037】
本システム100は、例えば、プロセッサ、メモリ、記憶装置(ハードディスク、半導体ディスクなど)、入力装置(キーボード、マウス、タッチパネルなど)、表示装置、通信装置などのハードウェア資源を有する汎用のコンピュータにより構成することができる。
図2に示す本システム100の機能は、記憶装置に格納されたプログラムがメモリにロードされ、プロセッサにより実行されることにより、実現されるものである。なお、本システム100は、一台のコンピュータにより構成してもよいし、複数台のコンピュータによる分散コンピューティングにより構成してもよい。また、処理の高速化のため、本システム100の機能の一部または全部を専用のハードウェア(例えばGPUやFPGA、ASICなど)を用いて実現することも可能である。
【0038】
(能力の獲得)
さまざまな種類の対象装置104に対し本学習サービスを提供するにあたり、対象装置104に新たな能力を組み込むためのアーキテクチャを共通化しておく必要がある。そこで本実施形態では、対象装置104に新たな能力を組み込むためのアーキテクチャをモデル化し、これを「能力獲得モデル」と呼ぶ。対象装置104が能力獲得モデルに従った組み込みインタフェースを用意し、本システム100の学習シミュレータ203が能力獲得モデルに整合する能力を獲得するように機械学習を行うことで、本システム100で生成した能力付与データ103の対象装置104への組み込みが可能となる。
【0039】
能力獲得モデルを定義することによって、共通させるべきアーキテクチャに関する情報がモデルデータとしてデータ化される。データ化された能力獲得モデルに関する情報は、それぞれの学習モデルにおいて学習シミュレータ203と対象装置104の間で論理的な整合をとるために用いられる。データ化されることで、各種の開発ツールを用いた、プログラムや回路の自動生成や自動テストを行うことが可能となる。
【0040】
あらかじめ準備されていた能力獲得モデルが対象装置104に適合しない場合に、学習依頼者101があらかじめ準備されていた能力獲得モデルの一部または全てを変更して新たな能力獲得モデルを作成してもよい。能力獲得モデルをシステムモデリング言語で記述して、ファイルに格納して学習サービス提供システム100に提供する学習依頼情報102に含めることによって、任意の対象装置104について、学習依頼を行うことが可能となる。
【0041】
それぞれの能力獲得モデルに対して能力獲得モデルを相互に識別する識別情報(例えば、能力獲得モデルIDや能力獲得モデル名)を付与することで、識別情報を使って学習シミュレータ203と対象装置104の間で能力獲得モデルを特定して論理的に整合させることができる。
【0042】
能力獲得モデルを用いることで、学習を依頼する依頼者101と依頼を受ける者との間で、必要以上の技術情報をやりとりすることなく、それぞれの開発を進めることができる。
【0043】
能力獲得モデルの情報を公開することで、公開された特定の能力獲得モデルに対応する対象装置104である製品の普及が促進される。また、公開された特定の能力獲得モデルに対応する学習モデルが複数のベンダーから提供されることが可能となり、競争による学習レベルの向上が期待できる。
【0044】
図3に能力獲得モデルの構成を示す。本実施形態の能力獲得モデル500は、能力を実行する構成である能力部502と、能力部502の入力のインタフェースであるデータ入力部501と、能力部502の出力のインタフェースであるデータ出力部503の3つの定義を含む。データ入力部501は、対象装置104やその他の機器から所定の仕様でデータを受け取り、必要なデータ処理を施し、能力部502に適合するようにデータ形式を変換して入力する。データ入力部501は、対象装置104などから受け取るデータの仕様、データ処理の仕様、能力部502に入力するデータの仕様などの、対象装置104やその他の機器から能力部502にデータを入力する仕様の定義を含む。能力部502は、データ入力部501から入力されたデータに基づき情報処理を実施し、その結果をデータ出力部503に出力する。この能力部502の内部の構成を変えることで、能力獲得モデル500の能力を変更することができる。データ出力部503は、能力部502から結果を受け取り、必要なデータ処理を施し、対象装置104やその他の機器に適合するようにデータ形式を変換して出力する。データ出力部503は、能力部502から出力されるデータの仕様、データ処理の仕様、対象装置104などへ所定のインタフェース仕様で出力するデータの仕様などの、能力部502から対象装置104やその他の機器にデータを出力する仕様の定義を含む。
【0045】
能力獲得モデル500を用いることで、学習シミュレータ203と対象装置104において、データ入力部501と能力部502とデータ出力部503は、実装方法が異なっても、論理的に同じ動作を行うことが保証される。また、能力獲得モデルを用いることで、学習依頼者と依頼を受ける者の間で、必要以上の情報をやりとりすることなく、学習を依頼することができる。
【0046】
なお、本システム100の学習シミュレータ203側では、能力獲得モデル500を新たな能力獲得のための学習シミュレーションに利用するため、以後の説明では、システム100側の能力部502を「能力獲得部」とも称する(
図9の能力獲得部1004を参照)。一方、対象装置104側では、システム100で獲得された新たな能力を受容し実行するために能力獲得モデル500を利用するため、対象装置104側の能力部502を「能力受容部」とも称する(
図7の能力受容部904を参照)。また、以後の説明において、学習シミュレータ203側の能力獲得モデルと対象装置104側の能力獲得モデルを区別するために、
図7および
図9に示される符号を用いる。
【0047】
学習シミュレータ203で獲得した能力を対象装置104に付与できるようにするために、能力獲得モデル500は、少なくともデータ入力部501と能力部502の間のインタフェース仕様と、能力部502とデータ出力部503の間のインタフェース仕様と、学習モデルが学習に用いるときに対象装置104の能力受容部904の構成を特定するための情報とを含むとよい。例えば、獲得する能力が「画像の分類」の場合は、対象装置104と能力獲得モデルの関係がシンプルなので、それだけで学習シミュレータ203と対象装置104を整合させることができる。具体的には、入力が画像データで、出力が分類結果であることが定義されていればよい。
【0048】
能力獲得モデル500は、さらに以下のような詳細な情報を含むようにできる。
【0049】
学習シミュレータ203に実装された能力獲得部1004に入力されるデータと対象装置104の能力受容部904に入力されるデータは同等である必要がある。能力獲得モデル500のデータ入力部501は、対象装置104の基本構成902からデータ入力部903に対するデータ入力のインタフェース仕様を定義する情報を含むようにできる。データ入力部501には任意のロジックを組み込むようにできる。
【0050】
学習にDeep Learningを用いる場合、能力受容部904は学習モデルで使用される深層ニューラルネットワークとなるので、能力獲得モデル500は、受容可能なネットワークの構成を特定する情報を含む必要がある。構成を特定する情報は受容可能なネットワークを一意に定めるものでもよいし、複数の選択可能な範囲を示すようにしてもよい。他の学習方法の場合は、能力を獲得する回路やソフトウェアなど学習ロジックを特定するための情報を含むようにする。それによって、学習シミュレータ203の能力獲得部1004と対象装置104の能力受容部904の論理的な構成が一致することが担保される。一方で、学習シミュレータ203の能力獲得部1004と対象装置104の能力受容部904の実装方法が、例えばハードウェア実装とソフトウェア実装のように相違していてもよい。例えば、対象装置104の能力受容部904がソフトウェア実装であるときに、学習シミュレータ203側では、学習時間を短くするためにハードウェアで能力獲得部1004のニューラルネットワークを構成することができる。
【0051】
学習シミュレータ203に実装された能力獲得部1004からデータ出力部1005を介して出力されるデータと対象装置104の能力受容部904からデータ出力部905を介して出力されるデータは同等である必要がある。そのために、能力獲得モデル500のデータ出力部503は、データ出力部905から対象装置104の基本構成902に対するデータ出力のインタフェース仕様を定義する情報を含むようにできる。
【0052】
能力獲得モデル500と対象装置104の基本構成902との間で入出力のインタフェース仕様を定義することで、学習シミュレータ203において基本構成902のモデル1006を用いたシミュレーションを行うことが可能になる。例えば、獲得した能力が対象装置104の基本構成902を制御するような場合に、上記のような詳細な情報が必要になる。
【0053】
能力獲得モデル500が学習シミュレータ203における実装や、対象装置104における実装の内容である回路情報や実行形式のプログラムを含むようにしてもよい。逆に、最小限のインタフェース仕様のみを定義するようにしてもよい。最小限のインタフェース仕様のみを定義することで、能力獲得モデル500を定義するファイルのサイズを小さくすることができる。インタフェース仕様と実装されるロジックの定義を含むようにして、学習シミュレータ203と対象装置104のそれぞれに対してモデルから自動生成するようにしてもよい。自動生成することで、学習モデルの開発効率を向上させることが可能となり、モデル情報を用いた厳密な仕様チェックを機械的に行うことが可能となる。
【0054】
能力獲得モデル500は、それぞれの学習モデルにおいて学習シミュレータ203と対象装置104の間で矛盾なく定義されていればよい。学習シミュレータ203と対象装置104における能力獲得モデル500に相当する部分の実装は、それぞれ異なるものであってよい。
【0055】
能力獲得モデル500は、例えばオブジェクト指向プログラミング言語や関数型プログラミング言語の抽象クラスあるいはインタフェースを定義するクラス相当の言語機能によって定義できる。さらに実装クラスを加えるようできる。あるいは、システムモデリング言語で、インタフェース仕様として定義できる。システムモデリング言語で、実装されるロジックを含むようにも定義できる。あるいは、ハードウェア記述言語のインタフェース仕様として定義できる。ハードウェア記述言語で、実装されるロジックを含むようにも定義できる。
【0056】
それぞれ、インタフェース仕様のみ定義するようにしてもよいし、データ入力部501、能力部502、データ出力部503に対応して実装されるロジックの定義を含むようにしてもよい。
【0057】
学習シミュレータ203におけるデータ入力部1003とデータ出力部1005は、対象装置104におけるデータ入力部903とデータ出力部905から入出力されるデータと同等のデータを、学習用データとして能力獲得部1004に入出力するような動作を行う。対象装置104と同等のデータが能力獲得部1004に入力されればよいので、学習シミュレータ203におけるデータ入力部1003、データ出力部1005と、対象装置104におけるデータ入力部903、データ出力部905は必ずしも同じ構成である必要はない。学習に用いるデータの形式や出力データの形式が、対象装置104内で扱われるデータ形式と異なるような場合は、学習シミュレータ203におけるデータ入力部1003およびデータ出力部1005と、能力獲得部1004との間のインタフェースが一致するように変換すればよい。学習シミュレータ203と対象装置104の間で能力獲得モデルを整合させることで、学習時の能力獲得部1004と対象装置104の能力受容部904が同等の能力を実行できること、および、それぞれに同等のデータが入出力されることが担保される。また、能力付与データ103により、対象装置104へ新たな能力を組み込むことが容易に実現できる。能力獲得モデルが整合されていれば、学習シミュレータ203の能力獲得部1004と対象装置104の能力受容部904が異なる実装形態(例えば、ハードウェア実装とソフトウェア実装、あるいは使用するプログラミング言語の相違)となっている場合も、能力付与データ103による能力付与が可能となる。
【0058】
能力部502が発揮する能力(情報処理を実現するためのプログラムや各種パラメータなど)は機械学習によって生成される。機械学習は例えばDeep Learningの技術を用いて実施できる(以下の実施形態では、主にDeep Learningを用いた実施方法を想定している。)。ただし、学習方法はDeep Learningに限られない。
【0059】
例えば、モータ制御の学習において、以下のような方法により新たな能力を獲得できる。あらかじめ複数の制御ロジックの構成要素を用意する。トレーニングでいくつかの構成要素をランダムに選択して、接続する。接続したモデルで遺伝アルゴリズムにより、結果を最適化する。所定の範囲で上記を繰り返して、最もよいものを選択する。
【0060】
例えば、文字列の分類学習において、以下のような方法により新たな能力を獲得できる。人が分類した多数のサンプルを準備する。さまざまな文字列関数を用意する。文字列関数をランダムに選択して、複数の文字列関数を組み合わせる。文字列関数のパラメータを遺伝アルゴリズムにより最適化する。所定の範囲で上記を繰り返して、最もよいものを選択する。
【0061】
例えば、プログラムの機械コードを部分ごとにランダムに生成して、入力に対する出力が最良となるものを選択することで、新たな能力を獲得できる。目的ごとにプログラムの分割を適切に選択しておくことで、学習速度を向上させることができる。
【0062】
AI技術者は、受け付ける依頼ごとに、効率がよい能力獲得モデルとそのトレーニング方法を選んで、学習依頼を受け付けられるようにする。Deep Learningにおける学習方法として様々な手法が知られている。AI技術者は応用する対象ごとに、より少ない処理で学習が終了するような手法を選択する。
【0063】
(Deep Learningの例)
図4にDeep Learningによる能力獲得モデルの一例を示す。データ入力部501は、対象装置104に入力される信号形式をニューラルネットワークに適合するように変換してデータ化した信号を入力する機能ブロックである。データ入力部501には、対象装置104から受け取るデータの仕様として「動画像、RGB、解像度1024×768、30fps」、能力部502に入力するデータの仕様として「静止画像、グレースケール、解像度640×480」などが定義されている。色情報が不要な場合は、グレースケールに変換することで、学習時間が短縮され、能力部502の回路構成が簡単になる。これはデータ形式の変換を行う場合の例であり、色情報が必要な場合はRGBのカラー信号をそのまま入力するようにもできる。能力部502は、Deep Learning技術を用いたトレーニングによって学習済みのニューラルネットワークにより、入力データから目的とする結果を出力する機能ブロックである。能力部502は、任意の数で任意サイズの各層の入出力が全て接続されたニューラルネットワークのサブセットとしてモデル化できる。能力部502のモデルには、必要に応じて、フィードバック回路や演算回路、論理回路、記憶回路、同期回路、遅延回路、リセット回路などの付加回路を追加できる。能力部502は、例えば、AIの種類、層数、各層の構造、活性化関数、重みフィルタなどの定義を含む。学習を行うときは、学習モデルで定義された構成で、順次ニューラルネットワークを構成して、パラメータを最適化する。データ出力部503は、ニューラルネットワークの出力を、対象装置104や他の機器で利用できる情報へ変換し出力する機能ブロックである。データ出力部503には、能力部502から出力されるデータの仕様、とそれを対象装置104が必要とするデータ形式に変換して最終的に出力するデータの仕様などが定義されている。
【0064】
(トレーニング情報304)
図5にトレーニング情報のデータ構造の一例を示す。トレーニング情報304は、機械学習の実施に必要な情報を定義するものであり、学習モデル情報700、対象装置モデル情報701、対象モデル情報702、学習シミュレータモデル情報703、能力付与データ生成モデル情報704を含む。以下、それぞれの情報700〜704について説明する。
【0065】
(1)学習モデル情報700
学習モデル情報700は学習モデルに関する情報である。学習モデルは、対象装置104に追加する新たな能力を機械学習によって獲得する方法を定式化したモデルである。学習モデルは、扱う対象装置104や対象105ごとに、それぞれ作成される。ただし、振る舞いが類似する装置104や対象105については、同じ学習モデルを適用することもできる。
【0066】
学習モデルは、以下の情報を含むとよい。
【0067】
・「学習の目標」:学習の目標を構成する項目の一部あるいは全部をパラメータ化し、学習目標の条件を指定可能な項目として定義することができる。学習目標の項目としては、例えば、能力部502の出力結果の精度や誤差、評価式による評価結果、学習の繰り返し計算の回数、出力の安定性など、どのようなものでもよい。
【0068】
・「能力部の入力に関する定義」:能力部502に入力するデータを対象装置104またはその他の外部機器からどのように入力するかを定義する。例えば、対象装置104から2種類のセンサデータが入力され、能力部502にはそれらの平均データを与える場合であれば、2種類のセンサデータの仕様、平均データを求めるための処理方法、能力部に与えるデータの仕様などを定義する。取り扱うデータには、例えば、画像、音声、自然言語、センサデータなどさまざまな種類のデータがあるが、データの種類や仕様が異なれば、それぞれ異なるモデルが定義される。
【0069】
・「能力部の構成に関する定義」:能力部502の内部構成を定義する。例えばDeep Learningのニューラルネットワークを用いる場合であれば、層数、各層の構造(畳み込み層、プーリング層、全接続層、ノード)、活性化関数、フィルタなどを定義する。対応可能な構成を複数定義し(例えば、層数の範囲、層構造のバリエーションなど)、それらの範囲内で選択可能にしてもよい。
【0070】
・「能力部の出力に関する定義」:能力部502から出力するデータを対象装置104またはその他の外部機器へどのような情報として出力するかを定義する。例えば、能力部502が予測確率(実数値)を出力する場合に、確率が閾値より大きいか否かの2値の判定結果を対象装置104に出力するのであれば、予測確率のデータの仕様、判定結果のデータの仕様、閾値の仕様などを定義する。
【0071】
・「能力部をトレーニングする方法」:能力部502の機械学習に使用する方法、具体的には機械学習を実施するトレーニングプログラムを定義する。AI技術者が、あらかじめトレーニングプログラムを作成しておくことで、依頼時には自動的にトレーニングを実行できる。例えば、Deep Learningのトレーニングプログラムは、ニューラルネットワークの入出力の構成と、ニューラルネットワークの各層の構成と、学習用データなどを指定して作成される。Deep Learningのトレーニングプログラムは、学習用データを順次入力して、ニューラルネットワークの各層でのパラメータを最適化することにより、新たな能力を獲得させるものである。トレーニングプログラムは、モデルとして定義することもできる。トレーニングにおいて選択可能な項目をパラメータ化することで、少ないモデルで多くのバリエーションに対応することができる。本実施形態では、依頼者101に提示する学習モデルごとに、上記トレーニングプログラムをモデルとして定義する。
【0072】
以上述べた学習モデルは、モデル記述言語を用いて記述できる。モデル記述言語を用いて学習モデルを記述した場合は、モデル記述言語からシミュレータで実行可能なプログラムに自動変換することができる。モデル記述言語を用いずに、学習モデルをシミュレータで実行可能なプログラムで記述してもよい。
【0073】
学習モデルには、モデルベースで記述できる任意の方法を適用できる。例えば、Deep LearningをはじめとしたAI技術をサポートするプログラムがいくつか提供されるようになっている。学習モデルは、それらを利用して構築することもできる。より高度化、高速化するモデルを作成してもよい。トレーニング情報に学習モデルに関する情報を含めることで、学習シミュレータによって新たな能力が獲得できる。
【0074】
学習サービス提供システム100は、それぞれの学習モデルごとに、それぞれ能力獲得モデル500で定義された共通のアーキテクチャで学習シミュレーションを行うことで、能力付与データ103を用いて対象装置104に学習によって獲得した能力を組み込むことを可能としている。
【0075】
(2)対象装置モデル情報701
対象装置モデル情報701は対象装置104のモデルに関する情報である。対象装置モデルを用いることで、依頼者101の対象装置104(実機)を用いなくても、コンピュータシミュレーションにより対象装置104の動作や入出力をシステム100側で模擬することができる。
【0076】
対象装置モデルは、以下の情報を含むとよい。
【0077】
・「能力部(能力受容部)の構成」:対象装置104が有する能力受容部904のハードウェア構成を定義する情報である。例えば、FPGA(Field−Programmable Gate Array)の型式を指定してもよいし、ゲート数を指定してもよい。あるいは、ソフトウェア実装の場合はCPU(Central Processing Unit)やGPU(Graphics Processing Unit)の型式と追加利用可能な記憶容量で指定してもよい。クラウドサービスを利用する場合、クラウドの種類、CPU種別、CPU数やクロック数、使用する記憶容量で指定してもよい。これらの例に限らず、回路構成の定義はどのような方法で指定してもよい。
【0078】
・「能力獲得モデルのインタフェース仕様」:対象装置104が有するデータ入力部903、能力受容部904、データ出力部905の間の接続方法を定義する。例えば、FPGAの場合、各入出力端子の信号に関する定義が含まれる。ソフトウェア実装の場合は、能力受容部904のソフトウェアインタフェースの定義が含まれる。クラウドサービスを利用する場合、能力を利用するための通信方法の定義が含まれる。能力獲得モデルのインタフェースとしては、モデルとして定義できる任意のインタフェースが利用できる。
【0079】
対象装置104のデータ入力部903、能力受容部904、データ出力部905は、それぞれハードウェアまたはソフトウェアによって実装される。対象装置104のデータ入力部903、能力受容部904、データ出力部905は、それぞれ能力獲得モデル500のデータ入力部501、能力部502、データ出力部503で定義された仕様に合わせて構成される。
【0080】
それぞれの学習モデルにおいて、対象装置104の能力獲得モデル901と学習シミュレータ203の能力獲得モデル1002の間で、インタフェース仕様を整合させる必要がある。学習モデルの能力獲得モデル500で定義されるデータ入力部501、能力部502、データ出力部503のインタフェース仕様は、対象装置104のデータ入力部903、能力受容部904、データ出力部905と整合させるように定義する。能力獲得モデルを整合させることによって、学習シミュレータ203で獲得した能力を能力付与データ103に変換して、対象装置104に組み込むことが可能になる。
【0081】
・「装置の基本構成のモデル」:対象装置104がもともと備えている基本構成902(能力獲得モデル500に対応する構成以外の構成部分)を定義する情報である。能力獲得モデル500に対応する構成901は、対象装置104の基本構成902との間で信号やデータの入出力を行うため、学習シミュレーションを行う際に対象装置104の基本構成902の仕様が必要となる。基本構成のモデルには、例えば、対象装置104の基本構成902と能力獲得モデル901により実現される新たな能力とのあいだのインタフェースの定義が含まれる。具体的には、基本構成902からデータ入力部903に入力される入力信号の定義、データ出力部905から基本構成902に出力される出力信号の定義、それぞれの信号が対象装置104の中でどのように扱われるかの定義などである。
【0082】
対象装置モデルは、対象装置104のインタフェースのみを記述するだけでもよい。対象装置モデルは、トレーニングを開始する前に依頼者101やDBから取得できた情報をもとに生成できる。
【0083】
(3)対象モデル情報702
対象モデル情報702は、対象装置104が関係を有する対象105のモデルに関する情報である。対象モデルを用いることで、対象装置104に影響を与える可能性のある対象105(例えば、対象装置104の外側にある他の装置や環境や利用者)を考慮したシミュレーションすることが可能になる。
【0084】
以下に、対象モデル情報702の例を示す。
Webサービスの場合、対象モデルは例えばHTML5をサポートするブラウザとしてモデル化できる。さらに、利用者をシミュレートするモデルを加えてもよい。
カーレースゲームの場合、ゲームのルール、レースに用いる車両の仕様、性能やコース仕様、物理現象がモデル化される。何らかの装置やシステム、プラントを制御する場合は、制御対象となる装置についてモデル化したものを、対象モデル情報702とする。さらに、対象装置104または制御対象となる装置が対応する外界を物理モデルなどでモデル化すれば、外界を含めてシミュレートできる。
【0085】
対象モデルは、対象105と対象装置104のインタフェースのみを記述するだけでもよい。対象モデルは、トレーニングを開始する前に依頼者101やDBから取得できた情報をもとに生成できる。
【0086】
(4)学習シミュレータモデル情報703
学習シミュレータモデルは、本システム100での学習に用いるシミュレータの構成を定義するモデルである。本実施形態では、学習モデル、対象装置モデル、対象モデルを組み合わせて学習シミュレータが構成される(詳しくは後述する)。
【0087】
(5)能力付与データ生成モデル情報704
能力付与データ生成モデルは、本システム100における学習結果を基に、対象装置104の回路に組み込むための「能力付与データ」103を生成する方法などを定義するモデルである。具体的には、学習結果を能力付与データ103に変換する変換プログラムを、能力付与データ生成モデルとして準備しておけばよい。
【0088】
例えば、FPGAで実装する場合は、ニューロ回路と入力インタフェース回路と出力インタフェース回路を構成できるようにする。ソフトウェアで実装する場合は、ニューロ回路をエミュレーションするソフトウェアと、学習結果として得られた各パラメータを設定するプログラムを準備する。能力付与データ103を用いて、獲得した能力を実装するための回路を部品化して、対象装置104の受け入れスロットに当該部品を物理的に挿入するようにしてもよい。
【0089】
以上述べたトレーニング情報304に含まれるそれぞれの情報は、AI技術者によってあらかじめ値が定義されている定数項目と、値が未定義の状態であるパラメトリック項目とを含む。パラメトリック項目については、学習依頼を受け付ける際に依頼者101に情報の入力を求める。依頼者101の入力負担を軽減し、学習依頼を簡単化するために、パラメトリック項目はできるだけ少ないことが好ましい。したがって、例えば、学習シミュレータモデル情報703や能力付与データ生成モデル情報704はあらかじめ定義しておくとよい。また、学習モデル情報700、対象装置モデル情報701、対象モデル情報702についても、基本的な項目についてはあらかじめ定義しておき、依頼者101に入力させる項目は、能力部502の構成と入出力、学習目標など、できるだけ少ない項目に限定することが好ましい。
【0090】
(依頼受付部200)
図6を用いて依頼受付部200の構成について説明する。依頼受付部200は、依頼者101の依頼端末805からインターネットを介して学習依頼情報102を受け付ける機能を有する。依頼受付部200は、例えば、依頼受付アプリケーション801が動作するWebサーバ800、依頼情報DB802、対象装置情報DB803、対象情報DB804などから構成される。
【0091】
依頼受付アプリケーション801は、学習依頼に必要な情報を入力するための対話型ユーザインタフェースを依頼端末805に表示し、依頼者101によって入力された情報を取得する機能を提供するプログラムである。依頼情報DB802は、受け付けた学習依頼情報102を格納するデータベースである。対象装置情報DB803は、対象装置モデル情報701など、依頼者101の対象装置104に関する情報を格納するデータベースであり、対象情報DB804は、対象モデル情報702など、対象105に関する情報を格納するデータベースである。
【0092】
依頼受付部200は、トレーニング情報DB302に登録されている複数の学習モデルの中から希望する学習モデルを選択するための学習メニューを依頼者101に提示する。依頼者101によって希望する学習モデルが指定されると、依頼受付部200は、指定された学習モデル(機械学習の種類)に対応するトレーニング情報304を用いて、機械学習の実施に必要な情報を受け付け、学習依頼情報102を生成する。要入力項目には、例えば、入力データの種類や仕様、学習の目標、出力データの種類や仕様、対象装置または対象装置モデルを特定する情報、対象または対象モデルを特定する情報などがある。
【0093】
依頼受付部200は、学習依頼情報102を依頼情報DB802に登録する。学習依頼情報102には、選択された学習モデルに対応するトレーニング情報304を特定する情報、依頼者101により入力された情報(例えば、パラメトリック項目の値)などが含まれる。依頼受付部200は、学習依頼情報102の登録完了を学習指令部202に通知する。
【0094】
なお、依頼受付部200は、システム記述言語などを用いて学習に必要な情報を記述した依頼ファイルを依頼端末805から受け取ることもできる。例えば依頼者101が希望する学習モデルが学習メニューの中に無い場合、依頼者101は希望する学習内容を記述した依頼ファイルを作成し、学習依頼を行うことができる。依頼ファイルによる学習依頼を受け付けた場合には、AI技術者が依頼ファイルに基づき新たな学習モデルを作成して、学習メニューに追加する。
【0095】
(対象装置104)
依頼者101は、能力を付与する対象となる対象装置104を指定して、学習を依頼する。能力獲得モデル500に従った新たな能力の追加が可能な装置であれば、どのような装置も対象装置104になり得る。一例を挙げると、静止画像を分類する画像分類装置、センサデータにより監視を行う監視装置、動画像を用いて対象の動きを予測する予測システム、Webサービスシステム、運転装置などを例示できる。
【0096】
図7に対象装置の構成を模式的に示す。対象装置104は、概略、能力設定部900と、能力獲得モデル500に対応する構成901と、対象装置104にもともと備わっている基本構成902とを有する。能力獲得モデル500に対応する構成901は、データ入力部903、能力受容部904、データ出力部905から構成される。対象装置104がシーケンス制御で動作する構成部分(以下「シーケンス制御部」と呼ぶ)を有する場合、そのシーケンス制御部は基本構成902のなかに含まれる。能力設定部900は、本システム100から提供される能力付与データ103を用いて、能力受容部904が新たな能力を発揮できるように能力獲得モデル500に対応する構成901を設定する機能である。
【0097】
能力獲得モデル500に対応する構成901は、機能を変更可能なハードウェアにより構成される。例えば、対象装置104の組立後に書き換え可能な電子回路(FPGAなど)のプログラムを書き換える構成でもよい。また、CPUやGPUのようなプロセッサで実行するプログラムを変更したり、プログラムで使用するパラメータを変更したりする構成でもよい。例えば、ニューラルネットワークのエミュレーションを行うプログラムに対し、パラメータを変更することで、ニューラルネットワークの機能を変更できる。あるいは、部品の一部や接続する装置を交換することで機能を変更する構成でもよい。
【0098】
図8に示すように、能力付与データ103は、例えば、能力設定データ1030と入力設定データ1031と出力設定データ1032とを含むデータ構造を有する。能力設定データ1030は、学習により獲得された新たな能力(例えば、ニューラルネットワークによる画像の分類能力)を実行する機能を、能力受容部904に対し設定するためのデータである。入力設定データ1031は、能力受容部904へのデータ入力のインタフェースに関する機能を、データ入力部903に対し設定するためのデータである。データ入力のインタフェースに関する機能には、例えば、対象装置104の基本構成902から必要なデータをデータ入力部903に取り込む機能、対象装置104以外のデバイス(例えばセンサなど)から必要なデータをデータ入力部903に取り込む機能、取り込んだデータに対し必要な加工(例えば、平均化、統合、サンプリング、ノイズ除去、特徴量抽出、二値化、色変換、解像度変換など)を施す機能、能力受容部904に適合するようにデータ形式を変換する機能などがあり、これらのうち少なくとも1つの機能の設定を入力設定データ1031として与えるとよい。また、出力設定データ1032は、能力受容部904からのデータ出力のインタフェースに関する機能を、データ出力部905に対し設定するためのデータである。データ出力のインタフェースに関する機能には、例えば、能力受容部904から出力されるデータに対し必要な加工(例えば、平均化、統合、サンプリング、ノイズ除去、特徴量抽出、二値化、色変換、解像度変換など)を施す機能、対象装置104の基本構成902に適合するようにデータ形式を変換する機能などがあり、これらのうち少なくとも1つの機能の設定を出力設定データ1032として与えるとよい。能力設定データ1030、入力設定データ1031、出力設定データ1032は、プログラムそのものでもよいし、プログラムで使用するパラメータでもよいし、プログラムとパラメータの両方でもよい。能力設定部900が、能力付与データ103により与えられた各設定データにより能力獲得モデル500に対応する構成901の設定を行うことで、データ入力部903、能力受容部904、およびデータ出力905が新たな能力に対応する情報処理を実行可能となる。
【0099】
能力付与データ103は、必要に応じて、動作確認用データ1033を含むことができる。動作確認用データ1033は、データ入力部903、能力受容部904、およびデータ出力905に設定した新たな能力が正常に動作するかどうかを確認するために使用するデータである。新たな能力を設定するためのデータ1030〜1031と動作確認用データ1033をセットで提供することで、依頼者自身があるいは対象装置104自身が新たな能力の組み込みが成功したかどうかの動作確認を容易に行うことができ、利便性に優れる。
【0100】
動作確認用データ1033は、1つ以上の入力データと、その入力データをデータ入力部903に入力したときに能力受容部904での処理を経てデータ出力部905から出力されるべきデータ(正解の出力データ)であるかを判定するための判定情報と、を含む。例えば、能力受容部904に追加される機能が静止画像の分類能力である場合、動作確認用データ1033は、入力データとして1つ以上の静止画像データを含み、判定情報として各静止画像データの正しい分類を含むとよい。また、能力受容部904に追加される機能が製品の画像検査能力である場合、動作確認用データ1033は、入力データとして良品の画像データと不良品の画像データを含み、判定情報として各画像データの正しい検査結果(良品か不良品か)を含むとよい。また、能力受容部904に追加される機能が音声の話者識別能力である場合、動作確認用データ1033は、入力データとして1つ以上の音声データを含み、判定情報として各音声データの話者の情報を含むとよい。
【0101】
能力付与データ103に動作確認用データ1033が含まれている場合、能力設定部900は、各設定データ1030〜1032を対象装置104の構成901に設定した後、動作確認用データ1033内の入力データをデータ入力部903に入力する。そして、能力設定部900は、データ出力部905から出力されるデータを動作確認用データ1033内の判定情報を用いて判定し、正解の出力が得られているか確認する。これにより、データ入力部、能力部、データ出力部の一連の動作の確認を行うことができる。正解の出力が得られている場合、対象装置104に対する新たな能力の追加は成功である。一方、データ出力部905から出力されるデータが正解の出力と異なっていた場合は、能力付与データ103に不具合があったか、対象装置104の構成901への設定に不具合があるかのいずれかとみなすことができる。この場合、能力設定部900は、能力付与データ103を用いて再設定を試みるか、学習サービス提供システム100に対して不具合通知を行うとよい。これにより、動作確認や不具合対応を自動で行うことができ、利便性に優れる。
【0102】
設定済みのデータ入力部903は、対象装置104の基本構成902からデータを取得し、必要な加工を行い、能力受容部904に適合するようにデータ形式を変換してデータを入力する。入力データとしては、例えば、カメラデータ、センサデータ、イベントデータが入力される。自然言語処理では、入力データとして、多数のテキストファイルが入力される。
【0103】
設定済みのデータ出力部905は、能力受容部904から出力されるデータに必要な加工を行い、対象装置104の基本構成902に適合するようにデータ形式を変換してデータを出力する。例えば、能力受容部904に組み込まれたニューラルネットワークの出力が、データ出力部905に入力され、データ出力部905から基本構成902にデータが出力される。
【0104】
能力受容部904について、具体例を挙げてさらに詳しく説明する。能力受容部904は、例えば、外部から入力された能力付与データ103にもとづいて、ニューラルネットワークを構成することで、新たな能力を受容する。能力受容部904と能力付与データ103は例えば以下のように実現できる。
【0105】
・書き換え可能な電子回路(例えばFPGA)。この場合、例えば、書き換え可能な電子回路に書き込むニューラルネットワークの回路とパラメータのデータを能力付与データとする。
・能力をCPUのプログラムとして実装する。この場合、例えば、ニューラルネットワーク回路の動作を演算する実行形式のCPUプログラムを能力付与データとする。
・能力をGPUのプログラムとして実装する。この場合、例えば、ニューラルネットワーク回路の動作を演算する実行形式のGPUプログラムを能力付与データとする。
・能力を部品として追加する。この場合、例えば、書き換え可能なFPGAにニューラルネットワークを書き込んだものを、能力付与データを含む部品とする。
・能力をクラウドサービスとして利用する。この場合、例えば、上記のいずれかを組み込んだネットワークサービスの利用プログラムを能力付与データとする。
・対象装置以外の装置が外部で提供する能力を利用する。この場合、上記のいずれかを組み込んだ装置を利用するためのプログラムを能力付与データとする。
・能力を装置として追加する。この場合、例えば、上記のいずれかを組み込んだ装置を利用するプログラムを能力付与データとする。
【0106】
(対象装置モデル)
対象装置104がいかなる種類の装置であっても、
図7に示すように、能力獲得モデル500に対応する構成901と、対象装置104にもともと備わっている基本構成902との組み合わせでモデル化することができる。基本構成902に対応する基本構成モデルと能力獲得モデル500を組み合わせると、新たな能力を獲得した後の対象装置104のモデルとなる。この対象装置モデルと、対象装置104の外部にある対象105をモデル化した対象モデルとを用いれば、コンピュータ上で、対象装置104の動作をシミュレーションすることができる。基本構成モデルは、必ずしも対象装置104が備える全ての構成をモデル化する必要はない。少なくとも、能力獲得モデル500と相互に影響する部分の構成が基本構成モデルにより定義されていればよい。
【0107】
(対象装置の実施例1)
図8に、対象装置104の一実施例として、画像により検査対象の検査を行う画像検査装置の構成図を示す。この対象装置104における基本構成902は、画像入力部910、シーケンス制御部911、検査結果出力部912を有する。また対象装置104には、外部装置として、検査対象を撮影するカメラ913と検査対象を検出するセンサ914とが接続されている。カメラ913から取り込まれる画像データは画像入力部910に、センサ914の検出信号はシーケンス制御部911に、それぞれ入力される。
【0108】
まず、新たな能力が追加される前の動作(基本構成902単体での動作)について説明する。コンベア上を流れる検査対象をセンサ914が検出してから10msec後に、その検査対象がカメラ913で撮影できる位置に到達すると仮定する。シーケンス制御部911は、センサ914の検出信号を受信すると、その10msec後の画像データを画像入力部910が保持するように、画像入力部910に対し制御信号を出力する。次にシーケンス制御部911は、画像入力部910でラッチされた画像データを取り込み、その画像データを用いて検査対象の検査を行う。例えば、表面実装基板の外観検査の場合、検査項目としては、部品の有無、はんだ接合の良否などがある。シーケンス制御部911は検査結果を検査結果出力部912に送り、検査結果出力部912から外部装置(ディスプレイ、生産管理システム、上流または下流にある製造装置、管理者が携帯する端末など)に検査結果を出力する。
【0109】
次に、新たな能力を追加した後の動作について説明する。この実施例では、能力獲得モデルに対応する構成901はFPGAにより構成され、新たな能力として、基本構成902とは異なる検査項目についての検査処理が追加されるものとする。シーケンス制御部911は、センサ914の検出信号を受信すると、その10msec後の画像データを画像入力部910が保持するように、画像入力部910に対し制御信号を出力する。次にシーケンス制御部911は、画像入力部910でラッチされた画像データを取り込み、その画像データを用いて検査対象の検査を行う。一方、シーケンス制御部911は、画像入力部910でラッチされた画像データが構成901にも取り込まれるよう、データ入力部903に対し制御信号を出力する。データ入力部903は取り込んだデータに対し、必要な前処理やデータ変換を行い、能力受容部904にデータを入力する。能力受容部904は、そのデータを用いて検査を行い結果を出力する。データ出力部905は能力受容部904の出力に対し、必要な後処理やデータ変換を行い、シーケンス制御部911へ出力する。例えば、データ入力部903にデータが取り込まれてから結果が出力されるまで1msecかかる場合、シーケンス制御部911は、センサ914の検出信号を受信してから11msec後にデータ出力部905から出力されたデータを、検査結果として受け取る。シーケンス制御部911は、基本構成902側の検査結果と能力受容部904側の検査結果を検査結果出力部912に送り、検査結果出力部912から外部装置に検査結果を出力する。以上により、基本構成902と新たな能力を実装した構成901との間でのデータおよび処理結果の受け渡しが実現できるとともに、シーケンス制御と機械学習により獲得された能力との協働(連携)が実現できる。
【0110】
なお、新たな検査処理の学習依頼は例えば次のように行うことができる。依頼者は良品と不良品の画像サンプル(教師付きデータ)を準備する。そして、依頼者は、画像サンプルを添付して、画像の分類に関する学習を学習サービス提供システム100に依頼する。学習サービス提供システム100は、依頼者から提供された画像サンプルを用いてDeep Learningによる学習を実施する。これにより、良品と不良品を識別可能なニューラルネットワークが獲得できる。学習サービス提供システム100は、このニューラルネットワークを対象装置104のFPGAに実装するための能力付与データ103を生成し、依頼者に提供する。対象装置104では、能力設定部900が能力付与データ103を用いてFPGAのプログラムを書き換えることで、新たな検査処理を行う構成901を追加することができる。
【0111】
(対象装置の実施例2)
図9に、対象装置104の一実施例として、音声により話者の識別を行う話者識別装置の構成図を示す。この対象装置104はクラウドサーバにより構成され、インターネットを通じてユーザに話者識別サービスを提供するシステムである。ユーザは、スマートフォンやタブレットPCなどのユーザ端末に、話者識別サービスのフロントエンドアプリをインストールすることで、対象装置104が提供する話者識別サービスを利用可能となる。
【0112】
対象装置104における基本構成902は、音声入力部920、シーケンス制御部921、結果出力部922を有する。ユーザ端末のアプリから受信する音声データ923は音声入力部920に、ユーザ端末のアプリで入力された操作データ924(メニュー選択、ボタン押下など)はシーケンス制御部921に、それぞれ入力される。能力受容部904には、新たな能力として、話者識別アルゴリズムが追加されるものとする。なお、本実施形態の構成901、902はいずれもCPUにより実行されるプログラムによって実装される機能である。
【0113】
ユーザが、ユーザ端末のアプリ上で音声データを指定し、識別ボタンを押下すると、その音声データ923と識別要求を含む操作データ924が対象装置104に送信される。シーケンス制御部921は、識別要求を受信すると、音声入力部920で取り込んだ音声データ923をデータ入力部903が取り込むよう、データ入力部903に制御信号を出力する。データ入力部903は取り込んだ音声データに対し、必要な前処理やデータ変換を行い、能力受容部904にデータを入力する。能力受容部904は、そのデータを用いて話者識別を行い結果を出力する。データ出力部905は能力受容部904の出力に対し、必要な後処理やデータ変換を行い、シーケンス制御部921へ出力する。シーケンス制御部921は識別結果を結果出力部922に送り、検査結果出力部922からユーザ端末に識別結果を出力する。以上により、基本構成902による提供される機能と追加した新たな機能との間でのデータおよび処理結果の受け渡しが実現できるとともに、シーケンス制御と機械学習により獲得された能力との協働(連携)が実現できる。
【0114】
なお、話者識別アルゴリズムの学習依頼は例えば次のように行うことができる。依頼者は識別対象とすべき人々の音声サンプル(教師付きデータ)を準備する。そして、依頼者は、音声サンプルを添付して、話者の識別に関する学習を学習サービス提供システム100に依頼する。学習サービス提供システム100は、依頼者から提供された音声サンプルを用いてDeep Learningによる学習を実施する。これにより、話者を識別可能なニューラルネットワークが獲得できる。学習サービス提供システム100は、このニューラルネットワークを対象装置104のCPUで実行するための能力付与データ103を生成し、依頼者に提供する。対象装置104では、能力設定部900が能力付与データ103で提供されるプログラムおよびデータをインストールすることで、新たな話者識別能力をもつ構成901を追加することができる。
【0115】
図9および
図10では、対象装置104が1つの能力獲得モデルを含む構成について示したが、複数の能力獲得モデルを含む構成にしてもよい。複数の能力獲得モデルを備えることで、複数の項目について能力を獲得することが可能になる。以上の実施例では、対象装置104と学習サービス提供システム100が異なる装置として実施された例を示したが、対象装置104が学習サービス提供システム100の一部または全部を含む構成とすることができる。それによって、対象装置104は自己学習能力を備えた製品となる。例えば、学習能力を備えた本発明による人型ロボットが、人から学習依頼を受けて学習を行って、自分と同じ構成の自分以外の他のロボットに能力付与データを与えるようにできる。
【0116】
本システム100のサービスは、対象装置モデルおよび対象モデルが提供されれば、どのような種類の対象装置104にも対応することができる。なお、これらのモデルは依頼者101自身が作成し提供してもよいし、依頼者101以外の者が作成し提供してもよい。例えば、依頼者101に部品や製品を提供する業者がモデルを提供してもよいし、本システム100のサービス提供者がモデルを提供してもよい。また、対象装置モデルや対象モデルが既に本システム100の対象装置情報DB803や対象情報DB804に登録されているときは、依頼者101はそれらのDBに登録されているモデルを利用することもできる。その場合、学習依頼を受け付ける際に、対象装置104を特定する情報(装置の型式など)または対象装置モデルを特定する情報(モデルIDなど)の入力を依頼者101に求めればよい。対象モデルについても同様である。
【0117】
(学習シミュレータ203)
図11に学習指令部202と学習シミュレータ203の詳細構成を示す。
【0118】
学習シミュレータ203は、対象装置104の基本構成モデル1006と能力獲得モデル1002と対象モデル1007を用いて、対象装置104の動作をシミュレートしながら対象装置104に追加する新たな能力の機械学習を実施する。能力獲得モデル1002は、データ入力部1003、能力部(能力獲得部)1004、データ出力部1005を有する。
【0119】
能力獲得部1004は、依頼者101の対象装置104に組み込まれて能力を遂行する部分をシミュレートする。学習を行うとき、能力獲得部1004の回路構成は、適宜変更することができる。能力獲得部1004は、例えばDeep Learningのニューラルネットワークで実現できる。ニューラルネットワークの層数や各層の構成については、学習モデル情報700に基づき設定される。
【0120】
データ入力部1003は、能力獲得モデル1002の外部からデータを受け取り、必要な処理を行った後、能力獲得部1004にデータを入力する、という動作をシミュレートする。データ入力部1003は、対象装置104の基本構成902からデータを受け取ることもできるし、対象装置104の外部からデータを受け取ることもできる。対象装置104の外部からデータを受け取る形態としては、例えば、対象装置104に接続されたセンサからセンサデータを取得する形態、データベースからデータを取得する形態、ネットワークを通じてデータストリームを受信する形態などが想定される。
【0121】
データ出力部1005は、能力獲得部1004からデータを受け取り、必要な処理を行った後、能力獲得モデル1002の外部にデータを出力する、という動作をシミュレートする。データ出力部1005は、例えば、能力獲得部1004のニューラルネットワークの出力を、対象装置104の基本構成902あるいは対象装置104の外部の装置が必要とするデータ形式に変換する。
【0122】
基本構成モデル1006は、対象装置104の基本構成902の動作をシミュレートする。能力獲得部1004が対象装置104の基本構成902と相互に影響する場合、データ入力部1003は基本構成モデル1006から必要なデータを取得し、データ出力部1005は能力獲得部1004の出力を基本構成モデル1006へ引き渡す。
【0123】
対象モデル1007は、対象装置104の外部の対象105をシミュレートする。例えば、対象モデル1007は、対象装置104が接続される他の装置、対象装置104の周囲の環境(物理現象を含む)、対象装置104が取り扱う器具、対象装置104が生産・加工する物体、対象装置104を操作するオペレータなどをシミュレートする。
【0124】
学習シミュレータ203は、例えば、インターネット上に設置されるクラウドサーバ群により構成してもよいし、ローカルエリアネットワーク上に存在するプライベートサーバ群により構成してもよい。シミュレーション処理を高速化するため、組込シミュレータのような専用システムを用いてもよい。ソフトウェア処理の一部をハードウェアに置き換えた構成としてもよい。学習モデルごとに、例えばデータ量が多い依頼や、階層数が多い構成、学習にリアルタイム性が求められる構成など、シミュレーションを実施する装置として最適なものを選択するようにできる。
【0125】
シミュレーションは、例えば、多数のCPUによる分散処理を利用する方法、GPUと呼ばれる高速演算装置を利用する方法などで高速化できる。またFPGAなどでニューロ回路を構成することで、並列動作が行われ、シミュレーションを高速化することができる。このような高速化の方法を学習シミュレータモデルに含めることができる。
【0126】
シミュレータを実機(依頼者101の対象装置104)に接続した構成にすることができる。例えば、依頼者101の対象装置104をシミュレータ(シミュレータを実行するコンピュータ)に接続してもよい。あるいは依頼者101の対象装置104が有する回路(CPU、GPU、FPGAなど)でシミュレーションを実行するようにできる。IoTの技術を適用することで、リアルタイムのビッグデータを扱うことが可能になる。この技術を利用し、依頼者101の対象装置104に関する各種データをインターネットを介してリアルタイムにシミュレータに送り、そのデータを用いてシミュレーションを行うこともできる。あるいは、シミュレータが対象装置104のモデルに相当する機能を備えるようにしてもよい。
【0127】
サービスを提供する装置をシミュレータとして利用してもよい。例えば、自然言語処理によるWebサービスの場合、クラウド上のサーバ資源を使って、Webサービスと学習サービスの双方を実施することができる。
【0128】
(学習指令部202)
学習指令部202は、トレーニングの設定および制御を担う処理部であり、
図11に示すように、トレーニング設定部1000とトレーニング制御部1001を有する。トレーニング設定部1000は、依頼者101から受け付けた学習依頼情報102および対応するトレーニング情報304に基づいて、学習シミュレータ203に対しトレーニングに必要な設定を行う。トレーニング制御部1001は、学習シミュレータ203を制御してトレーニングを実施し、対象装置104に追加する能力を開発(学習により生成)する。
【0129】
具体的には、トレーニング設定部1000は、学習モデル情報700に基づき、学習の目標、データ入力部1003およびデータ出力部1005の入出力データの仕様や処理内容、能力獲得部1004の内部構成、トレーニングプログラムなどを設定する。また、トレーニング設定部1000は、対象装置モデル情報701に基づき、対象装置104の基本構成モデル1006、能力獲得モデル1002との間の入出力などを設定し、さらに、対象モデル情報702に基づき、対象モデル1007を設定する。
【0130】
(能力付与データ生成部204)
能力付与データ生成部204は、学習シミュレータ203の学習結果(トレーニングによって獲得した能力)を、対象装置104の能力受容部904に組み込むためのデータ(能力付与データ103)に変換する。学習結果から能力付与データ103を生成する変換プログラムは、あらかじめ能力付与データ生成モデル情報704により与えられる。この変換プログラムにより、対象装置104が有するハードウェア構成(例えば、FPGA、CPU、GPUなどの回路構成)に適合する能力付与データ103(例えば、プログラム、プログラムで使用するパラメータ)が生成される。能力付与データ103は前述のように能力設定データ、入力設定データ、出力設定データを含むとよい。
【0131】
(サービス提供部205)
サービス提供部205は、能力付与データ生成部204によって生成された能力付与データ103を依頼者101に提供する。提供方法はいかなる方法でもよい。例えば、サービス提供部205は、電子的手段(例えば、電子メール、FTP、ファイルサーバからのダウンロードなど)を利用して能力付与データ103を依頼者101に送信してもよい。また、サービス提供部205は、能力付与データ103をDVD−ROMのような記録媒体に記録し、依頼者101に送付してもよい。また、サービス提供部205は、ネットワークを介して、能力付与データ103を依頼者101の対象装置104に直接送信してもよい。能力付与データ103は、対象装置104で実行可能なプログラムとして提供されてもよいし、クラウド上で実行されるプログラムやクラウドから提供されるサービスとして提供されてもよい。また、能力付与データ103を複数の装置を組み合わせたIoTサービスの形態で提供してもよい。また、能力付与データ103を半導体部品に組み込んだり、対象装置104に組み込み可能な部品に実装してもよい。あるいは、サービスマンが依頼者101のところに出向き、対象装置104に能力付与データ103を実装してもよい。また、対象装置104を依頼者101から預かり、能力付与データ103を組み込んだ後、対象装置104を返却してもよい。
【0132】
(システムの動作)
図12に学習サービス提供システム100における学習依頼の受け付けから能力付与データの提供までの処理フローを示す。
【0133】
依頼者101がインターネットを介して本システム100にアクセスし新規の学習依頼を申し込むと、依頼受付部200が学習依頼の受け付けを開始する(ステップS1200)。依頼受付部200は、依頼入力画面を依頼者101の端末805に提示し、希望する学習モデルおよび学習に必要な情報を依頼者101に入力させる(ステップS1201)。学習依頼情報の入力が完了すると(ステップS1202のYES)、依頼受付部200が学習依頼情報102を依頼情報DB802に登録し、学習指令部202に新規の学習依頼を受け付けた旨を通知する(ステップS1203)。
【0134】
図13に学習依頼情報102のデータ構造の一例を示す。学習依頼情報102は、学習目標情報1300と学習モデル識別情報1301と学習モデルパラメータ1302を含む。学習目標情報1300は、依頼者101により指定された学習目標に関する情報を含む。学習モデル識別情報1301は、依頼者101により指定された学習モデルに対応するトレーニング情報304を特定する情報(例えば、トレーニング情報DB302におけるトレーニング情報304のIDなど)を含む。学習モデルパラメータ1302は、学習モデルの各パラメトリック項目について依頼者101により入力された情報を含む。
【0135】
次に、学習指令部202は、学習依頼情報102に従って学習シミュレータ203に対し学習モデル、対象装置モデル、対象モデルなどの設定を行い(ステップS1204)、学習シミュレータ203を制御してトレーニングを実施する(ステップS1205)。例えば、Deep Learningなどのニューラルネットワークの場合であれば、複数の層のそれぞれについて段階的にパラメータを変えながら出力を評価し、学習目標との適合度が高くなるようにパラメータの最適化を行う。学習目標に対する適合度があらかじめ設定された完了条件を満足したら(ステップS1206のYES)、学習指令部202はトレーニングを終了する。
【0136】
次に、能力付与データ生成部204は、学習シミュレータ203の学習結果(トレーニングによって獲得した能力)に基づき能力付与データ103を生成する(ステップS2107)。最後に、サービス提供部205が、能力付与データ103を依頼者101に提供する(ステップS1208)。
【0137】
<本システムの利点>
依頼者101にとっては次のような利点がある。まず、このシステム100を利用すれば、依頼者101自身は機械学習を実施する必要がないので、対象装置104に新たな能力を追加するための開発業務を効率化することができる。また、依頼者101は機械学習に必要な情報を与えるだけでよいので、機械学習に関する知識やシステムをもたない者でも本システム100の利用が容易である。また、学習結果が能力付与データ103(新たな能力を対象装置104に追加するデータ)で提供されるので、依頼者101は、機械学習により獲得された新たな能力を自身の装置104に簡単に追加することができる。
【0138】
一方、サービス提供者にとっては次のような利点がある。機械学習を行うために必要な情報は依頼者101から提供されるので、依頼どおりの機械学習の実行が担保できる。また、依頼者101からの依頼の受け付け、機械学習の実施などの処理を可及的に自動化・省力化できる。さらに学習結果を能力付与データ103に変換し依頼者101に提供するので、学習結果の提供および対象装置104への実装についても可及的に自動化・省力化することができる。
【0139】
また、機械学習の過程で対象装置モデルや対象モデルを用いたシミュレーションを行うことにより、対象装置104の実機がなくても、対象装置104や対象105の振る舞いや影響などを考慮した機械学習を行うことができる。対象装置104の実機が不要となれば、機械学習の代行がきわめて実現容易となる。特に、生産設備のように大型の装置や稼働中の装置の場合、実機を機械学習に利用することは現実的でない。本学習サービスはそのようなケースでも利用可能であり、適用の自由度および利便性に優れる。
【0140】
また、能力獲得モデル500によりモデル化されるアーキテクチャと、能力付与データ103に基づいて機能を設定する能力設定部900とを設けたことにより、対象装置104への新たな能力の組み込みが容易に実現できる。これにより、外部から提供される新たな能力を簡単に追加できる仕組みをもつ、拡張性に優れた対象装置104を提供することができる。また、新たな能力の開発を外部委託することが容易になり、開発業務の効率化を図ることができる。
【0141】
なお、上述した実施形態の構成は本発明の一具体例を示したものにすぎず、本発明の範囲を限定する趣旨のものではない。本発明はその技術思想を逸脱しない範囲において、種々の具体的構成を採り得るものである。例えば上記実施形態で示したシステム構成、データ構造、ユーザインタフェース、パラメータ等は一例であり、機械学習の種類、学習の目的、獲得したい能力、対象装置の構成等に応じて適宜変更することができる。また、上記実施形態では、対象装置104に追加する新たな能力を機械学習によって獲得する例を示したが、能力の獲得方法は機械学習に限られない。例えば、有限要素法を用いた三次元構造シミュレーション、流体シミュレーション、最適化問題などで獲得される能力でもよいし、人が開発した能力でもよい。
【0142】
(付記1)
少なくとも1つのメモリと、前記メモリと接続された少なくとも1つのハードウェアプロセッサとを備え、
前記ハードウェアプロセッサが、自装置の基本構成に追加的に新たな能力を組み込むためのアーキテクチャとして、能力を実行する能力部、前記能力部の入力のインタフェースであるデータ入力部、および、前記能力部の出力のインタフェースであるデータ出力部を含む能力獲得モデルによりモデル化されるアーキテクチャを構成し、
前記ハードウェアプロセッサが、能力設定データ、入力設定データ、および出力設定データを含む能力付与データに基づいて、前記能力部、前記データ入力部、および前記データ出力部のそれぞれに機能を設定することにより、自装置に新たな能力を追加する、
拡張性保有装置。