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

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

▶ 日本電信電話株式会社の特許一覧 ▶ ヴィクトリア ユニバーシティ オブ ウェリントンの特許一覧

<>
  • 特開-変数最適化システム 図1
  • 特開-変数最適化システム 図2
  • 特開-変数最適化システム 図3
  • 特開-変数最適化システム 図4
  • 特開-変数最適化システム 図5
  • 特開-変数最適化システム 図6
  • 特開-変数最適化システム 図7
  • 特開-変数最適化システム 図8
  • 特開-変数最適化システム 図9
  • 特開-変数最適化システム 図10
  • 特開-変数最適化システム 図11
  • 特開-変数最適化システム 図12
  • 特開-変数最適化システム 図13
  • 特開-変数最適化システム 図14
  • 特開-変数最適化システム 図15
  • 特開-変数最適化システム 図16
  • 特開-変数最適化システム 図17
  • 特開-変数最適化システム 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022184274
(43)【公開日】2022-12-13
(54)【発明の名称】変数最適化システム
(51)【国際特許分類】
   G06N 99/00 20190101AFI20221206BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021092030
(22)【出願日】2021-06-01
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り (1)ウェブサイトの掲載日:2020年6月4日 ウェブサイトのアドレス:NTTコミュニケーション科学基礎研究所 オープンハウス2020(WEB開催) http://www.kecl.ntt.co.jp/openhouse/2020/index.html (2)ウェブサイトの掲載日:2020年8月24日 ウェブサイトのアドレス:KDD2020 ウェブサイト https://www.kdd.org/kdd2020/accepted-papers/view/edge-consensus-learning-deep-learning-on-p2p-networks-with-nonhomogeneous- (3)ウェブサイトの掲載日:2020年8月24日 ウェブサイトのアドレス:NTT持株会社ニュースリリース https://www.ntt.co.jp/news2020/2008/200824a.html
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】518128104
【氏名又は名称】ヴィクトリア ユニバーシティ オブ ウェリントン
【氏名又は名称原語表記】Victoria University of Wellington
【住所又は居所原語表記】Kelburn Parade, Kelburn, Wellington 6140, NEW ZEALAND
(74)【代理人】
【識別番号】100121706
【弁理士】
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【弁理士】
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【弁理士】
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】丹羽 健太
(72)【発明者】
【氏名】ウィリム バスティアン クライン
(57)【要約】
【課題】学習用データが複数のノードに分散して蓄積されている場合であっても、当該学習用データに適合するようにモデルの変数を最適化できる技術を提供する。
【解決手段】i番目のノードは、所定の式によりカウンタt+1における変数wiの値を計算する変数更新部と、所定の式によりカウンタt+1における双対変数~yi|jの値を計算する第1双対変数更新部と、カウンタt+1における双対変数~yj|iの値をj番目のノードから受信し、所定の式によりカウンタt+1における双対変数~zi|jの値を計算する第2双対変数更新部とを含み、変数更新部が計算に用いる所定の式は、i番目のノードにおける学習用データのミニバッチに対するコスト関数の勾配降下と、変数wiと変数wjとが等しくなるという拘束条件を満たすように作用する拘束の程度を示す項とを含む式である。
【選択図】図16
【特許請求の範囲】
【請求項1】
V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、
v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、
wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、
~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を次式で定義されるパラメータ行列とし、
【数55】

i番目のノードは、
次式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、
【数56】

(ただし、μ, ηは所定のベクトルであり、xi,MBはi番目のノードにおける学習用データのミニバッチを表す)
j∈N(i)を満たすインデックスjに対して、次式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算する第1双対変数更新部と、
【数57】

τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、
t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、
を含む変数最適化システム。
【請求項2】
V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、
v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、
wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、
~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を次式で定義されるパラメータ行列とし、
【数58】

i番目のノードは、
次式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、
【数59】

(ただし、μ, ηは所定のベクトルであり、xi,MBはi番目のノードにおける学習用データのミニバッチを表す)
j∈N(i)を満たすインデックスjに対して、次式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算する第1双対変数更新部と、
【数60】

τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、
t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1を量子化して得られる量子化値Quantize(~yj|i t+1)をj番目のノードから受信し、量子化値Quantize(~yj|i t+1)を逆量子化することにより値Dequantize(Quantize(~yj|i t+1))を得て、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、
を含む変数最適化システム。
【請求項3】
請求項1または2に記載の変数最適化システムであって、
前記変数wiは、深層学習において最適化対象となる変数であり、
Jを前記深層学習におけるニューラルネットワークの層の数、qj(j=1, …, J)をj層目の次元数とし、
前記所定のベクトルηは、次式により与えられる
【数61】

(ただし、αは所定の正数、σj=1/sqrt(qj)、[σj, …, σj]Tの次元数はqj
ことを特徴とする変数最適化システム。
【請求項4】
請求項3に記載の変数最適化システムであって、
wi,j(j=1, …, J)をi番目のノードにおけるj層の変数、カウンタ0における変数wiの値wi 0をwi 0=[wi,1 0^T, …, wi,J 0^T]T(ただし、wi,j 0はカウンタ0での変数wi,jの値)とし、
前記値wi,j 0は、正規分布N(0, σj 2)に従う乱数を用いて与えられる
ことを特徴とする変数最適化システム。
【請求項5】
請求項1に記載の変数最適化システムであって、
前記第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=~yj|i t+1または~zi|j t+1=θ~yj|i t+1+(1-θ)~zi|j t(ただし、θは0<θ<1を満たす所定の数)である
ことを特徴とする変数最適化システム。
【請求項6】
請求項2に記載の変数最適化システムであって、
前記第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=Dequantize(Quantize(~yj|i t+1))または~zi|j t+1=θDequantize(Quantize(~yj|i t+1))+(1-θ)~zi|j t(ただし、θは0<θ<1を満たす所定の数)である
ことを特徴とする変数最適化システム。
【請求項7】
V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、
v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、
wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、
~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を変数wiと変数wjとが等しくなるという拘束条件を表すパラメータ行列とし、
i番目のノードは、
所定の式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、
j∈N(i)を満たすインデックスjに対して、所定の式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算する第1双対変数更新部と、
τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、
t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、
を含み、
前記変数更新部が計算に用いる所定の式は、前記変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式である
変数最適化システム。
【請求項8】
V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、
v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、
wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、
~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を変数wiと変数wjとが等しくなるという拘束条件を表すパラメータ行列とし、
i番目のノードは、
所定の式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、
j∈N(i)を満たすインデックスjに対して、所定の式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算し、前記値~yi|j t+1とカウンタtにおける双対変数~yi|jの値~yi|j tの差分を量子化して量子化差分~di|j t+1を得る第1双対変数更新部と、
τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、
t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1とカウンタtにおける双対変数~yj|iの値~yj|i tとの差分を量子化して得られる量子化差分~dj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、
を含み、
前記変数更新部が計算に用いる所定の式は、前記変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式である
変数最適化システム。
【請求項9】
請求項7または8に記載の変数最適化システムであって、
前記変数wiは、深層学習において最適化対象となる変数であり、
Jを前記深層学習におけるニューラルネットワークの層の数、qj(j=1, …, J)をj層目の次元数とし、
前記拘束の程度を示す項は、所定のベクトルηとΣj∈N(i)Ai|j T~zi|j tとのアダマール積であり、
前記所定のベクトルηは、前記次元数qj(j=1, …, J)を用いて定義される
ことを特徴とする変数最適化システム。
【請求項10】
請求項9に記載の変数最適化システムであって、
wi,j(j=1, …, J)をi番目のノードにおけるj層の変数、カウンタ0における変数wiの値wi 0をwi 0=[wi,1 0^T, …, wi,J 0^T]T(ただし、wi,j 0はカウンタ0での変数wi,jの値)とし、
前記値wi,j 0は、正規分布N(0, σj 2)(ただし、σj=1/sqrt(qj))に従う乱数を用いて与えられる
ことを特徴とする変数最適化システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習の対象となるモデルの変数を最適化する技術に関する。
【背景技術】
【0002】
近年、深層学習などの機械学習のフレームワークを用いてデータから意味のある情報を抽出することが、盛んに行われている。このとき、通常、得られたデータを一箇所に集約したうえで、モデルを学習する。
【0003】
しかし、学習に用いるデータを一箇所に集約できないこともある。(1)例えば医療に関するデータのように、学習に用いるデータのプライバシー性や機密性が高く、当該データを外に出すことができない場合は、データを一箇所に集約することができない。また、(2)例えば車やスマートホンに内在するデータのように、学習に用いるデータが蓄積される装置の数が多過ぎる場合、データ転送によりネットワークが圧迫されてしまう可能性もあり、この場合もデータを一箇所に集約することができない。
【0004】
そこで、現在、データを一箇所に集約できない場合においても学習が可能なエッジコンピューティングのような構想が検討されている(非特許文献1参照)。エッジコンピューティングでは、ネットワーク上に分散した計算機(ノードともいう)のそれぞれにデータが蓄積された状態で、モデルを学習することになる。
【0005】
以下、エッジコンピューティングでの学習について説明する。V個(Vは2以上の整数)のノードが接続したネットワークを考える。ここで、ノードを表すインデックスの集合をv={1, 2, …, V}、エッジを表すインデックスの集合をe={(i ,j)|i, j∈v、i番目のノードとj番目のノードは接続している}として、グラフG(v, e)でネットワークを表現することにする。なお、ネットワークの形状は任意でよい。つまり、どのノードとどのノードが接続するかは任意である。また、i番目のノードに接続しているノードのインデックスの集合をN(i)={j∈v|(i ,j)∈e}と表すことにする。
【0006】
図1は、7個のノードが接続したネットワークを示す図である。図1では、i番目のノードをNode #iとしている。
【0007】
最適化対象であるモデルは、すべてのノードで同じ構造、同じ次元であるものとする。i番目のノードで学習するモデルの変数をwi∈Rm(mは1以上の整数で、mはモデルの次元を表す)、i番目のノードに蓄積されている学習用データをxi∈Rk(kは1以上の整数で、kは学習用データの次元を表す)とする。また、i番目のノードのコスト関数をFi(wi; xi): Rk→R∪{∞}とする。ここで、コスト関数Fi(wi; xi)は変数wiに関して微分可能(differentiable)であるものとする。
【0008】
以下、深層学習を対象として、コスト関数について説明する。ここで、ニューラルネットワークの構造、コスト関数の定義はすべてのノードに共通であるとする。
【0009】
i番目のノードのニューラルネットワークはJ層ニューラルネットワークであるとすると、このニューラルネットワークは次式により表現できる。
【数1】

ここで、~Wi,j(j=1, …, J)はアフィン変換、a i,j(j=1, …, J)は非線形活性化関数である。
【0010】
アフィン変換~Wi,j(j=1, …, J)は、次式により表される。
【数2】

ここで、hi,j-1, hi,jは、それぞれj-1層の変数、j層の変数を表す。また、Wi,j, bi,jはj層の重み行列、j層のバイアスベクトルを表す。この重み行列Wi,jとバイアスベクトルbi,jが最適化対象であり、重み行列Wi,j(j=1, …, J)とバイアスベクトルbi,j(j=1, …, J)をまとめたものが変数wiとなる。
【0011】
また、非線形活性化関数としてReLUを用いると、非線形活性化関数ai,jは、次式により表される。
【数3】

次に、コスト関数Fi(wi; xi)の例について説明する。例えば画像や音声の分類問題を解く場合、コスト関数Fi(wi; xi)として、次式のクロスエントロピーを用いることが多い。
【数4】

ここで、si,bは教師データとなる分類ベクトルを表す。
【0012】
また、例えば回帰関数を求める場合、コスト関数Fi(wi; xi)として、次式の二次形式を用いることが多い。
【数5】

ここで、si,bは教師データとなる値を表す。
【0013】
コスト関数Fi(wi; xi)は変数wiに関して微分可能と仮定しているため、次式で表されるコスト関数Fi(wi; xi)の勾配を計算することができる。
【数6】

ここで、∇は微分演算子、wi tはカウンタtにおける変数wiの値、xi,MBはi番目のノードに蓄積されている学習用データの小集合(ミニバッチ)を表す。
【0014】
最適化されたモデルの変数wi(i=1, …, V)は、すべてのノードにある学習用データにできる限り適合していて、ノード間で変数に関するコンセンサスがとれた状態であるのが好ましい。つまり、変数wi(i=1, …, V)はコスト関数を小さくするように学習され、かつ、変数wi(i=1, …, V)は互いにほぼ一致するものになるように学習される。したがって、変数wi(i=1, …, V)に対して解くべき最適化問題は次式のようになる。
【数7】

ここで、パラメータ行列Ai|j∈Rm×mは、次式で与えられる。
【数8】

以下、上記最適化問題を解く従来技術について説明する。ここでは、非特許文献2のゴシップSGD(Gossip SGD(Statistical gradient decent))と非特許文献3の連合学習(Federated learning)について説明する。ゴシップSGD、連合学習はいずれも平均化合意形成(Averaging consensus)に基づく方法である。
【0015】
(ゴシップSGD)
図2は、ゴシップSGDのアルゴリズムを示す図である。図2において、各ノードにおいて変数を更新する規則は、次式で与えられている。
【数9】

ここで、μは所定の正数である。
【0016】
この更新規則は、通常の深層学習と同じものであり、勾配∇Fiにステップサイズ1/μ(>0)をかけて得られる勾配を減算することで変数を逐次更新するものとなっている。
【0017】
ただし、図2からわかるように、ランダムなタイミングで、i番目のノードとj番目のノードの間で変数を送受信し、変数wiと変数wjの平均をとることで、変数wiを更新する。ここで、Transmitj→i(wj)はj番目のノードからi番目のノードに変数wjの値を送信する関数、Average(wi, wj)は変数wiの値と変数wjの値の平均をとる関数である。
【0018】
(連合学習)
図3は、連合学習のアルゴリズムを示す図である。連合学習は、平均化合意形成に基づく変数更新を用いる点においてゴシップSGDと同様であるが、ネットワーク構成が図1のようなP2Pネットワークでなく、図4のようなサーバ・クライアントネットワークである点において異なる。図3からわかるように、ランダムなタイミングで、サーバがいくつかのクライアントに変数の値を送信、当該値を用いてクライアントにおいて変数更新を行う(Step 1)。その後、ランダムなタイミングで、いくつかのクライアントがサーバに変数の値を送信、サーバがクライアントから受信した変数の値の平均をとることで変数を更新する(Step 2)。
【先行技術文献】
【非特許文献】
【0019】
【非特許文献1】株式会社NTTデータ, “IoT時代に注目される「エッジコンピューティング」, ”[online], [令和2年1月28日検索], インターネット <URL: https://www.nttdata.com/jp/ja/data-insight/2018/1122/>
【非特許文献2】Michael Blot, David Picard, Matthieu Cord, Nicolas Thome, "Gossip training for deep learning," arXiv preprint arXiv:1611.09726, 2016.
【非特許文献3】H. Brendan McMahan, Eider Moore, Daniel Ramage, Seth Hampson, Blaise Aguera y Arcas, "Communication-Efficient Learning of Deep Networks from Decentralized Data," arXiv preprint arXiv:1602.05629, 2016.
【発明の概要】
【発明が解決しようとする課題】
【0020】
ゴシップSGD、連合学習のいずれについても、アルゴリズムの構成は、非常に単純であり、実装もしやすいという長所がある。しかし、ゴシップSGDでは、各ノードに蓄積された学習用データの統計的性質に偏りがある場合、すべてのノードに蓄積された学習用データに適合するような大域的な変数の学習ができないという問題がある。一方、連合学習では、変数をサーバ側で基本的に管理する構成となっているため、ノード間で生じる変数の差はゴシップSGDよりは小さくなる。しかし、各ノードに蓄積された学習用データの統計的性質に偏りがある場合、ゴシップSGDと同様、連合学習でも、すべてのノードに蓄積された学習用データに適合するような大域的な変数の学習ができないという問題がある。
【0021】
そこで本発明では、学習用データが複数のノードに分散して蓄積されている場合であっても、当該学習用データに適合するようにモデルの変数を最適化できる技術を提供することを目的とする。
【課題を解決するための手段】
【0022】
本発明の一態様は、V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を次式で定義されるパラメータ行列とし、
【数10】

i番目のノードは、次式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、
【数11】

(ただし、μ, ηは所定のベクトルであり、xi,MBはi番目のノードにおける学習用データのミニバッチを表す)、j∈N(i)を満たすインデックスjに対して、次式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算する第1双対変数更新部と、
【数12】

τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、を含む。
【0023】
本発明の一態様は、V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を次式で定義されるパラメータ行列とし、
【数13】

i番目のノードは、次式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、
【数14】

(ただし、μ, ηは所定のベクトルであり、xi,MBはi番目のノードにおける学習用データのミニバッチを表す)、j∈N(i)を満たすインデックスjに対して、次式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算する第1双対変数更新部と、
【数15】

τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1を量子化して得られる量子化値Quantize(~yj|i t+1)をj番目のノードから受信し、量子化値Quantize(~yj|i t+1)を逆量子化することにより値Dequantize(Quantize(~yj|i t+1))を得て、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、を含む。
【0024】
本発明の一態様は、V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を変数wiと変数wjとが等しくなるという拘束条件を表すパラメータ行列とし、i番目のノードは、所定の式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、j∈N(i)を満たすインデックスjに対して、所定の式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算する第1双対変数更新部と、τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、を含み、前記変数更新部が計算に用いる所定の式は、前記変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式である。
【0025】
本発明の一態様は、V個(Vは2以上の整数)のノードで構成され、各ノードに蓄積された学習用データを用いてモデルの変数を最適化する変数最適化システムであって、v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とし、wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とし、~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を変数wiと変数wjとが等しくなるという拘束条件を表すパラメータ行列とし、i番目のノードは、所定の式により、カウンタt+1における変数wiの値wi t+1を計算する変数更新部と、j∈N(i)を満たすインデックスjに対して、所定の式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算し、前記値~yi|j t+1とカウンタtにおける双対変数~yi|jの値~yi|j tの差分を量子化して量子化差分~di|j t+1を得る第1双対変数更新部と、τ’をi番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1とカウンタtにおける双対変数~yj|iの値~yj|i tとの差分を量子化して得られる量子化差分~dj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する第2双対変数更新部と、を含み、前記変数更新部が計算に用いる所定の式は、前記変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式である。
【発明の効果】
【0026】
本発明によれば、学習用データが複数のノードに分散して蓄積されている場合であっても、当該学習用データに適合するようにモデルの変数を最適化することが可能となる。
【図面の簡単な説明】
【0027】
図1】V個(V=7)のノードが接続したネットワークの一例を示す図である。
図2】ゴシップSGDのアルゴリズムを示す図である。
図3】連合学習のアルゴリズムを示す図である。
図4】連合学習におけるネットワークの一例を示す図である。
図5】本願の最適化アルゴリズムを示す図である。
図6】本願の最適化アルゴリズムを示す図である。
図7】本願の最適化アルゴリズムを示す図である。
図8】本願の最適化アルゴリズムを示す図である。
図9】本願の最適化アルゴリズムを示す図である。
図10】本願の最適化アルゴリズムを示す図である。
図11】本願の最適化アルゴリズムを示す図である。
図12】本願の最適化アルゴリズムを示す図である。
図13】変数最適化システム10の構成を示すブロック図である。
図14】ノード100の構成を示すブロック図である。
図15】ノード100の動作を示すフローチャートである。
図16】変数最適化部120の構成を示すブロック図である。
図17】変数最適化部120の動作を示すフローチャートである。
図18】本発明の実施形態における各装置を実現するコンピュータの機能構成の一例を示す図である。
【発明を実施するための形態】
【0028】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0029】
各実施形態の説明に先立って、この明細書における表記方法について説明する。
【0030】
^(キャレット)は上付き添字を表す。例えば、xy^zはyzがxに対する上付き添字であり、xy^zはyzがxに対する下付き添字であることを表す。また、_(アンダースコア)は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
【0031】
また、ある文字xに対する^xや~xのような上付き添え字の”^”や”~”は、本来”x”の真上に記載されるべきであるが、明細書の記載表記の制約上、^xや~xと記載しているものである。
【0032】
<技術的背景>
《1:最適化問題の導出》
各ノードに蓄積された学習用データの統計的性質に偏りがある場合であっても、学習用データを一箇所に集約することなく、次式の最適化問題の解を得ることができるアルゴリズム、すなわち、すべてのノードに蓄積された学習用データに適合するように変数wi(i=1, …, V)を最適化することができるアルゴリズムを構築することが目標である。
【数16】

ここで、Ai|jは、次式で与えられるパラメータ行列である。
【数17】

式(b1)はi番目のノードの変数とj番目のノードの変数が一致するという拘束条件のもとで、コスト関数ΣiFi(wi; xi)の値を小さくするような変数wi(i=1, …, V)の値を求めるという問題を表す。
【0033】
なお、パラメータ行列Ai|j∈Rm×mは、式(b2)の行列に限らず、変数wiと変数wjが一致することを要請する任意の行列とすることができる。しかし、式(b2)の行列を用いるのが簡単であり、かつ、後述する変数更新則の計算量も軽いものとなる。
【0034】
また、深層学習を対象とする場合、コスト関数Fi(wi; xi)は非凸関数になり、式(b1)の最適化問題は非凸最適化問題となるため、式(b1)の最適化問題を解くことは一般に困難になる。そこで、式(b1)を局所二次関数で近似することにより、凸最適化問題に帰着させることを考える。ここで、局所二次関数の最適化問題は、深層学習の変数更新則でよく用いられるSGD(統計的勾配法)や加速勾配法と関連があるものである。
【0035】
コスト関数Fi(wi; xi)に対して、局所二次関数Gi(wi; xi)を次式により定義する。
【数18】

ここで、μ∈Rmは所定のベクトルである。また、式(b3)の右辺の第3項に出現する記号(〇の中に・がある記号)はアダマール積(要素積)を表す。
【0036】
このとき、深層学習での変数更新則は、次式のようになる。
【数19】

例えば、ベクトルμをμ=[M, …, M]T∈Rmとすると、式(b4)は次式のようになり、ステップサイズ1/MとしたときのVanilla SGDに相当する。
【数20】

また、式(b6)のような二次勾配を用いてベクトルμ∈Rmを設計すると、式(b4)はRMSpropに相当する。
【数21】

ここで、変数wi(i=1, …, V)に対して変数wをw=[w1 T, …, wV T]Tと、学習用データのミニバッチxi,MB(i=1, …, V)に対して学習用データのミニバッチxMBをxMB=[x1,MB T, …, xV,MB T]Tとすると、コスト関数ΣiFi(wi; xi)を近似する関数G(w; xMB)は、次式のようになる。
【数22】

したがって、式(b1)の最適化問題は、次式の最適化問題に帰着する。
【数23】

ここで、Aは次式の拘束パラメータ行列を表す。
【数24】

拘束条件が付いた式(b8)の最適化問題を解くために、変数wiやwjと同じ次元を有する双対変数νi,j∈Rnと双対変数ν=[ν1,2 T, …, ν1,V T, ν2,1 T, …, ν2,V T, …, νV,1 T, …, νV,V-1 T]Tを導入する。ここで、双対変数νi,jは変数{wi, wj}の拘束条件を調整するため用いられる変数である。
【0037】
そして、式(b8)の最適化問題を解く代わりに、次式で表される、当該問題の双対問題を解くことにする。
【数25】

ここで、G*は関数Gの凸共役関数であり、次式により与えられる。
【数26】

式(b9)の最適化問題を解くことにより、式(b8)の最適化問題を解くことができる。しかし、式(b9)の最適化問題を解く場合、双対変数νi,j(i≠j)の更新が必要となる。しかし、この更新は関連する変数{wi, wj}を同期して更新することに相当するため、ネットワーク上に分散したノードの非同期処理として式(b9)の最適化問題を解くことができない。そこで、双対変数νi,j(i≠j)を双方向化することにより、ネットワーク上に分散したノードの非同期処理により解くことができる式(b9)の最適化問題と等価な問題を導出することを考える。
【0038】
ここで、双対変数の双方向化について説明する。これは、変数更新則を分散非同期にするために導入するものである。双対変数の双方向化では、無向エッジ(i,j)に対応する双対変数νi,j∈Rmに対して、2つの有向エッジi->jとj->iに対応する双対変数{λi|j, λj|i}∈Rmを定義する。また、双対変数νに対応する双対変数λ=[λ1|2 T, …, λ1|V T, λ2|1 T, …, λ2|V T, …, λV|1 T, …, λV|V-1 T]Tも併せて定義する。双対変数νi,jを用いる場合、複数のノードを同期して変数を更新しなければならないが、双対変数{λi|j, λj|i}を用いる場合は、無向エッジ(i,j)で接続されるi番目のノードとj番目のノードの変数を必ずしも同期して更新する必要がない。ただし、双対変数{λi|j, λj|i}は、一つの双対変数νi,jを分離して得られたものであるから、最終的には一致する必要がある。つまり、λi|jj|iとなる必要がある。
【0039】
式(b9)の最適化問題と等価な問題を導出する際、λi|jj|iという条件を満たすためには、単に双対変数νを双方向化した双対変数λに変えるだけでは不十分である。そこで、λi|jj|iという条件をコストの形で式(b9)に付加することとする。すると、式(b9)の最適化問題と等価な問題は、次式により与えられることになる。
【数27】

ここで、ξ(I-P)は次式で定義される指示関数である。
【数28】

なお、Pは、以下のように双対変数を入れ替える行列であり、パーミュテーション行列と呼ばれる。
【数29】

パーミュテーション行列Pの要素はすべて0または1であり、P2=Iを満たす。そして、パーミュテーション行列Pを双対変数λにかけることは、以下のように双対変数λi|j, λj|iを入れ替える処理に相当する。
【数30】

つまり、指示関数ξ(I-P)は、双対変数{λi|j, λj|i}が一致する場合は0となり、それ以外の場合は+∞となる関数である。
【0040】
ここでは、最適化問題を定式化するために、双対変数を導入した。双対変数自体は、データの統計的性質の影響を受ける場合もあるものの、学習用データやモデルの変数と比較すると、より情報の秘匿性が高いという性質がある。当該性質により、双対変数を用いると、例えば、個人データを強固に保護しつつ最適化問題を解くことが可能となる。
【0041】
《2:変数更新則の導出》
ここでは、式(b11)の最適化問題を解くための変数更新則を導出する。式(b11)を満たす双対変数λは、コスト関数G*(ATλ)+ξ(I-P)(λ)の劣微分が0を含むときに得られる。
【数31】

ここで、T1, T2は、次式の作用素である。
【数32】

つまり、T1, T2は、式(b11)に含まれる2つの項をそれぞれ劣微分した作用素である。
【0042】
以下、式(b13)を変形して、再帰的な変数更新則を導出することを考える。その前にいくつかの作用素を定義する。計量を線形一般化したリゾルヴェント作用素Ri(i=1,2)(以下、線形一般化リゾルヴェント作用素という)を次式により定義する。
【数33】

ここで、Idは同一作用素、・-1は逆作用素を表す。また、ηは計量を線形一般化するための係数を表すベクトルである。
【0043】
同様に、計量を線形一般化したケーリー作用素Ci(i=1,2)(以下、線形一般化ケーリー作用素という)を次式により定義する。
【数34】

なお、ηが定数である場合、線形一般化リゾルヴェント作用素、線形一般化ケーリー作用素は、通常のリゾルヴェント作用素、ケーリー作用素となる。
【0044】
線形一般化ケーリー作用素Ciは、以下のように変形できる。
【数35】

ここで、λ∈R1(z)を満たす、双対変数λと同じ次元の双対変数z=[z1|2 T, …, z1|V T, z2|1 T, …, z2|V T, …, zV|1 T, …, zV|V-1 T]Tを導入し、式(b13)を以下のように変形していく。
【数36】

したがって、次式で表される、2つの単調作用素分解形が得られる。
【数37】

ここで、θは0<θ<1を満たす所定の数である。なお、θ=1/2とすることが多い。
【0045】
式(b18)で表される単調作用素分解を線形一般化Peaceman-Rachford(P-R)型単調作用素分解、式(b19)で表される単調作用素分解を線形一般化Douglas-Rachford(D-R)型単調作用素分解と呼ぶことにする。
【0046】
双対変数zと同じ次元の双対変数y=[y1|2 T, …, y1|V T, y2|1 T, …, y2|V T, …, yV|1 T, …, yV|V-1 T]Tを用いると、式(b18)、式(b19)の再帰的な変数更新則から、以下の式が得られる。
【数38】

さらに、式(b20)の更新則から、以下の式が得られる。
【数39】

ここで、双対変数~y, ~zは、それぞれ次式のように双対変数y, zに対して計量が線形的に変換された量を表す。
【数40】

ここで、右辺に出現する記号は、要素ごとの割り算を表す。
【0047】
式(b3)を用いると、式(b22)は以下のようになる。
【数41】

ここで、diag(μ)はμを対角成分とする対角行列を表す。
【0048】
また、参考非特許文献1にあるように、C2=Pであるので、式(b21)は以下のようになる。
【数42】

ここで、~y=[~y1|2 T, …, ~y1|V T, ~y2|1 T, …, ~y2|V T, …, ~yV|1 T, …, ~yV|V-1 T]T, ~z=[~z1|2 T, …, ~z1|V T, ~z2|1 T, …, ~z2|V T, …, ~zV|1 T, …, ~zV|V-1 T]Tである。
【0049】
(参考非特許文献1:Thomas William Sherson , Richard Heusdens , W. Bastiaan Kleijn, "Derivation and Analysis of the Primal-Dual Method of Multipliers Based on Monotone Operator Theory, " IEEE Trans. Signal and Information Processing over Networks 5(2), pp.334-347, 2019.)
以上まとめると、式(b24)、式(b23)、式(b25)が求めるべき更新則である。そこで、式(b24)、式(b23)、式(b25)をノードごとの処理に分解すると、次式が得られる。
【数43】

ここで、μ,η∈Rmはそれぞれ所定のベクトル、θは0<θ<1を満たす所定の数であり、パラメータ行列Ai|jは式(b2)により与えられる。なお、|N(i)|はi番目のノードに接続されているノードの数を表す。
【0050】
式(b26)、式(b27)、式(b28)を用いると、図5の最適化アルゴリズムが得られる。図5中のPDMM SGD, ADMM SGDは、それぞれ線形一般化Peaceman-Rachford型単調作用素分解に基づく方法、線形一般化Douglas-Rachford型単調作用素分解に基づく方法に対応する。また、図5中のStep1は各ノードでの変数更新処理、Step2はノード間での変数交換処理に対応する。なお、Step1の処理の後、必ずしもStep2の処理を実行する必要はなく、例えば、Step1の処理を5~10回実行した後に、Step2の処理を1回だけ実行するのでもよい。図5の最適化アルゴリズムにおける変数wiの更新は、ゴシップSGD、連合学習のそれと異なり、勾配降下に関する項∇Fi(wi t; xi,MB)に加えて、合意形成の拘束(つまり、変数wiと変数wjとが等しくなるという拘束条件)に関する項ΣjAi|j T~zi|j Tも用いる。このため、複数のノードに分散して蓄積されている学習用データに適合するように変数を最適化することが可能となる。
【0051】
また、双対変数~yj|iの更新差分を用いると、図5の最適化アルゴリズムと等価なアルゴリズムとして図6の最適化アルゴリズムが得られる。
【0052】
《3:安定収束のためのコスト関数の近似関数の設計》
これまでの議論では、コスト関数ΣiFi(wi; xi)を近似する関数として、式(b7)の関数を用いた。しかし、V個のノードにおける変数の乖離が大きくなる(つまり、V個の変数の差分のノルムが大きくなる)と、収束が不安定になることがある。そこで、ここでは、安定収束を実現するのためのコスト関数を近似する関数について説明する。
【0053】
安定収束させるために、変数の乖離度を強制的に小さくすることを考える。そのため、式(b7)の関数の代わりに次式の関数を用いることにする。
【数44】

式(b29)の関数は、Fi(wi; xi)に変数が互いに近接するという正則化項を加えることで得られるものである。なお、γ(>0)は予め決める必要があるパラメータである。
【0054】
式(b29)の関数について、《2:変数更新則の導出》と同様の議論を行うことで、以下の変数更新則が得られる。
【数45】

式(b30)、式(b31)、式(b32)は、それぞれ式(b26)、式(b27)、式(b28)に対応するものである。
【0055】
コスト関数ΣiFi(wi; xi)を近似する関数として式(b29)の関数を用いた最適化アルゴリズムを図7図8に示す。図7図8の最適化アルゴリズムは、それぞれ図5図6の最適化アルゴリズムに対応するものである。図7図8の最適化アルゴリズムでは、双対変数~yj|iだけでなく、変数wjの値や更新差分も送信対象となっている点において、図5図6の最適化アルゴリズムと大きく異なる。
【0056】
《4:安定収束のための計量設計》
ここでは、安定収束のための変数の計量調整について説明する。変数の計量調整は、線形一般化リゾルヴェント作用素Riや線形一般化ケーリー作用素Ciの係数であるベクトルηにより実現される。
【0057】
変数wiの更新式である式(b26)に基づいてベクトルηの意義について考える。式(b26)において、ベクトルηは合意形成の拘束に関する項ΣjAi|j T~zi|j Tの係数となっていることから、ベクトルηは合意形成の拘束の強さを調整するものであることがわかる。
【0058】
深層学習の場合、変数wiはニューラルネットワークのすべての層の重み行列とバイアスベクトルをまとめた変数である。しかし、層の次元数は層ごとに異なるため、各層の変数(つまり、重み行列とバイアスベクトル)に加わるノイズに対する感度も異なる。実際、層の次元数と当該層の変数に加わるノイズに対する感度との相関性を考慮して、ニューラルネットワークの各層の初期値を、層の次元数に基づいた標準偏差を持つ乱数により設定することもよく行われる。例えば、i番目のノードのj層が全結合層である場合、重み行列Wi,jの第(a,b)要素Wi,j,a,bを平均0、標準偏差1/sqrt(qj)(ただし、qjはj層の次元数)のガウス乱数で初期化する。つまり、Wi,j,a,b~N(0, 1/sqrt(qj))とする。
【0059】
j層の変数に加わるノイズに対する感度がsqrt(qj)で決まると仮定し、その逆数1/sqrt(qj)に比例する値を用いてベクトルηを定義することにすれば、各層の次元数に応じたノード間の変数の誤差を制御することができる。
【0060】
i番目のノードのベクトルηをi番目のノードの層ごとに分割し、η=[ηi,1 T, …, ηi,J T]Tとすると、ベクトルηi,jの次元がqjとなる。また、m=Σj=1 Jqjとなる。そして、ベクトルηi,jを次式により定義する。
【数46】

ここで、αは所定の正数であり、σj=1/sqrt(qj)とする。
【0061】
つまり、i番目のノードにおけるj層に関するベクトルηi,jをσj=1/sqrt(qj)に比例するように設定する。なお、i番目のノードに接続しているノードの数|N(i)|が増えると、合意形成に関する拘束が強くなるため、|N(i)|で正規化することとした。σj=1/sqrt(qj)より、σj(j=1, …, J)は変数の特性により定まる数であるといえる。
【0062】
《5:ノード間で交換する情報の圧縮》
ここでは、ノード間で交換する情報の圧縮について説明する。そのために、図5図8において送信対象となっている双対変数~yj|iの値や更新差分、変数wjの値や更新差分を量子化して送信することを考える。例えば、j番目のノードからi番目のノードに送信される双対変数~yj|iの更新差分を量子化して得られる量子化差分~dj|iは次式により計算される。
【数47】

ここで、Quantizeは量子化演算を表す。量子化演算として、例えば、1~32bit程度の範囲の任意の量子化数を用いることができる。なお、Quantizeの値域は適応的に変更するようにしてもよいし、固定してもよい。深層学習の場合、Quantizeの値域は更新回数や層ごとに適応的に変更するのが好ましい。
【0063】
図9図10図11図12は、それぞれ図5図6図7図8の最適化アルゴリズムにおける送信対象を量子化して送信するようにした最適化アルゴリズムである。
【0064】
<第1実施形態>
以下、図13図15を参照して変数最適化システム10について説明する。図13は、変数最適化システム10の構成を示すブロック図である。変数最適化システム10は、V個(Vは2以上の整数)のノードで構成される。各ノードは、ネットワーク800に接続している。ネットワーク800は、例えば、インターネットでよい。ただし、各ノードについて、当該ノードと接続し通信するノードがあらかじめ定まっているものとする。また、各ノードには、モデルの変数の最適化に用いる学習用データが蓄積されている。
【0065】
図14は、ノード100の構成を示すブロック図である。図15は、ノード100の動作を示すフローチャートである。図14に示すようにノード100は、変数最適化部120と、送受信部180と、記録部190を含む。送受信部180は、他のノードと交換する必要があるデータを適宜送受信する構成部である。記録部190は、ノード100の処理に必要な情報を適宜記録する構成部である。記録部190には、例えば、学習用データが記録されている。
【0066】
v={1, …, V}をノードのインデックスの集合、i∈v、τ={0, 1, …, T-1}(ただし、Tは1以上の整数)をカウンタtのとり得る値を表す集合とする。また、wiをi番目のノードにおけるモデルの変数、xiをi番目のノードにおける学習用データ、Fi(wi; xi)をi番目のノードにおけるコスト関数、N(i)をi番目のノードが接続するノードのインデックスの集合とする。さらに、~yi|j, ~zi|j(j∈N(i))をそれぞれj番目のノードに対応するi番目のノードにおける双対変数、Ai|j(j∈N(i))を次式で定義されるパラメータ行列とする。
【数48】

図15に従いi番目のノード100の動作について説明する。
【0067】
S120において、変数最適化部120は、学習用データを用いて、所定の手順により最適化対象となる変数wi∈Rm(mは1以上の整数)を最適化し、その結果を出力値として出力する。その際、変数最適化部120は、送受信部180を用いて、j番目のノード(ただし、jはj∈N(i)を満たす)から所定のデータを受信し、変数wiを最適化する。なお、j番目のノードからi番目のノードが受信するデータについては後述する。
【0068】
以下、図16図17を参照して変数最適化部120について説明する。図16は、変数最適化部120の構成を示すブロック図である。図17は、変数最適化部120の動作を示すフローチャートである。図16に示すように変数最適化部120は、初期化部121と、変数更新部1221と、第1双対変数更新部1222と、第2双対変数更新部1223と、カウンタ更新部123と、終了条件判定部124を含む。
【0069】
図17に従いi番目のノードの変数最適化部120の動作について説明する。
【0070】
S121において、初期化部121は、学習用データを用いて、変数wiの最適化に際して必要となる初期化処理を行う。以下、初期化処理の内容を説明する。初期化部121は、カウンタtを初期化する。初期化部121は、例えば、t=0とすることにより、カウンタtを初期化する。また、初期化部121は、変数wi、双対変数~yi|j(j∈N(i))、双対変数~zi|j(j∈N(i))を初期化する。初期化部121は、例えば、乱数を用いて、カウンタ0における変数wiの値wi 0、カウンタ0における双対変数~yi|jの値~yi|j 0、カウンタ0における双対変数~zi|jの値~zi|j 0を設定する。また、初期化部121は、学習用データを用いて、学習用データのミニバッチxi,MBを生成する。また、初期化部121は、i番目のノードが接続するノードのいずれかからデータを受信するタイミングを表す集合τの部分集合τ’を生成する。集合τ’は集合τの任意の部分集合であればよく、集合τ’を、例えば、t1, t2∈τ’を満たすカウンタt1, t2に対して|t1-t2|>1を満たすような集合τの部分集合としてもよいし、例えば、τ’=τとしてもよい。
【0071】
S1221において、変数更新部1221は、次式により、カウンタt+1における変数wiの値wi t+1を計算する。
【数49】

(ただし、μ, ηは所定のベクトルである。)
このベクトルμ, ηは、例えば、S121において初期化部121が生成しておくのでよい。
【0072】
S1222において、第1双対変数更新部1222は、j∈N(i)を満たすインデックスjに対して、次式により、カウンタt+1における双対変数~yi|jの値~yi|j t+1を計算する。
【数50】

S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=~yj|i t+1または~zi|j t+1=θ~yj|i t+1+(1-θ)~zi|j t(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0073】
S123において、カウンタ更新部123は、カウンタtを1だけインクリメントする。具体的には、t←t+1とする。
【0074】
S124において、終了条件判定部124は、カウンタtが所定の更新回数Tに達した場合(つまり、t=Tとなり、終了条件が満たされた場合)は、そのときの変数wiの値wi Tを出力値として、処理を終了する。それ以外の場合、S1221の処理に戻る。つまり、変数最適化部120は、所定の終了条件を満たす場合、そのときの変数wiの値を出力し、それ以外の場合、S1221~S124の計算を繰り返す。
【0075】
(変形例1)
上記説明では、図5のアルゴリズムに従って動作する変数最適化システム10について説明した。ここでは、図9のアルゴリズムに従って動作する変数最適化システム10について説明する。第1実施形態の変数最適化システム10と当該変形例の変数最適化システム10とは、ノード100の動作のうち、S1223における処理のみ異なる。
【0076】
そこで、以下では、図17に従いi番目のノードの変数最適化部120の動作のうち、S1223での処理について説明する。
【0077】
S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1を量子化して得られる量子化値Quantize(~yj|i t+1)をj番目のノードから受信し、量子化値Quantize(~yj|i t+1)を逆量子化することにより値Dequantize(Quantize(~yj|i t+1))を得て、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=Dequantize(Quantize(~yj|i t+1))または~zi|j t+1=θDequantize(Quantize(~yj|i t+1))+(1-θ)~zi|j t(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0078】
(変形例2)
上記説明では、パラメータ行列Ai|j(j∈N(i))を<技術的背景>で説明した式(b2)の行列としたが、より一般に、変数wiと変数wjとが等しくなるという拘束条件を表す行列としてもよい。
【0079】
(変形例3)
また、上記説明では、変数更新部1221が計算に用いる式を<技術的背景>で説明した式(b26)としたが、より一般に、i番目のノードにおける学習用データのミニバッチxi,MBに対するコスト関数Fi(wi t; xi)の勾配降下∇Fi(wi t; xi,MB)と、j∈N(i)を満たすインデックスjに対するパラメータ行列Ai|jとカウンタtにおける双対変数~zi|jの値~zi|j tとを用いて定義される上記拘束条件を満たすように作用する拘束の程度を示す項とを含む式としてもよい。つまり、変数更新部1221が計算に用いる式は、変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式としてもよい。
【0080】
本発明の実施形態によれば、学習用データが複数のノードに分散して蓄積されている場合であっても、当該学習用データに適合するようにモデルの変数を最適化することが可能となる。
【0081】
<第2実施形態>
第1実施形態では、図5のアルゴリズムに従って動作する変数最適化システム10について説明した。ここでは、図6のアルゴリズムに従って動作する変数最適化システム10について説明する。第1実施形態の変数最適化システム10と第2実施形態の変数最適化システム10とは、ノード100の動作のうち、S1223における処理のみ異なる。
【0082】
そこで、以下では、図17に従いi番目のノードの変数最適化部120の動作のうち、S1223での処理について説明する。
【0083】
S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1とカウンタtにおける双対変数~yj|iの値~yj|i tとの差分Δ~yj|i t+1をj番目のノードから受信し、Δ~zi|j t+1=Δ~yj|i t+1として、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=~zi|j t+Δ~zi|j t+1または~zi|j t+1=~zi|j t+θΔ~zi|j t+1(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0084】
(変形例1)
上記説明では、図6のアルゴリズムに従って動作する変数最適化システム10について説明した。ここでは、図10のアルゴリズムに従って動作する変数最適化システム10について説明する。第2実施形態の変数最適化システム10と当該変形例の変数最適化システム10とは、ノード100の動作のうち、S1223における処理のみ異なる。
【0085】
そこで、以下では、図17に従いi番目のノードの変数最適化部120の動作のうち、S1223での処理について説明する。
【0086】
S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における双対変数~yj|iの値~yj|i t+1とカウンタtにおける双対変数~yj|iの値~yj|i tとの差分Δ~yj|i t+1を量子化して得られる量子化差分Quantize(Δ~yj|i t+1)をj番目のノードから受信し、量子化差分Quantize(Δ~yj|i t+1)を逆量子化することにより値Dequantize(Quantize(Δ~yj|i t+1))を得て、Δ~zi|j t+1=Dequantize(Quantize(Δ~yj|i t+1))として、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=~zi|j t+Δ~zi|j t+1または~zi|j t+1=~zi|j t+θΔ~zi|j t+1(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0087】
(変形例2)
第1実施形態で説明したように、パラメータ行列Ai|j(j∈N(i))を、より一般に、変数wiと変数wjとが等しくなるという拘束条件を表す行列としてもよい。
【0088】
(変形例3)
また、第1実施形態で説明したように、変数更新部1221が計算に用いる式を、より一般に、i番目のノードにおける学習用データのミニバッチxi,MBに対するコスト関数Fi(wi t; xi)の勾配降下∇Fi(wi t; xi,MB)と、j∈N(i)を満たすインデックスjに対するパラメータ行列Ai|jとカウンタtにおける双対変数~zi|jの値~zi|j tとを用いて定義される上記拘束条件を満たすように作用する拘束の程度を示す項とを含む式としてもよい。つまり、変数更新部1221が計算に用いる式は、変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式としてもよい。
【0089】
本発明の実施形態によれば、学習用データが複数のノードに分散して蓄積されている場合であっても、当該学習用データに適合するようにモデルの変数を最適化することが可能となる。
【0090】
<第3実施形態>
第1実施形態では、図5のアルゴリズムに従って動作する変数最適化システム10について説明した。ここでは、図7のアルゴリズムに従って動作する変数最適化システム10について説明する。第1実施形態の変数最適化システム10と第3実施形態の変数最適化システム10とは、ノード100の動作のうち、S1221とS1223における処理のみ異なる。
【0091】
そこで、以下では、図17に従いi番目のノードの変数最適化部120の動作のうち、S1221とS1223での処理について説明する。
【0092】
S1221において、変数更新部1221は、次式により、カウンタt+1における変数wiの値wi t+1を計算する。
【数51】

(ただし、μ, ηは所定のベクトル、γは所定の定数である。)
このベクトルμ, η、定数γは、例えば、S121において初期化部121が生成しておくのでよい。
【0093】
S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における変数wjの値wj t+1とカウンタt+1における双対変数~yj|iの値~yj|i t+1をj番目のノードから受信し、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=~yj|i t+1または~zi|j t+1=θ~yj|i t+1+(1-θ)~zi|j t(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0094】
(変形例1)
上記説明では、図7のアルゴリズムに従って動作する変数最適化システム10について説明した。ここでは、図11のアルゴリズムに従って動作する変数最適化システム10について説明する。第3実施形態の変数最適化システム10と当該変形例の変数最適化システム10とは、ノード100の動作のうち、S1221とS1223における処理のみ異なる。
【0095】
そこで、以下では、図17に従いi番目のノードの変数最適化部120の動作のうち、S1221とS1223での処理について説明する。
【0096】
S1221において、変数更新部1221は、次式により、カウンタt+1における変数wiの値wi t+1を計算する。
【数52】

(ただし、μ, ηは所定のベクトル、γは所定の定数である。)
このベクトルμ, η、定数γは、例えば、S121において初期化部121が生成しておくのでよい。
【0097】
S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における変数wjの値wj t+1を量子化して得られる量子化値Quantize(wj t+1)とカウンタt+1における双対変数~yj|iの値~yj|i t+1を量子化して得られる量子化値Quantize(~yj|i t+1)をj番目のノードから受信し、量子化値Quantize(wj t+1)と量子化値Quantize(~yj|i t+1)を逆量子化することにより値Dequantize(Quantize(wj t+1))と値Dequantize(Quantize(~yj|i t+1))を得て、ui|j t+1=Dequantize(Quantize(wj t+1))として、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=Dequantize(Quantize(~yj|i t+1))または~zi|j t+1=θDequantize(Quantize(~yj|i t+1))+(1-θ)~zi|j t(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0098】
(変形例2)
第1実施形態で説明したように、パラメータ行列Ai|j(j∈N(i))を、より一般に、変数wiと変数wjとが等しくなるという拘束条件を表す行列としてもよい。
【0099】
(変形例3)
また、第1実施形態で説明したように、変数更新部1221が計算に用いる式を、より一般に、i番目のノードにおける学習用データのミニバッチxi,MBに対するコスト関数Fi(wi t; xi)の勾配降下∇Fi(wi t; xi,MB)と、j∈N(i)を満たすインデックスjに対するパラメータ行列Ai|jとカウンタtにおける双対変数~zi|jの値~zi|j tとを用いて定義される上記拘束条件を満たすように作用する拘束の程度を示す項とを含む式としてもよい。つまり、変数更新部1221が計算に用いる式は、変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式としてもよい。
【0100】
本発明の実施形態によれば、学習用データが複数のノードに分散して蓄積されている場合であっても、当該学習用データに適合するようにモデルの変数を最適化することが可能となる。
【0101】
<第4実施形態>
第1実施形態では、図5のアルゴリズムに従って動作する変数最適化システム10について説明した。ここでは、図8のアルゴリズムに従って動作する変数最適化システム10について説明する。第1実施形態の変数最適化システム10と第4実施形態の変数最適化システム10とは、ノード100の動作のうち、S1221とS1223における処理のみ異なる。
【0102】
そこで、以下では、図17に従いi番目のノードの変数最適化部120の動作のうち、S1221とS1223での処理について説明する。
【0103】
S1221において、変数更新部1221は、次式により、カウンタt+1における変数wiの値wi t+1を計算する。
【数53】

(ただし、μ, ηは所定のベクトル、γは所定の定数である。)
このベクトルμ, η、定数γは、例えば、S121において初期化部121が生成しておくのでよい。
【0104】
S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における変数wjの値wj t+1とカウンタtにおける変数wjの値wj tとの差分Δwj t+1とカウンタt+1における双対変数~yj|iの値~yj|i t+1とカウンタtにおける双対変数~yj|iの値~yj|i tとの差分Δ~yj|i t+1をj番目のノードから受信し、Δui|j t+1=Δwj|i t+1, ui|j t+1=ui|j t+Δui|j t+1, Δ~zi|j t+1=Δ~yj|i t+1として、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=~zi|j t+Δ~zi|j t+1または~zi|j t+1=~zi|j t+θΔ~zi|j t+1(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0105】
(変形例1)
上記説明では、図8のアルゴリズムに従って動作する変数最適化システム10について説明した。ここでは、図12のアルゴリズムに従って動作する変数最適化システム10について説明する。第4実施形態の変数最適化システム10と当該変形例の変数最適化システム10とは、ノード100の動作のうち、S1223における処理のみ異なる。
【0106】
そこで、以下では、図17に従いi番目のノードの変数最適化部120の動作のうち、S1223での処理について説明する。
【0107】
S1223において、第2双対変数更新部1223は、ts∈τ’とし、t=tsを満たすカウンタtとj∈N(i)を満たす任意に選択されたインデックスjとに対して、カウンタt+1における変数wjの値wj t+1とカウンタtにおける変数wjの値wj tとの差分Δwj t+1を量子化して得られる量子化差分Quantize(Δwj t+1)とカウンタt+1における双対変数~yj|iの値~yj|i t+1とカウンタtにおける双対変数~yj|iの値~yj|i tとの差分Δ~yj|i t+1を量子化して得られる量子化差分Quantize(Δ~yj|i t+1)をj番目のノードから受信し、量子化差分Quantize(Δwj t+1)と量子化差分Quantize(Δ~yj|i t+1)を逆量子化することにより値Dequantize(Quantize(Δwj t+1))と値Dequantize(Quantize(Δ~yj|i t+1))を得て、Δui|j t+1=Dequantize(Quantize(Δwj t+1)), ui|j t+1=ui|j t+Δui|j t+1, Δ~zi|j t+1=Dequantize(Quantize(Δ~yj|i t+1))として、所定の式により、カウンタt+1における双対変数~zi|jの値~zi|j t+1を計算する。ここで、第2双対変数更新部が計算に用いる所定の式は、~zi|j t+1=~zi|j t+Δ~zi|j t+1または~zi|j t+1=~zi|j t+θΔ~zi|j t+1(ただし、θは0<θ<1を満たす所定の数)とすることができる。
【0108】
(変形例2)
第1実施形態で説明したように、パラメータ行列Ai|j(j∈N(i))を、より一般に、変数wiと変数wjとが等しくなるという拘束条件を表す行列としてもよい。
【0109】
(変形例3)
また、第1実施形態で説明したように、変数更新部1221が計算に用いる式を、より一般に、i番目のノードにおける学習用データのミニバッチxi,MBに対するコスト関数Fi(wi t; xi)の勾配降下∇Fi(wi t; xi,MB)と、j∈N(i)を満たすインデックスjに対するパラメータ行列Ai|jとカウンタtにおける双対変数~zi|jの値~zi|j tとを用いて定義される上記拘束条件を満たすように作用する拘束の程度を示す項とを含む式としてもよい。つまり、変数更新部1221が計算に用いる式は、変数wiに関するコスト関数Fi(wi; xi)の勾配降下と、j番目のノード(ただし、jはj∈N(i)を満たす)とi番目のノードとの間の合意形成のための拘束の程度を示す項とを含む式としてもよい。
【0110】
本発明の実施形態によれば、学習用データが複数のノードに分散して蓄積されている場合であっても、当該学習用データに適合するようにモデルの変数を最適化することが可能となる。
【0111】
<第5実施形態>
ここでは、第1実施形態~第4実施形態で説明した変数最適化システム10に深層学習を適用した例について説明する。つまり、i番目のノードにおけるモデルの変数wiは、深層学習において最適化対象となる変数となる。
【0112】
(変数更新部1221が計算に用いるベクトルη)
Jを深層学習におけるニューラルネットワークの層の数、qj(j=1, …, J)をj層目の次元数とする。したがって、m=Σjqjとなる。
【0113】
このとき、変数更新部1221が計算に用いるベクトルηは、次式とすることができる。
【数54】

(ただし、αは所定の正数、σj=1/sqrt(qj)、[σj, …, σj]Tの次元数はqj
このようにすると、<技術的背景>で説明したように、各層に適応してノード間の変数の差を制御することが可能となる。
【0114】
(カウンタ0における変数wiの値wi 0
また、wi,j(j=1, …, J)をi番目のノードにおけるj層の変数、カウンタ0における変数wiの値wi 0をwi 0=[wi,1 0^T, …, wi,J 0^T]T(ただし、wi,j 0はカウンタ0での変数wi,jの値)とする。
【0115】
このとき、初期化部121は、カウンタ0における変数wiの値wi 0を設定するために、値wi,j 0(j=1, …, J)を正規分布N(0, σj 2)に従う乱数を用いて設定するようにしてもよい。
【0116】
このようにすると、<技術的背景>で説明したように、各層に適応してノード間の変数の初期値の差を制御することが可能となる。
【0117】
(変形例)
第1実施形態~第4実施形態の(変形例3)での説明では、変数更新部1221が計算に用いる式は、i番目のノードにおける学習用データのミニバッチxi,MBに対するコスト関数Fi(wi t; xi)の勾配降下∇Fi(wi t; xi,MB)と、j∈N(i)を満たすインデックスjに対するパラメータ行列Ai|jとカウンタtにおける双対変数~zi|jの値~zi|j tとを用いて定義される、変数wiと変数wjとが等しくなるという拘束条件を満たすように作用する拘束の程度を示す項とを含む式としたが、このうち、拘束の程度を示す項を、例えば、所定のベクトルηとΣj∈N(i)Ai|j T~zi|j tとのアダマール積(ただし、所定のベクトルηは、次元数qj(j=1, …, J)を用いて定義される)としてもよい。
【0118】
<補記>
図18は、上述の各装置(つまり、各ノード)を実現するコンピュータの機能構成の一例を示す図である。上述の各装置における処理は、記録部2020に、コンピュータを上述の各装置として機能させるためのプログラムを読み込ませ、制御部2010、入力部2030、出力部2040などに動作させることで実施できる。
【0119】
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【0120】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
【0121】
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成部)を実現する。
【0122】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【0123】
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【0124】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD-RAM(Random Access Memory)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP-ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
【0125】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0126】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0127】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【0128】
上述の本発明の実施形態の記載は、例証と記載の目的で提示されたものである。網羅的であるという意思はなく、開示された厳密な形式に発明を限定する意思もない。変形やバリエーションは上述の教示から可能である。実施形態は、本発明の原理の最も良い例証を提供するために、そして、この分野の当業者が、熟考された実際の使用に適するように本発明を色々な実施形態で、また、色々な変形を付加して利用できるようにするために、選ばれて表現されたものである。すべてのそのような変形やバリエーションは、公正に合法的に公平に与えられる幅にしたがって解釈された添付の請求項によって定められた本発明のスコープ内である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18