JP2016139391A - Tensor data calculation device, tensor data calculation method, and program - Google Patents
Tensor data calculation device, tensor data calculation method, and program Download PDFInfo
- Publication number
- JP2016139391A JP2016139391A JP2015093088A JP2015093088A JP2016139391A JP 2016139391 A JP2016139391 A JP 2016139391A JP 2015093088 A JP2015093088 A JP 2015093088A JP 2015093088 A JP2015093088 A JP 2015093088A JP 2016139391 A JP2016139391 A JP 2016139391A
- Authority
- JP
- Japan
- Prior art keywords
- calculation
- data
- index
- tensor
- tensor data
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、複数の属性情報から要因パターンを抽出する因子分解に関する技術であり、特に、非負値テンソル因子分解技術に関連する。 The present invention relates to a factorization technique for extracting a factor pattern from a plurality of attribute information, and particularly relates to a non-negative tensor factorization technique.
購買ログやチェックインログなど、一般的にログデータはテンソルとして表現することが可能である。またそのようなデータは正の実数値で表現されるため、テンソルとして表現されたデータは非負値テンソル因子分解(Nonnegative Tensor Factorization)手法を用いて因子分析を行うことが可能である。しかしながら、ログデータ分析手法として、因子分解技術は広く用いられている一方、非常に計算時間がかかるという問題を抱えている。なお、例えば非特許文献1には、一般的な因子分解手法についての技術が記載されている。
In general, log data such as purchase logs and check-in logs can be expressed as tensors. Further, since such data is expressed as a positive real value, the data expressed as a tensor can be subjected to factor analysis using a non-negative tensor factorization method. However, factorization technology is widely used as a log data analysis method, but has a problem that it takes a lot of calculation time. For example, Non-Patent
ユーザが複数の商品の購買を行い、そのようなデータが数日間分存在する例を考える。一般的には「ユーザx商品x日」の3次のテンソルデータとして表現し、R(Rank)個の基底に分解を行う。この時、ユーザ数(I)、商品数(J)、日数(K)とすると、当該テンソルはサイズ(IxJxK)のテンソルとして表現され、因子分解の計算量は(IxJxKxR)に比例する。例えば、1000人のユーザが、1000種類のアイテムから購買を行い、そのようなデータが1000日間蓄積され、100個の基底に分解を行う時、その計算量は一回の反復計算に1000億回規模の演算処理を行わなければならない。通常反復計算を1000回ほど行うとして、100兆回規模の演算処理を行い、その計算は近年の汎用コンピュータを用いると数日かかる。 Consider an example where a user purchases a plurality of products and such data exists for several days. Generally, it is expressed as third-order tensor data of “user x product x day”, and is decomposed into R (Rank) bases. At this time, assuming that the number of users (I), the number of products (J), and the number of days (K), the tensor is expressed as a tensor of size (IxJxK), and the calculation amount of factorization is proportional to (IxJxKxR). For example, when 1000 users make purchases from 1000 types of items, such data is accumulated for 1000 days and decomposed into 100 bases, the amount of calculation is 100 billion times per iteration. You have to do scale computations. Assuming that iterative calculation is normally performed about 1000 times, arithmetic processing is performed on a scale of 100 trillion times, and the calculation takes several days when a recent general-purpose computer is used.
また、テンソルデータを保持するためのメモリ領域は(IxJxK)のオーダ量が必要になり、前述の規模でも数GBのメモリを要する。従って、大規模なデータ(ユーザ数や商品数の増加)では物理的計算ができなくなる。 Further, the memory area for holding the tensor data requires an order amount of (IxJxK), and requires several GB of memory even in the above-described scale. Therefore, physical calculation cannot be performed with large-scale data (increase in the number of users and the number of products).
ここで、非負値テンソル因子分解の計算例について説明する。非負値テンソル因子分解では、非負性を保って、テンソルデータを因子行列のテンソル積に分解する。例えば図1に示すように、「ユーザ[I]x商品[J]x日[K]」の3次のテンソルデータXは3個の因子行列A、B、Cに分解することができ、下記の式のように表すことができる。 Here, a calculation example of non-negative tensor factorization will be described. Non-negative tensor factorization decomposes tensor data into tensor products of factor matrices while maintaining non-negativeness. For example, as shown in FIG. 1, the third-order tensor data X of “user [I] x product [J] x day [K]” can be decomposed into three factor matrices A, B, and C. It can be expressed as
上記のA、B、CはそれぞれIxR、JxR、KxRの非負値の行列であり、テンソル積*は下記のように各基底の積で表される。 The above A, B, and C are non-negative matrices of IxR, JxR, and KxR, respectively, and the tensor product * is represented by the product of each base as follows.
一般的に多くのテンソルデータは値を持たない要素が多く、データ構造が疎である場合が多い(疎であることをここではスパースであるという表現を使う)。例えば、購買ログでは、全てのユーザが全ての商品を購入するわけではなく、テンソルの要素では「0」として意味のない値として扱われる事が多い。具体的な例としては、ユーザ毎にデータ収集期間が異なる場合や収集データの一部に欠損がある場合などは欠損値として扱う「欠損値スパーステンソル」があり、ユーザが意図的に購入しない場合(男性が女性用の下着を購入しないなど)などは0値として扱う「0値スパーステンソル」があり、いずれも因子分解の更新式において計算不要な要素を省略し、計算が必要な要素のみを演算処理することによって高速に計算が可能となる。 In general, many tensor data have many elements that do not have a value, and the data structure is often sparse (the sparse is used here as a sparse expression). For example, in a purchase log, not all users purchase all commodities, and the tensor element is often treated as a meaningless value as “0”. As a specific example, there is a “missing value sparse tensor” that treats as a missing value when the data collection period varies from user to user or when some of the collected data is missing, and the user does not intentionally purchase There is a “zero-value sparse tensor” that treats as zero values (such as men not buying women's underwear), and all of them omit the elements that do not need to be calculated in the factorization update formula, and only the elements that need to be calculated Calculation can be performed at high speed by performing arithmetic processing.
例えばログ数Lとした場合の欠損値スパーステンソルの更新式は以下のようになり、因子行列Aの更新手順は図3に示すようになる。 For example, the update formula of the missing value sparse tensor when the number of logs is L is as follows, and the update procedure of the factor matrix A is as shown in FIG.
また、例えば、0値スパーステンソルの更新式は以下のようになり、因子行列Aの更新手順は図4に示すようになる。 Further, for example, the update formula of the zero-value sparse tensor is as follows, and the update procedure of the factor matrix A is as shown in FIG.
しかしながら、いずれの例の場合でも、スパースな非負値テンソル因子分解は原理的に計算量を削減することが可能である一方、行列因子分解法と異なりデータ構造の複雑性から効果的な高速化手法が確立されていない。特に、単純にデータ構造を保持しただけではメモリのランダムアクセスが発生し、大規模な処理では処理が遅くなる。 However, in any case, the sparse non-negative tensor factorization can reduce the amount of calculation in principle, but unlike the matrix factorization method, it is an effective acceleration method due to the complexity of the data structure. Is not established. In particular, if the data structure is simply held, random access to the memory occurs, and processing is slow in large-scale processing.
本発明は上記の点に鑑みてなされたものであり、スパーステンソルの因子分解のための処理を高速化するとともに、処理の際に必要とするメモリ量とメモリアクセス通信量を削減する技術を提供することを目的とする。 The present invention has been made in view of the above points, and provides a technique for speeding up the processing for factoring the sparse tensor and reducing the amount of memory and the amount of memory access communication required for the processing. The purpose is to do.
本発明の実施の形態により、N次元(Nは3以上の整数)のテンソルデータに対し、当該テンソルデータの複数インデックスについてのループ計算を行うテンソルデータ計算装置であって、
計算ループの最下位のインデックスから最上位の1つ前までの各インデックスの順で各インデックスのループ方向順となるようにテンソルデータの要素の順番付けを行い、当該順番付けに従って、テンソルデータ中の空でない要素について、当該要素の値と、当該要素のテンソルデータ上の位置を示す最下位のインデックスから最上位の1つ前までのインデックスのインデックス値とをデータ記憶部上に配置するとともに、当該空でない要素のカウント数を算出して前記データ記憶部に配置する処理を、計算ループの最上位のインデックスの順番毎に当該インデックスの順番数だけ実行するデータ配置処理手段と、
前記データ配置処理手段により前記データ記憶部上に配置されたテンソルデータに対するループ計算を行う計算処理手段と
を備えることを特徴とするテンソルデータ計算装置が提供される。
According to an embodiment of the present invention, a tensor data calculation device that performs loop calculation on N-dimensional (N is an integer of 3 or more) tensor data for a plurality of indexes of the tensor data,
The tensor data elements are ordered in the order of the loop direction of each index in the order of each index from the lowest index of the calculation loop to the previous highest index, and in the tensor data according to the ordering. For a non-empty element, the value of the element and the index value of the index from the lowest index indicating the position on the tensor data of the element to the immediately preceding index are arranged on the data storage unit, and Data placement processing means for calculating the number of non-empty elements and placing the data storage unit in the data storage unit, for each order of the highest index in the calculation loop, the number of the order of the index,
There is provided a tensor data calculation device comprising: calculation processing means for performing loop calculation on tensor data arranged on the data storage unit by the data arrangement processing means.
また、本発明の実施の形態により、N次元(Nは3以上の整数)のテンソルデータに対し、当該テンソルデータの複数インデックスについてのループ計算を行うテンソルデータ計算装置が実行するテンソルデータ計算方法であって、
計算ループの最下位のインデックスから最上位の1つ前までの各インデックスの順で各インデックスのループ方向順となるようにテンソルデータの要素の順番付けを行い、当該順番付けに従って、テンソルデータ中の空でない要素について、当該要素の値と、当該要素のテンソルデータ上の位置を示す最下位のインデックスから最上位の1つ前までのインデックスのインデックス値とをデータ記憶部上に配置するとともに、当該空でない要素のカウント数を算出して前記データ記憶部に配置する処理を、計算ループの最上位のインデックスの順番毎に当該インデックスの順番数だけ実行するデータ配置処理ステップと、
前記データ配置処理ステップにより前記データ記憶部上に配置されたテンソルデータに対するループ計算を行う計算処理ステップと
を備えることを特徴とするテンソルデータ計算方法が提供される。
According to the embodiment of the present invention, a tensor data calculation method executed by a tensor data calculation device that performs loop calculation for a plurality of indexes of tensor data for N-dimensional (N is an integer of 3 or more) tensor data. There,
The tensor data elements are ordered in the order of the loop direction of each index in the order of each index from the lowest index of the calculation loop to the previous highest index, and in the tensor data according to the ordering. For a non-empty element, the value of the element and the index value of the index from the lowest index indicating the position on the tensor data of the element to the immediately preceding index are arranged on the data storage unit, and A data placement processing step for calculating the number of non-empty elements and placing the data storage unit in the data storage unit for each order of the highest index in the calculation loop for the number of the order of the index;
There is provided a tensor data calculation method comprising: a calculation processing step of performing a loop calculation on tensor data arranged on the data storage unit by the data arrangement processing step.
本発明の実施の形態によれば、スパーステンソルの因子分解のための処理を高速化するとともに、処理の際に必要とするメモリ量とメモリアクセス通信量を削減する技術が提供される。 According to the embodiment of the present invention, there is provided a technique for speeding up the process for factoring the sparse tensor and reducing the amount of memory and the amount of memory access communication required for the process.
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。 Embodiments of the present invention will be described below with reference to the drawings. The embodiment described below is only an example, and the embodiment to which the present invention is applied is not limited to the following embodiment.
(装置構成)
図5に本発明の実施の形態に係るテンソルデータ計算装置10の構成を示す。テンソルデータ計算装置10は、テンソルデータの入力を受けて、非負値テンソル因子分解を行って、結果としての因子行列のデータを出力する装置である。図5に示すように、テンソルデータ計算装置10は、データ入力部11、データ配置処理部12、データ記憶部13、テンソル因子分解処理部14、及びデータ出力部15を有する。
(Device configuration)
FIG. 5 shows a configuration of the tensor
データ入力部11はテンソルデータを受信し、当該テンソルデータをデータ配置処理部12に渡す。データ配置処理部12は、テンソルデータを疎行列化して、後に詳細に説明するデータ構造でテンソルデータをデータ記憶部13(メモリ等)に格納(配置)する。テンソル因子分解処理部14は、データ記憶部13に配置されている上記データ構造のテンソルデータに対し、非負値テンソル因子分解の処理を行って、処理結果である因子行列のデータをデータ出力部15に渡し、データ出力部15は当該データを出力する。
The data input unit 11 receives the tensor data and passes the tensor data to the data
本実施の形態に係るテンソルデータ計算装置10は、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、テンソルデータ計算装置10が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、テンソルデータ計算装置10で実施される処理に対応するプログラムを実行することによって実現することが可能である。また、上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
The tensor
以下、テンソルデータ計算装置10における処理をより詳細に説明する。以下では、特にデータ配置処理部12により実行される処理を詳細に説明する。以下では、まず、図1に示したような、3次のテンソルデータを3個の因子行列A、B、Cに分解する場合を例として説明する。その後に、N次(Nは3以上の整数)に拡張する例を説明する。
Hereinafter, the process in the tensor
(テンソルデータ構造)
まず、テンソルデータ計算装置10が扱う一般的なテンソルデータ構造について説明する。テンソルデータ計算装置10では、高次のテンソルデータはプログラム処理上配列として格納して扱う。例えば、3次のテンソルデータXijkをX[I][J][K]という3次の配列で保持する。この場合のデータ構造のイメージは図6に示すとおりである。
(Tensor data structure)
First, a general tensor data structure handled by the tensor
当該データ構造において、因子分解のための、通常の密行列の更新処理では、上記のとおり3次のテンソルデータをX[I][J][K]という3次の配列で保持し、図7に示すように、4重ループによる処理を行う。しかしながら、前述したように、密テンソルの処理には、計算量が大きくなり、必要とするメモリ領域も大きくなるという問題がある。 In the data structure, in the normal dense matrix update process for factorization, the third-order tensor data is held in the third-order array of X [I] [J] [K] as described above, and FIG. As shown in FIG. 4, processing by a quadruple loop is performed. However, as described above, the dense tensor processing has a problem that the amount of calculation increases and the required memory area also increases.
本実施の形態では、スパースなテンソルデータを対象としており、その場合、前述したとおり、因子分解の更新式において計算不要な要素を省略し、計算が必要な要素のみを演算処理することによって高速に計算を可能とする。 In this embodiment, sparse tensor data is targeted. In this case, as described above, elements that do not require calculation are omitted in the factorization update formula, and only the elements that require calculation are processed at high speed. Enable calculation.
この場合の因子行列Aの更新処理手順は図8及び図9に示すとおりである。当該更新処理は、テンソルデータ計算装置10のテンソル因子分解処理部14により実行されるものである。図8に示すとおり、欠損値スパースデータの場合、例えばairの更新では、air自体に対してIxRのループ処理を行い、j、kの組み合わせに関しては、iに対するj、kのログ数Liの処理ループを回す計算を行う。図9は、0値スパースデータの場合における因子行列Aの更新処理手順を示す。図4を参照して既に説明したとおり、0値スパースデータの場合、因子分解の最適値を推定するための更新式におけるインデックスの依存関係に応じて、ループ計算を分離して実行している。具体的には、分母の計算処理に係るループ計算と、分子の計算処理に係るループ計算とを分離して実行している。最も計算量のかかる処理は分子の値の計算であり、分子の計算処理に関しては欠損値スパーステンソルと同様の計算を行う。すなわち、分子の計算処理において、例えばairの更新では、air自体に対してIxRのループ処理を行い、j、kの組み合わせに関しては、iに対するj、kのログ数Liの処理ループを回す計算を行う。分母に関しては、図9に示すとおり、J回のループ処理とK回のループ処理とをR回行う。前述したように、全体の計算量に対して分母の計算量は無視できるオーダである。
The update process procedure of the factor matrix A in this case is as shown in FIGS. The update process is executed by the tensor
この時、各iにおけるj、k、lの組み合わせ情報の保持が必要となる。図8及び図9では、当該情報は、Aで示されるように、各指標データ(index_j,index_k,index_l)としてデータ記憶部13に配置される。また、Xijkと^Xijkについては、ベクトル、もしくは同様な指標としてデータ記憶部13に保持しておく。因子行列B、Cについても同様のデータをデータ記憶部13に配置しておく。
At this time, it is necessary to hold the combination information of j, k, and l in each i. 8 and 9, the information is arranged in the
本実施の形態では、これら指標のデータを、データ配置処理部12により、更新処理を効率良く実行可能ならしめるデータ構造としてデータ記憶部13に配置しておくことにより、テンソル因子分解処理部14により実行されるスパーステンソルの行列更新を高速に実施することを可能としている。
In the present embodiment, the tensor factor
以下では、本実施の形態において、データ記憶部13に配置されるデータをより詳細に説明する。以下で説明する処理は、欠損値スパーステンソルの場合と0値スパーステンソルの場合とで共通である。ただし、以下で説明する処理は、欠損値スパーステンソルの場合は分母と分子の計算処理に関連し、0値スパーステンソルの場合は分子の計算処理に関連する。
Hereinafter, in the present embodiment, data arranged in the
(テンソルデータの疎行列化:因子行列Aを例とした説明)
図8及び図9の更新手順に示したように、因子行列Aに関しては、i毎の要素で更新を行う。当該更新のループ計算において、iが最上位のインデックスである。
(Sparse matrix of tensor data: explanation using factor matrix A as an example)
As shown in the update procedure of FIGS. 8 and 9, the factor matrix A is updated with elements for each i. In the update loop calculation, i is the highest index.
本実施の形態では、iを固定して、j毎に行列展開を行うことで、テンソルデータの疎行列化を行う。すなわち、テンソルデータ計算装置10のデータ配置処理部12は、図10(a)に示すようなテンソルデータを、図10(b)に示すように、iを固定して、j毎の行列に展開する。本実施の形態では、これをテンソルデータの疎行列化と呼んでいる。なお、ここでのポイントは、j毎に展開を行うことではなくて、iを固定することである。
In this embodiment, tensor data is sparsed by fixing i and performing matrix expansion for each j. That is, the data
図10(b)に示すとおり、展開した結果において、i=1では、
i=1, [6,0,2,4,0,0,0,0,0,1,2,0,0,0,0,2]
というベクトルができる。スパーステンソルでは0要素は処理が不要であるため、データ配置処理部12は必要な要素の情報のみをデータ記憶部13に配置する。当該情報を図11において、Xijkとして示す。
As shown in FIG. 10B, in the expanded result, when i = 1,
i = 1, [6, 0, 2, 4, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 2]
The vector Since the sparse tensor does not require processing of the 0 element, the data
また、このとき、j、kの情報が必要なため当該情報を別途保持する。当該情報は、図11において(j,k)として示されている。例えば、ユーザ1のログデータ値6は、(j,k)=(1,1)に対応することが示されている。また、図11には、更新処理上持つ必要がある情報として^Xijkの値の例が示されている。当該値は、因子行列の更新に伴って順次更新されていく値である。
At this time, since information on j and k is necessary, the information is held separately. This information is shown as (j, k) in FIG. For example, it is shown that the
なお、上記kは、計算ループの最下位のインデックスであり、上記jは、最上位の1つ前のインデックスである。 Note that k is the lowest index of the calculation loop, and j is the highest previous index.
上記のとおり、因子行列AはIに関しての因子分解であり、更新処理はiに関して行うため、データ配置処理部12は、因子行列Aに関して、各iのログ数、各iに関する(j,k)の組み合わせ、Xijkの値、^Xijkの値をデータ記憶部13に配置する。
As described above, since the factor matrix A is factorization with respect to I and the update process is performed with respect to i, the data
最終的に因子行列Aの更新のために、図12(a)〜(c)に示すデータをデータ記憶部13に配置する。(c)の^Xijkは空欄になっているが、これは、計算結果を格納するメモリ領域として予め用意することを意味する。ここで、(j,k)の組み合わせを格納する疎行列データ(図12の(b))をインデックス疎行列と呼ぶ。 Finally, in order to update the factor matrix A, data shown in FIGS. (X) ijk in (c) is blank, which means that it is prepared in advance as a memory area for storing calculation results. Here, the sparse matrix data ((b) in FIG. 12) storing the combination of (j, k) is called an index sparse matrix.
因子行列Aについて、上記のようなインデックス疎行列等を保持しておき、図8及び図9に示した手順で更新処理を行うのである。このように、スパーステンソルを疎行列表現に置き換えて処理を行うことで、処理の高速化、及びメモリ使用量の低減を図る事が可能である。 For the factor matrix A, the index sparse matrix as described above is held, and the update process is performed according to the procedure shown in FIGS. Thus, by replacing the sparse tensor with the sparse matrix representation and performing the processing, it is possible to increase the processing speed and reduce the memory usage.
上記のようなデータ配置を行う際に、データ配置処理部12は、計算ループの最下位のインデックス(例:k)から最上位の1つ前までの各インデックス(例:j)の順で各インデックスのループ方向順となるようにテンソルデータの要素の順番付けを行い、当該順番付けに従って、テンソルデータ中の空でない要素について、当該要素の値(例:Xijk)と、当該要素のテンソルデータ上の位置を示す最下位のインデックスから最上位の1つ前までのインデックスのインデックス値(例:(j,k)の値)とをデータ記憶部13上に配置するとともに、当該空でない要素のカウント数(Li)を算出して前記データ記憶部13に配置する処理を、計算ループの最上位のインデックスの順番毎(例:i=1,2,3,4の順番)に当該インデックスの順番数(例:i=1,2,3,4の場合、4)だけ実行する。
When performing the data arrangement as described above, the data
なお、上記の「計算ループの最下位のインデックス(例:k)から最上位の1つ前までの各インデックス(例:j)の順で各インデックスのループ方向順となるように順番付けする」とは、例えば、図10(b)と図12(b)の各iの行の(j,k)について、(i=1ではj=1,k=1からL1=6なので6個を並べる),(i=2では、j=1,k=2からL2=4なので4個を並べる)...のように順番付けすることである。 In addition, the above-mentioned “order the loops in the order of each index in the order of each index (example: j) from the lowest index (example: k) of the calculation loop to the immediately preceding index”. For example, for (j, k) in each row i in FIGS. 10 (b) and 12 (b) (6 = 1 because j = 1 and k = 1 to L 1 = 6 for i = 1). (When i = 2, j = 1, k = 2 to L 2 = 4, so four are arranged).
上記のようなデータ配置を行うことで、更新のための計算ループを実行する際は、要素のカウント数(Li)だけインデックスおよび要素値を参照すればよく、空の要素を参照する必要がなくなるため、計算処理を効率化できるとともにメモリを効率的に利用可能となる。また、空でない要素の値にアクセスする際も、インデックスのループの最下位から最上位の順に従ってメモリ上で順次アクセスすることが可能となるため、ランダムアクセスが解消し、メモリアクセススピードを高速化できる効果を奏する。 By performing the calculation loop for updating by performing the data arrangement as described above, it is only necessary to refer to the index and element value by the count number (L i ) of the element, and it is necessary to refer to an empty element. Therefore, the calculation process can be made efficient and the memory can be used efficiently. In addition, when accessing the value of a non-empty element, it is possible to access on the memory in order from the lowest to highest in the index loop, eliminating random access and increasing memory access speed. There is an effect that can be done.
(テンソルデータの疎行列化:因子行列B、Cに関して)
これまでに説明したとおり、因子行列Aに対してはI方向に疎行列の行を取っている。因子行列Bに対しては、J方向を疎行列の行にするために、図13の(a)から(b)のように軸を変えて処理する。同様に、因子行列Cに対しては、K方向を疎行列の行にするために、図13の(b)から(c)のように軸を変えて処理する。
(Tensor data sparse matrix: Factor matrices B and C)
As described above, the factor matrix A has sparse matrix rows in the I direction. The factor matrix B is processed by changing the axis as shown in FIGS. 13A to 13B in order to make the J direction a sparse matrix row. Similarly, the factor matrix C is processed by changing the axis as shown in FIGS. 13B to 13C in order to make the K direction a sparse matrix row.
図14は、因子行列Bに対して保持するデータを示す。図14に示すとおり、因子行列Bに対しては、Lj、Xijk、(k,i)のインデックス疎行列を保持し、^Xijkのメモリ領域を確保しておく。また、因子行列Cに対しても同様に、Lk、Xijk、(i,j)のインデックス疎行列を保持し、^Xijkのメモリ領域を確保しておく。図15に、因子行列A、B、Cの更新のためのデータをまとめて示す。 FIG. 14 shows data held for the factor matrix B. As shown in FIG. 14, for the factor matrix B, an index sparse matrix of L j , X ijk , (k, i) is held, and a memory area of ^ X ijk is secured. Similarly, for the factor matrix C, an index sparse matrix of L k , X ijk , (i, j) is retained, and a memory area of ^ X ijk is secured. FIG. 15 collectively shows data for updating the factor matrices A, B, and C.
(テンソルデータの疎行列化:効果の説明)
例えば、因子行列Aで用いたXijkに対して、J軸要素を基とする因子行列Bの更新処理を行うと、図16(a)に示すようにランダムアクセスをしてしまう。
(Tense data sparse matrix: explanation of effects)
For example, if update processing of the factor matrix B based on the J-axis element is performed on X ijk used in the factor matrix A, random access is made as shown in FIG.
一方、本実施の形態の技術のように、因子行列に対応する軸毎に疎行列を用意することにより、当該因子行列の更新処理を行う際に、図16(b)に示すように、ランダムアクセスは発生せず、通信コストが下がり計算処理の高速化が可能となる。 On the other hand, when a sparse matrix is prepared for each axis corresponding to a factor matrix as in the technique of the present embodiment, when updating the factor matrix, as shown in FIG. No access occurs, the communication cost is reduced, and the calculation process can be speeded up.
すなわち、本実施の形態のように、各軸(モード)毎に更新用の疎行列データ構造を保持することで、モード毎に対する処理を単純ループ処理で実施することが可能となる。また、単純ループ処理に加え、メモリのランダムアクセスを抑えることによって特に大規模データでの処理ではキャッシュヒット率を向上させるなど、高速化が期待できる。ランダムアクセスを抑える効果は、GPUなどの並列分散処理では参照メモリ量を予め各スレッドでの参照必要量だけに抑えるだけでよいなど、非常に有効である。 That is, as in the present embodiment, by holding a sparse matrix data structure for update for each axis (mode), it is possible to perform processing for each mode by simple loop processing. In addition to simple loop processing, it is expected to increase the speed by suppressing random access of the memory, for example, improving the cache hit rate particularly in processing with large-scale data. The effect of suppressing random access is very effective, for example, in the case of parallel distributed processing such as GPU, it is only necessary to suppress the reference memory amount to the reference necessary amount in each thread in advance.
(N次への拡張)
ここまで3次のテンソルを例にとって因子分解例を説明したが、本実施の形態に係る技術は、3次のテンソルに限らず、3次よりも大きな次数であるN次(Nは3以上の整数)のテンソルに拡張可能である。
(Extension to Nth order)
The factorization example has been described so far by taking the third-order tensor as an example. However, the technique according to the present embodiment is not limited to the third-order tensor, and the N-order (N is 3 or more), which is an order larger than the third-order. (Integer) tensor.
N次のテンソルデータにおいて、ログ数L、Xi1…iNのテンソルデータがあり、これを、図17に示すように、因子行列Z1…ZNにそれぞれ分解するケースを考える。なお、Xの添字は、明細書での表記の便宜上"i1…iN"と表しているが、これは"i1…iN"を意図している。
In order N tensor data, it has a log number L, X i1 ... iN tensor data, which, as shown in FIG. 17, consider each decomposed case to
N次の場合も、3次を例にとって説明した場合と同様であり、データ配置処理部12は、因子行列Z1…ZNの各々について、対応する軸に対して展開した疎行列を作成する。
The N-order case is the same as the case described for the third-order example, and the data
図18(a)〜(c)に、因子行列Zkの更新のためのデータを示す。図18(a)〜(c)に示すとおり、Zkの因子行列を更新させる場合、kに関わるログ数はLkであり、Xi1…iNのテンソルデータも(a)に示す構造で保持しておく。またインデックス疎行列については、(b)に示すように、k以外の要素の組み合わせ(ik+1,…iN,i1,…ik−1)を保持しておく。これは、前述した「計算ループの最下位のインデックスから最上位の1つ前までの各インデックス」に相当する。また、^Xi1…iNのメモリ領域を確保しておく。これにより、任意の次数Nのテンソル因子分解に拡張可能である。すなわち、本実施の形態の技術により、インデックス疎行列に複数要素をもたせることで、高次モードへの拡張が容易に可能である。 Figure 18 (a) ~ (c) , shows the data for updating the factor matrix Z k. As shown in FIGS. 18A to 18C, when the factor matrix of Z k is updated, the number of logs related to k is L k and the tensor data of X i1... IN is also held in the structure shown in FIG. Keep it. As for the index sparse matrix, as shown in (b), combinations of elements other than k (i k + 1 ,..., I N , i 1 ,..., I k−1 ) are held. This corresponds to the “each index from the lowest index of the calculation loop to the previous index of the highest one” described above. Also, a memory area of ^ X i1... IN is secured. Thereby, it can be extended to a tensor factorization of arbitrary order N. That is, with the technique of the present embodiment, the index sparse matrix has a plurality of elements, and can be easily extended to a higher-order mode.
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。 The present invention is not limited to the above-described embodiments, and various modifications and applications are possible within the scope of the claims.
10 テンソルデータ計算装置
11 データ入力部
12 データ配置処理部
13 データ記憶部
14 テンソル因子分解処理部
15 データ出力部
DESCRIPTION OF
Claims (7)
計算ループの最下位のインデックスから最上位の1つ前までの各インデックスの順で各インデックスのループ方向順となるようにテンソルデータの要素の順番付けを行い、当該順番付けに従って、テンソルデータ中の空でない要素について、当該要素の値と、当該要素のテンソルデータ上の位置を示す最下位のインデックスから最上位の1つ前までのインデックスのインデックス値とをデータ記憶部上に配置するとともに、当該空でない要素のカウント数を算出して前記データ記憶部に配置する処理を、計算ループの最上位のインデックスの順番毎に当該インデックスの順番数だけ実行するデータ配置処理手段と、
前記データ配置処理手段により前記データ記憶部上に配置されたテンソルデータに対するループ計算を行う計算処理手段と
を備えることを特徴とするテンソルデータ計算装置。 A tensor data calculation device that performs a loop calculation on a plurality of indexes of tensor data for N-dimensional (N is an integer of 3 or more) tensor data,
The tensor data elements are ordered in the order of the loop direction of each index in the order of each index from the lowest index of the calculation loop to the previous highest index, and in the tensor data according to the ordering. For a non-empty element, the value of the element and the index value of the index from the lowest index indicating the position on the tensor data of the element to the immediately preceding index are arranged on the data storage unit, and Data placement processing means for calculating the number of non-empty elements and placing the data storage unit in the data storage unit, for each order of the highest index in the calculation loop, the number of the order of the index,
A tensor data calculation device comprising: calculation processing means for performing loop calculation on tensor data arranged on the data storage unit by the data arrangement processing means.
ことを特徴とする請求項1に記載のテンソルデータ計算装置。 The tensor data calculation apparatus according to claim 1, wherein the calculation processing unit performs factorization of the tensor data by loop calculation on the tensor data.
ことを特徴とする請求項2に記載のテンソルデータ計算装置。 The tensor data calculation according to claim 2, wherein the calculation processing unit performs loop calculation separately according to an index dependency in an update expression for estimating an optimum value of the factorization. apparatus.
計算ループの最下位のインデックスから最上位の1つ前までの各インデックスの順で各インデックスのループ方向順となるようにテンソルデータの要素の順番付けを行い、当該順番付けに従って、テンソルデータ中の空でない要素について、当該要素の値と、当該要素のテンソルデータ上の位置を示す最下位のインデックスから最上位の1つ前までのインデックスのインデックス値とをデータ記憶部上に配置するとともに、当該空でない要素のカウント数を算出して前記データ記憶部に配置する処理を、計算ループの最上位のインデックスの順番毎に当該インデックスの順番数だけ実行するデータ配置処理ステップと、
前記データ配置処理ステップにより前記データ記憶部上に配置されたテンソルデータに対するループ計算を行う計算処理ステップと
を備えることを特徴とするテンソルデータ計算方法。 A tensor data calculation method executed by a tensor data calculation device that performs loop calculation on a plurality of indexes of tensor data for N-dimensional (N is an integer of 3 or more) tensor data,
The tensor data elements are ordered in the order of the loop direction of each index in the order of each index from the lowest index of the calculation loop to the previous highest index, and in the tensor data according to the ordering. For a non-empty element, the value of the element and the index value of the index from the lowest index indicating the position on the tensor data of the element to the immediately preceding index are arranged on the data storage unit, and A data placement processing step for calculating the number of non-empty elements and placing the data storage unit in the data storage unit for each order of the highest index in the calculation loop for the number of the order of the index;
A tensor data calculation method comprising: a calculation processing step of performing loop calculation on tensor data arranged on the data storage unit by the data arrangement processing step.
ことを特徴とする請求項4に記載のテンソルデータ計算方法。 5. The tensor data calculation method according to claim 4, wherein, in the calculation processing step, the tensor data calculation device performs factorization of the tensor data by loop calculation on the tensor data.
ことを特徴とする請求項5に記載のテンソルデータ計算方法。 In the calculation processing step, the tensor data calculation device performs a loop calculation separately according to an index dependency in an update expression for estimating an optimum value of the factorization. 5. The tensor data calculation method according to 5.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015011081 | 2015-01-23 | ||
JP2015011081 | 2015-01-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016139391A true JP2016139391A (en) | 2016-08-04 |
JP6058065B2 JP6058065B2 (en) | 2017-01-11 |
Family
ID=56560419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015093088A Active JP6058065B2 (en) | 2015-01-23 | 2015-04-30 | Tensor data calculation device, tensor data calculation method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6058065B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018128708A (en) * | 2017-02-06 | 2018-08-16 | 日本電信電話株式会社 | Tensor factor decomposition processing apparatus, tensor factor decomposition processing method and tensor factor decomposition processing program |
CN111291240A (en) * | 2018-12-06 | 2020-06-16 | 华为技术有限公司 | Method for processing data and data processing device |
WO2022079815A1 (en) | 2020-10-13 | 2022-04-21 | 富士通株式会社 | Machine learning program, machine learning method, and machine learning device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120016878A1 (en) * | 2010-07-15 | 2012-01-19 | Xerox Corporation | Constrained nonnegative tensor factorization for clustering |
JP2013003967A (en) * | 2011-06-20 | 2013-01-07 | Nippon Telegr & Teleph Corp <Ntt> | Time relation data analysis device, method, and program |
-
2015
- 2015-04-30 JP JP2015093088A patent/JP6058065B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120016878A1 (en) * | 2010-07-15 | 2012-01-19 | Xerox Corporation | Constrained nonnegative tensor factorization for clustering |
JP2013003967A (en) * | 2011-06-20 | 2013-01-07 | Nippon Telegr & Teleph Corp <Ntt> | Time relation data analysis device, method, and program |
Non-Patent Citations (2)
Title |
---|
JPN6016045386; 竹内 孝,外3名: '「非負制約下における複合行列分解とそのソーシャルメディア解析への応用」' 情報処理学会 論文誌(トランザクション) 数理モデル化と応用(TOM)[online] 第7巻 第1号, 20140328, pp.71-83, 社団法人情報処理学会 * |
JPN6016045387; 木村 達明: '「大規模ネットワークの故障診断に向けたログ分析技術」' 電子情報通信学会技術研究報告 第114巻 第299号, 20141106, pp.37-42, 一般社団法人電子情報通信学会 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018128708A (en) * | 2017-02-06 | 2018-08-16 | 日本電信電話株式会社 | Tensor factor decomposition processing apparatus, tensor factor decomposition processing method and tensor factor decomposition processing program |
CN111291240A (en) * | 2018-12-06 | 2020-06-16 | 华为技术有限公司 | Method for processing data and data processing device |
CN111291240B (en) * | 2018-12-06 | 2023-12-08 | 华为技术有限公司 | Method for processing data and data processing device |
US11995890B2 (en) | 2018-12-06 | 2024-05-28 | Huawei Technologies Co., Ltd. | Method and apparatus for tensor processing |
WO2022079815A1 (en) | 2020-10-13 | 2022-04-21 | 富士通株式会社 | Machine learning program, machine learning method, and machine learning device |
Also Published As
Publication number | Publication date |
---|---|
JP6058065B2 (en) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10534607B2 (en) | Accessing data in multi-dimensional tensors using adders | |
CN108170639B (en) | Tensor CP decomposition implementation method based on distributed environment | |
WO2013121809A1 (en) | Device, program and method for clustering documents | |
Oh et al. | High-performance tucker factorization on heterogeneous platforms | |
JP6058065B2 (en) | Tensor data calculation device, tensor data calculation method, and program | |
Albash et al. | Off-diagonal expansion quantum monte carlo | |
Wang et al. | An FPGA implementation of the Hestenes-Jacobi algorithm for singular value decomposition | |
JP4369791B2 (en) | Modeling directed scale-free object relationships | |
Woźniak | Fast GPU integration algorithm for isogeometric finite element method solvers using task dependency graphs | |
Hansen et al. | Non-parametric co-clustering of large scale sparse bipartite networks on the gpu | |
CN104376120B (en) | A kind of information retrieval method and system | |
JP6662754B2 (en) | L1 graph calculation device, L1 graph calculation method, and L1 graph calculation program | |
WO2020035997A1 (en) | Tensor data calculation device, tensor data calculation method, and program | |
Darvish Rouhani et al. | Causalearn: Automated framework for scalable streaming-based causal bayesian learning using fpgas | |
Feng et al. | An extrapolation iteration and its lumped type iteration for computing PageRank | |
JP2014228975A (en) | Retrieval device, retrieval method and retrieval program | |
Yudin et al. | Statistical approach to calculation of number of network motifs | |
Yousef et al. | Dynamical behaviors of a fractional-order predator–prey model with Holling type iv functional response and its discretization | |
Maity et al. | A comparative numerical study of the spectral theory approach of Nishimura and the roots method based on the analysis of BDMMAP/G/1 queue | |
Gebert et al. | Identifying genes of gene regulatory networks using formal concept analysis | |
JP7384279B2 (en) | Data processing method, data processing device and data processing program | |
Liu et al. | Longhorn: State space models are amortized online learners | |
Block et al. | FPGA hardware acceleration of a phylogenetic tree reconstruction with maximum parsimony algorithm | |
Liu et al. | A parallel IRAM algorithm to compute PageRank for modeling epidemic spread | |
Di Bucchianico et al. | Mathematics for big data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161117 |
|
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: 20161129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161206 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6058065 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |