【文献】
内山 俊郎,競合学習を用いた情報理論的クラスタリング,電子情報通信学会論文誌,日本,一般社団法人電子情報通信学会,2012年 8月 1日,第J95-D巻,第8号,PP.1633-1643
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について説明する。
【0011】
NMFにおいて、計算の対象となるデータがM次元N個の入力ベクトルx
i{i=1,・・・,N}の集合である場合、入力ベクトルx
iの集合は、M次元K個(K<N)の基底ベクトルw
k{k=1,・・・,K}の線形結合を用いる下記(1)式で近似できる。(1)式では、基底系、即ち基底ベクトルの集合を計算する。
【0013】
入力ベクトルを列ベクトルとして束ねてM×Nの非負値行列Xで示す場合、非負値行列Xは、基底ベクトルを列ベクトルとして束ねたM×Kの基底行列W、及びK×Nの係数行列Hを用いて下記(2)式のように近似できる。
【0015】
本発明の一実施形態に係る計算処理装置は、(2)式の基底行列Wを計算する計算処理装置である。
【0016】
<ハードウェア構成>
計算処理装置は、例えばPC(Personal Computer)10である。以下、計算処理装置がPC10である場合を例に説明する。
【0017】
図1は、本発明の一実施形態に係る計算処理装置のハードウェア構成の一例を説明するブロック図である。
【0018】
PC10は、CPU(Central Processing Unit)10H1と、記憶装置10H2と、ネットワークI/F(interface)10H3と、入力装置10H4と、出力装置10H5とを有する。
【0019】
CPU10H1は、PC10が行う各処理を実現するための演算、及び各ハードウェアの制御を行う。
【0020】
記憶装置10H2は、CPU10H1が用いるデータ、ファームウェアを含む処理を実行するためのプログラム、及び設定等を記憶する。記憶装置10H2は、いわゆるメモリ(Memory)等である。PC10は、補助記憶装置(図示せず)を有してもよい。
【0021】
ネットワークI/F10H3は、ネットワークを介して、データをPC10の外部装置と入出力するためのインタフェースである。ネットワークI/F10H3は、例えばNIC(Network Interface Card)、コネクタ、及びドライバ等である。
【0022】
入力装置10H4は、PC10にユーザの操作、及びデータを入力するための装置である。入力装置10H4は、例えばキーボード、及びコネクタ等である。
【0023】
出力装置10H5は、PC10からユーザに処理結果、及びデータの内容等を出力するための装置である。出力装置10H5は、例えばディスプレイ、及びコネクタ等である。
【0024】
PC10の各ハードウェアは、バス(Bus)を介して相互に接続される。
【0025】
なお、計算処理装置は、PCに限られない。計算処理装置は、サーバ等の情報処理装置でもよい。
【0026】
また、PC10のハードウェア構成は、図示した構成に限られない。ハードウェア構成は、例えば各ハードウェアが行う処理、及び記憶の一部、又は全部を分散、冗長、又は並列に行う装置(図示せず)を別に有する構成、又は外部装置(図示せず)が接続している構成でもよい。
【0027】
<全体処理>
図2は、本発明の一実施形態に係る計算処理装置による全体処理の一例を説明するフローチャートである。
【0028】
ステップS0201では、PC10は、入力パラメータの入力処理を行う。入力処理は、PC10が各処理に用いる入力パラメータINを入力する処理である。入力パラメータINは、例えば入力ベクトルx
i、第一評価値計算で用いる混合比α、及び更新値計算で用いる学習率γ等である。入力パラメータINは、出力条件の判断に用いる終了回数Tである。入力パラメータINは、勝ち回数条件の判断に用いる閾値θである。入力パラメータINは、基底ベクトル数条件の判断に用いる総基底ベクトル数Kである。
【0029】
終了回数Tは、基底ベクトル集合を生成する際の総学習回数を示す値である。
【0030】
閾値θは、勝ち回数条件の判断において、各基底ベクトルにそれぞれ設定される勝ち回数vが勝ち回数条件を満たしているか否かをそれぞれ判断するための値である。更新処理が行う場合、勝ち回数vは、加算される値である。勝ち回数条件、及び基底ベクトル数条件が満たされている場合、勝ち回数vは、初期化される値である。
【0031】
ステップS0202では、PC10は、初期化処理を行う。初期化処理では、PC10は、入力ベクトルからランダムに入力ベクトルを選択し、選択された入力ベクトルをL1正規化する処理を行う。L1正規化する処理は、ベクトルの各次元の係数の絶対値の総和が「1」となるように正規化する処理である。正規化の処理は、ベクトルを他のベクトルと比較できるように、所定の数値で割り算する処理等である。PC10は、L1正規化された入力ベクトルを記憶する。
【0032】
以下、L1正規化されたベクトルの各次元がm{m=1,・・・,M}であるとし、ベクトルのm次元目の値は、p
mとする。
【0033】
初期化処理は、基底ベクトル数qに「1」を設定する処理である。初期化処理は、勝ち回数vに「0」を設定する処理である。初期化処理は、学習回数tに「0」を設定する処理である。
【0034】
ステップS0203では、PC10は、勝ち回数条件、及び基底ベクトル数条件を満たしているか否かの判断を行う。PC10は、勝ち回数条件を満たしているか否かを、勝ち回数vが閾値θ以上の値であるか否かによって判断する。PC10は、基底ベクトル数条件を満たしているか否かを、基底ベクトル数qが総基底ベクトル数Kより小さい値であるか否かによって判断する。
【0035】
ステップS0202でPC10が勝ち回数条件、かつ、基底ベクトル数条件を満たしていると判断する場合(ステップS0203でYES)、PC10は、ステップS0216に進む。ステップS0202でPC10が勝ち回数条件、又は基底ベクトル数条件を満たしていないと判断する場合(ステップS0203でNO)、PC10は、ステップS0204に進む。
【0036】
ステップS0204では、PC10は、第一評価値計算処理を行う。第一評価値計算処理は、入力ベクトルから基底ベクトル数qの基底ベクトルwを選択する処理である。選択する基底ベクトルwを第一ベクトルw
k{k=1,・・・,q}とする(以下、第一ベクトルという)。第一ベクトルw
kの要素は、確率分布Q
kとする。
【0037】
第一評価値計算処理は、入力ベクトルの集合から1つの入力ベクトルを選択し、選択された入力ベクトルをL1正規化する処理を行う。以下、第一評価値計算処理でL1正規化して生成されるベクトルを第二ベクトルRとする(以下、第二ベクトルという)。第二ベクトルの要素は、確率分布Pとする。
【0038】
第一評価値計算処理は、第一評価値dを計算する処理である。第一評価値dは、第一ベクトルw
kの第二ベクトルRに対する類似の度合を示す値である。第一評価値dは、例えば「ひずみ」で示す値である。「ひずみ」は、例えば下記(3)式で示す第二ベクトルRの確率分布Pに対する各第一ベクトルw
kの確率分布Q
kのskewダイバージェンス(Divergence)で計算される値である。
【0039】
なお、第一評価値dは、「ひずみ」で示す場合に限られない。第一評価値dは、コサイン(cos)類似度等で計算される類似度の値でもよい。
【0041】
(3)式において、D
KL(P,Q)は、PのQに対するカルバック・ライブラリー・ダイバージェンス(Kullback−Leibler Divergence)である。(3)式において、混合比αには、例えば計算パフォーマンスを向上できるように、混合比α=0.99の値が入力される。
【0042】
ステップS0205では、PC10は、結合係数計算処理を行う。結合係数計算処理は、下記(4)式によって、結合係数gを計算する処理である。結合係数gは、下記(4)式で示すように、第一評価値dを指数とした指数関数で計算される値である。
【0044】
ステップS0206では、PC10は、基底ベクトル部分集合を生成する部分集合生成処理を行う。部分集合生成処理は、PC10が第一評価値dに基づいて第二ベクトルRに最も類似の第一ベクトルw
kを抽出する処理である。以下、抽出される第二ベクトルRに最も類似の第一ベクトルw
kを第三ベクトルとする(以下、第三ベクトルという)。
【0045】
第一評価値dが「ひずみ」の場合、第三ベクトルは、第一評価値dの値が最も小さい値の第一ベクトルw
kである。第一評価値dが類似度の場合、第三ベクトルは、第一評価値dの値が最も大きい値の第一ベクトルw
kである。
【0046】
部分集合生成処理は、PC10が、第三ベクトルと第一ベクトルw
kを組み合わせて基底ベクトル部分集合S
uを生成する処理である。基底ベクトル部分集合S
uは、第三ベクトル単独のベクトルを有してもよい。基底ベクトル部分集合S
uは、第三ベクトルと2以上の第一ベクトルw
kを組み合わせたベクトルを有してもよい。
【0047】
以下、基底ベクトル部分集合群が、第三ベクトルと第一ベクトルw
kを組み合わせて生成する(q−1)個の基底ベクトル部分集合S
uを有する場合を例に説明する。なお、基底ベクトル部分集合群は、(q−1)個の基底ベクトル部分集合S
uを有する場合に限られない。基底ベクトル部分集合群は、例えば第三ベクトルと2以上の第一ベクトルw
kを組み合わせた基底ベクトル部分集合を有し、q個以上の基底ベクトル部分集合を有する基底ベクトル部分集合群であってもよい。
【0048】
以下、基底ベクトル部分集合の基底ベクトルをw
kで示し、基底ベクトルw
kに対応する結合係数をg
kで示す。
【0049】
ステップS0207では、PC10は、更新値計算処理を行う。
【0050】
更新値計算処理は、PC10が、各ベクトルの各次元の値m{m=1,・・・,M}について、結合係数g
k、及び基底ベクトルw
kの積である積値g
kw
kを計算する処理である。更新値計算処理は、PC10が下記(5)式に基づいて、積値g
kw
kが最大となる基底ベクトルの添字c
mを算出する処理である。
【0052】
同じ積値g
kw
kとなる複数の添字c
mが計算された場合、PC10は、値が小さい方を添字c
mとして算出する。
【0053】
更新値計算処理は、PC10が更新値を計算する処理である。k番目の基底ベクトルのm次元目をw
kmとする場合、更新値は、下記(6)式に基づいて計算される値である。
【0055】
(6)式において、c
m=kの場合、更新値は、入力ベクトルに対応する次元の値を反映した値である。(6)式において、c
m≠kの場合、更新値は、基底ベクトルのL1ノルム(Norm)を一定にするための値である。
【0056】
(6)式において、学習率γは、各更新値に共通して用いる値である。学習率γには、例えば計算パフォーマンスを向上できるように、学習率γ=0.01の値が入力される。
【0057】
PC10は、学習率γに基づいて一時的学習率γ’を計算する。一時的学習率γ’は、下記(7)式に基づいて計算される値である。
【0059】
(7)式において、「c
m=k」は、c
m=kとなるすべてのmを計算対象とすることを示す。
図3においても同様である。
【0060】
ステップS0208では、PC10は、結合ベクトル計算処理を行う。
【0061】
結合ベクトル計算処理は、PC10が結合係数計算処理で計算した結合係数gに基づいて、基底ベクトル部分集合S
uに属する基底ベクトルを線形結合する処理である。線形結合は、下記(8)式に基づいて行われる。
【0063】
結合ベクトル計算処理は、PC10が基底ベクトル部分集合S
uに属する基底ベクトルを線形結合するために、積値g
kw
kの総和を計算して積値総和を計算する処理である。結合ベクトル計算処理は、PC10が、積値総和をL1正規化して結合ベクトルρ
k{k=1,・・・,q−1}を計算する処理である。結合ベクトルρ
kの要素は、確率分布Q
uとする。
【0064】
ステップS0209では、PC10は、第二評価値計算処理を行う。第二評価値は、第一評価値と同様に、例えば「ひずみ」で示す値である。「ひずみ」は、第一評価値と同様に、第二ベクトルRの確率分布Pに対する各結合ベクトルρ
kの確率分布Q
uのskewダイバージェンスで計算される値である。なお、第二評価値は、第一評価値dと同様に、コサイン類似度等で計算される類似度の値でもよい。
【0065】
ステップS0210では、PC10は、勝者部分集合選出処理を行う。勝者部分集合選出処理は、PC10が、下記(9)式に基づいて勝者部分集合S
ηを選出する処理である。即ち、勝者部分集合選出処理は、第二評価値である「ひずみ」が最も小さいベクトルの添字ηを抽出し、抽出された添字ηのベクトルを選出する処理である。同じ評価値となる複数の添字が抽出された場合、PC10は、値が小さい方を添字ηとして抽出する。
【0067】
ステップS0211では、PC10は、更新値に基づく更新を行うか否かを判断する。ステップS0211では、PC10は、選出した勝者部分集合S
ηに基づいて判断する。PC10が勝者部分集合S
ηに属する基底ベクトルと判断する場合(ステップS0211でYES)、PC10は、ステップS0212に進む。PC10が勝者部分集合S
ηに属しない基底ベクトルと判断する場合(ステップS0211でNO)、PC10は、ステップS0213に進む。
【0068】
ステップS0212では、PC10は、勝者部分集合に対する処理を行う。勝者部分集合S
ηに属する基底ベクトルの場合、勝者部分集合に対する処理は、PC10が更新値を記憶する処理である。勝者部分集合に対する処理は、PC10が記憶していた基底ベクトルを更新値によって上書きする処理である。
【0069】
勝者部分集合に対する処理は、PC10が勝者部分集合S
ηに属する基底ベクトルについて勝ち回数vを更新する処理である。各基底ベクトルに対応する勝ち回数は、下記(10)式に基づいて更新される。
【0071】
(10)式において、「c
m=k」は、c
m=kとなるすべてのmを計算対象とすることを示す。
【0072】
ステップS0213では、PC10は、学習回数tをカウントアップする処理を行う。
【0073】
ステップS0214では、PC10は、出力条件を満たしているか否かの判断を行う。PC10は、学習回数t、及び終了回数Tが等しいか否かによって判断を行う。学習回数t、及び終了回数Tが等しい場合(ステップS0214でYES)、PC10は、ステップS0215に進む。学習回数t、及び終了回数Tが等しくない場合(ステップS0214でNO)、PC10は、ステップS0203に戻る。
【0074】
ステップS0215では、PC10は、記憶している基底ベクトルを出力する処理を行う。
【0075】
ステップS0216では、PC10は、基底ベクトルを生成する処理を行う。ステップS0216では、PC10は、勝ち回数vが閾値θ以上となったベクトルと同じ値を持つ基底ベクトルを生成する処理を行う。PC10は、生成した基底ベクトルを記憶する。
【0076】
ステップS0217では、PC10は、勝ち回数を初期化する処理を行う。ステップS0217の初期化処理は、ステップS0203の処理と同様に、勝ち回数vに「0」を設定する処理である。
【0077】
ステップS0218では、PC10は、基底ベクトル数qをカウントアップする処理を行う。
【0078】
<機能構成>
図3は、本発明の一実施形態に係る計算処理装置の機能構成の一例を説明する機能ブロック図である。
【0079】
PC10は、入力部10F1と、第一正規化部10F2と、記憶部10F3と、第一評価値計算部10F4と、部分集合生成部10F5と、結合係数計算部10F6と、積値計算部10F7と、更新値計算部10F8と、積値総和計算部10F9と、第二正規化部10F10と、第二評価値計算部10F11と、勝者部分集合選出部10F12と、更新実行判断部10F13と、出力部10F14と、勝ち条件判断部10F15と、基底ベクトル数条件判断部10F16と、制御部10F17とを有する。
【0080】
入力部10F1は、PC10に入力ベクトル等の入力パラメータINを入力する処理を行う。入力部10F1は、
図1の入力装置10H4等によって実現される。
【0081】
第一正規化部10F2は、入力ベクトルをL1正規化する処理を行う。第一正規化部10F2は、
図1のCPU10H1等によって実現される。
【0082】
記憶部10F3は、データ、及びパラメータを記憶する。記憶部10F3は、基底ベクトルを記憶する。記憶部10F3が記憶する基底ベクトルは、更新値による更新等によって上書きされる。記憶部10F3は、
図1の記憶装置10H2等によって実現される。
【0083】
第一評価値計算部10F4は、第一評価値dを計算する処理を行う。第一評価値計算部10F4は、第一ベクトルの確率分布と、第二ベクトルの確率分布に基づいて、第一ベクトルの第二ベクトルに対する類似の度合を示す第一評価値を、それぞれの第一ベクトルについて計算する処理を行う。第一評価値計算部10F4は、
図1のCPU10H1等によって実現される。
【0084】
部分集合生成部10F5は、第一評価値に基づいて三ベクトルを抽出し、第三ベクトルと第一ベクトルを組み合わせて基底ベクトル部分集合を生成する処理を行う。部分集合生成部10F5は、
図1のCPU10H1等によって実現される。
【0085】
結合係数計算部10F6は、第一評価値を指数とする指数関数によって結合係数を計算する処理を行う。結合係数計算部10F6は
図1のCPU10H1等によって実現される。
【0086】
積値計算部10F7は、基底ベクトル部分集合の基底ベクトルに対応する結合係数、及び基底ベクトル部分集合の基底ベクトルの各次元の値の積となる積値を計算する処理を行う。積値計算部10F7は、
図1のCPU10H1等によって実現される。
【0087】
更新値計算部10F8は、積値等に基づいて更新値を計算する処理を行う。更新値計算部10F8は、
図1のCPU10H1等によって実現される。
【0088】
積値総和計算部10F9は、積値の総和を計算して積値総和を計算する処理を行う。積値総和計算部10F9は、
図1のCPU10H1等によって実現される。
【0089】
第二正規化部10F10は、積値総和を正規化して結合ベクトルを計算する処理を行う。第二正規化部10F10は、
図1のCPU10H1等によって実現される。
【0090】
第二評価値計算部10F11は、結合ベクトルの確率分布と、第二ベクトルの確率分布に基づいて、結合ベクトルの第二ベクトルに対する類似の度合を示す第二評価値を、それぞれの結合ベクトルについて計算する処理を行う。第二評価値計算部10F11は、
図1のCPU10H1等によって実現される。
【0091】
勝者部分集合選出部10F12は、第二評価値に基づいて部分集合生成部10F5が生成する基底ベクトル部分集合から勝者部分集合を選出する処理を行う。勝者部分集合選出部10F12は、
図1のCPU10H1等によって実現される。
【0092】
更新実行判断部10F13は、基底ベクトル部分集合の基底ベクトルが勝者部分集合に属しているか否かに基づいて、記憶するベクトルを更新値で更新するか否かを判断する。更新実行判断部10F13は、
図1のCPU10H1等によって実現される。
【0093】
出力部10F14は、出力条件に基づいてPC10が記憶するベクトルを基底ベクトルOUTとして出力する処理を行う。出力部10F14は、
図1のCPU10H1等によって実現される。
【0094】
勝ち条件判断部10F15は、勝ち回数vが閾値θ以上の値であるか否かを判断する。勝ち条件判断部10F15は、
図1のCPU10H1等によって実現される。
【0095】
基底ベクトル数条件判断部10F16は、基底ベクトル数qが総基底ベクトル数Kより小さい値であるか否かを判断する。基底ベクトル数条件判断部10F16は、
図1のCPU10H1等によって実現される。
【0096】
制御部10F17は、PC10が行う各種処理を実現するために各ハードウェアを制御する。制御部10F17は、
図1のCPU10H1等によって実現される。
【0097】
PC10は、NMFにおいて基底ベクトルを結合係数によって線形結合することを考慮した結合係数gを用いることによって、更新値を計算することができる。また、PC10は、結合係数gに基づいて第二評価値を計算することができ、第二評価値に基づいて勝者部分集合を選出することができる。PC10は、選出された勝者部分集合に属する基底ベクトルを更新値によって更新する。更新等によって、PC10が記憶する基底ベクトルは、逐次更新される。出力条件において、学習回数tが終了回数Tと等しい場合、PC10は、記憶している基底ベクトルを出力することができる。
【0098】
例えばランダムな初期値が基底ベクトルに設定される場合、解は、初期値に依存するため、設定される初期値によって、精度の良い優れた解とならない場合があった。
【0099】
また、結合係数によって線形結合することを考慮しない結合係数の場合、例えば係数行列において一つの基底ベクトルに対応する値が正値、かつ、他の値が「0」の場合、解は、NMFに用いる基底ベクトルとしては不十分な基底ベクトルとなる場合がある。
【0100】
NMFにおいて基底ベクトルを結合係数によって線形結合することを考慮した結合係数gを用いることで、PC10は、ランダムではない基底ベクトルを出力できる。
【0101】
NMFにおいて基底ベクトルを結合係数によって線形結合することを考慮した結合係数gを用いることで、PC10は、NMFの計算に十分な基底ベクトルを出力できる。
【0102】
PC10は、PC10が出力する基底ベクトルを例えば上記(2)式の基底行列Wに適用する。さらに、上記(2)式の係数行列Hに一定値を設定し、かつ、Multiplicativeアルゴリズム等を適用する場合、PC10は、近似精度の高いNMFを実現することができる。
【0103】
なお、実施形態で説明した1つの計算処理装置による構成は、一例であり、用途、又は目的に応じて様々なシステム構成があることは言うまでもない。例えば、各処理は、1以上の計算処理装置を有する計算処理システムによって実現されてもよい。計算処理システムは、ネットワーク等によって接続される計算処理装置を有する。計算処理システムは、ネットワークを介して1以上の計算処理装置(図示せず)に分散、冗長、又は並列に各種処理を処理させてもよい。
【0104】
また、実施形態は、説明した計算処理装置によって実現される場合に限られない。実施形態は、例えばCPUを有する計算処理装置、又は計算処理システムに各種処理を実行させるためのプログラムによって実現されてもよい。
【0105】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。