(57)【要約】【課題】  機械学習において、学習データの数を制限しつつ、学習モデルの精度を上げる。【解決手段】  システム１０１は、機械学習を行う計算モデルと、計算モデルの学習を制御する学習制御システム２００を備える。学習制御システム２００は、学習データを蓄積する記憶装置２０３と、蓄積された学習データの中から、一部の学習データをサンプリングする手段２０５と、サンプリングされた学習データの最大数を制限する手段２０７と、サンプリングされた学習データを用いて計算モデルの学習を行う手段２１１とを有する。【選択図】図３
2019144872.tif 000002
【特許請求の範囲】
【請求項１】
計算モデルと、
前記計算モデルの学習を制御する学習制御システムと
を備え、前記学習制御システムは、
学習データを蓄積する記憶装置と、
前記蓄積された学習データの中から、一部の学習データをサンプリングする手段と、
前記サンプリングされた学習データの最大数を制限する手段と、
前記サンプリングされた学習データを用いて、前記計算モデルの学習を行う手段と
を有する、
システム。
【請求項２】
学習データを蓄積するステップと、
前記蓄積された学習データの中から、一部の学習データをサンプリングするステップと、
前記サンプリングされた学習データの最大数を制限するステップと、
前記サンプリングされた学習データを用いて、計算モデルの学習を行うステップと
を有する、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には機械学習を行なう計算モデルを有するシステム、及び機械学習の方法に関わり、とくに、大量データを効率的に有効活用するための技術に関する。
【背景技術】
【０００２】
ニューラルネットワークのように機械学習を行う計算モデルを有するシステムが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−３６０６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
その種のシステムに、データがシステムに連続的に入ってきて膨大になる場合、全てのデータを学習に利用すると、データ量に比例して学習時間が増加してしまう。他方、学習に使うデータ数を単純に削減するだけでは、ユーザが望んだように精度が向上しない。例えば、学習対象の環境が変化したならば、学習をその新しい環境に適合させたいとユーザが望んでも、それが難しい。
【課題を解決するための手段】
【０００５】
本開示の一実施形態に従う、機械学習を行う計算モデルを有するシステムは、前記計算モデルの学習を制御する学習制御システムを備え、前記学習制御システムは、学習データを蓄積する記憶装置と、前記蓄積された学習データの中から、一部の学習データをサンプリングする手段と、前記サンプリングされた学習データの最大数を制限する手段と、前記サンプリングされた学習データを用いて、前記計算モデルの学習を行う手段とを有する。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に係る計算機システムの物理構成を示す。
【図２】計算機システムの論理構成を示す。
【図３】学習制御システムの機能的構成を示す。
【図４】クラス別の学習を実現する構成例を示す。
【発明を実施するための形態】
【０００７】
以下、本発明の一実施形態を説明する。
【０００８】
なお、以下の説明では、「インタフェース部」は、１以上のインタフェースを含む。１以上のインタフェースは、１以上の同種のインタフェースデバイス（例えば１以上のＮＩＣ（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（以下「学習済みＮＮ」という）は、仮想ホストＮＮ１１６によりライブラリ化されて保存される（例えば、所定の記憶領域に格納される）。
【００３５】
仮想ＮＮホスト１１６は、各学習済みＮＮの出力精度を算出する検証処理を行う。仮想ＮＮホスト１１６は、検証処理の結果に基づいて、所定のルールに従い、1以上の学習済みＮＮを、実用に供されるNN（以下、「実用NN」といい、又はより一般的に「実用モデル」ともいう）として選ぶ。例えば、同じ利用目的の複数の学習済みNNがある場合、それらの中から、最も出力精度の高い１つの学習済みＮＮが、実用NNとして選ばれる。ライブラリ化されている１以上の学習済みＮＮのうち、実用ＮＮとして選ばれたものが、その利用目的に応じて、推論部１１４又は推論／統計部１１５にデプロイ（展開）されて、実用に供される。
【００３６】
推論部１１４にデプロイされる実用ＮＮは、主として非構造化データを入力とした特定目的の推論（例えば、動物の写真画像からその動物の種類を識別する）を行うためのNNモデルである。推論部１１４は、そこにデプロイされた実用NNを実行することにより、その特定の目的の推論処理を行う。例えば、推論部１１４は、図示しない推論メタ情報（例えば、読み込み対象のデータセットの属性を示す情報を含んだ後述のＡＰＰメタ情報の一例）に基づきデータプール１０５から、同推論目的のためのデータセット（以下「実用データセット」といい、例えば、動物が写っている写真画像のデータセット）を読み込み、その実用データセットをその実用NNに入力することで、その実用NNから出力データ（例えば、写真画像に写っているのは「犬」といった解答）を得て、その出力データのセット（以下「推論結果データセット」という）をデータプール１０５に格納する。なお、推論メタ情報は、後述するように推論部１１４内に存在する。また、２以上の推論部１１４が並行して実行される。
【００３７】
推論／統計部１１５にデプロイされる実用ＮＮは、主として推論結果データ及び／又は構造化データを入力とした特定目的の推論又は統計処理を行うためのNNモデルである。推論／統計部１１５は、そこにデプロイされた実用NNを用いて推論処理と統計処理とのうちの少なくとも１つを行う。具体的には、例えば、推論／統計部１１５は、図示しない推論／統計メタ情報を参照する。推論／統計メタ情報は、例えば、読み込み対象のデータセット（例えば、推論結果データセットと、構造化データセット）の属性を示す情報と、推論結果データセットとその推論結果データセットに関連付けられる値を示す構造化データセットとの関係を示す情報とを含む。推論／統計部１１５は、推論／統計メタ情報を基に、推論結果データセット及び／又は構造化データセットを読み込み、構造化データセットが示す値を関連付けた推論結果データセットを、推論／統計結果データセットとしてデータプール１０５に格納する。
【００３８】
出力ＡＰＩ１０７は、出力メタ情報１２２を基にデータプール１０５から出力対象のデータセット（典型的には、推論結果データセット、又は、推論／統計データセット）を読み込み、読み込んだデータセットを、出力メタ情報１２２から特定される出力先のデータターゲット１１３に出力する。出力メタ情報１２２は、出力ＡＰＩ１２２による読み込み対象のデータセットがもつ属性とそのデータセットの出力先とを示す情報であり、例えば、データセットＩＤとキーとの関係を示す情報と、出力先とキーとの関係を示す情報とを含む。
【００３９】
以上が、計算機システム５０の論理構成の説明である。
【００４０】
学習推論システム１０１では、学習部１０２と推論部１１４と推論／統計部１１５が設けられていて、学習部１０２での機械学習を完了した学習済みＮＮの中から実用NNとして選ばれたものが、空いている推論部１１４又は推論／統計部１１５に自動的にデプロイされ、推論部１１４又は推論／統計部１１５がその実用NＮを用いた推論処理を行う。つまり、ユーザの利用目的に応じた学習データセット又は実用データセットが学習推論システム１０１に入力されさえすれば、その利用目的に合致した学習ＮＮ又は実用NNが利用されることになる。このため、利用目的に応じた実用可能なＮＮ（又は計算モデル）を準備してこれを実用に供することが、ユーザにとって容易である。
【００４１】
なお、学習推論システム１０１では、入力ＡＰＩ１０６が読み込んだ学習データセットと実用データセット、アノテーション部１０３が得た教師データセット（アノテーション結果のセットが関連付けられた学習データセット）、推論部１１４から出力される推論結果データセット、及び、推論／統計部１１５から得られる推論／統計結果データセットといった、利用目的や処理方法の異なる複数のデータセット（例えば、中間結果としてのデータセットを含む）が、データプール１０５に集約される。このように複数のデータセットが一箇所に集まっているため、分析等の処理（例えば、推論／統計部１１５が行う処理）の利便性が高い。しかし、それら複数のデータセットがデータプール１０５のような一箇所の記憶領域に集約されることが必須ではない。複数のデータセットが、異なる複数の記憶領域に分散してもよい。
【００４２】
また、推論／統計部１１５は無くてもよい。その場合、出力ＡＰＩ１０７からデータターゲット１１３には、推論結果データセット（構造化データセットが示す値が関連付けられていないデータセット）が出力されてよい。
【００４３】
上述した学習推論システム１０１を運用する際に、実用環境で入力されるデータ（実用データ）で推論すると共に、その実用データを貯める事で、大量の実用データを学習済みモデル又は実用モデルの再学習、あるいは、学習モデルの学習に、学習データとして利用してよい。これにより、モデルの精度の向上が期待できる。この際に、自動でデータを取得することにより、システム１０１の運用時間に比例して、データ量が膨大になってしまい、学習時間が増加してしまうという問題がある。
【００４４】
この問題への一つの対策として、データ数を削減する事で学習時間を抑えることが可能である。しかし、単純にデータを削除するだけでは、ユーザの望んだように精度が向上しない。例えば、過去の環境と現在の環境が大きく変化している場合、最近取得したデータが学習に重要になるにも関わらず一様にデータを削除してしまうと、学習に重要な最近のデータが減ってしまう。一方、環境が変化しない場合においては、最近のデータのみ使うだけではデータの多様性が失われるために、モデルの精度が向上しない。
【００４５】
そこで、学習推論システム１０１は、以下に説明する学習時間を抑えつつモデルの精度を向上させるための学習制御システムを有する。
【００４６】
図３は、その学習制御システム２００の機能的な構成を示す。
【００４７】
図３に示すように、学習制御システム２００は、データ取得部２０１、学習データ蓄積部２０３、データサンプル部２０５、データサンプル数入力部２０７、モデル蓄積部２０９、追加学習部２１１、モデル選択部２１３、及び、モデル更新部２１５を有する。
【００４８】
データ取得部２０１は、外部のデータソースからデータ、例えば、推論に用いられる実用データ、を取得する。学習データ蓄積部２０３は、モデルの学習に用いられる学習データを蓄積する記憶領域である。データ取得部２０１は、取得した実用データを学習データ蓄積部２０３に学習データとして格納する。
【００４９】
データサンプル部２０５は、学習データ蓄積部２０３内の学習データの中から、一部の学習データをサンプリングして（つまり、選択して）読み出す。データサンプル数入力部２０７は、データサンプル部２０５に対して、最大の学習データ単位数を入力つまり設定する。データサンプル部２０５は、設定された最大単位数以下に、実際に読み出される学習データの単位数を制限する。
【００５０】
モデル蓄積部２０９は、学習推論システム１０１が保有する学習モデル、学習済みモデル、及び実用モデルなどの計算モデルを蓄積する記憶領域である。
【００５１】
追加学習部２１１は、モデル蓄積部２０９から、追加学習させるべき計算モデルを読み出し、そのモデルの追加学習を行う。その追加学習では、データサンプル部２０５により読み出された学習データが用いられる。追加学習部２１１は、追加学習が終わった計算モデルを、再び、モデル蓄積部２０９に格納する。
【００５２】
モデル選択部２１３は、モデル蓄積部２０９から、推論に用いられる実用モデルとして利用するモデルを選択的に読み出す。モデル更新部２１５は、推論部１１４又は推論／統計部１１５（図２参照）内の更新すべき実用モデルを、モデル選択部２１３により読み出された実用モデルに更新する。
【００５３】
図３に示された学習制御システム２００がもつ各機能的構成要素は、図２に示された学習推論システム１０１のいずれかの機能的構成要素に含まれてもよいし、あるいは、別の機能的構成要素として用意されてもよい。例えば、図３の追加学習部２１１は、図２の学習部１０２に含まれることができる。
【００５４】
以上のように構成された学習制御システム２００は、学習モデルの学習の際に、次の二つのことを行うことができる。
(1)最大の学習データ数を設定する。
(2)所定のルールに基づき、重み付きで学習に用いるデータをサンプリングする。
【００５５】
最大の学習データ数の設定は、ユーザが行えるようにすることができる。例えば、最大データ数をユーザが入れるためのダイアログが、システム１０１からユーザ端末に提供される。
【００５６】
上記所定のルールの一例は、取得したデータが過去のデータとどの程度一致しているかを判別し、もし同様のデータセットであれば重みを等しく、異なるのであれば最近のデータを利用する、というものである。
【００５７】
上記ルール例において、一致度合いの判定方法は、例えば監視カメラによる画像であれば、一例として、画像の移動平均を取ることによって得られる背景の情報を利用する方法がある。すなわち、最近の移動平均画像と、過去の移動平均画像との差分を取り、その差分から一致の程度を判断することができる。その他の例として、過去の画像で学習したオートエンコーダで、最近の画像が復元できるかどうかを判別することで、一致度合いを評価してもよい。
【００５８】
さらに、上記所定のルールを、ユーザが直接システムに入力できることとしても良い。例えば、環境が変化していないことが既知であれば、蓄積されている学習データを一様の確率でサンプルするというルールを設定してよい。他方、環境が変化しているのであれば、過去の古いデータほどサンプル確率を相対的に低くするというルールを設定しても良い。
【００５９】
学習制御システム２００は、学習対象が徐々に変化する/しないなど様々な状況が起こりうる中で、追加学習を行う際に、使用する学習データ数を制限し、蓄積された学習データを選択的に利用しつつ、選択時に重み付きでサンプリングすることで、学習時間を抑えつつ精度を担保できる。
【００６０】
学習制御システム２００は、さらに、次の機能を有する。
【００６１】
１．  半教師あり学習（Semi-supervised learning）
学習制御システム２００は、学習データにラベルつまりアノテーションを付けるラベルリング部を有する。学習制御システム２００の追加学習部２１１は、アノテーション（ラベル）付き学習データ（つまり、教師データ）と、ラベル無し学習データを併用して学習を行える。
【００６２】
２．  クラス別学習（One-class learning）
学習制御システム２００は、学習データの属性を示すクラス情報を設定するクラス情報設定部と、設定された複数のクラスのうちどのクラスに属するかを指定するラベリング部を有する。学習制御システム２００の追加学習部２１１は、クラス毎学習機能を持つ。
【００６３】
図４に、学習済みの特徴抽出モデルから抽出した特徴を入力とした所定のクラス用のモデルを個別学習することで、クラス別の学習を実現する構成例を示す。
【００６４】
図4に示されるように、学習済みモデル３０２は例えばニューラルネットワークである。入力データ３０１を用いて学習済みモデル３０２で推論を行って得られる、ニューラルネットワークがもつ複数層のそれぞれの中間特徴が、一時的にメモリに保存される。そして、それら層の中間特徴が、所定の１以上のクラス用にそれぞれ用意された１以上のクラス別モデル３０３に入力されて、その推論結果３０４が得られる。ニューラルネットワークの中間特徴を利用することで、異なるクラス間で利用できる汎用な特徴を抽出できる。さらに、クラス毎にいちいちニューラルネットワークを学習させる場合に比較して、この構成例では共通して得られる汎用の特徴を利用することで高速な推論ができる。
【００６５】
３．  追加アノテーション
学習制御システム２００は、学習結果の実用モデルを用いて識別つまり認識を行ってみた際に、認識の精度又は確信度がある基準より低かったデータを選択する低精度データ選択部と、低精度データ選択部により選択されたデータにラベルつまりアノテーションを付与するラベリング部とを有する。
【００６６】
４．  新規データへの自動対応
学習制御システム２００は、用意されたモデルの確信度又は精度を利用することにより、新しい種類のデータの存在を検知し、学習を行う機能を持つ。
【００６７】
５．  認識精度の低下の検知機能
学習制御システム２００は、用意されたモデルの確信度又は精度を利用することにより、精度の低下を検知して学習を行う機能を持つ。この際に、追加アノテーションが指示されても良い。例えば、サービス運用時に識別した結果を解析し、確信度が低いものを検知する。検知後、例えばユーザへその旨を通知したり優先的にアノテーションさせるようにすることで、再学習を容易にできる。これにより、すべてのデータをユーザが目視で判断して、逐次的にアノテーションしなければならない作業負担が軽減される。
【００６８】
以上説明した本発明の幾つかの実施の形態は、説明のための単なる例示であり、本発明の範囲をそれらの実施の形態のみに限定する趣旨ではない。本発明は、上記の実施の形態とは違う様々な形態で、実施することができる。
【符号の説明】
【００６９】
１０１  学習推論システム
２００  学習制御システム
【図１】
2019144872.tif 000003
【図２】
2019144872.tif 000004
【図３】
2019144872.tif 000005
【図４】
2019144872.tif 000006