IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ABEJAの特許一覧

<>
  • 特開-計算機システム及び方法 図1
  • 特開-計算機システム及び方法 図2
  • 特開-計算機システム及び方法 図3
  • 特開-計算機システム及び方法 図4
  • 特開-計算機システム及び方法 図5
  • 特開-計算機システム及び方法 図6
  • 特開-計算機システム及び方法 図7
  • 特開-計算機システム及び方法 図8
  • 特開-計算機システム及び方法 図9
  • 特開-計算機システム及び方法 図10
  • 特開-計算機システム及び方法 図11
  • 特開-計算機システム及び方法 図12
  • 特開-計算機システム及び方法 図13
  • 特開-計算機システム及び方法 図14
  • 特開-計算機システム及び方法 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022160544
(43)【公開日】2022-10-19
(54)【発明の名称】計算機システム及び方法
(51)【国際特許分類】
   G06N 20/00 20190101AFI20221012BHJP
【FI】
G06N20/00 130
【審査請求】有
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022121771
(22)【出願日】2022-07-29
(62)【分割の表示】P 2019526134の分割
【原出願日】2018-02-05
(31)【優先権主張番号】P 2017128262
(32)【優先日】2017-06-30
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】517047488
【氏名又は名称】株式会社ABEJA
(74)【代理人】
【識別番号】110000279
【氏名又は名称】特許業務法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】岡田 陽介
(72)【発明者】
【氏名】緒方 貴紀
(72)【発明者】
【氏名】河▲崎▼ 敏弥
(72)【発明者】
【氏名】寺本 拓磨
(57)【要約】      (修正有)
【課題】教師データを用意し、その教師データを用いて学習モデルの機械学習を行なう作業を支援する計算機システム及び方法を提供する。
【解決手段】方法は、計算機システムのストレージ408内の複数単位の学習データ521の各々にアノテーションを付加して教師データを作成する作業を、複数人のワーカによって分担する。各単位の学習データ521にタスク525を設定し、各タスク525には優先度を設定する。各タスク525を、優先度に応じた順序で選択して、少なくとも一人のワーカにアサインする。各タスク525は、所定の最大のアサイン数以下のワーカにアサインされる。各ワーカは、必要あれば、アサインされたタスク525について、イシュー533を他のワーカに発し、そのイシュー533について他のワーカからガイドを得ることができる。
【選択図】図7
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも1つのプロセッサにより処理され得るデータを格納し得る、少なくとも1つの記憶デバイスと、
前記少なとも1つのプロセッサと少なくとも1つの通信ネットワークとに接続された少なくとも1つのインタフェースと
を備え、
前記少なくとも1つのプロセッサが、
1以上の学習モデルを用意し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのデータソースから少なくとも1単位の学習データを入力して、前記入力された学習データを前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのアノテータ端末へ、前記少なくとも1単位の学習データを送信し、
前記少なくとも1つのインタフェースを通じて前記少なくとも1つのアノテータ端末から、前記少なくとも1単位の学習データにそれぞれ関係する少なくとも1つのアノテーション結果を受信し、
前記受信された少なくとも1つのアノテーション結果を、前記少なくとも1単位の学習データにそれぞれ関連付けて、前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1単位の学習データとそれに関連付けられた前記少なくとも1つのアノテーション結果とを、教師データとして用いて、前記1以上の学習モデルの前記機械学習を行うことにより、1以上の学習済みモデルを生成する、
ように構成され、
前記少なくとも1つのプロセッサが、
複数単位の学習データにそれぞれ関連付けられた複数のタスクを作成し、
前記複数のタスクにそれぞれ優先度を設定し、
前記優先度に応じた順序で、前記複数のタスクの中から各タスクを選択し、
選択された各タスクを前記少なくとも1つアノテータ端末にアサインし、
前記アサインされた各タスクに関連付けられた少なくとも1単位の学習データを、前記少なくとも1つのアノテータ端末に送信し、
前記少なくとも1単位の学習データに関するアノテーション結果を、前記少なくとも1つのアノテータ端末から受信し、
前記受信したアノテーション結果を前記少なくとも1つの記憶デバイスに格納する、
ように構成された、計算機システム。
【請求項2】
前記少なくとも1つのプロセッサが、
前記複数のタスクに関連する前記アノテーション結果の分布に応じて、前記複数のタスクの前記優先度を変更する、
ように構成された、
請求項1記載の計算機システム。
【請求項3】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも1つのプロセッサにより処理され得るデータを格納し得る、少なくとも1つの記憶デバイスと、
前記少なとも1つのプロセッサと少なくとも1つの通信ネットワークとに接続された少なくとも1つのインタフェースと
を備え、
前記少なくとも1つのプロセッサが、
1以上の学習モデルを用意し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのデータソースから少なくとも1単位の学習データを入力して、前記入力された学習データを前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのアノテータ端末へ、前記少なくとも1単位の学習データを送信し、
前記少なくとも1つのインタフェースを通じて前記少なくとも1つのアノテータ端末から、前記少なくとも1単位の学習データにそれぞれ関係する少なくとも1つのアノテーション結果を受信し、
前記受信された少なくとも1つのアノテーション結果を、前記少なくとも1単位の学習データにそれぞれ関連付けて、前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1単位の学習データとそれに関連付けられた前記少なくとも1つのアノテーション結果とを、教師データとして用いて、前記1以上の学習モデルの前記機械学習を行うことにより、1以上の学習済みモデルを生成する、
ように構成され、
前記少なくとも1つのプロセッサが、
前記少なくとも1単位の学習データに関連付けられた少なくとも1つのタスクを作成し、
タスクごとに最大アサイン数を設定し、
前記少なくとも1つのタスクを、前記最大アサイン数以下の数の複数のアノテータ端末にアサインし、
前記少なくとも1つのタスクに関連付けられた少なくとも1単位の学習データを、前記少なくとも1つのタスクがアサインされた前記複数のアノテータ端末に送信し、
前記複数のアノテータ端末から、前記少なくとも1単位の学習データに関する複数のアノテーション結果を受信し、
前記受信した複数のアノテーション結果を前記少なくとも1つの記憶デバイスに格納する、
ように構成された、計算機システム。
【請求項4】
前記少なくとも1つのプロセッサが、
前記少なくとも1単位の学習データに関連付けられた少なくとも1つのタスクを作成し、
前記少なくとも1つのタスクを前記少なくとも1つのアノテータ端末にアサインし、
前記アサインされた少なくとも1つのタスクに関連付けられた少なくとも1単位の学習データを、前記少なくとも1つのアノテータ端末に送信し、
前記少なくとも1つのタスクの前記少なくとも1つのアノテータ端末へのアサインに有効期限を設定し、
前記少なくとも1つのアノテータ端末から前記アサインに関連するアノテーション結果が受信されないまま前記アサインの前記有効期限が満了した場合、前記アサインを無効化し、それにより、同じ少なくとも1つのタスクを他の少なくとも1つのアノテーション端末に改めてアサインできるようにする、
ように構成された、
請求項1又は3のいずれか一項記載の計算機システム。
【請求項5】
前記少なくとも1つのプロセッサが、
前記少なくとも1つのアノテータ端末が前記少なくとも1単位の学習データについて前記少なくとも1つのアノテーション結果を作成するのに要した作業時間を計算し、
前記少なくとも1つのアノテータ端末について計算された前記作業時間に関する情報を、少なくとも1つの他の端末に送信する、
ように構成された、
請求項1又は3のいずれか一項記載の計算機システム。
【請求項6】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも1つのプロセッサにより処理され得るデータを格納し得る、少なくとも1つの記憶デバイスと、
前記少なとも1つのプロセッサと少なくとも1つの通信ネットワークとに接続された少なくとも1つのインタフェースと
を備え、
前記少なくとも1つのプロセッサが、
1以上の学習モデルを用意し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのデータソースから少なくとも1単位の学習データを入力して、前記入力された学習データを前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのアノテータ端末へ、前記少なくとも1単位の学習データを送信し、
前記少なくとも1つのインタフェースを通じて前記少なくとも1つのアノテータ端末から、前記少なくとも1単位の学習データにそれぞれ関係する少なくとも1つのアノテーション結果を受信し、
前記受信された少なくとも1つのアノテーション結果を、前記少なくとも1単位の学習データにそれぞれ関連付けて、前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1単位の学習データとそれに関連付けられた前記少なくとも1つのアノテーション結果とを、教師データとして用いて、前記1以上の学習モデルの前記機械学習を行うことにより、1以上の学習済みモデルを生成する、
ように構成され、
前記少なくとも1つのプロセッサが、
前記少なくとも1単位の学習データに関連付けられた少なくとも1つのタスクを作成し、
前記少なくとも1つのタスクを前記少なくとも1つのアノテータ端末にアサインし、
前記少なくとも1つのアノテータ端末が前記アサインされたタスクについて所定の動作をした場合、前記アサインされたタスクに関連するイシューを作成し、
前記作成されたイシューを、少なくとも1つの他の端末へ送信し、
前記少なくとも1つの他の端末から、前記イシューに関するガイドを受信し、
前記受信されたガイドを、前記少なくとも1つのアノテータ端末へ送信可能にする、
ように構成された、計算機システム。
【請求項7】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも1つのプロセッサにより処理され得るデータを格納し得る、少なくとも1つの記憶デバイスと、
前記少なとも1つのプロセッサと少なくとも1つの通信ネットワークとに接続された少なくとも1つのインタフェースと
を備え、
前記少なくとも1つのプロセッサが、
1以上の学習モデルを用意し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのデータソースから少なくとも1単位の学習データを入力して、前記入力された学習データを前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのアノテータ端末へ、前記少なくとも1単位の学習データを送信し、
前記少なくとも1つのインタフェースを通じて前記少なくとも1つのアノテータ端末から、前記少なくとも1単位の学習データにそれぞれ関係する少なくとも1つのアノテーション結果を受信し、
前記受信された少なくとも1つのアノテーション結果を、前記少なくとも1単位の学習データにそれぞれ関連付けて、前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1単位の学習データとそれに関連付けられた前記少なくとも1つのアノテーション結果とを、教師データとして用いて、前記1以上の学習モデルの前記機械学習を行うことにより、1以上の学習済みモデルを生成する、
ように構成され、
前記少なくとも1つのプロセッサが、
前記少なくとも1つのアノテータ端末へ送信される少なくとも1単位の学習データに等価な学習データを、前記少なくとも1つの学習モデルに入力し、
前記等価な学習データが入力された前記少なくとも1つの学習モデルから出力される出力データを受けて、前記少なくとも1単位の学習データに関連するサジェッションを用意し、
前記少なくとも1単位の学習データに関連するサジェッションを、前記少なくとも1つのアノテータ端末へ送信して、前記少なくとも1つのアノテータ端末が前記サジェッションを表示することを可能にする、
ように構成された、計算機システム。
【請求項8】
1以上の学習モデルを用意するステップと、
少なくとも1つのデータソースから複数単位の学習データを入力するステップと、
前記複数単位の学習データにそれぞれ関連付けられた複数のタスクを作成するステップと、
前記複数のタスクにそれぞれ優先度を設定するステップと、
前記優先度に応じた順序で、前記複数のタスクの中から各タスクを選択するステップと、
選択された各タスクを前記少なくとも1つアノテータ端末にアサインするステップと、
前記アサインされた各タスクに関連付けられた少なくとも1単位の学習データを、前記少なくとも1つのアノテータ端末に送信するステップと、
前記少なくとも1単位の学習データに関するアノテーション結果を、前記少なくとも1つのアノテータ端末から受信するステップと、
前記少なくとも1単位の学習データとそれに関する前記アノテーション結果とを、教師データとして用いて、前記1以上の学習モデルの前記機械学習を行うステップと、
を有する、計算機システムにより行われる方法。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、計算機システムを用いた機械学習と推論の少なくとも一方に関する。
【背景技術】
【0002】
近年、画像識別、自動株式取引、自動翻訳などに、実用可能に構成されたニューラルネットワークを用いた推論が利用されている。例えば、特許文献1は、専門家が点検した画像である訓練データをニューラルネットワーク(以下、NN)に適用可能なことを開示している(段落0056及び段落0058)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2016-517052号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
一般に、利用目的に応じてNNの機械学習を適切に行い、そして、その機械学習を完了したNNをコンピュータ上にデプロイして実用に供することは、多くのユーザにとって容易ではない。
【0005】
このような課題は、NN以外の機械学習可能な計算モデル(つまり、いわゆるAI(Artificial Intelligence)全般)についてもあり得る。
【課題を解決するための手段】
【0006】
本開示の一つの側面に従う計算機システムは、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも1つのプロセッサにより処理され得るデータを格納し得る、少なくとも1つの記憶デバイスと、前記少なとも1つのプロセッサと少なくとも1つの通信ネットワークとに接続された少なくとも1つのインタフェースとを備えた物理計算機を有する。そして、前記少なくとも1つのプロセッサが、
1以上の学習モデルを用意し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのデータソースから学習データを入力して、前記入力された学習データを前記少なくとも1つ記憶デバイスに格納し、
前記学習データを用いて前記1以上の学習モデルの機械学習を行うことにより、1以上の学習済みモデルを生成し、
前記1以上の学習済みモデルに基づいて、少なくとも1つの実用モデルを決定し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのデータソースから実用データを入力し、
前記実用データを用いて、前記少なくとも1つの実用モデルによる推論を実行し、
前記推論により前記少なくとも1つの実用モデルから出力される推論結果データを、前記少なくとも1つのインタフェースを通じて少なくとも1つのデータターゲットへ送信する
ように構成される。この一側面に従う計算機システムは、学習モデルの機械学習を行ない、その機械学習の結果に基づいて実用モデルを用意し、その実用モデルを実際の推論に供するという作業に関して、ユーザを支援する。
【0007】
本開示の別の一つの側面に従う計算機システムは、少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサにより実行される命令セットを格納し、かつ、前記少なくとも1つのプロセッサにより処理され得るデータを格納し得る、少なくとも1つの記憶デバイスと、前記少なとも1つのプロセッサと少なくとも1つの通信ネットワークとに接続された少なくとも1つのインタフェースとを備える。前記少なくとも1つのプロセッサが、
1以上の学習モデルを用意し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのデータソースから少なくとも1単位の学習データを入力して、前記入力された学習データを前記少なくとも1つ記憶デバイスに格納し、
前記少なくとも1つのインタフェースを通じて少なくとも1つのアノテータ端末へ、前記少なくとも1単位の学習データを送信し、
前記少なくとも1つのインタフェースを通じて前記少なくとも1つのアノテータ端末から、前記少なくとも1単位の学習データにそれぞれ関係する少なくとも1つのアノテーション結果を受信し、
前記受信された少なくとも1つのアノテーション結果を、前記少なくとも1単位の学習データにそれぞれ関連付けて、前記少なくとも1つの記憶デバイスに格納し、
前記少なくとも1単位の学習データとそれに関連付けられた前記少なくとも1つのアノテーション結果とを、教師データとして用いて、前記1以上の学習モデルの前記機械学習を行うことにより、1以上の学習済みモデルを生成する、
ように構成される。この別の側面に従う計算機システムは、教師データを用意し、その教師データを用いて学習モデルの機械学習を行なうという作業に関して、ユーザを支援することができる。
【図面の簡単な説明】
【0008】
図1】本発明の一実施形態に係る計算機システムの物理構成を示す。
図2】計算機システムの論理構成を示す。
図3】少なくとも1つの物理計算機の論理構成を示す。
図4】仮想ユニットの構成の詳細を示す。
図5】利用目的に対応した実用NN(ニューラルネットワーク)の生成とデプロイに関する処理全体の流れを示す。
図6】計算機システムのアノテーション部の構成を示す。
図7】アノテーション部の管理データベースの構成を示す。
図8】アノテーション業務の開始の制御の流れを示す。
図9】アノテーション業務のアノテーション生成の制御の流れを示す。
図10図9に示された流れ中のアサイン処理の制御の流れを示す。
図11図9に示された流れにサジェッションのプロセスを追加した制御の流れを示す。
図12】アノテーション業務のレビューとその結果の報告の制御の流れを示す。
図13】アノテーション業務と同時並行的に行われる自動学習の制御の流れを示す。
図14】タスクの優先度の自動変更の制御の流れを示す。
図15】アノテーション業務のイシュー管理の制御の流れを示す。
【発明を実施するための形態】
【0009】
以下、本発明の一実施形態を説明する。
【0010】
なお、以下の説明では、「インタフェース部」は、1以上のインタフェースを含む。1以上のインタフェースは、1以上の同種のインタフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0011】
また、以下の説明では、「記憶部」は、メモリ及びストレージを含む。ストレージは、1以上の記憶デバイスを有し、その各記憶デバイスは典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。メモリは、1以上の記憶デバイスを有し、その各記憶デバイスは揮発性の記憶デバイスであってもよいし不揮発性の記憶デバイスであってもよい。
【0012】
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでもよい。
【0013】
また、以下の説明では、「プログラム」は、プロセッサ部により実行可能な命令のセットである。プログラムつまり命令セットがプロセッサ部によって実行されることで、以下の説明されるような様々な処理、制御又は機能が、適宜に記憶部(例えばメモリ)及び/又はインタフェース部を用いながら、行われる。したがって、以下の説明では、プログラムを主語として処理、制御又は機能を説明する場合があるが、その主語が、プロセッサ部(あるいは、そのプロセッサ部を有する装置又はシステム)とされてもよい。プログラムは、プログラムソースから計算機システムにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。プログラムは、典型的には計算機システムのストレージに格納される。
【0014】
また、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊又は集合であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。データセット又はデータセットに含まれるそれぞれの単位のデータは、典型的には計算機システムのストレージに格納される。
【0015】
図1は、本発明の一実施形態に係る計算機システムの物理構成を示す。
【0016】
計算機システム50は、ネットワーク240に接続された複数(又は1つ)の物理計算機201で構成される。
【0017】
ネットワーク240は、1以上の通信ネットワークであり、例えば、FC(Fibre Channel)ネットワークとIP(Internet Protocol)ネットワークとのうちの少なくとも1つを含んでよい。ネットワーク240は、計算機システム50の外に存在してもよい。
【0018】
各物理計算機201は、例えば汎用計算機であり、物理コンピュータリソース330を有する。物理コンピュータリソース330は、ネットワーク240に接続されたインターフェース部251、記憶部252及びそれらに接続されたプロセッサ部253を含む。
【0019】
計算機システム50は、例えば、XaaS(X as a Service)を提供するクラウドコンピューティングシステムでよい。なお、「XaaS」とは、一般には、システムの構築又は運用に必要な何らかのリソース(例えば、ハードウェア、回線、ソフトウェア実行環境、アプリケーションプログラム、開発環境など)をインターネットのようなネットワークを通じて利用できるようにしたサービスを意味する。XaaSの「X」として採用される文字(又はワード)は、XaaSのタイプ(サービスモデル)によって異なる。例えば、XaaSの例として、PaaS(Platform as a Service)、SaaS(Software as a Service)、PaaS(Platform as a Service)、IaaS(Infrastructure as a Service)又はHaaS(Hardware as a Service)がある。
【0020】
図2は、計算機システム50の論理構成を示す。
【0021】
計算機システム50は、機械学習可能な1以上の計算モデルの学習及び推論のうちの少なくとも1つを支援する学習推論支援システム100を提供する。ここで、「計算モデル」とは、コンピュータにより実施される計算プロセス、つまり、コンピュータ上で実現される計算システムである。計算モデルは、本実施形態ではNN(ニューラルネットワーク)であるが、NNは一つの例示であり、計算モデルが必ずしもNNでなければならないわけではなく、他の種類の計算プロセス又は計算システムであってもよい。学習推論支援システム100は、例えば、計算機システム50が提供するクラウドプラットフォーム上に実現されるシステムでよい。学習推論支援システム100は、学習推論システム101と、学習推論システム101を管理する管理システム161とを含む。管理システム161は、学習推論システム101以外のシステムを管理するシステムでもよい。
【0022】
学習推論システム101は、1以上の計算モデル、例えばNN、を用いた機械学習(例えば、ディープラーニング)と、機械学習を終えた1以上の計算モデル、例えばNN、を用いた推論とを行うシステムである。学習推論システム101は、ネットワーク140を通じて、1以上のデータソース111、1以上のデータターゲット113及び1以上のユーザ端末112に接続される。ネットワーク140は、上述のネットワーク240でもよいし、ネットワーク240とは異なるネットワークでもよい。ネットワーク140も、1以上の通信ネットワークでよい。
【0023】
データソース111は、データセットのソース(読込み元)である。データターゲット113は、データセットのターゲット(出力先)である。データソース111及びデータターゲット113のいずれも、例えば、Webサイト、ネットワークストレージ及びユーザ端末112のいずれであってもよい。
【0024】
ユーザ端末112は、ユーザが使用する計算機(クライアント)である。ユーザ端末112は、例えば、学習やデプロイ(展開)を学習推論システム101に指示するのに使用される。ユーザ端末112は、いわゆるクラウドワーカが使用する計算機であってもよい。
【0025】
データソース111、データターゲット113及びユーザ端末112のうちの少なくとも1つは、計算機システム50において実現されるシステム(例えば仮想計算機)でもよい。
【0026】
学習推論システム101は、入力API(Application Programming Interface)106、入力メタ情報121、データプール105、抽出部119、抽出メタ情報129、非構造化ストレージ104、アノテーション部103、アノテーションメタ情報130、学習部102、仮想NNホスト116、推論部114、推論/統計部115、出力API107及び出力メタ情報122を有する。入力API106(入力部の一例)、抽出部119、アノテーション部103、学習部102、仮想NNホスト116、推論部114、推論/統計部115及び出力API107(出力部の一例)のうちの少なくとも1つは、1以上のプログラムである(別の言い方をすれば、1以上のプログラムがプロセッサ部によって実行されることにより実現される機能である)。また、学習推論システム101においては、2以上の学習部102が並列に実行されてもよいし、2以上の推論部114が並列に実行されてもよい。学習部102及び推論部114以外の要素のうちの少なくとも1つの要素が2以上存在してもよい。入力メタ情報121、抽出メタ情報129、アノテーションメタ情報130及び出力メタ情報122といった情報は、計算機システム50における1以上の記憶部に252に格納される。また、データプール105及び非構造化ストレージ104といった記憶領域は、計算機システム50における1以上の記憶部に252が提供する記憶領域である。
【0027】
入力API106は、入力メタ情報121を基に1以上のデータソース111から1以上のデータセットを読み込み、読み込んだデータセットをデータプール105に格納する。
【0028】
入力メタ情報121は、入力API106による読み込み対象のデータセットがもつ属性を示す情報であり、例えば、データセットが格納されている場所や、データセットの識別子を示す情報を含む。
【0029】
データプール105は、データセットを格納する論理的な記憶領域の一例である。具体的には、データプール105には、入力API106が、1以上のデータソース111から読み込んだデータセットを格納する。また、データプール105には、推論部114及び推論/統計部115のうちの少なくとも1つが、推論結果としてのデータセットを格納してもよい。データプール105には、構造化データセットと非構造化データセットが混在し得る。ここで、構造化データとは、例えば、「商品Aの売り上げ金額はBである」というような情報を示すPOS(Point Of Sales)データ、あるいは、「A地域の天候はBである」というような情報を示す天気データ等のように、計算機で統計処理が行えるような意味づけが予め含まれているデータを指す。他方、非構造化データとは、例えば単なる画像、テキスト又は音声のデータのように、計算機で統計処理が行えるような意味づけが含まれてないデータを指す。
【0030】
抽出部119は、抽出メタ情報129を基にデータプール105から非構造化データセットを抽出し、その非構造化データセットを非構造化ストレージ104に格納する。
【0031】
抽出メタ情報129は、抽出部119による抽出の対象の非構造化データセットの属性を示す情報であり、例えば、非構造化データセットの識別子を示す情報を含む。抽出される非構造化データセットは、学習や検証のための非構造化データセット、例えば、犬や猫といった動物が写っている写真画像ファイルである。抽出メタ情報129は、抽出対象の属性を示す情報を、ユーザの利用目的毎に含んでいてもよい。
【0032】
非構造化ストレージ104は、抽出部119により抽出された非構造化データセットが格納される。なお、格納される非構造化データセットには、抽出部119によって、その非構造化データセットに関連付けられる可能性のあるメタ情報(例えば、抽出メタ情報129から抽出されたメタ情報)が、見込み情報(probability)として付加される。非構造化ストレージ104に格納されている非構造化データセットのうち、学習部102での機械学習でNNに入力されることになるデータ(学習データ)のセットを、「学習データセット」と言う。学習データセットに含まれるそれぞれの学習データには、アノテーション部103によりアノテーション結果と関連付けられ得る。そして、学習データとそれに関連付けられたアノテーション結果とを「教師データ」といい、教師データのセットを「教師データセット」と言う。学習データは、例えば単なる画像データ、音声データあるいはテキストデータのような非構造化データであってもよく、あるいは、POSデータのように、データに何らかの意味づけが予め付与されている構造化データであってもよい。
【0033】
アノテーション部103は、学習データセットに対してアノテーション結果を関連付ける作業(以下、これを「アノテーション作業」という)を制御する。具体的には、例えば、アノテーション部103は、アノテーションメタ情報130を基に、下記を行う。
・ユーザ端末112に、非構造化ストレージ104内の学習データセットに対するアノテーション結果(例えば、それぞれの学習データの分類名を示すラベル)の入力(アノテーション作業)の依頼を送信する。
・その依頼を受けたユーザ端末112から、その学習データセットについてのアノテーション結果を受ける。
・受けたアノテーション結果を、その学習データセットに関連付ける。
・アノテーション結果が関連付けられた学習データセット(教師データセット)を、データプール105に格納する。
【0034】
より具体的には、例えば、アノテーション部103は、定期的に又は不定期的に、自動で、クラウドワーカのユーザ端末112に、学習データセットに対するアノテーション結果の入力の依頼を送信する(例えば、アノテーション結果入力用のWebページへのリンクが張られた電子メール又はメッセージを送信する)。その依頼を受けたユーザ端末112に、学習データ(例えば、犬又は猫が写った1枚以上の写真画像)と、その学習データに関する質問(例えば、「各写真画像の動物は犬か猫か?」)と、その質問に対する解答としてのアノテーション結果(例えば、「犬」又は「猫」のラベル)を入力するための入力UI(ユーザインターフェース)とを表示するWebページが提供される。Webページの中身は、アノテーションメタ情報130を基に決定されてよい。アノテーション部103は、Webページ経由でユーザ端末112から入力されたアノテーション結果を、対応する学習データに関連付ける。アノテーション部103は、アノテーション結果が関連付けられた学習データ(教師データ)をデータプール105に格納する。学習データセットに属する各単位の学習データに対して、このようにして、アノテーション結果が作成されて関連付けられる。
【0035】
アノテーションメタ情報130は、アノテーション部103の動作の制御に関する情報を含んだ情報である。アノテーションメタ情報130は、アノテーション部103の動作の制御に関する情報を、ユーザの利用目的毎に含んでいてもよい。
【0036】
学習部102は、機械学習を行うべき少なくとも1つのNN(以下、「学習NN」といい、又は、より一般的に「学習モデル」ともいう)を用意する。そして、学習部102は、その学習NNの機械学習つまり訓練(以下「学習処理」という)を行う。すなわち、学習部102は、図示しない学習メタ情報(例えば、読み込み対象の教師データセットの属性を示す情報を含んだ情報)に基づき、データプール105から教師データセットを読み込み、その読み込んだ教師データセットを上記学習NNに供給して、その学習NNをより最適に近いものに訓練する。本実施形態では、複数の学習部102が並行して動作することができ、それら複数の学習部102が複数の異なる学習NNをそれぞれ訓練することができる。それら複数の学習NNには、利用目的も構成も同じ複数の学習NNが含まれてもいいし、利用目的は同じであるが構成の異なる複数の学習NNが含まれてもいいし、利用目的も構成も異なる複数の学習NNが含まれてもいい。学習メタ情報は、学習部102に定義されているが、それに代えて、学習部102の外部に存在してもよい。学習部102での機械学習が完了した学習NN(以下「学習済みNN」という)は、仮想ホストNN116によりライブラリ化されて保存される(例えば、所定の記憶領域に格納される)。
【0037】
仮想NNホスト116は、各学習済みNNの出力精度を算出する検証処理を行う。仮想NNホスト116は、検証処理の結果に基づいて、所定のルールに従い、1以上の学習済みNNを、実用に供されるNN(以下、「実用NN」といい、又はより一般的に「実用モデル」ともいう)として選ぶ。例えば、同じ利用目的の複数の学習済みNNがある場合、それらの中から、最も出力精度の高い1つの学習済みNNが、実用NNとして選ばれる。ライブラリ化されている1以上の学習済みNNのうち、実用NNとして選ばれたものが、その利用目的に応じて、推論部114又は推論/統計部115にデプロイ(展開)されて、実用に供される。
【0038】
推論部114にデプロイされる実用NNは、主として非構造化データを入力とした特定目的の推論(例えば、動物の写真画像からその動物の種類を識別する)を行うためのNNモデルである。推論部114は、そこにデプロイされた実用NNを実行することにより、その特定の目的の推論処理を行う。例えば、推論部114は、図示しない推論メタ情報(例えば、読み込み対象のデータセットの属性を示す情報を含んだ後述のAPPメタ情報の一例)に基づきデータプール105から、同推論目的のためのデータセット(以下「実用データセット」といい、例えば、動物が写っている写真画像のデータセット)を読み込み、その実用データセットをその実用NNに入力することで、その実用NNから出力データ(例えば、写真画像に写っているのは「犬」といった解答)を得て、その出力データのセット(以下「推論結果データセット」という)をデータプール105に格納する。なお、推論メタ情報は、後述するように推論部114内に存在する。また、2以上の推論部114が並行して実行される。
【0039】
推論/統計部115にデプロイされる実用NNは、主として推論結果データ及び/又は構造化データを入力とした特定目的の推論又は統計処理を行うためのNNモデルである。推論/統計部115は、そこにデプロイされた実用NNを用いて推論処理と統計処理とのうちの少なくとも1つを行う。具体的には、例えば、推論/統計部115は、図示しない推論/統計メタ情報を参照する。推論/統計メタ情報は、例えば、読み込み対象のデータセット(例えば、推論結果データセットと、構造化データセット)の属性を示す情報と、推論結果データセットとその推論結果データセットに関連付けられる値を示す構造化データセットとの関係を示す情報とを含む。推論/統計部115は、推論/統計メタ情報を基に、推論結果データセット及び/又は構造化データセットを読み込み、構造化データセットが示す値を関連付けた推論結果データセットを、推論/統計結果データセットとしてデータプール105に格納する。
【0040】
出力API107は、出力メタ情報122を基にデータプール105から出力対象のデータセット(典型的には、推論結果データセット、又は、推論/統計データセット)を読み込み、読み込んだデータセットを、出力メタ情報122から特定される出力先のデータターゲット113に出力する。出力メタ情報122は、出力API122による読み込み対象のデータセットがもつ属性とそのデータセットの出力先とを示す情報であり、例えば、データセットIDとキーとの関係を示す情報と、出力先とキーとの関係を示す情報とを含む。
【0041】
以上が、計算機システム50の論理構成の説明である。
【0042】
学習推論システム101では、学習部102と推論部114と推論/統計部115が設けられていて、学習部102での機械学習を完了した学習済みNNの中から実用NNとして選ばれたものが、空いている推論部114又は推論/統計部115に自動的にデプロイされ、推論部114又は推論/統計部115がその実用NNを用いた推論処理を行う。つまり、ユーザの利用目的に応じた学習データセット又は実用データセットが学習推論システム101に入力されさえすれば、その利用目的に合致した学習NN又は実用NNが利用されることになる。このため、利用目的に応じた実用可能なNN(又は計算モデル)を準備してこれを実用に供することが、ユーザにとって容易である。
【0043】
なお、学習推論システム101では、入力API106が読み込んだ学習データセットと実用データセット、アノテーション部103が得た教師データセット(アノテーション結果のセットが関連付けられた学習データセット)、推論部114から出力される推論結果データセット、及び、推論/統計部115から得られる推論/統計結果データセットといった、利用目的や処理方法の異なる複数のデータセット(例えば、中間結果としてのデータセットを含む)が、データプール105に集約される。このように複数のデータセットが一箇所に集まっているため、分析等の処理(例えば、推論/統計部115が行う処理)の利便性が高い。しかし、それら複数のデータセットがデータプール105のような一箇所の記憶領域に集約されることが必須ではない。複数のデータセットが、異なる複数の記憶領域に分散してもよい。
【0044】
また、推論/統計部115は無くてもよい。その場合、出力API107からデータターゲット113には、推論結果データセット(構造化データセットが示す値が関連付けられていないデータセット)が出力されてよい。
【0045】
以下、推論部114(又は推論/統計部115)への実用NNのデプロイに関する詳細を説明する。
【0046】
図3は、物理計算機201の論理構成を示す。なお、図3に示す物理計算機201は、計算機システム50のうちの全部又は一部の物理計算機201のうちの1つであり、図3に示す論理構成は、それらの物理計算機201の各々が有する。
【0047】
物理計算機201が有する物理コンピュータリソース350上で、ホストOS(Operating System)314が実行される。ホストOS314上で、複数の仮想ユニット301が実行される。複数の仮想ユニット301にとってホストOS314は共通したOSであるので、ホストOS314は、「共有OS314」と呼ばれてもよい。
【0048】
仮想ユニット301は、仮想的な実行環境であり、例えば、仮想計算機でもよいし、コンテナ(例えば、Linux OS上で動作するコンテナ(Linuxは登録商標))と呼ばれる実行環境でもよい。本実施形態では、1つのAPP(アプリケーションプログラム)302につき1つの仮想ユニット301が存在するが、1つの仮想ユニット301に2以上のAPP302が存在してもよい。
【0049】
仮想ユニット301において、ゲストOS304が実行される。ゲストOS304は、1つの仮想ユニット301につき1つであり、仮想ユニット301内のOSなので、「内部OS304」と呼ばれてもよい。ゲストOS304上で、ミドルウェア303が実行され、ミドルウェア303上で、APP302が実行される。ミドルウェア303が無い仮想ユニット301があってもよく、そのような仮想ユニット301では、ゲストOS304上でAPP302が実行される。
【0050】
各仮想ユニット301において、APP302は、予め、入力モジュール41、出力モジュール43及び制御モジュール45を有する。APP302には、後述するように、実用NNを含む本体モジュール42が動的にデプロイされる(換言すれば、動的に組み込まれる)。言い換えれば、APP302は、それが用意された初期時には、まだ本体モジュール42がそこに組み込まれてない。このように本体モジュール42の無い状態のAPP302を、以下「空きAPP302」と呼び、空きAPP302を有する仮想ユニット301を、以下「空き仮想ユニット301」と呼ぶ。空き仮想ユニット301における空きAPP302に対して、実用NNが含まれた本体モジュール42を、随時にデプロイする(つまり、随時に組み込む)ことができる。このように本体モジュール42がデプロイされた(組み込まれた)状態のAPP302を、以下「占有APP302」と呼び、占有APP302を有する仮想ユニット301を、以下「占有仮想ユニット301」と呼ぶ。
【0051】
ホストOS314は、ホストAPI315を有する。各仮想ユニット301において、ゲストOS304は、ゲストAPI305を有する。以下、各物理計算機201について、ホストAPI315のアドレスを、「ホストアドレス」と呼び、各仮想ユニット301におけるゲストAPI305のアドレスを、「ゲストアドレス」と呼ぶ。ホストアドレスもゲストアドレスも、例えば、IP(Internet Protocol)アドレスである。管理システム161(図2参照)は、各物理計算機201について、ホストアドレスに加えてゲストアドレスも管理する。
【0052】
本実施形態では、少なくとも1つの物理計算機201において、物理コンピュータリソース350上で動くホストOS314上に、複数の空き仮想ユニット301が初期的に設けられている。ホストOS314上の仮想ユニット301の数は、動的に増えても又は減ってもよい(例えば、物理コンピュータリソース350の負荷に応じて仮想ユニット301の数が増えても又は減ってもよい)。しかし、本実施形態では、物理計算機201における仮想ユニット301の個数は、その物理計算機201における物理コンピュータリソース350を基に予め決められている。1つの物理計算機201に複数の空き仮想ユニット301が初期的に用意されているため、その初期的に用意された数の範囲内で占有仮想ユニット301の数が変化しても(つまり、初期的に設けられた複数の空き仮想ユニット301のいずれかに本体モジュール42をデプロイしたり、あるいは、そのデプロイされた本体モジュール42を後に消去するか又は別の本体モジュール42に交換したりしても)、物理計算機201の再起動が不要である。故に、同一の物理計算機201における複数の仮想ユニット301が複数のユーザ(例えば企業)に使用されている環境であっても、いずれのユーザに対してもサービス(APP302が提供するサービス)を止めることを回避できる。
【0053】
なお、上述した推論部114(及び推論/統計部115)の各々は、1つの占有仮想ユニット301(1つの占有APP302)に相当する。推論部114の数は、動的に増えていってよい。すなわち、新たに実用NNが生成されてそれが空き仮想ユニット301にデプロイされていくことで、新たな推論部114が作られてよい。また、上述した学習部102の各々も、同様に1つの占有仮想ユニット301に相当してもよいが、それに代えて、或る物理計算機201に予めインストールされたプログラムであってもよい。また、推論部114及び学習部102以外の少なくとも1つのプログラム(例えば、入力API106、出力API107、仮想NNホスト116及び管理システム161のうちの少なくとも1つ)も、1つの占有仮想ユニット301に相当してもよいが、それに代えて、或る物理計算機201に予めインストールされたプログラムであってもよい。また、例えば、仮想NNホスト116は、物理計算機201におけるホストOS314の少なくとも一部であってよい。
【0054】
図4は、仮想ユニット301の構成の詳細を示す。
【0055】
上述したように、仮想ユニット301では、ゲストOS304上でミドルウェア303が実行され、ミドルウェア303上でAPP302が実行される。
【0056】
APP302は、予め(つまり、空きAPP302の状態で)、入力モジュール41、出力モジュール43及び制御モジュール45を有する。本体モジュール42が動的にAPP302に組み込まれたり、あるいは、そこから除去されたりする。前述したように、本体モジュール42が組み込まれてない状態のAPP302は空きAPP302と呼ばれ、本体モジュール42が組み込まれた状態のAPP302は占有APP302と呼ばれる。本体モジュール42は、APPメタ情報421、データチェックモジュール422及び実用NN423で構成される。
【0057】
入力モジュール41、出力モジュール43及び制御モジュール45は、本体モジュール42の中身(つまり、実用NNの構成及び属性)にその構造が依存しない汎用的なモジュールとして予め定義されている。すなわち、入力モジュール41、出力モジュール43及び制御モジュール45は、2以上の汎用モジュールの一例である。少なくとも1つの汎用モジュールに代えて又は加えて別の汎用モジュールが用意されてもよい。
【0058】
入力モジュール41は、APPメタ情報421を基に、実用データセットを記憶領域(例えばデータプール105内の記憶領域)から読み込み、読み込んだ実用データセットを本体モジュール42へ供給する。読込み対象のデータセット、実用データセットの読込み元の記憶領域、及び、読み込んだ実用データセットの供給先は、いずれも、APPメタ情報421から特定される。
【0059】
出力モジュール43は、APPメタ情報421を基に、本体モジュール42(実用NN423)から出力された推論結果データセットを記憶領域(例えばデータプール105内の記憶領域)に出力(格納)する。データセットの出力先の記憶領域は、APPメタ情報421から特定される。
【0060】
制御モジュール45は、APP302の外部(例えば、ゲストOS304)と通信する。
【0061】
APPメタ情報421は、APP302の動作に関わるメタ情報であり、例えば、下記のうちの少なくとも1つを含む。
・入力モジュール41、出力モジュール43及び制御モジュール45といった予め定義されているモジュールに設定されるパラメータ。すなわち、入力モジュール41に設定されるパラメータ、出力モジュール43に設定されるパラメータ、及び制御モジュール45に設定されるパラメータ。入力モジュール41、出力モジュール43及び制御モジュール45の各々は、APPメタ情報421を基に設定されたパラメータに従い動作する。パラメータ設定は、入力モジュール41、出力モジュール43及び制御モジュール45の各々によって行われてもよいし、制御モジュール45によって行われてもよい。
・入力モジュール41が読み込む対象の実用データセットの属性を示す情報(例えば、データセットのID(例えばファイル名)、読込み元領域のアドレス(例えばLBA(Logical Block Address)))。言い換えれば、実用データセットのアクセス権限に関する情報。
・出力モジュール43が出力する推論結果データセットの出力先の属性を示す情報(例えば、出力先領域のアドレス(例えばLBA))。
・実用NN423の属性を示す情報(例えば、実用NN423のID、実用NN423の読込み元領域のアドレス(例えばLBA)、及び、実用NN423の入力次元及び出力次元)。
・データチェックモジュール422の属性を示す情報(例えば、データチェックモジュール422のID、及び、データチェックモジュール422の読込み元領域のアドレス(例えばLBA))。
・データチェックモジュール422に設定されるパラメータであって、実用NN423に対応したパラメータ(例えば、入力されるチェック対象のデータセットの属性(例えば、データセットの次元、又は、エラーパターン)を示す情報)。
上記のような情報を含んだAPPメタ情報421がAPP302(本体モジュール42)に存在する。つまり、実用NN423を動作させるために必要な情報の全て(又は少なくとも一部)がAPP302に内包される。実用NN423に依存しない汎用モジュールとして構成された入力モジュール41、出力モジュール43及び制御モジュール45が、APPメタ情報421を用いることにより、実用NN423を動作させることができる。
【0062】
データチェックモジュール422は、APPメタ情報421に基づき(例えば、APPメタ情報421に基づき設定されたパラメータに従い)、入力モジュール41から入力された実用データセットが本体モジュール42のデプロイの際に定義された情報通りのデータセットか否か(つまり、正しいデータセットか否か)をチェックする。データチェックモジュール422は、チェック結果が真の場合に、入力された実用データセットを実用NN423に入力する。これにより、誤ったデータセットが実用NN423に入力されてエラーが生じることを避けることができる。なお、データチェックモジュール422は必須でなくてもよい。
【0063】
実用NN423は、入力モジュール41を通じて仮想ユニット301外の記憶領域から実用データセットの入力を受け、そして、推論結果データセット(又は、推論/統計結果データセット)を出力する。出力された推論結果データセットは、出力モジュール43を通じて仮想ユニット301外の記憶領域へ書き込まれる。
【0064】
以上のように、本実施形態において、APP302は、仮想ユニット301内のミドルウェア303上(ゲストOS304上)で実行される。APP302がもつ複数の機能は、それぞれモジュール41、422、423、43、45として構成されており、各モジュール41、422、423、43、45が、サブアプリケーションプログラムである。つまり、APP302は、いわゆる疎結合のAPPである。具体的には、実用NN423を含む本体モジュール42以外の機能モジュールとして、予め、上述した入力モジュール41、出力モジュール43及び制御モジュール45が用意されている。これにより、汎用性が担保されている。そして、APP302において、入力モジュール41、出力モジュール43、制御モジュール45、データチェックモジュール422及び実用NN423は、いずれも、「マイクロサービス」と呼ばれるサブアプリケーションプログラムである。いかなる構成の実用NN423でも、1つのサブアプリケーションプログラムとしてAPP302にデプロイされさえすれば、その実用NN423と仮想ユニット301外との間のデータ入出力を入力モジュール41と出力モジュール43が行ってくれる。このため、実用NN423を実行可能な状態にすることが容易である。具体的には、例えば、実用NN423の構成が更新された場合、更新後の実用NN423を含む新しい本体モジュール42が、古い実用NN423を含む本体モジュール42に上書きされてもよいし、別の空き仮想ユニット301(空きAPP302)にデプロイされてもよい。このため、更新後の実用NN423を実行可能な状態にすることを(及び、実用NN423のリプレース又は追加を)、物理計算機201の再起動無しに可能である。
【0065】
なお、第1の比較例として、仮想ユニット不要の構成が考えられる。この場合、学習部が、実用NNを、環境情報(例えば、入力元に関する情報、入力するデータセットの範囲を示す情報、及び、入力するデータセットのフォーマット(例えば次元数)を示す情報を含んだ情報)を基に、デプロイすることになる。しかし、第1の比較例では、推論結果に伴う処理(例えば、推論結果がAならば処理Bを行う)の設定を実用NN毎に行う必要があり、デプロイコストが高い。また、新たな実用NNをデプロイする毎に物理計算機の再起動が必要となってしまう。物理計算機が再起動している間、その物理計算機で実行されるAPPが提供するサービスが止まってしまう。
【0066】
また、第2の比較例として、仮想ユニットが採用されるものの、密結合のAPP(実用NNと他の機能(例えばデータ入出力や制御など)が一体化したAPP)が採用され、且つ、上述の仮想NNホストが存在しない構成が考えられる。この場合、学習部が、実用NNと一体化したAPPを含んだ仮想ユニットを定義し、その仮想ユニットを設定することになる。しかし、第2の比較例では、或る実用NNの更新が必要になると、その実用NNと一体化したAPP全体のリプレース又は追加が必要になり、結果として、APPと1:1で対応する仮想ユニットのリプレース又は追加が必要にもなる。故に、第1の比較例と同様、物理計算機の再起動が必要となってしまう。また、仮想ユニットがダウンした場合、その仮想ユニット内のAPPのデプロイ先とされる新たに仮想ユニットを追加することが行われ、結果として、物理計算機の再起動が行われてしまう。
【0067】
また、第3の比較例として、2以上の推論部に対して共通のインスタンスを含む構成が考えられる。その場合、そのインスタンスが、全ての推論用データセットを読み込み、それらの推論用データセットを2以上の推論部に入力する。このため、インスタンスがダウンしてしまうといずれの推論部も推論処理を継続することができない。また、インスタンスは、推論部の状態に関わらず推論用データセットを読み込み入力するので、推論部にエラーを生じさせてしまう可能性がある。推論部のエラーが生じると、エラーハンドリングのために、インスタンスは、推論用データセットを読み込むことを停止する。このため、各推論部の推論処理が停止してしまう。
【0068】
本実施形態によれば、上述したように、APP302は、機能がモジュール化されたいわゆる疎結合のAPPであるため、物理計算機201の再起動無しに、実用NN423をリプレース又は追加することができる。
【0069】
また、本実施形態によれば、学習部102が、実用NNと一体のAPPを含んだ仮想ユニットを定義せず、APP302に内包されるAPPメタ情報421と、そのAPPメタ情報421に基づくデータチェックモジュール422及び実用NN423とが、ホスティングされている仮想ユニット301にデプロイされる。
【0070】
また、本実施形態によれば、上述したように、物理計算機201上で動作する仮想ユニット301の数は初期的に2以上の固定数である(例えば、物理コンピュータリソース350を基に予め決められた最大数である)。仮想ユニット301の初期的な個数の範囲内で、物理計算機201の再起動無しに、実用NN423をリプレース又は追加することができる。
【0071】
また、仮想ユニット301において、APP302内の各モジュールは、サブアプリケーションプログラムである。このため、他の仮想ユニット301でエラーが生じても、仮想ユニット301は動作を継続できる。
【0072】
ところで、いわゆる疎結合のAPP(言い換えれば、汎用のAPP)は、いわゆる密結合のAPP(言い換えれば、専用のAPP)に比べて、性能が低いおそれがある。なぜなら、疎結合のAPPでは、モジュール間の通信(例えばAPIベースの通信)が発生するからである。
【0073】
そこで、本実施形態では、図3及び図4に示すように、ホストOS314にホストAPI315(ホストアドレス)が設けられ、各仮想ユニット301のゲストOS304にゲストAPI304(ゲストアドレス)が設けられる。ホストアドレスもゲストアドレスも、管理システム161によって管理される。管理システム161にとって、ゲストアドレスはプライベートアドレス(例えばユーザが独自に決めたアドレス)である。このため、ゲストアドレスを終点としたアクセスが可能であるので(言い換えれば、ホストAPIによるルーティングが不要であるので)、学習推論支援システム100全体の性能が低下することを低減できる。管理システム161は、各仮想ユニット301を、その仮想ユニット301が動作する物理計算機201(又はホストOS314)がいずれの物理計算機201(いずれのホストOS314)であるかに関わらず、ゲストアドレスを用いて仮想ユニット301を管理できる。
【0074】
なお、本実施形態では、APP302毎に、独立して、ゲストOS304(及びミドルウェア303)が存在している。同一物理コンピュータリソース350上で、各APP302(仮想ユニット301)が独立して動作可能である。言い換えれば、各APP302(及び仮想ユニット301)は、そのAPP302(及びその仮想ユニット301)の動作のために他のAPP302(他の仮想ユニット301)と通信することは不要である。同様に、各物理計算機201(ホストOS314)は、その物理計算機201(その仮想ユニット301)の動作のために他の物理計算機201(他のホストOS314)と通信することも不要である。
【0075】
また、管理システム161は、管理部と監視部とを含んだシステムでよい。管理部は、学習推論システム101を管理する。監視部は、学習推論システム101を監視する。管理システム161が行う「管理」は、管理部による「管理」と、監視部による「監視」とを含んでよい。
【0076】
例えば、管理部は、図示しない仮想ユニット管理情報を参照又は更新する。仮想ユニット管理情報は、少なくとも1つの物理計算機201の記憶部252に格納される。仮想ユニット管理情報は、管理対象のゲストアドレス毎に(つまり管理対象の仮想ユニット301毎に)、物理計算機ID、ホストアドレス、本体モジュール属性(例えば、実用NNのID)、及びステータス(例えば、空きを意味する“スタンバイ”や、本体モジュール42が存在することを意味する“アクティブ”や、エラーが生じたことを意味する“エラー”)を含む。管理部は、仮想ユニット管理情報を参照することで、いずれの物理計算機201におけるいずれの仮想ユニット301が空き仮想ユニット301であるかを特定することができる。
【0077】
また、例えば、管理部は、物理計算機201毎に、所定の空き割合以上の空き仮想ユニット301を維持するようになっている。これにより、後述のエラー仮想ユニット301が生じても少なくとも1つのリカバリ先が存在することが担保される。なお、「空き割合」とは、物理計算機201における仮想ユニット301の数に対する、空き仮想ユニット301の割合である。
【0078】
例えば、管理部は、いずれの物理計算機201の空き割合が所定の空き割合以上になる場合、新たに物理計算機201を追加し(例えば、物理計算機201の追加を所定のシステムに指示し)、その新たな物理計算機201に所定数(例えば最大数)の空き仮想ユニット301を配置する。新たな物理計算機201における空き仮想ユニット301が、実用NN423のデプロイ先となり得る。
【0079】
監視部は、例えば、図示しない仮想ユニット監視情報を参照する。仮想ユニット管理情報は、少なくとも1つの物理計算機201の記憶部252に格納される。仮想ユニット監視情報は、監視対象のゲストアドレス毎に(つまり監視対象の仮想ユニット301毎に)、物理計算機ID及びホストアドレスを含む。監視部は、仮想ユニット監視情報を基に、監視対象の仮想ユニット301を監視する。監視部は、いずれかの仮想ユニット301にエラーが生じたことを検出した場合、リカバリを行う。具体的には、例えば、監視部は、エラー仮想ユニット301(エラーが生じた仮想ユニット301)のゲストアドレスを監視部に通知する。監視部は、その通知を受けた場合、仮想ユニット管理情報を参照し、リカバリ先の空き仮想ユニット301を決定し、決定した空き仮想ユニット301に、エラー仮想ユニット301内の本体モジュール42(実用NN423)と同一の本体モジュール42をデプロイすることを決定する(例えば、その同一の本体モジュール42内のAPPメタ情報421のメタ設定指示(リカバリ先の仮想ユニット301のゲストアドレスを指定した指示)を、そのリカバリ先の空き仮想ユニット301に送信する)。なお、リカバリ先の空き仮想ユニット301は、下記のうちのいずれかでよい。リカバリ先の空き仮想ユニット301が、下記のうちの(A)であれば、リカバリにかかる時間(エラー仮想ユニット301内の実用NN423と同一の実用NN423が実行可能な状態になるまでの時間)が短いことが期待できる。
(A)エラー仮想ユニット301が存在する物理計算機201内のいずれかの空き仮想ユニット301。
(B)空き割合が最も小さい物理計算機201内のいずれかの空き仮想ユニット301。
【0080】
また、上述したように、仮想ユニット301は、能動的にデータセットを読み込む。つまり、仮想ユニット301(例えば制御モジュール45)が、速度ハンドリングすることができる。
【0081】
以下、或る利用目的を例に取り、図5を参照して、その利用目的に対応した実用NNの生成とデプロイに関する処理全体の流れを説明する。
【0082】
S501で、アノテーション部103が、アノテーションメタ情報130を基に、その利用目的に該当する教師データセット(学習データセットと、学習データセットに関連付けられたアノテーション結果のデータセット)をデータプール105に格納する。具体的には、例えば、アノテーション部103が、自動で、クラウドワーカ達の多数のユーザ端末112に、学習データセットに対するアノテーション結果(例えば解答)の入力の依頼を送信する。アノテーション部103は、その依頼に応答してユーザ端末112から入力されたアノテーション結果を、学習データセットに関連付け、アノテーション結果が関連付けられた学習データセット(教師データセット)をデータプール105に格納する。このように、教師データセットの生成(学習データセットに対するアノテーション結果の関連付け)は、アノテーション部103によって自動で送信される依頼に応答して行われる。
【0083】
S502で、利用目的に応じた少なくとも1つの学習NN(学習モデル)の構成(例えば、NNの層数、各層の形式と次元数、及び、各層間関数の形式とパラメータセット、など)がユーザ(例えば、AIのエンジニア)によって定義される。定義された学習NNの構成は、例えば管理システム161の記憶領域に設定される。同じ利用目的で構成の異なる複数の学習NNが定義されてもよい。その場合、1以上の物理計算機201上に、それらの複数の学習NNを有した複数の学習部102が用意されてよい。
【0084】
S503で、その1以上の学習NNの各々のパラメータセットのチューニングが行われる。具体的には、例えば、管理システム161が、まず、各学習NNのパラメータセットを初期設定する。その後、下記のS504の学習処理から得られた各学習NNの出力誤差に基づいて、各学習NNのパラメータセットが、より最適に近いものに調整される。
【0085】
S504で、その1以上の学習部102の各々が、学習処理を行う。すなわち、各学習部102は、データプール105の教師データセットから各教師データを読み込み、その各教師データのうちの学習データを各学習NNに入力し、各学習NNから出力データを得る。各学習NNから得られた出力データと、その教師データのうちのアノテーション結果との間の誤差、つまり各学習NNの出力誤差が求められる。出力誤差に応じて、再び上述したS504のパラメータチューニングが行われる。その後、教師データセットから別の教師データが読み込まれ、その教師データを用いたS504とS503の処理が繰り返される。各学習NNについて所定の学習終了条件(例えば、S504とS503の処理が繰り返し回数が或る許容回数に達した、あるいは、出力誤差又はその減少率がある許容値以下になった、など)が満たされると、各学習NNの機械学習が終了する。機械学習が終了した
【0086】
S505で、仮想NNホスト116は、1以上の学習部102で機械学習が終了した1以上の学習NNつまり学習済みNNを、ライブラリに保存し、そして、それら学習済みNNの検証処理を行う。すなわち、仮想NNホスト116は、それら学習済みNNの各々の精度を算出する。具体的には、例えば、仮想NNホスト116は、各学習済みNNに対して、検証のための教師データセットの学習データセットを入力し、そして、各学習済みNNの出力データセットと、その教師データセットのアノテーション結果のセットとを比較する。その比較結果から、仮想NNホスト116は、その学習済みNNの精度(例えば、教師データセットの全データ数に対する正解の出力データの数の比率など)を算出する。そして、仮想NNホスト116は、各学習済みNNの精度を所定の条件を用いて評価する(例えば、各学習済みNNの精度が所定の閾値以上か否かを判断する)。
【0087】
上述の評価の結果、それら学習済みNNのいずれもが精度不足(例えば、それらの精度が上記閾値未満である)と判定された場合、仮想NNホスト116は、管理システム161に、精度不足を通知する。精度不足の通知を受けた管理システム161は、各学習部102に、それら精度不足の学習NNの全部又は一部の追加の学習処理とパラメータチューニング(S504とS503)を実行する。
【0088】
上述の評価の結果、それら学習済みNNの中の少なくとも1つの精度が許容される(例えば、その精度が上記閾値以上である)と判断された場合、S506で、仮想NNホスト116は、その許容精度をもつ少なくとも1つの学習済みNNを実用NNとして選定する。このとき、同じ利用目的のための複数の学習済みNNが許容精度をもつ場合、その中で最も精度の高い1つの学数済みNNを実用モデルとして選んでもよい。仮想NNホスト116は、実用NN423に関する情報(例えばNNのID)を含んだ決定通知を管理システム161に送信する。これにより、管理システム161は、いずれのNNが実用NN423であるかを認識する。また、実用NN423の構成に応じて、管理システム161又は仮想NNホスト116により、その実用NN423に関連付けられたデータチェックモジュール422が用意される。この場合、実用NN423として選ばれなかった学習済みNNの全部又は一部について、追加の機械学習を行ってもよい。また、実用NN423として選ばれたものについても、追加の機械学習を行ってもよい。
【0089】
S507で、管理システム161が、実用NN423を認識したら自動的に、その実用NN423のデプロイ先となるべき空き仮想ユニット301を選定又は用意する(507)。例えば、管理システム161は、仮想ユニット管理情報を基に、上記デプロイ先として、いずれかの既存の空き仮想ユニット301を選定するか、あるいは、新たな空き仮想ユニット301を用意する。なお、管理システム161は、ユーザからの指示に応答して(例えば、実用NN423に関する情報を表示し、その実用NN423の承認としてのデプロイ指示を受けた場合に)、デプロイ先の空き仮想ユニット301を決定してもよい。
【0090】
S508で、管理システム161が、デプロイ先の空き仮想ユニット301に対する環境設定を行う。具体的には、例えば、下記が行われる。
・管理システム161は、実用NN423に対応したAPPメタ情報421を生成し、そのAPPメタ情報421を、デプロイ先の空き仮想ユニット301内のAPP302に設定する。具体的には、例えば、管理システム161は、デプロイ先の空き仮想ユニット301のゲストアドレスを指定したメタ設定指示を、デプロイ先の空き仮想ユニット301に送信する。メタ設定指示は、APPメタ情報421を設定することの指示である。メタ設定指示を、その空き仮想ユニット301を有する物理計算機201内のホストOS314(ホストAPI315)を通じて、指定されたゲストアドレスを有するゲストOS304(ゲストAPI305)が受ける。そのメタ設定指示に応答して、ゲストOS304からの指示をAPP302内の制御モジュール45が受けて、制御モジュール45が、APPメタ情報421を、APP302に設定する。
・管理システム161が、デプロイ先の空き仮想ユニット301のゲストアドレスを指定した有効化指示を送信する。有効化指示は、APPメタ情報421に定義されているパラメータを入力モジュール41及び出力モジュール43に設定する指示である。有効化指示を、メタ設定指示と同様のルートを通じて、ゲストOS304が受ける。その有効化指示に応答して、ゲストOS304からの指示をAPP302内の制御モジュール45が受けて、制御モジュール45が、APPメタ情報421におけるパラメータを入力モジュール41及び出力モジュール43に設定する。また、制御モジュール45は、パラメータが設定された入力モジュール41及び出力モジュール43に対して、テスト動作を指示する。入力モジュール41及び出力モジュール43は、その指示に応答してテスト動作(例えば、APPメタ情報421を基にデータセットを読み込み可能か否かをテストするためのダミーコマンドを発行すること)を行う。
【0091】
S509で、実用NN423(及びそれに関連付いているデータチェックモジュール422)のデプロイが行われる。具体的には、例えば、管理システム161が、デプロイ先の空き仮想ユニット301のゲストアドレスを指定したデプロイ指示を送信する。デプロイ指示とは、APPメタ情報421に定義されている実用NN423をデプロイすることの指示である。デプロイ指示を、メタ設定指示及び有効化指示と同様のルートを通じて、ゲストOS304が受ける。そのデプロイ指示に応答して、ゲストOS304からの指示をAPP302内の制御モジュール45が受けて、制御モジュール45が、APPメタ情報421を基に実用NN423を読み込み(すなわち、APPメタ情報421から特定される場所から、APPメタ情報421から特定される実用NN423を読み込み)、読み込んだ実用NN423をAPP302に設定する。
【0092】
S510で、デプロイ先の仮想ユニット301が新たに監視対象として追加される。具体的には、例えば、管理システム161が、デプロイ先の仮想ユニット301のゲストアドレスを新たに監視対象とするゲストアドレスとする(例えば、仮想ユニット監視情報に追加する)。管理システム161(監視部)が行う監視及びリカバリについては上述の通りである。
【0093】
以上を経て、デプロイ先の仮想ユニット301(実用NN423が設定されたAPP302)の運用が開始する。具体的には、例えば、その仮想ユニット301におけるAPP302が、推論部114として実行される。
【0094】
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【0095】
例えば、本発明は、ディープラーニング以外の学習(例えば機械学習)を行うモジュールを含んだシステムにも適用することができる。従って、学習モデル、学習済みモデル、実用モデル、推論モデル及び推論/統計モデルは、NN以外の構成をもつ計算モデルであってもよい。
【0096】
また、例えば、管理システム161が、APPメタ情報421に加えて実用NN423(及びデータチェックモジュール422)を仮想ユニット301にデプロイしてもよい。
【0097】
また、例えば、1以上の学習部102と、1以上の推論部114と、仮想NNホスト116とが同一の物理計算機201に存在してもよい。別の言い方をすれば、少なくとも一部の物理計算機201(1以上の物理計算機201)の各々が、1以上の学習部102と、1以上の推論部114と、仮想NNホスト116とを有してよい。
【0098】
また、例えば、管理システム161は、いずれの物理計算機201の空き割合が所定の空き割合以上になる場合、新たに物理計算機201を追加することに代えて、又はそれに加えて、不要な本体モジュール42を含んだAPP302を有する仮想ユニット301に、その仮想ユニット301のゲストアドレスを指定した除去指示を送信してもよい。除去指示は、本体モジュール42を除去することの指示である。除去指示を、メタ設定指示及び有効化指示と同様のルートを通じて、ゲストOS304が受ける。その除去指示に応答して、ゲストOS304からの指示をAPP302内の制御モジュール45が受けて、制御モジュール45が、本体モジュール42をAPP302から除去する。これにより、その仮想ユニット301が空き仮想ユニット301になる。制御モジュール45が、完了応答を管理システム161に返す。管理システム161は、その完了応答を受けて、仮想ユニット管理情報を更新、具体的には、その仮想ユニット301のゲストアドレスに対応したステータスを“アクティブ”から“スタンバイ”に更新する。
【0099】
一般に、学習に関する技術や推論に関する技術といった個々の技術は知られているものの、学習から推論までワンストップで行う技術は知られていない。
【0100】
上述した本実施形態にかかる計算機システムは、外部のデータソースから学習データセットを受け、それにアノテーション結果を付与して教師データセットを用意し、そして、その教師データセットを用いて、学習モデルの機械学習を行って、実用モデルを作成することができる。
【0101】
さらに、本システムは、外部のデータソースから実用データセットを受け、その実用データセットを実用モデルに入力して推論処理を実行し、その推論処理の結果を示す推論結果データセットを、外部のデータターゲットに出力することができる。
【0102】
従って、本システムのユーザは、実用モデルを用いた推論(例えば、人の顔認証)を行おうとする場合、実用モデルを用意するための機械学習(例えばニューラルネットワークの訓練)、及び、実用モデルの推論実行環境へのデプロイなど、面倒で複雑な作業を自ら行う必要がない。そのために、ニューラルネットワークのようなモデルの様々な産業分野での利用が容易化され、より高度で便利な情報化社会の発展が促進されることが、期待できる。
【0103】
なお、本システムは、実用モデルを、学習部及び推論部のそれぞれとは別途に保存する手段を更に有してもよい。学習部が、別途に保存された実用モデルを入力して実用モデルの更なる追加の学習つまり訓練を行ってもよい。それにより、性能の向上やユーザ要求の変化などに応じて、実用モデルを進化させることができる。
【0104】
以下では、本実施形態のアノテーション部103について、より詳細に説明する。図6はアノテーション部103の構成例を示す。
【0105】
アノテーション部103は、例えば、図1に示された計算機システム50の1以上の物理計算機201の記憶部252に格納された命令セットを、プロセッサ部253が実行することにより提供される。
【0106】
図6に示されるように、アノテーション部103は、通信ネットワーク140を通じて外部の複数の計算機(例えば、図1に示された複数のユーザ端末112)401、403、405と通信可能である。それら複数の計算機401、403、405には、1以上の依頼者400がそれぞれ使う1以上の依頼者端末401、1以上のアノテータ402がそれぞれ使う1以上のアノテータ端末403、及び、1以上のレビューワ404がそれぞれ使う1以上のレビューワ端末405が含まれる。ここで、依頼者400とは、アノテーション業務を本システム50に依頼する人又は組織である。アノテータ402とは、アノテーション作業(つまり、学習データについてのアノテーション結果を入力する仕事)をする人又は組織である。レビューワ404とは、アノテータにより生成されたアノテーション結果をレビューする(例えば、アノテーション結果の妥当性を判断する、あるいは、さらに、必要に応じてそのアノテーション結果を修正して、最終的なアノテーション結果を決定する)仕事をする人又は組織である。アノテータ402は(場合によるとレビューワ404も)、例えば、クラウドソーシングを通じて供給される、所謂クラウドワーカであってよい。
【0107】
アノテーション部103は、API407とストレージ408と管理データベース409を有する。API407は、依頼者端末機401、アノテータ端末403、及びレビューワ端末405のそれぞれと通信して、それらの計算機とアノテーション業務に必要な情報を送受する。API407の全部又は一部は、図2に示された入力API106又は出力API107に含まれてもいいし、あるいは、それらとは別に用意されてもよい。
【0108】
ストレージ408は、その全部又は一部が、図2に示されたデータプール105又は非構造化ストレージ104に含まれてもいいし、あるいは、それらとは別に用意されてもよい。ストレージ408には、アノテーション作業の対象である学習データのセットが格納される。学習データは、画像データ、動画データ、テキストデータ、音声データ、又は数値データなど、任意の形式のデータであり得る。学習データは、非構造化データ又は構造化データであり得る。学習データついてのアノテーション結果は、例えば、その学習データをNNに入力したときに、そのNNから出力されることが期待されるデータである。したがって、学習データとそのアノテーション結果とから、NNの学習で用いられる教師データを用意することができる。
【0109】
管理データベース409は、その全部又は一部が、図2に示されたデータプール105又は非構造化ストレージ104に含まれてもいいし、あるいは、それらとは別に用意されてもよい。管理データベース409には、アノテーション業務を管理するための各種のデータが格納され、そのデータ構成の例は図7に示される。
【0110】
図7は、管理データベース409の構成例を示す。
【0111】
管理データベース409には、以下のような異なる種類のデータ単位が存在する。
【0112】
1) メタデータ523
ストレージ408に格納された学習データセット502は、複数(通常は多数)の単位の学習データ521を含む。一単位のメタデータ523が、一単位の学習データ521に1対1で関連付けられる。一単位のメタデータ523には、そのメタデータを識別するメタデータID、及び、対応する一単位の学習データ521のファイルを一意に特定する識別コードであるURI(Uniform Resource Identifier)が記録される。URIを利用することで、対応する学習データ521のファイルにアクセスできる。一単位のメタ―データ523には、また、対応する学習データ521に関連する補助情報(例えば、日時、教師データ、又はデータソースなどに関連する情報)も記録できる。
【0113】
2) タスク525
タスク525は、学習データ521にアノテーション結果を関連付ける一単位の作業(つまりタスク)に対応するデータ単位である。タスク525には、そのタスクを識別するタスクID、そのタスクの優先度、そのタスクを割り当てら得るアノテータの最大人数を示す最大アサイン数、そのタスクが完了したか否かを示す完了状態、及び、そのタスクがロックされている(新たなアサインができない)か否かを示すロック状態などが記録される。タスク525の優先度は、そのタスクの進捗を制御するために役立つ。タスク525は、その作業の依頼を受けるアノテータ402にアノテータ端末403を通じて提示される。1つのタスク525は一単位以上のメタデータ523に関連付けられ得る。つまり、1つのタスクが、一単位以上の学習データ521に対するアノテーション作業を含むことができる。また、1以上のタスク525が同じ一単位のメタデータ523は関連付けられ得る。つまり、同じ学習データ521に対して、複数のタスクを設定して、複数人のアノテータによるアノテーション結果を得ることができる。
【0114】
3) アサイン527
アサイン527は、1つのタスク525の1人のアノテータ402への割り当てに対応するデータ単位である。アサイン527の目的の一つは、同じタスク525を多すぎるアノテータ402に重複してアサインしないように、アサイン処理を制御することである。アサイン527には、そのアサインを識別するアサインID、そのアサインの開始時刻と有効期限、及び、そのアサインを与えられた(つまり、対応するタスクを取得した)アノテータ402を特定するアノテータ名などが記録される。あるタスクがあるアノテータ402にアサインされた場合、そのアノテータ402によるそのタスクに対応するアノテーション作業が終わらないうちに、そのアサイン527の有効期限が満了した場合、そのアサインは無効化され、その結果、他のアノテータ402が同じタスクを取得することが可能になる。これにより、アノテータの怠慢によるタスクの遅延が抑制される。1以上のアサイン527が1つのタスク525と関連付けられ得る。つまり、1つのタスクを複数人のアノテータ402に割り当てることができる。タスク525に記述された最大アサイン数が、そのタスクを同時に割り当てることができるアノテータ402の人数の上限である。
【0115】
4) レザルト529
レザルト529は、1人のアノテータ402が行った1つのタスクのアノテーション結果に対応するデータ単位である。レザルト529には、そのレザルトを識別するレザルトID、アノテーション結果、そのアノテーション結果を入力したアノテータ402を特定するワーカ名、及び、対応するタスクをアサインされてから完了するまでに要した時間長を示す作業時間などが記録される。1つのタスクが複数人のアノテータ402に割り当てられた場合、それぞれのアノテータ402のアノテーション結果に対応した複数のレザルト529が、その1つのタスク525に関連付けられる。
【0116】
ここで、或る学習データ521の「アノテーション結果」とは、その学習データ521を学習モデル(学習NN)に入力した時にその学習モデルから出力されることが期待される期待出力データを特定する情報である。それは、多くの場合、その期待出力データの分類を表した「ラベル」である。例えば、或る動物の画像を入力してその動物の種類を識別する方法を学習モデルに学ばせたい場合、その画像のアノテーション結果は、その動物の種類を表した、例えば「犬」又は「猫」などのラベルである。あるいは、例えば、その一部の領域に或る物体が示されている画像を入力して、その物体の領域を画像中から特定する方法を学習モデルに学ばせたい場合、その画像のアノテーション結果は、その物体の領域を特定した例えば塗りつぶし図形又は枠線図形であり、それも「ラベル」と呼ぶことができる。このような、アノテーション結果により特定される期待出力データの分類のことを、以下の説明では「ラベル」と呼ぶ。「ラベル」がどのような形式のデータであるか(例えば、テキスト、図形、数値、画像、音声など)、及び、どのような意味を指すか(例えば、物や人の識別、空間的又は時間的な点、領域又は範囲、判断又は評価、数量又はレベル、など)は、学習データの特性及び学習モデルの利用目的によって異なり得る。
【0117】
5) レビュー531
レビュー531は、1人のレビュアー404が1つのアノテーション結果をレビューする(妥当性を判断したり、必要に応じて修正したりする)仕事に対応するデータ単位である。レビュー531には、そのレビューを識別するレビューID、レビュー結果(例えば、そのアノテーション結果つまりラベルが妥当か否かの判断、あるいは、レビューワ404によって修正されたラベル、など)、及び、そのレビューワ404を特定するワーカ名などが記録される。同じレザルト529に対して1以上のレビュー531が関連付けられ得る。すなわち、同じアノテーション結果を複数人のレビューワ404がレビューすることができる。また、人によるレビューに代えて、又はそれに加えて、本システム50がプログラムに従って自動的にアノテーション結果のレビューを行うこともできる(例えば、同じ学習データ521に対する複数の異なるラベルから、多数決で1つのラベルを正解として自動的に選ぶ、など)。
【0118】
5) イシュー533
学習データ521に何のラベルを与えるべきか、アノテータが判断できない又は判断に迷う場合があり得る。そのような議論を要する事象(イシュー)に対応するデータ単位が、イシュー533である。イシュー533には、そのイシューを識別するイシューID、アノテータ402から報告されたラベルを付けられない理由などの問題点、その問題点を受けて依頼者400がアノテータ402に対して提示したアドバイスや指示などのガイド、そのガイドに対してレビューワ404が提示した意見、及び、そのイシューが解決したか否かを示す解決状態などが記録される。1以上のタスク525に、1以上のイシュー533が関連付けられ得る。
【0119】
6) プロジェクト535
プロジェクト535は、1つのアノテーション業務プロジェクトに対応するデータ単位である。1つのプロジェクト535に1つ以上のタスク525が関連付けられる。プロジェクト535には、そのプロジェクトを識別するプロジェクトID、依頼者を特定する依頼者名、そのプロジェクトの最大アサイン数、及び、そのプロジェクトの時間切れ条件(例えば、タスクの最大許容処理時間)などが記録される。そのプロジェクトの最大アサイン数に基づいて、そのプロジェクトに含まれる各タスクの最大アサイン数が自動的に決定される(例えば、プロジェクトの最大アサイン数とタスクの最大アサイン数が同じである)。そのプロジェクトの時間切れ条件に基づいて、そのプロジェクトに含まれる各タスクの各アサインの有効期限が自動的に決定される(例えば、アサイン開始時刻に上記の最大許容処理時間を加えた時刻が有効期限である)。
【0120】
7) ワーカ537
ワーカ537は、ワーカ(つまり、アノテータ402とレビューワ404)の各人に対応したデータ単位である。ワーカ537には、そのワーカを識別するワーカID、そのワーカの作業に対して支払われる料金の単価、そのワーカの能力(例えば、1つのタスクを完了するのに要した作業時間の平均)を示す作業能力などが記録される。ワーカ537は1つ以上のプロジェクト535に関連付けられ得る。つまり、1人のワーカが複数のプロジェクトに参加し得る。
【0121】
図8から図15は、アノテーション業務を構成する諸プロセスの制御の流れを示す。まず、図8はアノテーション業務の開始の制御の流れを示す。
【0122】
ステップS601で、依頼者端末401がAPI407に、1つの新規プロジェクトの作成を要求する。その要求に応答してAPI407が、S602でプロジェクト535を作成し、そしてS603で、作成されたプロジェクト535のプロジェクトIDを依頼者端末401に返信する。S604で、依頼者端末401がAPI407に、そのプロジェクト535の最大アサイン数と時間切れ条件を設定する。S605で、API407が、その最大アサイン数と時間切れ条件の設定をプロジェクト535に保存し、そしてS606で、設定完了を依頼者端末401に通知する。
【0123】
S607で、依頼者端末401が一単位以上の学習データとそれに付属する情報を、API407にアップロードする。S608で、API407が、アップロードされた学習データ521をストレージ408格納し、それそれの学習データ521に関連付けられたメタデータ523を作成し、そしてS609で、それらメタデータ523のメタデータIDを依頼者端末401に返信する。
【0124】
S610で、依頼者端末401がAPI407に、各学習データ521について1以上のタスクの登録を要求し、それぞれのタスクの優先度(依頼者が要求した優先度、又はデフォルトの優先度)を設定する。それに応答してAPI407が、S611で、各学習データ521に対応する1以上のタスク525を作成し、そしてS612で、それらのタスク525が作成されたことを、依頼者端末401に返信する。
【0125】
その後、依頼者端末401は、随時にS613で、任意のプロジェクト535の任意の1以上のタスク525の作業状況をAPI407から取得して表示して、それを依頼者400に確認させることができる(このプロセスは、図12を参照して後述される)。そして、依頼者400から優先度変更の要求があれば、依頼者端末401は、S614で、依頼者400により選ばれたタスク525の優先度を、依頼者400の所望する値に変更するよう、API407に要求する。この要求に応答して、API407は、S615で、選ばれたタスク525の優先度を更新する。
【0126】
図9は、アノテーション業務のアノテーション生成(つまり、ラベル付与)の制御の流れを示す。
【0127】
S621で、あるアノテータ402がアノテータ端末403からAPI407にログインを要求する。ログインが成功すると、S622で、API407が、既存の1以上のプロジェクト535を表す情報を、そのアノテータ端末403へ送る。その情報を受けて、アノテータ端末403は、S623で、その表示をログイン画面から、アノテーション作成作業を行うためのアノテーション画面へと遷移させる。
【0128】
その後、以下に述べるS624からS634の制御が、1以上のタスクについて繰り返される。
【0129】
S624で、アノテータ端末403がAPI407に、既存のプロジェクトの中から1つのプロジェクトを選び、その選ばれたプロジェクト535に関連付けられた少なくとも1つのタスク525を要求する。その要求に応答して、API407が、S625で、アサイン処理を行う。アサイン処理は、そのアノテータ402に既に割り当てられた1以上の未完了タスク525を見つけてそのアノテータ402に知らせ、さらに、必要に応じて、新たな1以上の未完了タスクをそのアノテータ402に割り当てる処理である。このアサイン処理の詳細は図10を参照して後述される。このアサイン処理で新たなタスクの割り当てを行う場合、API407は、未完了のタスク525の中から、各タスク525の優先度に基づいて、アサインされるべきタスク525を選び、その選ばれたタスク525に関連付けられたアサイン527を作成する。さらに、API407は、そのプロジェクト535の時間切れ条件に基づいて、そのアサイン527の有効期限を決定する。アサイン処理の後、API407は、S627で、アサインされたタスク525と、そのアサイン527の有効期限を、アノテータ端末403に返信する。
【0130】
S627で、アノテータ端末403が、アサインされたタスク525に関連付けられたURIとアクセスキーを用いて、対応する学習データ521をAPI407に要求する。その要求に応答して、API407がS628で、そのURIとアクセスキーを用いて、学習データ521のファイルにアクセス可能か否かを判断する。その判断結果がYesならば、API407は、その学習データ521のファイルをストレージ408から読みだし、S629で、そのファイルをアノテータ端末403に返信する。そのファイルを受けて、S630で、アノテータ端末403がその学習データ521を表示する。
【0131】
S631で、アノテータ402が、その表示された学習データ521についてのアノテーション結果(例えば、学習データ521についてアノテータ402が判断した事柄を特定したラベル)を、アノテータ端末403に入力する。S632で、アノテータ端末403が、入力されたアノテーションと、そのタスク525の終了時刻(例えば、現在時刻)をAPI407に送信する。それらのデータを受けてAPI407が、S633で、そのタスク525に関連付けられたレザルト529を作成し、そのレザルト529に作業時間(例えば、タスクの開始時刻(アサイン時刻)から終了時刻までの時間長)を記録する。そして、API407は、S634で、アノテーション結果を受け付けた旨の応答をアノテータ端末403に返す。
【0132】
図10は、上述の図9に示されたアサイン処理(S625)の制御の流れの一例を示す。
【0133】
S641で、そのアノテータ402の既存のアサイン527がサーチされ、S642で、それら既存アサイン527の中に有効期限が切れたものがあるかチェックされる。S643で、有効期限の切れたアサイン527があれば、それが無効化される、つまり、取り消される。そのアノテータ402に割り当てられた或るタスク525が有効期限が満了しても完了しない場合、そのアノテータ402へのそのタスクのアサインをキャンセルすることで、別のアノテータ402に改めてそのタスクをアサインすることができる。それにより、そのタスク525の完了の遅延を抑制することができる。そして、S644で、有効期限内の既存アサイン527が、そのアノテータ644に通知される。
【0134】
S645で、そのアノテータ402に新たにタスクをアサインすることができるか否かがチェックされる。例えば、そのアノテータ402の能力、そのアノテータ402がもつ既存の未完了アサインの数、及び、そのアノテータ402からの新たなアサインの要求の有無、などに基づいて、このチェックを行うことができる。新たなアサインが可能でなければ、アサイン処理の制御は終了する。
【0135】
新たなアサインが可能な場合には、S646で、既存のタスク525の中から、ロックされてない未完了のタスク525がサーチされる。そして、S647で、見つかったロックされてない未完了のタスク525の中から、優先度が他のタスクより高い少なくとも1つのタスク525が選択される。S648で、その選択されたタスク525をそのアノテータ402にアサインする旨のアサイン527が作成され、そのアサイン527に開始時刻(例えば、現在時刻)と有効期限が記録される。ここで、有効期限は、例えば、そのプロジェクトに535に設定された時間切れ条件(例えば、許容される最大の処理時間)を上記開始時刻に適用することで、決定される。
【0136】
S649で、その新たなアサイン527のタスク525と有効期限が、そのアノテータ402に通知される。そして、その新たなアサイン527によって、そのタスク525の現アサイン数が最大アサイン数に達した場合には、S650で、そのタスク515がロックされる。
【0137】
上述したアサイン処理により、優先度のより高いタスクがより先に処理される可能性が高まる。各タスクの優先度は、図8を参照して説明したように依頼者400が任意に変更でき、かつ、図14を参照して後述するように、自動的に変更されもする。タスクの優先度の制御により、タスクの進捗が制御される。
【0138】
上述したアサイン処理では、各アサインに有効期限が設定され、有効期限を過ぎても完了しないアサインは自動的に無効化され、同じタスクが他のアノテータに改めてアサインされ得るようになる。それにより、アノテータの怠慢によりタスクの完了が遅れることが抑制される。また、各タスクに最大アサイン数が設定され、最大アサイン数を人数の上限として同じタスクを複数人のアノテータをアサインできる。それにより、同じタスクを複数人のアノテータが処理してアノテーション結果の精度を高めることができ、かつ、最大アサイン数を超える多すぎる人数のアノテータに同じタスクをアサインすることによる非効率が回避できる。
【0139】
図11は、図9を参照して既に説明したアノテーション生成作業の制御に、学習モデルを利用したサジェッションのプロセスを追加した制御の流れを示す。
【0140】
ここで、サジェションのプロセスとは、アノテータ402を助けて、学習データ521にアノテーション作業を容易化するために、本システム50内の学習部102が、付けるべきアノテーション結果つまりラベルのサジェッションを生成して、それをアノテータ404に提示するプロセスである。
【0141】
図11において、SS624からS628の制御は図9に示されたそれと同じである。S628で学習データ521のファイルを読みだした後、API407は、そのファイルを学習部102に送信する。そのファイルを受けた学習部102は、S642で、そのファイルを学習部102の学習モデルに入力して機械学習のアルゴリズムを実行する。それにより、その学習データ521に対する学習モデルからの出力データ、つまり、その学習モデルにより推測されたその学習データ521のラベル(以下、推測ラベルという)が得られる。学習モデルの学習の進捗度合いにより、学習モデルから出力される推測ラベルの信頼性が変わる。学習がある程度にまで進んでいれば、出力される推測ラベルは、アノテータ402を助けられる程度に信頼性があるはずである。S643で、学習部102は、得られた推測ラベルをサジェッションとしてAPI407に返信する。S644で、API407が、学習データ521のファイルと、そのサジェッションをアノテータ端末403に返信する。S645で、アノテータ端末403が、その学習データ521とサジェッション(学習モデルが出した識別結果)を表示する。アノテータ402は、その学習データに何のラベルを与えるかを判断する際、そのサジェッションを参考にできる。以後のS631からS634の制御は図9に示されたそれと同じである。
【0142】
図12は、アノテーション業務のレビューとその結果の報告の制御の流れを示す。
【0143】
S651で、或るレビューワ404がレビューワ端末405からAPI407にログインを要求する。ログインが成功すると、S652で、API407が、既存の1以上のプロジェクト535を表す情報を、そのレビューワ端末405へ送る。その情報を受けて、レビューワ端末405は、S653で、その表示を、ログイン画面から、レビュー作業を行うためのレビュー画面へと遷移させる。
【0144】
その後、以下に述べるS654からS664の制御が、1以上のタスクについて繰り返される。
【0145】
S654で、レビューワ端末405がAPI407に、既存のプロジェクトの中から1つのプロジェクトを選び、その選ばれたプロジェクト535に関連付けられたタスク525を要求する。その要求に応答して、API407が、S655で、既に1以上のレザルト529が付された少なくとも1つのタスク525を選び、S656で、その選ばれたタスクをレビューワ端末405に返信する。
【0146】
S657で、レビューワ端末405が、その選ばれたタスク525に関連付けられたURIとアクセスキーを用いて、対応する学習データ521を、API403に要求する。その要求に応答して、S658で、API407がそのURIとアクセスキーを用いて、学習データ521のファイルにアクセス可能か否かを判断する。その判断結果がYesならば、API407は、その学習データ521のファイルをストレージ408から読みだし、S659で、その学習データ521のファイルと、そのタスク525に関連付けられたレザルト529のアノテーション結果を、レビューワ端末405に返信する。それらのデータを受けて、S660で、レビューワ端末405が、その学習データ521のアノテーション結果を表示する。
【0147】
S661で、レビューワ404が、その表示された学習データ521のアノテーション結果に対するレビュー結果(例えば、そのアノテーション結果つまりラベルが妥当か否かの判断、あるいは、レビューワによるそのラベルの修正、など)を、レビューワ端末405に入力する。S662で、レビューワ端末405が、入力されたレビュー結果をAPI407に送信する。それらのデータを受けてAPI407が、S653で、そのレザルト529に関連付けられたレビュー531を作成する。そして、API407は、S664で、レビュー結果を受け付けた旨の応答をレビュー端末405に返す。
【0148】
依頼者端末402は、随時にS665で、少なくとも自分が依頼した任意のプロジェクトを選び、その選ばれたプロジェクトに関する所望項目(又は固定項目)の情報を、API407に要求することができる。この要求に応答してAPI407は、S666で、要求された情報の報告データを用意し、S667で、その報告データを依頼者端末401に返信する。依頼者端末401は、S648で、受信した報告データを表示する。
【0149】
ここで、報告データに含まれ得る情報項目には、図7に示された管理データベース409で管理されている種々のデータがあり、その一つの例は、ワーカ(アノテータ又はレビューワ)に関する情報である。例えば、或るプロジェクトに参加している1人以上のアノテータの情報が依頼者端末401から要求された場合、API407は、管理データベース409から、例えば、それぞれのアノテータが今までに処理した1以上のタスクの処理時間(開始時刻から終了時刻までの時間長)を得て、その平均値(平均処理時間)を計算する。API407は、また、それぞれのワーカが今までに受けたレビュー結果を、管理データベース409から得て、それらレビュー結果を集計する(例えば、アノテーション結果が妥当と判断された回数と、非妥当と判断された回数、それら回数間の比率などを計算する)。そして、API407は、上述のタスクごとの処理時間、平均処理時間、レビュー結果、及び、レビュー結果の集計結果を、報告データに編集して依頼者端末401へ返信する。依頼者は、その報告データを参考にして、例えば、それぞれのアノテータの能力の評価、あるいは、それぞれのワーカの報酬金額の調整などを行うことができる。
【0150】
依頼者が要求できる情報の別の例は、プロジェクトの進捗状況に関わる状況、あるいは、タスクの状態に関する情報である。例えば、或るプロジェクトに含まれる全て又は一部のタスクに関する情報が依頼者端末401から要求された場合、API407は、管理データベース409から、例えば、それぞれのタスクの優先度、最大アサイン数、現アサイン数、完了状態などを管理データベース409からを得て、その情報を報告データに編集して依頼者端末401へ返信する。依頼者は、その報告データから、それぞれのタスクの進捗状況又はプロジェクトの進捗状況を把握し、必要に応じてそれぞれのタスクの優先度を変更できる。このプロセスは、図8に示したS613からS615のプロセスに相当する。
【0151】
図13は、アノテーション業務と同時並行的に自動的に行われる学習モデルの訓練の制御の流れを示す。
【0152】
S671で、API407が自動的に(例えば、所定のタイムスケジュールに従って、あるいは、レビューの完了のような所定事象をトリガとして)学習部102に対して学習を要求する。その要求に応答して、学習部102が、S672で、現時点でレビューが完了している1以上のアノテーション結果とそれに対応する1単位以上の学習データ521とを教師データとして用いて、機械学習のアルゴリズムを実行する、つまり学習モデルを訓練する。それにより、学習部102の学習モデルが更新される。S673で、学習部102がAPI407に応答を返す。
【0153】
依頼者端末401は、随時にS674で、API407に対して学習を要求することができる。この場合にも、API407が、S675で、学習部102に学習を要求する。それに応答して、S676で、上述の制御と同様に機械学習のアルゴリズムが実行され、学習部102の学習モデルが更新される。S667とS668で、レスポンスが学習部102からAPI407へ、そして依頼者端末401へと返される。
【0154】
このようにして、アノテーション業務と同時並行的に学習モデルの機械学習つまり訓練が行われる。したがって、アノテーション業務の進捗に従って学習モデルの最適化が進む。学習モデルの最適化が進むほど、図11を参照して説明されたサジェッションの信頼度が上がる。
【0155】
図14は、タスクの優先度を自動的に変更する制御の流れを示す。
【0156】
図8を参照して説明したように、依頼者400は随時に自分のプロジェクトに含まれる任意のタスクの優先度を変更できる。図10に示されたアサイン処理の流れから分かるように、タスクの優先度が高いほど、そのタスクがアノテータ402に割り当てられる機会がより早くなり、その結果、そのタスクがより早期に完了する可能性が高くなる。本システム50では、さらに、タスクの優先度を自動的に変更することができる。図14は、そのような自動的な優先度変更の制御の一例を示す。本システム50では、この制御は、例えばAPI407と学習部102の協働により行われる。
【0157】
S681で、API407が、現在時点でレビューが終わってアノテーション結果が確定した完了タスクの数を、確定したアノテーション結果が示すラベルごとに集計する(例えば、学習データである動物画像に与えられたラベル「犬」、「猫」及び「猿」のそれぞれの画像数をカウントする)。これにより、ラベルによる完了タスク数の分布が判明する。S682で、API407が、完了タスク数が他のラベルに比べて多い1以上のラベル(以下、多数ラベルという)、及び/又は、完了タスク数が他のラベルに比べて少ない1以上のラベル(以下、小数ラベルという)を、所定のルールに従って選択する。その所定ルールとは、例えば、完了タスク数が最大又は最小のラベルを選ぶ、上記した完了タスク数の分布カーブにおける所定領域に入ったラベルを選ぶ、あるいは、ラベル間で比較した完了タスク数の割合が所定値より高い又は低いラベルを選ぶなど、任意に設定してよい。
【0158】
S683で、API407が、現時点でアノテーション結果が確定してない1以上の未完了タスクを選び、そして、選ばれた未完了タスクに関連付けられた学習データ521のファイルをストレージ408から読みだして、それらファイルを学習部102に提供する。S684で、学習部102が、提供されたそれぞれの未完了タスクの学習データ521を学習モデルに入力して、機械学習のアルゴリズムを実行する。それにより、それぞれの未完了タスクの学習データ521に対して学習モデルにより推測されたラベル(推測ラベル)が得られる。学習モデルの学習がある程度にまで進んでいれば、得られた推測ラベルはある程度に信頼できるはずである。それぞれの未完了タスクについて得られた推測ラベルは、学習部102からAPI407に返信される。
【0159】
S685で、API407は、その推測ラベルが上記の小数ラベル又は多数ラベルと同じである未完了タスクを選ぶ。推測ラベルが少数ラベルと同じ未完了タスクは、他のタスクより優先して処理されてよい。このような未完了タスクを以下では「高優先タスク」という。逆に、推測ラベルが多数ラベルと同じ未完了タスクは、他のタスクより後回しで処理されてよい。このような未完了タスクを以下では「低優先タスク」という。例えば、多数の動物画像にそれぞれの動物種別名のラベルを付与した多数の完了タスクがある場合、完了タスクの大部分にラベル「犬」が付き、ラベル「猫」が付いた完了タスクが非常に少なかったとする。この場合、未完了タスクのうち「猫」とラベルされるべきタスクは優先的に処理されてよく、「犬」とラベルされるべきタスクは後回しで処理されてよい。このような高優先タスクと低優先タスクの一方又は双方の選択がS685で行われる。
【0160】
S686で、API407は、S685で選択された未完了タスクの優先度を変更する、例えば、高優先タスクの優先度を上げる、又は、低優先タスクの優先度を下げる。
【0161】
このように完了タスクのラベル(アノテーション結果)の分布に応じて、未完了タスクの優先度が自動的に制御される。この優先度制御は、アノテーション業務によって得られた教師データ数の分布をラベル間でバランスさせることに貢献する。バランスのとれた教師データのセットは、機械学習を適切に行うために有益である。
【0162】
図15は、アノテーション業務におけるイシュー管理の制御の流れを示す。
【0163】
イシューとは、図2を参照して既に説明したように、学習データ521に何のラベルを与えるべきかをアノテータが判断できない又は判断に迷うという議論を要する事柄を指す。イシューに対応するデータ単位が、図2に示されたイシュー533である。図15には、イシューの管理と解決の流れが示される。図15において、領域Aに示された制御は、アノテータ402がアノテータ端末403を用いて行う処理に関わり、領域Bのそれは、レビューワ404がレビューワ端末405を用いて行う処理に関わり、領域Cのそれは、依頼者400が依頼者端末401を用いて行う処理に関わる。
【0164】
図15に示すように、S701で、アノテータ402が、アノテータ端末403を用いて自分にアサインされたタスクの中から、まだアノテーションを行ってない未処理タスクをサーチする。これは、図9に示されたS624からS626の制御と図10に示されたアサイン処理の制御に該当する。未処理タスクが見つからなければ、このイシュー管理の制御は終了する。
【0165】
未処理タスクが見つかると、アノテータ402は、S702で、その未処理タスクの内容(学習データ521の表示、付けるべきラベルの確認、など)を行い、そして、S703で、正解のラベルが何かを判断する。正解ラベルが分かれば、アノテータ402は、S704で、正解ラベルつまりアノテーション結果を入力する。これは、図9に示されたS627からS631の制御に該当する。
【0166】
正解ラベルが分からない場合、アノテータ402は、S705で、アノテーション端末403からAPI407に対して要求して、現在時点で存在する同じプロジェクト535に関係するイシュー533をリストアップし、それらのイシュー533の内容を参照する。S706で、アノテータ402は、リストアップされたイシュー533の中から、現在のタスクに適用可能なイシューを探す。例えば、同一又は類似のタスクに関係付けられたイシューがあれば、そのイシューは適用可能と考えられる。
【0167】
適用可能なイシュー533が見つかると、アノテータ402は、S707で、そのイシュー533が解決済みか否かをチェックする。それが解決済みならば、そのイシュー533には、どのようにアノテーションを行うべきか(つまり、どのように正解ラベルを判断すべきか)に関する依頼者400からの指示又はアドバイス、であるガイドが含まれている。したがって、アノテータ402は、S708で、そのガイドを参照し、そしてS703へ戻って正解ラベルを再度検討する。
【0168】
S706で適用可能なイシュー533が見つからなかった場合、あるいは、S707で適用可能イシューがまだ解決されてなかった(つまり、ガイドがまだ入力されて無い)場合、アノテータ402は、S709で、現在のタスクについて所定の動作(例えば、そのタスクを保留する)を行い、そして、次のタスクへ移行する。
【0169】
レビューワ404は、S711で、レビューワ端末405からAPI407にアクセスして、保留されたタスクをリストアップし、それらの保留タスクの内容を参照する。S712で、レビューワ404は、リストアップされた保留タスクを、相互に類似する保留タスクから構成される1以上のグループに分類し、そして、各グループ(つまり、相互に類似する保留タスク)に関連付けられたイシュー533を作成する。
【0170】
依頼者400は、S713で、依頼者端末401からAPI407にアクセスして、自分のプロジェクトにかかわるイシュー533をリストアップし、それぞれのイシュー534にガイドを入力する。
【0171】
レビューワ404は、S714で、レビューワ端末405からAPI407にアクセスして、自分に関係するイシュー533の内容を参照し、それぞれのイシュー533に入力されたガイドの妥当性(例えば、アノテータにとり正解ラベルの判断が可能になる程度に、そのガイドが明確か)をチェックする。ガイドが妥当でないと判断されれば、レビューワ404は、S715で、イシュー533にガイドに関する意見を入れて、依頼者400にガイドの修正を依頼する。ガイドが妥当でないと判断された場合、レビューワ404は、S716で、そのイシュー533を解決済みにして、そのイシュー533に関連付けられたすべての保留タスクを、それぞれのアノテータ402に差し戻す(つまり、保留を解除して通常の未処理タスクに戻す)。これにより、S709で或る未処理タスクを保留したアノテータ402は、その未処理タスクについてS702以降のアノテーション作業を再開することができる。
【0172】
このようなイシュー管理により、誤判断や曖昧な判断に基づくアノテーション結果が減り、機械学習のための教師データの品質が向上する。
【0173】
以上、本開示の幾つかの実施形態を説明したが、これは本開示の理解のための単なる例示にすぎず、本開示の範囲をそれらの実施形態のみに限定する趣旨ではない。本開示は、その趣旨を逸脱しない範囲で、上記の実施形態とは違うさまざまな構造又は方法で実施することができる。
【符号の説明】
【0174】
100:学習推論支援システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15