(57)【要約】  複数のパラメータを効率的に収束させることができる分散機械学習装置等を提供する。分散機械学習装置３００は、予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、複数のパラメータを最適化する処理を実行した結果を基にブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき前記ブロックにおける前記パラメータの部分集合の要素を変化させるブロック構成決定部３０１を備える。
2018168695.tif 000002
【特許請求の範囲】
【請求項１】
予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、
前記複数のパラメータを最適化する処理を実行した結果を基に、前記ブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき、前記ブロックにおける前記パラメータの部分集合の要素を変化させるブロック構成決定手段
を備える分散機械学習装置。
【請求項２】
前記ブロック構成決定手段は、
前記ブロックに属するパラメータの部分集合の各々の変化量を基に、前記パラメータの部分集合の収束度を推定するブロック収束度推定手段
を備える請求項1に記載の分散機械学習装置。
【請求項３】
前記ブロック構成決定手段は、
前記ブロック収束度推定手段が推定した前記収束度を基に、現在属するブロックから移動すべき移動対象パラメータを決定する移動対象パラメータ決定手段
を備える請求項１又は請求項２に記載の分散機械学習装置。
【請求項４】
前記ブロック構成決定手段は、
前記移動対象パラメータの各々に対し、前記複数の前記ブロックの内から、移動先のブロックを決定する移動先ブロック決定手段
を備える請求項１乃至請求項３のいずれかに記載の分散機械学習装置。
【請求項５】
前記ブロックに属するパラメータの情報をブロック情報として記憶するブロック情報記憶手段と、
前記ブロックに属するパラメータを最適化する処理を実行するワーカー
とを更に備え、
前記移動先ブロック決定手段は、前記移動対象パラメータおよび前記移動先のブロックの情報を基に、前記ブロック情報を更新し、
前記ワーカーは、前記ブロック情報を前記ブロック情報記憶手段から取得して前記最適化する処理を実行する
請求項１乃至請求項４のいずれかに記載の分散機械学習装置。
【請求項６】
前記部分集合に含まれる各パラメータの変化量を格納するパラメータ情報記憶手段
を更に備え、
前記ワーカーは、前記パラメータを最適化する処理を実行して得られる前記各パラメータの変化量をパラメータ情報記憶手段に格納する
請求項１乃至請求項５のいずれかに記載の分散機械学習装置。
【請求項７】
前記予測モデルに学習させる前記学習データを格納する学習データ記憶手段
を更に備え、
前記ワーカーは、前記学習データ記憶手段に格納される学習データを取得し、当該学習データを用いて前記予測モデルを学習させ、前記パラメータを最適化する。
る請求項１乃至請求項６のいずれかに記載の分散機械学習装置。
【請求項８】
前記部分集合内のパラメータ間の類似性を表す情報を記憶するパラメータ特徴記憶手段を更に備え、
前記移動対象パラメータ決定手段は、前記パラメータ特徴記憶手段からあるブロックに属するパラメータの部分集合の各々の前記類似性を表す情報を取得し、取得した前記類似性を表す情報を基に、前記移動対象パラメータを決定する
請求項１乃至請求項７のいずれかに記載の分散機械学習装置。
【請求項９】
予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、
前記複数のパラメータを最適化する処理を実行した結果を基に、前記ブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき、前記ブロックにおける前記パラメータの部分集合の要素を変化させる
分散機械学習方法。
【請求項１０】
予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、
前記複数のパラメータを最適化する処理を実行した結果を基に、前記ブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき、前記ブロックにおける前記パラメータの部分集合の要素を変化させる
ことをコンピュータに実現させるための分散機械学習プログラムを格納する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習を分散して実行する技術に関する。
【背景技術】
【０００２】
機械学習が近年積極的に研究されている。機械学習とは、多数のデータから規則性を学習して、未知のデータや将来の事象に対して予測すること、もしくは、それを実現する手段である。予測を行うときは、データの特徴量およびパラメータによって値が決定される関数を用いて予測モデルを作成する。機械学習の目的は、正しい予測を行うことができる予測モデルのパラメータを決定することである。より具体的に述べると、予測モデルと与えられたデータから計算される損失関数を、パラメータに対して最適化することである。【０００３】
いくつかの要因によって、学習時間は増加する。これらの要因としては、データ量の増大、モデルのパラメータの増大等がある。学習時間を減少させる一つの手法として、最適化の計算を、複数のワーカー（複数のＣＰＵ（Central Processing Unit）コアおよび複数の計算ノード等のリソース）を用いて並列処理させることが挙げられる。パラメータの集合は、ブロックと呼ばれるパラメータの部分集合に分割される。一般的に、一つのワーカーは、一つのブロックに属するパラメータに対し、最適化処理を行う。【０００４】
並列化の方式としては、データを分割して処理を分散させる方式がある。これはデータ量が大きいときに有効である。また、パラメータをいくつかのブロックに分割してそれぞれのワーカーで一部のパラメータのみを最適化するという手法もある。モデルの次元数が大きいときにはこれが有効である。本発明は後者の並列化方式に係るものである。尚、モデルの次元数が大きいほど、演算の正確性の精度は高まる。【０００５】
非特許文献１は、特徴量間の相関に基づいてパラメータをクラスタリングし、最適化の逐次処理を行う手法を開示する。この手法では、データの特徴量とパラメータが対応する線形モデルを対象としており、特徴量間の相関に基づいてパラメータをクラスタリングし、複数のＣＰＵコアの各々は、クラスタに属するパラメータについてのみ最適化の逐次処理を行う。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Scherrer, Chad, et al. "Feature clustering for accelerating parallel coordinate descent." NIPS'12 Proceedings of the 25th International Conference on Neural Information Processing Systems, Pages 28-36, Lake Tahoe, Nevada, -December 03 - 06, 2012
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１に開示される手法では、最適化の途中においては、ブロック分けされたパラメータ毎に収束の度合が異なることに注目していない。全てのパラメータの収束を短時間で効率的に完了するには、パラメータが十分収束しているものについては、これ以上最適化は不要であり、まだ収束していないパラメータについてのみ更なる最適化が必要である。収束の種類やスピードの異なるパラメータがワーカーに遍在すると、夫々のワーカーが担当するパラメータに対する必要な最適化の計算の量は異なってくる。即ち、パラメータの収束の度合いがワーカー間で異なるために、全てのパラメータが収束するまでに長い時間を要する。【０００８】
そこで、本発明は、上述した課題に鑑み、複数のパラメータを効率的に収束させることができる分散機械学習装置等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明の第１の観点に係る分散機械学習装置は、
予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、
前記複数のパラメータを最適化する処理を実行した結果を基に、前記ブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき、前記ブロックにおける前記パラメータの部分集合の要素を変化させるブロック構成決定手段を備える。【００１０】
本発明の第２の観点に係る分散機械学習方法は、
予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、
前記複数のパラメータを最適化する処理を実行した結果を基に、前記ブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき、前記ブロックにおける前記パラメータの部分集合の要素を変化させる。【００１１】
本発明の第３の観点に係る分散機械学習プログラムは、
予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、
前記複数のパラメータを最適化する処理を実行した結果を基に、前記ブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき、前記ブロックにおける前記パラメータの部分集合の要素を変化させることをコンピュータに実現させる。【００１２】
尚、分散機械学習プログラムは非一時的な記憶媒体に格納されていてもよい。
【発明の効果】
【００１３】
本発明によれば、複数のパラメータを効率的に収束させることができる分散機械学習装置等を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態にかかる分散機械学習装置の構成例を示すブロック図である。
【図２】パラメータ情報記憶部内のデータ構成例を示す図である。
【図３】ブロック情報記憶部内のデータ構成例を示す図である。
【図４】本発明の第１の実施形態にかかる分散機械学習装置の変更例を示すブロック図である。
【図５】本発明の第１の実施形態にかかる分散機械学習装置の動作例を示すフローチャートである。
【図６】ワーカーの動作例を示すフローチャートである。
【図７】ブロック構成決定部の動作例を示すフローチャートである。
【図８】本発明の第２の実施形態にかかる分散機械学習装置の構成例を示すブロック図である。
【図９】パラメータ特徴記憶部内のデータ構成の一例を示す図である。
【図１０】本発明の第２の実施形態にかかる分散機械学習装置のブロック構成決定部の動作例を示すフローチャートである。
【図１１】本発明の第３の実施形態にかかる分散機械学習装置の構成例を示すブロック図である。
【図１２】本発明にかかる各実施形態を実施するための情報処理装置の構成例である。
【発明を実施するための形態】
【００１５】
＜第１の実施形態＞
一般的に、分散機械学習装置は、学習データを用いて予測モデルを最適化することを目的とする。予測モデルは、離散値もしくは連続値をとる、複数のパラメータによって特徴づけられる。よって、モデルの最適化とは、モデルのパラメータを最適化することを意味する。最適化とは、学習データとモデルとから計算される損失関数を最小化することである。学習データとは予測モデルが機械学習に使用するデータである。
【００１６】
最適化は、ある処理と次の処理との間の変化量（変化率）を考慮しつつ、逐次処理を繰り返すことによって達成される。最適化の例としては、現在のパラメータにおける勾配値を計算し適当な比率を乗じて損失関数に足しこむ、という処理をパラメータ数分繰り返す勾配降下法がある。第一の実施の形態では、勾配降下法を例にあげて説明するが、最適化の逐次処理の内容については、これには限定されない。本実施形態において、勾配を表わす勾配値とは、あるパラメータが次のパラメータへ変化するときの変化率である。
【００１７】
最適化の逐次処理を繰り返すと、パラメータが最適な値に近づく。そのため、計算されるパラメータの更新差分が、逐次処理のたびに小さくなる。逐次処理を行ってもパラメータの値がほとんど更新されなくなったとき、パラメータは収束した、と表現する。
【００１８】
第１の実施形態は、パラメータの最適化を複数のワーカー１５０ａ、１５０ｂ、１５０ｃ（以下、１５０ａ−１５０ｃと記載）で並列に実行する。ワーカーとは、複数のＣＰＵコアおよび複数の計算ノード等のリソースを指す。第１の実施形態の特徴は、ワーカー１５０ａ−１５０ｃ同士における、パラメータの収束の度合を互いに平準化することにある。最適化の対象となるパラメータの集合は、ブロックと呼ばれるパラメータの部分集合に分割される。一つのワーカーは、一つのブロックに属するパラメータに対し、最適化処理を行う。あるブロックに対する逐次処理を行うワーカー１５０ａ−１５０ｃは固定しても良いし、逐次処理のたびごとにブロックに対する逐次処理を行うワーカー１５０ａ−１５０ｃを変えても良い。
【００１９】
（分散機械学習装置）
本発明の第１の実施形態に係る分散機械学習装置１００について図面を参照して説明する。図１は、分散機械学習装置１００の構成例を示すブロック図である。分散機械学習装置１００は、ブロック構成決定部１１０、ブロック情報記憶部１２０、パラメータ情報記憶部１３０、全体管理部１４０およびワーカー１５０ａ−１５０ｃを備える。
【００２０】
パラメータ情報記憶部１３０は、最適化の対象である予測モデルのパラメータに関する情報を格納する。パラメータに関する情報として、各パラメータの変化量（パラメータが収束する度合いを示す。以下、この度合いを「収束度」と記載する）を格納してもよい。パラメータに関する情報はパラメータ情報とも呼ばれる。ブロック構成決定部１１０、および、ワーカー１５０ａ−１５０ｃは、必要に応じて、パラメータ情報記憶部１３０からパラメータ情報を取得する。また、パラメータ情報記憶部１３０は、ワーカー１５０ａ−１５０ｃから通知されたパラメータの値もしくはパラメータの値の更新差分も、パラメータ情報として格納する。
【００２１】
パラメータ情報記憶部１３０におけるデータの構成の一例を図２に示す。パラメータ情報は、「パラメータＩＤ」（ＩＤ：Identifier）、「値」、「勾配値」をデータ項目として備える。パラメータＩＤは、パラメータを一意に識別するＩＤである。値は、パラメータの値である。勾配値は、前回の逐次処理で計算した勾配を表わす値である。尚、パラメータの収束度合いとしての勾配値は必須ではないが、第１の実施形態においては、勾配値をパラメータ情報に含むものとする。
【００２２】
ブロック情報記憶部１２０は、それぞれのブロックに対して、どのパラメータが属するかを示すブロック情報を記録する。ブロック情報は、図３に示すように、「ブロックＩＤ」、「属するパラメータＩＤ」をデータ項目として備える。ブロックＩＤはブロックを一意に識別可能なＩＤである。属するパラメータＩＤは、ブロックＩＤに紐付けられたブロックに属するパラメータ（パラメータＩＤ）の集合を示す。
【００２３】
ブロック情報は、ワーカー１５０ａ−１５０ｃからの要求により読み出される。また、ブロック情報は、ブロック構成決定部１１０からの要求または命令に応じて更新される。
【００２４】
ブロック構成決定部１１０は、それぞれのパラメータの収束の度合いに応じて、パラメータの集合であるブロックの構成を変更する。ブロック構成決定部１１０は、予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を決定する。即ち、複数のブロックの構成が決定される。またブロック構成決定部１０は、ワーカーによって複数のパラメータを最適化する処理が実行された結果を基に、ブロックに属するパラメータの部分集合における各々のパラメータの変化量を取得し、当該取得した変化量に基づき、ブロックにおける前記パラメータの部分集合の要素を変化させる。
【００２５】
ブロック構成決定部１１０は、ブロック収束度推定部１１１、移動対象パラメータ決定部１１２および移動先ブロック決定部１１３を備える。
【００２６】
ブロック収束度推定部１１１は、ブロックに属するパラメータの部分集合の各々の変化量（パラメータの収束度）を基に、パラメータの部分集合の収束度を推定する。パラメータの部分集合とは、夫々のブロックに属する複数のパラメータを指す。尚、パラメータの収束度を示す値の例としては、勾配値が挙げられる。同じブロックに属する複数のパラメータの、夫々の勾配値は正規化された値であってもよい。これによりパラメータ値毎にスケールが違っても、計算結果に影響を及ぼさないようにすることができる。
【００２７】
ブロックの収束度（ブロック収束度）は、ブロックに属する全てのパラメータの収束度を用いて計算される。ブロック収束度は、例えば、ブロックに属する全てのパラメータの収束度の平均として計算される。ブロック収束度推定部１１１は、全てのブロックに対してブロック収束度を計算する。ブロック構成決定部１１０は、計算したブロック収束度を作業メモリ（不図示）等に一時記憶してもよい。
【００２８】
移動対象パラメータ決定部１１２は、ブロック収束度推定部１１１が推定したパラメータの収束度を基に、現在属するブロックから他のブロックへ移動すべき移動対象パラメータを決定する。ブロックＩＤをインデックス（ｉ）、即ち 1,2,・・・,B（Bはブロック総数）として、それぞれのブロックのブロック収束度を、c1, c2, …, cBとする。また時刻tにおけるブロックiに属するパラメータの数をNi(t)とする。
【００２９】
移動対象パラメータ決定部１１２は、次の時刻t+1において、それぞれのブロックiに属するパラメータの数Ni(t+1)を、前記計算したブロックの収束度に基づいて決定する。一例として、時刻t+1でブロックに属するパラメータの数を、それぞれのブロックの収束度に逆比例するように決定する。つまり、移動対象パラメータ決定部１１２は、以下の式（１）を満たすように時刻t+1でブロックに属するパラメータの数を決定する。
【００３０】
【数１】
2018168695.tif 000003
【００３１】
移動対象パラメータ決定部１１２は、それぞれのブロックiに対して、ブロックiに属するパラメータの部分集合の変化量を表わす{Ni(t)-Ni(t+1)}を計算する。計算結果が正の場合、ブロックiに属するパラメータ数は減少する、即ち、そのブロックの負荷は減少することを示す。計算結果が負の場合、ブロックiに属するパラメータ数は増加する、即ち、そのブロックの負荷は増加することを示す。移動対象パラメータ決定部１１２は、計算結果が負となるブロックiの中からランダムに、{Ni(t)-Ni(t+1)}個のパラメータを選択して、移動対象パラメータとする。ブロック構成決定部１１０は移動対象パラメータの情報を作業メモリ（不図示）等に一時格納してもよい。移動対象パラメータ決定部１１２は、この操作を全てのブロック（ワーカー）に対して実行する。
【００３２】
移動先ブロック決定部１１３は、移動対象パラメータとされた全てのパラメータに対して、複数のブロックの内から、移動先になるべきブロックを決定する。移動対象パラメータとされた全てのパラメータに対して、先に計算されたブロック毎におけるパラメータの部分集合の変化量{Ni(t)-Ni(t+1)}が正であるようなブロックからランダムにひとつ選択して、移動先ブロックとする。これは、パラメータ最適化処理の負荷が大きいブロックに属するパラメータを、負荷の小さいブロックに移動させるためである。この結果、ワーカー１５０ａ−１５０ｃにおいて、パラメータの収束度が互いに平準化される。ブロックの移動において、ブロックiに対して、ブロックに既にあるパラメータの数と、移動対象となるパラメータの数の和がNi(t+1)を超えないように制限する。これによって、パラメータ移動後はNi(t)(i=1,2,・・・,B)に従う数のパラメータを含むブロックが構成される。
【００３３】
ブロック構成決定部１１０は、先に計算されたブロックの構成、つまり、どのブロックがどのパラメータを有するかという情報に従って、ブロック情報記憶部１２０のブロック情報を更新、即ち再構成するように制御する。
【００３４】
ワーカー１５０ａ−１５０ｃは、ワーカーの集合体である。各ワーカー１５０ａ−１５０ｃに対する入出力は同一でないが、各ワーカー１５０ａ−１５０ｃの内部で行う処理は同じである。
【００３５】
ワーカー１５０ａ−１５０ｃは、更新情報記憶部１５１と、勾配計算部１５２、とを備える。
【００３６】
更新情報記憶部１５１は、勾配の計算に必要となる、パラメータ値（θ）および学習データ（η）を格納する。ワーカー１５０ａ−１５０ｃは、各々のワーカー１５０ａ−１５０ｃに対応するブロックに紐付けられたパラメータＩＤをブロック情報記憶部１２０より取得し、当該パラメータＩＤに紐付けられたパラメータ値θをパラメータ情報記憶部１３０から取得して更新情報記憶部１５１に格納する。学習データはワーカー１５０ａ−１５０ｃ内部の学習データ記憶部（不図示）に保存されていても良い。もしくは、図４に示す分散機械学習装置のように、学習データ記憶部１６０を通信可能に接続してもよい。学習データ記憶部１６０は、学習データを格納する。この場合、ワーカー１５０ａ−１５０ｃは、学習データ記憶部１６０から、パラメータの最適化学習に必要となる、学習データの全体またはその一部を取得する。
【００３７】
勾配計算部１５２は、更新情報記憶部１５１に記録されたパラメータ値θと学習データとを勾配降下法の最適化アルゴリズム(関数)に代入して算出結果を得ることで、パラメータの勾配値を出力する。
【００３８】
ワーカー１５０ａ−１５０ｃは、学習データに基づきパラメータの最適化に関わる逐次処理を実行する、即ち、学習データを用いて予測モデルを学習させ、予測モデルのパラメータを改良（最適化）する。複数のワーカー１５０ａ−１５０ｃの各々が並列に動作することによってパラメータの最適化を行う。以下、勾配降下法を基に、ワーカー１５０ａ−１５０ｃが行う最適化の逐次処理の動作を説明する。
【００３９】
ワーカー１５０ａ−１５０ｃは、ブロック情報記憶部１２０からブロックＩＤで示されるブロックが含むパラメータのＩＤを取得する。その後、ワーカー１５０ａ−１５０ｃは、パラメータ情報記憶部１３０から、取得したパラメータＩＤに対応するパラメータの現在の値θ１を取得し、更新情報記憶部１５１に記録する。
【００４０】
ワーカー１５０ａ−１５０ｃは、勾配を計算するために学習データの全体またはその一部を取得して（これを学習データη１とする）、更新情報記憶部１５１に記録する。
【００４１】
勾配計算部１５２は、更新情報記憶部１５１に記録されたパラメータ値θ１と学習データη１を最適化のための所定の計算式に代入し、パラメータの勾配値ｇ１を算出する。ワーカー１５０ａ−１５０ｃは、更新情報記憶部１５１に記憶されるパラメータ値θ１を勾配値ｇ１に基づき更新し、新たなパラメータ値θ２を出力する。ワーカー１５０ａ−１５０ｃの勾配計算部１５２は、更新されたパラメータ値θ２を含むパラメータ情報をパラメータ情報記憶部１３０に記録する。パラメータ情報には勾配値ｇ１が含まれていても良い。更に、パラメータ値θ１およびパラメータ値θ２等を用いて算出される新たな勾配値ｇ２が含まれていても良い。
【００４２】
この時、勾配計算部１５２は、更新情報記憶部１５１に前回記録されたパラメータ情報（パラメータ値θ１等）と、学習データ記憶部１６０に前回記録された学習データη１とを消去してもよい。以上がワーカー１５０ａ−１５０ｃの行う最適化の逐次処理である。
【００４３】
ワーカー１５０ａ−１５０ｃは、所定の時間、もしくは、所定の回数だけ、上記の逐次処理を実行する。ワーカー１５０ａ−１５０ｃは処理の間に互いに同期をとっても良い。即ち、ある逐次処理を全てのワーカー１５０ａ−１５０ｃが終了するまで、次の逐次処理を開始しないよう制御してもよい。逆に、ワーカー１５０ａ−１５０ｃ各自が独立に処理を進めてもよい。即ち、各々のワーカー１５０ａ−１５０ｃが他のワーカー１５０ａ−１５０ｃの逐次処理終了を待たずに、自身ペースでの逐次処理を終了させてもよい。
【００４４】
全体管理部１４０は、ワーカー１５０ａ−１５０ｃの逐次計算とブロックの構成のためのスケジュール管理を行う。全体管理部１４０は、ワーカー１５０ａ−１５０ｃに既定の回数もしくは既定の時間だけ、最適化の逐次計算を実行するように指示する。この実行後、全体管理部１４０は、ワーカー１５０ａ−１５０ｃでの逐次処理によるパラメータの収束度に基づいて、最適化全体の収束判定を行う。全体管理部１４０は、最適化の収束判定において、パラメータが十分に収束し、最適化の逐次処理がこれ以上必要ないか否かを判定する。収束の判定の一例としては、前回の勾配値の総和が所定の閾値を超過しているか否かを判定することである。他の判定例としては、所定のデータ（学習に使っていないデータが望ましい）と現在のパラメータとで計算される損失関数の値が所定の閾値を超過しているか否かを判定することである。収束判定の結果が真であるとき、全体管理部１４０は、分散機械学習装置１００の動作を終了する。収束判定の結果が偽であるとき、全体管理部１４０は、ブロック構成決定部１１０に再度動作を行うように要求する。
【００４５】
（分散機械学習装置の動作）
本発明の第１の実施形態における分散機械学習装置１００の動作について図５〜図７のフローチャートを参照して説明する。以下、分散機械学習装置１００全体動作のフロー、ワーカーの動作フロー、ブロック構成決定部１１０の動作フローについて記載された順序で説明する。
【００４６】
まず、分散機械学習装置１００全体動作について、図５に示すフローチャートを参照して説明する。
【００４７】
ステップＳ１１１において、分散機械学習装置１００の全体管理部１４０は、既定の回数もしくは既定の時間間隔で、各ワーカー１５０ａ−１５０ｃが並列に逐次処理を実行するよう指示する。指示を受けた各ワーカー１５０ａ−１５０ｃは逐次処理（最適化のための学習）を実行する。
【００４８】
ステップＳ１１２において、全体管理部１４０は、最適化の処理が収束したかどうかを判定する。収束していると判定されると、全体管理部１４０は分散機械学習装置１００の動作を終了させる。収束していないと判定されると、処理はステップＳ１１３へ進められる。
【００４９】
ステップＳ１１３において、全体管理部１４０は、ブロック構成決定部１１０に対して、パラメータのブロックを再構成するよう要求する。ブロック構成決定部１１０は、パラメータのブロックを再構成する。
【００５０】
尚、上記のステップＳ１１１およびステップＳ１１３についての詳細は後述する。
【００５１】
ステップＳ１１１の詳細な動作、即ち、ワーカー１５０ａ−１５０ｃの動作について、図６に示すフローチャートを参照して説明する。
【００５２】
まず、ステップＳ１２１において、全体管理部１４０からの指示に応じて、ワーカー１５０ａ−１５０ｃは、自身が最適化の対象とすべきブロックを判断し（これは予め設定されていても良い）、当該ブロックに属するパラメータＩＤを、ブロック情報記憶部１２０（図３参照）から取得する。
【００５３】
ステップＳ１２２において、ワーカー１５０ａ−１５０ｃは、取得したパラメータＩＤに基づき、パラメータ情報記憶部１３０（図２参照）から当該パラメータＩＤに紐付けられたパラメータ値θ１を取得し、取得したパラメータ値θ１を更新情報記憶部１５１に記録する。
【００５４】
ステップＳ１２３において、ワーカー１５０ａ−１５０ｃの勾配計算部１５２は、取得したパラメータ値θ１と学習データη１とに基づいて、最適化の対象とすべきブロックのパラメータの勾配値ｇを所定の関数やアルゴリズムを用いて算出する。また、算出された勾配値ｇを用いて、パラメータ値θ１を更新する。
【００５５】
ステップＳ１２４において、ワーカー１５０ａ−１５０ｃの勾配計算部１５２は、更新されたパラメータ値θ２をパラメータ情報記憶部１３０（図２参照）に格納する。
【００５６】
ステップＳ１２５において、ワーカー１５０ａ−１５０ｃは、既定の回数分逐次処理を実行したかどうかを判定する。既定の回数分で実行したと判定されると、ワーカー１５０ａ−１５０ｃは動作を終了する。既定の回数分実行していないと判定されると、ワーカー１５０ａ−１５０ｃは、ステップＳ１２１に処理を戻し、ステップＳ１２１−Ｓ１２４の逐次処理を再度実行する。尚、ワーカー１５０ａ−１５０ｃが既定の回数分および規定の時間間隔で逐次処理を実行したかどうかを判定してもよい。
【００５７】
以上により、ワーカー１５０ａ−１５０ｃの動作を終了する。
【００５８】
ステップＳ１１３の詳細な動作、即ち、ブロック構成決定部１１０の動作について、図７に示すフローチャートを参照して説明する。
【００５９】
ステップＳ１３１において、全体管理部１４０からの再構成の要求に応じて、ブロック構成決定部１１０のブロック収束度推定部１１１は、ブロックの収束度を推定する。そのため、ブロック収束度推定部１１１は、まず、それぞれのパラメータの収束度を推定する。パラメータの収束度は、一例として、そのパラメータの前回の勾配値である。他の例として、複数のパラメータの勾配値を正規化した値を用いることもできる。これにより、パラメータの値のスケールの違いを無視することができる。尚、収束度の計算方法はこれらの例に限定されない。
【００６０】
ステップＳ１３２において、移動対象パラメータ決定部１１２は、推定したブロックの収束度に基づき、ブロックに属するパラメータの部分集合の各々の変化量を算出する。更に、移動対象パラメータ決定部１１２は、その算出結果に基づいてブロック毎に移動するパラメータを特定する。
【００６１】
ステップＳ１３３において、移動先ブロック決定部１１３は、移動するパラメータそれぞれに対して、移動先のブロック（ブロックＩＤ）を決定する。
【００６２】
ステップＳ１３４において、移動先ブロック決定部１１３は、決定されたブロックへと、パラメータを移動させる。すなわち、移動先ブロック決定部１１３は、先に計算された移動対象パラメータと移動先ブロックのＩＤとを用いて、ブロック情報記憶部１２０内のブロック情報を更新する。このようにパラメータの移動によって各ブロックのパラメータの収束度の平準化が行われる。
【００６３】
以上により、ブロック構成決定部１１０の動作を終了する。
【００６４】
（第１の実施形態の効果）
上述したように本発明の第１の実施形態に係る分散機械学習装置１００によると、全てのパラメータを短い時間で収束させることができる。これは、ブロック構成決定部１１０が、ワーカー１５０ａ−１５０ｃにおけるパラメータの収束の度合を互いに平準化するからである。
【００６５】
＜第２の実施形態＞
本発明の第２の実施形態に係る分散機械学習装置２００について説明する。分散機械学習装置２００は、最適化開始時に、パラメータ間の類似性に基づいてパラメータをブロック化する。そして、分散機械学習装置２００は、最適化の途中でブロックの構成を変更（再構成）するときも、パラメータの類似性を考慮する。
【００６６】
パラメータ間の類似性は、パラメータに付与される特徴の間の距離として計算される。計算の一例として、特徴が正規化された多次元のベクトルとして与えられ、ベクトルの各要素の差の平方二乗和として距離が計算される。この距離によってパラメータをクラスタリングすることによって、最適化を行う際のパラメータのブロックを得る。それぞれのクラスタ（ブロック）には、中心となる点があり、それをセントロイドと呼ぶ。特徴が多次元のベクトルで表されている場合は、セントロイドはブロックに属する全てのパラメータの特徴ベクトルの平均となる。
【００６７】
（分散機械学習装置）
分散機械学習装置２００は、図８に示すように、ブロック構成決定部２１０、ブロック情報記憶部１２０、パラメータ情報記憶部１３０、全体管理部１４０、ワーカー１５０ａ−１５０ｃおよびパラメータ特徴記憶部２６０を備える。
【００６８】
パラメータ特徴記憶部２６０は、パラメータの特徴情報を記録する。パラメータ特徴情報は、図９に示すように、データ項目として「パラメータＩＤ」と「特徴」とを備える。パラメータＩＤは、パラメータを一意に識別可能なＩＤである。特徴は、一例として、特徴を表す多次元ベクトルの値である。
【００６９】
ブロック構成決定部２１０は、ブロック収束度推定部２１１、移動対象パラメータ決定部２１２および移動先ブロック決定部２１３を備える。
【００７０】
ブロック収束度推定部２１１は、ブロックの収束度を推定する。ブロックの収束度は、ブロックに属する全てのパラメータの収束度から計算される。例えば、ブロック収束度推定部２１１は、ブロックに属する全てのパラメータの収束度の平均を計算し、計算結果をブロックの収束度とする。尚、パラメータの収束度を示す値の例としては、勾配値、またはブロックに属する複数のパラメータの勾配値を正規化した値である。ブロック収束度推定部２１１は、全てのブロックに対してブロック収束度を算出する。
【００７１】
移動対象パラメータ決定部２１２は、パラメータ特徴記憶部２６０からあるブロックに属するパラメータの部分集合の各々の類似性を表す情報を取得し、取得した類似性を表す情報を基に、移動対象パラメータを決定する。
【００７２】
類似性を表す情報について説明する。先ず、移動対象パラメータ決定部２１２は、ブロックのセントロイドを計算する。本実施形態の例では、移動対象パラメータ決定部２１２は、パラメータ特徴記憶部２６０からブロックに属する全てのパラメータの特徴（値）を取得し、取得した特徴（値）の平均を算出し、算出結果である値をセントロイドとする。そしてブロックに属する全てのパラメータとセントロイドとの距離を計算して、その距離が大きい順に並べる。更に、移動対象パラメータ決定部２１２は、当該距離が大きい順に、算出された|Ni(t)-Ni(t+1)|（パラメータ個数）を移動対象パラメータに設定する。即ち、この距離が類似性を表わす情報となる。
【００７３】
移動先ブロック決定部２１３は、移動対象パラメータとされた全てのパラメータに対して、移動先ブロックを決定する。移動先ブロック決定部２１３は、移動対象パラメータとされた全てのパラメータの内、先に計算されたブロックのパラメータの数の差{Ni(t)-Ni(t+1)}が正であるブロック（即ち、負荷が少ないブロック）であり、かつ、セントロイドからの距離が最も近いブロック（特徴が平均に近いブロック）をひとつ選択して、移動先ブロックとする。尚、各ブロックをセントロイドからの距離が近い順序に並べ、当該順序に沿って移動先ブロックを選択してもよい。
【００７４】
このとき、移動先ブロック決定部１１３は、ブロックiに対して、ブロックに既にあるパラメータの数と、移動対象となるパラメータの数の和がNi(t+1) を超えないように制限を設ける。これによって、パラメータ移動後はNi(t) (i=1,2, ・・・, B)に従う数のパラメータを含むブロックが構成される。
【００７５】
ブロック構成決定部２１０は、先に計算されたブロックの構成、つまり、どのブロックがどのパラメータを有するかという情報に従って、ブロック情報記憶部１２０のブロック情報を更新する。
【００７６】
その他の構成要素については第１の実施形態と同様である。
【００７７】
（分散機械学習装置の動作）
本発明の第２の実施形態における分散機械学習装置２００のブロック構成決定部２１０の動作について図１０を参照して説明する。尚、分散機械学習装置２００全体動作のフローおよびワーカーの動作フローについては、図５および図６と同様であるため説明を省略する。
【００７８】
まず、ステップＳ２３１において、ブロック収束度推定部２１１は、ブロックの収束度を推定する。
【００７９】
ステップＳ２３２において、移動対象パラメータ決定部２１２は、ブロック収束度を基に、現在のブロックから他のブロックへと移動するパラメータを決定する。この際、移動対象パラメータ決定部２１２は、ブロックのセントロイドを計算する。具体的に、移動対象パラメータ決定部２１２は、ブロックに属する全てのパラメータの特徴の平均を算出して、算出結果をセントロイドに設定する。更に、移動対象パラメータ決定部２１２は、ブロックに属する全てのパラメータとセントロイドとの距離を計算して、その距離が大きいもの順に並べる。更に、その順に沿って、|Ni(t) - Ni(t+1)|個のパラメータを選択して、選択されたパラメータを移動対象パラメータとする。即ち、当該距離が大きい順に移動対象パラメータを設定する。
【００８０】
ステップＳ２３３およびＳ２３４は図７のＳ１３３およびＳ１３４と同じである。
【００８１】
以上により、ブロック構成決定部２１０の動作を終了する。
【００８２】
（第２の実施形態の効果）
本発明の第２の実施形態に係る分散機械学習装置２００は、全てのパラメータを効率的に短時間で収束させることができる。これは、分散機械学習装置２００が、パラメータの収束の度合をワーカー１５０ａ−１５０ｃにおいて互いに平準化するからである。更に、分散機械学習装置２００は、ブロックに含まれるパラメータを互いに類似させつつ、ブロックの構成を変化させることができるため、最適化の収束を一層高速化することができる。
【００８３】
＜第３の実施形態＞
本発明の第３の実施形態は、第１および第２の実施形態の最小構成である。図１１に示すように、本発明の第３の実施形態に係る分散機械学習装置３００は、ブロック構成決定部３０１と図示されない複数のワーカーとを備える。
【００８４】
ブロック構成決定部３０１は、学習データを用いた予測モデルのパラメータを最適化する処理を実行した結果に基づき、パラメータの部分集合であるブロックの構成を決定する。
【００８５】
複数のワーカーは、学習データを基に、自装置に割り当てられたブロックに属するパラメータの部分集合の各々の変化量（パラメータの収束度）を算出し、当該算出結果に基づきパラメータの部分集合を変化させる。
【００８６】
第３の実施形態に係る分散機械学習装置３００は、複数のパラメータを効率的に短時間で収束させることができる。これは、ワーカーが、パラメータの収束の度合を互いに平準化するからである。また、ブロック構成決定部３０１、最適化の対象となるパラメータのブロックを適宜再構成するからである。
【００８７】
（情報処理装置の構成）
上述した本発明の各実施形態において、図１、図８および図１１に示す各分散機械学習装置の各構成要素は、機能単位のブロックを示している分散機械学習装置の各構成要素の一部又は全部は、例えば図１２に示すような情報処理装置１とプログラムとの任意の組み合わせを用いて実現される。情報処理装置１は、一例として、以下のような構成を含む。
【００８８】
・ＣＰＵ５０１
・ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２
・ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３
・ＲＡＭ５０３にロードされるプログラム５０４
・プログラム５０４を格納する記憶装置５０５
・記録媒体５０６の読み書きを行うドライブ装置５０７
・通信ネットワーク５０９と接続する通信インターフェース５０８
・データの入出力を行う入出力インターフェース５１０
・各構成要素を接続するバス５１１
本願の各実施形態における分散機械学習装置の各構成要素は、これらの機能を実現するプログラム５０４を１つまたはそれ以上のＣＰＵ５０１が取得して実行することで実現される。分散機械学習装置の各構成要素の機能を実現するプログラム５０４は、例えば、予め記憶装置５０５やＲＡＭ５０３に格納されており、必要に応じてＣＰＵ５０１が読み出す。なお、プログラム５０４は、通信ネットワーク５０９を介してＣＰＵ５０１に供給されてもよいし、予め記録媒体５０６に格納されており、ドライブ装置５０７が当該プログラムを読み出してＣＰＵ５０１に供給してもよい。
【００８９】
各装置の実現方法には、様々な変形例がある。例えば、分散機械学習装置は、構成要素毎にそれぞれ別個の情報処理装置とプログラムとの任意の組み合わせにより実現されてもよい。また、分散機械学習装置が備える複数の構成要素が、一つの情報処理装置１とプログラムとの任意の組み合わせにより実現されてもよい。
【００９０】
また、分散機械学習装置の各構成要素の一部又は全部は、その他の汎用または専用の回路、プロセッサ等やこれらの組み合わせによって実現される。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。
【００９１】
分散機械学習装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【００９２】
分散機械学習装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【００９３】
以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００９４】
この出願は２０１７年３月１７日に出願された日本出願特願２０１７−０５２８１２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００９５】
１        ：情報処理装置
１００    ：分散機械学習装置
１１０    ：ブロック構成決定部
１１１    ：ブロック収束度推定部
１１２    ：移動対象パラメータ決定部
１１３    ：移動先ブロック決定部
１２０    ：ブロック情報記憶部
１３０    ：パラメータ情報記憶部
１４０    ：全体管理部
１５０ａ  ：ワーカー
１５０ｂ  ：ワーカー
１５０ｃ  ：ワーカー
１５１    ：更新情報記憶部
１５２    ：勾配計算部
１６０    ：学習データ記憶部
２００    ：分散機械学習装置
２１０    ：ブロック構成決定部
２１１    ：ブロック収束度推定部
２１２    ：移動対象パラメータ決定部
２１３    ：移動先ブロック決定部
２６０    ：パラメータ特徴記憶部
３００    ：分散機械学習装置
３０１    ：ブロック構成決定部
３０２ａ  ：ワーカー
３０２ｂ  ：ワーカー
３０２ｃ  ：ワーカー
５０１    ：ＣＰＵ
５０３    ：ＲＡＭ
５０４    ：プログラム
５０５    ：記憶装置
５０６    ：記録媒体
５０７    ：ドライブ装置
５０８    ：通信インターフェース
５０９    ：通信ネットワーク
５１０    ：入出力インターフェース
５１１    ：バス
【図１】
2018168695.tif 000004
【図２】
2018168695.tif 000005
【図３】
2018168695.tif 000006
【図４】
2018168695.tif 000007
【図５】
2018168695.tif 000008
【図６】
2018168695.tif 000009
【図７】
2018168695.tif 000010
【図８】
2018168695.tif 000011
【図９】
2018168695.tif 000012
【図１０】
2018168695.tif 000013
【図１１】
2018168695.tif 000014
【図１２】
2018168695.tif 000015
【手続補正書】
【提出日】令和1年8月22日(2019.8.22)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
予測モデルに用いる複数のパラメータの部分集合であるブロックの構成を複数決定し、
前記複数のパラメータを最適化する処理を実行した結果を基に、前記ブロックに属するパラメータの部分集合の各々の変化量を取得し、当該取得した変化量に基づき、前記ブロックにおける前記パラメータの部分集合の要素を変化させる
ことをコンピュータに実現させるための分散機械学習プログラム。
【国際調査報告】
2018168695.tif 000016
2018168695.tif 000017