(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022076277
(43)【公開日】2022-05-19
(54)【発明の名称】モデルのデータ提供方法、モデルのデータ提供システム、サーバ装置、及びコンピュータプログラム
(51)【国際特許分類】
G06N 20/00 20190101AFI20220512BHJP
【FI】
G06N20/00
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2020186620
(22)【出願日】2020-11-09
(71)【出願人】
【識別番号】507228172
【氏名又は名称】株式会社JSOL
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】松崎 健一
(72)【発明者】
【氏名】石川 淳也
(72)【発明者】
【氏名】鈴木 悠哉
(57)【要約】
【課題】モデルのデータ提供方法、モデルのデータ提供システム、サーバ装置、及びコンピュータプログラムを提供する。
【解決手段】モデルのデータ提供方法は、サーバに記憶するグローバルモデルのデータを複数のノードに対して配布し、前記複数のノードが処理するローカルデータによって、各ノードに前記グローバルモデルを基にローカルモデルを学習させ、学習後のローカルモデル及びローカルモデルのバージョン情報を各ノードから取得し、前記複数のノード夫々から取得した複数のローカルモデルのデータに基づいて、グローバルモデルのデータを更新し、取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、選択されたモデルのデータを前記複数のノード又は他の装置へ配布する処理を含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
サーバに記憶するグローバルモデルのデータを複数のノードに対して配布し、
前記複数のノードが処理するローカルデータによって、各ノードに前記グローバルモデルを基にローカルモデルを学習させ、
学習後のローカルモデル及びローカルモデルのバージョン情報を各ノードから取得し、
前記複数のノード夫々から取得した複数のローカルモデルのデータに基づいて、グローバルモデルのデータを更新し、
取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、
異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、
選択されたモデルのデータを前記複数のノード又は他の装置へ配布する
処理を含むモデルのデータ提供方法。
【請求項2】
前記複数のノードに、各ノードの処理対象であるローカルデータに基づいて、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルの精度に基づく評価値を算出させ、
算出された評価値に基づいて、グローバルモデル又はローカルモデルの選択を受け付ける
処理を含む請求項1に記載のモデルのデータ提供方法。
【請求項3】
異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、複数のグローバルモデル及び/又はローカルモデルの選択を受け付け、
グローバルモデル及び/又はローカルモデルそれぞれに、前記ノードが処理するデータを入力して得られる複数の出力結果の比較に基づき、前記データに対する結果を特定させる
請求項1又は2に記載のモデルのデータ提供方法。
【請求項4】
異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルの内、前記複数のノード夫々に、モデルを選択させ、
所定数以上のノードで選択されたモデルを選出する
請求項1から請求項3のいずれか1項に記載のモデルのデータ提供方法。
【請求項5】
前記グローバルモデル及びローカルモデルのバージョン情報と対応付けて、学習に用いられたローカルデータのデータ量、データ特性、又は学習量を記憶し、
前記データ量、データ特性又は学習量を示すデータと共に、前記グローバルモデル及びローカルモデルの選択肢を出力し選択を受け付ける
請求項1から請求項4のいずれか1項に記載のモデルのデータ提供方法。
【請求項6】
前記グローバルモデルのデータの配布、ローカルモデルの学習、ローカルモデルのデータに基づくグローバルモデルのデータの更新を繰り返す過程における前記グローバルモデル及びローカルモデルの評価値を各算出し、
前記評価値に基づき、配布、更新の対象であるグローバルモデルを、前記グローバルモデル又はローカルモデルから選出する
請求項1から請求項5のいずれか1項に記載のモデルのデータ提供方法。
【請求項7】
ローカルデータを各々処理する複数のノードと、該複数のノードから通信接続されるサーバとを含み、
前記サーバは、前記複数のノードへグローバルモデルのデータを配布し、
前記複数のノードは夫々、処理対象のローカルデータのデータによって前記グローバルモデルからローカルモデルの学習を各々進め、
前記サーバが備える処理部は、
学習後の前記ローカルモデル及びローカルモデルのバージョン情報を前記複数のノードから取得し、
前記複数のノード夫々から取得した学習後のローカルモデルのデータに基づいてグローバルモデルのデータを更新し、
取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、
異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、
選択されたモデルのデータを前記複数のノード又は他の装置へ配布する
モデルのデータ提供システム。
【請求項8】
複数のノードと通信接続する通信部と、
記憶するグローバルモデルのデータに対する処理部と
を備え、
前記処理部により、
記憶するグローバルモデルのデータを前記複数のノードに対して配布し、
前記複数のノードで処理するローカルデータによって前記グローバルモデルを基に学習したローカルモデルのデータをバージョン情報と対応付けて取得し、
前記複数のノード夫々から取得した学習後のローカルモデルのデータに基づいてグローバルモデルのデータを更新し、
取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、
異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、
選択されたモデルのデータを前記複数のノード又は他の装置へ配布する
サーバ装置。
【請求項9】
複数のノードに通信接続が可能なコンピュータに、
記憶するグローバルモデルのデータを前記複数のノードに対して配布し、
前記複数のノードで処理するローカルデータによって前記グローバルモデルを基に学習したローカルモデルのデータをバージョン情報と対応付けて取得し、
前記複数のノード夫々から取得した学習後のローカルモデルのデータに基づいてグローバルモデルのデータを更新し、
取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、
異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、
選択されたモデルのデータを前記複数のノード又は他の装置へ配布する
処理を実行させるコンピュータプログラム。
【請求項10】
サーバと通信接続されるコンピュータに、
前記サーバから配布されるグローバルモデルのデータを基にして処理対象のローカルデータを用いたローカルモデルを学習する処理と、学習後のローカルモデルのデータを前記サーバへ送信する処理とを繰り返し、
異なるバージョン情報が対応付けられたグローバルモデルのデータ及びローカルモデルのデータを取得し、
取得したデータに対応する複数のグローバルモデル及び/又はローカルモデルそれぞれに、データを入力して得られる複数の出力結果の比較に基づいて前記データに対する結果を特定する
処理を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散学習の実用化のためのモデルのデータ提供方法、モデルのデータ提供システム、サーバ装置、及びコンピュータプログラムに関する。
【背景技術】
【0002】
深層学習に基づく学習モデルを用いた判定、認識等が実用化されている。学習モデルは多様な技術分野で活用できることが確認されている。学習モデルの精度を各種分野で実用化できる程度に向上するために膨大なトレーニングデータを用いたとしてもパラメータの収束に長時間を要し、精度が良くなるとも限らない。
【0003】
特許文献1には、学習対象の学習モデルのレプリカを複数用意し、それらの複数のモデルレプリカが、非同期で独自に学習する方法が開示されている。特許文献1では、パラメータサーバが複数に断片化されており、学習モデルの複数のレプリカが夫々、非同期で、断片化されたパラメータサーバからパラメータを取得して学習し、パラメータを各パラメータサーバへ返すことを繰り返す。このような分散処理により、学習モデルのパラメータが早期に収束するとされている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示されているような分散処理による深層学習の方法であっても、トレーニングデータは集約している。しかしながら、医療、金融、認証といった分野のデータは個人データであって機密性が高い。モデルの精度を高めるためにトレーニングデータとしてデータを集約するためには、データの提供に各個人の同意が必要である上、同意が得られたとしてもデータ管理の安全性に対するリスクが常につきまとう。
【0006】
本発明は、斯かる事情に鑑みてなされたものであり、分散学習に基づく学習モデルの実用化を促進するモデルのデータ提供方法、モデルのデータ提供システム、サーバ装置、及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示の一実施形態のモデルのデータ提供方法は、サーバに記憶するグローバルモデルのデータを複数のノードに対して配布し、前記複数のノードが処理するローカルデータによって、各ノードに前記グローバルモデルを基にローカルモデルを学習させ、学習後のローカルモデル及びローカルモデルのバージョン情報を各ノードから取得し、前記複数のノード夫々から取得した複数のローカルモデルのデータに基づいて、グローバルモデルのデータを更新し、取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、選択されたモデルのデータを前記複数のノード又は他の装置へ配布する処理を含む。
【0008】
本開示の一実施形態のモデルのデータ提供システムは、ローカルデータを各々処理する複数のノードと、該複数のノードから通信接続されるサーバとを含み、前記サーバは、前記複数のノードへグローバルモデルのデータを配布し、前記複数のノードは夫々、処理対象のローカルデータのデータによって前記グローバルモデルからローカルモデルの学習を各々進め、前記サーバが備える処理部は、学習後の前記ローカルモデル及びローカルモデルのバージョン情報を前記複数のノードから取得し、前記複数のノード夫々から取得した学習後のローカルモデルのデータに基づいてグローバルモデルのデータを更新し、取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、選択されたモデルのデータを前記複数のノード又は他の装置へ配布する。
【0009】
本開示の一実施形態のサーバ装置は、複数のノードと通信接続する通信部と、記憶するグローバルモデルのデータに対する処理部とを備え、前記処理部により、記憶するグローバルモデルのデータを前記複数のノードに対して配布し、前記複数のノードで処理するローカルデータによって前記グローバルモデルを基に学習したローカルモデルのデータをバージョン情報と対応付けて取得し、前記複数のノード夫々から取得した学習後のローカルモデルのデータに基づいてグローバルモデルのデータを更新し、取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、選択されたモデルのデータを前記複数のノード又は他の装置へ配布する。
【0010】
本開示の一実施形態のコンピュータプログラムは、複数のノードに通信接続が可能なコンピュータに、記憶するグローバルモデルのデータを前記複数のノードに対して配布し、前記複数のノードで処理するローカルデータによって前記グローバルモデルを基に学習したローカルモデルのデータをバージョン情報と対応付けて取得し、前記複数のノード夫々から取得した学習後のローカルモデルのデータに基づいてグローバルモデルのデータを更新し、取得したローカルモデルのデータ、及び、更新後のグローバルモデルのデータを夫々、バージョン情報と対応付けて記憶し、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、選択を受け付け、選択されたモデルのデータを前記複数のノード又は他の装置へ配布する処理を実行させる。
【0011】
本開示のモデルのデータ提供方法、モデルのデータ提供システム、サーバ装置、及びコンピュータプログラムでは、グローバルモデルのデータは、各ノードで学習されたローカルモデルによって更新され、サーバにて学習用のデータを集約せずに多くのデータを用いた学習が実現される。実際にノードで利用するために選択できるモデルの対象として、グローバルモデルのみならず、他のノードで学習されたローカルモデルが含まれる。
【0012】
本開示の一実施形態のモデルのデータ提供方法は、前記複数のノードに、各ノードの処理対象であるローカルデータに基づいて、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルの精度に基づく評価値を算出させ、算出された評価値に基づいて、グローバルモデル又はローカルモデルの選択を受け付ける処理を含む。
【0013】
本開示のモデルのデータ提供方法では、グローバルモデルのみならずローカルモデルについても、評価値が算出されて記憶され、他のノードから閲覧が可能になる。これにより、ノードは、他のノードで学習されて自ノードにとって適したモデルも使用可能である。
【0014】
本開示の一実施形態のモデルのデータ提供方法は、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルから、複数のグローバルモデル及び/又はローカルモデルの選択を受け付け、グローバルモデル及び/又はローカルモデルそれぞれに、前記ノードが処理するデータを入力して得られる複数の出力結果の比較に基づき、前記データに対する結果を特定させる。
【0015】
本開示の一実施形態のコンピュータプログラムは、サーバと通信接続されるコンピュータに、前記サーバから配布されるグローバルモデルのデータを基にして処理対象のローカルデータを用いたローカルモデルを学習する処理と、学習後のローカルモデルのデータを前記サーバへ送信する処理とを繰り返し、異なるバージョン情報が対応付けられたグローバルモデルのデータ及びローカルモデルのデータを取得し、取得したデータに対応する複数のグローバルモデル及び/又はローカルモデルそれぞれに、データを入力して得られる複数の出力結果の比較に基づいて前記データに対する結果を特定する処理を実行させる。
【0016】
本開示のモデルのデータ提供方法及びコンピュータプログラムでは、グローバルモデル及びローカルモデルの一覧から、複数の指定が可能であり、複数のモデルに対してデータを入力した場合に複数のモデルそれぞれから得られる結果を比較できる。比較の結果、より多くのモデルから得られた結果で、前記データに対する結果を特定することで、より精度良い結果を得ることが可能になる。
【0017】
本開示の一実施形態のモデルのデータ提供方法は、異なるバージョン情報が対応付けられたグローバルモデル及びローカルモデルの内、前記複数のノード夫々に、モデルを選択させ、所定数以上のノードで選択されたモデルを選出する。
【0018】
本開示のモデルのデータ提供方法では、各ノードから選択された履歴によって、所定数以上のノードで選択されたモデルが選出される。ローカルモデルをも含め、モデル内で多くのノードで利用されるモデルがどのモデルであるかが特定可能になる。選出されたモデルが以後、優先的に配布されてもよいし、バージョンアップ、更新対象とされてもよい。
【0019】
本開示の一実施形態のモデルのデータ提供方法は、前記グローバルモデル及びローカルモデルのバージョン情報と対応付けて、学習に用いられたローカルデータのデータ量、データ特性、又は学習量を記憶し、前記データ量、データ特性又は学習量を示すデータと共に、前記グローバルモデル及びローカルモデルの選択肢を出力し選択を受け付ける。
【0020】
本開示のモデルのデータ提供方法では、グローバルモデルのみならずローカルモデルさえも、各ノードで利用するために選択できる。各モデルがどのようなローカルデータによって学習されたかが出力されることによって、自ノードにとって適切なモデルを選択できる。
【0021】
本開示の一実施形態のモデルのデータ提供方法は、前記グローバルモデルのデータの配布、ローカルモデルの学習、ローカルモデルのデータに基づくグローバルモデルのデータの更新を繰り返す過程における前記グローバルモデル及びローカルモデルの評価値を各算出し、前記評価値に基づき、配布、更新の対象であるグローバルモデルを、前記グローバルモデル又はローカルモデルから選出する。
【0022】
本開示のモデルのデータ提供方法では、グローバルモデルのみならずローカルモデルをも含むモデルの中から、評価値によって適切なモデルが選出される。選出されたモデルのデータは優先的に選択されるように出力されてもよいし、以後の更新対象としてグローバルモデルのデータとして各ノードに再配布されてもよい。
【発明の効果】
【0023】
本開示のモデルのデータ提供方法によれば、グローバルモデルのみならず、他のノードで学習されたローカルモデルについても、ノードにとって精度が高い結果が得られる場合には利用可能になる。
【図面の簡単な説明】
【0024】
【
図1】第1の実施形態のモデル提供システムの概要図である。
【
図4】モデル提供システムにおけるモデルの学習処理手順の一例を示すフローチャートである。
【
図5】配布されたグローバルモデルに基づくローカルモデルの学習処理手順の一例を示すフローチャートである。
【
図6】サーバにおけるグローバルモデルの更新処理の一例を示すフローチャートである。
【
図7】モデルの選択の処理手順の一例を示すフローチャートである。
【
図10】ノードにおけるモデル利用手順の一例を示すフローチャートである。
【
図11】第2の実施形態におけるモデルの選択の処理手順の一例を示すフローチャートである。
【
図12】第3の実施形態のモデル提供システムにおける学習処理手順の一例を示すフローチャートである。
【
図13】第3の実施形態におけるローカルモデルの更新手順の一例を示すフローチャートである。
【
図14】モデル選択の処理手順の一例を示すフローチャートである。
【
図15】第3の実施形態におけるモデル一覧画面の一例を示す。
【
図16】モデルの選出に基づく更新処理手順の一例を示すフローチャートである。
【
図17】モデルの選出に基づく更新処理手順の一例を示すフローチャートである。
【
図18】モデルの選出に基づく抽出処理手順の一例を示すフローチャートである。
【
図19】第3の実施形態におけるモデル一覧画面の他の一例を示す。
【
図20】第4の実施形態のモデル提供システムの概要図である。
【
図21】第4の実施形態におけるローカルモデルの更新手順の一例を示すフローチャートである。
【
図22】第4の実施形態におけるモデル一覧画面の一例を示す。
【発明を実施するための形態】
【0025】
本開示をその実施の形態を示す図面を参照して具体的に説明する。
【0026】
(第1の実施形態)
図1は、第1の実施形態のモデル提供システム100の概要図である。モデル提供システム100は、データを記憶する記憶装置2に対して1又は複数設けられたノード1と、サーバ3と、ノード1及びサーバ3間を通信接続する通信網Nとを含む。
【0027】
記憶装置2は、物理量を測定するセンサ、画像を撮影するカメラ等、学習対象のデータを入出力する機器との間でデータの入出力が可能であり、それらのデータを蓄積する。記憶装置2は、操作によって入力されるデータに応じて出力する特定用途の計算機に接続されてもよい。記憶装置2は、ユーザが用いる情報端末の記憶装置であってもよい。記憶装置2は、クライアント装置からデータを収集するサーバ装置に使用される記憶装置であってもよい。
【0028】
ノード1は、記憶装置2が記憶しているデータと同種のデータが入力された場合に、データに基づいて認識結果、判定結果、又は新たなデータを出力するように、モデルの深層学習を実行する。サーバ3は、ノード1に対してモデルを提供するコンピュータであると共に、ノード1と協働してモデルを学習するモデル提供システム100を実現する。記憶装置2が記憶しているデータ(以下、ローカルデータという)をトレーニングデータとしてモデルの学習を実行するには、これらにアクセスできる必要がある。本実施の形態のモデル提供システム100は、サーバ3からのローカルデータへのアクセスを不可とした状態で、学習を進行させることができる。
【0029】
サーバ3は、初期的に、第0次グローバルモデル51を得る。サーバ3は、第0次グローバルモデル51を、通信網Nを介してノード1へ配布する。サーバ3からノード1へ配布されるグローバルモデル51の実体(データ)は、学習済みのパラメータのみ、又は、学習済みのパラメータとプログラムの両方である。グローバルモデル51は、モデルの構成を定義する定義データ(ネットワーク定義、損失や予め設定されるハイパーパラメータを含む)と、学習対象の重み係数等のパラメータとであってもよい。
【0030】
学習対象のモデルは、深層学習と呼ばれる学習の対象であればアーキテクチャは問わない。深層学習のモデルの種類は、入力データ及び出力データの内容に応じて適切に選択されるべきである。以下説明する学習対象のモデルは、畳み込み層を含むCNN(Convolutional Neural Network)を用いた分類系、検出系、又は生成系等のいずれでもよいし、時系列要素を加味して学習するRNN(Recurrent Neural Network)であってもよい。
【0031】
通信網Nは、所謂インターネットである公衆通信網、キャリアネットワークを含む。通信網Nは、モデル提供システム100用の専用回線であってもよい。
【0032】
ノード1は、記憶装置2との間のローカルネットワークLNに基づいて、記憶装置2に蓄積されたローカルデータにアクセス可能である。ノード1は、アクセス可能なローカルデータを用いて深層学習を実行する。ローカルデータに対しては既に、ノード1が設置されている場所のオペレータによってアノテーションが実施済であるとよい。ノード1は、サーバ3から配布される第0次グローバルモデル51を取得する。ノード1は、第0次グローバルモデル51を基に、ローカルデータをトレーニングデータとして学習を進行し、第1次ローカルモデル52を得る。
【0033】
ノード1は、第1次ローカルモデル52を、サーバ3へ送信する。ローカルデータはサーバ3へ送信されないから、ローカルデータの抽象化、匿名化等の処理は不要である。
【0034】
サーバ3は、複数のノード1夫々から第1次ローカルモデル52を複数受信し、受信した複数の第1次ローカルモデル52に対して統計処理を実行して第1次グローバルモデル51を作成する。サーバ3は、第1次グローバルモデル51を、複数のノード1へ再配布する。再配布されるグローバルモデル51は、重み係数のみであってもよい。再配布される重み係数は学習対象であってもよいし、全体であってもよい。再配布されるグローバルモデル51は、前回の更新からの差分に対応するものであってもよい。
【0035】
モデル提供システム100は、サーバ3からノード1への第n次グローバルモデル51の配布、第n次グローバルモデル51のノード1におけるローカルデータを用いた学習、学習によって得られる第(n+1)次ローカルモデル52のサーバ3への送信、サーバ3での第(n+1)次ローカルモデル52の収集及び第(n+1)次グローバルモデル51の作成(更新)を繰り返す。
【0036】
これにより、サーバ3からローカルデータへのアクセスを許可することなく、分散学習が可能になる。モデル提供システム100では、グローバルモデル51の配布と、ローカルモデル52の学習とを繰り返していく学習過程において、ノード1で学習されたローカルモデル52も含む複数のモデルから、グローバルモデル51を更新する。また、ノード1で学習されたローカルモデル52及び導出されたグローバルモデル51の中から、ノード1又はシステム外の情報処理装置4で利用するモデルを選択することを可能とする。
【0037】
このようなモデルの提供方法を実現するモデル提供システム100の構成について詳細に説明する。
【0038】
図2は、ノード1の構成を示すブロック図である。ノード1は、パーソナルコンピュータ又はサーバコンピュータである。ノード1は、処理部10、記憶部11、通信部12、表示部13及び操作部14を備える。
【0039】
処理部10は、CPU(Central Processing Unit )及び/又はGPU(Graphics Processing Unit)を用いたプロセッサである。処理部10は、記憶部11に記憶されているノードプログラム1Pに基づき、記憶装置2からのデータの読み出し、サーバ3との間でのモデルの送受信、及びモデル学習を含む処理を実行する。
【0040】
記憶部11は、例えばハードディスク、フラッシュメモリ、SSD(Solid State Drive)等の不揮発性メモリを用いる。記憶部11は、処理部10が参照するデータを記憶する。記憶部11は、ノードプログラム1Pを記憶する。記憶部11は、深層学習用のライブラリ1Lを記憶する。ノードプログラム1P及び/又は深層学習用のライブラリ1Lは、記録媒体8に記憶してあるノードプログラム8P及び/又は深層学習用のライブラリ8Lを処理部10が読み出して記憶部11に複製したものであってもよい。記憶部11は、サーバ3から取得するグローバルモデル51、及び、ローカルデータによって学習されるローカルモデル52夫々を記憶する。
【0041】
通信部12は、通信網Nを介したデータ通信、及び、ローカルネットワークLNを介した記憶装置2との通信を各々実現する。通信部12は具体的には、例えばネットワークカードである。処理部10は、通信部12によって記憶装置2からデータを読み出し、サーバ3との間でデータを送受信する。
【0042】
表示部13は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ等のディスプレイである。表示部13は、記憶部11に記憶されているデータに基づく情報、又はサーバ3から提供されるデータを含む画面を表示する。表示部13は、タッチパネル内蔵型ディスプレイであってもよい。
【0043】
操作部14は、処理部10との間で入出力が可能なキーボード及びポインティングデバイス等のユーザインタフェースである。操作部14は、音声入力部であってもよい。操作部14は、表示部13のタッチパネルであってもよい。操作部14は、物理ボタンであってもよい。操作部14は、ノード1のオペレータによる操作データを処理部10へ通知する。
【0044】
図3は、サーバ3の構成を示すブロック図である。サーバ3は、サーバコンピュータである。サーバ3は、処理部30、記憶部31及び通信部32を備える。サーバ3は、以下の説明においては1台のサーバコンピュータによって構成されるものとして説明するが、複数台のサーバコンピュータをネットワークで通信接続して分散処理させる態様であってもよい。サーバ3は、通信網Nを介して各ノード1から通信接続が可能なクラウド型であってもよいし、仮想的なプライベートネットワークを介して各ノード1と通信接続するオンプレミス型であってもよい。
【0045】
処理部30は、CPU及び/又はGPUを用いたプロセッサである。処理部30は、記憶部31に記憶されているサーバプログラム3Pに基づき、グローバルモデル51の学習処理を実行する。
【0046】
記憶部31は、例えばハードディスク、SSD等の不揮発性メモリを用いる。記憶部31は、処理部30が参照するデータを記憶する。記憶部31は、サーバプログラム3Pを記憶する。サーバプログラム3Pは、Webサーバプログラムを含む。記憶部31は、グローバルモデル51、複数のノード1から送信されるローカルモデル52を記憶する。サーバプログラム3Pは、記録媒体9に記憶してあるサーバプログラム9Pを処理部30が読み出して記憶部31に複製したものであってもよい。
【0047】
通信部32は、通信網Nを介したデータ通信を実現する。通信部32は具体的には、例えばネットワークカードである。処理部30は、通信部32によって複数のノード1との間でデータを送受信する。
【0048】
このように構成されるモデル提供システム100における学習処理手順について説明する。
図4は、モデル提供システム100におけるモデルの学習処理手順の一例を示すフローチャートである。
【0049】
サーバ3は、予め用意された初期的な(第0次)グローバルモデル51を取得する(ステップS1)。初期的なグローバルモデル51は、特定のノード1で第0次モデルとして作成されたモデルであってもよいし、ノード1ではなく特定の場所で学習されたモデルであってもよく、予め記憶部31に記憶してあるとよい。ステップS1の取得は、予め記憶部31に記憶されているグローバルモデル51の読み出しを含む。
【0050】
サーバ3は、取得した第0次グローバルモデル51をノード1へ配布する(ステップS2)。
【0051】
サーバ3は、ノード1へ配布したグローバルモデル51を基に、ノード1で学習されるローカルモデル52を取得する(ステップS3)。
【0052】
サーバ3は、取得したローカルモデル52に対して統計処理を実行し、次世代のグローバルモデル51に更新する(ステップS4)。ステップS4においてサーバ3は、更新(ラウンド)回数を、加算して記憶してもよい。
【0053】
サーバ3は、学習完了条件を満たすか否か判断する(ステップS5)。
【0054】
ステップS5についてサーバ3は例えば、更新回数が所定回数に到達したか否かで判断する。サーバ3は、グローバルモデル51の精度の向上が前回の更新に比して見られない場合に、学習が完了したと判断してもよい。
【0055】
学習完了条件を満たさないと判断された場合(S5:NO)、サーバ3は、更新後のグローバルモデル51を複数のノード1へ再分配し(ステップS6)、処理をステップS3へ戻す。
【0056】
ステップS6においてサーバ3は、グローバルモデル51をそのまま再配布するのではなく、重み係数等のパラメータのみを再配布してもよい。
【0057】
ステップS6においてサーバ3は、何回目の更新後のグローバルモデル51であるのか、即ち第n次グローバルモデル51の「n」を示すデータを共に送信するとよい。
【0058】
学習完了条件を満たすと判断された場合(S5:YES)、サーバ3は、更新後のグローバルモデル51を、ノード1以外へも配布可能なグローバルモデル51として、バージョン情報と対応付けて記憶し(ステップS7)、処理を終了する。バージョン情報は、ステップS5にて学習完了条件を満たすと判断されるまでローカルモデル52の学習及びグローバルモデル51の更新を実行した回数に対応する。バージョン情報は、ラウンド情報をマイナーな情報として含んでもよい。
【0059】
サーバ3は、
図4のフローチャートに示した処理手順を、複数、例えば月に一度といった周期で実行する。その都度、グローバルモデルのバージョンが上昇し、より実用的なモデルとなる。
【0060】
図5は、配布されたグローバルモデル51に基づくローカルモデル52の学習処理手順の一例を示すフローチャートである。
図5のフローチャートに示す処理は、サーバ3がステップS2又はステップS6でグローバルモデル51を配布した場合に、複数のノード1夫々で実行する処理である。
【0061】
ノード1の処理部10は、配布されたグローバルモデル51を受信し、記憶部11に記憶する(ステップS301)。
【0062】
ノード1の処理部10は、記憶したグローバルモデル51をインスタンスとしてロードする(ステップS302)。処理部10は、記憶装置2に記憶してあるローカルデータをトレーニングデータとして取得し(ステップS303)、これをグローバルモデル51に与えて学習を実行する(ステップS304)。
【0063】
ステップS304において処理部10は、ロードしたグローバルモデル51に対してローカルデータの入力データを入力する。処理部10は、出力されたデータと、ローカルデータに含まれる前記入力データに対応する結果データとに対する損失を算出する。処理部10は、算出した損失に基づいて配布されたグローバルモデル51における重み係数を含むパラメータを学習する。
【0064】
ノード1の処理部10は、学習完了条件を満たすか否かを判断する(ステップS305)。ステップS305において処理部10は、学習(更新)回数が所定回数(1回以上)を満たすことを学習完了条件とする。処理部10は、学習後のグローバルモデル51の出力精度が記憶してある所定値以上である場合に、学習完了条件を満たすと判断してもよい。処理部10は、出力精度の変化が所定範囲内に収まり、収束していると判断できる場合に学習完了条件を満たすと判断してもよい。
【0065】
学習完了条件を満たさないと判断された場合(S305:NO)、処理部10は処理をステップS304)へ戻す。これにより、学習が続行される。
【0066】
学習完了条件を満たすと判断された場合(S305:YES)、処理部10は学習を終了し、パラメータが更新されたグローバルモデル51を、ローカルモデル52としてバージョン情報と対応付けて記憶する(ステップS306)。ここでバージョン情報は、グローバルモデル51のバージョン情報と一致するものとする。バージョン情報は日時であってもよい。1つのバージョンに対して最新のローカルモデル52が上書き記憶されてもよいし、異なるラウンド毎にローカルモデル52が記憶されてもよい。
【0067】
ノード1の処理部10は、記憶したローカルモデル52を、サーバ3へ送信し(ステップS307)、処理を終了する。これにより、サーバ3は、複数のノード1夫々から、ローカルデータで学習されたローカルモデル52を取得することができる。
【0068】
ステップS307において処理部10は、第n次のローカルモデル52なのか、又は元となるグローバルモデル51が第n次なのかの「n」を示すデータ(1回のバージョンアップにおける更新回数)を共に送信するとよい。ステップS307においてノード1は、後述するように1回の学習完了までの更新回数に対応するラウンド情報を得られる場合にはそのラウンド情報を、ローカルモデル52に対応付けて送信してもよい。
【0069】
図5のフローチャートに示した処理によってノード1からは、ローカルデータがサーバ3へ送信されることがない点が、着目されるべきである。ローカルデータの匿名化も実行されない。ノード1から送信されるデータは、モデルそのものである。ローカルデータの特性は反映されているが、データの送信はされない。
【0070】
図6は、サーバ3におけるグローバルモデル51の更新処理の一例を示すフローチャートである。
図6のフローチャートに示す処理手順は、
図4のフローチャートに示す処理手順の内のステップS4の詳細に対応する。
【0071】
サーバ3の処理部30は、ノード1から送信されるローカルモデル52をバージョン情報と対応付けて取得し(ステップS401)、ノード1の識別データ及びバージョン情報と対応付けてローカルモデル52を記憶する(ステップS402)。ステップS401においてサーバ3の処理部30は、非同期に各ノード1から送信されるローカルモデル52を取得する。ステップS402においてサーバ3の処理部30は、
図4のフローチャートにおけるステップS5で学習完了条件を満たすと判断されるまで、各ノード1からの最新のローカルモデル52を記憶する。ラウンド毎に、ラウンド情報が対応付けてられている場合に、処理部30は、学習完了までのラウンド毎のローカルモデル52を記憶してもよい。
【0072】
処理部30は、取得したローカルモデル52でグローバルモデル51を更新すべきか否かを判断する(ステップS403)。ステップS403において処理部30は、グローバルモデル51を配布した配布先のノード1全てからローカルモデル52を取得できた場合に更新すべきであると判断してもよい。ステップS403において処理部30は、予め決定しておいた代表的の複数のノード1からローカルモデル52を取得できた場合に更新すべきであると判断してもよい。
【0073】
更新すべきでないと判断された場合(S403:NO)、サーバ3の処理部30は処理をステップS401へ戻す。更新すべきであると判断されるまで、各ノード1から送信されるローカルモデル52を取得し、集約する。
【0074】
更新すべきであると判断された場合(S403:YES)、サーバ3の処理部30は、複数のノード1からのローカルモデル52の平均を求める(ステップS404)。処理部30は、平均を新たなグローバルモデル51として更新する(ステップS405)。ステップS404において処理部30は例えば、ローカルモデル52に含まれる各重み係数の平均を算出する。
【0075】
処理部30は、更新後のグローバルモデル51を、ラウンド情報、例えば更新回数(第n次)を示すデータ「n」と対応付けて記憶し(ステップS406)、グローバルモデル51の更新処理を終了する。これにより、第n-1次グローバルモデル51は、第n次グローバルモデル51に更新される。
【0076】
ステップS406において処理部30は、各世代のグローバルモデル51を、更新回数を遡って読み出し可能に記憶部31に記憶する。
【0077】
上述したように第1の実施形態のモデル提供システム100では、ローカルデータはサーバ3へ送信されることなしに、各所に記憶されているローカルデータを用いた学習結果に基づいてグローバルモデル51が実用化される。各所のローカルデータのみでは、データ量が不足するような場合であっても、1箇所に集約させた大量のデータによる学習よりも精度よく、且つ早期に実用可能なモデルを提供することが可能になる。
【0078】
第1の実施形態では、サーバ3がグローバルモデル51の学習(更新)及び改訂(バージョンアップ)の過程でラウンド情報、及びバージョン情報と対応付けて、グローバルモデル51と、ノード1から取るローカルモデル52とを記憶している。サーバ3は、バージョン別、ラウンド毎に、ノード1に対し、各バージョンのグローバルモデル51及びローカルモデル52から選択を受け付ける。
【0079】
図7は、モデルの選択の処理手順の一例を示すフローチャートである。サーバ3は、サーバプログラム3Pに基づく以下の処理手順により、ノード1からのリクエストに応じて、記憶してあるグローバルモデル51及びローカルモデル52の中から、選択を受け付ける。ノード1は、ノードプログラム1Pに基づく以下の処理手順により、オペレータからの選択操作を受け付け、利用するモデルをノード1に取得する。
【0080】
ノード1のオペレータは、サーバ3から提供されるWebページへのアクセスを試みる。ノード1の処理部10は、ノードプログラム1Pに含まれるWebブラウザプログラムに基づき、リクエストをサーバ3へ送信する(ステップS201)。以下、Webブラウザプログラムに基づく処理は、Webブラウザのバックグラウンドで実行されてもよい。
【0081】
サーバ3は、リクエストを受信する(ステップS601)。サーバ3の処理部30は、リクエストに含まれるノード1のアカウント情報に応じて、アカウントに対応するグローバルモデル51及びローカルモデル52の一覧を含むWebページをノード1へ送信する(ステップS602)。
【0082】
ノード1の管理者毎に、サーバ3へのアクセス用のアカウントが発行されている。アカウントは、アカウントID、認証情報、権限のデータを含む。サーバ3は、記憶部31にアカウントデータを記憶している。ノード1の管理者向けのアカウントには、グローバルモデル51及びローカルモデル52の選択及びダウンロードの権限が対応付けられている。ダウンロードが可能なグローバルモデル51及びローカルモデル52は、アカウント毎に設定されていてもよい。
【0083】
ノード1では処理部10が、グローバルモデル51及びローカルモデル52の一覧を受信し(ステップS202)、表示部13に表示する(ステップS203)。処理部10は、グローバルモデル51及びローカルモデル52の一覧から、いずれか1又は複数の選択を受け付ける(ステップS204)。処理部10は、選択されたモデルの指定をサーバ3へ送信する(ステップS205)。
【0084】
サーバ3は、モデルの指定を受信し(ステップS603)、指定されたモデル(グローバルモデル51又はローカルモデル52)を、ノード1へ送信し(ステップS604)、サーバ3の処理を終了する。
【0085】
ノード1は、指定したグローバルモデル51又はローカルモデル52をサーバ3から取得し(ステップS206)、受信したグローバルモデル51又はローカルモデル52に、記憶装置2に記憶されているローカルデータを用いて精度の評価値を算出する(ステップS207)。
【0086】
ノード1の処理部10は、算出した評価値を表示し(ステップS208)、利用するか否かの選択を受け付ける(ステップS209)。利用すると選択された場合(S209:YES)、処理部10は、対象のモデルを記憶部11に記憶する(ステップS210)。記憶されたグローバルモデル51又はローカルモデル52は、以後、ノード1で利用可能になる。
【0087】
処理部10は、利用しないと選択された場合(S209:NO)、又は、S210の後、他のモデルを取得するか否か判断し(ステップS211)、取得しないと判断された場合(S211:NO)、処理を終了する。
【0088】
取得すると判断された場合(S211:YES)、処理をステップS203へ戻す。
【0089】
図7のフローチャートに示す処理手順の内、ステップS207-S211の処理手順は必須ではなく、ステップS204で指定されたグローバルモデル51又はローカルモデル52をそのまま記憶して利用してもよい。
【0090】
図8は、モデルの一覧画面131の一例を示す。
図8の一覧画面131は、サーバ3から送信されるグローバルモデル51及びローカルモデル52一覧を含むページを表示した例(S203)を示す。一覧には、グローバルモデル51及びローカルモデル52のモデル名及びバージョン情報を示すテキストを含む。バージョン情報は、異なるラウンド別にされてもよい。バージョン情報を示すテキストは、個別ページへのリンクを含んで選択可能にしてある。
図8では、グローバルモデル51とローカルモデル52とが区別されている。ローカルモデル52のモデル名には、モデルを学習させたノードを識別するデータが含まれている。例えば、
図8の一覧中、末尾に「_ndA」が付加されているモデル名のローカルモデル52は、「ノードA」で学習されたものである。ローカルモデル52のモデル名バージョン名を示すテキストが選択されると、ノード1の処理部10によって、モデルの指定が受け付けられる。
【0091】
図9は、モデルの個別画面132の一例を示す。
図9の個別画面132は、
図8の一覧画面131にていずれかのバージョン名のテキストが選択され、モデルが指定された場合に表示される。
図9の個別画面132は、指定されたモデルに対して算出された評価値を含む。個別画面132には、利用するか否かの選択を受け付けるインタフェース133を含む。インタフェース133が選択された場合、利用することが受け付けられ(S209:YES)、選択されたモデルが記憶部11に記憶され、以後、モデルが利用される。全画面に戻るためのインタフェース134が選択された場合、他のモデルを取得すると判断され(S211:YES)、
図8のモデルの一覧画面131へ戻る。
【0092】
第1の実施形態に示したように、モデル提供システム100では、各ノード1で学習されたローカルモデル52を集約して更新されたグローバルモデル51のみならず、他のノード1から集約されたローカルモデル52についても、他のノード1に対して提供可能である。
【0093】
図7のフローチャートに示した処理手順によってノード1で選択されたグローバルモデル51及びローカルモデル52の利用について説明する。
図7-
図9で説明したように、ノード1は、複数のグローバルモデル51及びローカルモデル52を取得する。同一のモデル「model-image2segmentation」についてノード1は、「ver. 4.0」及び「ver. 3.0」の異なるバージョンのグローバルモデル51、並びに、モデル名の末尾にノードの識別データ「_ndA」が付加されているローカルモデル52を取得できる。
【0094】
ノード1のオペレータは、同一の入力データ及び出力データについていずれのモデルを採用してもよい。ノード1は、バージョン違いのグローバルモデル51、及びローカルモデル52を用い、各々からの出力データの多数決を自動的に取るようにしてもよい。
【0095】
図10は、ノード1におけるモデル利用手順の一例を示すフローチャートである。ノード1は、ノードプログラム1Pに基づき、1つのモデルについてバージョン違いのグローバルモデル51、及びローカルモデル52の指定をサーバ3へ送信する(ステップS221)。
【0096】
サーバ3では、指定されたモデルのバージョン違いのグローバルモデル51、及びローカルモデル52をノード1へ送信する。
【0097】
ノード1は、指定したモデルのバージョン違いのグローバルモデル51、及びローカルモデル52を受信し、取得する(ステップS222)。
【0098】
ノード1の処理部10は、取得したバージョン違いのグローバルモデル51、及びローカルモデル52それぞれに、記憶装置2に記憶されているローカルデータを入力データとして与え、複数の出力データを取得する(ステップS223)。
【0099】
処理部10は、取得した複数の出力データの結果を比較し(ステップS224)、最も多くの出力データから得られる結果を特定する(ステップS225)。
【0100】
処理部10は、特定した結果を表示部に出力して表示し(ステップS226)、記憶して(ステップS227)、処理を終了する。
【0101】
ステップS225において処理部10は例えば、モデルが判定結果を出力するモデルである場合、判定結果の多数決をとる。モデルが画像のセグメンテーション結果を出力するモデルである場合、平均、AND、OR等の演算を実行してもよい。ステップS225で結果を特定する際、ノード1の処理部10は、ステップS222で取得した複数のモデルそれぞれに対して算出できる評価値を用い、評価値が高いモデルからの出力データが、結果に影響し易いように、精度を重みとして利用してもよい。
【0102】
(第2の実施形態)
第2の実施形態では、サーバ3に記憶されるローカルモデル51は、ノード1で最適化したものを含んでもよい。第2の実施形態におけるモデル提供システム100の構成は、処理の詳細を除いて第1の実施形態のモデル提供システム100と同様の構成であるから、共通する構成については同一の符号を付して詳細な説明を省略する。
【0103】
図11は、第2の実施形態におけるモデルの選択の処理手順の一例を示すフローチャートである。
図11のフローチャートに示す処理手順の内、第1の実施形態の
図7のフローチャートに示した処理手順と共通する手順については同一のステップ番号を付して詳細な説明を省略する。
【0104】
第2の実施形態では、取得したモデルを利用するとして選択された場合(S209:YES)、ノード1は、アクセスできる記憶装置2に記憶されたローカルデータで再学習を実行してから(ステップS212)、バージョン情報と対応付けて記憶する(S210)。
【0105】
ノード1の処理部10は、再学習後のグローバルモデル51又はローカルモデル52を、バージョン情報と対応付けてサーバ3へ送信し(ステップS213)、処理をステップS211へ進める。
【0106】
サーバ3では、再学習後のグローバルモデル51又はローカルモデル52、並びにバージョン情報を受信し(ステップS605)、ノード1の識別データ及びバージョン情報と共に記憶する(ステップS606)。以後、このノード1での再学習後のグローバルモデル51又はローカルモデル52も、ステップS602で送信される一覧に含まれる。
【0107】
(第3の実施形態)
第3の実施形態モデル提供システム100は、ノード1にて、グローバルモデル51及びローカルモデル52に対してローカルデータに基づく評価値を算出し、その評価値を共にノード1に出力して選択時にノード1のオペレータに参照できるようにする。第3の実施形態におけるモデル提供システム100の構成は、上述の処理の詳細を除いて第1の実施形態のモデル提供システム100と同様の構成であるから、共通する構成については同一の符号を付して詳細な説明を省略する。
【0108】
図12は、第3の実施形態のモデル提供システム100における学習処理手順の一例を示すフローチャートである。
図12のフローチャートに示す処理手順の内、第1の実施形態の
図4のフローチャートに示す処理手順と共通する手順については同一のステップ番号を付して詳細な説明を省略する。
【0109】
第2の実施形態において、サーバ3は、集約したローカルモデル52に基づいてグローバルモデル51を更新した後(S4)、更新後のグローバルモデル51について評価値の算出を受けるべく、各ノード1へ送信する(ステップS501)。
【0110】
各ノードでは、ローカルデータを更新後のグローバルモデル51に与えた評価値を算出し、サーバ3へ送信する。
【0111】
サーバ3は、各ノード1から送信された評価値を取得し(ステップS502)、取得した評価値に基づいて総評価値を算出し(ステップS503)、取得した評価値及び総評価値を、更新後のグローバルモデル51のラウンド情報と対応付けて記憶する(ステップS504)。
【0112】
これにより、各グローバルモデル51には、ノード1での評価値を各バージョンに対して記憶しておき、グローバルモデル51の一覧に評価値を含めることが可能になる。
【0113】
図13は、第3の実施形態におけるローカルモデル52の更新手順の一例を示すフローチャートである。
図13のフローチャートに示す処理手順のうち、
図5のフローチャートに示した処理手順と共通する手順については同一のステップ番号を付して詳細な説明を省略する。
【0114】
ノード1の処理部10は、配布されたグローバルモデル51の学習実行前に、取得したローカルデータのデータ量(データ件数)を算出し、記憶しておく(ステップS311)。
【0115】
処理部10は、学習完了条件を満たすと(S305:YES)、学習処理後に得られるローカルモデル52の評価値を算出する(ステップS312)。ステップS312において処理部10は、評価値として、ローカルデータを入力した場合の精度の平均値等を算出する。処理部10は、評価値として、A/B/Cの判定結果を導出してもよい。
【0116】
処理部10は、学習後のローカルモデル52と共に、ステップS311で記憶しておいたローカルモデル52の学習に用いたローカルデータのデータ量と、ステップS312で算出した評価値とを共にサーバ3へ送信し(ステップS313)、処理を終了する。
【0117】
これにより、ローカルモデル52の学習の元となったローカルデータのデータ量を、ローカルモデル52の評価の指標として参照することが可能になる。
【0118】
図14は、モデル選択の処理手順の一例を示すフローチャートである。
図14のフローチャートに示す処理手順の内、第1の実施形態の
図7のフローチャートに示した処理手順と共通する手順については同一のステップ番号を付して詳細な説明を省略する。
【0119】
第3の実施形態では、ノード1からリクエストが送信されると(S201)、サーバ3はリクエストを受信する(S601)。サーバ3の処理部30は、ノード1のアカウント情報に応じて、アカウントに対応するグローバルモデル51及びローカルモデル52の内、評価値及び総評価値が所定値以上であるモデルを抽出する(ステップS612)。処理部30は、抽出したモデルを優先的に出力するためのモデルと評価値とを含む一覧のWebページをノード1へ送信する(ステップS613)。
【0120】
ノード1では処理部10が、グローバルモデル51及びローカルモデル52の一覧を受信して表示する(S202,S203)。ステップS203において処理部10は、各モデルに対応付けられている評価値及び総評価値を、各モデルのモデル名及びバージョン名と共に表示する。処理部10は、一覧から選択を受け付け(S204)、選択されたモデルの指定をサーバ3へ送信する(S205)。ステップS204において処理部10は、評価値に基づいて、グローバルモデル51又はローカルモデル52の選択を受け付けることができる。
【0121】
サーバ3の処理部30は、モデルの指定を受信し(S603)、指定されたモデルそのものを送信すると(S604)、指定されたグローバルモデル51又はローカルモデル52について、指定された履歴を記憶しておき(ステップS614)、処理を終了する。これにより、ノード1でオペレータに選択されたグローバルモデル51又はローカルモデル52の履歴が記憶部31に記憶される。
【0122】
第3の実施形態のモデル提供システム100では、
図14のフローチャートに示したように、指定されたグローバルモデル51又はローカルモデル52を記憶する(S614)。指定されたモデルの数量、指定回数等が蓄積された後には、サーバ3は、所定数以上のノード1から指定されたグローバルモデル51又はローカルモデル52を、選出することができる。グローバルモデル51及びローカルモデル52に対する各ノード1からの投票が可能になる、と言える。
【0123】
図15は、第3の実施形態におけるモデル一覧画面131の一例を示す。
図15に示すように、モデル一覧画面131には、グローバルモデル51に対して算出された総評価値が対応付けて表示され、ローカルモデル52には評価値が共に出力される。
図15に示すように、モデル一覧画面131には、ローカルモデル52と共に送信されるデータ量が対応付けて出力される。モデル一覧画面131を確認するオペレータは、これらの評価値、あるいはローカルモデル52の学習に用いられたデータ量を基に、利用するモデルを選択することができる。
【0124】
第3の実施形態では、算出された評価値、又は、選択されたモデルの履歴を記憶することにより、評価値又はモデルの選択履歴に基づいて、サーバ3が、ローカルモデル52を含めた過去のバージョンのモデルの中から、いずれかを選出することができる。サーバ3は、所定値以上の評価値が算出されたグローバルモデル51及びローカルモデル52を選出してもよいし、投票数、即ち、所定数以上のノード1で選択されたグローバルモデル51及びローカルモデル52を選出してもよい。
【0125】
以下のようにしてモデルの選出が行われてもよい。第1の実施形態の
図7のフローチャートに示したように、各ノード1のローカルデータで、グローバルモデル51と、他のノード1で学習されたローカルモデル52とに対する評価値を算出してから選択されたモデルを、その評価値と共にサーバ3へ送信する。そしてサーバ3は、モデルの選択履歴(S614)を、評価値と共に記憶し、評価値及び選択履歴を基に、所定数以上のノード1で選出されたグローバルモデル51及びローカルモデル52の内、最も評価値が高いモデルを1つ選出してもよい。
【0126】
選出されたグローバルモデル51又はローカルモデル52が、以後のモデル一覧画面131に優先的に表示されるようにしてもよい。選出されたグローバルモデル51又はローカルモデル52がその後、各ノード1で選択されたモデルをノード1へ配布して更新を続けるグローバルモデル51として選出されてもよい。この場合、
図4のフローチャートに示した学習の処理手順の内のステップS1において、選出されたグローバルモデル51又はローカルモデル52を取得し、以後、S2~S7の処理を実行する。
【0127】
図16及び
図17は、モデルの選出に基づく更新処理手順の一例を示すフローチャートである。
図16及び
図17のフローチャートは、サーバ3が、ノード1へ配布して更新を続けるモデルとして選出する場合の処理手順を示す。
図16及び
図17のフローチャートに示す処理手順の内、
図12のフローチャートに示した処理手順と共通する手順については同一の符号を付して詳細な説明を省略する。
【0128】
サーバ3の処理部30は、同一モデル名のバージョンの異なるグローバルモデル51、及び、そのグローバルモデル51に対応するローカルモデル52の選択履歴を参照する(ステップS101)。
【0129】
処理部30は、同一モデル名のグローバルモデル51、及び対応するローカルモデル52の内、所定数以上のノード1で選択されているグローバルモデル51又はローカルモデル52を抽出する(ステップS102)。
【0130】
処理部30は、抽出したグローバルモデル51又はローカルモデル52の内、最も評価値が高いグローバルモデル51又はローカルモデル52を選出する(ステップS103)。ステップS102及びステップS103により、より多くのノード1に支持されているグローバルモデル51、又はローカルモデル52が選出される。
【0131】
処理部30は、選出したグローバルモデル51又はローカルモデル52を各ノード1へ配布する(ステップS104)。配布したグローバルモデル51又はローカルモデル52について評価値を取得し、記憶する(ステップS105)。
【0132】
ステップS104及びS105の処理に対して各ノード1は、評価値を算出し、配布されたグローバルモデル51又はローカルモデル52を基に、ローカルモデル52を学習する。
【0133】
処理部30は、各ノード1で学習されたローカルモデルを取得し(S3)、取得したローカルモデルを統計処理してグローバルモデル51を更新する(S4)。
【0134】
処理部30は、更新後のグローバルモデル51について評価値の算出を受けるべく、各ノード1へ送信し(S501)、算出された評価値を取得する(S502)。
【0135】
処理部30は、複数のノード1毎に、更新前後のグローバルモデル51(又はローカルモデル52)の内、より多くのノード1で評価値が高く算出されたモデルを選出する(ステップS513)。ステップS513において、更新後のグローバルモデル51に高い評価値を更新前よりも算出するノード1と、更新前のグローバルモデル51(又はローカルモデル52)に更新後よりも高い評価値を算出するノード1とが存在する。ステップS513において処理部30は、それらのノード1の多数決を取る。
【0136】
処理部30は、選出したモデルについて学習完了条件を満たすか否かを判断する(S5)。
【0137】
学習完了条件を満たさないと判断された場合(S5:NO)、処理部30は、ステップS513で選出されたグローバルモデル51をノードへ配布し(ステップS516)、処理をステップS3へ戻す。
【0138】
ステップS101-S103における選択履歴に基づくモデルの選出と、ステップS513における更新前後のモデルに対して算出された評価値に基づく多数決とは、一方のみが実施されてもよい。
【0139】
図18は、モデルの選出に基づく抽出処理手順の一例を示すフローチャートである。サーバ3は、一定の周期で、記憶しているグローバルモデル51及びローカルモデル52について、同一モデル名のグローバルモデル51及び対応するローカルモデル52を対象に、以下の処理を実行する。サーバ3の処理部30は、例えば
図14のフローチャートに示した処理の内のステップS612で実行する。
【0140】
サーバ3の処理部30は、同一モデル名のバージョンの異なるグローバルモデル51の選択履歴を参照する(ステップS701)。処理部30は、同一モデル名のグローバルモデル51、及び対応するローカルモデル52の内、所定数以上のノード1で選択されているグローバルモデル51又はローカルモデル52を抽出する(ステップS702)。
【0141】
処理部30は、抽出したグローバルモデル51又はローカルモデル52の内、最も評価値が高いグローバルモデル51又はローカルモデル52を選出する(ステップS703)。ステップS702及びステップS703により、より多くのノード1に支持されているグローバルモデル51、又はローカルモデル52が選出される。
【0142】
処理部30は、選出したグローバルモデル51又はローカルモデル52を記憶し(ステップS704)、処理を終了する。
【0143】
図19は、第3の実施形態におけるモデル一覧画面131の他の一例を示す。
図19のモデル一覧画面131では、
図15のモデル一覧画面131と比較して、選出されたグローバルモデル51又はローカルモデル52が選出されているために、同一モデルに関して1つずつが表示されている。モデル一覧画面131を確認するオペレータは、これらの選択実績に基づいて、利用するモデルを選択することができる。
【0144】
(第4の実施形態)
モデル提供システム100は、ニューラルネットワークを始めとする深層学習のモデルに適用できる。例えば、入力データは画像データであり、出力データは画像データの画像に写っている被写体の検出結果、又は被写体に対する判定結果である。他の例では、入力データは、入出金データであり、出力データは評価等の判定結果、あるいは企業業況変化(成長または劣化)に関する予測値や経済予測に関する予測値である。他の例では、入力データは、工場、生産設備に設けられた各種センサからの測定データであり、出力データは異常/正常を含む生産管理に関するデータである。他の例では、入力データはテキストデータであり、出力データは判定結果、または予測データである。
【0145】
第4の実施形態では、モデル提供システム100を、医療施設にて患者に関して得られる医療データから、患者に特定の病気の症状が発生しているか否かの診断を支援する診断支援データを出力するモデルの学習に適用させた例を挙げて説明する。以下の説明では、医療データは、例えば検査で撮影された眼底写真の画像データである。
【0146】
図20は、第4の実施形態のモデル提供システム100の概要図である。第4の実施形態におけるモデル提供システム100の構成は基本的に、第1の実施形態のモデル提供システム100と同様である。第4の実施形態のモデル提供システム100の構成の内、第1の実施形態のモデル提供システム100と共通する構成については同一の符号を付して詳細な説明を省略する。
【0147】
第4の実施形態においてノード1及び情報処理装置は、医療施設に設けられている。ノード1及び情報処理装置は、患者の眼底写真を撮影する撮影装置から得られる画像データを取得できる。ノード1が設けられている医療施設では、撮影装置は記憶装置2に対して画像データを出力する。撮影装置は、異なる種類の装置を含む。
【0148】
第4の実施形態においてグローバルモデル51、ローカルモデル52及び配布可能として記憶されたモデルは、画像データが入力された場合に、緑内障の診断を支援するデータ及び精度を出力するように学習されるモデルである。トレーニングデータとして用いられるローカルデータは、入力データとして画像データと、出力データとして眼底写真におけるDisc部分とCup部分とをセグメンテーションした結果の画像データである。出力データはその他、症状がみられるか否かを医師又は技師が判定した判定結果を含むデータセットであってもよい。ローカルデータの入力データである画像データは、撮影装置の種類を示す装置データと対応付けられている。装置データは型番でもよいし、装置メーカを識別するデータであってもよい。
【0149】
第4の実施形態においてモデル学習システム100では、サーバ3が予め特定の医療施設で複数の異なるアーキテクチャで作成された初期的なグローバルモデル(第0次グローバルモデル)51を取得する。サーバ3は、異なるアーキテクチャの第0次グローバルモデル51を、トレーニングに協力する医療施設のノード1へ各配布する。
【0150】
各ノード1は、配布された複数の第0次グローバルモデル51を受信し、異なる第0次グローバルモデル51に基づいてそれぞれ、ローカルデータをトレーニングデータとして学習を進行し、複数の第1次ローカルモデル52を得る。ノード1は、異なるアーキテクチャで学習された第1次ローカルモデル52をサーバ3へ送信する。
【0151】
サーバ3は、各ノード1から取得したローカルモデル52を、異なるアーキテクチャ毎に、加重平均して第1次グローバルモデル51を作成する。ここでサーバ3は、各ローカルモデル52の重み係数の加重平均を算出する。サーバ3は、作成された第1次グローバルモデル51を、複数のノード1へ再配布する。
【0152】
サーバ3は、配布した第n次グローバルモデル51から作成される第(n+1)次ローカルモデル52の取得、第(n+1)次ローカルモデル52からの第(n+1)次グローバルモデル51の更新を、異なるアーキテクチャ毎に繰り返す。
【0153】
サーバ3は、異なるアーキテクチャ毎に繰り返して得られたグローバルモデル51を、相互に比較し、精度がより高いアーキテクチャのグローバルモデル51を選択し、配布可能なモデルとしてノード1及び情報処理装置4へ提供する。
【0154】
これにより、個人情報そのものである検査結果の画像データが、サーバ3へ集約されることなく、且つ、異なる医療施設に亘って多くのデータを用いて学習することが可能になる。そして診断支援データについて、各ノード1からノード1に有用なモデルを選択することが可能になる。
【0155】
第4の実施形態におけるサーバ3及びノード1によるモデル学習に関する処理は、第1から第3の実施形態に示した処理手順と同様である。ただし第4の実施形態では、各ノード1は、ローカルモデル52の更新の際に、ローカルデータの特性をサーバ3へ送信する。
【0156】
図21は、第4の実施形態におけるローカルモデル52の更新手順の一例を示すフローチャートである。
図21のフローチャートに示す処理手順のうち、第1の実施形態の
図5のフローチャートに示した処理手順と共通する手順については同一のステップ番号を付して詳細な説明を省略する。
【0157】
ノード1の処理部10は、配布されたグローバルモデル51の学習実行前に、取得したローカルデータのデータ量(データ件数)を算出し、記憶しておく(ステップS321)。処理部10は、予め記憶部11に記憶してある、又は記憶装置2に画像データと対応付けられている、撮影装置の装置データを取得し、記憶する(ステップS322)。ステップS322で処理部10は、ローカルデータの特性として、装置の種類のみならず、ローカルデータのアノテーション精度等の特性を取得してもよい。
【0158】
処理部10は、学習完了条件を満たし(S305:YES)、学習後のローカルモデル52を記憶すると(S306)、処理部10は、学習処理後に得られるローカルモデル52の評価値を算出する(ステップS323)。ステップS323において処理部10は、評価値として、ローカルデータを入力した場合の精度の平均値等を算出する。処理部10は、評価値として、A/B/Cの判定結果を導出してもよい。
【0159】
処理部10は、学習後のローカルモデル52と共に、ステップS321で記憶しておいたローカルデータのデータ量と、ステップS322で記憶しておいた装置データと、ステップS323で算出した評価値を、サーバ3へ送信し(ステップS324)、処理を終了する。
【0160】
これにより、ローカルモデル52の学習の元となったローカルデータのデータ量、特性等がサーバ3にてローカルモデル52と対応付けて記憶される。サーバ3から、モデルの一覧を取得するに際し、ノード1のオペレータは、他のノード1のローカルモデル52の評価の指標として、これらの特性を参照することが可能になる。
【0161】
図22は、第4の実施形態におけるモデル一覧画面131の一例を示す。
図22に示すように、各モデルの内、ローカルモデル52には、評価値の他に、学習に用いられたローカルデータのデータ特性が出力され、選択時に参照可能である。
図22に示す例では、データ特性として、撮影装置の仕様データ(型番)と、データ件数を含む。オペレータは、これらのデータ特性を基に、利用するモデルを、ローカルモデル52も含めて選択することができる。
【0162】
上述のように開示された実施の形態は全ての点で例示であって、制限的なものではない。本発明の範囲は、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれる。
【符号の説明】
【0163】
1 ノード
10 処理部
11 記憶部
2 記憶装置
3 サーバ
30 処理部
31 記憶部
3P サーバプログラム
51 グローバルモデル
52 ローカルモデル