JP4325877B2 - 行列の高速高精度特異値分解方法、プログラムおよび装置 - Google Patents

行列の高速高精度特異値分解方法、プログラムおよび装置 Download PDF

Info

Publication number
JP4325877B2
JP4325877B2 JP2006514122A JP2006514122A JP4325877B2 JP 4325877 B2 JP4325877 B2 JP 4325877B2 JP 2006514122 A JP2006514122 A JP 2006514122A JP 2006514122 A JP2006514122 A JP 2006514122A JP 4325877 B2 JP4325877 B2 JP 4325877B2
Authority
JP
Japan
Prior art keywords
matrix
transformation
calculating
singular
singular value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006514122A
Other languages
English (en)
Other versions
JPWO2005119507A1 (ja
Inventor
佳正 中村
雅史 岩▲崎▼
真也 阪野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
Original Assignee
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Japan Science and Technology Agency, National Institute of Japan Science and Technology Agency filed Critical Japan Science and Technology Agency
Publication of JPWO2005119507A1 publication Critical patent/JPWO2005119507A1/ja
Application granted granted Critical
Publication of JP4325877B2 publication Critical patent/JP4325877B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、任意の行列Aに対して高速かつ高精度に特異値分解を実行する方法、プログラムおよび装置に関し、より詳細には、行列の特異値を計算し、計算された特異値に対する特異ベクトルを計算することによって、高速かつ高精度に特異値分解を実行する方法、プログラムおよび装置に関する。
現在、コンピュータ上で特異値分解を行うために用いられる標準的な方法は、国際的な数値計算ライブラリLAPACKにより公開されているDBDSQRルーチンである。DBDSQRルーチンは、QR法に基づいて作られたものであり、前処理、メインループ、後処理の3つの部分に分けることができる。前処理では、特異値の上限および下限を計算し、収束判定に用いる精度を計算する。メインループでは、QR法を繰り返しながら、除々に行列の分割および減次を行い、最終的に行列サイズが1となった時点でループを終了する。途中で2×2行列のブロックが現れたならば別処理を行う。後処理では、特異値として計算された値が負ならば正に直し、必要ならば特異ベクトルをスカラー倍する。特異値を降順に、それに対応するように特異ベクトルも並べ替える。DBDSQRは、計算量が非常に多く、特に大規模問題では計算時間の増大が避けられない。DBDSQRルーチンでは、特異値および特異ベクトルが同時に計算される。また、LAPACKには、特異値を計算するDLASQルーチン、および、計算された特異値を用いて特異ベクトルを計算する際に用いる対角化のためのDSTEGRルーチンがある。DLASQルーチンは、高速高精度に特異値を求めることができるが、特異ベクトルを計算できない。DSTEGRルーチンは、その数値的な欠点から、実際に特異値分解に使用することは難しい。
LAPACKによるDBDSQRルーチンを例として、従来の特異値分解方法を説明する。DBDSQRルーチンでは、l×lの一般行列Aを特異値分解するために、まず、行列Aに対してHouseholder(ハウスホルダー)変換を適用する。すなわち、行列Aは、直交行列U、Vを用いて、
と表わすことができる。このとき得られるBを、上2重対角行列という。ここで、Aの特異値=Bの特異値であることに注意する。このように、一般行列Aに対する特異値分解問題を上2重対角行列Bに対する特異値分解問題
B=UΣV
行列U、Vは、それぞれ左および右直交行列
Σ≡diag(σ,σ,・・・,σ) σ≧σ≧・・・≧σ≧0
σはBの特異値
に置き換える。
次に、行列BBを考える。この行列BBの対角化
Λ=VBV
Λ≡diag(λ,λ,・・・,λ) λ≧λ≧・・・≧λ≧0
V≡(v,v,・・・,v
λはBBの固有値
は固有値λに対する固有ベクトル
を行う。ここで、一般に、以下のことが成り立つ。(1)BBは対称な3重対角行列である。(2)BBの固有値は全て正であり、Bの特異値σ(σ≧σ≧・・・≧σ≧0)は、BBの固有値λ(λ≧λ≧・・・≧λ≧0)の正の平方根に等しい。(3)V=V、すなわち、BBの固有ベクトルvは、Bの右特異ベクトルに等しい。従って、行列BBの対角化が求まると、(2)よりΛ=Σであることから、Σが求まり、さらに(3)より左直交行列U=BVΣ−1=BVΣ−1が求まるので、Bが特異値分解される。すなわち、Bの特異値分解を、BBの対角化の問題に置き換えることができる。この原理は、m個全ての特異値および特異ベクトルを求める場合だけでなく、少なくとも1つの特異値および特異ベクトルを求める場合にも適用され得る。
以上のように、一般行列Aの特異値分解は、対称な3重対角行列BBの対角化の問題を含む。
DBDSQRルーチンでは、計算量が非常に多いため、特に大規模問題では、高速に特異値分解を実行することが困難であった。一方、DLASQルーチンは、高速かつ高精度に特異値を求めることができるが、DSTEGRルーチンは、場合によっては特異ベクトルを低精度で計算するため、DSTEGRルーチンでは、常に高精度に特異値分解を実行することは困難であった。
本発明の目的の1つは、対称な3重対角行列BBの対角化を高速かつ高精度で実行することにより、任意の行列Aの特異値分解を高速かつ高精度に実行することを可能にする方法、プログラム、および装置を提供することにある。ここで、行列Bを、行列Aをハウスホルダー変換することで得られる上2重対角行列とする。
本発明では、ミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換によるTwisted(ツイスティッド)分解を実行することにより、行列BBを対角化する。ここで、行列Bを、行列Aと特異値が同じ上2重対角行列とする。行列Aから行列Bへの変換は、例えばハウスホルダー法で実行できる。本発明による行列BBの対角化では、固有値および固有ベクトルを同時に求めるDBDSQRルーチンとは異なり、DSTEGRルーチンのように、まず固有値を計算し、次に計算された固有値を用いて固有ベクトルを求める。
本発明により、コンピュータを用いて任意の行列Aに対して特異値分解を実行する方法であって、行列Aに対して上2重対角化を行い、行列Aの上2重対角行列Bを求めるステップと、行列Aの特異値として行列Bの少なくとも1つの特異値σを求めるステップと、σに対する行列Aの特異ベクトルを求めるステップとを包含し、該行列Aの特異ベクトルを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σIに対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、方法が提供され、これにより上記目的が達成される。
前記行列Aの特異ベクトルを求めるステップは、前記行列BBを対角化するステップの後に、逆反復法を実行するステップを含んでもよい。
前記行列Aの特異ベクトルを求めるステップは、前記逆反復法を実行するステップの後に、グラムシュミット法を実行するステップを含んでもよい。
前記行列Bの特異値σを求めるステップは、dLVsルーチンを実行するステップを含んでもよい。
前記行列Bの特異値σを求めるステップは、要求される計算時間および精度に応じて、dLVsルーチンもしくはDLASQルーチンのどちらを実行するのかを判定するステップを含んでもよい。
前記行列Aに対して上2重対角化を行い、上2重対角行列Bを求めるステップは、上2重対角化法(たとえばハウスホルダー法)を実行するステップを含んでもよい。
本発明により、物体の複数の2次元画像から3次元画像を復元する方法であって、2次元画像j(j=1,・・・,m、mは3以上の整数)における特徴点i(i=1,・・・,n、nは2以上の整数)の座標dij(xij,yij)を抽出するステップと、該特徴点の2次元座標dij(xij,yij)より、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算するステップとを包含し、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元
座標への変換を表す行列Mを計算するステップは、行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップであって、行列Dは、
と定義される、ステップと、行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、σ、σおよびσに対する行列Dの特異ベクトルを求めるステップと、M=M’Cなる行列Cに対して、E=CCを満たす行列Eを計算するステップであって、M’=L’(Σ’)1/2、Σ’はσ、σおよびσを対角要素に持ちそれ以外の要素が0である3×3行列、L’はσ、σおよびσに対応するDの特異ベクトルを左から順に並べた行列である、ステップと、行列Eから、行列Cを計算するステップと、行列Cから、該3次元座標s(X,Y,Z)および該変換を表す行列Mを計算するステップとを含み、該σ、σおよびσに対する行列Dの特異ベクトルを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ Iに対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、方法が提供され、これにより上記目的が達成される。
本発明により、与えられた文書に含まれる情報であって、与えられたキーワードに関連する情報を検索する方法であって、該キーワードに対応する質問ベクトルqを受け取るステップと、該文書に対応する索引語文書行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップと、行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、k<rなるkを選択するステップと、行列Dの擬似行列Dを計算するステップであって、行列Dは、σ,σ,・・・,σを対角要素としそれ以外の要素が0である行列Σ、σ,σ,・・・,σに対応する特異ベクトルのみを左から順に並べた左右直交行列U,Vを用いて、D=UΣ と定義される、ステップと、行列Dと質問ベクトルqとの類似度を計算するステップと、該計算された類似度を基準に、検索結果を出力するステップとを包含し、該行列Dの左右直交行列U,Vを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ I(j=1,2,・・・,k)に対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、方法が提供され、これにより上記目的が達成される。
本発明により、任意の行列Aに対して特異値分解を実行する特異値分解処理をコンピュータに実行させるプログラムであって、該特異値分解処理は、行列Aに対して上2重対角化を行い、行列Aの上2重対角行列Bを求めるステップと、行列Aの特異値として行列Bの少なくとも1つの特異値σを求めるステップと、σに対する行列Aの特異ベクトルを求めるステップとを包含し、該行列Aの特異ベクトルを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σIに対してツイスティッド分解を実行することにより、行列BBを対角化するステッ
プを含み、Iは単位行列である、プログラムが提供され、これにより上記目的が達成される。
本発明により、物体の複数の2次元画像から3次元画像を復元する画像復元処理をコンピュータに実行させるプログラムであって、該画像復元処理は、2次元画像j(j=1,・・・,m、mは3以上の整数)における特徴点i(i=1,・・・,n、nは2以上の整数)の座標dij(xij,yij)を抽出するステップと、該特徴点の2次元座標dij(xij,yij)より、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算するステップとを包含し、該特徴点
の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算するステップは、行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップであって、行列Dは、
と定義される、ステップと、行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、σ、σおよびσに対する行列Dの特異ベクトルを求めるステップと、M=M’Cなる行列Cに対して、E=CCを満たす行列Eを計算するステップであって、M’=L’(Σ’)1/2、Σ’はσ、σおよびσを対角要素に持ちそれ以外の要素が0である3×3行列、L’はσ、σおよびσに対応するDの特異ベクトルを左から順に並べた行列である、ステップと、行列Eから、行列Cを計算するステップと、行列Cから、該3次元座標s(X,Y,Z)および該変換を表す行列Mを計算するステップとを含み、該σ、σおよびσに対する行列Dの特異ベクトルを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ Iに対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、プログラムが提供され、これにより上記目的が達成される。
本発明により、与えられた文書に含まれる情報であって、与えられたキーワードに関連する情報を検索する文書検索処理をコンピュータに実行させるプログラムであって、該文書検索処理は、該キーワードに対応する質問ベクトルqを受け取るステップと、該文書に対応する索引語文書行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップと、行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、k<rなるkを選択するステップと、行列Dの擬似行列Dを計算するステップであって、行列Dは、σ,σ
,・・・,σを対角要素としそれ以外の要素が0である行列Σ、σ,σ,・・・,σに対応する特異ベクトルのみを左から順に並べた左右直交行列U,Vを用いて、D=UΣ と定義される、ステップと、行列Dと質問ベクトルqとの類似度を計算するステップと、該計算された類似度を基準に、検索結果を出力するステップとを包含し、該行列Dの左右直交行列U,Vを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ
I(j=1,2,・・・,k)に対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、プログラムが提供され、これにより上記目的が達成される。
本発明により、任意の行列Aに対して特異値分解を実行する装置であって、行列Aを入力として受け取る手段と、行列Aに対して上2重対角化を行い、行列Aの上2重対角行列Bを計算する手段と、行列Aの特異値として行列Bの少なくとも1つの特異値σを計算する手段と、σに対する行列Aの特異ベクトルを求める手段とを備え、該行列Aの特異ベクトルを求める手段は、ミウラ型逆変換、sdLVvs変換およびrdLVvs変換、ならびにミウラ型変換を用いて行列BB−σIに対してツイスティッド分解を実行することにより、行列BBを対角化する手段を含み、Iは単位行列である、装置が提供され、これにより上記目的が達成される。
本発明により、物体の複数の2次元画像を3次元画像に復元する装置であって、m枚(mは3以上の整数)の2次元画像を受け取る手段と、2次元画像j(j=1,・・・,m)における特徴点i(i=1,・・・,n、nは2以上の整数)の座標dij(xij,yij)を抽出する手段と、該特徴点の2次元座標dij(xij,yij)より、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算する手段とを備え、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算する手段は、行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求める手段であって、行列Dは、
と定義される、手段と、行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求める手段と、σ、σおよびσに対する行列Dの特異ベクトルを求める手段と、M=M’Cなる行列Cに対して、E=CCを満たす行列Eを計算する手段であって、M’=L’(Σ’)1/2、Σ’はσ、σおよびσを対角要素に持ちそれ以外の要素が0である3×3行列、L’はσ、σおよびσに対応するDの特異ベクトルを左から順に並べた行列である、手段と、行列Eから、行列Cを計算する手段と、行列Cから、該3次元座標s(X,Y,Z)および該変換を表す行列Mを計算する手段とを含み、該σ、σおよびσに対する行列Dの特異ベクトルを求める手段は、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ Iに対してツイスティッド分解を実行することにより、行列BBを対角化する手段を含み、Iは単位行列である、装置が提供され、これにより上記目的が達成される。
本発明により、与えられた文書に含まれる情報であって、与えられたキーワードに関連する情報を検索する装置であって、該キーワードに対応する質問ベクトルqを受け取る手段と、該文書に対応する索引語文書行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求める手段と、行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求める手段と、k<rなるkを選択する手段と、行列Dの擬似行列Dを計算する手段であって、行列Dは、σ,σ,・・・,σを対角要素としそれ以外の要素が0である行列Σ、σ,σ,・・・,σに対応する特異ベクトルのみを左から順に並べた左右直交行列U,Vを用いて、D=UΣ と定義される、手段と、行列Dと質問ベクトルqとの類似度を計算する手段と、該計算された類似度を基準に、検索結果を出力する手段とを包含し、該行列Dの左右直交行列U,Vを求める手段は、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ I(j=1,2,・・・,k)に対してツイスティッド分解を実行することにより、行列BBを対角化する手段を含み、Iは単位行列である、装置が提供され、これにより上記目的が達成される。
本発明によれば、ミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換によるツイスティッド分解を実行することにより、行列BBが対角化される。それにより、DSTEGRルーチンと比較した場合、精度の点ではるかに優れ、実用化に耐え得る固有値計算を実現し、高精度の特異値分解が可能になる。また、逆反復法、Gram−Schmidt(グラムシュミット)法、本発明において提供するdLVsルーチンのうちの少なくとも1つを併用することにより、DBDSQRと比較して精度の点では同等になることもあるが、速度の点では圧倒的に高速である特異値分解を実現することができる。さらに、DBDSQRルーチンと比較すると、固有値および固有ベクトルを同時の求めるのか、または、計算された固有値を用いて固有ベクトルを求めるのかの計算フローの違いにより、以下で説明する2次元から3次元への画像復元問題および文書検索問題等においては、計算時間をさらに短縮することができる。
図1は、本発明により提供される特異値分解のためのI−SVDルーチンの処理の手順を示すフローチャート 図2は、Parlettらの手法によるsqds変換およびrpqds変換の処理の手順を示すフローチャート 図3は、本発明によるミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換の処理の手順を示すフローチャート 図4は、本発明によるミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換の処理の手順を示すフローチャート 図5は、本発明によるミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換の処理の手順を示すフローチャート。 図6は、本発明によるミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換の処理の手順を示すフローチャート 図7は、本発明によるミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換の処理の手順を示すフローチャート 図8は、本発明によるミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換の処理の手順を示すフローチャート 図9は、本発明において誤差の低減をもたらす、Parlettの手法と本発明による方法との計算経路の違いを示す図 図10は、本発明による特異値分解装置の1つの実施形態であるコンピュータを示す図 図11は、本発明による特異値分解方法を利用した物体の複数の2次元画像を3次元画像へ復元する画像処理の1つの実施形態を示すフローチャート 図12は、本発明による特異値分解装置を利用した文書検索方法の1つの実施形態を示すフローチャート
符号の説明
10 コンピュータ
1001 CPU
1002 メモリ
1003 入力インターフェース部
1004 出力インターフェース部
1005 バス
以下、図面を参照しながら、本発明の実施形態を説明する。
1.特異値分解アルゴリズムI−SVDルーチン
図1を参照する。図1は、本発明により提供される特異値分解のためのI−SVDルーチンの処理の手順を示す。図1の処理は、コンピュータプログラムの形式で提供され得る。
ステップ102において、一般行列Aに対してハウスホルダー法を用いて上2重対角化を行う。このとき利用される上2重対角化方法は、ハウスホルダー法であってもよいし、他の上2重対角化方法であってもよい。これにより、上2重対角行列Bが得られる。次に、行列Bの特異値σ(σ≧σ≧・・・≧σ≧0、mは、行列BBの行列サイズに等しい)を計算する。ここで、本発明により提供される特異値計算ルーチンdLVsおよびLAPACKにより提供されるDLASQルーチンを利用し得る。なお、行列Bの特異値は、行列Aの特異値に等しく、かつ、行列BBの固有値の正の平方根λ 1/2に等しい。dLVsルーチンは、Bの特異値σを高精度で計算する。dLVsルーチンの詳細は、後述される。dLVsで求められる特異値は、従来のLAPCKルーチン(DBDSQR、DLASQ等)と比較して、最も高精度である。速度に関しては、ほとんどの場合DLASQルーチンには劣るが、信頼性の高いDBDSQRルーチンの約2分の1の時間で計算できる(CPUがItanium2の場合はdLVsルーチンが最速)。そこで、ステップ104において、高精度性が必要とされるかどうかを判定する。最も高精度な特異値分解を行いたい場合には、ステップ106においてdLVsを、高精度性および高速性を両立したい場合には、ステップ108において従来のDLASQルーチンを、特異値計算ルーチンとして用いるのがよい。さらに、DLASQルーチンが有限回の演算で停止するかは定かでないが、dLVsルーチンは収束することが保証されているので、信頼性を重視するならば、dLVsルーチンを用いるのがよい。
次に、ステップ110において、計算されたBの特異値σ(すなわち、Aの特異値に等しい)用いて、1.1において説明されるsdLVvs変換およびrdLVvs変換によるツイスティッド分解により、BBの対角化を行う。本発明による行列BBの対角化ルーチンの詳細は、1.1で説明する。さらに、ステップ112において、以下の1.1にて詳細が示される簡略化連立1次方程式
を求めると、行列Bの特異ベクトルvが得られる(すなわち、BBの対角化行列Vが得られる)。すなわち、BBが対角化される。ステップ114において、Σ≡diag(σ,σ,・・・,σ)(ただし、σ≧σ≧・・・≧σ≧0)とすると、行列Bの右直交行列V=Vであるので、行列Bの左直交行列U=BVΣ−1=BVΣ−1からUを得る。すなわち、行列Bが特異値分解される。ここでは、m個全ての特異値および特異ベクトルを計算したが、この原理は、少なくとも1つの特異値および特異ベクトルを計算する場合にも適用され得る。
このとき得られる左右直交行列、すなわち特異ベクトル計算の結果は、DBDSQRルーチンによって得られる結果と比較して精度の点で劣る。そこで、ステップ116において、逆反復法を用いることにより、DBDSQRルーチンと同程度の精度を得ることができる。さらなる高精度性が必要とされる場合は、ステップ120において、グラムシュミット法による再直交化を行えば、DBDSQRよりも高精度での計算を実現し得る。I−SVDルーチンでは、速度に関しては、表2から、DBDSQRと比較して大幅に短縮され得ることが理解される。また、表1から理解されるように、I−SVDルーチンは、DSTEGRによる極度の精度悪化がみられる場合でも、高精度に特異値分解することができる。なお、表1、2の誤差および計算時間に関するデータは、逆反復法を用いているが、グラムシュミット法は用いていない場合の結果である。また、ステップ116および120を実行する順序は逆であってもよいし、あるいは、両ステップは、省略してもよい。
このように、図1に示される各ステップの機能は、ソフトウェア(例えば、プログラム)によって実現される。しかし、本発明は、これに限定されない。図1に示される各ステップの機能をハードウェア(例えば、回路、ボード、半導体チップ)によって実現してもよいし、ソフトウェアとハードウェアとの組み合わせによって実現してもよい。
以上により、I−SVDルーチンを用いると、従来技術と比較して高速かつ高精度の特異値分解が実行される。
表1は、本発明による行列BB対角化ルーチンを実行した後に、逆反復法を実行したときの従来技術および本発明の誤差を比較した表である。
表2は、本発明による行列BB対角化ルーチンを実行した後に、逆反復法を実行したときの従来技術および本発明の計算時間を比較した表である。
また、1.3に、本発明の方法において、DSTEGRルーチンと比較して、誤差が低減される理由を説明する。
1.1.本発明による行列B Bの対角化ルーチン
DBDSQRはBBの固有値λとともに対応する固有ベクトルvを求めることができるので、他のルーチンを併用しなくてもBBの対角化(Bの特異値分解)が得られる。しかしながら、DLASQおよびdLVsは上述したように固有ベクトルvを計算する機能はない。よって、別の固有ベクトル計算ルーチンが必要となる。ただし、BBの固有値λ(Bの特異値σ)が求まっているものとする。
まず、DSTEGRによる固有ベクトルの計算方法を示す。Parlettらは以下の(1)、(2)、(3)の手順で固有ベクトル計算ができることを示している。
(1)stationary qd with shift変換(stqds変換)およびreverse−time progressive qd with shift変換(rpqds変換)を用いた(B(0)(0)−λIのCholesky(コレスキー)分解(B(±1)(±1)=(B(0)(0)−λIを求める。ただし、B(0)=Bであり、B(+1)およびB(−1)はそれぞれ上2重対角および下2重対角行列とする。すなわち
となる。すなわち、{q (±1),e (±1)}を計算する。
(2)コレスキー分解より(B(0)(0)−λIのツイスティッド分解
を形成する。ただし
とし、γ≡q (1)+q (−1)−(ek−1 (0)+q (0)−λ)が最小になるkをkとする。
(3)簡約化された連立1次方程式
を解く。
図2は、Parlettらの手法で最も核となる(1)の処理手順を示す。(1)で求めたいのは、{q (n),e (n)},n=±1であるが、そのための変換としてstationary qd with shift(stqds)変換
(1)+ek−1 (1)=q (0)+ek−1 (0)−λ,k=1,2,・・・,m,
(1) (1)=q (0) (0),k=1,2,・・・,m−1,
(0)≡0,e (1)≡0
およびreverse−time progressive qd with shift(rpqds)変換
(−1)+e (−1)=q (0)+ek−1 (0)−λ,k=1,2,・・・,m,
k+1 (−1) (−1)=q (0) (0),k=1,2,・・・,m−1,
(0)≡0,e (−1)≡0
が採用されている。
固有値λが既知ならば反復的な計算は不要なため計算量がQRアルゴリズムに比べて圧倒的に少なく抑えられるが、常に数値安定かつ精度のよい方法とはいえない。stqds変換とrpqds変換ともに減算による桁落ちが発生する可能性がある。例えば、stqds変換においてq (0)+ek−1 (0)−λ〜ek−1 (1)ならば、q (1)(=q (0)+ek−1 (0)−λ−ek−1 (1))を求める際、倍精度計算であってもq (1)の有効桁はわずか1桁になることもある。その場合、q (0) (0)/q (1)を計算すると誤差が生じる、つまり、e (1)が精度よく計算できないことになる。また、qk+1 (1)を求めるのにe (1)が必要、e (1)を求めるのにq (1)が必要と逐次的な計算が要求されるので、1個所で発生した桁落ちによる誤差が波及し、さらなる誤差増大の可能性も秘めている。その結果、理論上はq (1)≠0であるが誤差蓄積によりq (1)=0となり、q (0) (0)/q (1)の計算においてオーバーフローが起こるといった数値不安定な状況も想定される。
(0)=Bの成分{b2k−1 (0),b2k (0)}が与えられる、すなわち{q (0),e (0)}が与えられると、λおよびek−1 (1)が一意的に決まるので、この状況は避けることはできない。rpqds変換も同様の性質を持つため、実用的なレベルにまで達したとはいいがたい。LAPACKにおいてFORTRANルーチンDSTEGRとして改良版が公開されているものの欠点は完全に解決されてはいない。
次に、本発明による対角化のルーチンを説明する。本発明によるルーチンでは、stqds変換およびrpqds変換にかわる新たな変換を採用している。本発明では、行列BBを対角化するために、sdLVvs変換およびrdLVvs変換を用いた行列BB−σ Iに対するツイスティッド分解を行う。正確には、上記(1)を以下の(1a)、(1b)、(1c)の3つの工程にわけることで数値安定なコレスキー分解を実現している。
図3〜図8は、本発明によるミウラ型逆変換、sdLVvs変換、rdLVvs変換およびミウラ型変換を実行する処理手順を示す。
(1a)ミウラ型逆変換
を行う。
2k−1 (0)=η(0) (0),k=1,2,・・・,m,
2k (0)=e (0)/t (0),k=1,2,・・・,m−1,
(0)≡q (0)/(η(0)+u2k−2 (0))−1,η(0)≡1/δ(0)
ただし、δ(0)は任意に選ぶことができる。
(1b)stationary不等間隔差分Lotka−Volterra(sdLVvs)変換
(1)=u (0)*(1+δ(0)k−1 (0))/(1+δ(1)k−1 (1)),
k=1,2,・・・,2m−1,
によって
reverse−time不等間隔差分Lotka−Volterra(rdLVvs)変換
(−1)=u (0)*(1+δ(0)k−1 (0))/(1+δ(−1)
k+1 (−1)),
k=1,2,・・・,2m−1,
によって
を実行する。ただし、u (n)≡0,u2m (0)≡0とし、λ=1/δ(0)−1/δ(n),n=±1を満たすようにδ(n),n=±1を設定する。
(1c)ミウラ型変換
(n)=η(n)*(1+δ(n)2k−2 (n))*(1+δ(n)2k−1 (n)),
k=1,2,・・・,m,
(n)=δ(n)*u2k−1 (n)*u2k (n)
k=1,2,・・・,m−1,
を行う。
qd型変換では見られない離散Lotka−Volterra型変換の大きな特徴は、任意パラメータを持つことである。すなわち、λ=1/δ(0)−1/δ(±1)を満たす範囲でδ(n)の値を任意に設定できる。δ(n)を変動させると補助変数u (n)の値も変化するが、桁落ちによる誤差や数値不安定が発生するかどうかは事前に判定できる。この判定は、if文によって実装されてもよい。この場合は、δ(n)を再設定後に再度計算すればよい。また、u (±1)が求まればミウラ変換によってq (±1)およびe (±1)が独立に計算されるので、誤差が伝播しないという性質を持つ。なお、ミウラ型逆変換をミウラ変換、ミウラ型変換を逆ミウラ変換、sdLVvs変換をstLVv変換、rdLVv変換をrLVv変換と呼び変えても問題はない。
入力および出力の変数の対応は、Parlettの手法と同じである。メモリ消費を抑えるために、補助変数u (n)のための配列は必ずしも用意する必要はない。一方、1+δ(0)(0)のためのメモリ領域を確保し、(1a)〜(1c)のステップにまたがってこの値を利用することで、メモリ消費を抑え、計算量を低減することができる。これにより、誤差も低減される。このように、1.3で説明する方法を利用して誤差を低減すること等、さらなる工夫を行い得る。
上記の方法でBB−λIのコレスキー分解を求めた後は、Parlettらと同じ方法を用いて特異ベクトルvを計算する。そうすると、BBの固有値分解Λ=V BVが得られる。ただしVの列ベクトルがvである。U=BVΣ−1よりUを求めると、Bの特異値分解B=UΣV も得られる。
1.2.高精度特異値算出dLVsルーチン
本発明によるdLVsルーチンは、基本的な枠組みではDLASQルーチンと同じであり、BBの固有値(あるいはBの特異値)のみが得られBBの固有ベクトル(あるいはBの特異ベクトル)は求まらない。ただ、ルーチンの核となる部分に使用される計算法はDLASQと異なる。
まず、DLASQルーチンによる固有値の計算方法を説明する。qd法は固有ベクトルが計算できないが、1ステップは上2重対角行列の要素を更新するのみなので高速に特異値を求めることができる。かつ、計算量が少ないため丸め誤差の蓄積が抑えられ高精度計算が期待できる。ここで、Y(n)を対称な3重対角行列
とする。また、変換Y(n)→Y(n+1)がqd法の漸化式
(n+1)=q (n)+e (n)−ek−1 (n+1),k=1,2,・・・,m,
(n+1)=e (n)*qk+1 (n)/q (n+1),k=1,2,・・・,m−1,
(n)≡0,e (n)≡0,n=0,1,・・・
によって実現されるとする。そのとき、適切なR(n)が存在してY(n+1)=R(n)(n)(R(n)−1となることをRutishauserは発見している。これは、Y(n+1)とY(n)の固有値が同じであることを意味し、すなわち、上記の漸化式によって固有値保存変形がなされる。この変形を繰り返せば非対角成分が0に近づき、Y(n)が対角化されることも証明されている。よってY(0)=BBとするとlim
n→∞(n)=diag(λ,λ,・・・,λ)となる。ただし、λはBBの固有値である。さらに、λの正の平方根をとるとBの特異値σが得られる。
LAPCAKの特異値計算ルーチンDLASQでは、qd法のdifferential型が採用されている。これはdqd法と呼ばれる。1ステップは
で与えられ、変換(n)→Y(n+1)が実現される。differential型は減算を含まないため、qd法では起こりうる桁落ち誤差の心配もない。さらに高速版として原点シフト付きdqd(dqds)法も組み込まれている。高速化に伴う計算量の減少で丸め誤差の発生も抑えることができる。ただし、収束するかどうかの保証はない。原点シフト版の1ステップは
で与えられる。sは原点シフト量であり、Gersgorin型境界条件により見積もられたY(n)の最小固有値とする。よって、DLASQルーチンのメインループの核となる部分では最小固有値の見積もりを行い、s>ε(ε:非常に小さいとみなせる正の数)ならばdqds法が、そうでなければdqd法が用いられる。メインループの他の部分(行列の分割・減次)はほとんどDBDSQRルーチンと変わらない。すなわち、DBDSQRルーチンに含まれるQR法をdqd法に、原点シフトQR法をdqds法に置き換えたものがDLASQルーチンとなる。(QR法とdqd法、原点シフト付きQR法とdqds法で扱う変数が異なるので少しだけ判定式が異なる部分もあるが本質的に同じである。)
次に本発明によるdLVsルーチンを説明する。dLVsルーチンではdqd法のかわりにdLV法を、dqds法のかわりにdLVs法を採用する。ここで、dLVsルーチンはDLASQルーチンとは違って収束することが保証されている。その1ステップは以下で与えられる。
DLASQルーチン同様、メインループの核の部分では最小特異値の見積もりによって原点シフト量sを決定し、dLV法を使うかdLVs法を使うかを決定する。ただし、補助変数v (n)を求めたあとでsを決定する点はDLASQルーチンと異なる。
1.3.本発明の方法による誤差の低減
人間が理想的な状況、すなわち、無限桁の計算をいくらでもできるとすると、Parlettらの手法、本発明による特異ベクトル計算ルーチン(1.1参照)のどちらを使っても問題ない。しかしながら、コンピュータで計算を行う場合は注意が必要である。有限桁の計算しか行えないコンピュータ上では、数学的に正しい計算法を使ったとしても必ずしも正しい結果が得られる訳ではない。そればかりかいつまでたっても計算が終了しないといった思わぬ数値的な問題が発生する場合もある。
コンピュータ計算による誤差には、丸め誤差および桁落ちによる誤差などが知られている。丸め誤差単独では、高々有効桁の最後の桁が真値と比べて異なる程度で大きな誤差にはならない。また、指数部が異なる2つの実数の加算、乗算、除算の少なくとも1つの演算を行えばやはり丸め誤差が生じるが、それ以上の誤差は発生しない。さらに、このような丸め誤差を発生するような操作が繰り返されても、丸めモードがnear(四捨五入)ならば、一方的に切り上げられたりあるいは切り捨てられたりして誤差が極端に蓄積することは少ない。よって、多くの数値計算法は加算、乗算、除算の少なくとも1つの演算によって発生する丸め誤差を特別注意することは少なく、dLVsルーチンによる特異値計算でも結果的に丸め誤差は一様に増大しない。
問題となるのは、同符号の実数の減算および異符号の実数の加算により生じる、桁落ちである。桁落ちによる誤差で値が0となった後、その値による除算を行うと、0が分母にくるような不定形となり計算不可能となる。こうなるといつまでたっても計算が終了しない。減算→除算と計算する部分がParlettの手法、本発明による方法ともに存在するので、桁落ち誤差には十分に注意する必要がある。
本発明による計算方法では、上述の桁落ちによる誤差を含んでいるかどうかは減算によって得られた値が小さいかどうかで判断できる。Parlettの手法の場合、図2のDO文中のq1[k]、q2[k]をチェックすればよい。ところが、Parlettの手法は桁落ち誤差を含むことが分かったとしても、それを回避することはできない。なぜならば、初期値として{q0[k],e0[k]}が与えられると、λは一意的に決定され、{q1[k],e1[k]}および{q2[k],e2[k]}も一意的に導出されるためである。すなわち、任意パラメータを持たない自由度のない計算法であるためである。
それに対して本発明による方法は自由に設定できるパラメータη1(=1/δ(0))をもつため、補助変数u (n)の値を様々に変化させることができる(図9参照)。すなわち、様々な経路で{q1[k],e1[k]}および{q2[k],e2[k]}を計算することができる。よって、桁落ちが発生する場合も回避できる。図6〜図8の条件判定によって桁落ちの影響をチェックし、減算によって得られた値の絶対値が小さな数εより大きいという条件が満たされなければ、パラメータη1の設定に戻るというものである。この処理は、条件が満たされるまで繰り返される。なお、精度よりも高速性を重視する場合は、数回条件が満たさなければ(q1[k]=0あるいはq2[k]=0ならば)、例外処理(文献PDF参照)を行ってもよい。
2.本発明による特異値分解装置
特異値分解を実行する装置を説明する。特異値分解を実行する装置は、例えば、図1に示される各ステップの機能を有する装置である。特異値分解を実行する装置の1つの実施形態は、特異値分解プログラムを実行するコンピュータである。そのプログラムは、例えば、図1に示される各ステップをCPUに実行させるプログラムである。
図10は、図1の処理をコンピュータプログラムとして実行するコンピュータ10を示す。コンピュータ10は、CPU1001と、メモリ1002と、入力インターフェース部1003と、出力インターフェース部1004と、バス1005とを含む。
CPU1001は、プログラムを実行する。例えば、そのプログラムは、図1の処理を実行するプログラムである。そのプログラムおよびそのプログラムの実行に必要なデータは、例えば、メモリ1002に格納される。そのプログラムは、任意の様態でメモリ1002に含まれ得る。例えば、メモリ1002が書き換え可能なメモリである場合には、コンピュータ1002の外部からプログラムをローディングすることにより、そのプログラムをメモリ1002に格納してもよい。あるいは、メモリ1002が読み出し専用メモリである場合には、メモリ1002に焼き付ける形式でそのプログラムをメモリ1002に格納してもよい。
さらに、入力インターフェース部1003は、特異値分解を実行する対象である行列Aを外部から受け取るためのインターフェースとして機能する。出力インターフェース部1004は、計算結果を出力するためのインターフェースとして機能する。バス1005は、コンピュータ10内の構成要素1001〜1004を相互に接続するために使用される。
3.本発明による特異値分解方法の応用
本発明による特異値分解方法は、様々な分野に応用可能である。以下に、2次元画像から3次元画像へ復元する画像処理への応用例、ならびに、文書検索への応用例を示す。しかし、これら2つの応用例は例示に過ぎず、本発明による特異値分解方法の応用は、これら2つの応用例に限定されない。本発明による特異値分解方法の応用は、特異値分解を利用するあらゆる分野に適用可能である。
3.1.2次元から3次元へ復元する画像処理への応用
図11を参照する。図11は、本発明による特異値分解方法を利用した物体の複数の2次元画像を3次元画像へ復元する画像処理の1つの実施形態を説明する。
複数の2次元画像から3次元復元を行うために必要となるステップは、2次元画像から特徴点を抽出するステップと、特徴点データより形状(元の物体の特徴点の3次元座標データ)および回転(3次元データから特徴点データへの変換)に関するデータを計算するステップと、形状および回転のデータより可視化を行うステップとを包含する。
ステップ1102において、2次元画像j(j=1,・・・,m、mは3以上の整数)から特徴点i(i=1,・・・,n、nは2以上の整数)の座標(x ,y )を抽出する。取り扱う2次元画像は、弱中心射影画像であることが好ましい。このとき
が成り立つ。ここで、sは物体のスケールに相対するj番目の画像のスケール、r1,j,r2,jはそれぞれ物体座標系に相対するj番目のカメラ座標系の回転行列の1番目と2番目の行ベクトル、[X,Y,Zはi番目の点の3次元座標である。物体のスケールは1番目の画像のスケールと同じにし(s=1)、物体の座標系の姿勢は1番目の画像のカメラ座標系と同じにする(r1,1=[1,0,0],r2,1=[0,1,0])。m枚全ての画像におけるn個全ての点の座標を行列Dの要素として並べると、
D=MS
が得られる。
ただし、
である。MとSの形から分かるように、Dのランクは3である。いま、ステップ1102よりDが与えられている。以下、回転に関するデータMおよび形状Sを求める。
そこで、行列Dの特異値分解
D=UΣV
を考える。ここで、Σは特異値を大小順に対角線上に並べたもので、UおよびVはそれぞれ左および右直交行列である。ステップ1104では、行列Dの特異値分解を計算するために、行列Dを上2重対角化して上2重対角化行列Bを得る。ステップ1106において、行列B、すなわちDの特異値を計算する。ステップ1106では、本発明によるdLVsルーチン、DLASQルーチン、その他の特異値計算ルーチン、あるいはその組み合わせを利用し得る。このとき、画像のデジタル誤差のため、ゼロでない特異値は3つ以上出てくる。しかし、4番目以降の特異値はノイズによるもので、最初の3つの特異値と比べて格段に小さい。
そこで、ステップ1108において、最初の3つの特異値に対して特異ベクトルを計算する。ステップ1108は、図1のステップ110〜120を利用し得る。採用する3個のベクトルをまとめると、次式となる。
D’=L’Σ’R’=M’S’
ただし、M’=L’(Σ’)1/2、S’=(Σ’)1/2R’、D’は‖D−D’‖を最小にするランク3の行列である。
次に、D’からMおよびSを求めたいが、その組合せは唯一ではない。なぜなら、任意の正則行列Cが
D’=(M’C)(C−1S’)
を満たすからである。そこで、上式におけるCをM=M’Cを満たすように決める。Cは下記の式を満たす。
E=CCとすると、上式からEの6つの要素に関する2m+1個の線形方程式が得られる。m≧3であるので、Eの要素を一意に決めることができる。ステップ1110において、行列Eを求める。
次に、ステップ1112において、EからCを求める。Cの自由度(9)はEの自由度(6)より多い。そこで、条件r1j=[1,0,0],r2j=[0,1,0]を加えれば、Cを決めることができる。このとき2つの解(Necker Reversal)が出る。
次に、ステップ1114において、M=M’CおよびS=C−1S’より、回転に関するデータMおよび形状Sが決まる。
DBDSQRルーチンでは上記のようにU、V(n個のベクトル)を求めた後、3個のベクトル(n−3個は不要)を採用する。ここでは、原則的にはn個のベクトルを求めるが、例外的にn個より少ない数のベクトルを求めてもよい。この実施形態では3個のベクトルだけ求めればよい。すなわち、計算コストを削減することができる。
3.2.本発明による特異値分解方法を利用した文書検索方法
文書中からその文書の内容に関連する索引語を抽出し、索引語の重みを計算する処理の後、ベクトル空間モデルでは、この索引語の重みを要素とするベクトルで文書を表現する。いま、検索対象となる文書をD,D,・・・,Dとし、これら文書集合全体を通して全部でm個の索引語w,w,・・・,wがあるとする。このとき、文書Dは、次のようなベクトルで表現されることになる。これを文書ベクトルと呼ぶ。
ここで、dijは索引語wの文書Dにおける重みである。また、文書集合全体は、次のようなm×n行列Dによって表現することができる。
行列Dを索引語文書行列と呼ぶ。索引語文書行列の各列は文書に関する情報を表している文書ベクトルであるが、同様に、索引語文書行列の各行は索引語に関する情報を表しているベクトルであり、これを索引語ベクトルと呼ぶ。検索質問も、文書と同様に、索引語の重みを要素とするベクトルで表現することができる。検索質問文に含まれる索引語wの重みをqとすると、検索質問ベクトルqは次のように表されることになる。
実際の文書検索においては、与えられた検索質問文と類似した文書を見つけ出す必要があるが、検索質問ベクトルqと各文書ベクトルdの間の類似度を計算することにより行う。ベクトル間の類似度の定義としてはさまざまなものが考えられるが、文書検索においてよく用いられているものはコサイン尺度(2つのベクトルのなす角度)または内積である。
なお、ベクトルの長さが1に正規化(コサイン正規化)されている場合には、コサイン尺度と内積とは一致する。
図12を参照する。図12は、本発明による特異値分解装置を利用した、文書検索方法の1つの実施形態を説明する。
ステップ1202において、質問ベクトルqを受け取る。次に、ステップ1204では、行列Dの特異値分解を計算するために、行列Dを上2重対角化して上2重対角化行列Bを得る。ステップ1206では、行列B、すなわち行列Dの特異値を求める。ステップ1206では、本発明によるdLVsルーチン、DLASQルーチン、その他の特異値計算ルーチン、あるいはその組み合わせを利用し得る。
次に、Dの近似行列Dを使った検索を考える。ベクトル空間モデルでは、検索質問ベクトルqと索引語文書行列D中の各文書ベクトルdの間の類似度を計算することにより検索を行うが、ここではDの代わりにDを使う。ベクトル空間モデルでは、文書ベクトルの次元数は索引語の総数と等しい。したがって、検索対象となる文書の数が増えるに従い、文書ベクトルの次元数も増加する傾向にある。しかし、次元数が増加してくると、コンピュータのメモリによる制限や検索時間の増大などの問題が生じてくるばかりでなく、文書中に含まれる不必要な索引語がノイズ的な影響を及ぼし、検索精度を低下させてしまうという現象も起こってくる。潜在的意味インデキシング(latent semantic indexing;LSI)は、高次元の空間にある文書ベクトルを低次元の空間へと射影することにより、検索精度の改善を図る技術である。高次元の空間では別々に扱われていた索引語が、低次元の空間では相互に関連を持ったものとして扱われる可能性もあるため、索引語の持つ意味や概念に基づく検索を行うことができる。たとえば、通常のベクトル空間モデルでは“car”という索引語と“automobile”という索引語はまったく別物であり、一方の索引語による質問ではもう片方の索引語を含んだ文書を検索することができない。しかし、低次元の空間ではこれらの意味的に関連した索引語は1つの次元に縮退することが期待できるため、“car”という検索質問によって“car”を含む文書ばかりでなく“automobile”を含む文書をも検索することが可能となる。潜在的意味インデキシングでは、特異債分解により高次元ベクトルの次元削減を行うが、これは基本的に多変量解析における主成分分析と等価である。
行列ステップ1208では、k<rなるkの値を選択する。kの値は、予め与えられていてもよいし、計算ごとに選択可能であってもよい。
ステップ1210において、ステップ1206で計算した特異値のうち、大きい順に1番目からk番目のk個の特異値に対して、Dの特異ベクトルを計算する。すなわち、
=UΣV
なるUおよびVを計算する。ここで、Uは、最初のk個の左特異ベクトルのみから構成されるm×k行列であり、Vは、最初のk個の右特異ベクトルのみから構成されるn×k行列であり、Σは、最初のk個の特異値のみから構成されるk×k対角行列である。ステップ1210は、図1のステップ110〜120を利用し得る。
次に、ステップ1212において、行列Dと質問ベクトルqとの類似度を計算する。いま、ベクトルeをn次元の単位ベクトルとすると、Dのj番目の文書ベクトルはDで表すことができる。文書ベクトルDと検索質問ベクトルqとの間の類似度計算は、
としてもよいが、別の定義を用いてもよい。上式では、DをU,Σ,Vから再構成する必要はなく特異値分解の結果から、直接、類似度を計算できることを示している。
数29の中に現われるΣ は、
Σ =U
と書き直すことができる。この式の右辺は、近似行列Dにおけるj番目の文書ベクトルの基底Uのもとでの座標(文書のk次元表現)を表している。同様に、数29中のU qは、検索質問ベクトルqの基底Uのもとでの座標(検索質問のk次元表現)である。
ステップ1214において、ステップ1212において計算された類似度を基準に、検索結果を出力する。
DBDSQRルーチンではr個のベクトルを求めた後、k個のベクトル(r−k個は不要)を採用するのに対して、この実施形態では、k個のベクトルだけ求めればよい。すなわち、計算コストを削減することができる。
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
本発明は、任意の行列Aの特異値分解を高速かつ高精度に実行することを可能にする方法、プログラム、および装置等として有用である。

Claims (6)

  1. 物体の複数の2次元画像から3次元画像を復元する方法であって、
    2次元画像j(j=1,・・・,m、mは3以上の整数)における特徴点i(i=1,・・・,n、nは2以上の整数)の座標dij(xij,yij)を抽出するステップと、
    該特徴点の2次元座標dij(xij,yij)より、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算するステップと
    を包含し、
    該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算するステップは、
    行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップであって、行列Dは、
    と定義される、ステップと、
    行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、
    σ、σおよびσに対する行列Dの特異ベクトルを求めるステップと、
    M=M’Cなる行列Cに対して、E=CCを満たす行列Eを計算するステップであって、M’=L’(Σ’)1/2、Σ’はσ、σおよびσを対角要素に持ちそれ以外の要素が0である3×3行列、L’はσ、σおよびσに対応するDの特異ベクトルを左から順に並べた行列である、ステップと、
    行列Eから、行列Cを計算するステップと、
    行列Cから、該3次元座標s(X,Y,Z)および該変換を表す行列Mを計算するステップと
    を含み、
    該σ、σおよびσに対する行列Dの特異ベクトルを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ Iに対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、方法。
  2. 与えられた文書に含まれる情報であって、与えられたキーワードに関連する情報を検索する方法であって、
    該キーワードに対応する質問ベクトルqを受け取るステップと、
    該文書に対応する索引語文書行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップと、
    行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、
    k<rなるkを選択するステップと、
    行列Dの擬似行列Dを計算するステップであって、行列Dは、σ,σ,・・・,σを対角要素としそれ以外の要素が0である行列Σ、σ,σ,・・・,σに対応する特異ベクトルのみを左から順に並べた左右直交行列U,Vを用いて、D=UΣ と定義される、ステップと、
    行列Dと質問ベクトルqとの類似度を計算するステップと、
    該計算された類似度を基準に、検索結果を出力するステップと
    を包含し、
    該行列Dの左右直交行列U,Vを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ I(j=1,2,・・・,k)に対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、方法。
  3. 物体の複数の2次元画像から3次元画像を復元する画像復元処理をコンピュータに実行させるプログラムであって、
    該画像復元処理は、
    2次元画像j(j=1,・・・,m、mは3以上の整数)における特徴点i(i=1,・・・,n、nは2以上の整数)の座標dij(xij,yij)を抽出するステップと、
    該特徴点の2次元座標dij(xij,yij)より、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算するステップと
    を包含し、
    該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算するステップは、
    行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップであって、行列Dは、
    と定義される、ステップと、
    行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、
    σ、σおよびσに対する行列Dの特異ベクトルを求めるステップと、
    M=M’Cなる行列Cに対して、E=CCを満たす行列Eを計算するステップであって、M’=L’(Σ’)1/2、Σ’はσ、σおよびσを対角要素に持ちそれ以外の要素が0である3×3行列、L’はσ、σおよびσに対応するDの特異ベクトルを左から順に並べた行列である、ステップと、
    行列Eから、行列Cを計算するステップと、
    行列Cから、該3次元座標s(X,Y,Z)および該変換を表す行列Mを計算するステップと
    を含み、
    該σおよびσに対する行列Dの特異ベクトルを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ Iに対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、プログラム。
  4. 与えられた文書に含まれる情報であって、与えられたキーワードに関連する情報を検索する文書検索処理をコンピュータに実行させるプログラムであって、
    該文書検索処理は、
    該キーワードに対応する質問ベクトルqを受け取るステップと、
    該文書に対応する索引語文書行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求めるステップと、
    行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求めるステップと、
    k<rなるkを選択するステップと、
    行列Dの擬似行列Dを計算するステップであって、行列Dは、σ,σ,・・・,σを対角要素としそれ以外の要素が0である行列Σ、σ,σ,・・・,σに対応する特異ベクトルのみを左から順に並べた左右直交行列U,Vを用いて、D=UΣ と定義される、ステップと、
    行列Dと質問ベクトルqとの類似度を計算するステップと、
    該計算された類似度を基準に、検索結果を出力するステップと
    を包含し、
    該行列Dの左右直交行列U,Vを求めるステップは、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ I(j=1,2,・・・,k)に対してツイスティッド分解を実行することにより、行列BBを対角化するステップを含み、Iは単位行列である、プログラム。
  5. 物体の複数の2次元画像を3次元画像に復元する装置であって、
    m枚(mは3以上の整数)の2次元画像を受け取る手段と、
    2次元画像j(j=1,・・・,m)における特徴点i(i=1,・・・,n、nは2以上の整数)の座標dij(xij,yij)を抽出する手段と、
    該特徴点の2次元座標dij(xij,yij)より、該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算する手段と
    を備え、
    該特徴点の3次元座標s(X,Y,Z)および2次元座標から3次元座標への変換を表す行列Mを計算する手段は、
    行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求める手段であって、行列Dは、
    と定義される、手段と、
    行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求める手段と、
    σ、σおよびσに対する行列Dの特異ベクトルを求める手段と、
    M=M’Cなる行列Cに対して、E=CCを満たす行列Eを計算する手段であって、M’=L’(Σ’)1/2、Σ’はσ、σおよびσを対角要素に持ちそれ以外の要素が0である3×3行列、L’はσ、σおよびσに対応するDの特異ベクトルを左から順に並べた行列である、手段と、
    行列Eから、行列Cを計算する手段と、
    行列Cから、該3次元座標s(X,Y,Z)および該変換を表す行列Mを計算する手段と
    を含み、
    該σ、σおよびσに対する行列Dの特異ベクトルを求める手段は、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ Iに対してツイスティッド分解を実行することにより、行列BBを対角化する手段を含み、Iは単位行列である、装置。
  6. 与えられた文書に含まれる情報であって、与えられたキーワードに関連する情報を検索する装置であって、
    該キーワードに対応する質問ベクトルqを受け取る手段と、
    該文書に対応する索引語文書行列Dに対して上2重対角化を行い、行列Dの上2重対角行列Bを求める手段と、
    行列Dの特異値として行列Bの特異値σ(σ≧σ≧・・・≧σ>0、rは、行列Dのランクに等しい)を求める手段と、
    k<rなるkを選択する手段と、
    行列Dの擬似行列Dを計算する手段であって、行列Dは、σ,σ,・・・,σを対角要素としそれ以外の要素が0である行列Σ、σ,σ,・・・,σに対応する特異ベクトルのみを左から順に並べた左右直交行列U,Vを用いて、D=UΣ と定義される、手段と、
    行列Dと質問ベクトルqとの類似度を計算する手段と、
    該計算された類似度を基準に、検索結果を出力する手段と
    を包含し、
    該行列Dの左右直交行列U,Vを求める手段は、ミウラ型逆変換と、sdLVvs変換と、rdLVvs変換と、ミウラ型変換とを用いて行列BB−σ I(j=1,2,・・・,k)に対してツイスティッド分解を実行することにより、行列BBを対角化する手段を含み、Iは単位行列である、装置。
JP2006514122A 2004-06-03 2005-06-01 行列の高速高精度特異値分解方法、プログラムおよび装置 Active JP4325877B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004166437 2004-06-03
JP2004166437 2004-06-03
PCT/JP2005/010084 WO2005119507A1 (ja) 2004-06-03 2005-06-01 行列の高速高精度特異値分解方法、プログラムおよび装置

Publications (2)

Publication Number Publication Date
JPWO2005119507A1 JPWO2005119507A1 (ja) 2008-07-31
JP4325877B2 true JP4325877B2 (ja) 2009-09-02

Family

ID=35463067

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006514122A Active JP4325877B2 (ja) 2004-06-03 2005-06-01 行列の高速高精度特異値分解方法、プログラムおよび装置

Country Status (5)

Country Link
US (1) US8306361B2 (ja)
EP (1) EP1752884B1 (ja)
JP (1) JP4325877B2 (ja)
CA (1) CA2568852C (ja)
WO (1) WO2005119507A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5011545B2 (ja) * 2005-12-05 2012-08-29 国立大学法人京都大学 特異値分解装置、及び特異値分解方法
JP4929828B2 (ja) * 2006-05-10 2012-05-09 日本電気株式会社 立体性認証方法、立体性認証装置および立体性認証プログラム
US7840060B2 (en) * 2006-06-12 2010-11-23 D&S Consultants, Inc. System and method for machine learning using a similarity inverse matrix
WO2008018188A1 (fr) * 2006-08-08 2008-02-14 Kyoto University dispositif de décomposition de valeur propre et procédé de décomposition de valeur propre
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8396914B1 (en) * 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8539014B2 (en) * 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
JP2012234258A (ja) * 2011-04-28 2012-11-29 Sony Corp 画像処理装置と画像処理方法およびプログラム
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
JP5035467B2 (ja) * 2011-10-24 2012-09-26 日本電気株式会社 立体性認証方法、立体性認証装置および立体性認証プログラム
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
CN104156906B (zh) * 2013-05-13 2017-10-27 国家电网公司 数字图像处理方法及装置
KR20160021872A (ko) * 2013-06-29 2016-02-26 생-고뱅 세라믹스 앤드 플라스틱스, 인코포레이티드 조밀한 장벽층을 가지는 고체 산화물 연료전지
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
CN103473769B (zh) * 2013-09-05 2016-01-06 东华大学 一种基于奇异值分解的织物瑕疵检测方法
US9697177B1 (en) 2016-10-13 2017-07-04 Sas Institute Inc. Analytic system for selecting a decomposition description of sensor data
CN109241231A (zh) * 2018-09-07 2019-01-18 武汉中海庭数据技术有限公司 高精度地图数据的预处理装置及方法
WO2020213757A1 (ko) 2019-04-17 2020-10-22 엘지전자 주식회사 단어 유사도 판단 방법
US11393127B2 (en) 2019-09-13 2022-07-19 Toyota Research Institute, Inc. 2D to 3D line-based registration with unknown associations
CN111046299B (zh) * 2019-12-11 2023-07-18 支付宝(杭州)信息技术有限公司 针对关系网络的特征信息提取方法及装置
CN114088401A (zh) * 2021-11-03 2022-02-25 宁波坤博测控科技有限公司 一种用于风力发电机的滚动轴承的故障分析方法及装置
CN114756812A (zh) * 2022-03-02 2022-07-15 哈尔滨工程大学 一种基于奇异值分解与信息熵的证据修正方法
CN115018721A (zh) * 2022-05-19 2022-09-06 西安中科立德红外科技有限公司 一种基于多尺度分析与奇异值分解的非均匀性校正方法
CN115484354B (zh) * 2022-09-14 2024-02-23 姜川 一种基于四元数矩阵奇异值分解的彩色图像压缩方法
CN115712911A (zh) * 2022-11-17 2023-02-24 江苏大道云隐科技有限公司 战略性数据数据阴影提取及重建方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1031747A (ja) 1996-07-15 1998-02-03 Mitsubishi Electric Corp 三次元情報抽出装置および三次元情報抽出方法
US6009190A (en) * 1997-08-01 1999-12-28 Microsoft Corporation Texture map construction method and apparatus for displaying panoramic image mosaics
US6134541A (en) * 1997-10-31 2000-10-17 International Business Machines Corporation Searching multidimensional indexes using associated clustering and dimension reduction information
US6314419B1 (en) * 1999-06-04 2001-11-06 Oracle Corporation Methods and apparatus for generating query feedback based on co-occurrence patterns
US6993179B1 (en) * 2000-08-07 2006-01-31 Koninklijke Philips Electronics N.V. Strapdown system for three-dimensional reconstruction
JP3701197B2 (ja) 2000-12-28 2005-09-28 松下電器産業株式会社 分類への帰属度計算基準作成方法及び装置
US7194112B2 (en) * 2001-03-12 2007-03-20 Eastman Kodak Company Three dimensional spatial panorama formation with a range imaging system
JP5011545B2 (ja) * 2005-12-05 2012-08-29 国立大学法人京都大学 特異値分解装置、及び特異値分解方法
JP4649635B2 (ja) * 2006-08-02 2011-03-16 独立行政法人科学技術振興機構 画像特徴抽出方法および画像圧縮方法
WO2008018188A1 (fr) * 2006-08-08 2008-02-14 Kyoto University dispositif de décomposition de valeur propre et procédé de décomposition de valeur propre
US8107735B2 (en) * 2007-04-10 2012-01-31 Denso Corporation Three dimensional shape reconstitution device and estimation device

Also Published As

Publication number Publication date
CA2568852A1 (en) 2005-12-15
EP1752884B1 (en) 2013-04-03
CA2568852C (en) 2013-01-22
US8306361B2 (en) 2012-11-06
WO2005119507A1 (ja) 2005-12-15
EP1752884A1 (en) 2007-02-14
US20090028455A1 (en) 2009-01-29
JPWO2005119507A1 (ja) 2008-07-31
EP1752884A4 (en) 2010-08-25

Similar Documents

Publication Publication Date Title
JP4325877B2 (ja) 行列の高速高精度特異値分解方法、プログラムおよび装置
Leon et al. Gram‐Schmidt orthogonalization: 100 years and more
Moler et al. Nineteen dubious ways to compute the exponential of a matrix, twenty-five years later
Neumaier Solving ill-conditioned and singular linear systems: A tutorial on regularization
Améndola et al. Moment varieties of Gaussian mixtures
JP5011545B2 (ja) 特異値分解装置、及び特異値分解方法
JP5017666B2 (ja) 固有値分解装置、及び固有値分解方法
Klassen et al. Geodesics between 3D closed curves using path-straightening
US10580114B2 (en) Methods and systems for real time 3D-space search and point-cloud registration using a dimension-shuffle transform
Oh et al. High-performance tucker factorization on heterogeneous platforms
WO2021198292A1 (en) Efficient computational inference using gaussian processes
Kruff et al. Algorithmic reduction of biological networks with multiple time scales
CN110442678B (zh) 一种文本字词权重计算方法及系统、存储介质及终端
CN110945499B (zh) 应用维度混洗变换的实时三维空间搜索与点云配准的方法与系统
CN115292672A (zh) 一种基于机器学习的公式模型构建方法、系统及装置
Simić et al. Tight error analysis in fixed-point arithmetic
Graner Scalable Algorithms in NonparametricComputational Statistics
Emiris Toric resultants and applications to geometric modelling
Meyer Wrestling with a WOMBAT: selected new features for linear mixed model analyses in the genomic age
Lee et al. RankRev: aMatlab package for computing the numerical rank and updating/downdating
Zhao et al. Numerical Behavior of Mixed Precision Iterative Refinement Using the BiCGSTAB Method
Pietras et al. FPGA implementation of logarithmic versions of Baum-Welch and Viterbi algorithms for reduced precision hidden Markov models
Feuerriegel et al. The non-symmetric s-step Lanczos algorithm: Derivation of efficient recurrences and synchronization-reducing variants of BICG and QMR
Zeng The approximate irreducible factorization of a univariate polynomial: revisited
Polok Accelerated sparse matrix operations in nonlinear least squares solvers

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090603

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090604

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4325877

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130619

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250