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

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

▶ 富士通株式会社の特許一覧

特許7487790機械学習プログラム、機械学習方法及び機械学習装置
<>
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図1
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図2
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図3
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図4
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図5
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図6
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図7A
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図7B
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図7C
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図7D
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図7E
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図8
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図9
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図10
  • 特許-機械学習プログラム、機械学習方法及び機械学習装置 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-13
(45)【発行日】2024-05-21
(54)【発明の名称】機械学習プログラム、機械学習方法及び機械学習装置
(51)【国際特許分類】
   G06N 20/00 20190101AFI20240514BHJP
【FI】
G06N20/00
【請求項の数】 6
(21)【出願番号】P 2022556736
(86)(22)【出願日】2020-10-13
(86)【国際出願番号】 JP2020038681
(87)【国際公開番号】W WO2022079815
(87)【国際公開日】2022-04-21
【審査請求日】2023-03-24
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】トルマチョーブ アルセーニ
(72)【発明者】
【氏名】酒井 彬
(72)【発明者】
【氏名】等々力 賢
【審査官】千葉 久博
(56)【参考文献】
【文献】AHMADI-ASLY, Salman, et al.,"Randomized Algorithms for Computation of Tucker decomposition and Higher Order SVD (HOSVD)",arXiv:2001.07124v3,version v3,[online], arXiv (Cornell University),2020年09月01日,Pages 1-19,[retrieved on 2020.11.10], Retrieved from the Internet: <URL: https://arxiv.org/abs/2001.07124v3> and <URL: https://arxiv.org/pdf/2001.07124v3.pdf>.
【文献】村上純(外3名),「統計ソフトRによる多次元データ処理入門」,初版,日本,日新出版株式会社,2017年03月30日,Pages 1-6 and 219-244,ISBN: 978-4-8173-0254-0
【文献】MARUHASHI, Koji, et al.,"Learning Multi-Way Relations via Tensor Decomposition with Neural Networks",Proceedings of The Thirty-Second AAAI Conference on Artificial Intelligence (AAAI-18),[online],2018年04月29日,Pages 3770-3777,[retrieved on 2020.11.10], Retrieved from the Internet: <URL: https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/view/17010> and <URL: https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/view/17010/16600>.
【文献】LIU, Hanpeng, et al.,"CoSTCo: A Neural Tensor Completion Model for Sparse Tensors",Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (KDD'19),2019年07月,Pages 324-334,<DOI: 10.1145/3292500.3330881>.
(58)【調査した分野】(Int.Cl.,DB名)
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
テンソル形式のデータに含まれる複数の軸のうち、1つの要素だけが壱であって他の要素が零であるワンホットベクトルで表現された第1の軸とワンホットベクトルで表現されていない第2の軸とを、予め記憶部に記憶された情報に基づいて特定し、
前記テンソル形式のデータから複数の中間テンソルを介してコアテンソルを算出する際、前記複数の中間テンソルのうち第1の中間テンソルから前記第1の軸に対する中間テンソルを生成する場合、前記第1の中間テンソルに含まれる前記第1の軸に関する非零の要素に前記第1の軸に対応する第1の要素行列に含まれる非零の要素を連結させる第1の処理と、前記複数の中間テンソルのうち第2の中間テンソルから前記第2の軸に対する中間テンソルを生成する場合、前記第2の中間テンソルと前記第2の軸に対応する第2の要素行列とのモード積を算出する第2の処理とによって、前記テンソル形式のデータから前記コアテンソルを算出し、
前記コアテンソルを入力として機械学習モデルの機械学習を実行する、
処理を実行させることを特徴とする機械学習プログラム。
【請求項2】
前記第1の処理と前記第2の処理の実行順序を決定する処理を前記コンピュータにさらに実行させ、
前記コアテンソルを算出する処理は、前記決定する処理により決定された順序で前記第1の処理と前記第2の処理を実行することによって、前記コアテンソルを算出する処理を含む、
ことを特徴とする請求項1に記載の機械学習プログラム。
【請求項3】
前記決定する処理は、前記第1の軸の要素が前記第2の軸に依存する場合に、前記第1の処理を前記第2の処理より前に行うと決定し、前記第1の軸の要素が前記第2の軸に依存しない場合に、前記第1の処理を前記第2の処理の後に行うと決定する処理を含む、
ことを特徴とする請求項2に記載の機械学習プログラム。
【請求項4】
前記特定する処理は、ラベルモードの軸を前記第1の軸として特定し、トポロジーモードの軸を前記第2の軸として特定する処理を含む、
ことを特徴とする請求項1、2又は3に記載の機械学習プログラム。
【請求項5】
コンピュータが、
テンソル形式のデータに含まれる複数の軸のうち、1つの要素だけが壱であって他の要素が零であるワンホットベクトルで表現された第1の軸とワンホットベクトルで表現されていない第2の軸とを、予め記憶部に記憶された情報に基づいて特定し、
前記テンソル形式のデータから複数の中間テンソルを介してコアテンソルを算出する際、前記複数の中間テンソルのうち第1の中間テンソルから前記第1の軸に対する中間テンソルを生成する場合、前記第1の中間テンソルに含まれる前記第1の軸に関する非零の要素に前記第1の軸に対応する第1の要素行列に含まれる非零の要素を連結させる第1の処理と、前記複数の中間テンソルのうち第2の中間テンソルから前記第2の軸に対する中間テンソルを生成する場合、前記第2の中間テンソルと前記第2の軸に対応する第2の要素行列とのモード積を算出する第2の処理とによって、前記テンソル形式のデータから前記コアテンソルを算出し、
前記コアテンソルを入力として機械学習モデルの機械学習を実行する、
処理を実行することを特徴とする機械学習方法。
【請求項6】
テンソル形式のデータに含まれる複数の軸のうち、1つの要素だけが壱であって他の要素が零であるワンホットベクトルで表現された第1の軸とワンホットベクトルで表現されていない第2の軸とを、予め記憶部に記憶された情報に基づいて特定する特定部と、
前記テンソル形式のデータから複数の中間テンソルを介してコアテンソルを算出する際、前記複数の中間テンソルのうち第1の中間テンソルから前記第1の軸に対する中間テンソルを生成する場合、前記第1の中間テンソルに含まれる前記第1の軸に関する非零の要素に前記第1の軸に対応する第1の要素行列に含まれる非零の要素を連結させる第1の処理と、前記複数の中間テンソルのうち第2の中間テンソルから前記第2の軸に対する中間テンソルを生成する場合、前記第2の中間テンソルと前記第2の軸に対応する第2の要素行列とのモード積を算出する第2の処理とによって、前記テンソル形式のデータから前記コアテンソルを算出する算出部と、
前記コアテンソルを入力として機械学習モデルの機械学習を実行する学習部と
を有することを特徴とする機械学習装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習プログラム、機械学習方法及び機械学習装置に関する。
【背景技術】
【0002】
機械学習により機械学習モデルを生成し、生成した機械学習モデルを用いて予測、分類などを行うシステムの訓練データとしてテンソルデータが用いられることがある。テンソルデータは、n(nは正の整数)次元の配列として表されるが、グラフ、表などによっても表される。図9は、テンソルデータをグラフ形式と表形式により表現した例を示す図である。図9は、化学式の例を示す。図9(a)は、ホルムアルデヒドの化学式をグラフ形式で表したものであり、図9(b)は、ホルムアルデヒドの化学式を表形式で表したものである。
【0003】
表形式では、始ID、終ID、始素、終素及び結合の5つの軸(列)と、値により化学式が表される。始IDは、繋がりの始点のインデックスである。終IDは、繋がりの終点のインデックスである。なお、始点及び終点へのインデックスの振り方は任意である。始素は、始点の元素の種類である。終素は、終点の元素の種類である。結合は、繋がりの種類である。表形式は、テンソルデータの非ゼロの値のみを行として表現する。図9(b)では、6つの行で表される6つの値だけが1であり、テンソルデータの他の値は0である。テンソルの軸はモードと呼ばれる。
【0004】
機械学習では、データテンソルは、テンソル分解によりコアテンソルに変換され、コアテンソルを用いて訓練が行われる。図10は、テンソル分解を説明するための図である。図10では、白の立方体は0の要素を示し、網掛けの立方体は非ゼロの要素を示す。図10に示すように、データテンソルは、コアテンソルとモード数個の要素行列にテンソル分解される。図10では、データテンソルは3階であり、モード数は3であるので、データテンソルは、コアテンソルと3個の要素行列にテンソル分解される。
【0005】
コアテンソルは、データテンソルと各モードの要素行列のモード積により計算される。図11は、モード積によるコアテンソルの計算を説明するための図である。図11(a)は、モード積を示し、図11(b)はコアテンソル計算を示す。図11(a)に示すように、モード積によりモードの要素数がデータテンソルの数からコアテンソルの要素数に変換される。図11(a)の例では、縦方向のモードの要素数が3から2に変換される。また、モード方向の要素に1つでも非ゼロの要素があれば、変換後のモード方向の要素は全て非ゼロとなる。図11(a)の例では、縦方向の3つの要素91には非ゼロが含まれるので変換後の2つの要素92は非ゼロである。なお、コアテンソルにおける各モードの要素数は、ユーザにより指定される。
【0006】
また、図11(b)に示すように、各モードのモード積を順番に計算することによりコアテンソルが計算される。図11(b)において、Pi(i=1~3)はモードiに対応するモード積を示す。図11(b)に示すように、モード積P1によりデータテンソルから中間テンソル1が計算され、モード積P2により中間テンソル1から中間テンソル2が計算され、モード積P3により中間テンソル2からコアテンソルが計算される。モード積の計算順序は任意である。
【0007】
n階のテンソルをX、コアテンソルをX^、モードi(i=1~n)の要素行列をWiとすると
【数1】
である。ここで、Rは実数の集合である。IiはXのモードiの要素数であり、JiはX^のモードiの要素数である。
【0008】
モードkのモード積Pkは、Xを以下の行列X′として、
【数2】
行列積X″=(Wk)T×X′を計算する。ここで、
【数3】
である。そして、X″のモードを再配置して、中間テンソルXintmが得られる。
【数4】
【0009】
なお、テンソルに関する従来技術として、スパーステンソルの因子分解のための処理を高速化するとともに、処理の際に必要とするメモリ量を削減する装置がある。この装置は、N次元(Nは3以上の整数)のテンソルデータに対し、当該テンソルデータの複数インデックスについてのループ計算において、データ配置処理と計算処理を行う。データ配置処理では、この装置は、計算ループの最下位のインデックスから最上位の1つ前までの各インデックスの順で各インデックスのループ方向順となるようにテンソルデータの要素の順番付けを行う。そして、この装置は、当該順番付けにしたがって、テンソルデータ中の空でない要素について、当該要素の値と、当該要素のテンソルデータ上の位置を示す最下位のインデックスから最上位の1つ前までのインデックスのインデックス値とを記憶部上に配置する。そして、この装置は、当該空でない要素のカウント数を配置する処理を行う。また、計算処理では、この装置は、記憶部上に配置されたテンソルデータに対するループ計算を行う。
【0010】
また、テンソルに関する従来技術として、テンソルのデータ量を抑制することができる情報処理装置がある。この情報処理装置は、CSF(Compressed Sparse Fiber)設計部と、CSF構築部と、CSF圧縮部とを有する。CSF設計部は、CSF表現のデータにテンソルを変換するためにM(ただし、Mは3以上の自然数)階以上のテンソルの軸の順序を設定する。CSF構築部は、CSF設計部による設定にしたがい、M階以上のテンソルをCSF表現のデータに変換する。CSF圧縮部は、CSF表現のデータに現れる重複構造を、当該重複構造を表す代替構造に置換することによりCSF表現のデータを圧縮し、圧縮されたCSF表現のデータである圧縮CSFデータと、置換ルールを示すデータである置換ルールデータとを出力する。
【0011】
また、従来技術として、行列乗算実行時間を改善する方法がある。この方法は、GPU(Graphics Processing Unit)により、既知のサイズの2つの因子行列の行列かける行列の乗算の最適な分割を決定することを含む。この決定ステップは、複数の分割サイズについて2ウェイ分割の異なる組合せごとに、複数の行列かける行列の乗算実行をオフラインで行うことを含む。この決定ステップは、さらに、乗算実行それぞれに実行時間に基づいて性能値をオフラインで決定することを含む。また、この決定ステップは、2ウェイ分割の最高性能の組み合わせにより性能値が改善することがなくなるまで、乗算実行と性能値の決定をオフラインで再帰的に繰り返し、2ウェイ分割の最高性能の組み合わせを最適分割として保存することを含む。そして、この方法は、さらに、オンラインでGPUにより、2つの因子行列の行列かける行列の乗算を、2ウェイ分割の最高性能の組み合わせの1つを呼び出すことによって実行することを含む。
【先行技術文献】
【特許文献】
【0012】
【文献】特開2016-139391号公報
【文献】国際公開第2020/008513号
【文献】米国特許出願公開第2017/0046307号明細書
【発明の概要】
【発明が解決しようとする課題】
【0013】
テンソル分解では、モード数が増加すると計算量が指数的に増加する。例えば、化学式のテンソルデータは、原子番号、陽子数、電荷数、中性子数など多くのモードがあり、テンソル分解の計算量が多い。また、計算量が多いと計算に必要なメモリ量も多い。
【0014】
本発明は、1つの側面では、テンソル分解の計算量を削減することを目的とする。
【課題を解決するための手段】
【0015】
1つの態様では、機械学習プログラムは、コンピュータに、テンソル形式のデータに含まれる複数の軸のうち、要素がワンホットベクトルで表現された第1の軸と要素がワンホットベクトルで表現されていない第2の軸とを特定する処理を実行させる。そして、前記機械学習プログラムは、前記コンピュータに、第1の処理と第2の処理とによって前記テンソル形式のデータから前記コアテンソルを算出する処理を実行させる。前記第1の処理は、前記テンソル形式のデータから複数の中間テンソルを介してコアテンソルを算出する際、前記複数の中間テンソルのうち第1の中間テンソルに含まれる要素に前記第1の軸に対応する第1の要素行列に含まれる要素を連結させる。前記第2の処理は、前記複数の中間テンソルのうち第2の中間テンソルと前記第2の軸に対応する第2の要素行列とのモード積を算出する。そして、前記機械学習プログラムは、前記コンピュータに、前記コアテンソルを入力として機械学習モデルの機械学習を実行する。
【発明の効果】
【0016】
本発明は、1つの側面では、テンソル分解の計算量を削減することができる。
【図面の簡単な説明】
【0017】
図1図1は、ラベルモードとトポロジーモードの例を示す図である。
図2図2は、非ゼロ要素がまばらな行列と密な行列の行列積を説明するための図である。
図3図3は、モード積と連結の相違を説明するための図である。
図4図4は、実施例に係る機械学習装置の機能構成を示す図である。
図5図5は、5つのモードを示す図である。
図6図6は、コアテンソル計算部による処理の手順を示すフローチャートである。
図7A図7Aは、コアテンソル計算部によるコアテンソル計算の効果を説明するための第1の図である。
図7B図7Bは、コアテンソル計算部によるコアテンソル計算の効果を説明するための第2の図である。
図7C図7Cは、コアテンソル計算部によるコアテンソル計算の効果を説明するための第3の図である。
図7D図7Dは、コアテンソル計算部によるコアテンソル計算の効果を説明するための第4の図である。
図7E図7Eは、コアテンソル計算部によるコアテンソル計算の効果を説明するための第5の図である。
図8図8は、実施例に係る機械学習プログラムを実行するコンピュータのハードウェア構成を示す図である。
図9図9は、テンソルデータをグラフ形式と表形式により表現した例を示す図である。
図10図10は、テンソル分解を説明するための図である。
図11図11は、モード積によるコアテンソルの計算を説明するための図である。
【発明を実施するための形態】
【0018】
以下に、本願の開示する機械学習プログラム、機械学習方法及び機械学習装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例
【0019】
まず、ラベルモードとトポロジーモードについて説明する。実施例に係る機械学習装置は、モードをトポロジーモードとラベルモードに分ける。トポロジーモードは、データの繋がりを表現するモードである。ラベルモードは、属性を表すモードである。図1は、ラベルモードとトポロジーモードの例を示す図である。図1に示すように、始ID及び終IDはトポロジーモードであり、始素、終素及び結合ははラベルモードである。ラベルモードはトポロジーモードの1つ以上のモードに対応付けられ、ラベルモードの値は対応付けられるトポロジーモードにより決まる。
【0020】
例えば、始素は始IDに対応付けられ、始素の値は始IDにより決まる。始IDが1であれば始素はCであり、始IDが2又は3であれば始素はHであり、始IDが4であれば始素はOである。また、終素は終IDに対応付けられ、終素の値は終IDにより決まる。終IDが1であれば終素はCであり、終IDが2又は3であれば終素はHであり、終IDが4であれば終素はOである。また、結合は始IDと終IDに対応付けられ、結合の値は始IDと終IDにより決まる。始IDが1であって終IDが2又は3であれば結合は1であり、始IDが1であって終IDが4であれば結合は2である。
【0021】
ラベルモードは、ワンホット(one-hot)ベクトルとして表現される。ここで、ワンホットベクトルとは、1つの要素だけが1であって他の要素が0であるベクトルである。
【0022】
次に、実施例に係る機械学習装置によるモード積の連結への変換について説明する。データテンソルにラベルモードが多く含まれると、データテンソルの非ゼロ要素はまばらになる。一方、要素行列は非ゼロ要素が密である。モード積の計算は、行列積X″=(Wk)T×X′の計算であり、データテンソルにラベルモードが多く含まれると、非ゼロ要素がまばらな行列と密な行列の行列積を計算するため、モード積の計算を行うごとに中間テンソルの非ゼロの要素数が指数的に増大する。
【0023】
図2は、非ゼロ要素がまばらな行列と密な行列の行列積を説明するための図である。図2において、Aは非ゼロ要素がまばらな行列であり、Bは非ゼロ要素が密な行列であり、CはAとBの行列積である。図2において、黒及び網掛けの四角は非ゼロ要素を示し、白の四角はゼロ要素を示す。図2に示すように、Aの行の非ゼロ要素はBの対応する行との積が計算されCの対応する行を形成する。Aの行に1つでも非ゼロ要素があると、Cの対応する行の要素は全て非ゼロとなる。このように、非ゼロ要素がまばらな行列と密な行列の行列積では、非ゼロ要素の数が指数的に増大する。すなわち、モード積の計算を行うごとに中間テンソルの非ゼロの要素数が指数的に増大する。
【0024】
そこで、実施例に係る機械学習装置は、ラベルモードのモード積を連結(concatenation)に変換する。ここで、連結とは、データテンソル又は中間テンソルの要素に要素行列の要素を付け加えることである。図3は、モード積と連結の相違を説明するための図である。図3は、モード積P2と連結E2の相違を示す。図3において、網掛けの立方体は非ゼロ要素を示し、白の立方体はゼロ要素を示す。nは中間テンソル1のモード「2」に関する非ゼロ要素のサイズであり、mは要素行列2の列の非ゼロ要素のサイズである。
【0025】
図3に示すように、モード積P2の場合には中間テンソル2のモード「2」に関する非ゼロ要素のサイズはn×mであるのに対して、連結E2の場合には中間テンソル2のモード「2」に関する非ゼロ要素のサイズはn+mである。すなわち、実施例に係る機械学習装置は、ラベルモードのモード積を連結に変換することで、非ゼロ要素の数が線形的に増大するようにする。
【0026】
非ゼロ要素がまばらなテンソルXは、インデックステーブルIと非ゼロテンソル要素のベクトルVの組(I,V)で混合表現される。混合表現において、Iの行はVの要素の座標に対応し、Iの列はテンソルのモードに対応する。Iのi番目の行
【数5】
は、非ゼロ要素が密なサブテンソルユニットViを指す。混合表現では、ゼロ要素は表現されない。
【0027】
混合表現においてXと要素行列Wとのモード積は、インデックス分割、テンソル外積、和の順に行われる。例えば、モードnのモード積の計算では、インデックス行は以下の式(1)のように分割される。
【数6】
【0028】
モード積の出力インデックステーブルI′はI^iから形成される。モード積の出力ベクトルV′のそれぞれの値は、Viの行と対応するWの行の外積の和により以下の式(2)に示すように計算される。また、式(2)の和の計算は、以下の式(3)を満たすiについて行われる。
【数7】
【0029】
ラベルモードでは、式(2)の和の計算がなくなり、外積だけになる。また、実施例に係る機械学習装置は、連結の出力ベクトルを以下に示す式(4)を用いて計算する。
【数8】
【0030】
実施例に係る機械学習装置は、テンソル分解により計算したコアテンソルをニューラルネットワークの入力するために、Vの要素をフラットにして連結してニューラルネットワークの入力を作成する。したがって、モード積の外積とベクトル連結は値の数は異なるが同じ情報を含む。このため、ラベルモードのモード積を連結に変換しても、学習への影響はない。
【0031】
次に、実施例に係る機械学習装置の機能構成について説明する。図4は、実施例に係る機械学習装置の機能構成を示す図である。図4に示すように、実施例に係る機械学習装置1は、コアテンソル計算部11と学習部12を有する。
【0032】
コアテンソル計算部11は、データテンソルに関する情報、コアテンソルの各モードの要素数を入力してコアテンソルを計算する。学習部12は、コアテンソル計算部11により計算されたコアテンソルを用いて機械学習を行い、機械学習モデルを生成する。生成された機械学習モデルは、分類、予測などに用いられる。
【0033】
コアテンソル計算部11は、入力部21と、記憶部22と、特定部23と、決定部24と、変換部25と、交換部26と、算出部27とを有する。
【0034】
入力部21は、データテンソルに関する情報、コアテンソルの各モードの要素数を入力して記憶部22に格納する。
【0035】
記憶部22は、入力部21により入力された情報を記憶する。また、記憶部22は、特定部23、決定部24、変換部25、交換部26、算出部27により作成された情報を記憶する。
【0036】
特定部23は、データテンソルの各モードがトポロジーモードであるかラベルモードであるかを特定し、特定結果を記憶部22に格納する。特定部23は、例えば、対象モード以外の全モードの値を固定したときに対象モードの値が1つだけ1であって他は全て0である場合に対象モードをラベルモードと特定し、他の場合には対象モードをトポロジーモードと特定する。なお、データテンソルの各モードがトポロジーモードであるかラベルモードであるかは、入力部21により入力されて記憶部22に格納されてもよい。あるいは、特定部23は、ユーザに問い合わせることでトポロジーモードであるかラベルモードであるかを特定してもよい。
【0037】
決定部24は、テンソル分解のモードの順番を、ラベルモードを先にトポロジーモードを後にするように決定し、決定した順番を記憶部22に格納する。例えば、図5に示すように、始IDのモードを「1」、終IDのモードを「2」、始素のモードを「3」、終素のモードを「4」、結合のモードを「5」とすると、決定部24は、P54321をテンソル分解の処理の順番とする。ここで、P54321は、P5、P4、P3、P2、P1の順番にテンソル分解の処理が行われることを示す。
【0038】
変換部25は、ラベルモードのモード積Pを連結Eに変換し、変換結果を記憶部22に格納する。図5に示した例では、モード「5」、モード「4」及びモード「3」がラベルモードなので、P543がE543に変換され、テンソル分解の処理の順番はE54321となる。
【0039】
交換部26は、連結Eをできるだけ後で処理するように処理の順番を交換し、交換結果を記憶部22に格納する。ただし、交換部26は、ラベルモードの処理をラベルモードに対応付けられたトポロジーモードの処理よりも前に行わなければならないという制約の下に、処理の順番を交換する。
【0040】
例えば、E54321において、E3をできるだけ後に処理する場合に、モード「3」はモード「1」に対応付けられるので、E3はP1より前に行われなければならない。したがって、E3とP2の交換が行われ、E54321はE54231となる。モード「5」とモード「4」はモード「2」に対応付けられるので、これ以上の交換は行われない。連結Eをできるだけ後で処理することで、コアテンソル計算部11は、中間テンソルの非ゼロ要素の数をさらに減らすことができる。
【0041】
交換部26は、ラベルモードに対応付けられたトポロジーモードを、例えば、ユーザに問い合わせることで特定する。なお、ラベルモードに対応付けられたトポロジーモードは、入力部21により入力されて記憶部22に格納されてもよい。
【0042】
算出部27は、交換部26による交換結果に基づいてテンソル分解を行い、コアテンソルを算出する。そして、算出部27は、算出したコアテンソルの情報を記憶部22に格納する。算出部27は、モード積部31と連結部32を有する。モード積部31は、トポロジーモードについてモード積の計算を行う。連結部32は、ラベルモードについて連結計算を行う。
【0043】
次に、コアテンソル計算部11による処理の手順について説明する。図6は、コアテンソル計算部11による処理の手順を示すフローチャートである。図6に示すように、コアテンソル計算部11は、データテンソルの各モードについて、トポロジーモードであるかラベルモードであるかを特定する(ステップS1)。そして、コアテンソル計算部11は、ラベルモード、トポロジーモードの順番にテンソル分解の順番を決定する(ステップS2)。
【0044】
そして、コアテンソル計算部11は、ラベルモードの処理をPからEに変換する(ステップS3)。そして、コアテンソル計算部11は、ラベルモードの処理をラベルモードに対応付けられたトポロジーモードの処理よりも前に行わなければならないという制約の下でEをなるべく後に処理するようにEとPを交換する(ステップS4)。そして、コアテンソル計算部11は、交換により得られた順番でコアテンソルを計算する(ステップS5)。
【0045】
このように、コアテンソル計算部11は、ラベルモードの処理をPからEに変換するので、テンソル分解の計算量を削減することができる。
【0046】
次に、コアテンソル計算部11によるコアテンソル計算の効果について説明する。図7A図7Eは、コアテンソル計算部11によるコアテンソル計算の効果を説明するための図である。なお、図7A図7Eでは、図1に示した例が用いられる。コアテンソル計算の効果は、P54231とE54231の中間テンソルにおける形により表される。ここで、形は、非ゼロ要素の数を示す。また、コアテンソルのモード「5」の要素数をa、モード「4」及びモード「3」の要素数をb、モード「2」及びモード「1」の要素数をcとする。形が[a,b,c]である場合、非ゼロの要素数はa*b*cである。
【0047】
図7Aに示すように、最初のモード「5」については、非ゼロ要素の数は1であるので、形は[1]である。また、要素行列の形は[2,a]であるので、P54231の場合はP5により形は[1×a]=[a]となり、E54231の場合はE5により形は[1+a]=[a+1]となる。
【0048】
次のモード「4」については、図7Bに示すように、要素行列の形は[3,b]であるので、P54231の場合はP4により形は[b,a]となり、E54231の場合はE4により形は[a+b+1]となる。
【0049】
次のモード「2」については、図7Cに示すように、要素行列の形は[4,c]であるので、P54231の場合はP2により形は[c,b,a]となり、E54231の場合はP2により形は[c,a+b+1]となる。
【0050】
次のモード「3」については、図7Dに示すように、要素行列の形は[3,b]であるので、P54231の場合はP3により形は[b,c,b,a]となり、E54231の場合はE3により形は[b+c(a+b+1)]となる。
【0051】
次のモード「1」については、図7Eに示すように、要素行列の形は[4,c]であるので、P54231の場合はP1により形は[c,b,c,b,a]となり、E54231の場合はP1により形は[c,b+c(a+b+1)]となる。
【0052】
このように、コアテンソルの計算において、P54231の場合は非ゼロ要素の数はc*b*c*b*aとなり、E54231の場合は非ゼロ要素の数はc*(b+c*(a+b+1))となる。したがって、コアテンソル計算部11は、コアテンソルの計算において計算量を減らすことができる。
【0053】
上述してきたように、実施例では、特定部23が、データテンソルの各モードがトポロジーモードであるかラベルモードであるかを特定し、変換部25が、ラベルモードのモード積Pを連結Eに変換する。そして、コアテンソルの計算において、モード積部31が、トポロジーモードについてモード積の計算を行い、連結部32が、ラベルモードについて連結計算を行う。したがって、コアテンソル計算部11は、テンソル分解の計算量を減らすことができる。
【0054】
また、実施例では、交換部26が、連結Eをできるだけ後で処理するようにテンソル分解の処理の順番を交換するので、テンソル分解の計算量をさらに減らすことができる。
【0055】
また、実施例では、交換部26は、ラベルモードの処理をラベルモードに対応付けられたトポロジーモードの処理よりも前に行わなければならないという制約の下に、処理の順番を交換するので、テンソル分解の計算量をさらに減らすことができる。
【0056】
なお、実施例では、機械学習装置1について説明したが、機械学習装置1が有する構成をソフトウェアによって実現することで、同様の機能を有する機械学習プログラムを得ることができる。そこで、機械学習プログラムを実行するコンピュータについて説明する。
【0057】
図8は、実施例に係る機械学習プログラムを実行するコンピュータのハードウェア構成を示す図である。図22に示すように、コンピュータ50は、メインメモリ51と、CPU(Central Processing Unit)52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
【0058】
メインメモリ51は、プログラムやプログラムの実行途中結果等を記憶するメモリである。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
【0059】
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置であり、スーパーIO55は、マウスやキーボード等の入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVD、CD-Rの読み書きを行う装置である。
【0060】
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
【0061】
そして、コンピュータ50において実行される機械学習プログラムは、コンピュータ50により読み出し可能な記録媒体の一例であるCD-Rに記憶され、ODD57によってCD-Rから読み出されてコンピュータ50にインストールされる。あるいは、機械学習プログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベース等に記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされた機械学習プログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
【符号の説明】
【0062】
1 機械学習装置
11 コアテンソル計算部
12 学習部
21 入力部
22 記憶部
23 特定部
24 決定部
25 変換部
26 交換部
27 算出部
31 モード積部
32 連結部
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD
91,92 要素
図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図7D
図7E
図8
図9
図10
図11