JP2015118455A - 行列圧縮装置、制御方法、及びプログラム - Google Patents

行列圧縮装置、制御方法、及びプログラム Download PDF

Info

Publication number
JP2015118455A
JP2015118455A JP2013260346A JP2013260346A JP2015118455A JP 2015118455 A JP2015118455 A JP 2015118455A JP 2013260346 A JP2013260346 A JP 2013260346A JP 2013260346 A JP2013260346 A JP 2013260346A JP 2015118455 A JP2015118455 A JP 2015118455A
Authority
JP
Japan
Prior art keywords
compression
row
column
target matrix
matrix
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.)
Granted
Application number
JP2013260346A
Other languages
English (en)
Other versions
JP6237193B2 (ja
Inventor
昌史 小山田
Masafumi Oyamada
昌史 小山田
和世 成田
Kazuyo Narita
和世 成田
健全 劉
Jianquan Liu
健全 劉
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2013260346A priority Critical patent/JP6237193B2/ja
Publication of JP2015118455A publication Critical patent/JP2015118455A/ja
Application granted granted Critical
Publication of JP6237193B2 publication Critical patent/JP6237193B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

【課題】行列の各行又は各列を連長圧縮する際の圧縮率を向上させる。
【解決手段】行列圧縮装置2000は、対象行列取得部2020、置換部2040、及び圧縮部2060を有する。対象行列取得部2020は、複数の要素を有する対象行列を取得する。置換部2040は、対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又は列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの代表値に置き換える。圧縮部2060は、置換部2040によって変換された対象行列を行方向又は列方向について連長圧縮する。
【選択図】図1

Description

本発明は、行列圧縮装置、制御方法、及びプログラムに関する。
行列計算は、数値計算、データマイニング、機械学習をはじめとする種々の分野で利用される。行列計算の対象となる行列のサイズは、計算資源の発展に伴い大きくなってきている。このような大きな行列は、コンピュータの記憶領域を圧迫する。また、このような大きな行列を対象として行う行列計算は、長い時間を要する。そこで、大きな行列を扱う際に、行列を格納するために必要な記憶容量を削減すること、及び行列計算にかかる時間を削減することが求められている。
これに対し、行列を圧縮することで行列のサイズを小さくする技術が提案されている。行列のサイズを小さくすることで、行列計算の速度向上や、行列を記憶するために必要な記憶容量の削減といった効果が得られる。この技術の一例は、例えば非特許文献1に記載されている。
行列を圧縮する方法の1つとして、連長圧縮が挙げられる。連長圧縮は、データ列を「データの値、その値が連続する回数」の組み合わせを用いて表現することで、データ列のサイズを小さくする方法である。例えば、「AAABBCCCC」というデータ列があるとする。ここで、各アルファベットは1つのデータを表しているとする。このデータ列を連長圧縮すると、「A3B2C4」というデータ列となる。行列の各行又は各列を連長圧縮することで、行列のサイズを小さくすることができる。
さらに、特許文献1は、行列の各列を連長圧縮する際に、連長圧縮をする前に行列の行をソートすることで連長圧縮の効率を高める方法を開示している。
特表2009−517782号公報
S. Rendle、「Scaling factorization machines to relational data」、Proceedings of Very Large Data Bases Endowment、Volume 6、Issue 5、pp.337-348、2013年3月 J. MacQueen、「Some methods for classification and analysis of multivariate observations」、Proceedings of Fifth Berkeley Symposium on Mathematical Statistics and Probability、1967年 J. H. Friedman, T. Hastie, and R. Tibshirani、「Regularization paths for generalized linear models via coordinate descent」、Journal of Statistical Software、Volume 33、Issue 1、pp.1-22、2010年1月 L. Bottou and O. Bousquet、「The tradeoffs of large scale learning」、Advances in Neural Information Processing Systems、2008年
データ列を連長圧縮する場合、データ列の中で同一の値が連続していないと圧縮率が低い。特許文献1は行列の行をソートしてから各列を連長圧縮することで連長圧縮の圧縮率を高めているものの、各列が同一の要素をほとんど有していない場合などにおいては効果が小さい。
本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、行列の各行又は各列を連長圧縮する際の圧縮率を向上させる技術を提供することである。
本発明が提供する行列圧縮装置は、複数の要素を有する対象行列を取得する対象行列取得手段と、前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換手段と、前記置換手段によって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮手段と、を有する。
本発明が提供する制御方法は、コンピュータによって実行される。当該制御方法は、複数の要素を有する対象行列を取得する対象行列取得ステップと、前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換ステップと、前記置換ステップによって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮ステップと、を有する。
本発明が提供するプログラムは、コンピュータに、本発明が提供する行列圧縮装置の各機能構成部によって実現される機能を持たせる。
本発明によれば、行列の各行又は各列を連長圧縮する際の圧縮率を向上させる技術が提供される。
実施形態1に係る行列圧縮装置を例示するブロック図である。 対象行列の行に含まれる要素を代表値で置換する例を示す図である。 行列圧縮装置のハードウエア構成を例示するブロック図である。 実施形態1の行列圧縮装置において実行される処理の流れを例示するフローチャートである。 グルーピング方法1を用いたグループ分けを例示する図である。 図5に示した行 i について、同一の部分値域に含まれており、かつ隣接している要素のみを同一のグループに分ける処理を例示する図である。 実施形態3に係る行列圧縮装置を例示するブロック図である。 ソート方法1において2つの行を比較する処理を例示する図である。 ソート方法1の具体例を示す図である。 ソート方法2において2つの行を比較する処理を例示する図である。 ソート方法2の具体例を示す図である。 実施形態3の行列圧縮装置において実行される処理の流れを例示するフローチャートである。 実施形態4に係る行列圧縮装置を例示するブロック図である。 圧縮方向格納部と通信可能に接続されている行列圧縮装置を例示するブロック図である。 圧縮方向格納部に格納されている情報をテーブル形式で例示する図である。 実施形態4の行列圧縮装置において実行される処理の流れを例示するフローチャートである。 実施形態5に係る行列圧縮装置を例示するブロック図である。 実施形態5の行列圧縮装置において実行される処理の流れを例示するフローチャートである。
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
[実施形態1]
図1は、実施形態1に係る行列圧縮装置2000を例示するブロック図である。図1において、矢印は情報の流れを表している。さらに、図1において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
行列圧縮装置2000は、対象行列取得部2020、置換部2040、及び圧縮部2060を有する。以下、それぞれについて説明する。
<対象行列取得部2020>
対象行列取得部2020は、複数の要素を有する対象行列を取得する。ここで、対象行列が示す要素は、数値であってもよいし、文字であってもよい。
対象行列取得部2020が対象行列を取得する方法は様々である。例えば対象行列取得部2020は、外部の装置から入力される対象行列を取得する。その他にも例えば、対象行列取得部2020は、手動で入力される対象行列を取得する。さらに対象行列取得部2020は、外部の装置にアクセスして、対象行列を取得してもよい。
<置換部2040>
置換部2040は、対象行列の行又は列ごとに代表値を算出し、その代表値を用いて要素の置き換えを行う。対象行列が行について代表値を算出する場合、置換部2040は、各行に含まれる要素を用いて、その行に含まれる要素の数より少ない個数の代表値を算出する。そして、置換部2040は、各行に含まれる各要素の値を、その行について算出した代表値のいずれかで置き換える。一方、対象行列が列について代表値を算出する場合、置換部2040は、各列に含まれる要素を用いて、その列に含まれる要素の数より少ない個数の代表値を算出する。そして、置換部2040は、各列に含まれる各要素の値を、その列について算出した代表値のいずれかで置き換える。
<圧縮部2060>
圧縮部2060は、置換部2040によって置換が行われた対象行列を行方向又は列方向について連長圧縮を行う。置換部2040が対象行列の各行について代表値を算出する場合、圧縮部2060は各行を連長圧縮する。一方、置換部2040が対象行列の各列について代表値を算出する場合、圧縮部2060は各列を連長圧縮する。
圧縮部2060が連長圧縮を行う方向(以下、圧縮方向)は、予め固定されていてもよい。また、圧縮部2060は、圧縮方向を取得したり決定したりする機能を有していてもよい。
図2は、対象行列の行に含まれる要素を代表値で置換する例を示す図である。図2の対象行列において、置換前の行 i は「1.9, 2.0, 2.1, 0.9, 1.1」という行である。このままでは、行 i には連長圧縮できる箇所がないため、圧縮部2060を動作させても行 i のサイズは小さくならない。そこで、例えば置換部2040は、行 i の代表値として、2.0 と 1.0 を算出する。そして、置換部2040は、行 i の各要素を上記2つの代表値のいずれかで置き換えることで、例えば行 i を「2.0, 2.0, 2.0, 1.0, 1.0」に変換する。これにより、圧縮部2060は、行 i を「(2.0, 3), (1.0, 2)」に連長圧縮することができ、行 i の要素数が削減される。
<ハードウエア構成>
行列圧縮装置2000が有する各機能構成部は、例えば、個々に又は複数組み合わせられた状態で、少なくとも1つのハードウエア構成要素として実現される。その他にも例えば、各機能構成部は、少なくとも1つのソフトウエア構成要素として実現される。その他にも例えば、各機能構成部は、ハードウエア構成要素とソフトウエア構成要素の組み合わせにより実現される。
図3は、行列圧縮装置2000のハードウエア構成を例示するブロック図である。図3において、行列圧縮装置2000は、バス1020、プロセッサ1040、メモリ1060、及びストレージ1080を有する。
バス1020は、プロセッサ1040、メモリ1060、及びストレージ1080が、相互にデータを送受信するためのデータ伝送路である。プロセッサ1040は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ1060は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ1080は、例えばハードディスク、SSD (Solid State Drive)、又はメモリカードなどの記憶装置である。また、ストレージ1080は、RAM や ROM 等のメモリであってもよい。
対象行列取得モジュール1220は、行列圧縮装置2000に、対象行列取得部2020の機能を持たせるためのプログラムである。プロセッサ1040は、対象行列取得モジュール1220を実行することで、対象行列取得部2020の機能を実現する。
置換モジュール1240は、行列圧縮装置2000に、置換部2040の機能を持たせるためのプログラムである。プロセッサ1040は、置換モジュール1240を実行することで、置換部2040の機能を実現する。
圧縮モジュール1260は、行列圧縮装置2000に、圧縮部2060の機能を持たせるためのプログラムである。プロセッサ1040は、圧縮モジュール1260を実行することで、圧縮部2060の機能を実現する。
例えばプロセッサ1040は、上記各モジュールをメモリ1060上に読み出して実行する。ただし、プロセッサ1040は、上記各モジュールを、メモリ1060上に読み出さずに実行してもよい。
ストレージ1080は、上記各モジュールを格納する。
行列圧縮装置2000のハードウエア構成は、図3に示した構成に限定されない。例えば、各モジュールはメモリ1060に格納されてもよい。この場合、行列圧縮装置2000は、ストレージ1080を備えていなくてもよい。
<処理の流れ>
図4は、実施形態1の行列圧縮装置2000において実行される処理の流れを例示するフローチャートである。図4は、圧縮部2060が行方向について連長圧縮を行う場合の処理の流れを示している。
ステップS102において、対象行列取得部2020は対象行列を取得する。ステップS104からS110は、対象行列の各行について実行されるループ処理Aである。ステップS104において、置換部2040は、i < N が満たされているか否かを判定する。ここで、i は行番号であり、N は対象行列の行数である。i の初期値は 0 である。i < N が満たされている場合、図4の処理はステップS106に進む。一方、i < N が満たされていない場合、図4の処理はステップS112に進む。
ステップS106において、置換部2040は、i 番目の行に含まれる要素を用いて、i 番目の行の代表値を算出する。ここで算出される代表値の個数は、i 番目の行に含まれる要素の数より少ない。ステップS108において、置換部2040は、i 番目の行に含まれる各要素を、ステップS106で算出した代表値のいずれかで置き換える。ステップS110はループ処理Aの終端である。ステップS110において、図4の処理は図114に進む。なお、ステップS110からステップS104に進んだ場合、ステップS104において置換部2040は、i に 1 を加算し、その後に、i < N が満たされているか否かの判定を行う。
ステップS112において、圧縮部2060は、各行を連長圧縮する。
なお、図4に示す処理の流れは例示であり、同様の結果が得られる範囲で処理の流れを変更してもよい。例えば、ステップS112を実行する代わりに、ステップS108と110の間において、行 i の各要素を代表値のいずれかで置き換える処理を行うようにしてもよい。
圧縮部2060が列方向について連長圧縮を行う場合の処理は、図4において「行」を「列」に置き換えることで実現できる。
<作用・効果>
本願発明によれば、対象行列の各行又は各列の要素が、その行又はその列の要素の数より少ない個数の代表値のいずれかによって置換される。したがって、対象行列の各行又は各列において、同一の値の要素が連続する確率が高くなる。よって、対象行列の行又は列を連長圧縮する際の圧縮率が向上する。
行列計算によっては、対象行列の要素をその要素と近い値に置き換えても、計算結果に与える影響が小さかったり、計算結果に与える影響がなかったりする。例えば、対象行列の要素は小数点以下1桁まで表されている場合でも、対象行列を利用する計算によっては、小数点以下1桁までの精度は求められておらず、要素を整数で近似してもよい場合などがある。また、行列計算を利用する状況によっては、計算の精度が多少下がることは問題ないものの、計算時間が長くなることや使用する記憶領域が多いことは許容できない場合もある。行列圧縮装置2000は、これらの場合に特に好適に用いることができる。
[実施形態2]
実施形態2に係る行列圧縮装置2000は、実施形態1に係る行列圧縮装置2000と同様に、図1で表される。
実施形態2の置換部2040は、対象行列の行又は列ごとに、その行又はその列に含まれる要素を複数のグループに分ける。そして、置換部2040は、グループごとに、そのグループに含まれる要素に基づいて代表値を算出する。さらに、置換部2040は、各要素をその要素が属するグループについて算出した代表値で置き換える。対象行列が行について代表値を算出する場合、置換部2040は、行ごとに、その行に含まれる要素を複数のグループに分ける。一方、対象行列が列について代表値を算出する場合、置換部2040は、列ごとに、その列に含まれる要素を複数のグループに分ける。
例えば置換部2040は、グループに含まれる要素の統計値を、そのグループの代表値として算出する。また例えば、置換部2040は、グループに含まれる要素の中から1つを選択し、その要素の値を代表値としてもよい。この場合、この1つの要素は、グループに含まれる要素の中からランダムに選択されてもよいし、行番号又は列番号が最も小さい又は大きいなどの条件で選択されてもよい。
<グルーピング方法1>
例えば置換部2040は、行又は列に含まれる要素の値域を所定幅で分割した値域(以下、部分値域)を1つのグループとする。例えば置換部2040は、ある行に含まれる要素をグループに分ける場合、その行に含まれる要素の値域を算出する。そして、置換部2040は、その値域を所定幅で分割することで、その行を複数の部分値域に分ける。そして、各部分値域を1つのグループとする。なお、上記所定幅は、全ての行で共通であってもよいし、行ごとに定められていてもよい。また、置換部2040は、行に含まれる値域を所定数のグループに分割してもよい。この場合、この所定数は全ての行で共通であってもよいし、行ごとに定められていてもよい。
なお、置換部2040が算出する値域は、行又は列に含まれる要素の値域を含んでいればよく、行又は列に含まれる要素の値域より広い範囲であってもよい。例えば、ある行に「51, 55, 59」という3つの要素が含まれているとする。この場合、置換部2040は、この行の値域を [51, 59] と算出してもよいし、例えば [50, 60] などのように広い範囲として算出してもよい。
上述した方法は、置換部2040が各列をグループに分ける場合についても同様である。
具体例を用いて、置換部2040の動作を説明する。図5は、グルーピング方法1を用いてグループ分けを行う処理を概念的に示す図である。図5に示す例において、置換部2040は、行 i の値域を分割するための基準値β及び所定幅σを取得する。そして、置換部2040は、行の値域を [β, β+δ)、[β+σ, β+2δ)、[β+2σ, β+3δ)、・・・という部分値域に分割する。
置換部2040が、「62.5, 63.0, 64.5, 72.5, 64.7」という行 i について要素の置換を行うとする。ここで、β=60.0、σ=5.0 であるとする。まず、置換部2040は、行 i の要素の値域として、[60.0, 70.0] を算出する。そして、置換部2040は、この値域を、[60.0, 65.0)、[65.0, 70.0), [70.0, 75.0] という3つの部分値域に分ける。置換部2040は、同一の部分値域に含まれる要素を同一のグループに分ける。ここで、[60.0, 65.0) に含まれる要素のグループを G1、[65.0, 70.0) に含まれる要素のグループを G2、[70.0, 75.0] に含まれる要素のグループを G3 と表記する。
そして、置換部2040は、各グループに含まれる要素の平均値を、そのグループの代表値として算出する。例えば、グループ G1 に含まれる要素は、62.5, 63.0, 64.5, 64.7の4つである。そこで、置換部2040は、グループ G1 の代表値として、63.7 を算出する。また、グループ G2 には要素が含まれないため、置換部2040は、グループ G2 の代表値を算出しない。さらに、グループ G3 に含まれる要素は 72.5 のみであるため、置換部2040は、グループ G3 の代表値を 72.5 とする。以上により、置換部2040は、行 i を、「63.7, 63.7, 63.7, 72.5, 63.7」に置換する。
なお、置換部2040は、同一の部分値域に含まれており、かつ隣接している要素のみを、同一のグループに含めるようにしてもよい。図6は、図5に示した行 i について、同一の部分値域に含まれており、かつ隣接している要素のみを同一のグループに分ける処理を概念的に示す図である。例えば置換部2040は、行 i の先頭から順に要素をグループに分けていく。1番目の要素である 62.5 は、[60.0, 65.0) に含まれる。そこで置換部2040は、2番目以降の要素が [60.0, 65.0) に含まれるかを順次判定していき、[60.0, 65.0) に含まれない要素が見つかるまで、各要素をグループ G1 の要素としていく。この例では、4番目の要素である 72.5 が [60.0, 65.0) に含まれないため、1番目から3番目までの要素をグループ G1 の要素とする。
ここで、5番目の要素である 64.7 は、1番目から3番目の要素と同様に [60.0, 65.0) に含まれている。しかし、上述のように、同一の部分値域に属し、かつ隣接している要素のみを同一のグループに分けるため、5番目の要素はグループ G1 の要素にはならない。その結果、図7では、行 i の要素をグループに分けた結果が、図5の場合と異なる。そのため、置換部2040が各グループについて算出する代表値も異なる。その結果、図7において置換部2040が行i の各要素を代表値で置換した結果は、図5の場合と異なる。
行又は列に含まれる要素の値域を所定幅で分割する方法を用いる場合、適切な所定幅を設定することで、代表値が元の要素の値から乖離する程度を意図した範囲に収めることが容易となる。例えば所定幅を 5 とし、代表値としてグループに含まれる要素の統計値を利用する場合、代表値と元の要素の値との差を 5 以下にすることができる。
なお、隣接している要素のみを同一のグループに分けるようにした方が、代表値と元の要素の値との乖離は小さくなる。また、連長圧縮は隣接している要素について行われるため、隣接している要素のみを同一のグループに分けるようにしても、連長圧縮の圧縮率には影響しない。一方、隣接しているか否かに関わらず同じ部分値域に属している要素を同一のグループに分ける方法の方には、グループ分けの処理が単純であるため、グループ分けにかかる時間が比較的短いという利点がある。
<グルーピング方法2>
置換部2040が各行又は各列の要素をグループに分ける別の方法として、k-means クラスタリングを利用する方法がある。k-means クラスタリングを行うと、k 個のクラスタが生成される。置換部2040は、生成された各クラスタを1つのグループとする。ここで、k-means クラスタリングは既知の技術であるため、k-means クラスタリングに関する詳細な説明は省略する。例えば k-means クラスタリングの具体的な方法は、非特許文献2に記載されている。
ある行に含まれる要素を複数のグループに分ける場合、置換部2040は、その行に含まれる要素を k-means クラスタリングでクラスタリングする。同様に、ある列に含まれる要素を複数のグループに分ける場合、置換部2040は、その列に含まれる要素を k-means クラスタリングでクラスタリングする。
置換部2040がクラスタ数を決定する方法は様々である。例えば置換部2040は、クラスタ数を取得し、取得したクラスタ数を用いる。置換部2040がクラスタ数を取得する方法は様々である。例えば置換部2040は、外部の装置から入力されるクラスタ数を取得する。その他にも例えば、置換部2040は、手動で入力されるクラスタ数を取得する。さらに置換部2040は、外部の装置にアクセスして、クラスタ数を取得してもよい。
その他にも例えば、置換部2040は、対象行列の行又は列に含まれる要素の数に基づいて、クラスタ数を決定してもよい。例えば置換部2040は、対象行列の行に含まれる要素の数の所定割合の値を計算し、この値をクラスタ数とする。例えば、所定割合を 1/3 とし、ある行に含まれる要素の数が 9 個であるとする。この場合、置換部2040は、クラスタ数を 9 × 1/3 = 3 とする。なお、置換部2040がこの所定割合を取得する方法は、上述したクラスタ数を取得する方法と同様である。
なお、クラスタ数は全ての行又は列に共通であってもよいし、行又は列ごとに異なっていてもよい。
k-means クラスタリングを用いて行又は列の要素をグループに分ける場合、行列に含まれる要素の値を考慮せずにグループの数を決定できるという利点がある。これにより、例えばグループの数を、圧縮された対象行列を利用する計算の計算時間をどの程度削減したいか又は圧縮された対象行列のサイズをどの程度削減したいかという連長圧縮の圧縮率向上に対する要望と、圧縮された対象行列を利用する計算に求められる精度とのトレードオフを考慮した上で決定することができる。
[実施形態3]
図7は、実施形態3に係る行列圧縮装置2000を例示するブロック図である。図7において、矢印は情報の流れを表している。さらに、図7において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
実施形態3の行列圧縮装置2000は、ソート部2070をさらに有する。ソート部2070は、圧縮部2060が対象行列を連長圧縮する前に、対象行列の行又は列をソートする。具体的には、置換部2040は、圧縮部2060が行方向について連長圧縮を行う場合は対象行列の列をソートする。一方、置換部2040は、圧縮部2060が列方向について連長圧縮を行う場合は対象行列の行をソートする。なお、ソート部2070は、置換部2040が動作する前に動作してもよいし、置換部2040が動作した後に動作してもよい。
実施形態3の行列圧縮装置2000によれば、対象行列の行又は列をソートするため、列方向又は行方向において同一の要素が連続する確率が高くなる。そのため、連長圧縮の圧縮率が確率的に向上する。
なお、行列を利用した計算においては、行又は列の順序を入れ替えても、計算結果に影響を与えない場合がある。例えば機械学習において教師データの集合を行列で表しており、かつ各行が独立した教師データである場合、行の順序を入れ替えて学習を実行しても学習の結果に影響を与えないことが多い。実施形態3の行列圧縮装置2000は、このように行列の行又は列の順序を入れ替えてもその行列を利用した計算の結果に影響を与えない場合に利用されることが好適である。
<ソート方法1>
例えばソート部2070は、対象行列の行又は列を1つの単語とみなした場合に行又は列が辞書順に並ぶように、対象行列の行又は列をソートする。この方法を、ソート方法1と表記する。対象行列の行をソートする場合、ソート部2070は、各行を1つの単語とみなした場合に行が辞書順に並ぶように、行をソートする。一方、対象行列の列をソートする場合、ソート部2070は、各列を1つの単語とみなした場合に列が辞書順に並ぶように、列をソートする。このソート方法は、「辞書式ソート」などの呼び方で知られている。
図8は、ソート方法1において2つの行を比較する処理を例示する図である。図8における N は、対象行列の列数を表している。このように、ソート方法1では、2つの行を先頭の要素から順に比較していく。
図9は、ソート方法1を利用する場合の具体例を示す図である。図9において、圧縮方向は列方向である。また、対象行列 a-1 は、置換部2040によって各列の要素を代表値に置き換えたものである。
対象行列 a-2 は、圧縮部2060が対象行列 a-1 を連長圧縮することで得られる行列である。一方、対象行列 a-4 は、圧縮部2060が対象行列 a-3 を連長圧縮することで得られる行列である。対象行列 a-3 は、ソート部2070がソート方法1で対象行列 a-1 をソートしたものである。対象行列 a-2 と対象行列 a-4 を比較すると、点線で囲った部分において連長圧縮の圧縮率が向上している。
このように、ソート部2070がソート方法1で対象行列をソートしてから圧縮部2060が連長圧縮を行うことで、連長圧縮の圧縮率が向上する。
<ソート方法2>
その他にも例えば、ソート部2070は、以下に示す方法で対象行列の行又は列をソートしてもよい。以下に示す方法を、ソート方法2と表記する。まず、ソート部2070は、対象行列の行又は列ごとに優先度を算出する。ここで、ソート部2070は、行をソートする場合は各列の優先度を算出し、列をソートする場合は各行の優先度を算出する。そして、ソート部2070は、行をソートする場合、各行の比較を、優先度が高い列に位置する要素から順に行うことで、行をソートする。また、ソート部2070は、列をソートする場合、各列の比較を、優先度が高い行に位置する要素から順に行うことで、列をソートする。
図10は、ソート方法2において2つの行を比較する処理を例示する図である。図10における N は、図8の場合と同様に、対象行列の列数を表す。また、prioritized_column_index は、列番号を列の優先度順に並べた配列である。そのため、j には優先度順に列番号が代入される。よって、行の大小比較をその行における小さい列番号の要素(単語の先頭)から順に比較することで行うソート方法1と異なり、ソート方法2における行の大小比較は、その行における優先度が高い列番号の要素から順に行われる。
ソート部2070は、値が同一である要素を多く含む行又は列ほど優先度を高くすることが好ましい。例えばソート部2070は、対象行列の各行又は各列の濃度(Cardinality)を用いて、各行又は各列の優先度を算出する。ここで、行又は列の濃度は、その行又は列に含まれる要素の集合から重複する要素を排除した集合における要素の数で表される。例えば、ある行が「1, 2, 2, 3, 3, 4」である場合、この行の要素から重複を排除した集合は「1, 2, 3, 4」である。よって、この行の濃度は4である。
同一の要素数からなる行又は列を比較した場合、濃度が小さい行又は列の方が、重複している要素の数が多い。そこで、例えばソート部2070は、その行又は列の濃度の逆数(1/濃度)を算出し、その値をその行又は列の優先度とする。こうすると、行又は列の優先度が高いことは、その行又は列が重複している要素を多く含むことを意味するようになる。
図11は、ソート方法1を利用して行をソートしてから連長圧縮を行う場合と、ソート方法2を利用して行をソートしてから連長圧縮を行う場合とを具体的に比較する図である。図11において、圧縮方向は列方向である。また、対象行列 b-1 は、置換部2040によって各列の要素を代表値に置き換えたものである。
対象行列 b-3 は、圧縮部2060が対象行列 b-2 を連長圧縮することで得られる行列である。ここで、対象行列 b-2 は、ソート部2070がソート方法1で対象行列 b-1 をソートしたものである。対象行列 b-2 において列方向について連長圧縮できる箇所はないため、対象行列 b-2 と b-3 の内容は同じである。
一方、対象行列 b-5 は、圧縮部2060が対象行列 b-4 を連長圧縮することで得られる行列である。対象行列 b-4 は、ソート部2070がソート方法2で対象行列 b-1 をソートしたものである。ここで、1/濃度を優先度の値としている。そのため、対象行列 b-4 において列を優先度が高い順に並べると、列3、列2、列1の順になる。よって、ソート部2070は、各行の比較を、列3に位置する要素、列2に位置する要素、列1に位置する要素という順で行う。これにより、列3において重複する要素が、優先的に揃う結果となる。
対象行列 b-3 と対象行列 b-5 を比較すると、対象行列 b-5 の方が連長圧縮の圧縮率が高い。このように、ソート方法2で対象行列をソートした方が、ソート方法1で対象行列をソートするよりも連長圧縮の圧縮率が向上する場合がある。
ソート方法2に示したソート方法は、ソート方法1で示した辞書式ソートと比較して、連長圧縮の圧縮率が高くなる確率が高いという利点がある。一方、辞書式ソートを利用するソート方法1には、優先度の算出を行う必要がないため、ソートに要する時間が短いという利点がある。
<処理の流れ>
図12は、実施形態4の行列圧縮装置2000において実行される処理の流れを例示するフローチャートである。図12で例示されているのは、対象行列を行について連長圧縮する場合の処理の流れである。なお、図12のステップS102とステップS104は、図4のステップS102及びS104と同様の処理である。
ステップS102が実行された後、ステップS202において、ソート部2070は対象行列の列をソートする。そして、ステップS204において、置換部2040は、各行について代表値を算出し、各行の要素をその行について算出した代表値のいずれかで置き換える。ここで、ステップS204の処理は、図4のステップS104からステップS110で行われる処理と同様の処理である。
行列圧縮装置2000が列を連長圧縮する場合の処理は、図12において「列」を「行」と置き換え、かつ「行」を「列」と置き換えることで実現できる。
[実施形態4]
図13は、実施形態4に係る行列圧縮装置2000を例示するブロック図である。図13において、矢印は情報の流れを表している。さらに、図13において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
実施形態4の行列圧縮装置2000は、圧縮方向取得部2080を有する。圧縮方向取得部2080は圧縮方向を取得する。圧縮方向は、行方向又は列方向のいずれかを表す。
実施形態4の圧縮部2060は、圧縮方向が行方向を示している場合、対象行列の各行を連長圧縮する。一方、圧縮部2060は、圧縮方向が列方向を示している場合、対象行列の各列を連長圧縮する。
なお、実施形態4の行列圧縮装置2000がソート部2070を有する場合、ソート部2070は、圧縮方向が行方向であるときは列をソートし、圧縮方向が列方向であるときは行をソートする。
圧縮方向取得部2080が圧縮方向を取得する方法は様々である。例えば圧縮方向取得部2080は、外部の装置から入力される圧縮方向を取得する。その他にも例えば、圧縮方向取得部2080は、手動で入力される圧縮方向を取得する。さらに圧縮方向取得部2080は、外部の装置にアクセスして、圧縮方向を取得してもよい。
例えば圧縮方向取得部2080は、以下のように圧縮方向を取得する。まず、圧縮方向取得部2080は、対象行列を対象とする計算の方式を特定する情報を取得する。この情報を、計算方式情報と表記する。圧縮方向取得部2080は、この計算方式情報に対応する圧縮方向を取得する。この場合、行列圧縮装置2000は、圧縮方向格納部10と通信可能に接続されている。例えば圧縮方向格納部10は、複数の計算方式名それぞれに対応付けて圧縮方向を格納している。図14は、圧縮方向格納部10と通信可能に接続されている行列圧縮装置2000を例示するブロック図である。圧縮方向取得部2080は、この圧縮方向格納部10から、方式特定情報が示す計算方式名に対応する圧縮方向を取得する。なお、方式特定情報は、計算方式名の代わりに、各計算方式に割り当てられた ID などを示していてもよい。
図15は、圧縮方向格納部10に格納されている情報をテーブル形式で例示する図である。このテーブルを、圧縮情報テーブル100と表記する。圧縮情報テーブル100は、計算方式名102に対応付けて圧縮方向104を示す。圧縮情報テーブル100の1行目のレコードに示されている CD(Coordinate Descent)法は、主に列方向のアクセスを行う計算であることが知られている。CD 法は、例えば非特許文献3に記載されている。そのため、圧縮情報テーブル100の1行目のレコードは、CD 法に対応する圧縮方向として「列方向」を示している。
一方、圧縮情報テーブル100の2行目に示されている SGD(Stochastic Gradient Descent)法は、主に行方向のアクセスを行う計算であることが知られている。SGD 法は、例えば非特許文献4に記載されている。そのため、圧縮情報テーブル100の2行目のレコードは、SGD 法に対応する圧縮方向として「行方向」を示している。
<処理の流れ>
図16は、実施形態4の行列圧縮装置2000において実行される処理の流れを例示するフローチャートである。ステップS302において、対象行列取得部2020は、対象行列を取得する。ステップS304において、圧縮方向取得部2080は、圧縮方向を取得する。ステップS306において、行列圧縮装置2000は、圧縮方向が行方向を示すか否かを判定する。圧縮方向が行方向を示す場合(ステップS306:YES)、図16の処理はステップS308に進む。一方、圧縮方向が行方向を示さない場合(ステップS306:NO)、図16の処理はステップS312に進む。
ステップS308及びS310は、行方向について連長圧縮を行う場合の処理である。ステップS308において、置換部2040は、各行について代表値を算出し、各行の要素をその行について算出した代表値のいずれかで置き換える。ステップS310において、圧縮部2060は、対象行列の各行を連長圧縮する。
一方、ステップS312及びS314は、列方向について連長圧縮を行う場合の処理である。ステップS312において、置換部2040は、各列について代表値を算出し、各列の要素をその列について算出した代表値のいずれかで置き換える。ステップS314において、圧縮部2060は、対象行列の各列を連長圧縮する。
<作用・効果>
本実施形態によれば、行列圧縮装置2000に対して、連長圧縮を行う方向を指定することができる。そのため、連長圧縮の方向が固定されている場合と比較し、行列圧縮装置2000の利便性が高くなる。
[実施形態5]
図17は、実施形態5に係る行列圧縮装置2000を例示するブロック図である。図17において、矢印は情報の流れを表している。さらに、図17において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
実施形態5の行列圧縮装置2000は、圧縮方向決定部2100を有する。圧縮方向決定部2100は、圧縮部2060が連長圧縮を行う圧縮方向を決定する。
なお、実施形態5の行列圧縮装置2000がソート部2070を有する場合、ソート部2070は、圧縮方向が行方向であるときは列をソートし、圧縮方向が列方向であるときは行をソートする。
例えば圧縮方向決定部2100は、対象行列を対象として行われる計算の内容を表す情報を取得し、この情報に基づいて圧縮方向を決定する。以下、この情報を計算内容情報と表記する。例えば計算内容情報は、対象行列を対象として行われる計算の内容を表す数式やプログラムなどを示す。
例えば圧縮方向決定部2100は、計算内容情報が示す数式やプログラムなどを解析することで、この数式やプログラムなどが対象行列を行方向にアクセスする回数と列方向にアクセスする回数を算出する。そして、圧縮方向決定部2100は、行方向のアクセスが列方向のアクセスより多い場合は圧縮方向を行方向とし、列方向のアクセスが行方向のアクセスより多い場合は圧縮方向を列方向とする。
例えば、圧縮方向決定部2100が、対象行列を対象とする計算を表す数式として、以下の数式(1)を取得したとする。数式(1)において、xik は、対象行列の i 列目かつ k 行目の要素を表す。数式(1)は、ある列 i に含まれる要素を足し合わせる計算を表すため、列方向へのアクセスが多い。そのため、圧縮方向決定部2100は、圧縮方向を行方向に決定する。
Figure 2015118455
一方、圧縮方向決定部2100が上記の数式(2)を取得したとする。数式(2)において、xkj は、対象行列の k 列目かつ j 行目の要素を表す。数式(2)は、ある行 j に含まれる要素を足し合わせる計算を表すため、行方向へのアクセスが多い。そのため、圧縮方向決定部2100は、圧縮方向を行方向に決定する。
<処理の流れ>
図18は、実施形態5の行列圧縮装置2000において実行される処理の流れを例示するフローチャートである。図18のフローチャートは、図16のフローチャートにおけるステップS304の代わりにステップS402を有する点以外は、図16のフローチャートと同じである。ステップS402において、圧縮方向決定部2100は、圧縮方向を決定する。
<作用・効果>
本実施形態によれば、行列圧縮装置2000によって圧縮方向の決定が行われるため、行列圧縮装置2000に対して圧縮方向を指定する場合と比較し、行列圧縮装置2000の利便性が高くなる。
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
例えば、圧縮部2060は、行方向又は列方向のいずれか一方向についてのみしか連長圧縮を行えなくてもよい。例えば、圧縮部2060が、行方向のみに連長圧縮を行うとする。この場合に列方向に連長圧縮を行いたい場合、対象行列を転置してから圧縮部2060に入力し、圧縮部2060によって圧縮された対象行列を再度転置することで、対象行列を行方向について連長圧縮したことと同様の効果を得ることができる。対象行列を転置する機能は、行列圧縮装置2000の内部に設けられてもよいし、外部に設けられてもよい。ソート部2070についても同様のことを行えば、ソート部2070は、行方向又は列方向のいずれか一方向についてのみしかソートを行えなくてもよい。
以下、参考形態の例を付記する。
1. 複数の要素を有する対象行列を取得する対象行列取得手段と、
前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換手段と、
前記置換手段によって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮手段と、
を有する行列圧縮装置。
2. 前記置換手段は、前記対象行列の行又は列ごとにその行又はその列に含まれる要素を複数のグループに分け、前記グループごとにそのグループに含まれる要素に基づいて前記代表値を算出し、各要素をその要素が属する前記グループについて算出した前記代表値で置き換える1.に記載の行列圧縮装置。
3. 前記置換手段は、前記対象行列の行又は列ごとに、その行又はその列に含まれる要素の値域を所定幅で分割した部分値域を算出し、各部分値域を前記グループとする2.に記載の行列圧縮装置。
4. 前記置換手段は、前記対象行列の行又は列ごとに、その行又はその列に含まれる要素に対して k-means クラスタリングを行うことで、その行又はその列に含まれる要素を複数のグループに分ける2.に記載の行列圧縮装置。
5. 前記圧縮手段が対象行列を連長圧縮する前に、前記圧縮手段が行方向に連長圧縮を行う場合は前記対象行列の列をソートし、前記圧縮手段が列方向に連長圧縮を行う場合は前記対象行列の行をソートするソート手段を有する請求項1乃至4いずれか一項に記載の行列圧縮装置。
6. 前記ソート手段は、前記対象行列の行又は列を1つの単語とみなした場合に各行又は各列が辞書順に並ぶように、前記対象行列の行又は列をソートする5.に記載の行列圧縮装置。
7. 前記ソート手段は、
前記圧縮手段が前記対象行列を行方向について連長圧縮する場合、前記対象行列の行ごとに優先度を算出し、各列の比較を、優先度が高い行に位置する要素から順に行うことで、列をソートし、
前記圧縮手段が前記対象行列を列方向に連長圧縮する場合、前記対象行列の列ごとに優先度を算出し、各行の比較を、優先度が高い列に位置する要素から順に行うことで、行をソートする、
5.に記載の行列圧縮装置。
8. 前記ソート手段は、重複している要素の数が多い行又は列ほど高い優先度を算出する7.に記載の行列圧縮装置。
9. 前記圧縮手段が行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を取得する圧縮方向取得手段を有し、
前記置換手段は、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
前記圧縮手段は、前記圧縮方向が表す方向について前記対象行列を連長圧縮する1.乃至8.いずれか一項に記載の行列圧縮装置。
10. 前記圧縮方向取得手段は、
前記対象行列を対象に行われる計算の方式を表す情報である計算方式情報を取得し、
前記計算方式情報と前記圧縮方向とを対応づけて格納している圧縮方向格納手段から、取得した前記計算方式情報に対応する前記圧縮方向を取得する、
9.に記載の行列圧縮装置。
11. 前記圧縮手段が行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を決定する圧縮方向決定手段を有し、
前記置換手段は、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
前記圧縮手段は、前記圧縮方向が表す方向について前記対象行列を連長圧縮する1.乃至8.いずれか一項に記載の行列圧縮装置。
12. 前記圧縮方向決定手段は、前記対象行列を対象に行われる計算の内容を表す情報である計算内容情報を取得し、その計算内容情報に基づいて前記圧縮方向を決定する11.に記載の行列圧縮装置。
13. コンピュータによって実行される制御方法であって、
複数の要素を有する対象行列を取得する対象行列取得ステップと、
前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換ステップと、
前記置換ステップによって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮ステップと、
を有する制御方法。
14. 前記置換ステップは、前記対象行列の行又は列ごとにその行又はその列に含まれる要素を複数のグループに分け、前記グループごとにそのグループに含まれる要素に基づいて前記代表値を算出し、各要素をその要素が属する前記グループについて算出した前記代表値で置き換える13.に記載の制御方法。
15. 前記置換ステップは、前記対象行列の行又は列ごとに、その行又はその列に含まれる要素の値域を所定幅で分割した部分値域を算出し、各部分値域を前記グループとする14.に記載の制御方法。
16. 前記置換ステップは、前記対象行列の行又は列ごとに、その行又はその列に含まれる要素に対して k-means クラスタリングを行うことで、その行又はその列に含まれる要素を複数のグループに分ける14.に記載の制御方法。
17. 前記圧縮ステップが対象行列を連長圧縮する前に、前記圧縮ステップが行方向に連長圧縮を行う場合は前記対象行列の列をソートし、前記圧縮ステップが列方向に連長圧縮を行う場合は前記対象行列の行をソートするソートステップを有する13.乃至16.いずれか一項に記載の制御方法。
18. 前記ソートステップは、前記対象行列の行又は列を1つの単語とみなした場合に各行又は各列が辞書順に並ぶように、前記対象行列の行又は列をソートする17.に記載の制御方法。
19. 前記ソートステップは、
前記圧縮ステップが前記対象行列を行方向について連長圧縮する場合、前記対象行列の行ごとに優先度を算出し、各列の比較を、優先度が高い行に位置する要素から順に行うことで、列をソートし、
前記圧縮ステップが前記対象行列を列方向に連長圧縮する場合、前記対象行列の列ごとに優先度を算出し、各行の比較を、優先度が高い列に位置する要素から順に行うことで、行をソートする、
17.に記載の制御方法。
20. 前記ソートステップは、重複している要素の数が多い行又は列ほど高い優先度を算出する19.に記載の制御方法。
21. 前記圧縮ステップが行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を取得する圧縮方向取得ステップを有し、
前記置換ステップは、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
前記圧縮ステップは、前記圧縮方向が表す方向について前記対象行列を連長圧縮する13.乃至20.いずれか一項に記載の制御方法。
22. 前記圧縮方向取得ステップは、
前記対象行列を対象に行われる計算の方式を表す情報である計算方式情報を取得し、
前記計算方式情報と前記圧縮方向とを対応づけて格納している圧縮方向格納手段から、取得した前記計算方式情報に対応する前記圧縮方向を取得する、
21.に記載の制御方法。
23. 前記圧縮ステップが行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を決定する圧縮方向決定ステップを有し、
前記置換ステップは、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
前記圧縮ステップは、前記圧縮方向が表す方向について前記対象行列を連長圧縮する13.乃至20.いずれか一項に記載の制御方法。
24. 前記圧縮方向決定ステップは、前記対象行列を対象に行われる計算の内容を表す情報である計算内容情報を取得し、その計算内容情報に基づいて前記圧縮方向を決定する23.に記載の制御方法。
25. コンピュータに、
複数の要素を有する対象行列を取得する対象行列取得機能と、
前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換機能と、
前記置換機能によって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮機能と、
を持たせるプログラム。
26. 前記置換機能は、前記対象行列の行又は列ごとにその行又はその列に含まれる要素を複数のグループに分け、前記グループごとにそのグループに含まれる要素に基づいて前記代表値を算出し、各要素をその要素が属する前記グループについて算出した前記代表値で置き換える25.に記載のプログラム。
27. 前記置換機能は、前記対象行列の行又は列ごとに、その行又はその列に含まれる要素の値域を所定幅で分割した部分値域を算出し、各部分値域を前記グループとする26.に記載のプログラム。
28. 前記置換機能は、前記対象行列の行又は列ごとに、その行又はその列に含まれる要素に対して k-means クラスタリングを行うことで、その行又はその列に含まれる要素を複数のグループに分ける26.に記載のプログラム。
29. 前記圧縮機能が対象行列を連長圧縮する前に、前記圧縮機能が行方向に連長圧縮を行う場合は前記対象行列の列をソートし、前記圧縮機能が列方向に連長圧縮を行う場合は前記対象行列の行をソートするソート機能を有する25.乃至28.いずれか一項に記載のプログラム。
30. 前記ソート機能は、前記対象行列の行又は列を1つの単語とみなした場合に各行又は各列が辞書順に並ぶように、前記対象行列の行又は列をソートする29.に記載のプログラム。
31. 前記ソート機能は、
前記圧縮機能が前記対象行列を行方向について連長圧縮する場合、前記対象行列の行ごとに優先度を算出し、各列の比較を、優先度が高い行に位置する要素から順に行うことで、列をソートし、
前記圧縮機能が前記対象行列を列方向に連長圧縮する場合、前記対象行列の列ごとに優先度を算出し、各行の比較を、優先度が高い列に位置する要素から順に行うことで、行をソートする、
29.に記載のプログラム。
32. 前記ソート機能は、重複している要素の数が多い行又は列ほど高い優先度を算出する31.に記載のプログラム。
33. 前記コンピュータに、前記圧縮機能が行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を取得する圧縮方向取得機能を持たせ、
前記置換機能は、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
前記圧縮機能は、前記圧縮方向が表す方向について前記対象行列を連長圧縮する25.乃至32.いずれか一項に記載のプログラム。
34. 前記圧縮方向取得機能は、
前記対象行列を対象に行われる計算の方式を表す情報である計算方式情報を取得し、
前記計算方式情報と前記圧縮方向とを対応づけて格納している圧縮方向格納手段から、取得した前記計算方式情報に対応する前記圧縮方向を取得する、
33.に記載のプログラム。
35. 前記圧縮機能が行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を決定する圧縮方向決定機能を有し、
前記置換機能は、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
前記圧縮機能は、前記圧縮方向が表す方向について前記対象行列を連長圧縮する25.乃至32.いずれか一項に記載のプログラム。
36. 前記圧縮方向決定機能は、前記対象行列を対象に行われる計算の内容を表す情報である計算内容情報を取得し、その計算内容情報に基づいて前記圧縮方向を決定する35.に記載のプログラム。
10 圧縮方向格納部
100 圧縮情報テーブル
102 計算方式名
104 圧縮方向
1020 バス
1040 プロセッサ
1060 メモリ
1080 ストレージ
1220 対象行列取得モジュール
1240 置換モジュール
1260 圧縮モジュール
2000 行列圧縮装置
2020 対象行列取得部
2040 置換部
2060 圧縮部
2070 ソート部
2080 圧縮方向取得部
2100 圧縮方向決定部

Claims (10)

  1. 複数の要素を有する対象行列を取得する対象行列取得手段と、
    前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換手段と、
    前記置換手段によって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮手段と、
    を有する行列圧縮装置。
  2. 前記置換手段は、前記対象行列の行又は列ごとにその行又はその列に含まれる要素を複数のグループに分け、前記グループごとにそのグループに含まれる要素に基づいて前記代表値を算出し、各要素をその要素が属する前記グループについて算出した前記代表値で置き換える請求項1に記載の行列圧縮装置。
  3. 前記置換手段は、前記対象行列の行又は列ごとに、その行又はその列に含まれる要素の値域を所定幅で分割した部分値域を算出し、各部分値域を前記グループとする請求項2に記載の行列圧縮装置。
  4. 前記圧縮手段が対象行列を連長圧縮する前に、前記圧縮手段が行方向に連長圧縮を行う場合は前記対象行列の列をソートし、前記圧縮手段が列方向に連長圧縮を行う場合は前記対象行列の行をソートするソート手段を有する請求項1乃至3いずれか一項に記載の行列圧縮装置。
  5. 前記ソート手段は、前記対象行列の行又は列を1つの単語とみなした場合に各行又は各列が辞書順に並ぶように、前記対象行列の行又は列をソートする請求項4に記載の行列圧縮装置。
  6. 前記ソート手段は、
    前記圧縮手段が前記対象行列を行方向について連長圧縮する場合、前記対象行列の行ごとに優先度を算出し、各列の比較を、優先度が高い行に位置する要素から順に行うことで、列をソートし、
    前記圧縮手段が前記対象行列を列方向に連長圧縮する場合、前記対象行列の列ごとに優先度を算出し、各行の比較を、優先度が高い列に位置する要素から順に行うことで、行をソートする、
    請求項4に記載の行列圧縮装置。
  7. 前記圧縮手段が行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を取得する圧縮方向取得手段を有し、
    前記置換手段は、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
    前記圧縮手段は、前記圧縮方向が表す方向について前記対象行列を連長圧縮する請求項1乃至6いずれか一項に記載の行列圧縮装置。
  8. 前記圧縮手段が行方向と列方向のどちらについて連長圧縮を行うかを表す圧縮方向を決定する圧縮方向決定手段を有し、
    前記置換手段は、前記圧縮方向が行方向を表す場合、前記対象行列の行ごとにその行に含まれる要素の数より少ない個数の代表値を算出し、前記圧縮方向が列方向を表す場合、前記対象行列の列ごとにその列に含まれる要素の数より少ない個数の代表値を算出し、
    前記圧縮手段は、前記圧縮方向が表す方向について前記対象行列を連長圧縮する請求項1乃至6いずれか一項に記載の行列圧縮装置。
  9. コンピュータによって実行される制御方法であって、
    複数の要素を有する対象行列を取得する対象行列取得ステップと、
    前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換ステップと、
    前記置換ステップによって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮ステップと、
    を有する制御方法。
  10. コンピュータに、
    複数の要素を有する対象行列を取得する対象行列取得機能と、
    前記対象行列の行又は列ごとに、その行又はその列に含まれる各要素の値を用いてその行又はその列に含まれる要素の数より少ない個数の代表値を算出し、その行又はその列に含まれる各要素の値をいずれかの前記代表値に置き換える置換機能と、
    前記置換機能によって変換された前記対象行列を行方向又は列方向について連長圧縮する圧縮機能と、
    を持たせるプログラム。
JP2013260346A 2013-12-17 2013-12-17 行列圧縮装置、制御方法、及びプログラム Active JP6237193B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013260346A JP6237193B2 (ja) 2013-12-17 2013-12-17 行列圧縮装置、制御方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013260346A JP6237193B2 (ja) 2013-12-17 2013-12-17 行列圧縮装置、制御方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2015118455A true JP2015118455A (ja) 2015-06-25
JP6237193B2 JP6237193B2 (ja) 2017-11-29

Family

ID=53531143

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013260346A Active JP6237193B2 (ja) 2013-12-17 2013-12-17 行列圧縮装置、制御方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6237193B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116032294A (zh) * 2023-02-23 2023-04-28 山东安之捷科技有限公司 一种用于大气监测数据的智能处理方法
CN117435145A (zh) * 2023-12-20 2024-01-23 北京清水爱派建筑设计股份有限公司 一种数字化建筑信息优化存储方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004517527A (ja) * 2000-12-27 2004-06-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ グラフィック画像符号化
JP2005167552A (ja) * 2003-12-02 2005-06-23 Fuji Xerox Co Ltd 符号化装置、符号化方法及びそのプログラム
JP2011530234A (ja) * 2008-07-31 2011-12-15 マイクロソフト コーポレーション 大規模なデータストレージのための効率的な列ベースデータの符号化

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004517527A (ja) * 2000-12-27 2004-06-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ グラフィック画像符号化
JP2005167552A (ja) * 2003-12-02 2005-06-23 Fuji Xerox Co Ltd 符号化装置、符号化方法及びそのプログラム
JP2011530234A (ja) * 2008-07-31 2011-12-15 マイクロソフト コーポレーション 大規模なデータストレージのための効率的な列ベースデータの符号化

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116032294A (zh) * 2023-02-23 2023-04-28 山东安之捷科技有限公司 一种用于大气监测数据的智能处理方法
CN116032294B (zh) * 2023-02-23 2023-06-20 山东安之捷科技有限公司 一种用于大气监测数据的智能处理方法
CN117435145A (zh) * 2023-12-20 2024-01-23 北京清水爱派建筑设计股份有限公司 一种数字化建筑信息优化存储方法及系统
CN117435145B (zh) * 2023-12-20 2024-02-13 北京清水爱派建筑设计股份有限公司 一种数字化建筑信息优化存储方法及系统

Also Published As

Publication number Publication date
JP6237193B2 (ja) 2017-11-29

Similar Documents

Publication Publication Date Title
Nguyen et al. Unbiased Feature Selection in Learning Random Forests for High‐Dimensional Data
US9910855B2 (en) Reordering of database records for improved compression
US11036685B2 (en) System and method for compressing data in a database
WO2000010103A1 (fr) Procede et dispositif de recuperation, de stockage et de triage de donnees formatees en tableaux
US20080313213A1 (en) Efficient data infrastructure for high dimensional data analysis
US10579616B2 (en) Data search system, data search method, and program product
CN115438114B (zh) 存储格式转换方法、系统、装置、电子设备及存储介质
CN111428786A (zh) 基于PageRank的数据特征集降维方法
JP6237193B2 (ja) 行列圧縮装置、制御方法、及びプログラム
CN103064991A (zh) 一种海量数据聚类方法
CN109543772B (zh) 数据集自动匹配方法、装置、设备和计算机可读存储介质
CN113010597B (zh) 一种面向海洋大数据的并行关联规则挖掘方法
KR102227912B1 (ko) 최적화된 데이터 콘덴서 및 방법
Viotti et al. A Benchmark of JSON-compatible Binary Serialization Specifications
Langr et al. Storing sparse matrices to files in the adaptive-blocking hierarchical storage format
CN112306421B (zh) 一种用于存储分析测量数据格式mdf文件的方法和系统
Abouabdallah et al. Does clustering of DNA barcodes agree with botanical classification directly at high taxonomic levels? Trees in French Guiana as a case study
CN109684419B (zh) 一种基于大数据的数据立方体处理方法、装置及电子设备
JPWO2008155852A1 (ja) メモリ共有型並列処理システムにおいて表形式データを集計する方法及び装置
CN115860273B (zh) 用电负荷预测方法、装置、计算机设备和存储介质
US20240020642A1 (en) Patent valuation using artificial intelligence
Persson et al. Compression Selection for Columnar Data using Machine-Learning and Feature Engineering
WO2023181167A1 (ja) マップ生成装置、マップ生成方法、及び非一時的なコンピュータ可読媒体
WO2018048350A1 (en) Cohort data analysis methods and systems and data structures for performing cohort data analysis
CN110825936B (zh) 生成倒排索引和用倒排索引检索的方法、系统及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170921

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: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171016

R150 Certificate of patent or registration of utility model

Ref document number: 6237193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150