(57)【要約】  学習モデルを訓練して実用モデルを作成し、それを実用する作業を支援する。  計算機システム５０は、１以上の学習部１０２に学習モデルを用意し、データソース１１１から学習データを入力し、学習データを用いて１以上の学習モデルを訓練する。訓練された１以上の学習モデルに基づいて、１以上の実用モデルが決定され、その１以上の実用モデルが、１以上の推論部１１４にデプロイされる。１以上の推論部１１４の各々が、データソース１１１から実用データを入力し、実用データを実用モデルに与えて推論を実行し、実用モデルから出力された推論結果データをデータターゲット１１３へ送信する。
2019003485.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも１つのプロセッサにより処理され得るデータを格納し得る、少なくとも１つの記憶デバイスと
前記少なとも１つのプロセッサと少なくとも１つの通信ネットワークとに接続された少なくとも１つのインタフェースと
を備えた少なくとも１つの物理計算機を有し、
前記少なくとも１つのプロセッサが、
１以上の学習モデルを用意し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのデータソースから学習データを入力して、前記入力された学習データを前記少なくとも１つ記憶デバイスに格納し、
前記学習データを用いて前記１以上の学習モデルの機械学習を行うことにより、１以上の学習済みモデルを生成し、
前記１以上の学習済みモデルに基づいて、少なくとも１つの実用モデルを決定し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのデータソースから実用データを入力し、
前記実用データを用いて、前記少なくとも１つの実用モデルによる推論を実行し、
前記推論により前記少なくとも１つの実用モデルから出力される推論結果データを、前記少なくとも１つのインタフェースを通じて少なくとも１つのデータターゲットへ送信する
ように構成された計算機システム。
【請求項２】
前記少なくとも１つのプロセッサが、
１以上の空き仮想ユニットを用意し、各空き仮想ユニットが入力モジュールと出力モジュールとを有し、
前記少なくとも１つの空き仮想ユニットのうちの少なくとも１つに、前記少なくとも１つの実用モデルを組み込むことにより、少なくとも１つの占有仮想ユニットを用意し、
前記少なくとも１つの占有仮想ユニットにおいて、
前記入力モジュールを通じて、前記実用データを、前記少なくとも１つの実用モデルに入力して、前記少なくとも１つの実用モデルによる前記推論を実行し、
前記推論の実行によって前記少なくとも１つの実用モデルから出力された前記推論結果データを前記占有仮想ユニットから出力し、
前記占有仮想ユニットから出力される前記推論結果データを、前記少なくとも１つのインタフェースを通じて少なくとも１つのデータターゲットへ送信する
ように構成された
請求項１記載の計算機システム。
【請求項３】
前記各空き仮想ユニット内の前記入力モジュールと前記出力モジュールが、それぞれ、前記各空き仮想ユニットに組み込まれ得る実用モデルに依存しない構成をもつ汎用モジュールである、
請求項２記載の計算機システム。
【請求項４】
前記少なくとも１つのプロセッサが、
前記少なくとも１つの占有仮想ユニットに関するメタ情報を設定し、前記メタ情報が、前記入力モジュールと前記出力モジュールのうちの少なくとも１つの前記汎用モジュールの動作に関するパラメータを含み、
前記メタ情報に基づいて、前記少なくとも１つの汎用モジュールに前記パラメータを設定し、
前記設定されたパラメータに基づいて、前記少なくとも１つの汎用モジュールを動作させる、
ように構成された、
請求項３記載の計算機システム。
【請求項５】
前記少なくとも１つのプロセッサが、
前記少なくとも１つの占有仮想ユニットに関するメタ情報を設定し、
前記メタ情報が、前記少なくとも１つの実用モデルの属性を示す情報を含み、前記属性が、前記少なくとも１つの実用モデルの識別情報と存在場所を含み、
前記メタ情報に基づき、前記少なくとも１つの実用モデルを前記少なくとも１つの空き仮想ユニットに組み込む、
請求項２記載の計算機システム。
【請求項６】
前記少なくとも１つのプロセッサが、
２以上の所定数の空き仮想ユニットを初期的に用意し、
それにより、前記物理計算機の再起動を要することなく、前記所定数以下の範囲で前記占有仮想ユニットの数を変化させることができる、
ように構成された、
請求項２記載の計算機システム。
【請求項７】
前記少なくとも１つのプロセッサが、
前記１以上の学習済みモデルの精度を調べ、
前記１以上の学習済みモデルの前記精度に基づいて、前記少なくとも１つの実用モデルを決定する、
ように構成された、
請求項１記載の計算機システム。
【請求項８】
前記少なくとも１つのプロセッサが、
前記１以上の学習済みモデルの精度を調べ、
前記１以上の学習済みモデルの前記精度に基づいて、前記１以上の学習済みモデルの中から少なくとも１つの学習済みモデルを選び、前記選ばれた学習済みモデルの追加の機械学習を行う、
ように構成された、
請求項１記載の計算機システム。
【請求項９】
前記少なくとも１つのプロセッサが、
前記実用データ及び前記推論結果データのうちの少なくとも一方のデータを用いた統計処理を行う、
ように構成された、
請求項１記載の計算機システム。
【請求項１０】
前記少なくとも１つのプロセッサが、
前記少なくとも１つのインタフェースを通じて少なくとも１つのアノテータ端末へ、前記学習データを送信し、
前記少なくとも１つのインタフェースを通じて前記少なくとも１つのアノテータ端末から、前記学習データに関係するアノテーション結果を受信し、
前記受信されたアノテーション結果を、前記学習データに関連付けて、前記少なくとも１つの記憶デバイスに格納し、
前記学習データとそれに関連付けられた前記アノテーション結果とを、教師データとして用いて、前記１以上の学習モデルの前記機械学習を行う
ように構成された請求項１記載の計算機システム。
【請求項１１】
１以上の学習モデルを用意するステップと、
少なくとも１つのデータソースから学習データを入力するステップと、
前記入力された学習データを用いて、前記１以上の学習モデルの機械学習を行うことにより、１以上の学習済みモデルを生成するステップと、
前記１以上の学習済みモデルに基づいて、少なくとも１つの実用モデルを決定するステップと、
少なくとも１つのデータソースから実用データを入力するステップと、
前記入力された実用データを用いて、前記少なくとも１つの実用モデルによる推論を実行するステップと、
前記推論の実行により前記少なくとも１つの実用モデルから出力された推論結果データを得るステップと、
前記得られた推論結果データを、少なくとも１つのデータターゲットへ送信するステップと
を有する、計算機システムにより行われる方法。
【請求項１２】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも１つのプロセッサにより処理され得るデータを格納し得る、少なくとも１つの記憶デバイスと、
前記少なとも１つのプロセッサと少なくとも１つの通信ネットワークとに接続された少なくとも１つのインタフェースと
を備え、
前記少なくとも１つのプロセッサが、
１以上の学習モデルを用意し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのデータソースから少なくとも１単位の学習データを入力して、前記入力された学習データを前記少なくとも１つ記憶デバイスに格納し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのアノテータ端末へ、前記少なくとも１単位の学習データを送信し、
前記少なくとも１つのインタフェースを通じて前記少なくとも１つのアノテータ端末から、前記少なくとも１単位の学習データにそれぞれ関係する少なくとも１つのアノテーション結果を受信し、
前記受信された少なくとも１つのアノテーション結果を、前記少なくとも１単位の学習データにそれぞれ関連付けて、前記少なくとも１つの記憶デバイスに格納し、
前記少なくとも１単位の学習データとそれに関連付けられた前記少なくとも１つのアノテーション結果とを、教師データとして用いて、前記１以上の学習モデルの前記機械学習を行うことにより、１以上の学習済みモデルを生成する、
ように構成された計算機システム。
【請求項１３】
前記少なくとも１つのプロセッサが、
複数単位の学習データにそれぞれ関連付けられた複数のタスクを作成し、
前記複数のタスクにそれぞれ優先度を設定し、
前記優先度に応じた順序で、前記複数のタスクの中から各タスクを選択し、
選択された各タスクを前記少なくとも１つアノテータ端末にアサインし、
前記アサインされた各タスクに関連付けられた少なくとも１単位の学習データを、前記少なくとも１つのアノテータ端末に送信し、
前記少なくとも１単位の学習データに関するアノテーション結果を、前記少なくとも１つのアノテータ端末から受信し、
前記受信したアノテーション結果を前記少なくとも１つの記憶デバイスに格納する、
ように構成された、
請求項１２記載の計算機システム。
【請求項１４】
前記少なくとも１つのプロセッサが、
前記複数のタスクに関連する前記アノテーション結果の分布に応じて、前記複数のタスクの前記優先度を変更する、
ように構成された、
請求項１３記載の計算機システム。
【請求項１５】
前記少なくとも１つのプロセッサが、
前記少なくとも１つの学習データに関連付けられた少なくとも１つのタスクを作成し、
最大アサイン数を設定し、
前記少なくとも１つのタスクを、前記最大アサイン数以下の数の複数のアノテータ端末にアサインし、
前記少なくとも１つのタスクに関連付けられた少なくとも１単位の学習データを、前記少なくとも１つのタスクがアサインされた前記複数のアノテータ端末に送信し、
前記複数のアノテータ端末から、前記少なくとも１単位の学習データに関する複数のアノテーション結果を受信し、
前記受信した複数のアノテーション結果を前記少なくとも１つの記憶デバイスに格納する、
ように構成された、
請求項１２記載の計算機システム。
【請求項１６】
前記少なくとも１つのプロセッサが、
前記少なくとも１つの学習データに関連付けられた少なくとも１つのタスクを作成し、
前記少なくとも１つのタスクを前記少なくとも１つのアノテータ端末にアサインし、
前記アサインされた少なくとも１つのタスクに関連付けられた少なくとも１単位の学習データを、前記少なくとも１つのアノテータ端末に送信し、
前記少なくとも１つのタスクの前記少なくとも１つのアノテータ端末へのアサインに有効期限を設定し、
前記少なくとも１つのアノテータ端末から前記アサインに関連するアノテーション結果が受信されないまま前記アサインの前記有効期限が満了した場合、前記アサインを無効化し、それにより、同じ少なくとも１つのタスクを他の少なくとも１つのアノテーション端末に改めてアサインできるようにする、
ように構成された、
請求項１２記載の計算機システム。
【請求項１７】
前記少なくとも１つのプロセッサが、
前記少なくとも１つのアノテータ端末が前記少なくとも１つの学習データについて前記少なくとも１つのアノテーション結果を作成するのに要した作業時間を計算し、
前記少なくとも１つのアノテータ端末について計算された前記作業時間に関する情報を、少なくとも１つの他の端末に送信する、
ように構成された、
請求項１２記載の計算機システム。
【請求項１８】
前記少なくとも１つのプロセッサが、
前記少なくとも１つの学習データに関連付けられた少なくとも１つのタスクを作成し、
前記少なくとも１つのタスクを前記少なくとも１つのアノテータ端末にアサインし、
前記少なくとも１つのアノテータ端末が前記アサインされたタスクについて所定の動作をした場合、前記アサインされたタスクに関連するイシューを作成し、
前記作成されたイシューを、少なくとも１つの他の端末へ送信し、
前記少なくとも１つの他の端末から、前記イシューに関するガイドを受信し、
前記受信されたガイドを、前記少なくとも１つのアノテータ端末へ送信可能にする、
ように構成された、
請求項１２記載の計算機システム。
【請求項１９】
前記少なくとも１つのプロセッサが、
前記少なくとも１つのアノテータ端末へ送信される少なくとも１単位の学習データを、前記少なくとも１つの学習モデルに入力し、
前記少なくとも１単位の学習データが入力された前記少なくとも１つの学習モデルから出力される出力データを受けて、前記少なくとも１単位の学習データに関連するサジェッションを用意し、
前記少なくとも１単位の学習データに関連するサジェッションを、前記少なくとも１つのアノテータ端末へ送信可能にする、
ように構成された、
請求項１２記載の計算機システム。
【請求項２０】
１以上の学習モデルを用意するステップと、
少なくとも１つのデータソースから少なくとも１単位の学習データを入力するステップと、
少なくとも１つのアノテータ端末へ、前記少なくとも１単位の学習データを送信するステップと、
前記少なくとも１つのアノテータ端末から、前記少なくとも１単位の学習データに関係するアノテーション結果を受信するステップと、
前記少なくとも１単位の学習データとそれに関連付けられた前記アノテーション結果とを、教師データとして用いて、前記１以上の学習モデルの前記機械学習を行うステップと、
を有する、計算機システムにより行われる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、計算機システムを用いた機械学習と推論の少なくとも一方に関する。
【背景技術】
【０００２】
近年、画像識別、自動株式取引、自動翻訳などに、実用可能に構成されたニューラルネットワークを用いた推論が利用されている。例えば、特許文献１は、専門家が点検した画像である訓練データをニューラルネットワーク（以下、ＮＮ）に適用可能なことを開示している（段落００５６及び段落００５８）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１６−５１７０５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、利用目的に応じてＮＮの機械学習を適切に行い、そして、その機械学習を完了したNNをコンピュータ上にデプロイして実用に供することは、多くのユーザにとって容易ではない。【０００５】
このような課題は、ＮＮ以外の機械学習可能な計算モデル（つまり、いわゆるＡＩ（Artificial Intelligence）全般）についてもあり得る。
【課題を解決するための手段】
【０００６】
本開示の一つの側面に従う計算機システムは、少なくとも１つのプロセッサと、前記少なくとも１つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも１つのプロセッサにより処理され得るデータを格納し得る、少なくとも１つの記憶デバイスと、前記少なとも１つのプロセッサと少なくとも１つの通信ネットワークとに接続された少なくとも１つのインタフェースとを備えた物理計算機を有する。そして、前記少なくとも１つのプロセッサが、
１以上の学習モデルを用意し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのデータソースから学習データを入力して、前記入力された学習データを前記少なくとも１つ記憶デバイスに格納し、
前記学習データを用いて前記１以上の学習モデルの機械学習を行うことにより、１以上の学習済みモデルを生成し、
前記１以上の学習済みモデルに基づいて、少なくとも１つの実用モデルを決定し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのデータソースから実用データを入力し、
前記実用データを用いて、前記少なくとも１つの実用モデルによる推論を実行し、
前記推論により前記少なくとも１つの実用モデルから出力される推論結果データを、前記少なくとも１つのインタフェースを通じて少なくとも１つのデータターゲットへ送信する
ように構成される。この一側面に従う計算機システムは、学習モデルの機械学習を行ない、その機械学習の結果に基づいて実用モデルを用意し、その実用モデルを実際の推論に供するという作業に関して、ユーザを支援する。【０００７】
本開示の別の一つの側面に従う計算機システムは、少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも１つのプロセッサにより処理され得るデータを格納し得る、少なくとも１つの記憶デバイスと、前記少なとも１つのプロセッサと少なくとも１つの通信ネットワークとに接続された少なくとも１つのインタフェースとを備える。前記少なくとも１つのプロセッサが、
１以上の学習モデルを用意し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのデータソースから少なくとも１単位の学習データを入力して、前記入力された学習データを前記少なくとも１つ記憶デバイスに格納し、
前記少なくとも１つのインタフェースを通じて少なくとも１つのアノテータ端末へ、前記少なくとも１単位の学習データを送信し、
前記少なくとも１つのインタフェースを通じて前記少なくとも１つのアノテータ端末から、前記少なくとも１単位の学習データにそれぞれ関係する少なくとも１つのアノテーション結果を受信し、
前記受信された少なくとも１つのアノテーション結果を、前記少なくとも１単位の学習データにそれぞれ関連付けて、前記少なくとも１つの記憶デバイスに格納し、
前記少なくとも１単位の学習データとそれに関連付けられた前記少なくとも１つのアノテーション結果とを、教師データとして用いて、前記１以上の学習モデルの前記機械学習を行うことにより、１以上の学習済みモデルを生成する、
ように構成される。この別の側面に従う計算機システムは、教師データを用意し、その教師データを用いて学習モデルの機械学習を行なうという作業に関して、ユーザを支援することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係る計算機システムの物理構成を示す。
【図２】計算機システムの論理構成を示す。
【図３】少なくとも１つの物理計算機の論理構成を示す。
【図４】仮想ユニットの構成の詳細を示す。
【図５】利用目的に対応した実用ＮＮ（ニューラルネットワーク）の生成とデプロイに関する処理全体の流れを示す。
【図６】計算機システムのアノテーション部の構成を示す。
【図７】アノテーション部の管理データベースの構成を示す。
【図８】アノテーション業務の開始の制御の流れを示す。
【図９】アノテーション業務のアノテーション生成の制御の流れを示す。
【図１０】図９に示された流れ中のアサイン処理の制御の流れを示す。
【図１１】図９に示された流れにサジェッションのプロセスを追加した制御の流れを示す。
【図１２】アノテーション業務のレビューとその結果の報告の制御の流れを示す。
【図１３】アノテーション業務と同時並行的に行われる自動学習の制御の流れを示す。
【図１４】タスクの優先度の自動変更の制御の流れを示す。
【図１５】アノテーション業務のイシュー管理の制御の流れを示す。
【発明を実施するための形態】
【０００９】
以下、本発明の一実施形態を説明する。
【００１０】
なお、以下の説明では、「インタフェース部」は、１以上のインタフェースを含む。１以上のインタフェースは、１以上の同種のインタフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種のインタフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１１】
また、以下の説明では、「記憶部」は、メモリ及びストレージを含む。ストレージは、１以上の記憶デバイスを有し、その各記憶デバイスは典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）、例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive）である。メモリは、１以上の記憶デバイスを有し、その各記憶デバイスは揮発性の記憶デバイスであってもよいし不揮発性の記憶デバイスであってもよい。
【００１２】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）である。プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでもよい。
【００１３】
また、以下の説明では、「プログラム」は、プロセッサ部により実行可能な命令のセットである。プログラムつまり命令セットがプロセッサ部によって実行されることで、以下の説明されるような様々な処理、制御又は機能が、適宜に記憶部（例えばメモリ）及び／又はインタフェース部を用いながら、行われる。したがって、以下の説明では、プログラムを主語として処理、制御又は機能を説明する場合があるが、その主語が、プロセッサ部（あるいは、そのプロセッサ部を有する装置又はシステム）とされてもよい。プログラムは、プログラムソースから計算機システムにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体であってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。プログラムは、典型的には計算機システムのストレージに格納される。
【００１４】
また、「データセット」とは、アプリケーションプログラムのようなプログラムから見た１つの論理的な電子データの塊又は集合であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。データセット又はデータセットに含まれるそれぞれの単位のデータは、典型的には計算機システムのストレージに格納される。
【００１５】
図１は、本発明の一実施形態に係る計算機システムの物理構成を示す。
【００１６】
計算機システム５０は、ネットワーク２４０に接続された複数（又は１つ）の物理計算機２０１で構成される。
【００１７】
ネットワーク２４０は、１以上の通信ネットワークであり、例えば、ＦＣ（Fibre Channel）ネットワークとＩＰ（Internet Protocol）ネットワークとのうちの少なくとも１つを含んでよい。ネットワーク２４０は、計算機システム５０の外に存在してもよい。
【００１８】
各物理計算機２０１は、例えば汎用計算機であり、物理コンピュータリソース３３０を有する。物理コンピュータリソース３３０は、ネットワーク２４０に接続されたインターフェース部２５１、記憶部２５２及びそれらに接続されたプロセッサ部２５３を含む。
【００１９】
計算機システム５０は、例えば、ＸａａＳ（X as a Service）を提供するクラウドコンピューティングシステムでよい。なお、「ＸａａＳ」とは、一般には、システムの構築又は運用に必要な何らかのリソース（例えば、ハードウェア、回線、ソフトウェア実行環境、アプリケーションプログラム、開発環境など）をインターネットのようなネットワークを通じて利用できるようにしたサービスを意味する。ＸａａＳの「Ｘ」として採用される文字（又はワード）は、ＸａａＳのタイプ（サービスモデル）によって異なる。例えば、ＸａａＳの例として、ＰａａＳ（Platform as a Service）、ＳａａＳ（Software as a Service）、ＰａａＳ（Platform as a Service）、ＩａａＳ（Infrastructure as a Service）又はＨａａＳ（Hardware as a Service）がある。
【００２０】
図２は、計算機システム５０の論理構成を示す。
【００２１】
計算機システム５０は、機械学習可能な１以上の計算モデルの学習及び推論のうちの少なくとも１つを支援する学習推論支援システム１００を提供する。ここで、「計算モデル」とは、コンピュータにより実施される計算プロセス、つまり、コンピュータ上で実現される計算システムである。計算モデルは、本実施形態ではNN（ニューラルネットワーク）であるが、NNは一つの例示であり、計算モデルが必ずしもNNでなければならないわけではなく、他の種類の計算プロセス又は計算システムであってもよい。学習推論支援システム１００は、例えば、計算機システム５０が提供するクラウドプラットフォーム上に実現されるシステムでよい。学習推論支援システム１００は、学習推論システム１０１と、学習推論システム１０１を管理する管理システム１６１とを含む。管理システム１６１は、学習推論システム１０１以外のシステムを管理するシステムでもよい。
【００２２】
学習推論システム１０１は、１以上の計算モデル、例えばNN、を用いた機械学習（例えば、ディープラーニング）と、機械学習を終えた１以上の計算モデル、例えばNN、を用いた推論とを行うシステムである。学習推論システム１０１は、ネットワーク１４０を通じて、１以上のデータソース１１１、１以上のデータターゲット１１３及び１以上のユーザ端末１１２に接続される。ネットワーク１４０は、上述のネットワーク２４０でもよいし、ネットワーク２４０とは異なるネットワークでもよい。ネットワーク１４０も、１以上の通信ネットワークでよい。
【００２３】
データソース１１１は、データセットのソース（読込み元）である。データターゲット１１３は、データセットのターゲット（出力先）である。データソース１１１及びデータターゲット１１３のいずれも、例えば、Ｗｅｂサイト、ネットワークストレージ及びユーザ端末１１２のいずれであってもよい。
【００２４】
ユーザ端末１１２は、ユーザが使用する計算機（クライアント）である。ユーザ端末１１２は、例えば、学習やデプロイ（展開）を学習推論システム１０１に指示するのに使用される。ユーザ端末１１２は、いわゆるクラウドワーカが使用する計算機であってもよい。
【００２５】
データソース１１１、データターゲット１１３及びユーザ端末１１２のうちの少なくとも１つは、計算機システム５０において実現されるシステム（例えば仮想計算機）でもよい。
【００２６】
学習推論システム１０１は、入力ＡＰＩ（Application Programming Interface）１０６、入力メタ情報１２１、データプール１０５、抽出部１１９、抽出メタ情報１２９、非構造化ストレージ１０４、アノテーション部１０３、アノテーションメタ情報１３０、学習部１０２、仮想ＮＮホスト１１６、推論部１１４、推論／統計部１１５、出力ＡＰＩ１０７及び出力メタ情報１２２を有する。入力ＡＰＩ１０６（入力部の一例）、抽出部１１９、アノテーション部１０３、学習部１０２、仮想ＮＮホスト１１６、推論部１１４、推論／統計部１１５及び出力ＡＰＩ１０７（出力部の一例）のうちの少なくとも１つは、１以上のプログラムである（別の言い方をすれば、１以上のプログラムがプロセッサ部によって実行されることにより実現される機能である）。また、学習推論システム１０１においては、２以上の学習部１０２が並列に実行されてもよいし、２以上の推論部１１４が並列に実行されてもよい。学習部１０２及び推論部１１４以外の要素のうちの少なくとも１つの要素が２以上存在してもよい。入力メタ情報１２１、抽出メタ情報１２９、アノテーションメタ情報１３０及び出力メタ情報１２２といった情報は、計算機システム５０における１以上の記憶部に２５２に格納される。また、データプール１０５及び非構造化ストレージ１０４といった記憶領域は、計算機システム５０における１以上の記憶部に２５２が提供する記憶領域である。
【００２７】
入力ＡＰＩ１０６は、入力メタ情報１２１を基に１以上のデータソース１１１から１以上のデータセットを読み込み、読み込んだデータセットをデータプール１０５に格納する。
【００２８】
入力メタ情報１２１は、入力ＡＰＩ１０６による読み込み対象のデータセットがもつ属性を示す情報であり、例えば、データセットが格納されている場所や、データセットの識別子を示す情報を含む。
【００２９】
データプール１０５は、データセットを格納する論理的な記憶領域の一例である。具体的には、データプール１０５には、入力ＡＰＩ１０６が、１以上のデータソース１１１から読み込んだデータセットを格納する。また、データプール１０５には、推論部１１４及び推論／統計部１１５のうちの少なくとも１つが、推論結果としてのデータセットを格納してもよい。データプール１０５には、構造化データセットと非構造化データセットが混在し得る。ここで、構造化データとは、例えば、「商品Aの売り上げ金額はBである」というような情報を示すＰＯＳ（Point Of Sales）データ、あるいは、「A地域の天候はBである」というような情報を示す天気データ等のように、計算機で統計処理が行えるような意味づけが予め含まれているデータを指す。他方、非構造化データとは、例えば単なる画像、テキスト又は音声のデータのように、計算機で統計処理が行えるような意味づけが含まれてないデータを指す。
【００３０】
抽出部１１９は、抽出メタ情報１２９を基にデータプール１０５から非構造化データセットを抽出し、その非構造化データセットを非構造化ストレージ１０４に格納する。
【００３１】
抽出メタ情報１２９は、抽出部１１９による抽出の対象の非構造化データセットの属性を示す情報であり、例えば、非構造化データセットの識別子を示す情報を含む。抽出される非構造化データセットは、学習や検証のための非構造化データセット、例えば、犬や猫といった動物が写っている写真画像ファイルである。抽出メタ情報１２９は、抽出対象の属性を示す情報を、ユーザの利用目的毎に含んでいてもよい。
【００３２】
非構造化ストレージ１０４は、抽出部１１９により抽出された非構造化データセットが格納される。なお、格納される非構造化データセットには、抽出部１１９によって、その非構造化データセットに関連付けられる可能性のあるメタ情報（例えば、抽出メタ情報１２９から抽出されたメタ情報）が、見込み情報（probability）として付加される。非構造化ストレージ１０４に格納されている非構造化データセットのうち、学習部１０２での機械学習でNNに入力されることになるデータ（学習データ）のセットを、「学習データセット」と言う。学習データセットに含まれるそれぞれの学習データには、アノテーション部１０３によりアノテーション結果と関連付けられ得る。そして、学習データとそれに関連付けられたアノテーション結果とを「教師データ」といい、教師データのセットを「教師データセット」と言う。学習データは、例えば単なる画像データ、音声データあるいはテキストデータのような非構造化データであってもよく、あるいは、ＰＯＳデータのように、データに何らかの意味づけが予め付与されている構造化データであってもよい。
【００３３】
アノテーション部１０３は、学習データセットに対してアノテーション結果を関連付ける作業（以下、これを「アノテーション作業」という）を制御する。具体的には、例えば、アノテーション部１０３は、アノテーションメタ情報１３０を基に、下記を行う。
・ユーザ端末１１２に、非構造化ストレージ１０４内の学習データセットに対するアノテーション結果（例えば、それぞれの学習データの分類名を示すラベル）の入力（アノテーション作業）の依頼を送信する。
・その依頼を受けたユーザ端末１１２から、その学習データセットについてのアノテーション結果を受ける。
・受けたアノテーション結果を、その学習データセットに関連付ける。
・アノテーション結果が関連付けられた学習データセット（教師データセット）を、データプール１０５に格納する。
【００３４】
より具体的には、例えば、アノテーション部１０３は、定期的に又は不定期的に、自動で、クラウドワーカのユーザ端末１１２に、学習データセットに対するアノテーション結果の入力の依頼を送信する（例えば、アノテーション結果入力用のＷｅｂページへのリンクが張られた電子メール又はメッセージを送信する）。その依頼を受けたユーザ端末１１２に、学習データ（例えば、犬又は猫が写った１枚以上の写真画像）と、その学習データに関する質問（例えば、「各写真画像の動物は犬か猫か？」）と、その質問に対する解答としてのアノテーション結果（例えば、「犬」又は「猫」のラベル）を入力するための入力ＵＩ（ユーザインターフェース）とを表示するＷｅｂページが提供される。Ｗｅｂページの中身は、アノテーションメタ情報１３０を基に決定されてよい。アノテーション部１０３は、Ｗｅｂページ経由でユーザ端末１１２から入力されたアノテーション結果を、対応する学習データに関連付ける。アノテーション部１０３は、アノテーション結果が関連付けられた学習データ（教師データ）をデータプール１０５に格納する。学習データセットに属する各単位の学習データに対して、このようにして、アノテーション結果が作成されて関連付けられる。
【００３５】
アノテーションメタ情報１３０は、アノテーション部１０３の動作の制御に関する情報を含んだ情報である。アノテーションメタ情報１３０は、アノテーション部１０３の動作の制御に関する情報を、ユーザの利用目的毎に含んでいてもよい。
【００３６】
学習部１０２は、機械学習を行うべき少なくとも１つのNN（以下、「学習ＮＮ」といい、又は、より一般的に「学習モデル」ともいう）を用意する。そして、学習部１０２は、その学習NNの機械学習つまり訓練（以下「学習処理」という）を行う。すなわち、学習部１０２は、図示しない学習メタ情報（例えば、読み込み対象の教師データセットの属性を示す情報を含んだ情報）に基づき、データプール１０５から教師データセットを読み込み、その読み込んだ教師データセットを上記学習NNに供給して、その学習NNをより最適に近いものに訓練する。本実施形態では、複数の学習部１０２が並行して動作することができ、それら複数の学習部１０２が複数の異なる学習NNをそれぞれ訓練することができる。それら複数の学習NNには、利用目的も構成も同じ複数の学習NNが含まれてもいいし、利用目的は同じであるが構成の異なる複数の学習NNが含まれてもいいし、利用目的も構成も異なる複数の学習NNが含まれてもいい。学習メタ情報は、学習部１０２に定義されているが、それに代えて、学習部１０２の外部に存在してもよい。学習部１０２での機械学習が完了した学習NN（以下「学習済みＮＮ」という）は、仮想ホストＮＮ１１６によりライブラリ化されて保存される（例えば、所定の記憶領域に格納される）。
【００３７】
仮想ＮＮホスト１１６は、各学習済みＮＮの出力精度を算出する検証処理を行う。仮想ＮＮホスト１１６は、検証処理の結果に基づいて、所定のルールに従い、１以上の学習済みＮＮを、実用に供されるNN（以下、「実用NN」といい、又はより一般的に「実用モデル」ともいう）として選ぶ。例えば、同じ利用目的の複数の学習済みNNがある場合、それらの中から、最も出力精度の高い１つの学習済みＮＮが、実用NNとして選ばれる。ライブラリ化されている１以上の学習済みＮＮのうち、実用ＮＮとして選ばれたものが、その利用目的に応じて、推論部１１４又は推論／統計部１１５にデプロイ（展開）されて、実用に供される。
【００３８】
推論部１１４にデプロイされる実用ＮＮは、主として非構造化データを入力とした特定目的の推論（例えば、動物の写真画像からその動物の種類を識別する）を行うためのNNモデルである。推論部１１４は、そこにデプロイされた実用NNを実行することにより、その特定の目的の推論処理を行う。例えば、推論部１１４は、図示しない推論メタ情報（例えば、読み込み対象のデータセットの属性を示す情報を含んだ後述のＡＰＰメタ情報の一例）に基づきデータプール１０５から、同推論目的のためのデータセット（以下「実用データセット」といい、例えば、動物が写っている写真画像のデータセット）を読み込み、その実用データセットをその実用NNに入力することで、その実用NNから出力データ（例えば、写真画像に写っているのは「犬」といった解答）を得て、その出力データのセット（以下「推論結果データセット」という）をデータプール１０５に格納する。なお、推論メタ情報は、後述するように推論部１１４内に存在する。また、２以上の推論部１１４が並行して実行される。
【００３９】
推論／統計部１１５にデプロイされる実用ＮＮは、主として推論結果データ及び／又は構造化データを入力とした特定目的の推論又は統計処理を行うためのNNモデルである。推論／統計部１１５は、そこにデプロイされた実用NNを用いて推論処理と統計処理とのうちの少なくとも１つを行う。具体的には、例えば、推論／統計部１１５は、図示しない推論／統計メタ情報を参照する。推論／統計メタ情報は、例えば、読み込み対象のデータセット（例えば、推論結果データセットと、構造化データセット）の属性を示す情報と、推論結果データセットとその推論結果データセットに関連付けられる値を示す構造化データセットとの関係を示す情報とを含む。推論／統計部１１５は、推論／統計メタ情報を基に、推論結果データセット及び／又は構造化データセットを読み込み、構造化データセットが示す値を関連付けた推論結果データセットを、推論／統計結果データセットとしてデータプール１０５に格納する。
【００４０】
出力ＡＰＩ１０７は、出力メタ情報１２２を基にデータプール１０５から出力対象のデータセット（典型的には、推論結果データセット、又は、推論／統計データセット）を読み込み、読み込んだデータセットを、出力メタ情報１２２から特定される出力先のデータターゲット１１３に出力する。出力メタ情報１２２は、出力ＡＰＩ１２２による読み込み対象のデータセットがもつ属性とそのデータセットの出力先とを示す情報であり、例えば、データセットＩＤとキーとの関係を示す情報と、出力先とキーとの関係を示す情報とを含む。
【００４１】
以上が、計算機システム５０の論理構成の説明である。
【００４２】
学習推論システム１０１では、学習部１０２と推論部１１４と推論／統計部１１５が設けられていて、学習部１０２での機械学習を完了した学習済みＮＮの中から実用NNとして選ばれたものが、空いている推論部１１４又は推論／統計部１１５に自動的にデプロイされ、推論部１１４又は推論／統計部１１５がその実用NＮを用いた推論処理を行う。つまり、ユーザの利用目的に応じた学習データセット又は実用データセットが学習推論システム１０１に入力されさえすれば、その利用目的に合致した学習ＮＮ又は実用NNが利用されることになる。このため、利用目的に応じた実用可能なＮＮ（又は計算モデル）を準備してこれを実用に供することが、ユーザにとって容易である。
【００４３】
なお、学習推論システム１０１では、入力ＡＰＩ１０６が読み込んだ学習データセットと実用データセット、アノテーション部１０３が得た教師データセット（アノテーション結果のセットが関連付けられた学習データセット）、推論部１１４から出力される推論結果データセット、及び、推論／統計部１１５から得られる推論／統計結果データセットといった、利用目的や処理方法の異なる複数のデータセット（例えば、中間結果としてのデータセットを含む）が、データプール１０５に集約される。このように複数のデータセットが一箇所に集まっているため、分析等の処理（例えば、推論／統計部１１５が行う処理）の利便性が高い。しかし、それら複数のデータセットがデータプール１０５のような一箇所の記憶領域に集約されることが必須ではない。複数のデータセットが、異なる複数の記憶領域に分散してもよい。
【００４４】
また、推論／統計部１１５は無くてもよい。その場合、出力ＡＰＩ１０７からデータターゲット１１３には、推論結果データセット（構造化データセットが示す値が関連付けられていないデータセット）が出力されてよい。
【００４５】
以下、推論部１１４（又は推論／統計部１１５）への実用ＮＮのデプロイに関する詳細を説明する。
【００４６】
図３は、物理計算機２０１の論理構成を示す。なお、図３に示す物理計算機２０１は、計算機システム５０のうちの全部又は一部の物理計算機２０１のうちの１つであり、図３に示す論理構成は、それらの物理計算機２０１の各々が有する。
【００４７】
物理計算機２０１が有する物理コンピュータリソース３５０上で、ホストＯＳ（Operating System）３１４が実行される。ホストＯＳ３１４上で、複数の仮想ユニット３０１が実行される。複数の仮想ユニット３０１にとってホストＯＳ３１４は共通したＯＳであるので、ホストＯＳ３１４は、「共有ＯＳ３１４」と呼ばれてもよい。
【００４８】
仮想ユニット３０１は、仮想的な実行環境であり、例えば、仮想計算機でもよいし、コンテナ（例えば、Ｌｉｎｕｘ  ＯＳ上で動作するコンテナ（Ｌｉｎｕｘは登録商標））と呼ばれる実行環境でもよい。本実施形態では、１つのＡＰＰ（アプリケーションプログラム）３０２につき１つの仮想ユニット３０１が存在するが、１つの仮想ユニット３０１に２以上のＡＰＰ３０２が存在してもよい。
【００４９】
仮想ユニット３０１において、ゲストＯＳ３０４が実行される。ゲストＯＳ３０４は、１つの仮想ユニット３０１につき１つであり、仮想ユニット３０１内のＯＳなので、「内部ＯＳ３０４」と呼ばれてもよい。ゲストＯＳ３０４上で、ミドルウェア３０３が実行され、ミドルウェア３０３上で、ＡＰＰ３０２が実行される。ミドルウェア３０３が無い仮想ユニット３０１があってもよく、そのような仮想ユニット３０１では、ゲストＯＳ３０４上でＡＰＰ３０２が実行される。
【００５０】
各仮想ユニット３０１において、ＡＰＰ３０２は、予め、入力モジュール４１、出力モジュール４３及び制御モジュール４５を有する。ＡＰＰ３０２には、後述するように、実用ＮＮを含む本体モジュール４２が動的にデプロイされる（換言すれば、動的に組み込まれる）。言い換えれば、ＡＰＰ３０２は、それが用意された初期時には、まだ本体モジュール４２がそこに組み込まれてない。このように本体モジュール４２の無い状態のＡＰＰ３０２を、以下「空きＡＰＰ３０２」と呼び、空きＡＰＰ３０２を有する仮想ユニット３０１を、以下「空き仮想ユニット３０１」と呼ぶ。空き仮想ユニット３０１における空きＡＰＰ３０２に対して、実用ＮＮが含まれた本体モジュール４２を、随時にデプロイする（つまり、随時に組み込む）ことができる。このように本体モジュール４２がデプロイされた（組み込まれた）状態のＡＰＰ３０２を、以下「占有ＡＰＰ３０２」と呼び、占有ＡＰＰ３０２を有する仮想ユニット３０１を、以下「占有仮想ユニット３０１」と呼ぶ。
【００５１】
ホストＯＳ３１４は、ホストＡＰＩ３１５を有する。各仮想ユニット３０１において、ゲストＯＳ３０４は、ゲストＡＰＩ３０５を有する。以下、各物理計算機２０１について、ホストＡＰＩ３１５のアドレスを、「ホストアドレス」と呼び、各仮想ユニット３０１におけるゲストＡＰＩ３０５のアドレスを、「ゲストアドレス」と呼ぶ。ホストアドレスもゲストアドレスも、例えば、ＩＰ（Internet Protocol）アドレスである。管理システム１６１（図２参照）は、各物理計算機２０１について、ホストアドレスに加えてゲストアドレスも管理する。
【００５２】
本実施形態では、少なくとも１つの物理計算機２０１において、物理コンピュータリソース３５０上で動くホストＯＳ３１４上に、複数の空き仮想ユニット３０１が初期的に設けられている。ホストＯＳ３１４上の仮想ユニット３０１の数は、動的に増えても又は減ってもよい（例えば、物理コンピュータリソース３５０の負荷に応じて仮想ユニット３０１の数が増えても又は減ってもよい）。しかし、本実施形態では、物理計算機２０１における仮想ユニット３０１の個数は、その物理計算機２０１における物理コンピュータリソース３５０を基に予め決められている。１つの物理計算機２０１に複数の空き仮想ユニット３０１が初期的に用意されているため、その初期的に用意された数の範囲内で占有仮想ユニット３０１の数が変化しても（つまり、初期的に設けられた複数の空き仮想ユニット３０１のいずれかに本体モジュール４２をデプロイしたり、あるいは、そのデプロイされた本体モジュール４２を後に消去するか又は別の本体モジュール４２に交換したりしても）、物理計算機２０１の再起動が不要である。故に、同一の物理計算機２０１における複数の仮想ユニット３０１が複数のユーザ（例えば企業）に使用されている環境であっても、いずれのユーザに対してもサービス（ＡＰＰ３０２が提供するサービス）を止めることを回避できる。
【００５３】
なお、上述した推論部１１４（及び推論／統計部１１５）の各々は、１つの占有仮想ユニット３０１（１つの占有ＡＰＰ３０２）に相当する。推論部１１４の数は、動的に増えていってよい。すなわち、新たに実用ＮＮが生成されてそれが空き仮想ユニット３０１にデプロイされていくことで、新たな推論部１１４が作られてよい。また、上述した学習部１０２の各々も、同様に１つの占有仮想ユニット３０１に相当してもよいが、それに代えて、或る物理計算機２０１に予めインストールされたプログラムであってもよい。また、推論部１１４及び学習部１０２以外の少なくとも１つのプログラム（例えば、入力ＡＰＩ１０６、出力ＡＰＩ１０７、仮想ＮＮホスト１１６及び管理システム１６１のうちの少なくとも１つ）も、１つの占有仮想ユニット３０１に相当してもよいが、それに代えて、或る物理計算機２０１に予めインストールされたプログラムであってもよい。また、例えば、仮想ＮＮホスト１１６は、物理計算機２０１におけるホストＯＳ３１４の少なくとも一部であってよい。
【００５４】
図４は、仮想ユニット３０１の構成の詳細を示す。
【００５５】
上述したように、仮想ユニット３０１では、ゲストＯＳ３０４上でミドルウェア３０３が実行され、ミドルウェア３０３上でＡＰＰ３０２が実行される。
【００５６】
ＡＰＰ３０２は、予め（つまり、空きＡＰＰ３０２の状態で）、入力モジュール４１、出力モジュール４３及び制御モジュール４５を有する。本体モジュール４２が動的にＡＰＰ３０２に組み込まれたり、あるいは、そこから除去されたりする。前述したように、本体モジュール４２が組み込まれてない状態のＡＰＰ３０２は空きＡＰＰ３０２と呼ばれ、本体モジュール４２が組み込まれた状態のＡＰＰ３０２は占有ＡＰＰ３０２と呼ばれる。本体モジュール４２は、ＡＰＰメタ情報４２１、データチェックモジュール４２２及び実用ＮＮ４２３で構成される。
【００５７】
入力モジュール４１、出力モジュール４３及び制御モジュール４５は、本体モジュール４２の中身（つまり、実用ＮＮの構成及び属性）にその構造が依存しない汎用的なモジュールとして予め定義されている。すなわち、入力モジュール４１、出力モジュール４３及び制御モジュール４５は、２以上の汎用モジュールの一例である。少なくとも１つの汎用モジュールに代えて又は加えて別の汎用モジュールが用意されてもよい。
【００５８】
入力モジュール４１は、ＡＰＰメタ情報４２１を基に、実用データセットを記憶領域（例えばデータプール１０５内の記憶領域）から読み込み、読み込んだ実用データセットを本体モジュール４２へ供給する。読込み対象のデータセット、実用データセットの読込み元の記憶領域、及び、読み込んだ実用データセットの供給先は、いずれも、ＡＰＰメタ情報４２１から特定される。
【００５９】
出力モジュール４３は、ＡＰＰメタ情報４２１を基に、本体モジュール４２（実用ＮＮ４２３）から出力された推論結果データセットを記憶領域（例えばデータプール１０５内の記憶領域）に出力（格納）する。データセットの出力先の記憶領域は、ＡＰＰメタ情報４２１から特定される。
【００６０】
制御モジュール４５は、ＡＰＰ３０２の外部（例えば、ゲストＯＳ３０４）と通信する。
【００６１】
ＡＰＰメタ情報４２１は、ＡＰＰ３０２の動作に関わるメタ情報であり、例えば、下記のうちの少なくとも１つを含む。
・入力モジュール４１、出力モジュール４３及び制御モジュール４５といった予め定義されているモジュールに設定されるパラメータ。すなわち、入力モジュール４１に設定されるパラメータ、出力モジュール４３に設定されるパラメータ、及び制御モジュール４５に設定されるパラメータ。入力モジュール４１、出力モジュール４３及び制御モジュール４５の各々は、ＡＰＰメタ情報４２１を基に設定されたパラメータに従い動作する。パラメータ設定は、入力モジュール４１、出力モジュール４３及び制御モジュール４５の各々によって行われてもよいし、制御モジュール４５によって行われてもよい。
・入力モジュール４１が読み込む対象の実用データセットの属性を示す情報（例えば、データセットのＩＤ（例えばファイル名）、読込み元領域のアドレス（例えばＬＢＡ（Logical Block Address）））。言い換えれば、実用データセットのアクセス権限に関する情報。
・出力モジュール４３が出力する推論結果データセットの出力先の属性を示す情報（例えば、出力先領域のアドレス（例えばＬＢＡ））。
・実用ＮＮ４２３の属性を示す情報（例えば、実用ＮＮ４２３のＩＤ、実用ＮＮ４２３の読込み元領域のアドレス（例えばＬＢＡ）、及び、実用ＮＮ４２３の入力次元及び出力次元）。
・データチェックモジュール４２２の属性を示す情報（例えば、データチェックモジュール４２２のＩＤ、及び、データチェックモジュール４２２の読込み元領域のアドレス（例えばＬＢＡ））。
・データチェックモジュール４２２に設定されるパラメータであって、実用ＮＮ４２３に対応したパラメータ（例えば、入力されるチェック対象のデータセットの属性（例えば、データセットの次元、又は、エラーパターン）を示す情報）。
上記のような情報を含んだＡＰＰメタ情報４２１がＡＰＰ３０２（本体モジュール４２）に存在する。つまり、実用ＮＮ４２３を動作させるために必要な情報の全て（又は少なくとも一部）がＡＰＰ３０２に内包される。実用NN４２３に依存しない汎用モジュールとして構成された入力モジュール４１、出力モジュール４３及び制御モジュール４５が、ＡＰＰメタ情報４２１を用いることにより、実用ＮＮ４２３を動作させることができる。
【００６２】
データチェックモジュール４２２は、ＡＰＰメタ情報４２１に基づき（例えば、ＡＰＰメタ情報４２１に基づき設定されたパラメータに従い）、入力モジュール４１から入力された実用データセットが本体モジュール４２のデプロイの際に定義された情報通りのデータセットか否か（つまり、正しいデータセットか否か）をチェックする。データチェックモジュール４２２は、チェック結果が真の場合に、入力された実用データセットを実用ＮＮ４２３に入力する。これにより、誤ったデータセットが実用ＮＮ４２３に入力されてエラーが生じることを避けることができる。なお、データチェックモジュール４２２は必須でなくてもよい。
【００６３】
実用ＮＮ４２３は、入力モジュール４１を通じて仮想ユニット３０１外の記憶領域から実用データセットの入力を受け、そして、推論結果データセット（又は、推論／統計結果データセット）を出力する。出力された推論結果データセットは、出力モジュール４３を通じて仮想ユニット３０１外の記憶領域へ書き込まれる。
【００６４】
以上のように、本実施形態において、ＡＰＰ３０２は、仮想ユニット３０１内のミドルウェア３０３上（ゲストＯＳ３０４上）で実行される。ＡＰＰ３０２がもつ複数の機能は、それぞれモジュール４１、４２２、４２３、４３、４５として構成されており、各モジュール４１、４２２、４２３、４３、４５が、サブアプリケーションプログラムである。つまり、ＡＰＰ３０２は、いわゆる疎結合のＡＰＰである。具体的には、実用ＮＮ４２３を含む本体モジュール４２以外の機能モジュールとして、予め、上述した入力モジュール４１、出力モジュール４３及び制御モジュール４５が用意されている。これにより、汎用性が担保されている。そして、ＡＰＰ３０２において、入力モジュール４１、出力モジュール４３、制御モジュール４５、データチェックモジュール４２２及び実用ＮＮ４２３は、いずれも、「マイクロサービス」と呼ばれるサブアプリケーションプログラムである。いかなる構成の実用ＮＮ４２３でも、１つのサブアプリケーションプログラムとしてＡＰＰ３０２にデプロイされさえすれば、その実用ＮＮ４２３と仮想ユニット３０１外との間のデータ入出力を入力モジュール４１と出力モジュール４３が行ってくれる。このため、実用ＮＮ４２３を実行可能な状態にすることが容易である。具体的には、例えば、実用ＮＮ４２３の構成が更新された場合、更新後の実用ＮＮ４２３を含む新しい本体モジュール４２が、古い実用ＮＮ４２３を含む本体モジュール４２に上書きされてもよいし、別の空き仮想ユニット３０１（空きＡＰＰ３０２）にデプロイされてもよい。このため、更新後の実用ＮＮ４２３を実行可能な状態にすることを（及び、実用ＮＮ４２３のリプレース又は追加を）、物理計算機２０１の再起動無しに可能である。
【００６５】
なお、第１の比較例として、仮想ユニット不要の構成が考えられる。この場合、学習部が、実用ＮＮを、環境情報（例えば、入力元に関する情報、入力するデータセットの範囲を示す情報、及び、入力するデータセットのフォーマット（例えば次元数）を示す情報を含んだ情報）を基に、デプロイすることになる。しかし、第１の比較例では、推論結果に伴う処理（例えば、推論結果がＡならば処理Ｂを行う）の設定を実用ＮＮ毎に行う必要があり、デプロイコストが高い。また、新たな実用NNをデプロイする毎に物理計算機の再起動が必要となってしまう。物理計算機が再起動している間、その物理計算機で実行されるＡＰＰが提供するサービスが止まってしまう。
【００６６】
また、第２の比較例として、仮想ユニットが採用されるものの、密結合のＡＰＰ（実用ＮＮと他の機能（例えばデータ入出力や制御など）が一体化したＡＰＰ）が採用され、且つ、上述の仮想ＮＮホストが存在しない構成が考えられる。この場合、学習部が、実用ＮＮと一体化したＡＰＰを含んだ仮想ユニットを定義し、その仮想ユニットを設定することになる。しかし、第２の比較例では、或る実用ＮＮの更新が必要になると、その実用NNと一体化したＡＰＰ全体のリプレース又は追加が必要になり、結果として、ＡＰＰと１：１で対応する仮想ユニットのリプレース又は追加が必要にもなる。故に、第１の比較例と同様、物理計算機の再起動が必要となってしまう。また、仮想ユニットがダウンした場合、その仮想ユニット内のＡＰＰのデプロイ先とされる新たに仮想ユニットを追加することが行われ、結果として、物理計算機の再起動が行われてしまう。
【００６７】
また、第３の比較例として、２以上の推論部に対して共通のインスタンスを含む構成が考えられる。その場合、そのインスタンスが、全ての推論用データセットを読み込み、それらの推論用データセットを２以上の推論部に入力する。このため、インスタンスがダウンしてしまうといずれの推論部も推論処理を継続することができない。また、インスタンスは、推論部の状態に関わらず推論用データセットを読み込み入力するので、推論部にエラーを生じさせてしまう可能性がある。推論部のエラーが生じると、エラーハンドリングのために、インスタンスは、推論用データセットを読み込むことを停止する。このため、各推論部の推論処理が停止してしまう。
【００６８】
本実施形態によれば、上述したように、ＡＰＰ３０２は、機能がモジュール化されたいわゆる疎結合のＡＰＰであるため、物理計算機２０１の再起動無しに、実用ＮＮ４２３をリプレース又は追加することができる。
【００６９】
また、本実施形態によれば、学習部１０２が、実用ＮＮと一体のＡＰＰを含んだ仮想ユニットを定義せず、ＡＰＰ３０２に内包されるＡＰＰメタ情報４２１と、そのＡＰＰメタ情報４２１に基づくデータチェックモジュール４２２及び実用ＮＮ４２３とが、ホスティングされている仮想ユニット３０１にデプロイされる。
【００７０】
また、本実施形態によれば、上述したように、物理計算機２０１上で動作する仮想ユニット３０１の数は初期的に２以上の固定数である（例えば、物理コンピュータリソース３５０を基に予め決められた最大数である）。仮想ユニット３０１の初期的な個数の範囲内で、物理計算機２０１の再起動無しに、実用ＮＮ４２３をリプレース又は追加することができる。
【００７１】
また、仮想ユニット３０１において、ＡＰＰ３０２内の各モジュールは、サブアプリケーションプログラムである。このため、他の仮想ユニット３０１でエラーが生じても、仮想ユニット３０１は動作を継続できる。
【００７２】
ところで、いわゆる疎結合のＡＰＰ（言い換えれば、汎用のＡＰＰ）は、いわゆる密結合のＡＰＰ（言い換えれば、専用のＡＰＰ）に比べて、性能が低いおそれがある。なぜなら、疎結合のＡＰＰでは、モジュール間の通信（例えばＡＰＩベースの通信）が発生するからである。
【００７３】
そこで、本実施形態では、図３及び図４に示すように、ホストＯＳ３１４にホストＡＰＩ３１５（ホストアドレス）が設けられ、各仮想ユニット３０１のゲストＯＳ３０４にゲストＡＰＩ３０４（ゲストアドレス）が設けられる。ホストアドレスもゲストアドレスも、管理システム１６１によって管理される。管理システム１６１にとって、ゲストアドレスはプライベートアドレス（例えばユーザが独自に決めたアドレス）である。このため、ゲストアドレスを終点としたアクセスが可能であるので（言い換えれば、ホストＡＰＩによるルーティングが不要であるので）、学習推論支援システム１００全体の性能が低下することを低減できる。管理システム１６１は、各仮想ユニット３０１を、その仮想ユニット３０１が動作する物理計算機２０１（又はホストＯＳ３１４）がいずれの物理計算機２０１（いずれのホストＯＳ３１４）であるかに関わらず、ゲストアドレスを用いて仮想ユニット３０１を管理できる。
【００７４】
なお、本実施形態では、ＡＰＰ３０２毎に、独立して、ゲストＯＳ３０４（及びミドルウェア３０３）が存在している。同一物理コンピュータリソース３５０上で、各ＡＰＰ３０２（仮想ユニット３０１）が独立して動作可能である。言い換えれば、各ＡＰＰ３０２（及び仮想ユニット３０１）は、そのＡＰＰ３０２（及びその仮想ユニット３０１）の動作のために他のＡＰＰ３０２（他の仮想ユニット３０１）と通信することは不要である。同様に、各物理計算機２０１（ホストＯＳ３１４）は、その物理計算機２０１（その仮想ユニット３０１）の動作のために他の物理計算機２０１（他のホストＯＳ３１４）と通信することも不要である。
【００７５】
また、管理システム１６１は、管理部と監視部とを含んだシステムでよい。管理部は、学習推論システム１０１を管理する。監視部は、学習推論システム１０１を監視する。管理システム１６１が行う「管理」は、管理部による「管理」と、監視部による「監視」とを含んでよい。
【００７６】
例えば、管理部は、図示しない仮想ユニット管理情報を参照又は更新する。仮想ユニット管理情報は、少なくとも１つの物理計算機２０１の記憶部２５２に格納される。仮想ユニット管理情報は、管理対象のゲストアドレス毎に（つまり管理対象の仮想ユニット３０１毎に）、物理計算機ＩＤ、ホストアドレス、本体モジュール属性（例えば、実用ＮＮのＩＤ）、及びステータス（例えば、空きを意味する“スタンバイ”や、本体モジュール４２が存在することを意味する“アクティブ”や、エラーが生じたことを意味する“エラー”）を含む。管理部は、仮想ユニット管理情報を参照することで、いずれの物理計算機２０１におけるいずれの仮想ユニット３０１が空き仮想ユニット３０１であるかを特定することができる。
【００７７】
また、例えば、管理部は、物理計算機２０１毎に、所定の空き割合以上の空き仮想ユニット３０１を維持するようになっている。これにより、後述のエラー仮想ユニット３０１が生じても少なくとも１つのリカバリ先が存在することが担保される。なお、「空き割合」とは、物理計算機２０１における仮想ユニット３０１の数に対する、空き仮想ユニット３０１の割合である。
【００７８】
例えば、管理部は、いずれの物理計算機２０１の空き割合が所定の空き割合以上になる場合、新たに物理計算機２０１を追加し（例えば、物理計算機２０１の追加を所定のシステムに指示し）、その新たな物理計算機２０１に所定数（例えば最大数）の空き仮想ユニット３０１を配置する。新たな物理計算機２０１における空き仮想ユニット３０１が、実用ＮＮ４２３のデプロイ先となり得る。
【００７９】
監視部は、例えば、図示しない仮想ユニット監視情報を参照する。仮想ユニット管理情報は、少なくとも１つの物理計算機２０１の記憶部２５２に格納される。仮想ユニット監視情報は、監視対象のゲストアドレス毎に（つまり監視対象の仮想ユニット３０１毎に）、物理計算機ＩＤ及びホストアドレスを含む。監視部は、仮想ユニット監視情報を基に、監視対象の仮想ユニット３０１を監視する。監視部は、いずれかの仮想ユニット３０１にエラーが生じたことを検出した場合、リカバリを行う。具体的には、例えば、監視部は、エラー仮想ユニット３０１（エラーが生じた仮想ユニット３０１）のゲストアドレスを監視部に通知する。監視部は、その通知を受けた場合、仮想ユニット管理情報を参照し、リカバリ先の空き仮想ユニット３０１を決定し、決定した空き仮想ユニット３０１に、エラー仮想ユニット３０１内の本体モジュール４２（実用ＮＮ４２３）と同一の本体モジュール４２をデプロイすることを決定する（例えば、その同一の本体モジュール４２内のＡＰＰメタ情報４２１のメタ設定指示（リカバリ先の仮想ユニット３０１のゲストアドレスを指定した指示）を、そのリカバリ先の空き仮想ユニット３０１に送信する）。なお、リカバリ先の空き仮想ユニット３０１は、下記のうちのいずれかでよい。リカバリ先の空き仮想ユニット３０１が、下記のうちの（Ａ）であれば、リカバリにかかる時間（エラー仮想ユニット３０１内の実用ＮＮ４２３と同一の実用ＮＮ４２３が実行可能な状態になるまでの時間）が短いことが期待できる。
（Ａ）エラー仮想ユニット３０１が存在する物理計算機２０１内のいずれかの空き仮想ユニット３０１。
（Ｂ）空き割合が最も小さい物理計算機２０１内のいずれかの空き仮想ユニット３０１。
【００８０】
また、上述したように、仮想ユニット３０１は、能動的にデータセットを読み込む。つまり、仮想ユニット３０１（例えば制御モジュール４５）が、速度ハンドリングすることができる。
【００８１】
以下、或る利用目的を例に取り、図５を参照して、その利用目的に対応した実用ＮＮの生成とデプロイに関する処理全体の流れを説明する。
【００８２】
Ｓ５０１で、アノテーション部１０３が、アノテーションメタ情報１３０を基に、その利用目的に該当する教師データセット（学習データセットと、学習データセットに関連付けられたアノテーション結果のデータセット）をデータプール１０５に格納する。具体的には、例えば、アノテーション部１０３が、自動で、クラウドワーカ達の多数のユーザ端末１１２に、学習データセットに対するアノテーション結果（例えば解答）の入力の依頼を送信する。アノテーション部１０３は、その依頼に応答してユーザ端末１１２から入力されたアノテーション結果を、学習データセットに関連付け、アノテーション結果が関連付けられた学習データセット（教師データセット）をデータプール１０５に格納する。このように、教師データセットの生成（学習データセットに対するアノテーション結果の関連付け）は、アノテーション部１０３によって自動で送信される依頼に応答して行われる。
【００８３】
Ｓ５０２で、利用目的に応じた少なくとも１つの学習ＮＮ（学習モデル）の構成（例えば、ＮＮの層数、各層の形式と次元数、及び、各層間関数の形式とパラメータセット、など）がユーザ（例えば、ＡＩのエンジニア）によって定義される。定義された学習ＮＮの構成は、例えば管理システム１６１の記憶領域に設定される。同じ利用目的で構成の異なる複数の学習ＮＮが定義されてもよい。その場合、１以上の物理計算機２０１上に、それらの複数の学習ＮＮを有した複数の学習部１０２が用意されてよい。
【００８４】
Ｓ５０３で、その１以上の学習ＮＮの各々のパラメータセットのチューニングが行われる。具体的には、例えば、管理システム１６１が、まず、各学習ＮＮのパラメータセットを初期設定する。その後、下記のＳ５０４の学習処理から得られた各学習ＮＮの出力誤差に基づいて、各学習ＮＮのパラメータセットが、より最適に近いものに調整される。
【００８５】
Ｓ５０４で、その１以上の学習部１０２の各々が、学習処理を行う。すなわち、各学習部１０２は、データプール１０５の教師データセットから各教師データを読み込み、その各教師データのうちの学習データを各学習ＮＮに入力し、各学習ＮＮから出力データを得る。各学習ＮＮから得られた出力データと、その教師データのうちのアノテーション結果との間の誤差、つまり各学習ＮＮの出力誤差が求められる。出力誤差に応じて、再び上述したＳ５０４のパラメータチューニングが行われる。その後、教師データセットから別の教師データが読み込まれ、その教師データを用いたＳ５０４とＳ５０３の処理が繰り返される。各学習ＮＮについて所定の学習終了条件（例えば、Ｓ５０４とＳ５０３の処理が繰り返し回数が或る許容回数に達した、あるいは、出力誤差又はその減少率がある許容値以下になった、など）が満たされると、各学習ＮＮの機械学習が終了する。機械学習が終了した
【００８６】
Ｓ５０５で、仮想ＮＮホスト１１６は、１以上の学習部１０２で機械学習が終了した１以上の学習ＮＮつまり学習済みＮＮを、ライブラリに保存し、そして、それら学習済みＮＮの検証処理を行う。すなわち、仮想ＮＮホスト１１６は、それら学習済みＮＮの各々の精度を算出する。具体的には、例えば、仮想ＮＮホスト１１６は、各学習済みＮＮに対して、検証のための教師データセットの学習データセットを入力し、そして、各学習済みＮＮの出力データセットと、その教師データセットのアノテーション結果のセットとを比較する。その比較結果から、仮想ＮＮホスト１１６は、その学習済みＮＮの精度（例えば、教師データセットの全データ数に対する正解の出力データの数の比率など）を算出する。そして、仮想ＮＮホスト１１６は、各学習済みＮＮの精度を所定の条件を用いて評価する（例えば、各学習済みＮＮの精度が所定の閾値以上か否かを判断する）。
【００８７】
上述の評価の結果、それら学習済みＮＮのいずれもが精度不足（例えば、それらの精度が上記閾値未満である）と判定された場合、仮想ＮＮホスト１１６は、管理システム１６１に、精度不足を通知する。精度不足の通知を受けた管理システム１６１は、各学習部１０２に、それら精度不足の学習ＮＮの全部又は一部の追加の学習処理とパラメータチューニング（Ｓ５０４とＳ５０３）を実行する。
【００８８】
上述の評価の結果、それら学習済みＮＮの中の少なくとも１つの精度が許容される（例えば、その精度が上記閾値以上である）と判断された場合、Ｓ５０６で、仮想ＮＮホスト１１６は、その許容精度をもつ少なくとも１つの学習済みＮＮを実用ＮＮとして選定する。このとき、同じ利用目的のための複数の学習済みＮＮが許容精度をもつ場合、その中で最も精度の高い１つの学数済みＮＮを実用モデルとして選んでもよい。仮想ＮＮホスト１１６は、実用ＮＮ４２３に関する情報（例えばＮＮのＩＤ）を含んだ決定通知を管理システム１６１に送信する。これにより、管理システム１６１は、いずれのＮＮが実用ＮＮ４２３であるかを認識する。また、実用ＮＮ４２３の構成に応じて、管理システム１６１又は仮想ＮＮホスト１１６により、その実用ＮＮ４２３に関連付けられたデータチェックモジュール４２２が用意される。この場合、実用ＮＮ４２３として選ばれなかった学習済みＮＮの全部又は一部について、追加の機械学習を行ってもよい。また、実用ＮＮ４２３として選ばれたものについても、追加の機械学習を行ってもよい。
【００８９】
Ｓ５０７で、管理システム１６１が、実用ＮＮ４２３を認識したら自動的に、その実用ＮＮ４２３のデプロイ先となるべき空き仮想ユニット３０１を選定又は用意する（５０７）。例えば、管理システム１６１は、仮想ユニット管理情報を基に、上記デプロイ先として、いずれかの既存の空き仮想ユニット３０１を選定するか、あるいは、新たな空き仮想ユニット３０１を用意する。なお、管理システム１６１は、ユーザからの指示に応答して（例えば、実用ＮＮ４２３に関する情報を表示し、その実用ＮＮ４２３の承認としてのデプロイ指示を受けた場合に）、デプロイ先の空き仮想ユニット３０１を決定してもよい。
【００９０】
Ｓ５０８で、管理システム１６１が、デプロイ先の空き仮想ユニット３０１に対する環境設定を行う。具体的には、例えば、下記が行われる。
・管理システム１６１は、実用ＮＮ４２３に対応したＡＰＰメタ情報４２１を生成し、そのＡＰＰメタ情報４２１を、デプロイ先の空き仮想ユニット３０１内のＡＰＰ３０２に設定する。具体的には、例えば、管理システム１６１は、デプロイ先の空き仮想ユニット３０１のゲストアドレスを指定したメタ設定指示を、デプロイ先の空き仮想ユニット３０１に送信する。メタ設定指示は、ＡＰＰメタ情報４２１を設定することの指示である。メタ設定指示を、その空き仮想ユニット３０１を有する物理計算機２０１内のホストＯＳ３１４（ホストＡＰＩ３１５）を通じて、指定されたゲストアドレスを有するゲストＯＳ３０４（ゲストＡＰＩ３０５）が受ける。そのメタ設定指示に応答して、ゲストＯＳ３０４からの指示をＡＰＰ３０２内の制御モジュール４５が受けて、制御モジュール４５が、ＡＰＰメタ情報４２１を、ＡＰＰ３０２に設定する。
・管理システム１６１が、デプロイ先の空き仮想ユニット３０１のゲストアドレスを指定した有効化指示を送信する。有効化指示は、ＡＰＰメタ情報４２１に定義されているパラメータを入力モジュール４１及び出力モジュール４３に設定する指示である。有効化指示を、メタ設定指示と同様のルートを通じて、ゲストＯＳ３０４が受ける。その有効化指示に応答して、ゲストＯＳ３０４からの指示をＡＰＰ３０２内の制御モジュール４５が受けて、制御モジュール４５が、ＡＰＰメタ情報４２１におけるパラメータを入力モジュール４１及び出力モジュール４３に設定する。また、制御モジュール４５は、パラメータが設定された入力モジュール４１及び出力モジュール４３に対して、テスト動作を指示する。入力モジュール４１及び出力モジュール４３は、その指示に応答してテスト動作（例えば、ＡＰＰメタ情報４２１を基にデータセットを読み込み可能か否かをテストするためのダミーコマンドを発行すること）を行う。
【００９１】
Ｓ５０９で、実用ＮＮ４２３（及びそれに関連付いているデータチェックモジュール４２２）のデプロイが行われる。具体的には、例えば、管理システム１６１が、デプロイ先の空き仮想ユニット３０１のゲストアドレスを指定したデプロイ指示を送信する。デプロイ指示とは、ＡＰＰメタ情報４２１に定義されている実用ＮＮ４２３をデプロイすることの指示である。デプロイ指示を、メタ設定指示及び有効化指示と同様のルートを通じて、ゲストＯＳ３０４が受ける。そのデプロイ指示に応答して、ゲストＯＳ３０４からの指示をＡＰＰ３０２内の制御モジュール４５が受けて、制御モジュール４５が、ＡＰＰメタ情報４２１を基に実用ＮＮ４２３を読み込み（すなわち、ＡＰＰメタ情報４２１から特定される場所から、ＡＰＰメタ情報４２１から特定される実用ＮＮ４２３を読み込み）、読み込んだ実用ＮＮ４２３をＡＰＰ３０２に設定する。
【００９２】
Ｓ５１０で、デプロイ先の仮想ユニット３０１が新たに監視対象として追加される。具体的には、例えば、管理システム１６１が、デプロイ先の仮想ユニット３０１のゲストアドレスを新たに監視対象とするゲストアドレスとする（例えば、仮想ユニット監視情報に追加する）。管理システム１６１（監視部）が行う監視及びリカバリについては上述の通りである。
【００９３】
以上を経て、デプロイ先の仮想ユニット３０１（実用ＮＮ４２３が設定されたＡＰＰ３０２）の運用が開始する。具体的には、例えば、その仮想ユニット３０１におけるＡＰＰ３０２が、推論部１１４として実行される。
【００９４】
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【００９５】
例えば、本発明は、ディープラーニング以外の学習（例えば機械学習）を行うモジュールを含んだシステムにも適用することができる。従って、学習モデル、学習済みモデル、実用モデル、推論モデル及び推論／統計モデルは、ＮＮ以外の構成をもつ計算モデルであってもよい。
【００９６】
また、例えば、管理システム１６１が、ＡＰＰメタ情報４２１に加えて実用ＮＮ４２３（及びデータチェックモジュール４２２）を仮想ユニット３０１にデプロイしてもよい。
【００９７】
また、例えば、１以上の学習部１０２と、１以上の推論部１１４と、仮想ＮＮホスト１１６とが同一の物理計算機２０１に存在してもよい。別の言い方をすれば、少なくとも一部の物理計算機２０１（１以上の物理計算機２０１）の各々が、１以上の学習部１０２と、１以上の推論部１１４と、仮想ＮＮホスト１１６とを有してよい。
【００９８】
また、例えば、管理システム１６１は、いずれの物理計算機２０１の空き割合が所定の空き割合以上になる場合、新たに物理計算機２０１を追加することに代えて、又はそれに加えて、不要な本体モジュール４２を含んだＡＰＰ３０２を有する仮想ユニット３０１に、その仮想ユニット３０１のゲストアドレスを指定した除去指示を送信してもよい。除去指示は、本体モジュール４２を除去することの指示である。除去指示を、メタ設定指示及び有効化指示と同様のルートを通じて、ゲストＯＳ３０４が受ける。その除去指示に応答して、ゲストＯＳ３０４からの指示をＡＰＰ３０２内の制御モジュール４５が受けて、制御モジュール４５が、本体モジュール４２をＡＰＰ３０２から除去する。これにより、その仮想ユニット３０１が空き仮想ユニット３０１になる。制御モジュール４５が、完了応答を管理システム１６１に返す。管理システム１６１は、その完了応答を受けて、仮想ユニット管理情報を更新、具体的には、その仮想ユニット３０１のゲストアドレスに対応したステータスを“アクティブ”から“スタンバイ”に更新する。
【００９９】
一般に、学習に関する技術や推論に関する技術といった個々の技術は知られているものの、学習から推論までワンストップで行う技術は知られていない。
【０１００】
上述した本実施形態にかかる計算機システムは、外部のデータソースから学習データセットを受け、それにアノテーション結果を付与して教師データセットを用意し、そして、その教師データセットを用いて、学習モデルの機械学習を行って、実用モデルを作成することができる。
【０１０１】
さらに、本システムは、外部のデータソースから実用データセットを受け、その実用データセットを実用モデルに入力して推論処理を実行し、その推論処理の結果を示す推論結果データセットを、外部のデータターゲットに出力することができる。
【０１０２】
従って、本システムのユーザは、実用モデルを用いた推論（例えば、人の顔認証）を行おうとする場合、実用モデルを用意するための機械学習（例えばニューラルネットワークの訓練）、及び、実用モデルの推論実行環境へのデプロイなど、面倒で複雑な作業を自ら行う必要がない。そのために、ニューラルネットワークのようなモデルの様々な産業分野での利用が容易化され、より高度で便利な情報化社会の発展が促進されることが、期待できる。
【０１０３】
なお、本システムは、実用モデルを、学習部及び推論部のそれぞれとは別途に保存する手段を更に有してもよい。学習部が、別途に保存された実用モデルを入力して実用モデルの更なる追加の学習つまり訓練を行ってもよい。それにより、性能の向上やユーザ要求の変化などに応じて、実用モデルを進化させることができる。
【０１０４】
以下では、本実施形態のアノテーション部１０３について、より詳細に説明する。図６はアノテーション部１０３の構成例を示す。
【０１０５】
アノテーション部１０３は、例えば、図１に示された計算機システム５０の１以上の物理計算機２０１の記憶部２５２に格納された命令セットを、プロセッサ部２５３が実行することにより提供される。
【０１０６】
図６に示されるように、アノテーション部１０３は、通信ネットワーク１４０を通じて外部の複数の計算機（例えば、図１に示された複数のユーザ端末１１２）４０１、４０３、４０５と通信可能である。それら複数の計算機４０１、４０３、４０５には、１以上の依頼者４００がそれぞれ使う１以上の依頼者端末４０１、１以上のアノテータ４０２がそれぞれ使う１以上のアノテータ端末４０３、及び、１以上のレビューワ４０４がそれぞれ使う１以上のレビューワ端末４０５が含まれる。ここで、依頼者４００とは、アノテーション業務を本システム５０に依頼する人又は組織である。アノテータ４０２とは、アノテーション作業（つまり、学習データについてのアノテーション結果を入力する仕事）をする人又は組織である。レビューワ４０４とは、アノテータにより生成されたアノテーション結果をレビューする（例えば、アノテーション結果の妥当性を判断する、あるいは、さらに、必要に応じてそのアノテーション結果を修正して、最終的なアノテーション結果を決定する）仕事をする人又は組織である。アノテータ４０２は（場合によるとレビューワ４０４も）、例えば、クラウドソーシングを通じて供給される、所謂クラウドワーカであってよい。
【０１０７】
アノテーション部１０３は、ＡＰＩ４０７とストレージ４０８と管理データベース４０９を有する。ＡＰＩ４０７は、依頼者端末機４０１、アノテータ端末４０３、及びレビューワ端末４０５のそれぞれと通信して、それらの計算機とアノテーション業務に必要な情報を送受する。ＡＰＩ４０７の全部又は一部は、図２に示された入力ＡＰＩ１０６又は出力ＡＰＩ１０７に含まれてもいいし、あるいは、それらとは別に用意されてもよい。
【０１０８】
ストレージ４０８は、その全部又は一部が、図２に示されたデータプール１０５又は非構造化ストレージ１０４に含まれてもいいし、あるいは、それらとは別に用意されてもよい。ストレージ４０８には、アノテーション作業の対象である学習データのセットが格納される。学習データは、画像データ、動画データ、テキストデータ、音声データ、又は数値データなど、任意の形式のデータであり得る。学習データは、非構造化データ又は構造化データであり得る。学習データついてのアノテーション結果は、例えば、その学習データをNNに入力したときに、そのNNから出力されることが期待されるデータである。したがって、学習データとそのアノテーション結果とから、NNの学習で用いられる教師データを用意することができる。
【０１０９】
管理データベース４０９は、その全部又は一部が、図２に示されたデータプール１０５又は非構造化ストレージ１０４に含まれてもいいし、あるいは、それらとは別に用意されてもよい。管理データベース４０９には、アノテーション業務を管理するための各種のデータが格納され、そのデータ構成の例は図７に示される。
【０１１０】
図７は、管理データベース４０９の構成例を示す。
【０１１１】
管理データベース４０９には、以下のような異なる種類のデータ単位が存在する。
【０１１２】
1)  メタデータ５２３
ストレージ４０８に格納された学習データセット５０２は、複数（通常は多数）の単位の学習データ５２１を含む。一単位のメタデータ５２３が、一単位の学習データ５２１に１対１で関連付けられる。一単位のメタデータ５２３には、そのメタデータを識別するメタデータＩＤ、及び、対応する一単位の学習データ５２１のファイルを一意に特定する識別コードであるＵＲＩ（Uniform Resource Identifier）が記録される。ＵＲＩを利用することで、対応する学習データ５２１のファイルにアクセスできる。一単位のメタ―データ５２３には、また、対応する学習データ５２１に関連する補助情報（例えば、日時、教師データ、又はデータソースなどに関連する情報）も記録できる。
【０１１３】
2)  タスク５２５
タスク５２５は、学習データ５２１にアノテーション結果を関連付ける一単位の作業（つまりタスク）に対応するデータ単位である。タスク５２５には、そのタスクを識別するタスクID、そのタスクの優先度、そのタスクを割り当てら得るアノテータの最大人数を示す最大アサイン数、そのタスクが完了したか否かを示す完了状態、及び、そのタスクがロックされている（新たなアサインができない）か否かを示すロック状態などが記録される。タスク５２５の優先度は、そのタスクの進捗を制御するために役立つ。タスク５２５は、その作業の依頼を受けるアノテータ４０２にアノテータ端末４０３を通じて提示される。１つのタスク５２５は一単位以上のメタデータ５２３に関連付けられ得る。つまり、１つのタスクが、一単位以上の学習データ５２１に対するアノテーション作業を含むことができる。また、１以上のタスク５２５が同じ一単位のメタデータ５２３は関連付けられ得る。つまり、同じ学習データ５２１に対して、複数のタスクを設定して、複数人のアノテータによるアノテーション結果を得ることができる。
【０１１４】
3)  アサイン５２７
アサイン５２７は、１つのタスク５２５の１人のアノテータ４０２への割り当てに対応するデータ単位である。アサイン５２７の目的の一つは、同じタスク５２５を多すぎるアノテータ４０２に重複してアサインしないように、アサイン処理を制御することである。アサイン５２７には、そのアサインを識別するアサインＩＤ、そのアサインの開始時刻と有効期限、及び、そのアサインを与えられた（つまり、対応するタスクを取得した）アノテータ４０２を特定するアノテータ名などが記録される。あるタスクがあるアノテータ４０２にアサインされた場合、そのアノテータ４０２によるそのタスクに対応するアノテーション作業が終わらないうちに、そのアサイン５２７の有効期限が満了した場合、そのアサインは無効化され、その結果、他のアノテータ４０２が同じタスクを取得することが可能になる。これにより、アノテータの怠慢によるタスクの遅延が抑制される。１以上のアサイン５２７が１つのタスク５２５と関連付けられ得る。つまり、１つのタスクを複数人のアノテータ４０２に割り当てることができる。タスク５２５に記述された最大アサイン数が、そのタスクを同時に割り当てることができるアノテータ４０２の人数の上限である。
【０１１５】
4)  レザルト５２９
レザルト５２９は、１人のアノテータ４０２が行った１つのタスクのアノテーション結果に対応するデータ単位である。レザルト５２９には、そのレザルトを識別するレザルトＩＤ、アノテーション結果、そのアノテーション結果を入力したアノテータ４０２を特定するワーカ名、及び、対応するタスクをアサインされてから完了するまでに要した時間長を示す作業時間などが記録される。１つのタスクが複数人のアノテータ４０２に割り当てられた場合、それぞれのアノテータ４０２のアノテーション結果に対応した複数のレザルト５２９が、その１つのタスク５２５に関連付けられる。
【０１１６】
ここで、或る学習データ５２１の「アノテーション結果」とは、その学習データ５２１を学習モデル（学習ＮＮ）に入力した時にその学習モデルから出力されることが期待される期待出力データを特定する情報である。それは、多くの場合、その期待出力データの分類を表した「ラベル」である。例えば、或る動物の画像を入力してその動物の種類を識別する方法を学習モデルに学ばせたい場合、その画像のアノテーション結果は、その動物の種類を表した、例えば「犬」又は「猫」などのラベルである。あるいは、例えば、その一部の領域に或る物体が示されている画像を入力して、その物体の領域を画像中から特定する方法を学習モデルに学ばせたい場合、その画像のアノテーション結果は、その物体の領域を特定した例えば塗りつぶし図形又は枠線図形であり、それも「ラベル」と呼ぶことができる。このような、アノテーション結果により特定される期待出力データの分類のことを、以下の説明では「ラベル」と呼ぶ。「ラベル」がどのような形式のデータであるか（例えば、テキスト、図形、数値、画像、音声など）、及び、どのような意味を指すか（例えば、物や人の識別、空間的又は時間的な点、領域又は範囲、判断又は評価、数量又はレベル、など）は、学習データの特性及び学習モデルの利用目的によって異なり得る。
【０１１７】
5)  レビュー５３１
レビュー５３１は、１人のレビュアー４０４が１つのアノテーション結果をレビューする（妥当性を判断したり、必要に応じて修正したりする）仕事に対応するデータ単位である。レビュー５３１には、そのレビューを識別するレビューＩＤ、レビュー結果（例えば、そのアノテーション結果つまりラベルが妥当か否かの判断、あるいは、レビューワ４０４によって修正されたラベル、など）、及び、そのレビューワ４０４を特定するワーカ名などが記録される。同じレザルト５２９に対して１以上のレビュー５３１が関連付けられ得る。すなわち、同じアノテーション結果を複数人のレビューワ４０４がレビューすることができる。また、人によるレビューに代えて、又はそれに加えて、本システム５０がプログラムに従って自動的にアノテーション結果のレビューを行うこともできる（例えば、同じ学習データ５２１に対する複数の異なるラベルから、多数決で１つのラベルを正解として自動的に選ぶ、など）。
【０１１８】
5)  イシュー５３３
学習データ５２１に何のラベルを与えるべきか、アノテータが判断できない又は判断に迷う場合があり得る。そのような議論を要する事象（イシュー）に対応するデータ単位が、イシュー５３３である。イシュー５３３には、そのイシューを識別するイシューＩＤ、アノテータ４０２から報告されたラベルを付けられない理由などの問題点、その問題点を受けて依頼者４００がアノテータ４０２に対して提示したアドバイスや指示などのガイド、そのガイドに対してレビューワ４０４が提示した意見、及び、そのイシューが解決したか否かを示す解決状態などが記録される。１以上のタスク５２５に、１以上のイシュー５３３が関連付けられ得る。
【０１１９】
6）  プロジェクト５３５
プロジェクト５３５は、１つのアノテーション業務プロジェクトに対応するデータ単位である。１つのプロジェクト５３５に１つ以上のタスク５２５が関連付けられる。プロジェクト５３５には、そのプロジェクトを識別するプロジェクトＩＤ、依頼者を特定する依頼者名、そのプロジェクトの最大アサイン数、及び、そのプロジェクトの時間切れ条件（例えば、タスクの最大許容処理時間）などが記録される。そのプロジェクトの最大アサイン数に基づいて、そのプロジェクトに含まれる各タスクの最大アサイン数が自動的に決定される（例えば、プロジェクトの最大アサイン数とタスクの最大アサイン数が同じである）。そのプロジェクトの時間切れ条件に基づいて、そのプロジェクトに含まれる各タスクの各アサインの有効期限が自動的に決定される（例えば、アサイン開始時刻に上記の最大許容処理時間を加えた時刻が有効期限である）。
【０１２０】
7)  ワーカ５３７
ワーカ５３７は、ワーカ（つまり、アノテータ４０２とレビューワ４０４）の各人に対応したデータ単位である。ワーカ５３７には、そのワーカを識別するワーカＩＤ、そのワーカの作業に対して支払われる料金の単価、そのワーカの能力（例えば、１つのタスクを完了するのに要した作業時間の平均）を示す作業能力などが記録される。ワーカ５３７は１つ以上のプロジェクト５３５に関連付けられ得る。つまり、１人のワーカが複数のプロジェクトに参加し得る。
【０１２１】
図８から図１５は、アノテーション業務を構成する諸プロセスの制御の流れを示す。まず、図８はアノテーション業務の開始の制御の流れを示す。
【０１２２】
ステップＳ６０１で、依頼者端末４０１がＡＰＩ４０７に、１つの新規プロジェクトの作成を要求する。その要求に応答してＡＰＩ４０７が、Ｓ６０２でプロジェクト５３５を作成し、そしてＳ６０３で、作成されたプロジェクト５３５のプロジェクトＩＤを依頼者端末４０１に返信する。Ｓ６０４で、依頼者端末４０１がＡＰＩ４０７に、そのプロジェクト５３５の最大アサイン数と時間切れ条件を設定する。Ｓ６０５で、ＡＰＩ４０７が、その最大アサイン数と時間切れ条件の設定をプロジェクト５３５に保存し、そしてＳ６０６で、設定完了を依頼者端末４０１に通知する。
【０１２３】
Ｓ６０７で、依頼者端末４０１が一単位以上の学習データとそれに付属する情報を、ＡＰＩ４０７にアップロードする。Ｓ６０８で、ＡＰＩ４０７が、アップロードされた学習データ５２１をストレージ４０８格納し、それそれの学習データ５２１に関連付けられたメタデータ５２３を作成し、そしてＳ６０９で、それらメタデータ５２３のメタデータＩＤを依頼者端末４０１に返信する。
【０１２４】
Ｓ６１０で、依頼者端末４０１がＡＰＩ４０７に、各学習データ５２１について１以上のタスクの登録を要求し、それぞれのタスクの優先度（依頼者が要求した優先度、又はデフォルトの優先度）を設定する。それに応答してＡＰＩ４０７が、Ｓ６１１で、各学習データ５２１に対応する１以上のタスク５２５を作成し、そしてＳ６１２で、それらのタスク５２５が作成されたことを、依頼者端末４０１に返信する。
【０１２５】
その後、依頼者端末４０１は、随時にＳ６１３で、任意のプロジェクト５３５の任意の１以上のタスク５２５の作業状況をＡＰＩ４０７から取得して表示して、それを依頼者４００に確認させることができる（このプロセスは、図１２を参照して後述される）。そして、依頼者４００から優先度変更の要求があれば、依頼者端末４０１は、Ｓ６１４で、依頼者４００により選ばれたタスク５２５の優先度を、依頼者４００の所望する値に変更するよう、ＡＰＩ４０７に要求する。この要求に応答して、ＡＰＩ４０７は、Ｓ６１５で、選ばれたタスク５２５の優先度を更新する。
【０１２６】
図９は、アノテーション業務のアノテーション生成（つまり、ラベル付与）の制御の流れを示す。
【０１２７】
Ｓ６２１で、あるアノテータ４０２がアノテータ端末４０３からＡＰＩ４０７にログインを要求する。ログインが成功すると、Ｓ６２２で、ＡＰＩ４０７が、既存の１以上のプロジェクト５３５を表す情報を、そのアノテータ端末４０３へ送る。その情報を受けて、アノテータ端末４０３は、Ｓ６２３で、その表示をログイン画面から、アノテーション作成作業を行うためのアノテーション画面へと遷移させる。
【０１２８】
その後、以下に述べるＳ６２４からＳ６３４の制御が、１以上のタスクについて繰り返される。
【０１２９】
Ｓ６２４で、アノテータ端末４０３がＡＰＩ４０７に、既存のプロジェクトの中から１つのプロジェクトを選び、その選ばれたプロジェクト５３５に関連付けられた少なくとも１つのタスク５２５を要求する。その要求に応答して、ＡＰＩ４０７が、Ｓ６２５で、アサイン処理を行う。アサイン処理は、そのアノテータ４０２に既に割り当てられた１以上の未完了タスク５２５を見つけてそのアノテータ４０２に知らせ、さらに、必要に応じて、新たな１以上の未完了タスクをそのアノテータ４０２に割り当てる処理である。このアサイン処理の詳細は図１０を参照して後述される。このアサイン処理で新たなタスクの割り当てを行う場合、ＡＰＩ４０７は、未完了のタスク５２５の中から、各タスク５２５の優先度に基づいて、アサインされるべきタスク５２５を選び、その選ばれたタスク５２５に関連付けられたアサイン５２７を作成する。さらに、ＡＰＩ４０７は、そのプロジェクト５３５の時間切れ条件に基づいて、そのアサイン５２７の有効期限を決定する。アサイン処理の後、ＡＰＩ４０７は、Ｓ６２７で、アサインされたタスク５２５と、そのアサイン５２７の有効期限を、アノテータ端末４０３に返信する。
【０１３０】
Ｓ６２７で、アノテータ端末４０３が、アサインされたタスク５２５に関連付けられたＵＲＩとアクセスキーを用いて、対応する学習データ５２１をＡＰＩ４０７に要求する。その要求に応答して、ＡＰＩ４０７がＳ６２８で、そのＵＲＩとアクセスキーを用いて、学習データ５２１のファイルにアクセス可能か否かを判断する。その判断結果がＹｅｓならば、ＡＰＩ４０７は、その学習データ５２１のファイルをストレージ４０８から読みだし、Ｓ６２９で、そのファイルをアノテータ端末４０３に返信する。そのファイルを受けて、Ｓ６３０で、アノテータ端末４０３がその学習データ５２１を表示する。
【０１３１】
Ｓ６３１で、アノテータ４０２が、その表示された学習データ５２１についてのアノテーション結果（例えば、学習データ５２１についてアノテータ４０２が判断した事柄を特定したラベル）を、アノテータ端末４０３に入力する。Ｓ６３２で、アノテータ端末４０３が、入力されたアノテーションと、そのタスク５２５の終了時刻（例えば、現在時刻）をＡＰＩ４０７に送信する。それらのデータを受けてＡＰＩ４０７が、Ｓ６３３で、そのタスク５２５に関連付けられたレザルト５２９を作成し、そのレザルト５２９に作業時間（例えば、タスクの開始時刻（アサイン時刻）から終了時刻までの時間長）を記録する。そして、ＡＰＩ４０７は、Ｓ６３４で、アノテーション結果を受け付けた旨の応答をアノテータ端末４０３に返す。
【０１３２】
図１０は、上述の図９に示されたアサイン処理（S６２５）の制御の流れの一例を示す。
【０１３３】
Ｓ６４１で、そのアノテータ４０２の既存のアサイン５２７がサーチされ、Ｓ６４２で、それら既存アサイン５２７の中に有効期限が切れたものがあるかチェックされる。Ｓ６４３で、有効期限の切れたアサイン５２７があれば、それが無効化される、つまり、取り消される。そのアノテータ４０２に割り当てられた或るタスク５２５が有効期限が満了しても完了しない場合、そのアノテータ４０２へのそのタスクのアサインをキャンセルすることで、別のアノテータ４０２に改めてそのタスクをアサインすることができる。それにより、そのタスク５２５の完了の遅延を抑制することができる。そして、Ｓ６４４で、有効期限内の既存アサイン５２７が、そのアノテータ６４４に通知される。
【０１３４】
Ｓ６４５で、そのアノテータ４０２に新たにタスクをアサインすることができるか否かがチェックされる。例えば、そのアノテータ４０２の能力、そのアノテータ４０２がもつ既存の未完了アサインの数、及び、そのアノテータ４０２からの新たなアサインの要求の有無、などに基づいて、このチェックを行うことができる。新たなアサインが可能でなければ、アサイン処理の制御は終了する。
【０１３５】
新たなアサインが可能な場合には、Ｓ６４６で、既存のタスク５２５の中から、ロックされてない未完了のタスク５２５がサーチされる。そして、Ｓ６４７で、見つかったロックされてない未完了のタスク５２５の中から、優先度が他のタスクより高い少なくとも１つのタスク５２５が選択される。Ｓ６４８で、その選択されたタスク５２５をそのアノテータ４０２にアサインする旨のアサイン５２７が作成され、そのアサイン５２７に開始時刻（例えば、現在時刻）と有効期限が記録される。ここで、有効期限は、例えば、そのプロジェクトに５３５に設定された時間切れ条件（例えば、許容される最大の処理時間）を上記開始時刻に適用することで、決定される。
【０１３６】
Ｓ６４９で、その新たなアサイン５２７のタスク５２５と有効期限が、そのアノテータ４０２に通知される。そして、その新たなアサイン５２７によって、そのタスク５２５の現アサイン数が最大アサイン数に達した場合には、Ｓ６５０で、そのタスク５１５がロックされる。
【０１３７】
上述したアサイン処理により、優先度のより高いタスクがより先に処理される可能性が高まる。各タスクの優先度は、図８を参照して説明したように依頼者４００が任意に変更でき、かつ、図１４を参照して後述するように、自動的に変更されもする。タスクの優先度の制御により、タスクの進捗が制御される。
【０１３８】
上述したアサイン処理では、各アサインに有効期限が設定され、有効期限を過ぎても完了しないアサインは自動的に無効化され、同じタスクが他のアノテータに改めてアサインされ得るようになる。それにより、アノテータの怠慢によりタスクの完了が遅れることが抑制される。また、各タスクに最大アサイン数が設定され、最大アサイン数を人数の上限として同じタスクを複数人のアノテータをアサインできる。それにより、同じタスクを複数人のアノテータが処理してアノテーション結果の精度を高めることができ、かつ、最大アサイン数を超える多すぎる人数のアノテータに同じタスクをアサインすることによる非効率が回避できる。
【０１３９】
図１１は、図９を参照して既に説明したアノテーション生成作業の制御に、学習モデルを利用したサジェッションのプロセスを追加した制御の流れを示す。
【０１４０】
ここで、サジェションのプロセスとは、アノテータ４０２を助けて、学習データ５２１にアノテーション作業を容易化するために、本システム５０内の学習部１０２が、付けるべきアノテーション結果つまりラベルのサジェッションを生成して、それをアノテータ４０４に提示するプロセスである。
【０１４１】
図１１において、ＳＳ６２４からＳ６２８の制御は図９に示されたそれと同じである。Ｓ６２８で学習データ５２１のファイルを読みだした後、ＡＰＩ４０７は、そのファイルを学習部１０２に送信する。そのファイルを受けた学習部１０２は、Ｓ６４２で、そのファイルを学習部１０２の学習モデルに入力して機械学習のアルゴリズムを実行する。それにより、その学習データ５２１に対する学習モデルからの出力データ、つまり、その学習モデルにより推測されたその学習データ５２１のラベル（以下、推測ラベルという）が得られる。学習モデルの学習の進捗度合いにより、学習モデルから出力される推測ラベルの信頼性が変わる。学習がある程度にまで進んでいれば、出力される推測ラベルは、アノテータ４０２を助けられる程度に信頼性があるはずである。Ｓ６４３で、学習部１０２は、得られた推測ラベルをサジェッションとしてＡＰＩ４０７に返信する。Ｓ６４４で、ＡＰＩ４０７が、学習データ５２１のファイルと、そのサジェッションをアノテータ端末４０３に返信する。Ｓ６４５で、アノテータ端末４０３が、その学習データ５２１とサジェッション（学習モデルが出した識別結果）を表示する。アノテータ４０２は、その学習データに何のラベルを与えるかを判断する際、そのサジェッションを参考にできる。以後のＳ６３１からＳ６３４の制御は図９に示されたそれと同じである。
【０１４２】
図１２は、アノテーション業務のレビューとその結果の報告の制御の流れを示す。
【０１４３】
Ｓ６５１で、或るレビューワ４０４がレビューワ端末４０５からＡＰＩ４０７にログインを要求する。ログインが成功すると、Ｓ６５２で、ＡＰＩ４０７が、既存の１以上のプロジェクト５３５を表す情報を、そのレビューワ端末４０５へ送る。その情報を受けて、レビューワ端末４０５は、Ｓ６５３で、その表示を、ログイン画面から、レビュー作業を行うためのレビュー画面へと遷移させる。
【０１４４】
その後、以下に述べるＳ６５４からＳ６６４の制御が、１以上のタスクについて繰り返される。
【０１４５】
Ｓ６５４で、レビューワ端末４０５がＡＰＩ４０７に、既存のプロジェクトの中から１つのプロジェクトを選び、その選ばれたプロジェクト５３５に関連付けられたタスク５２５を要求する。その要求に応答して、ＡＰＩ４０７が、Ｓ６５５で、既に１以上のレザルト５２９が付された少なくとも１つのタスク５２５を選び、Ｓ６５６で、その選ばれたタスクをレビューワ端末４０５に返信する。
【０１４６】
Ｓ６５７で、レビューワ端末４０５が、その選ばれたタスク５２５に関連付けられたＵＲＩとアクセスキーを用いて、対応する学習データ５２１を、ＡＰＩ４０３に要求する。その要求に応答して、Ｓ６５８で、ＡＰＩ４０７がそのＵＲＩとアクセスキーを用いて、学習データ５２１のファイルにアクセス可能か否かを判断する。その判断結果がＹｅｓならば、ＡＰＩ４０７は、その学習データ５２１のファイルをストレージ４０８から読みだし、Ｓ６５９で、その学習データ５２１のファイルと、そのタスク５２５に関連付けられたレザルト５２９のアノテーション結果を、レビューワ端末４０５に返信する。それらのデータを受けて、Ｓ６６０で、レビューワ端末４０５が、その学習データ５２１のアノテーション結果を表示する。
【０１４７】
Ｓ６６１で、レビューワ４０４が、その表示された学習データ５２１のアノテーション結果に対するレビュー結果（例えば、そのアノテーション結果つまりラベルが妥当か否かの判断、あるいは、レビューワによるそのラベルの修正、など）を、レビューワ端末４０５に入力する。Ｓ６６２で、レビューワ端末４０５が、入力されたレビュー結果をＡＰＩ４０７に送信する。それらのデータを受けてＡＰＩ４０７が、Ｓ６５３で、そのレザルト５２９に関連付けられたレビュー５３１を作成する。そして、ＡＰＩ４０７は、Ｓ６６４で、レビュー結果を受け付けた旨の応答をレビュー端末４０５に返す。
【０１４８】
依頼者端末４０２は、随時にＳ６６５で、少なくとも自分が依頼した任意のプロジェクトを選び、その選ばれたプロジェクトに関する所望項目（又は固定項目）の情報を、ＡＰＩ４０７に要求することができる。この要求に応答してＡＰＩ４０７は、Ｓ６６６で、要求された情報の報告データを用意し、Ｓ６６７で、その報告データを依頼者端末４０１に返信する。依頼者端末４０１は、Ｓ６４８で、受信した報告データを表示する。
【０１４９】
ここで、報告データに含まれ得る情報項目には、図７に示された管理データベース４０９で管理されている種々のデータがあり、その一つの例は、ワーカ（アノテータ又はレビューワ）に関する情報である。例えば、或るプロジェクトに参加している１人以上のアノテータの情報が依頼者端末４０１から要求された場合、ＡＰＩ４０７は、管理データベース４０９から、例えば、それぞれのアノテータが今までに処理した１以上のタスクの処理時間（開始時刻から終了時刻までの時間長）を得て、その平均値（平均処理時間）を計算する。ＡＰＩ４０７は、また、それぞれのワーカが今までに受けたレビュー結果を、管理データベース４０９から得て、それらレビュー結果を集計する（例えば、アノテーション結果が妥当と判断された回数と、非妥当と判断された回数、それら回数間の比率などを計算する）。そして、ＡＰＩ４０７は、上述のタスクごとの処理時間、平均処理時間、レビュー結果、及び、レビュー結果の集計結果を、報告データに編集して依頼者端末４０１へ返信する。依頼者は、その報告データを参考にして、例えば、それぞれのアノテータの能力の評価、あるいは、それぞれのワーカの報酬金額の調整などを行うことができる。
【０１５０】
依頼者が要求できる情報の別の例は、プロジェクトの進捗状況に関わる状況、あるいは、タスクの状態に関する情報である。例えば、或るプロジェクトに含まれる全て又は一部のタスクに関する情報が依頼者端末４０１から要求された場合、ＡＰＩ４０７は、管理データベース４０９から、例えば、それぞれのタスクの優先度、最大アサイン数、現アサイン数、完了状態などを管理データベース４０９からを得て、その情報を報告データに編集して依頼者端末４０１へ返信する。依頼者は、その報告データから、それぞれのタスクの進捗状況又はプロジェクトの進捗状況を把握し、必要に応じてそれぞれのタスクの優先度を変更できる。このプロセスは、図８に示したＳ６１３からＳ６１５のプロセスに相当する。
【０１５１】
図１３は、アノテーション業務と同時並行的に自動的に行われる学習モデルの訓練の制御の流れを示す。
【０１５２】
Ｓ６７１で、ＡＰＩ４０７が自動的に（例えば、所定のタイムスケジュールに従って、あるいは、レビューの完了のような所定事象をトリガとして）学習部１０２に対して学習を要求する。その要求に応答して、学習部１０２が、Ｓ６７２で、現時点でレビューが完了している１以上のアノテーション結果とそれに対応する１単位以上の学習データ５２１とを教師データとして用いて、機械学習のアルゴリズムを実行する、つまり学習モデルを訓練する。それにより、学習部１０２の学習モデルが更新される。Ｓ６７３で、学習部１０２がＡＰＩ４０７に応答を返す。
【０１５３】
依頼者端末４０１は、随時にＳ６７４で、ＡＰＩ４０７に対して学習を要求することができる。この場合にも、ＡＰＩ４０７が、Ｓ６７５で、学習部１０２に学習を要求する。それに応答して、S６７６で、上述の制御と同様に機械学習のアルゴリズムが実行され、学習部１０２の学習モデルが更新される。Ｓ６６７とＳ６６８で、レスポンスが学習部１０２からＡＰＩ４０７へ、そして依頼者端末４０１へと返される。
【０１５４】
このようにして、アノテーション業務と同時並行的に学習モデルの機械学習つまり訓練が行われる。したがって、アノテーション業務の進捗に従って学習モデルの最適化が進む。学習モデルの最適化が進むほど、図１１を参照して説明されたサジェッションの信頼度が上がる。
【０１５５】
図１４は、タスクの優先度を自動的に変更する制御の流れを示す。
【０１５６】
図８を参照して説明したように、依頼者４００は随時に自分のプロジェクトに含まれる任意のタスクの優先度を変更できる。図１０に示されたアサイン処理の流れから分かるように、タスクの優先度が高いほど、そのタスクがアノテータ４０２に割り当てられる機会がより早くなり、その結果、そのタスクがより早期に完了する可能性が高くなる。本システム５０では、さらに、タスクの優先度を自動的に変更することができる。図１４は、そのような自動的な優先度変更の制御の一例を示す。本システム５０では、この制御は、例えばＡＰＩ４０７と学習部１０２の協働により行われる。
【０１５７】
Ｓ６８１で、ＡＰＩ４０７が、現在時点でレビューが終わってアノテーション結果が確定した完了タスクの数を、確定したアノテーション結果が示すラベルごとに集計する（例えば、学習データである動物画像に与えられたラベル「犬」、「猫」及び「猿」のそれぞれの画像数をカウントする）。これにより、ラベルによる完了タスク数の分布が判明する。S６８２で、ＡＰＩ４０７が、完了タスク数が他のラベルに比べて多い１以上のラベル（以下、多数ラベルという）、及び／又は、完了タスク数が他のラベルに比べて少ない１以上のラベル（以下、小数ラベルという）を、所定のルールに従って選択する。その所定ルールとは、例えば、完了タスク数が最大又は最小のラベルを選ぶ、上記した完了タスク数の分布カーブにおける所定領域に入ったラベルを選ぶ、あるいは、ラベル間で比較した完了タスク数の割合が所定値より高い又は低いラベルを選ぶなど、任意に設定してよい。
【０１５８】
Ｓ６８３で、ＡＰＩ４０７が、現時点でアノテーション結果が確定してない１以上の未完了タスクを選び、そして、選ばれた未完了タスクに関連付けられた学習データ５２１のファイルをストレージ４０８から読みだして、それらファイルを学習部１０２に提供する。Ｓ６８４で、学習部１０２が、提供されたそれぞれの未完了タスクの学習データ５２１を学習モデルに入力して、機械学習のアルゴリズムを実行する。それにより、それぞれの未完了タスクの学習データ５２１に対して学習モデルにより推測されたラベル（推測ラベル）が得られる。学習モデルの学習がある程度にまで進んでいれば、得られた推測ラベルはある程度に信頼できるはずである。それぞれの未完了タスクについて得られた推測ラベルは、学習部１０２からＡＰＩ４０７に返信される。
【０１５９】
Ｓ６８５で、ＡＰＩ４０７は、その推測ラベルが上記の小数ラベル又は多数ラベルと同じである未完了タスクを選ぶ。推測ラベルが少数ラベルと同じ未完了タスクは、他のタスクより優先して処理されてよい。このような未完了タスクを以下では「高優先タスク」という。逆に、推測ラベルが多数ラベルと同じ未完了タスクは、他のタスクより後回しで処理されてよい。このような未完了タスクを以下では「低優先タスク」という。例えば、多数の動物画像にそれぞれの動物種別名のラベルを付与した多数の完了タスクがある場合、完了タスクの大部分にラベル「犬」が付き、ラベル「猫」が付いた完了タスクが非常に少なかったとする。この場合、未完了タスクのうち「猫」とラベルされるべきタスクは優先的に処理されてよく、「犬」とラベルされるべきタスクは後回しで処理されてよい。このような高優先タスクと低優先タスクの一方又は双方の選択がＳ６８５で行われる。
【０１６０】
Ｓ６８６で、ＡＰＩ４０７は、Ｓ６８５で選択された未完了タスクの優先度を変更する、例えば、高優先タスクの優先度を上げる、又は、低優先タスクの優先度を下げる。
【０１６１】
このように完了タスクのラベル（アノテーション結果）の分布に応じて、未完了タスクの優先度が自動的に制御される。この優先度制御は、アノテーション業務によって得られた教師データ数の分布をラベル間でバランスさせることに貢献する。バランスのとれた教師データのセットは、機械学習を適切に行うために有益である。
【０１６２】
図１５は、アノテーション業務におけるイシュー管理の制御の流れを示す。
【０１６３】
イシューとは、図２を参照して既に説明したように、学習データ５２１に何のラベルを与えるべきかをアノテータが判断できない又は判断に迷うという議論を要する事柄を指す。イシューに対応するデータ単位が、図２に示されたイシュー５３３である。図１５には、イシューの管理と解決の流れが示される。図１５において、領域Ａに示された制御は、アノテータ４０２がアノテータ端末４０３を用いて行う処理に関わり、領域Ｂのそれは、レビューワ４０４がレビューワ端末４０５を用いて行う処理に関わり、領域Ｃのそれは、依頼者４００が依頼者端末４０１を用いて行う処理に関わる。
【０１６４】
図１５に示すように、Ｓ７０１で、アノテータ４０２が、アノテータ端末４０３を用いて自分にアサインされたタスクの中から、まだアノテーションを行ってない未処理タスクをサーチする。これは、図９に示されたＳ６２４からＳ６２６の制御と図１０に示されたアサイン処理の制御に該当する。未処理タスクが見つからなければ、このイシュー管理の制御は終了する。
【０１６５】
未処理タスクが見つかると、アノテータ４０２は、Ｓ７０２で、その未処理タスクの内容（学習データ５２１の表示、付けるべきラベルの確認、など）を行い、そして、Ｓ７０３で、正解のラベルが何かを判断する。正解ラベルが分かれば、アノテータ４０２は、Ｓ７０４で、正解ラベルつまりアノテーション結果を入力する。これは、図９に示されたＳ６２７からＳ６３１の制御に該当する。
【０１６６】
正解ラベルが分からない場合、アノテータ４０２は、Ｓ７０５で、アノテーション端末４０３からＡＰＩ４０７に対して要求して、現在時点で存在する同じプロジェクト５３５に関係するイシュー５３３をリストアップし、それらのイシュー５３３の内容を参照する。Ｓ７０６で、アノテータ４０２は、リストアップされたイシュー５３３の中から、現在のタスクに適用可能なイシューを探す。例えば、同一又は類似のタスクに関係付けられたイシューがあれば、そのイシューは適用可能と考えられる。
【０１６７】
適用可能なイシュー５３３が見つかると、アノテータ４０２は、Ｓ７０７で、そのイシュー５３３が解決済みか否かをチェックする。それが解決済みならば、そのイシュー５３３には、どのようにアノテーションを行うべきか（つまり、どのように正解ラベルを判断すべきか）に関する依頼者４００からの指示又はアドバイス、であるガイドが含まれている。したがって、アノテータ４０２は、Ｓ７０８で、そのガイドを参照し、そしてＳ７０３へ戻って正解ラベルを再度検討する。
【０１６８】
Ｓ７０６で適用可能なイシュー５３３が見つからなかった場合、あるいは、Ｓ７０７で適用可能イシューがまだ解決されてなかった（つまり、ガイドがまだ入力されて無い）場合、アノテータ４０２は、Ｓ７０９で、現在のタスクについて所定の動作（例えば、そのタスクを保留する）を行い、そして、次のタスクへ移行する。
【０１６９】
レビューワ４０４は、Ｓ７１１で、レビューワ端末４０５からＡＰＩ４０７にアクセスして、保留されたタスクをリストアップし、それらの保留タスクの内容を参照する。Ｓ７１２で、レビューワ４０４は、リストアップされた保留タスクを、相互に類似する保留タスクから構成される１以上のグループに分類し、そして、各グループ（つまり、相互に類似する保留タスク）に関連付けられたイシュー５３３を作成する。
【０１７０】
依頼者４００は、Ｓ７１３で、依頼者端末４０１からＡＰＩ４０７にアクセスして、自分のプロジェクトにかかわるイシュー５３３をリストアップし、それぞれのイシュー５３４にガイドを入力する。
【０１７１】
レビューワ４０４は、Ｓ７１４で、レビューワ端末４０５からＡＰＩ４０７にアクセスして、自分に関係するイシュー５３３の内容を参照し、それぞれのイシュー５３３に入力されたガイドの妥当性（例えば、アノテータにとり正解ラベルの判断が可能になる程度に、そのガイドが明確か）をチェックする。ガイドが妥当でないと判断されれば、レビューワ４０４は、Ｓ７１５で、イシュー５３３にガイドに関する意見を入れて、依頼者４００にガイドの修正を依頼する。ガイドが妥当でないと判断された場合、レビューワ４０４は、Ｓ７１６で、そのイシュー５３３を解決済みにして、そのイシュー５３３に関連付けられたすべての保留タスクを、それぞれのアノテータ４０２に差し戻す（つまり、保留を解除して通常の未処理タスクに戻す）。これにより、Ｓ７０９で或る未処理タスクを保留したアノテータ４０２は、その未処理タスクについてＳ７０２以降のアノテーション作業を再開することができる。
【０１７２】
このようなイシュー管理により、誤判断や曖昧な判断に基づくアノテーション結果が減り、機械学習のための教師データの品質が向上する。
【０１７３】
以上、本開示の幾つかの実施形態を説明したが、これは本開示の理解のための単なる例示にすぎず、本開示の範囲をそれらの実施形態のみに限定する趣旨ではない。本開示は、その趣旨を逸脱しない範囲で、上記の実施形態とは違うさまざまな構造又は方法で実施することができる。
【符号の説明】
【０１７４】
１００：学習推論支援システム
【図１】
2019003485.tif 000003
【図２】
2019003485.tif 000004
【図３】
2019003485.tif 000005
【図４】
2019003485.tif 000006
【図５】
2019003485.tif 000007
【図６】
2019003485.tif 000008
【図７】
2019003485.tif 000009
【図８】
2019003485.tif 000010
【図９】
2019003485.tif 000011
【図１０】
2019003485.tif 000012
【図１１】
2019003485.tif 000013
【図１２】
2019003485.tif 000014
【図１３】
2019003485.tif 000015
【図１４】
2019003485.tif 000016
【図１５】
2019003485.tif 000017
【国際調査報告】
2019003485.tif 000018
2019003485.tif 000019
2019003485.tif 000020
2019003485.tif 000021