(57)【要約】【課題】目的関数の最適化処理を高速化する。【解決手段】データ管理装置は、訓練データ行列内の変数次元成分における全要素の値が同じである同値変数次元を識別するサマリ情報を取得するサマリ取得部と、サマリ情報を用いて、訓練データ行列における、パラメータベクトルの更新対象次元に対応する対象変数次元が上記同値変数次元か否かを判定し、この判定結果に基づいて、訓練データ行列の上記対象変数次元の全要素の値の代わりに上記対象変数次元の代表値を、パラメータベクトルの上記更新対象次元の更新差分の算出のための訓練データとして特定するデータ特定部と、を有する。【選択図】図３
2015005086.tif 000002
【特許請求の範囲】
【請求項１】
ｎ次元（ｎは２以上の整数）の変数ベクトル及びパラメータベクトルを少なくとも含む目的関数の最適化に利用される訓練データ行列であって、該変数ベクトルに設定される値パターンである該ｎ次元の訓練データベクトルを複数パターン含む訓練データ行列を管理するデータ管理装置において、
前記訓練データ行列内の変数次元成分における全要素の値が同じである同値変数次元を識別するサマリ情報を取得するサマリ取得部と、
前記サマリ情報を用いて、前記訓練データ行列における、前記パラメータベクトルの更新対象次元に対応する対象変数次元が前記同値変数次元か否かを判定し、該判定結果に基づいて、前記訓練データ行列の該対象変数次元の全要素の値の代わりに該対象変数次元の代表値を、前記パラメータベクトルの該更新対象次元の更新差分の算出のための訓練データとして特定するデータ特定部と、
を備えるデータ管理装置。
【請求項２】
前記訓練データ行列が複数の部分行列に区分けされることを示す区分情報を取得する区分取得部、
を更に備え、
前記サマリ取得部は、前記区分情報で特定される前記複数の部分行列の各々について、部分行列内の前記同値変数次元をそれぞれ識別する前記サマリ情報を取得し、
前記データ特定部は、前記区分情報を用いて、前記複数の部分行列の中から、前記パラメータベクトルの前記更新対象次元に対応する前記対象変数次元を含む対象部分行列を選択し、前記サマリ情報を用いて、該対象部分行列に含まれる前記対象変数次元が前記同値変数次元か否かを判定し、該判定結果に基づいて、該対象部分行列の前記対象変数次元の全要素の値の代わりに前記対象変数次元の代表値を、前記パラメータベクトルの前記更新対象次元の更新差分の算出のための訓練データとして特定する、
請求項１に記載のデータ管理装置。
【請求項３】
前記区分取得部は、前記訓練データ行列の少なくとも１つの区分けラインを決定し、かつ、該区分けラインに基づいて、前記各部分行列の前記訓練データ行列内の位置をそれぞれ示す前記区分情報を生成し、
前記サマリ取得部は、前記区分情報で特定される前記複数の部分行列の各々から前記同値変数次元をそれぞれ検出し、前記各部分行列に含まれる変数次元毎に前記同値変数次元か否かを示す前記サマリ情報を生成する、
請求項２に記載のデータ管理装置。
【請求項４】
前記区分取得部は、前記区分けラインの決定前に、前記訓練データ行列内の前記訓練データベクトルの並びを変更する、
請求項３に記載のデータ管理装置。
【請求項５】
前記区分取得部は、前記訓練データ行列内の前記訓練データベクトル毎に、所定指標に基づくスコアを付与し、該スコアを用いて、前記訓練データ行列内の前記訓練データベクトルの並びを変更する、
請求項４に記載のデータ管理装置。
【請求項６】
前記サマリ取得部は、前記サマリ情報に、前記同値変数次元成分の前記代表値を含める、
請求項３から５のいずれか１項に記載のデータ管理装置。
【請求項７】
請求項１から６のいずれか１項に記載のデータ管理装置で管理される前記訓練データ行列を用いて、前記目的関数の最適化を行うデータ分析装置において、
前記訓練データ行列又は前記対象部分行列における、前記対象変数次元の全要素の値を用いるか、及び、前記対象変数次元の代表値を用いるかのいずれか一方を決定するデータ決定部と、
前記データ決定部の決定に応じて、前記訓練データ行列又は前記対象部分行列における前記対象変数次元の全要素の値の代わりに前記対象変数次元の代表値を用いて、前記パラメータベクトルの前記更新対象次元の更新差分を算出する最適化処理部と、
を備えるデータ分析装置。
【請求項８】
前記データ決定部は、前記サマリ情報を用いて前記決定を行う、
請求項７に記載のデータ分析装置。
【請求項９】
ｎ次元（ｎは２以上の整数）の変数ベクトル及びパラメータベクトルを少なくとも含む目的関数の最適化に利用される訓練データ行列であって、該変数ベクトルに設定される値パターンである該ｎ次元の訓練データベクトルを複数パターン含む訓練データ行列を管理するデータ管理方法において、
前記訓練データ行列内の変数次元成分における全要素の値が同じである同値変数次元を識別するサマリ情報を取得し、
前記サマリ情報を用いて、前記訓練データ行列における、前記パラメータベクトルの更新対象次元に対応する対象変数次元が前記同値変数次元か否かを判定し、
前記判定結果に基づいて、前記訓練データ行列の前記対象変数次元の全ての値の代わりに前記対象変数次元の代表値を、前記パラメータベクトルの前記更新対象次元の更新差分の算出のための訓練データとして特定する、
ことを含むデータ管理方法。
【請求項１０】
前記訓練データ行列が複数の部分行列に区分けされることを示す区分情報を取得し、
前記区分情報を用いて、前記複数の部分行列の中から、前記パラメータベクトルの前記更新対象次元に対応する対象変数次元を含む対象部分行列を選択する、
ことを更に含み、
前記サマリ情報の取得は、前記区分情報で特定される前記複数の部分行列の各々について、部分行列内の前記同値変数次元をそれぞれ識別する前記サマリ情報を取得し、
前記同値変数次元の判定は、前記サマリ情報を用いて、前記対象部分行列に含まれる前記対象変数次元が前記同値変数次元か否かを判定し、
前記訓練データの特定は、前記判定結果に基づいて、前記対象部分行列の前記対象変数次元の全要素の値の代わりに前記対象変数次元の代表値を、前記パラメータベクトルの前記更新対象次元の更新差分の算出のための訓練データとして特定する、
請求項９に記載のデータ管理方法。
【請求項１１】
前記訓練データ行列の少なくとも１つの区分けラインを決定し、
前記区分けラインに基づいて、前記各部分行列の前記訓練データ行列内の位置をそれぞれ示す前記区分情報を生成し、
前記区分情報で特定される前記複数の部分行列の各々から前記同値変数次元をそれぞれ検出し、
前記各部分行列に含まれる変数次元毎に前記同値変数次元か否かを示す前記サマリ情報を生成する、
ことを更に含む請求項１０に記載のデータ管理方法。
【請求項１２】
前記区分けラインの決定前に、前記訓練データ行列内の前記訓練データベクトルの並びを変更する、
ことを更に含む請求項１１に記載のデータ管理方法。
【請求項１３】
前記並びの変更は、前記訓練データ行列内の前記訓練データベクトル毎に、所定指標に基づくスコアを付与し、該スコアを用いて、前記訓練データ行列内の前記訓練データベクトルの並びを変更する、
請求項１２に記載のデータ管理方法。
【請求項１４】
前記サマリ情報に、前記同値変数次元成分の前記代表値を含める、
ことを更に含む請求項１１から１３のいずれか１項に記載のデータ管理方法。
【請求項１５】
請求項９から１４のいずれか１項に記載のデータ管理方法で管理される前記訓練データ行列を用いて、前記目的関数の最適化を行うデータ分析方法において、
前記訓練データ行列又は前記対象部分行列における、前記対象変数次元の全要素の値を用いるか、及び、前記対象変数次元の代表値を用いるかのいずれか一方を決定し、
前記決定に応じて、前記訓練データ行列又は前記対象部分行列における前記対象変数次元の全要素の値の代わりに前記対象変数次元の代表値を用いて、前記パラメータベクトルの前記更新対象次元の更新差分を算出する、
ことを含むデータ分析方法。
【請求項１６】
前記決定は、前記サマリ情報を用いて行う、
請求項１５に記載のデータ分析方法。
【請求項１７】
請求項９から１４のいずれか１項に記載のデータ管理方法、及び、請求項１５又は１６に記載のデータ分析方法の少なくとも一方を少なくとも一つのコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、訓練データを用いて目的関数を最適化する技術に関する。
【背景技術】
【０００２】
データ分析やデータマイニングの分野等において機械学習と呼ばれる技術が利用されている。機械学習における回帰やＳＶＭ（Support Vector Machine）等の多くの手法は、訓練データ（デザイン行列、特徴量とも呼ばれる）からパラメータの学習を行う際に、目的関数を定義し、この目的関数を最適化することで最適なパラメータを学習する。よって、機械学習を効率よく行うために、最適化問題の効率化が望まれる。
【０００３】
最適化手法において様々なアルゴリズムが提案されている。例えば、下記特許文献１では、最急降下法等の非線形最適化手法を用いて、鏡面修整形ビームアンテナを設計する手法が提案されている。また、下記特許文献２では、ＣＤ（Coordinate Descent）法や準ニュートン法を用いるニューラルネット学習方法が提案されている。
【０００４】
ここで、勾配法と呼ばれる最適化手法の一種である上記ＣＤ法の作用について、図１８を用いて、説明する。図１８は、２次元空間におけるＣＤ法の作用を概念的に示す図である。図１８の例では、パラメータｗは、ｗ１及びｗ２の要素を持つ２次元ベクトルであり、楕円は、目的関数ｆ（ｗ）が同値を取るｗ１とｗ２との組み合わせを示し、星マークが、目的関数ｆ（ｗ）の値が最小又は最大となる点、即ち、目的解ｗ＊を示す。目的関数ｆ（ｗ）が与えられたとき、ＣＤ法は、ｆ（ｗ）の空間の各座標軸（各次元）に沿って、ｆ（ｗ）が最小又は最大となる地点（目的解）ｗ＊を探索していく。具体的には、開始点ｗＳＴＡＲＴが決められた後、次のような処理が繰り返される。即ち、座標軸（次元）ｊが選ばれ、訓練データに基づいて移動方向ｄと移動幅（ステップ幅）αが決定され、ｗｊがｗｊ＋αｄで更新される。次の繰り返しでは、他の座標軸（次元）ｊが選ばれる。このような繰り返しが、全ての座標軸（次元）について順番に、目的関数ｆ（ｗ）の値がｗ＊に十分近づくまで、行われる。
【０００５】
ＣＤ法によれば、逆行列演算のようなコストの高い行列演算を行うことなく、パラメータｗの更新計算を行うことができるため、最適化計算の負荷を低減させることができる。加えて、ＣＤ法は、簡易なアルゴリズムであるため、比較的容易に実装を行うことができるというメリットも有する。このようなメリットにより、回帰やＳＶＭ等の機械学習の多くの主要な手法が、ＣＤ法に基づき実装されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０９−２８４０４４号公報
【特許文献２】特開平１０−１９８６４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のＣＤ法等の最適化手法では、複数回の繰り返し計算が行われるため、処理時間が増大する傾向にある。その処理時間には、計算時間のみならず、訓練データの読み込み時間も含まれる。訓練データの読み込みは、上述のように座標軸毎に必要となるため、パラメータの次元が大きくなる程、当該読み込みが頻発し、結果として、処理時間が増大することになる。
【０００８】
本発明は、このような事情に鑑みてなされたものであり、目的関数の最適化処理を高速化する技術を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の各側面では、上述した課題を解決するために、それぞれ以下の構成を採用する。
【００１０】
第１の側面は、ｎ次元（ｎは２以上の整数）の変数ベクトル及びパラメータベクトルを少なくとも含む目的関数の最適化に利用される訓練データ行列であって、当該変数ベクトルに設定される値パターンであるｎ次元の訓練データベクトルを複数パターン含む訓練データ行列を管理するデータ管理装置に関する。第１の側面に係るデータ管理装置は、訓練データ行列内の変数次元成分における全要素の値が同じである同値変数次元を識別するサマリ情報を取得するサマリ取得部と、サマリ情報を用いて、訓練データ行列における、パラメータベクトルの更新対象次元に対応する対象変数次元が上記同値変数次元か否かを判定し、この判定結果に基づいて、訓練データ行列の上記対象変数次元の全要素の値の代わりに上記対象変数次元の代表値を、パラメータベクトルの上記更新対象次元の更新差分の算出のための訓練データとして特定するデータ特定部と、を有する。
【００１１】
第２の側面は、上記第１の側面におけるデータ管理装置で管理される訓練データ行列を用いて、目的関数の最適化を行うデータ分析装置に関する。第２の側面に係るデータ分析装置は、訓練データ行列における、上記対象変数次元の全要素の値を用いるか、及び、上記対象変数次元の代表値を用いるかのいずれか一方を決定するデータ決定部と、データ決定部の決定に応じて、訓練データ行列における上記対象変数次元の全要素の値の代わりに上記対象変数次元の代表値を用いて、パラメータベクトルの更新対象次元の更新差分を算出する最適化処理部と、を有する。
【００１２】
第３の側面は、上記訓練データ行列を管理するデータ管理方法に関する。第３の側面に係るデータ管理方法は、訓練データ行列内の変数次元成分における全要素の値が同じである同値変数次元を識別するサマリ情報を取得し、このサマリ情報を用いて、訓練データ行列における、パラメータベクトルの更新対象次元に対応する対象変数次元が上記同値変数次元か否かを判定し、この判定結果に基づいて、訓練データ行列の上記対象変数次元の全ての値の代わりに上記対象変数次元の代表値を、パラメータベクトルの更新対象次元の更新差分の算出のための訓練データとして特定することを含む。
【００１３】
第４の側面は、上記第３の側面に係るデータ管理方法で管理される訓練データ行列を用いて、目的関数の最適化を行うデータ分析方法に関する。第４の側面に係るデータ分析方法は、訓練データ行列における、対象変数次元の全要素の値を用いるか、及び、対象変数次元の代表値を用いるかのいずれか一方を決定し、この決定に応じて、訓練データ行列における上記対象変数次元の全要素の値の代わりに上記対象変数次元の代表値を用いて、パラメータベクトルの上記更新対象次元の更新差分を算出する、ことを含む。
【００１４】
なお、本発明の他の側面としては、上記第３及び第４の各側面の方法の少なくとも一方を少なくとも一つのコンピュータに実行させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【発明の効果】
【００１５】
上記各側面によれば、目的関数の最適化処理を高速化することができる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態におけるデータ管理装置のハードウェア構成例を概念的に示す図である。
【図２】訓練データ行列の例を示す図である。
【図３】第１実施形態におけるデータ管理装置の処理構成例を概念的に示す図である。
【図４】第１実施形態におけるデータ管理装置の動作例を示すフローチャートである。
【図５】第２実施形態におけるデータ管理装置の処理構成例を概念的に示す図である。
【図６】訓練データ行列の区分けの例を示す図である。
【図７】第２実施形態におけるデータ管理装置の動作例を示すフローチャートである。
【図８】第３実施形態における最適化システムの構成を概念的に示す図である。
【図９】データ格納装置の格納部を概念的に示す図である。
【図１０】ブロックサマリテーブルの例を示す図である。
【図１１】第３実施形態におけるデータ管理装置の処理構成例を概念的に示す図である。
【図１２】データ分析装置の処理構成例を概念的に示す図である。
【図１３】第３実施形態におけるデータ管理装置の動作例を示すフローチャートである。
【図１４】第３実施形態におけるデータ管理装置の動作例を示すフローチャートである。
【図１５】第３実施形態におけるデータ分析装置の動作例を示すフローチャートである。
【図１６】図２に示される訓練データ行列のソート例を示す図である。
【図１７】図１６に示される訓練データ行列に基づいて生成されたブロックサマリテーブルの例を示す図である。
【図１８】２次元空間におけるＣＤ（Coordinate Descent）法の作用を概念的に示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
【００１８】
［第１実施形態］
〔装置構成〕
図１は、第１実施形態におけるデータ管理装置１０のハードウェア構成例を概念的に示す図である。第１実施形態におけるデータ管理装置１０は、いわゆるコンピュータであり、相互にバスで接続される、ＣＰＵ（Central Processing Unit）２、メモリ２、入出力インタフェース（Ｉ／Ｆ）３、通信装置４等を有する。メモリ２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク、可搬型記憶媒体等である。
【００１９】
入出力Ｉ／Ｆ３は、表示装置（図示せず）や入力装置（図示せず）等のようなユーザインタフェース装置と接続され得る。通信装置４は、ネットワーク（図示せず）を介して他の装置と通信を行う。本実施形態は、データ管理装置１０のハードウェア構成を制限しない。
【００２０】
データ管理装置１０は、訓練データ行列を管理する。訓練データ行列は、ｎ次元（ｎは２以上の整数）の変数ベクトル及びパラメータベクトルを少なくとも含む目的関数の最適化に利用される。訓練データ行列は、その変数ベクトルに設定される値パターンであるｎ次元の訓練データベクトルを複数パターン含む。即ち、訓練データベクトルの各次元の値は、目的関数を形成する変数ベクトルの各次元の値となる。よって、訓練データ行列は、訓練データベクトル（変数ベクトル）の次元に対応する変数次元成分と、異なる値パターンを持つ各訓練データベクトルに対応する値パターン成分とを持つということができる。
【００２１】
図２は、訓練データ行列の例を示す図である。図２の例では、次元数ｎが８であり、各行（ｉ）が各値パターンの訓練データベクトルにそれぞれ対応する。即ち、異なる値パターンを持つ複数の訓練データベクトルが縦方向（列方向）に並んでいる。そして、各列（ｊ）が訓練データベクトルの各次元（変数次元成分）に対応する。即ち、図２に示される訓練データ行列では、変数次元成分が列に割り当てられ、値パターン成分が行に割り当てられている。但し、本実施形態は、訓練データ行列の形を図２の例のみに限定しない。変数次元成分が行に割り当てられ、値パターン成分が列に割り当てられた訓練データ行列が利用されてもよい。
〔処理構成〕
図３は、第１実施形態におけるデータ管理装置１０の処理構成例を概念的に示す図である。第１実施形態におけるデータ管理装置１０は、サマリ取得部１１、データ特定部１２等を有する。これら各処理部は、例えば、ＣＰＵ１によりメモリ２に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ３を介してインストールされ、メモリ２に格納されてもよい。
【００２２】
サマリ取得部１１は、訓練データ行列内の変数次元成分における全要素の値が同じである同値変数次元を識別するサマリ情報を取得する。図２に示される訓練データ行列が用いられる場合、サマリ取得部１１は、訓練データ行列内における、列に含まれる各行の値が同じである同値列を識別するサマリ情報を取得する。サマリ情報は、訓練データ行列内の同値列を識別できれば、同値列の列番号ｊを示してもよいし、同値列以外の列番号ｊを示してもよい。
【００２３】
また、サマリ情報は、サマリ取得部１１自身により生成されてもよいし、予めメモリ２に格納されていてもよい。また、当該サマリ情報は、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体等から入出力Ｉ／Ｆ３を経由して取得された情報であってもよいし、他の装置から通信装置４を経由して取得された情報であってもよい。
【００２４】
データ特定部１２は、サマリ取得部１１で取得されたサマリ情報を用いて、訓練データ行列における、パラメータベクトルの更新対象次元に対応する対象変数次元が、同値変数次元か否かを判定し、この判定結果に基づいて、訓練データ行列の対象変数次元の全要素の値の代わりに同値変数次元の代表値を、パラメータベクトルの更新対象次元の更新差分の算出のための訓練データとして特定する。具体的には、データ特定部１２は、訓練データ行列の対象変数次元が同値変数次元でない場合、訓練データ行列の対象変数次元の全ての値を特定し、訓練データ行列の対象変数次元が同値変数次元である場合、訓練データ行列の対象変数次元の全ての値の代わりに対象変数次元の代表値を特定する。同値変数次元は、全要素の値が同じであるため、同値変数次元となる対象変数次元の代表値は、その変数次元のいずれか１つの要素の値に設定される。上述のように、以降、パラメータベクトルの更新対象次元に対応する、訓練データ行列の変数次元を対象変数次元と表記する。
【００２５】
〔動作例〕
次に、第１実施形態におけるデータ管理方法について図４を用いて説明する。図４は、第１実施形態におけるデータ管理装置１０の動作例を示すフローチャートである。以下の説明では、データ管理装置１０が各工程の実行主体となるが、データ管理装置１０に含まれる上述の各処理部が実行主体となってもよい。
【００２６】
データ管理装置１０は、訓練データ行列内の同値変数次元を識別するサマリ情報を取得する（Ｓ４１）。サマリ情報は、上述のとおり、全要素の値が同じである同値変数次元を識別し得る情報である。
【００２７】
データ管理装置１０は、（Ｓ４１）で取得されたサマリ情報を用いて、訓練データ行列における、パラメータベクトルの更新対象次元に対応する対象変数次元が同値変数次元か否かを判定する（Ｓ４２）。
【００２８】
データ管理装置１０は、対象変数次元が同値変数次元である場合（Ｓ４３；ＹＥＳ）、訓練データ行列の対象変数次元の全要素の値の代わりに対象変数次元の代表値を、パラメータベクトルの更新対象次元の更新差分の算出のための訓練データとして特定する（Ｓ４４）。一方、データ管理装置１０は、対象変数次元が同値変数次元でない場合（Ｓ４３；ＮＯ）、訓練データ行列の対象変数次元の全要素の値を上記訓練データとして特定する（Ｓ４５）。
【００２９】
〔第１実施形態の作用及び効果〕
上述の第１実施形態では、訓練データ行列の同値変数次元を識別するサマリ情報が取得され、このサマリ情報に基づいて、パラメータベクトルの更新対象次元に対応する訓練データ行列の変数次元（対象変数次元）が同値変数次元であるか否かが判定される。この判定において、対象変数次元が同値変数次元である場合、全要素の値ではなく、その対象変数次元の代表値が特定される。そして、全要素の値の代わりにこの特定された代表値を用いて、パラメータベクトルの更新対象次元の更新差分を算出することができ、この算出された更新差分によりパラメータベクトルの各次元を順次更新し、最終的に、目的関数を最適化することができる。
【００３０】
従って、パラメータベクトルの更新差分の算出に、上述の第１実施形態において特定された訓練データを用いれば、対象変数次元の全要素の値を用いるよりも、より少ない値（代表値）を用いて更新差分を算出することができ、ひいては、目的関数の最適化計算の負荷を軽減することができる。上述したように、最適化処理の時間には、計算時間のみならず、訓練データの読み込み時間も含まれる。第１実施形態によれば、全要素の値の代わりに１つの代表値を読み込めばよいため、訓練データの読み込み時間も短縮することができる。このため、第１実施形態によれば、目的関数の最適化処理を高速化することができる。全要素の値を用いる場合と同様に、１つの代表値を用いて更新差分を算出することができる理由、及び、１つの代表値を用いることで最適化処理を高速化できる理由については、実施例の項において具体例を挙げて説明する。
【００３１】
［第２実施形態］
第２実施形態は、訓練データ行列を区分けして得られる複数の部分行列が用いられる点で、第１実施形態と異なる。以下、第２実施形態におけるデータ管理装置１０及びデータ管理方法について、第１実施形態と異なる内容を中心に説明する。以下の説明では、第１実施形態と同様の内容については適宜省略する。
【００３２】
〔処理構成〕
図５は、第２実施形態におけるデータ管理装置１０の処理構成例を概念的に示す図である。第２実施形態におけるデータ管理装置１０は、第１実施形態の構成に加えて、区分取得部１３を更に有する。区分取得部１３についても、他の処理部と同様に実現される。
【００３３】
区分取得部１３は、訓練データ行列が複数の部分行列に区分けされることを示す区分情報を取得する。各部分行列が持つ値が特定可能であれば、区分情報の形態は制限されない。例えば、区分情報は、各部分行列の訓練データ行列内の位置をそれぞれ示す情報であってもよい。区分情報は、区分取得部１３自身により生成されてもよいし、予めメモリ２に格納されていてもよい。また、当該区分情報は、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体等から入出力Ｉ／Ｆ３を経由して取得された情報であってもよいし、他の装置から通信装置４を経由して取得された情報であってもよい。
【００３４】
図６は、訓練データ行列の区分けの例を示す図である。図６の例では、訓練データ行列が４つの部分行列Ｐ１、Ｐ２、Ｐ３及びＰ４に区分けされている。但し、本実施形態は、訓練データ行列の区分けの形態を制限しない。訓練データ行列は、行でのみ（横方向のみに）区分けされてもよいし、列でのみ（縦方向のみに）区分けされてもよいし、列及び行における区分けの数も制限されない。
【００３５】
サマリ取得部１１は、区分取得部１３で取得された区分情報で特定される各部分行列について、部分行列内の同値変数次元をそれぞれ識別するサマリ情報を取得する。第２実施形態で取得されるサマリ情報は、各部分行列内の同値変数次元をそれぞれ識別可能とする情報である。
【００３６】
データ特定部１２は、区分情報を用いて、複数の部分行列の中から、パラメータベクトルの更新対象次元に対応する対象変数次元を含む対象部分行列を選択し、サマリ情報を用いて、その対象部分行列に含まれる対象変数次元が同値変数次元成分か否かを判定する。データ特定部１２は、その判定結果に基づいて、対象部分行列の対象変数次元の全要素の値の代わりに当該対象変数次元の代表値を、パラメータベクトルの更新対象次元の更新差分の算出のための訓練データとして特定する。以降、パラメータベクトルの更新対象次元に対応する訓練データ行列の対象変数次元を含む当該部分行列を対象部分行列又は対象ブロックと表記する。また、訓練データ行列から得られる部分行列をブロックと表記する場合もある。
【００３７】
図６の例において、対象変数次元が４に設定される場合、データ特定部１２は、部分行列Ｐ１及びＰ２を対象部分行列として選択し、対象部分行列Ｐ１の対象変数次元（４）を同値変数次元（各値＝０）と判定し、対象部分行列Ｐ２の対象変数次元（４）を同値変数次元でないと判定する。データ特定部１２は、対象部分行列Ｐ１については、対象変数次元（４）の代表値（０）を特定し、対象部分行列Ｐ２については、全要素の値（０．１６，０．０４，０．３６，０．４９）を特定する。
〔動作例〕
次に、第２実施形態におけるデータ管理方法について図７を用いて説明する。図７は、第２実施形態におけるデータ管理装置１０の動作例を示すフローチャートである。以下の説明では、データ管理装置１０が各工程の実行主体となるが、データ管理装置１０に含まれる上述の各処理部が実行主体となってもよい。
【００３８】
データ管理装置１０は、訓練データ行列の区分情報を取得する（Ｓ７１）。区分情報については上述したとおりである。
【００３９】
データ管理装置１０は、サマリ情報を取得する（Ｓ７２）。第２実施形態で取得されるサマリ情報は、各部分行列内の同値変数次元をそれぞれ識別可能とする情報である。
【００４０】
データ管理装置１０は、（Ｓ７１）で取得された区分情報を用いて、複数の部分行列の中から、パラメータベクトルの更新対象次元に対応する対象変数次元を含む対象部分行列を選択する（Ｓ７３）。区分情報に応じて、（Ｓ７３）では、複数の対象部分行列が選択される場合と、１つの対象部分行列が選択される場合とがあり得る。
【００４１】
データ管理装置１０は、（Ｓ７３）で選択された対象部分行列の中の１つに関し、（Ｓ７２）で取得されたサマリ情報を用いて、対象変数次元が同値変数次元か否かを判定する（Ｓ７４）。
【００４２】
データ管理装置１０は、対象変数次元が同値変数次元である場合（Ｓ７５；ＹＥＳ）、対象部分行列の対象変数次元の全要素の値の代わりにその対象変数次元の代表値を、パラメータベクトルの更新対象次元の更新差分の算出のための訓練データとして特定する（Ｓ７６）。一方、データ管理装置１０は、対象変数次元が同値変数次元でない場合（Ｓ７５；ＮＯ）、対象部分行列の対象変数次元の全要素の値を上記訓練データとして特定する（Ｓ７７）。
【００４３】
データ管理装置１０は、（Ｓ７３）で選択された全ての対象部分行列について（Ｓ７４）の判定を完了したか否かを判定し（Ｓ７８）、全ての対象部分行列の判定を完了している場合には（Ｓ７８；ＹＥＳ）、処理を終了する。一方、データ管理装置１０は、全ての対象部分行列の判定を完了していない場合には（Ｓ７８；ＮＯ）、未だ判定が行われていない対象部分行列に対して、（Ｓ７４）以降の工程を実行する。
【００４４】
〔第２実施形態の作用及び効果〕
上述のように、第２実施形態では、区分情報に基づいて、訓練データ行列が区分けされてなる複数の部分行列の中から、パラメータベクトルの更新対象次元に対応する対象変数次元を持つ対象部分行列が選択され、サマリ情報に基づいて、対象部分行列の対象変数次元が同値変数次元であるか否かが判定される。この判定により、各対象部分行列から、対象変数次元の全要素の値か、又は、それに代わる代表値がそれぞれ特定される。この特定された訓練データを用いれば、パラメータベクトルの更新対象次元の更新差分を算出することができる。
【００４５】
従って、第２実施形態においても、第１実施形態と同様に、対象変数次元の全要素の値を用いるよりも、より少ない値（代表値）を用いて更新差分を算出することができるため、目的関数の最適化計算の負荷を軽減できると共に、訓練データの読み込み時間も短縮することができる。更に、第２実施形態では、訓練データ行列が行で区分けされる場合、訓練データ行列全体を用いる第１実施形態に比べて、対象変数次元が同値変数次元となる確率が高まる。対象変数次元に含まれる要素数が減るからである。これにより、パラメータベクトルの更新差分の計算に代表値が利用される頻度を、第１実施形態よりも高めることができる。従って、第２実施形態によれば、最適化処理の高速化という効果を奏する可能性を高めることができる。
【００４６】
更に、第２実施形態によれば、主記憶のサイズを超える訓練データが利用される場合においても、主記憶に格納可能な部分行列単位で処理を行うことができるため、低速なＩＯ（Input and Output）処理の発生頻度を抑えることができ、ひいては、目的関数の最適化処理を高速化することができる。
【００４７】
［第３実施形態］
図８は、第３実施形態における最適化システム５０の構成を概念的に示す図である。最適化システム５０は、図８に示されるように、データ管理装置１０、データ分析装置２０、データ格納装置３０等を有する。データ管理装置１０は、上述の第２実施形態におけるデータ管理装置１０に対応する。以下、第３実施形態における最適化システム５０について、第１実施形態及び第２実施形態と異なる内容を中心に説明する。以下の説明では、第１実施形態及び第２実施形態と同様の内容については適宜省略する。
【００４８】
データ格納装置３０は、上述した、訓練データ行列、サマリ情報、区分情報等を格納する。データ管理装置１０は、上述の各実施形態で述べたように訓練データを特定し、その特定された訓練データをデータ分析装置２０に送信する。データ分析装置２０は、データ管理装置１０から送られた訓練データを用いて、目的関数の最適化を行う。
【００４９】
データ管理装置１０、データ分析装置２０及びデータ格納装置３０は、相互に、通信網５を介して通信可能に接続される。通信網５は、インターネット等のような公衆網、ＷＡＮ（Wide Area Network）、ＬＡＮ（Local Area Network）、無線通信ネットワーク等である。なお、本実施形態において、各装置間の通信形態は限定されない。
【００５０】
〔装置構成〕
データ分析装置２０及びデータ格納装置３０は、いわゆるコンピュータであり、上述の各実施形態におけるデータ管理装置１０と同様のハードウェア構成を有する。データ分析装置２０及びデータ格納装置３０のハードウェア構成は制限されない。
【００５１】
〔処理構成〕
〈データ格納装置〉
図９は、データ格納装置３０の格納部を概念的に示す図である。データ格納装置３０は、図９に示されるように、訓練データ格納部３１、関連情報格納部３２等を有する。これら格納部は、メモリ２上に実現される。
【００５２】
訓練データ格納部３１は、図２の例に示されるような訓練データ行列を格納する。訓練データ行列は、上述のように図２の例に制限されない。
関連情報格納部３２は、ブロックサマリテーブルを持つ。ブロックサマリテーブルは、上述のサマリ情報及び区分情報を格納する。以降、訓練データ行列が区分けされて形成される複数の部分行列の各々はブロックと表記される場合もある。関連情報格納部３２は、ブロックサマリテーブルと共に、各部分行列（ブロック）をそれぞれ格納する複数のブロックテーブルを格納してもよい。
【００５３】
図１０は、ブロックサマリテーブルの例を示す図である。図１０の例は、図２に示される訓練データ行列が、図６に示されるように区分けされた場合のブロックサマリテーブルを示す。図１０の例のブロックサマリテーブルは、ブロック毎のレコードを持ち、ＩＤフィールド、行範囲フィールド、訓練データ行列の列毎の列値フィールドから形成される。ＩＤフィールドには、各部分行列（各ブロック）を識別するブロックＩＤが設定される。行範囲フィールドには、各ブロックの、訓練データ行列内の行位置及び行範囲が設定される。各列値フィールドには、＃Ｎ／Ａ、代表値、又は、ＮＵＬＬ（値なし）が設定される。或るレコードにより示されるブロックが訓練データ行列の該当列を持たない場合、そのレコードの、該当列に相当する列値フィールドには、ＮＵＬＬが設定される。或るレコードにより示されるブロックが訓練データ行列の該当列を持つ場合、そのレコードの、該当列に相当する列値フィールドには、＃Ｎ／Ａ、又は、代表値が設定される。該当列が同値変数次元（同値列）に相当する場合には、列値フィールドには代表値が設定され、該当列が同値変数次元（同値列）でない場合には、列値フィールドには＃Ｎ／Ａが設定される。図１０の例では、行範囲フィールドの値及び各列値フィールドの値の組み合わせが区分情報に相当し、各列値フィールドの値（＃Ｎ／Ａ又は代表値）がサマリ情報に相当する。但し、サマリ情報及び区分情報を格納することができれば、ブロックサマリテーブルの形態は、図１０の例に制限されない。例えば、サマリ情報は、各部分行列内の同値変数次元をそれぞれ識別可能とする情報であればよいため、代表値が設定されなくてもよい。
【００５４】
〈データ管理装置〉
図１１は、第３実施形態におけるデータ管理装置１０の処理構成例を概念的に示す図である。第３実施形態におけるデータ管理装置１０は、第２実施形態の構成に加えて、データ割当部１５及び初期値計算部１６を更に有する。データ割当部１５及び初期値計算部１６についても、他の処理部と同様に実現される。
【００５５】
区分取得部１３は、データ格納装置３０の訓練データ格納部３１を参照することにより、訓練データ行列の少なくとも１つの区分けラインを決定し、かつ、この区分けラインに基づいて、各部分行列（ブロック）の訓練データ行列内の位置をそれぞれ示す区分情報を生成する。区分取得部１３は、訓練データ行列全体で、同値変数次元が多くなり、かつ、代表値の各要素の値の集約率が高くなるように、区分ラインを決定することが望ましい。代表値の各要素の値の集約率とは、更新差分の計算において、代表値で代替される要素値の数に相当する。また、区分取得部１３は、各ブロックがデータ分析装置２０の訓練データキュー２３に格納できるサイズとなるように、区分ラインを決定することが望ましい。
【００５６】
図１０の例によれば、例えば、区分取得部１３は、ブロックサマリテーブルの各レコードをそれぞれ生成し、各レコードにおいて、ブロックＩＤ、行範囲データ、及び、各列値フィールドのＮＵＬＬをそれぞれ設定する。区分取得部１３は、訓練データ格納部３１から各ブロックをそれぞれ抽出し、各ブロックを関連情報格納部３２にそれぞれ格納するようにしてもよい。
【００５７】
サマリ取得部１１は、データ格納装置３０の訓練データ格納部３１及び関連情報格納部３２を参照することにより、区分取得部１３により生成された区分情報で特定される複数の部分行列（ブロック）の各々から同値変数次元をそれぞれ検出し、各部分行列に含まれる変数次元毎に同値変数次元か否かを示すサマリ情報を生成する。図１０の例によれば、例えば、サマリ取得部１１は、ブロックサマリテーブルの、区分取得部１３により生成された、ＮＵＬＬが設定されていない各レコードにおいて、各列値フィールドの＃Ｎ／Ａ又は代表値を設定する。サマリ情報は、各部分行列内の同値変数次元をそれぞれ識別可能とする情報であればよいため、サマリ取得部１１は、代表値を設定しなくてもよい。
【００５８】
初期値計算部１６は、訓練データ格納部３１を参照することにより、パラメータベクトルｗ等の、最適化処理の過程で更新計算が行われる変数の初期値を、訓練データ行列を用いて計算する。初期値計算部１６は、算出された初期値をデータ分析装置２０に送る。変数の初期値は、最適化手法に応じた周知の方法で算出されればよい。
【００５９】
データ特定部１２は、データ分析装置２０からパラメータベクトルの更新対象次元の情報を取得し、上述の第２実施形態と同様に、その更新対象次元の更新差分の算出のための訓練データを特定する。データ特定部１２は、パラメータベクトルの更新対象次元の情報として、パラメータベクトルの更新対象次元が更新される順番で並ぶ情報（更新対象次元の順番情報）を取得してもよい。
【００６０】
データ割当部１５は、データ分析装置２０の訓練データキュー２３を監視し、訓練データキュー２３に空きが発生すると、データ特定部１２により特定された訓練データをデータ分析装置２０に送信する。具体的には、データ割当部１５は、対象部分行列における、対象変数次元の全要素の値又は代表値を、空きが生じた訓練データキュー２３を持つデータ分析装置２０に送信する。データ割当部１５は、対象変数次元の全要素の値を送る際には、その対象部分行列全体を送信するようにしてもよい。
【００６１】
〈データ分析装置〉
図１２は、データ分析装置２０の処理構成例を概念的に示す図である。データ分析装置２０は、初期値格納部２１、パラメータ格納部２２、訓練データキュー２３、キュー管理部２５、最適化処理部２６等を有する。これら各処理部は、例えば、ＣＰＵ１によりメモリ２に格納されるプログラムが実行されることにより実現される。
【００６２】
初期値格納部２１は、データ管理装置１０の初期値計算部１６により算出された、変数の初期値を格納する。
パラメータ格納部２２は、パラメータベクトルのような更新される変数を保持する。
【００６３】
訓練データキュー２３は、上述の区分情報、及び、データ管理装置１０から送られる訓練データを格納する。訓練データキュー２３は、各訓練データをブロックの識別情報（ブロックＩＤ）と関連付けてそれぞれ格納する。また、対象ブロックにおける対象変数次元の全要素の値が訓練データとして格納される場合と、その対象変数次元の代表値のみが訓練データとして格納される場合とがある。対象変数次元を含むブロックが複数存在する場合、その複数ブロックに関する複数の代表値が各ブロックの識別情報と関連付けられて格納される。また、代表値を更新差分の算出に利用するためには、その代表値が集約する要素値の数が必要となる。代表値が集約する要素値の数は、訓練データベクトルの数及び図２の例における行に相当するため、当該区分情報から抽出することができる。
【００６４】
キュー管理部２５は、訓練データキュー２３を管理する。具体的には、キュー管理部２５は、データ管理装置１０から送信される訓練データを取得し、この訓練データを、対応するブロックのＩＤと関連付けた状態で訓練データキュー２３に格納する。キュー管理部２５により取得される訓練データは、対象部分行列における対象変数次元の全要素の値、又は、対象変数次元の代表値である。これにより、キュー管理部２５は、データ取得部と表記することもできる。また、キュー管理部２５は、最適化処理部２６による更新差分の計算で利用済みの訓練データを訓練データキュー２３から削除する。
【００６５】
キュー管理部２５は、関連情報格納部３２からブロックサマリテーブルのデータを取得し、このデータが示す区分情報を訓練データキュー２３に格納する。また、キュー管理部２５は、上記区分情報と共に、ブロックサマリテーブルに含まれるサマリ情報も訓練データキュー２３に格納するようにしてもよいし、ブロックサマリテーブル全てを訓練データキュー２３に格納するようにしてもよい。ブロックサマリテーブルに代表値が設定されており、かつ、ブロックサマリテーブルの全データが訓練データキュー２３に格納される場合、キュー管理部２５は、データ管理装置１０から代表値を取得しなくてもよい。
【００６６】
最適化処理部２６は、対象部分行列における対象変数次元の全要素の値を用いるか、及び、対象変数次元の代表値を用いるかのいずれか一方を決定し、訓練データキュー２３からその決定結果に対応する訓練データを読み出し、その更新対象次元の更新差分を算出する。即ち、最適化処理部２６は、訓練データとして代表値が取得された場合、対象部分行列における対象変数次元の全要素の値の代わりに対象変数次元の代表値を用いて、パラメータベクトルの更新対象次元の更新差分を算出する。最適化処理部２６は、この算出された更新差分によりパラメータベクトルの各次元を順次更新し、最終的に、目的関数を最適化する。最適化処理部２６により実行される最適化手法（学習手法）は、ＣＤ法のように、更新対象の変数であるパラメータベクトルの次元毎の更新を行える手法であれば、特に制限されない。
【００６７】
最適化処理部２６は、訓練データキュー２３に格納されるサマリ情報に基づいて、対象部分行列における対象変数次元の全要素の値を用いるか、及び、対象変数次元の代表値を用いるかのいずれか一方を決定するようにしてもよい。
【００６８】
〔動作例〕
次に、第３実施形態におけるデータ管理方法及び最適化方法について図１３、図１４及び図１５を用いて説明する。図１３及び図１４は、第３実施形態におけるデータ管理装置１０の動作例を示すフローチャートである。図１５は、第３実施形態におけるデータ分析装置２０の動作例を示すフローチャートである。以下の説明では、データ管理装置１０又はデータ分析装置２０が各工程の実行主体となるが、データ管理装置１０及びデータ分析装置２０に含まれる上述の各処理部が実行主体となってもよい。
【００６９】
データ管理装置１０は、最適化システム５０で訓練データ行列が取得されると、図１３に示される動作を行う。データ管理装置１０は、データ格納装置３０の訓練データ格納部３１に格納される訓練データ行列に基づいて、パラメータベクトルの初期値を算出する（Ｓ１３１）。データ管理装置１０は、算出された初期値をデータ分析装置２０に送る。
【００７０】
続いて、データ管理装置１０は、訓練データ行列の区分情報を生成する（Ｓ１３２）。具体的には、データ管理装置１０は、訓練データ行列の少なくとも１つの区分けラインを決定し、かつ、この区分けラインに基づいて、各部分行列（ブロック）の訓練データ行列内の位置をそれぞれ示す区分情報を生成する。
【００７１】
更に、データ管理装置１０は、（Ｓ１３２）で生成された区分情報で特定される複数のブロックの各々から同値変数次元をそれぞれ検出し、各部分行列に含まれる変数次元毎に同値変数次元か否かを示すサマリ情報を生成する（Ｓ１３３）。
【００７２】
データ管理装置１０は、（Ｓ１３２）で生成された区分情報及び（Ｓ１３３）で生成されたサマリ情報を含むブロックサマリテーブルを生成し、このブロックサマリテーブルをデータ格納装置３０の関連情報格納部３２に格納する（Ｓ１３４）。
【００７３】
データ管理装置１０は、上述のブロックサマリテーブルの生成後、データ分析装置２０による最適化処理の開始に伴って、図１４に示される動作を行う。
まず、データ管理装置１０は、データ格納装置３０の関連情報格納部３２からブロックサマリテーブルのデータを取得する（Ｓ１４１）。この工程（Ｓ１４１）は、図７に示される（Ｓ７１）及び（Ｓ７２）に相当する。データ管理装置１０は、取得されたブロックサマリテーブルで示される少なくとも区分情報をデータ分析装置２０の訓練データキュー２３に格納する。
【００７４】
データ管理装置１０は、パラメータベクトルの更新対象次元の情報を取得する（Ｓ１４２）。データ管理装置１０は、データ分析装置２０から更新対象次元の順序情報を取得し、その順序情報から、当該更新対象次元の情報を取得するようにしてもよい。
【００７５】
データ管理装置１０は、（Ｓ１４１）で取得されたブロックサマリテーブルのデータが示す区分情報に基づいて、複数のブロックの中から、パラメータベクトルの更新対象次元に対応する対象変数次元を含む対象部分行列（対象ブロック）を選択する（Ｓ１４３）。区分情報に応じて、（Ｓ１４３）では、複数の対象ブロックが選択される場合と、１つの対象ブロックが選択される場合とがあり得る。
【００７６】
データ管理装置１０は、データ分析装置２０の訓練データキュー２３に空きが有るか否かを判定する（Ｓ１４４）。データ管理装置１０は、訓練データキュー２３に空きがない場合（Ｓ１４４；ＮＯ）、所定時間待って（Ｓ１４５）、再度、（Ｓ１４４）の判定を行う。一方、訓練データキュー２３に空きが有る場合（Ｓ１４４；ＹＥＳ）、データ管理装置１０は、未処理の対象ブロックの１つに関し、（Ｓ１４１）で取得されたデータが示すサマリ情報を用いて、対象変数次元が同値変数次元か否かを判定する（Ｓ１４６）。
【００７７】
データ管理装置１０は、対象変数次元が同値変数次元である場合（Ｓ１４７；ＹＥＳ）、対象ブロックの対象変数次元の全要素の値の代わりにその対象変数次元の代表値を特定する（Ｓ１４８）。一方、データ管理装置１０は、対象変数次元が同値変数次元でない場合（Ｓ１４７；ＮＯ）、対象部分行列の対象変数次元の全要素の値を特定する（Ｓ１４９）。
【００７８】
データ管理装置１０は、特定された訓練データを、対象ブロックの識別情報と関連付けた状態で、データ分析装置２０に送信する。これにより、データ分析装置２０は、訓練データを対象ブロックの識別情報と関連付けて訓練データキュー２３に格納する（Ｓ１５０）。
【００７９】
データ管理装置１０は、未処理の対象ブロックが残っている場合（Ｓ１５１；ＹＥＳ）、新たな未処理の対象ブロックに対して、（Ｓ１４４）以降を実行する。データ管理装置１０は、未処理の対象ブロックが残っていない場合（Ｓ１５１；ＮＯ）、パラメータベクトルの次の更新対象次元が有るか否かを判定する（Ｓ１５２）。データ管理装置１０は、次の更新対象次元が有る場合（Ｓ１５２；ＹＥＳ）、当該次の更新対象次元の情報を取得し（Ｓ１４２）、この情報に基づいて、（Ｓ１４３）以降を実行する。データ管理装置１０は、次の更新対象次元が無い場合（Ｓ１５２；ＮＯ）、処理を終える。
【００８０】
データ分析装置２０は、図１５に示されるような動作で、最適化処理を行う。
データ分析装置２０は、パラメータベクトルの更新対象次元を決定する（Ｓ１６１）。データ分析装置２０は、更新対象次元の全ての実行順を決め、その実行順に応じて、１つの更新対象次元を決定する。データ分析装置２０は、その順序情報をデータ管理装置１０に通知する。また、データ分析装置２０は、１つの更新対象次元を決める度に、決定された更新対象次元をデータ管理装置１０に通知するようにしてもよい。この通知に伴う、図１４に示されるデータ管理装置１０の動作により、データ分析装置２０の訓練データキュー２３に訓練データが格納される。
【００８１】
データ分析装置２０は、訓練データキュー２３に格納される区分情報に基づいて、パラメータベクトルの更新対象次元に対応する、訓練データ行列の対象変数次元を含む対象部分行列（対象ブロック）を特定する（Ｓ１６２）。
【００８２】
データ分析装置２０は、未処理の１つの対象ブロックを選択し、この選択された対象ブロックに関連付けられて訓練データキュー２３に格納される訓練データが代表値であるか否かを判定する（Ｓ１６３）。この判定は、例えば、訓練データに関連付けられたブロックの識別情報と、訓練データキュー２３に格納される区分情報とに基づいて行われる。具体的には、区分情報により、訓練データに関連付けられたブロックが複数の要素を持つことが示されているにもかかわらず、そのブロックに１つの値のみが関連付けられている場合には、その訓練データは、代表値であると判定することができる。また、訓練データキュー２３に、ブロックサマリテーブルが格納される場合には、ブロックサマリテーブルに基づいて、代表値か否かが判定可能である。
【００８３】
データ分析装置２０は、訓練データが代表値である場合（Ｓ１６３；ＹＥＳ）、その代表値を用いて更新差分を更新する（Ｓ１６４）。この更新差分の計算において、データ分析装置２０は、当該区分情報から取得される、その代表値が集約する要素値の数も合せて用いる。一方、データ分析装置２０は、訓練データが代表値でない場合（Ｓ１６３；ＮＯ）、その対象ブロックに関連付けられて訓練データキュー２３に格納される複数要素の値を用いて更新差分を更新する（Ｓ１６５）。データ分析装置２０は、未処理の対象ブロックがなくなるまで、（Ｓ１６３）から（Ｓ１６６）を繰り返す（Ｓ１６６；ＹＥＳ）。
【００８４】
データ分析装置２０は、未処理の対象ブロックがなくなると（Ｓ１６６；ＮＯ）、それまでに算出された更新差分を加算することにより、パラメータベクトルの更新対象次元の値を更新する（Ｓ１６７）。
【００８５】
データ分析装置２０は、更新差分が十分に小さい場合（Ｓ１６８；ＹＥＳ）、処理を終了する。更新差分が十分に小さいか否かは、例えば、更新差分が所定閾値より小さいか否かにより判定される。データ分析装置２０は、更新差分が十分に小さくない場合（Ｓ１６８；ＮＯ）、次の実行順の更新対象次元を決定し（Ｓ１６１）、この決定された更新対象次元に対して、（Ｓ１６２）以降を実行する。このように、更新差分が十分に小さいと判定されるまで、更新対象次元が切り替えられながら、図１５に示される最適化処理が繰り返される。
【００８６】
〔第３実施形態における作用及び効果〕
上述のように、第３実施形態では、区分情報及びサマリ情報がデータ管理装置１０により生成され、訓練データキュー２３の空き状況に応じて、第２実施形態と同様に特定された訓練データがデータ管理装置１０からデータ分析装置２０に送られる。データ分析装置２０の訓練データキュー２３には、対応するブロックの識別情報と関連付けられた訓練データ及び区分情報が格納される。データ分析装置２０では、訓練データキュー２３に格納される区分情報に基づいて、パラメータベクトルの更新対象次元に対応する対象ブロックが選択され、その対象ブロックに関連付けられた訓練データが特定される。そして、その訓練データが代表値であれば、複数要素の値に代えてその代表値を用いて、更新差分が算出され、その訓練データが代表値でなければ、複数要素の値を用いて、更新差分が算出される。
【００８７】
従って、第３実施形態によれば、最適化処理を行う装置（データ分析装置２０）と、訓練データ行列を操作する装置（データ管理装置１０）とが異なる装置で実現される形態であっても、上述の第２実施形態と同様の作用効果を得ることができる。更に、第３実施形態において、訓練データキュー２３が主記憶やキャッシュメモリ上に実現され、かつ、訓練データキュー２３のサイズに応じて、訓練データ行列が区分けされれば、低速なＩＯ処理の発生頻度を抑えることができる。
【００８８】
［変形例］
上述の第１実施形態及び第２実施形態では、最適化処理を行う処理部については言及されていなかったが、データ管理装置１０が、データ特定部１２により特定された訓練データを用いて、目的関数の最適化を行うデータ分析装置として動作してもよい。この場合、データ管理装置１０は、訓練データ行列又は対象部分行列における、対象変数次元の全要素の値を取得するか、及び、対象変数次元の代表値を取得するかのいずれか一方を決定するデータ決定部と、データ決定部の決定に応じて、訓練データ行列又は対象部分行列における対象変数次元の全要素の値の代わりに対象変数次元の代表値を用いて、パラメータベクトルの更新対象次元の更新差分を算出する最適化処理部とを更に有してもよい。
【００８９】
また、第３実施形態では、データ管理装置１０、データ分析装置２０及びデータ格納装置３０の３台の装置により最適化システムが実現されたが、全ての処理部を含む１台の装置で最適化システムが実現されてもよいし、２台の装置で最適化システムが実現されてもよい。また、第３実施形態では、１台のデータ分析装置２０のみが例示されたが、最適化システム５０は、最適化処理を分担する複数のデータ分析装置２０を有してもよい。この場合、データ分析装置２０毎に異なる更新対象次元が処理対象として割り当てられ、データ管理装置１０は、更新対象次元毎に訓練データの送信先となるデータ分析装置２０を切り替えるようにすればよい。このようにすれば、複数の更新対象次元の値更新を並列に実行することができる。
【００９０】
上述の第２実施形態及び第３実施形態では、代表値が集約する要素値の数が増える程、ＩＯ処理の発生頻度及び最適化計算量をより低減することができ、ひいては、最適化処理をより高速化することができる。従って、データ管理装置１０の区分取得部１３が、区分けラインの決定前に、代表値が集約する要素値の数が最大化するように、訓練データ行列内の訓練データベクトルの並びを変更するようにしてもよい。
【００９１】
図１６は、図２に示される訓練データ行列のソート例を示す図である。図１６の例では、元の訓練データ行列の１行目から８行目に並ぶ訓練データベクトルが、４行目、２行目、７行目、５行目、３行目、６行目、１行目、８行目の順に並び替えられている。
図１７は、図１６に示される訓練データ行列に基づいて生成されたブロックサマリテーブルの例を示す図である。図１７の例によれば、ソート後の訓練データ行列から生成されたブロックサマリテーブルのほうが、元の訓練データ行列から生成されたものよりも、同値変数次元の数が２個から６個に増加していることが分かる。
【００９２】
訓練データ行列内の訓練データベクトルの並び替えの手法には様々な手法があり得る。例えば、区分取得部１３は、訓練データ行列内の訓練データベクトル毎に、所定指標に基づくスコアを付与し、このスコアを用いて、訓練データ行列内の訓練データベクトルの並びを変更することもできる。所定指標には、例えば、訓練データベクトル間の類似度などが利用可能である。この例によれば、区分取得部１３は、類似度が高い訓練データベクトルが同じブロックに属するように、区分けラインを決定するようにすればよい。
【００９３】
このようなブロックへの区分け前の、訓練データ行列内の訓練データベクトルの並び替えによれば、ＩＯ処理の発生頻度及び最適化計算量を一層低減することができ、最適化処理を一層高速化することができる。
【００９４】
なお、上述の説明で用いた複数のフローチャートでは、複数の工程（処理）が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。
【００９５】
以下に実施例を挙げ、上述の各実施形態及び各変形例を更に詳細に説明する。本発明は以下の各実施例から限定を受けない。
【実施例１】
【００９６】
実施例１では、上述の各実施形態及び各変形例の作用及び効果について検証する。即ち、複数要素の値に代えて１つの代表値を用いて更新差分を算出することができる理由、及び、１つの代表値を用いることで最適化処理を高速化できる理由を具体的な例を挙げて説明する。以下には、ＣＤ法を用いたＳＶＭが例示される。
【００９７】
【数１】
2015005086.tif 000003
【００９８】
上記（式１）におけるｆ（ｗ）は、各特徴ベクトルｘｉが属する分類クラスｙｉの誤判別のペナルティ量を決める目的関数である。この例では、ＣＤ法を用いて、目的関数ｆ（ｗ）を最大化するパラメータベクトルｗが算出される。ＣＤ法では、パラメータベクトルの次元ｊ毎に、更新差分が、上記（式２）で示されるステップ方向ｄと、ステップ幅αとの積により算出される。即ち、この例では、最適化処理の繰り返し計算において、パラメータベクトルの次元ｊ毎に、ステップ方向ｄが算出され、このｄを用いて次元ｊの更新差分が算出される。
【００９９】
（式２）に示されるように、ステップ方向ｄは、目的関数ｆ（ｗ）をｘについて１回偏微分して得られるｆ'ｊ（ｗ）と、目的関数ｆ（ｗ）をｘについて２回偏微分して得られるｆ''ｊ（ｗ）とを用いて算出される。ここで、上記（式３）に示されるように、ｆ'ｊ（ｗ）は、訓練データ行列に含まれるＮ個の特徴ベクトルｘｉ（１≦ｉ≦Ｎ）の更新対象次元ｊの各値（ｘｉｊ）と、パラメータベクトルｗを含む関数ｇ（ｗ）との積の和により算出される。即ち、最適化処理の更新差分の計算（αｄ）は、訓練データｘｉｊと、関数ｇ（ｗ）との積を、訓練データベクトルの数Ｎ回繰り返すことを含む。この繰り返し計算は、上述した代表値を用いれば、代表値により代替される要素値の数（特徴ベクトルの数）に対応する回数分、省くことができる。例えば、Ｉ（ｗ）を満たす変数ｉが１から５の集合であり、代表値が５個の要素値（ｘｉｊ）を集約している場合、５回の繰り返し計算（加算）を、５と代表値との１回の積計算で代替することができる。このように更新差分計算における繰り返し計算を省くことができれば、最適化処理を高速することができる。
【実施例２】
【０１００】
実施例２では、図６に示される訓練データ行列の区分けの例、及び、図１０に示されるブロックサマリテーブルのデータ例に基づいて、上述の第３実施形態におけるデータ分析装置２０の最適化処理についてより具体的に説明する。以下の説明は、図１５に示されるフローチャートに沿って行われる。
【０１０１】
データ分析装置２０は、パラメータベクトルの更新対象次元の実行順を決定する。この実行順は、イテレーション毎に切り換えられてもよいし、全イテレーションで同じであってもよい。ここでは、実行順が｛７，４，１，６，２，３，５，８｝と決められると仮定する。データ分析装置２０は、この更新対象次元の実行順情報をデータ管理装置１０に送る。データ分析装置２０は、この実行順に沿って、パラメータベクトルの更新対象次元を決定する（Ｓ１６１）。まずは、更新対象次元が７に決定される。以降、変数次元成分を列と表記し、値パターン成分を行と表記する。
【０１０２】
データ分析装置２０は、訓練データキュー２３に格納される区分情報に基づいて、７列目を含むブロックＰ３及びＰ４を対象ブロックとして特定する（Ｓ１６２）。データ分析装置２０は、未処理の１つの対象ブロックＰ３を選択し、この選択された対象ブロックＰ３に関連付けられて訓練データキュー２３に格納される訓練データが代表値であるか否かを判定する（Ｓ１６３）。ここでは、対象ブロックＰ３に関連付けられた訓練データは、（０．００，０．８８，０．００，０．２６）であり、代表値ではない。データ分析装置２０は、対象ブロックＰ３に関連付けられた訓練データが代表値でないため（Ｓ１６３；ＮＯ）、その列の４つの値について、上述のような繰り返し計算を行い、更新差分を更新する（Ｓ１６５）。
【０１０３】
データ分析装置２０は、未処理の対象ブロックＰ４についても同様に、対象ブロックＰ４に関連付けられた訓練データが代表値ではないため（Ｓ１６３；ＮＯ）、その列の４つの値（０．９１，０．００，０．５４，０．００）について、上述のような繰り返し計算を行い、更新差分を更新する（Ｓ１６５）。
【０１０４】
データ分析装置２０は、７列目に関する未処理の対象ブロックがなくなったため（Ｓ１６６；ＮＯ）、それまでに算出された更新差分を加算することにより、パラメータベクトルの更新対象次元７の値を更新する（Ｓ１６７；ｗ７＝ｗ７＋αｄ）。ここで、データ分析装置２０は、算出された更新差分の値が十分に小さくない場合（Ｓ１６８；ＮＯ）、次の更新対象次元４を決定する（Ｓ１６１）。
【０１０５】
更新対象次元４については、ブロックＰ１及びＰ２が対象ブロックとして特定される（Ｓ１６２）。ここで、対象ブロックＰ１の４列目は、同値変数次元であり、対象ブロックＰ１に関連付けられ訓練データキュー２３に格納される訓練データは、代表値（０．００）である。そこで、データ分析装置２０は、代表値（０．００）を用いて、更新差分を更新する（Ｓ１６３；ＹＥＳ、Ｓ１６４）。一方、対象ブロックＰ２に関連付けられる訓練データは、代表値ではないため、データ分析装置２０は、対象ブロックＰ２の４列目の４つの値（０．１６，０．０４，０．３６，０．４９）について、上述のような繰り返し計算を行い、更新差分を更新する（Ｓ１６５）。
【０１０６】
データ分析装置２０は、４列目に関する未処理の対象ブロックがなくなったため（Ｓ１６６；ＮＯ）、それまでに算出された更新差分を加算することにより、パラメータベクトルの更新対象次元４の値を更新する（Ｓ１６７；ｗ４＝ｗ４＋αｄ）。データ分析装置２０は、更新差分が十分小さくなるまで（Ｓ１６８；ＹＥＳ）、このような処理を繰り返す。
【符号の説明】
【０１０７】
１  ＣＰＵ
２  メモリ
１０  データ管理装置
１１  サマリ取得部
１２  データ特定部
１３  区分取得部
１５  データ割当部
１６  初期値計算部
２０  データ分析装置
２１  初期値格納部
２２  パラメータ格納部
２３  訓練データキュー
２５  キュー管理部
２６  最適化処理部
３０  データ格納装置
３１  訓練データ格納部
３２  関連情報格納部
５０  最適化システム
【図１】
2015005086.tif 000004
【図２】
2015005086.tif 000005
【図３】
2015005086.tif 000006
【図４】
2015005086.tif 000007
【図５】
2015005086.tif 000008
【図６】
2015005086.tif 000009
【図７】
2015005086.tif 000010
【図８】
2015005086.tif 000011
【図９】
2015005086.tif 000012
【図１０】
2015005086.tif 000013
【図１１】
2015005086.tif 000014
【図１２】
2015005086.tif 000015
【図１３】
2015005086.tif 000016
【図１４】
2015005086.tif 000017
【図１５】
2015005086.tif 000018
【図１６】
2015005086.tif 000019
【図１７】
2015005086.tif 000020
【図１８】
2015005086.tif 000021