(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024057907
(43)【公開日】2024-04-25
(54)【発明の名称】データ処理装置、畳み込み処理装置、データ処理方法、および、プログラム
(51)【国際特許分類】
G06N 3/10 20060101AFI20240418BHJP
G06N 3/06 20060101ALI20240418BHJP
【FI】
G06N3/10
G06N3/06
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022164890
(22)【出願日】2022-10-13
(71)【出願人】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(72)【発明者】
【氏名】松本 真人
(57)【要約】 (修正有)
【課題】どのような分布のデータに対しても、ベクトル分解処理、量子化処理、畳み込み処理等を伴うデータ処理を高精度に行うことができるデータ処理装置及び処理方法を提供する。
【解決手段】データ処理装置100は、ベクトル分解処理において、複数の局所解を取得し、取得した局所解毎に、量子化処理前に実行される複数のデータ調整処理を選択し、畳み込み処理の精度を取得し、最も精度の高い、ベクトル分解処理の局所解、量子化処理前に実行するデータ調整処理を特定する。
【効果】最適化処理により特定した、ベクトル分解処理の局所解、量子化処理前に実行するデータ調整処理により予測処理を実行することで、どのようなデータ分布の特徴量入力データに対しても、ベクトル分解処理により取得した最適な基底行列および実数係数ベクトルを用いて、量子化処理、畳み込み処理等を伴うデータ処理を高精度に実行できる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の要素を含む行列データに対して、重み係数行列を用いて畳み込み処理を実行するためのデータ処理装置であって、
前記重み係数行列を、基底値を要素とする基底行列と、実数を要素とする実数係数ベクトルとに分解するベクトル分解処理を行うベクトル分解処理部と、
前記行列データに対して、複数種類のデータ調整処理を行うことができ、前記複数種類のデータ調整処理のいずれか1つを選択し、前記行列データに対して、選択したデータ調整処理を実行することで、データ調整処理後データを取得し、取得した前記データ調整処理後データに対して量子化処理を行うことで、量子化処理後データを取得する量子化処理部と、
前記ベクトル分解処理部による前記ベクトル分解により取得された前記基底行列と、前記実数係数ベクトルとを用いて、前記量子化処理後データに対して畳み込み処理を実行することで、当該畳み込み処理後のデータを、ベクトル分解畳み込み処理後データとして、取得する畳み込み処理部と、
前記行列データに対して、前記重み係数行列を用いて、畳み込み処理を行ったデータである正解行列データと、前記ベクトル分解畳み込み処理後データとに基づく評価結果を取得する評価部と、
を備えるデータ処理装置。
【請求項2】
前記ベクトル分解処理部は、
第1の乱数を用いて前記基底行列を初期化し、および、第2の乱数を用いて前記実数係数ベクトルを初期化し、初期化した前記基底行列、および、初期化した前記実数係数ベクトルとの積により取得される行列が、前記重み係数行列に近づくように、前記基底行列および/または前記実数係数ベクトルを更新する処理を繰り返し、所定の誤差範囲内に収まったときの前記基底行列および前記実数係数ベクトルを、局所解基底行列および局所解実数係数ベクトルとして取得し、
前記畳み込み処理部は、
前記局所解基底行列および前記局所解実数係数ベクトルを用いて、前記畳み込み処理を実行する、
請求項1に記載のデータ処理装置。
【請求項3】
前記ベクトル分解処理部は、
初期化時の設定を変更させることで、L個(L:2以上の自然数)の局所解基底行列および局所解実数係数ベクトルを取得し、
前記量子化処理部は、
M種類(M:2以上の自然数)の前記データ調整処理を行うことができ、
M種類の前記データ調整処理を実行することでM個の量子化処理後データを取得し、
前記畳み込み処理部は、
前記量子化処理部が取得した前記M個の量子化処理後データに対して、前記L個の前記局所解基底行列および前記局所解実数係数ベクトルのそれぞれを用いた畳み込み処理を行い、
前記評価部は、
前記M個の量子化処理後データに対して、前記L個の前記局所解基底行列および前記局所解実数係数ベクトルのそれぞれを用いた畳み込み処理を行うことで取得されたデータのそれぞれと、前記正解行列データと、の比較結果を前記評価結果として取得し、当該比較結果が最良となる、前記局所解基底行列および前記局所解実数係数ベクトルと、前記データ調整処理の種類との組み合わせを特定し、特定した組み合わせのデータを、ベクトル分解処理およびデータ調整処理の最適解データとして取得する、
請求項2に記載のデータ処理装置。
【請求項4】
前記複数種類のデータ調整処理は、
(1)入力値に対して、行列データの要素の値のデータ分布における最大値と最小値を用いた正規化を行うことで出力値を取得する処理、
(2)入力値に対して、行列データの要素の値のデータ分布における平均値と標準偏差を用いた標準化を行うことで出力値を取得する処理、および、
(3)入力値に対して、行列データの要素の値のデータ分布における第1四分位数と第3四分位に基づくデータ範囲調整処理を行うことで出力値を取得する処理、
の少なくても1つを含む、
請求項1から3のいずれかに記載のデータ処理装置。
【請求項5】
前記ベクトル分解処理部は、
初期化時の設定を変更させることで、L個(L:2以上の自然数)の局所解基底行列および局所解実数係数ベクトルを、逐次、取得するものであり、第L’番目(L’:自然数、L’<L)の前記ベクトル分解処理により取得された局所解基底行列および局所解実数係数ベクトルによる積と、前記重み係数行列との差のノルムを取得し、取得した当該ノルムが所定の閾値よりも小さい場合、第L’番目より後の前記ベクトル分解処理を実行せず、
前記評価部は、
前記ベクトル分解処理部が第L’番目より後の前記ベクトル分解処理を実行しない場合、前記M個の量子化処理後データに対して、第L’番目までの前記ベクトル分解処理により取得されたL’個の前記局所解基底行列および前記局所解実数係数ベクトルのそれぞれを用いた畳み込み処理を行うことで取得されたデータのそれぞれと、前記正解行列データと、の比較結果を前記評価結果として取得し、当該比較結果が最良となる、前記局所解基底行列および前記局所解実数係数ベクトルと、前記データ調整処理の種類との組み合わせを特定し、特定した組み合わせのデータを、ベクトル分解処理およびデータ調整処理の最適解データとして取得する、
請求項3に記載のデータ処理装置。
【請求項6】
前記M種類の前記データ調整処理のそれぞれについて、N個(N:自然数)のデータを入力データとして実行し、前記M種類の前記データ調整処理のうちj番目(j:自然数、1≦j≦M)の前記データ調整処理を実行するときのi番目(i:自然数、1≦i≦N)の入力データをX
0
(i)(j)とし、正解データをX
1
(i)とし、
前記L個の前記局所解基底行列および前記局所解実数係数ベクトルの積により取得されるデータであって、q番目(q:自然数、1≦q≦L)のデータをW
0’(q)とすると、
前記評価部は、
により、j
opt、q
optを特定し、q
opt番目の前記局所解基底行列および前記局所解実数係数ベクトルと、j
opt番目の前記データ調整処理との組み合わせのデータを、ベクトル分解処理およびデータ調整処理の前記最適解データとして取得する、
請求項3に記載のデータ処理装置。
【請求項7】
複数の要素を含む行列データに対して、請求項3に記載のデータ処理装置により取得された前記最適解データで特定されるデータ調整処理を行った後、量子化処理を行うことで量子化処理後データを取得する量子化処理部と、
前記量子化処理部により取得された前記量子化処理後データに対して、前記最適解データで特定される前記局所解基底行列および前記局所解実数係数ベクトルを用いて、畳み込み処理を行う畳み込み処理部と、
を備える畳み込み処理装置。
【請求項8】
複数の要素を含む行列データに対して、重み係数行列を用いて畳み込み処理を実行するためのデータ処理方法であって、
前記重み係数行列を、基底値を要素とする基底行列と、実数を要素とする実数係数ベクトルとに分解するベクトル分解処理を行うベクトル分解処理ステップと、
前記行列データに対して、複数種類のデータ調整処理を行うことができ、前記複数種類のデータ調整処理のいずれか1つを選択し、前記行列データに対して、選択したデータ調整処理を実行することで、データ調整処理後データを取得し、取得した前記データ調整処理後データに対して量子化処理を行うことで、量子化処理後データを取得する量子化処理ステップと、
前記ベクトル分解処理ステップによる前記ベクトル分解により取得された前記基底行列と、前記実数係数ベクトルとを用いて、前記量子化処理後データに対して畳み込み処理を実行することで、当該畳み込み処理後のデータを、ベクトル分解畳み込み処理後データとして、取得する畳み込み処理ステップと、
前記行列データに対して、前記重み係数行列を用いて、畳み込み処理を行ったデータである正解行列データと、前記ベクトル分解畳み込み処理後データとに基づく評価結果を取得する評価ステップと、
を備えるデータ処理方法。
【請求項9】
請求項8に記載のデータ処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理技術に関し、特に、ベクトル分解処理、量子化処理、畳み込み処理を伴うデータ処理についての技術に関する。
【背景技術】
【0002】
近年、多種多様なアプリケーションを高精度に実現するニューラルネットワークモデルを用いた技術が注目されている。ニューラルネットワークモデルを用いた技術では、学習用データを用いて、ニューラルネットワークモデルの学習処理を行い、学習済みモデルを取得し、取得した学習済みモデルを用いて予測処理(推測処理)を行う。これにより、ニューラルネットワークモデルを用いた技術では、多種多様なアプリケーションを高精度に実現することが可能となる。
【0003】
このような技術で用いられるニューラルネットワークモデルは、入力層と、複数の隠れ層と、出力層により構成される。ニューラルネットワークモデルでは、隠れ層の数を多くすることで(層を深くすることで)、複雑な事象に対して高精度な予測(推論)を行うことができるモデル(例えば、深層学習用モデル(深層ニューラルネットワークモデル))を取得することができる。
【0004】
一般に、ニューラルネットワークモデルでは、学習時において、教師データとニューラルネットワークモデルの出力データとの誤差が小さくなるようにパラメータ更新処理(ニューラルネットワークモデルを各層のノードの重み係数の更新処理)が実行される。このとき、ニューラルネットワークモデルでは、誤差逆伝播法により、パラメータ更新処理が実行されるが、ニューラルネットワークモデルの層が深いと(隠れ層の数が多いと)、誤差逆伝播に必要な勾配が非常に小さくなり、学習が適切に進まなくなるという問題がある。
【0005】
これに対処するために、例えば、特許文献1に開示されている技術では、隠れ層にバッチ正規化層を設け、誤差逆伝播時に勾配消失が発生しないようにしている。つまり、特許文献1に開示されている技術では、バッチ正規化層を、バッチ正規化層の前段の隠れ層の出力をミニバッチの同一チャネルごとに、平均0、分散1(標準偏差1)となるように正規化(標準化)を行うように構成するので、誤差逆伝播時に勾配消失現象が発生することなく、学習が適切に進む。また、バッチ正規化処理を行う(バッチ正規化層を設ける)ことで、隠れ層で処理されるデータが適度に分散された分布を有するデータとなり、過学習を抑制することもできる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許出願公開第2016/217368号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記従来の技術では、隠れ層の出力値において、外れ値があると、当該出力値を正規化した後の値が平均値0付近の狭い範囲に集中してしまい、隠れ層の出力値の正規化後の値の分布を適度に分散した分布とすることができない。このような偏った分布(隠れ層の出力値の正規化後の値が平均値0付近の狭い範囲に集中する分布)の値に対して、例えば、量子化処理を行うと、量子化処理後の値が所定の値に集中してしまい、ニューラルネットワークモデルにおいて、適切に学習が進まず、その結果、適切な予測処理(推論処理)を行う学習済みモデルを取得することが困難となる。
【0008】
また、近年、隠れ層の重み係数を、係数ベクトルと基底ベクトルとに分解し(ベクトル分解処理を行い)、隠れ層の入力データに対して量子化処理を行った後、ベクトル分解した重み係数と量子化後のデータとに対して畳み込み処理等を行うことが多い。このような処理を行う隠れ層において、外れ値があるデータが入力され、当該データに対して、正規化処理を行い、ベクトル分解処理、量子化処理、畳み込み処理を行うと、量子化後のデータが偏った分布のデータとなり、当該隠れ層を有するニューラルネットワークモデルにおいて、適切に学習が進まず、その結果、適切な予測処理(推論処理)を行う学習済みモデルを取得することが困難となる。
【0009】
そこで、本発明は、上記課題に鑑み、どのような分布のデータに対しても、ベクトル分解処理、量子化処理、畳み込み処理等を伴うデータ処理を高精度に行うことができるデータ処理装置、畳み込み処理装置、データ処理方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するために、第1の発明は、複数の要素を含む行列データに対して、重み係数行列を用いて畳み込み処理を実行するためのデータ処理装置であって、ベクトル分解処理部と、量子化処理部と、畳み込み処理部と、評価部と、を備える。
【0011】
ベクトル分解処理部は、重み係数行列を、基底値を要素とする基底行列と、実数を要素とする実数係数ベクトルとに分解するベクトル分解処理を行う。
【0012】
量子化処理部は、行列データに対して、複数種類のデータ調整処理を行うことができ、複数種類のデータ調整処理のいずれか1つを選択し、行列データに対して、選択したデータ調整処理を実行することで、データ調整処理後データを取得し、取得したデータ調整処理後データに対して量子化処理を行うことで、量子化処理後データを取得する。
【0013】
畳み込み処理部は、ベクトル分解処理部によるベクトル分解により取得された基底行列と、実数係数ベクトルとを用いて、量子化処理後データに対して畳み込み処理を実行することで、当該畳み込み処理後のデータを、ベクトル分解畳み込み処理後データとして、取得する。
【0014】
評価部は、行列データに対して、重み係数行列を用いて、畳み込み処理を行ったデータである正解行列データと、ベクトル分解畳み込み処理後データとに基づく評価結果を取得する。
【0015】
このデータ処理装置では、量子化処理部において、量子化処理前に実行される複数のデータ調整処理を選択し、畳み込み処理を実行することで、当該処理結果データと、重み係数行列を用いて、畳み込み処理を行ったデータである正解行列データとを比較することで、畳み込み処理の精度を取得することができ、最も精度の高い、量子化処理前に実行するデータ調整処理を特定することができる。そして、このデータ処理装置では、上記処理により特定した、量子化処理前に実行するデータ調整処理により、例えば、データ処理(予測処理)を実行することで、どのようなデータ分布の特徴量入力データに対しても、ベクトル分解処理により取得した最適な基底行列および実数係数ベクトルを用いて、量子化処理、畳み込み処理等を伴うデータ処理を高精度に行うことができる。
【0016】
なお、「正解行列データと、ベクトル分解畳み込み処理後データとに基づく評価結果」とは、例えば、両データの差に基づく比較結果データや、両データの差から取得される行列(各要素の差を要素とする行列)のノルム(行列ノルム、フロベニウスノルム等)、および、当該ノルムに関連するデータや、二乗和誤差や交差エントロピー誤差である。
【0017】
第2の発明は、第1の発明であって、ベクトル分解処理部は、第1の乱数を用いて基底行列を初期化し、および、第2の乱数を用いて実数係数ベクトルを初期化し、初期化した基底行列、および、初期化した実数係数ベクトルとの積により取得される行列が、重み係数行列に近づくように、基底行列および/または実数係数ベクトルを更新する処理を繰り返し、所定の誤差範囲内に収まったときの基底行列および実数係数ベクトルを、局所解基底行列および局所解実数係数ベクトルとして取得する。
【0018】
そして、畳み込み処理部は、局所解基底行列および局所解実数係数ベクトルを用いて、畳み込み処理を実行する。
【0019】
このデータ処理装置100では、乱数を用いた初期化された基底行列および実数係数ベクトルを用いて、基底行列および実数係数ベクトルとの積により取得される行列が、重み係数行列に近づくように、更新処理を行うことで、局所解基底行列および局所解実数係数ベクトルを取得することができる。そして、このデータ処理装置では、局所解基底行列および局所解実数係数ベクトルを用いて、畳み込み処理を実行することができる。
【0020】
第3の発明は、第1または第2の発明であって、ベクトル分解処理部は、初期化時の設定を変更させることで、L個(L:2以上の自然数)の局所解基底行列および局所解実数係数ベクトルを取得する。
【0021】
量子化処理部は、M種類(M:2以上の自然数)のデータ調整処理を行うことができ、M種類のデータ調整処理を実行することでM個の量子化処理後データを取得する。畳み込み処理部は、量子化処理部が取得したM個の量子化処理後データに対して、L個の局所解基底行列および局所解実数係数ベクトルのそれぞれを用いた畳み込み処理を行う。
【0022】
そして、評価部は、M個の量子化処理後データに対して、L個の局所解基底行列および局所解実数係数ベクトルのそれぞれを用いた畳み込み処理を行うことで取得されたデータのそれぞれと、正解行列データと、の比較結果(例えば、差のデータ、差のノルム、二乗和誤差、交差エントロピー誤差)を取得し、当該比較結果が最良となる(例えば、差(あるいは誤差)が最も小さくなる、あるいは、差のノルムが最小となる)、局所解基底行列および局所解実数係数ベクトルと、データ調整処理の種類との組み合わせを特定し、特定した組み合わせのデータを、ベクトル分解処理およびデータ調整処理の最適解データとして取得する。
【0023】
このデータ処理装置では、ベクトル分解処理において、複数(L個)の局所解を取得し、取得したベクトル分解処理の局所解ごとに、量子化処理前に実行される複数のデータ調整処理を選択し、畳み込み処理の精度を取得し、最も精度の高い、ベクトル分解処理の局所解、量子化処理前に実行するデータ調整処理を特定することができる。そして、このデータ処理装置では、上記処理(最適化処理)により特定した、ベクトル分解処理の局所解、量子化処理前に実行するデータ調整処理により、例えば、データ処理(予測処理)を実行することで、どのようなデータ分布の特徴量入力データに対しても、ベクトル分解処理により取得した最適な基底行列および実数係数ベクトルを用いて、量子化処理、畳み込み処理等を伴うデータ処理を高精度に行うことができる。
【0024】
第4の発明は、第1から第3のいずれかの発明であって、複数のデータ調整処理は、
(1)入力値に対して、行列データの要素の値のデータ分布における最大値と最小値を用いた正規化を行うことで出力値を取得する処理、
(2)入力値に対して、行列データの要素の値のデータ分布における平均値と標準偏差を用いた標準化を行うことで出力値を取得する処理、および、
(3)入力値に対して、行列データの要素の値のデータ分布における第1四分位数と第3四分位に基づくデータ範囲調整処理を行うことで出力値を取得する処理、
の少なくても1つを含む。
【0025】
これにより、このデータ処理装置では、上記(1)~(3)の少なくてもいずれかのデータ調整処理を用いて、量子化処理部が、データ調整処理、および、量子化処理を行うことができる。
【0026】
第5の発明は、第3または第4の発明であって、ベクトル分解処理部は、初期化時の設定を変更させることで、L個(L:2以上の自然数)の局所解基底行列および局所解実数係数ベクトルを、逐次、取得するものであり、第L’番目(L’:自然数、L’<L)のベクトル分解処理により取得された局所解基底行列および局所解実数係数ベクトルによる積と、重み係数行列との差のノルムを取得し、取得した当該ノルムが所定の閾値よりも小さい場合、第L’番目より後のベクトル分解処理を実行しない。
【0027】
そして、評価部は、ベクトル分解処理部が第L’番目より後のベクトル分解処理を実行しない場合、M個の量子化処理後データに対して、第L’番目までのベクトル分解処理により取得されたL’個の局所解基底行列および局所解実数係数ベクトルのそれぞれを用いた畳み込み処理を行うことで取得されたデータのそれぞれと、正解行列データと、の比較結果を評価結果として取得し、当該比較結果が最良となる、局所解基底行列および局所解実数係数ベクトルと、データ調整処理の種類との組み合わせを特定し、特定した組み合わせのデータを、ベクトル分解処理およびデータ調整処理の最適解データとして取得する。
【0028】
これにより、このデータ処理装置では、逐次実行されるベクトル分解処理の途中で、精度の良い(誤差が極小の)データが取得された場合、以降の処理を中断する(実行しないようにする)ことができるので、処理を高速化することができる。
【0029】
第6の発明は、第3から第5のいずれかの発明であって、M種類のデータ調整処理のそれぞれについて、N個(N:自然数)のデータを入力データとして実行し、M種類のデータ調整処理のうちj番目(j:自然数、1≦j≦M)のデータ調整処理を実行するときのi番目(i:自然数、1≦i≦N)の入力データをX
0
(i)(j)とし、正解データをX
1
(i)とし、
L個の局所解基底行列および局所解実数係数ベクトルの積により取得されるデータであって、q番目(q:自然数、1≦q≦L)のデータをW
0’(q)とすると、
評価部は、
【数1】
により、j
opt、q
optを特定し、q
opt番目の局所解基底行列および局所解実数係数ベクトルと、j
opt番目のデータ調整処理との組み合わせのデータを、ベクトル分解処理およびデータ調整処理の最適解データとして取得する。
【0030】
これにより、このデータ処理装置では、M種類のデータ調整処理のそれぞれについて、N個(N:自然数)のデータを入力データとして取得される平均差分データに基づいて、ベクトル分解処理およびデータ調整処理の最適解データを取得することができる。
【0031】
第7の発明は、量子化処理部と、畳み込み処理部と、を備える畳み込み処理装置である。
【0032】
量子化処理部は、複数の要素を含む行列データに対して、第3から第6のいずれかの発明であるデータ処理装置により取得された最適解データで特定されるデータ調整処理を行った後、量子化処理を行うことで量子化処理後データを取得する。
【0033】
畳み込み処理部は、量子化処理部により取得された量子化処理後データに対して、最適解データで特定される局所解基底行列および局所解実数係数ベクトルを用いて、畳み込み処理を行う。
【0034】
これにより、第3から第6のいずれかの発明であるデータ処理装置により取得された最適解データで特定されるデータ調整処理、および、最適解データで特定される局所解基底行列および局所解実数係数ベクトルを用いた畳み込み処理を行う畳み込み処理装置を実現することができる。
【0035】
第8の発明は、複数の要素を含む行列データに対して、重み係数行列を用いて畳み込み処理を実行するためのデータ処理方法であって、ベクトル分解処理ステップと、量子化処理ステップと、畳み込み処理ステップと、評価ステップと、を備えるデータ処理方法である。
【0036】
ベクトル分解処理ステップは、重み係数行列を、基底値を要素とする基底行列と、実数を要素とする実数係数ベクトルとに分解するベクトル分解処理を行う。
【0037】
量子化処理ステップは、行列データに対して、複数種類のデータ調整処理を行うことができ、複数種類のデータ調整処理のいずれか1つを選択し、行列データに対して、選択したデータ調整処理を実行することで、データ調整処理後データを取得し、取得したデータ調整処理後データに対して量子化処理を行うことで、量子化処理後データを取得する。
【0038】
畳み込み処理ステップは、ベクトル分解処理ステップによるベクトル分解により取得された基底行列と、実数係数ベクトルとを用いて、量子化処理後データに対して畳み込み処理を実行することで、当該畳み込み処理後のデータを、ベクトル分解畳み込み処理後データとして、取得する。
【0039】
評価ステップは、行列データに対して、重み係数行列を用いて、畳み込み処理を行ったデータである正解行列データと、ベクトル分解畳み込み処理後データとに基づく評価結果を取得する。
【0040】
これにより、第1の発明と同様の効果を奏するデータ処理方法を実現することができる。
【0041】
第9の発明は、第8の発明であるデータ処理方法をコンピュータに実行させるためのプログラムである。
【0042】
これにより、第1の発明と同様の効果を奏するデータ処理方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【0043】
本発明によれば、本発明は、上記課題に鑑み、どのような分布のデータに対しても、ベクトル分解処理、量子化処理、畳み込み処理等を伴うデータ処理を高精度に行うことができるデータ処理装置、畳み込み処理装置、データ処理方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【0044】
【
図1】第1実施形態に係るデータ処理装置100の概略構成図。
【
図2】データ処理装置100の最適化処理用データについて説明するための図。
【
図3】データ処理装置100の概略構成図であって、最適化処理時の動作を説明するための図。
【
図4】データ処理装置100の最適化処理のシーケンス図(タイミングチャート)。
【
図6】データ処理装置100の概略構成図であって、データ処理時(予測処理時)の動作を説明するための図。
【発明を実施するための形態】
【0045】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0046】
<1.1:データ処理装置の構成>
図1は、第1実施形態に係るデータ処理装置100の概略構成図である。
【0047】
データ処理装置100は、
図1に示すように、ベクトル分解判定処理部1と、データ入力部Dev1と、データ格納部DB1と、量子化判定処理部2と、評価部3とを備える。
【0048】
ベクトル分解判定処理部1は、
図1に示すように、ベクトル分解処理部11と、第1セレクタSEL1と、第1判定処理部12と、第2セレクタSEL2と、を備える。
【0049】
ベクトル分解処理部11は、重み係数行列W0を含むデータDi_Wを入力し、当該データDi_Wに対して、ベクトル分解処理を実行し、当該処理結果を含むデータを、データD11として、第1セレクタSEL1に出力する。なお、重み係数行列W0をベクトル分解した結果をW0
(basis)・vec0
(coe)と表記する。vec0
(coe)は、係数ベクトルであり、W0
(basis)は、基底行列(所定の基底により表現される行列)である。
【0050】
第1セレクタSEL1は、1入力2出力のセレクタであり、ベクトル分解処理部11から出力されるデータD11を入力する。また、第1セレクタSEL1は、データ処理装置100の各機能部を制御する制御部(不図示)から出力される選択信号sel1を入力する。第1セレクタSEL1は、選択信号sel1に従い、入力したデータD11を、第1判定処理部12および第2セレクタSEL2のいずれか一方に出力する。なお、第1セレクタSEL1から第1判定処理部12に出力されるデータをデータD12A(=D11)とし、第1セレクタSEL1から第2セレクタSEL2に出力されるデータをデータD12B(=D11)とする。
【0051】
第1判定処理部12は、重み係数行列W0を含むデータDi_Wと、第1セレクタSEL1から出力されるデータD12Aとを入力する。第1判定処理部12は、データDi_Wと、データD12Aとを用いて、第1判定処理(詳細については後述)を行い、当該処理後に取得されるデータをデータD13として第2セレクタSEL2に出力する。また、第1判定処理部12は、第1判定処理の処理結果を含むデータを、データD1_L_minとして、評価部3に出力する。なお、第1判定処理により取得された重み係数行列をW’0と表記する。
【0052】
第2セレクタSEL2は、2入力1出力のセレクタであり、第1判定処理部12から出力されるデータD13と、第1セレクタSEL1から出力されるデータD12Bとを入力する。また、第2セレクタSEL2は、データ処理装置100の各機能部を制御する制御部(不図示)から出力される選択信号sel1を入力する。第2セレクタSEL2は、選択信号sel1に従い、データD13およびデータ12Bのいずれか一方を選択し、選択したデータをデータDo1として、量子化判定処理部2に出力する。
【0053】
データ入力部Dev1は、データ格納部DB1と接続されており、データ格納部DB1に対して読み出し指令を出力することで、データ格納部DB1に記憶されているデータを読み出す。また、データ入力部Dev1は、外部から入力されるデータDinを入力することができる。データ入力部Dev1は、データ格納部DB1から読み出したデータの統計データを取得し、取得した統計データを含むデータを、データD_statとして、量子化処理部21に出力する。また、データ入力部Dev1は、データ格納部DB1から読み出した特徴量の入力データ(畳み込み処理の入力データ)X0
(i)を含むデータを、データDi_Xiとして、量子化処理部21に出力する。また、データ入力部Dev1は、データ格納部DB1から読み出した特徴量の出力データ(畳み込み処理の出力データ)X1
(i)を含むデータを、データDi_Xoとして、第2判定処理部23に出力する。
【0054】
データ格納部DB1は、データ入力部Dev1と接続されており、データ入力部Dev1からの指令に従い、データ格納部DB1にデータを書き込む、および/または、データ格納部DB1に記憶されているデータを読み出し、データ入力部Dev1に出力する。データ格納部DB1は、例えば、データベースにより実現される。
【0055】
量子化判定処理部2は、
図1に示すように、量子化処理部21と、畳み込み処理部22と、第3セレクタSEL3と、第2判定処理部23と、第4セレクタSEL4とを備える。
【0056】
量子化処理部21は、データ入力部Dev1から出力されるデータDi_XiおよびD_statを入力する。また、量子化処理部21は、データ処理装置100の各機能部を制御する制御部(不図示)から出力される制御信号であって、データ範囲調整処理を実現する方法と指定する制御信号CTL1を入力する。量子化処理部21は、制御信号CTL1で指示された方法により、データD_statに基づき、データDi_Xiに対してデータの範囲を調整する処理(データ範囲調整処理)を行う。そして、量子化処理部21は、データ範囲調整処理後のデータに対して、量子化処理を実行する。そして、量子化処理部21は、量子化処理後のデータを、データD21として、畳み込み処理部22に出力する。なお、入力データDi_Xiに含まれる特徴量の入力データX0(行列X0
(i))に対してデータ範囲調整処理および量子化処理を行って取得したデータ(行列)をQ(X0
(i))と表記する。Q()は、データ範囲調整処理および量子化処理に相当する関数を表す。
【0057】
畳み込み処理部22は、ベクトル分解判定処理部1から出力されるデータDo1と、量子化処理部21から出力されるデータD21とを入力する。畳み込み処理部22は、データDo1とデータD21に対して、畳み込み処理を実行し、畳み込み処理後のデータを、データD22として、第3セレクタSEL3に出力する。なお、W’0とQ(X0
(i))に対する畳み込み処理後のデータをW’*Q(X0
(i))と表記する(「*」は、畳み込み処理(畳み込み演算)を示す)。
【0058】
第3セレクタSEL3は、1入力2出力のセレクタであり、畳み込み処理部22から出力されるデータD22を入力する。また、第3セレクタSEL3は、データ処理装置100の各機能部を制御する制御部(不図示)から出力される選択信号sel1を入力する。第3セレクタSEL3は、選択信号sel1に従い、入力したデータD22を、第2判定処理部23および第4セレクタSEL4のいずれか一方に出力する。なお、第3セレクタSEL3から第2判定処理部23に出力されるデータをデータD23A(=D22)とし、第3セレクタSEL3から第4セレクタSEL4に出力されるデータをデータD23B(=D22)とする。
【0059】
第2判定処理部23は、出力データ行列X1
(i)を含むデータDi_Xoと、第3セレクタSEL3から出力されるデータD23Aと、制御部(不図示)から出力される制御信号CTL1とを入力する。第2判定処理部23は、データDi_Xoと、データD23Aとを用いて、第2判定処理(詳細については後述)を行い、当該処理後に取得されるデータをデータD24として第4セレクタSEL4に出力する。また、第2判定処理部23は、第2判定処理の処理結果を含むデータを、データD2_L_minとして、評価部3に出力する。
【0060】
第4セレクタSEL4は、2入力1出力のセレクタであり、第2判定処理部23から出力されるデータD24と、第3セレクタSEL3から出力されるデータD23Bとを入力する。また、第4セレクタSEL4は、データ処理装置100の各機能部を制御する制御部(不図示)から出力される選択信号sel1を入力する。第4セレクタSEL4は、選択信号sel1に従い、データD24およびデータ23Bのいずれか一方を選択し、選択したデータをデータDoutとして、出力する。
【0061】
評価部3は、
図1に示すように、評価処理部31と、局所解保持部32とを備える。
【0062】
評価処理部31は、第1判定処理部12から出力されるデータD1_L_minと、第2判定処理部23から出力されるデータD2_L_minとを入力する。評価処理部31は、データD1_L_minと、データD2_L_minとを用いて、評価処理(詳細については後述)を行い、処理結果を含むデータ(局所解についてのデータ)をデータD31として、局所解保持部32に出力する。また、評価処理部31は、局所解保持部32に記憶保持されているデータ(局所解についてのデータ)を読み出し、読み出したデータと、データD1_L_minと、データD2_L_minとを用いて、評価処理(詳細については後述)を行い最適解のデータを取得する。そして、評価処理部31は、取得した最適解のデータを含むデータを、データD_best_solとして、出力する。
【0063】
<1.2:データ処理装置の動作>
以上のように構成されたデータ処理装置100の動作について、以下、説明する。
【0064】
図2は、データ処理装置100の最適化処理用データについて説明するための図である。
【0065】
図3は、データ処理装置100の概略構成図であって、最適化処理時の動作を説明するための図である。
【0066】
図4は、データ処理装置100の最適化処理のシーケンス図(タイミングチャート)である。
【0067】
まず、前提として、重み係数データと、特徴量入力データに対して畳み込み処理を行うことで取得した特徴量出力データが、データ格納部DB1に記憶されているものとする。つまり、
図2に示すように、データ処理装置100の量子化判定処理部2の畳み込み処理部22と同じ畳み込み処理を実行する畳み込み処理22Aに、重み係数データW
0と、特徴量入力データX
0
(i)とを入力し、畳み込み処理を実行し、重み係数データW
0と、特徴量入力データX
0
(i)(畳み込み層に入力される特徴マップに相当するデータ)との畳み込み処理結果データ(特徴量出力データ(畳み込み層から出力される特徴マップに相当するデータ))X
1
(i)(=W
0*X
0
(i))(*:畳み込み処理を行う演算子)をデータ格納部DB1に記憶させる。そして、上記処理を繰り返し実行して複数の畳み込み処理結果データ(特徴量出力データ)を取得し(例えば、特徴量入力データX
0
(1)~X
0
(N)(N:自然数)に対して上記処理を行い、所定の数の畳み込み処理結果データ(特徴量出力データ)X
1
(1)~X
1
(N)を取得し)、取得した複数の畳み込み処理結果データ(特徴量出力データ)をデータ格納部DB1に記憶させる。
【0068】
これにより、畳み込み処理を対象とする最適化処理用データを準備することができる。
【0069】
以下では、一例として、上記により取得された最適化処理用データ(データ格納部DB1に記憶されたデータセット<X0
(i),X1
(i)>(i:自然数、1≦i≦N))を用いて、データ処理装置100で実行される最適化処理を説明する。また、最適化処理後において、データ処理装置100で実行されるデータ処理(予測処理)について説明する。また、説明便宜のため、以下では、重み係数データW0、特徴量入力データX0
(i)、および、特徴量出力データX1
(i)は、n×1行列(縦ベクトル)であるものとして、説明する。なお、重み係数データ(重みフィルタ(カーネル))、特徴量入力データ(特徴マップ(畳み込み層の入力))、および、特徴量出力データ(特徴マップ(畳み込み層の出力))は、n1×m1行列(n1、m1:自然数)であってもよく、この場合、重み係数データW0、特徴量入力データX0
(i)、および、特徴量出力データX1
(i)は、上記データ(n1×m1行列)を、n=n1×m1としてn×1行列(縦ベクトル)に変換したデータ(n1×m1個の行列の要素をn列にしたデータ)とすればよい。
【0070】
(1.2.1:最適化処理)
まず、データ処理装置100で実行される最適化処理について説明する。
【0071】
≪第1回目のベクトル分解判定処理(時刻t00~t01)≫
ベクトル分解判定処理部1のベクトル分解処理部11は、重み係数行列W0(n×1行列)を含むデータDi_Wを入力し、当該データDi_Wに対して、ベクトル分解処理を実行する。具体的には、ベクトル分解処理部11は、以下を満たす基底行列W0
(basis)と、実数係数ベクトルvec0
(coe)とを取得する処理を実行する。
Norm(W0-W0
(basis)・vec0
(coe))<ε
W0:重み係数行列W0(n×1行列)
W0
(basis):基底行列(その要素を基底データとする行列(n×k行列))
vec0
(coe):実数係数ベクトル(その要素を実数値とする係数ベクトル(k×1行列))
Norm():ノルムを取得する関数
ε:許容誤差
なお、基底行列W0
(basis)は、例えば、基底データを{-1,1}とすると、W0
(basis)∈{-1,1}n×kである。なお、基底行列の基底(基底データ)は、任意の数を要素とする集合とすることができ、集合の要素数も任意の数とすることができる。
【0072】
まず、ベクトル分解処理部11は、以下の数式に相当する処理を実行し、基底行列Mと実数係数ベクトルcの局所解M
optとc
optを取得する。
【数2】
w:重み係数行列(n×1行列)(w=W
0)
M:基底行列(n×k行列)
c:実数係数ベクトル(k×1行列)
そして、ベクトル分解処理部11は、
W
0
(basis)=M
opt
vec
0
(coe)=c
opt
とする。
【0073】
ベクトル分解処理部11は、上記ベクトル分解処理により取得した処理結果データ(W0
(basis)・vec0
(coe))を含むデータを、データD11として、第1セレクタSEL1に出力する。第1セレクタSEL1は、選択信号sel1に従い、ベクトル分解処理部11からのデータD11をデータD12Aとして第1判定処理部12に出力する。最適化処理時において、制御信号により、選択信号sel1は、その信号値が「0」(端子0を選択する信号値)に設定されているものとする。
【0074】
なお、上記(数式2)に相当する処理を実行して取得されるデータは、最適解ではなく局所解となることがある。これは、上記(数式2)に相当する処理を、例えば、下記のように実行するためである。
(1)実数係数ベクトルcを実数の乱数により初期化し、かつ、基底行列Mを基底値の乱数により初期化する(例えば、基底値を{-1,1}とすると、基底行列の各要素をランダムに{-1,1}から選択した値とする初期化を行う)。
(2)基底行列Mを固定し、最小二乗法により、実数係数ベクトルcを算出する(Mが正則行列である場合、c=(M
T・M)
-1・(M
T・w)により算出する、あるいは、勾配降下法により、実数係数ベクトルcを求める)。
(3)実数係数ベクトルcを固定し、下記数式に相当する処理(例えば、Mについて全探索し、Norm(w-M・c)の最小値を求める処理)を実行する。
【数3】
(4)Norm(w-M・c)<εを満たす(収束する)まで、上記(1)~(3)の処理を繰り返し実行する。
【0075】
ベクトル分解処理部11は、上記ベクトル分解処理により取得した(収束したときに取得した)処理結果データ(W0
(basis)・vec0
(coe))を含むデータD11を第1セレクタSEL1に出力し、第1セレクタSEL1は、当該データD11を、データD12Aとして、第1判定処理部12に出力する。
【0076】
第1判定処理部12は、重み係数行列W0を含むデータDi_Wと、第1セレクタSEL1から出力されるデータD12A(ベクトル分解処理結果データ(W0
(basis)・vec0
(coe)))とを入力する。第1判定処理部12は、データDi_Wと、データD12Aとを用いて、第1判定処理を行う。具体的には、第1判定処理部12は、ベクトル分解処理部11により取得されたベクトル分解処理結果データ(W0
(basis)・vec0
(coe))と、重み係数行列W0との差分のノルムを取得し、取得した差分のノルムを含むデータと、ベクトル分解処理結果データ(W0
(basis)・vec0
(coe))とを含むデータを、データD1_L_minとして、評価部3に出力する。
【0077】
また、第1判定処理部12は、ベクトル分解処理結果データ(W0
(basis)・vec0
(coe))(これをデータW0’とする)を含むデータ(W0
(basis)と、vec0
(coe)とを区別できる状態で含むデータ)を、データD13として、第2セレクタSEL2に出力する。第2セレクタSEL2は、選択信号sel1(端子0を選択する信号値を有する選択信号sel1)に従い、データD13を、データDo1として、量子化処理部21の畳み込み処理部22に出力する。
【0078】
なお、上記処理(1回目のベクトル分解判定処理)が、
図4において、時刻t
00~t
01のopAで示した処理である。
【0079】
≪第1回目の量子化判定処理(時刻t10~t11)≫
データ入力部Dev1は、データ格納部DB1に記憶されているN個の特徴量入力データX0
(1)~X0
(N)を読み出し、当該データの統計処理を行う。具体的には、データ入力部Dev1は、下記(a)~(c)の処理を行い、N個の特徴量入力データX0
(1)~X0
(N)についての統計データを取得する。
(a)N個の特徴量入力データX0
(1)~X0
(N)の要素の値の最大値および最小値を取得する。
(b)N個の特徴量入力データX0
(1)~X0
(N)の要素の値の平均値および標準偏差を取得(算出)する。
(c)N個の特徴量入力データX0
(1)~X0
(N)の要素の値の四分位範囲を特定するためのデータを取得する(例えば、N個の特徴量入力データX0
(1)~X0
(N)の全要素の値を昇順ソートし、昇順ソート後のデータにおいて、先頭から25%の位置の値Q1(第1四分位数)と、先頭から75%の位置の値Q3(第3四分位数)とを取得する)。
【0080】
データ入力部Dev1は、上記により取得した統計データを含むデータを、データD_statとして、量子化処理部21に出力する。
【0081】
また、データ入力部Dev1は、i=1の特徴量入力データX0
(i)および特徴量出力データX1
(i)を、データ格納部DB1から読み出し、(1)読み出したi=1の特徴量入力データX0
(i)を含むデータを、データDi_Xiとして、量子化処理部21に出力するとともに、(2)読み出したi=1の特徴量出力データX1
(i)を含むデータを、データDi_Xoとして、第2判定処理部23に出力する。
【0082】
量子化判定処理部2の量子化処理部21は、データ入力部Dev1から出力されるデータDi_XiおよびD_statを入力する。本実施形態では、データD_statには、特徴量入力データのデータ値(N個の特徴量入力データX0
(1)~X0
(N)の各要素の値)の最大値、最小値、平均値、標準偏差、第1四分位数Q1、および、第3四分位数Q3が含まれるものとする。
【0083】
また、量子化処理部21は、データ処理装置100の各機能部を制御する制御部(不図示)から出力される制御信号であって、データ範囲調整処理を実現する方法と指定する制御信号CTL1を入力する。本実施形態では、データ範囲調整処理は、下記(a)~(c)であり、どの手法を選択するかは、制御信号CTL1により指示されるものとする。
(a)最大値-最小値正規化によるデータ範囲調整方法:
特徴量入力データのデータ値(N個の特徴量入力データX0
(1)~X0
(N)の各要素の値)をxとし、値xの最大値をxmaxとし、値xの最小値をxminとし、データ範囲調整後の値とx’とすると、量子化処理部21は、
x’=(x-xmin)/(xmax-xmin)
に相当する処理を実行することで、データ範囲調整後の値x’を取得する。これにより、データ範囲調整後の値x’の範囲は、[0,1]となる。
(b)標準化によるデータ範囲調整方法:
特徴量入力データのデータ値(N個の特徴量入力データX0
(1)~X0
(N)の各要素の値)の平均値をμとし、標準偏差をσとし、データ範囲調整後の値とx’とすると、量子化処理部21は、
x’=(x-μ)/σ
に相当する処理を実行することで、データ範囲調整後の値x’を取得する。これにより、データ範囲調整後の値x’の平均は「0」となり、標準偏差は「1」となる。
(c)四分位範囲に基づくデータ範囲調整方法:
特徴量入力データのデータ値(N個の特徴量入力データX0
(1)~X0
(N)の各要素の値)の第1四分位数をQ1とし、第3四分位数をQ3とし、データ範囲調整後の値とx’とすると、量子化処理部21は、
xtmp=limit(x,xupper,xbtm)
xupper=Q3+(Q3-Q1)×1.5
xbtm=Q1-(Q3-Q1)×1.5
x’=(xtmp-xbtm)/(xupper-xbtm)
limit(x,xupper,xbtm):上限値xupper、下限値xbtmによりリミット処理を行う関数((1)x>xupperの場合、xupperを出力し、(2)x<xbtmの場合、xbtmを出力し、(3)xbtm≦x≦xupperの場合、xを出力する関数)
に相当する処理を実行することで、データ範囲調整後の値x’を取得する。これにより、データ範囲調整後の値x’の範囲は、[0,1]となる。
【0084】
図5は、データ範囲調整処理を説明するための図である。
図5の上図は、特徴量入力データのデータ値(N個の特徴量入力データX
0
(1)~X
0
(N)の各要素の値)xのデータ分布の一例を示す図である。
【0085】
図5の下左図は、(a)最大値-最小値正規化によるデータ範囲調整後のデータ値のデータ分布を示す図である。
【0086】
図5の下中図は、(b)標準化によるデータ範囲調整後のデータ値のデータ分布を示す図である。
【0087】
図5の下右図は、(c)四分位範囲に基づくデータ範囲調整後のデータ値のデータ分布を示す図である。
【0088】
なお、
図5の下図において、データ値が8ビット(0~255の値)をとるように、データ範囲調整後のデータ値を調整している(所定のゲイン、オフセットにより調整している)。
【0089】
制御部は、制御信号CTL1を、(a)最大値-最小値正規化によるデータ範囲調整方法を指示する信号値とし、量子化処理部21および第2判定処理部23に出力する。
【0090】
量子化処理部21は、制御信号CTL1に従い、(a)最大値-最小値正規化によるデータ範囲調整方法により、データ範囲調整後の値x’を取得する。この処理を、特徴量入力データX0
(i)の各要素の値に対して行い、データ調整後の値に対して、量子化処理を行う。これにより取得したデータをデータQ(X0
(i))とする。
【0091】
そして、量子化処理部21は、上記により取得したデータQ(X0
(i))を含むデータを、データD21として、畳み込み処理部22に出力する。
【0092】
畳み込み処理部22は、ベクトル分解判定処理部1から出力されるデータDo1と、量子化処理部21から出力されるデータD21とを入力する。畳み込み処理部22は、データDo1(W0’)とデータD21(Q(X0
(i)))に対して、畳み込み処理(W0’*Q(X0
(i))に相当する処理)を実行し、畳み込み処理後のデータを、データD22として、第3セレクタSEL3に出力する。
【0093】
第3セレクタSEL3は、制御部からの選択信号sel1に従い、端子「0」を選択し、入力されたデータD22を、データD23Aとして、第2判定処理部23に出力する。
【0094】
第2判定処理部23は、特徴量出力データX1
(i)を含むデータDi_Xoと、第3セレクタSEL3から出力されるデータD23A(最大値-最小値正規化によるデータ範囲調整処理および量子化処理後データW0’*Q(X0
(i)))と、制御部(不図示)から出力される制御信号CTL1とを入力する。第2判定処理部23は、データDi_Xo(特徴量出力データX1
(i))と、データD23A(最大値-最小値正規化によるデータ範囲調整処理および量子化処理後データW0’*Q(X0
(i)))とを用いて、第2判定処理を行う。具体的には、第2判定処理部23は、特徴量出力データX1
(i)と、最大値-最小値正規化によるデータ範囲調整処理および量子化処理後データW0’*Q(X0
(i))との差分(例えば、差分のノルム)を取得する。この差分のデータをdiff(i)(a)とする。
【0095】
そして、上記処理((1)データ入力部Dev1によるデータ読み出し処理、(2)量子化処理部21でのデータ範囲調整処理、量子化処理、(3)畳み込み処理部22による畳み込み処理、(4)第2判定処理部23による第2判定処理)を、i=1からi=Nにおいて行う(データX0
(i)、X1
(i)に対して行う)。
【0096】
そして、第2判定処理部23は、N個のデータ(データX
0
(i)、X
1
(i)(i=1からi=Nまでのデータ))のそれぞれで取得した差分データdiff
(i)(a)(1≦i≦N)の平均値のデータAve_diff(N,a)を取得する。つまり、第2判定処理部23は、
【数4】
に相当する処理を行い、差分平均値データAve_diff(N,a)を取得する。
【0097】
この処理が、
図4のシーケンス図で処理opB(N,a)である。
【0098】
そして、第2判定処理部23は、処理opB(N,a)で取得した差分平均値データAve_diff(N,a)と、当該データを取得したときのデータ範囲調整処理を特定するデータ((a)最大値-最小値正規化によるデータ範囲調整方法であることを示すデータ)とを含むデータを、データD2_L_minとして、評価部3に出力する。
【0099】
さらに、データ入力部Dev1、量子化判定処理部2において、量子化処理部21でのデータ範囲調整処理を(b)標準化によるデータ範囲調整処理、(c)四分位範囲に基づくデータ範囲調整処理として、上記処理(処理opB(N,a))と同様の処理を実行する。なお、データ範囲調整処理の選択は、制御部からの制御信号CTL1に従って行われる。量子化処理部21でのデータ範囲調整処理を(b)標準化によるデータ範囲調整処理として、差分平均値データAve_diff(N,b)(N個のdiff(i)(b)(1≦i≦N)の平均値)を取得する処理を、処理opB(N,b)とする。量子化処理部21でのデータ範囲調整処理を(c)四分位範囲に基づくデータ範囲調整処理として、差分平均値データAve_diff(N,c)(N個のdiff(i)(c)(1≦i≦N)の平均値)を取得する処理を、処理opB(N,c)とする。
【0100】
第2判定処理部23は、処理opB(N,b)を実行した後、処理opB(N,b)で取得された差分平均値データAve_diff(N,b)と、当該データが取得されたときのデータ範囲調整処理を特定するデータ((b)標準化によるデータ範囲調整処理方法であることを示すデータ)とを含むデータを、データD2_L_minとして、評価部3に出力する。
【0101】
また、第2判定処理部23は、処理opB(N,c)を実行した後、処理opB(N,c)で取得された差分平均値データAve_diff(N,c)と、当該データが取得されたときのデータ範囲調整処理を特定するデータ((c)四分位範囲に基づくデータ範囲調整処理方法であることを示すデータ)とを含むデータを、データD2_L_minとして、評価部3に出力する。
【0102】
≪第1回目の評価処理(時刻t11~t12)≫
評価部3の評価処理部31は、第1判定処理部12から入力したデータD1_L_minと、第2判定処理部23から入力したデータD2_L_minとを用いて、評価処理を行う。
【0103】
具体的には、評価処理部31は、
(1)データD1_L_minから、ベクトル分解処理結果データである、基底行列W0
(basis)と実数係数ベクトルvec0
(coe)とを取得し、
(2a)処理opB(N,a)の後に出力されたデータD2_L_minから、処理opB(N,a)で取得された差分平均値データAve_diff(N,a)と、当該データが取得されたときのデータ範囲調整処理を特定するデータ((a)最大値-最小値正規化によるデータ範囲調整方法であることを示すデータ)とを取得し、
(2b)処理opB(N,b)の後に出力されたデータD2_L_minから、処理opB(N,b)で取得された差分平均値データAve_diff(N,b)と、当該データが取得されたときのデータ範囲調整処理を特定するデータ((b)標準化によるデータ範囲調整処理方法であることを示すデータ)とを取得し、
(2c)処理opB(N,c)の後に出力されたデータD2_L_minから、処理opB(N,c)で取得された差分平均値データAve_diff(N,c)と、当該データが取得されたときのデータ範囲調整処理を特定するデータ((c)四分位範囲に基づくデータ範囲調整処理方法であることを示すデータ)とを取得する。
【0104】
そして、評価処理部31は、
minAve=min(Ave_diff(N,a),Ave_diff(N,b),Ave_diff(N,c))
min():要素の最小値を取得する関数
に相当する処理を行い、最小値minAveを取得する。
【0105】
そして、評価処理部31は、(1)データD1_L_minから取得したベクトル分解処理結果データである基底行列W0
(basis)(このデータをW0
(basis)(1)と表記する)および実数係数ベクトルvec0
(coe)(このデータをvec0
(coe)(1)と表記する)と
(2)上記で取得した最小値minAve(このデータをminAve(1)と表記する)と、(3)差分平均値データが最小値となったときのデータ範囲調整処理を特定するデータ(このデータをDmthd
(1)と表記する)と、を含むデータを、第1局所解データD_L_min(1)={W0
(basis)(1),vec0
(coe)(1),minAve(1),Dmthd
(1)}とする。また、評価処理部31は、第1局所解データD_L_min(1)を、データD31として、局所解保持部32に出力し、局所解保持部32は、当該データを記憶保持する。
【0106】
≪第2回目のベクトル分解判定処理(時刻t
10~t
13)≫
時刻t
10~t
13において、データ処理装置100では、第2回目のベクトル分解判定処理が実行される。なお、第2回目のベクトル分解処理は、
図4に示すように、第1回目の量子化判定処理と並行して実行される。これにより、処理を高速化することができる。つまり、ベクトル分解処理と、量子化判定処理とが、並列処理されることから、データ処理装置100で実行される処理(全体処理)の速度を向上させることができる。
【0107】
第2回目のベクトル分解判定処理では、ベクトル分解判定処理部1のベクトル分解処理部11において、第1回目のベクトル分解判定処理で設定された初期値とは異なる初期値によりベクトル分解処理が実行される。つまり、ベクトル分解処理部11で実行されるベクトル分解処理において、実数係数ベクトルcの初期値、および/または、基底行列Mの初期値によっては(数式2)に相当する処理を実行して取得されるデータは、最適解ではなく局所解となることがある。
【0108】
そこで、ベクトル分解処理部11は、(数式2)に相当する処理(ベクトル分解処理)を実行する度に、初期値を変更して(例えば、乱数により変更して)実行する。それ以外の処理については、第2回目のベクトル分解判定処理は、第1回目のベクトル分解判定処理と同様である。
【0109】
第2回目のベクトル分解判定処理では、第1回目のベクトル分解判定処理と同様の処理が実行される。なお、第1判定処理部12から評価処理部31に出力されるデータD1_L_minに含まれるベクトル分解処理結果データ(W0
(basis)・vec0
(coe))の基底行列W0
(basis)をW0
(basis)(2)と表記し、実数係数ベクトルvec0
(coe)をvec0
(coe)(2)と表記する。
【0110】
≪第2回目の量子化判定処理(時刻t20~t21)≫
時刻t20~t21において、データ処理装置100では、第2回目の量子化判定処理が実行される。第2回目の量子化判定処理では、第1回目の量子化判定処理と同様の処理が実行される。なお、第2回目の量子化判定処理では、データ入力部Dev1から量子化処理部21に出力されるデータDi_Xiに含まれるデータがX0
(i)(i=2)であり、データ入力部Dev1から第2判定処理部23に出力されるデータがX1
(i)(i=2)であり、ベクトル分解判定処理部1から畳み込み処理部22に入力されるデータDo1が、第2回目のベクトル分解判定処理により取得されたデータである。
【0111】
≪第2回目の評価処理(時刻t21~t22)≫
時刻t21~t22において、データ処理装置100では、第2回目の評価処理が実行される。第2回目の評価処理では、第1回目の評価処理と同様の処理が実行される。なお、第2回目の評価処理において、評価処理部31が取得する局所解データを、第2局所解データD_L_min(2)={W0
(basis)(2),vec0
(coe)(2),minAve(2),Dmthd
(2)}とする。
【0112】
≪第3~(L-1)回目のベクトル分解判定処理、量子化判定処理、評価処理≫
第3~(L-1)回目のベクトル分解判定処理、量子化判定処理、評価処理では、データ処理装置100において、それぞれ、第2回目のベクトル分解判定処理、量子化判定処理、評価処理と同様の処理が実行される。
【0113】
≪第L回目のベクトル分解判定処理、量子化判定処理≫
第L回目のベクトル分解判定処理、量子化判定処理では、データ処理装置100において、それぞれ、第2回目のベクトル分解判定処理、量子化判定処理と同様の処理が実行される。
【0114】
≪第L回目の評価処理≫
時刻tL1~tL2において、データ処理装置100では、第L回目の評価処理が実行される。第L回目の評価処理では、第1回目の評価処理と同様の処理が実行される。なお、第L回目の評価処理において、評価処理部31が取得する局所解データを、第2局所解データD_L_min(L)={W0
(basis)(L),vec0
(coe)(L),minAve(L),Dmthd
(L)}とする。
【0115】
評価処理部31は、L個の局所解データである第1局所解データD_L_min(1)~第L局所解データD_L_min(L)の中から、minAve(j)(j:自然数、1≦j≦L)が最小値となる局所解データを特定する。なお、評価処理部31は、第1局所解データD_L_min(1)~第L-1局所解データD_L_min(L-1)を、局所解保持部32から読み出す。
【0116】
そして、評価処理部31は、minAve(j)が最小値となる局所解データ(j=j0のとき、minAve(j)が最小値となるものとする)を最適解データD_best_sol={W0
(basis)(j0),vec0
(coe)(j0),minAve(j0),Dmthd
(j0)}として取得する。なお、j=j0のときの局所解データが、minAve(j)が最小値となる局所解データであるものとする。
【0117】
そして、評価処理部31は、取得した最適解データD_best_solを出力する(時刻tL2~tL3の処理)。
【0118】
以上により、データ処理装置100では、N個の特徴量入力データX0
(i)に対して、畳み込み処理を行うときのベクトル分解処理の最適解({W0
(basis)(j0),vec0
(coe)(j0)})、および、量子化処理前のデータ調整処理の最適な方法(Dmthd
(j0)で特定される方法)を特定することができる。
【0119】
(1.2.2:データ処理(予測処理))
次に、データ処理装置100で実行されるデータ処理(予測処理)について説明する。
【0120】
図6は、データ処理装置100の概略構成図であって、データ処理時(予測処理時)の動作を説明するための図である。
【0121】
データ処理装置100において、上記の最適化処理により取得した、畳み込み処理を行うときのベクトル分解処理の最適解({W0
(basis)(j0),vec0
(coe)(j0)})、および、量子化処理前のデータ調整処理の最適な方法(Dmthd
(j0)で特定される方法)をベクトル分解処理部11、および、量子化処理部21において設定する。つまり、畳み込み処理部22に、ベクトル分解処理部11から、最適解である基底行列W0
(basis)(j0)、実数係数ベクトルvec0
(coe)(j0)が畳み込み処理部22に出力されるように設定し、さらに、量子化処理部21において、データ調整処理が最適解、すなわち、Dmthd
(j0)で特定される方法で実行されるように設定する。
【0122】
なお、制御部は、データ処理時(予測処理時)において、選択信号sel1の信号値を「1」とし、当該選択信号を、第1セレクタSEL1、第2セレクタSEL2、第3セレクタSEL3、および、第4セレクタSEL4に出力し、端子1が選択されるようにする。
【0123】
データ入力部Dev1は、入力データDinを入力し、当該データ(あるいは、必要に応じてデータ調整処理を行った後のデータ)を、データDi_Xiとして、量子化処理部21に出力する。なお、データ入力部Dev1は、所定量の入力データDinを入力、保持し、統計データ、すなわち、入力データDinの要素の値の統計データ(最大値、最小値、平均値、標準偏差、第1四分位数、第3四分位数)を取得し、取得した統計データを含むデータを、データD_statとして、量子化処理部21に出力する。
【0124】
量子化処理部21は、データ入力部Dev1から入力した統計データD_statを用いて、データ調整処理の最適解、すなわち、Dmthd
(j0)で特定される方法により、データ調整処理を行う。そして、量子化処理部21は、データ調整後のデータに対して量子化処理を行い、量子化処理後のデータを、データD21として、畳み込み処理部22に出力する。
【0125】
畳み込み処理部22は、ベクトル分解処理部11から出力された、最適解である基底行列W0
(basis)(j0)、実数係数ベクトルvec0
(coe)(j0)を用いて、量子化処理部21から出力されるデータD21に対して、畳み込み処理を実行し、畳み込み処理後のデータを、データD22として、第3セレクタSEL3に出力する。第3セレクタSEL3は、データD22を、データD23Bとして、第4セレクタSEL4に出力し、第4セレクタSEL4は、データD23B(=D22)を、データDoutとして、出力する。
【0126】
これにより、データ処理装置100において、データ処理(予測処理)を実行することができる。なお、上記のデータ処理装置100におけるデータ処理(予測処理)は、例えば、ニューラルネットワークモデルの畳み込み層の畳み込み処理を実行する部分の処理に相当する。したがって、ニューラルネットワークモデルの畳み込み層の畳み込み処理を実行する部分を、上記で説明したデータ処理装置100と同様の機能を実現する機能部(最適化処理により、ベクトル分解の基底行列、実数係数ベクトル、量子化処理のデータ調整処理の最適解が設定された機能部)により実現(実装)するようにすればよい。
【0127】
≪まとめ≫
以上のように、データ処理装置100では、ベクトル分解処理において、複数(L個)の局所解を取得し、取得したベクトル分解処理の局所解ごとに、量子化処理前に実行される複数のデータ調整処理を選択し、畳み込み処理の精度(正解データX1
(i)=W0*X0
(i)との誤差)を取得し、最も精度の高い、ベクトル分解処理の局所解、量子化処理前に実行するデータ調整処理を特定することができる。そして、データ処理装置100では、上記処理(最適化処理)により特定した、ベクトル分解処理の局所解、量子化処理前に実行するデータ調整処理により、データ処理(予測処理)を実行することで、どのようなデータ分布の特徴量入力データに対しても、ベクトル分解処理により取得した最適な基底行列および実数係数ベクトルを用いて、量子化処理、畳み込み処理等を伴うデータ処理を高精度に行うことができる。
【0128】
特に、外れ値があるデータ分布の特徴量入力データについて、例えば、従来技術のように、外れ値を除外して、バッチ正規化処理を行う場合、畳み込み処理の精度が悪化する場合があり(例えば、特徴量入力データが疎なデータ(スパースなデータ)であり、外れ値が重要な意味のあるデータであることがあり、そのような場合に、当該データを外れ値として除外すると畳み込み処理の精度が悪化することがあり)、このような場合に対しても、データ処理装置100では、最適なデータ調整処理を行った後、量子化処理を行うため、畳み込み処理を高精度に実行することができる。
【0129】
また、データ処理装置100をハードウェアで実現する場合、追加すべき回路は、汎用の回路を用いた比較的規模の小さい回路で済むので、大規模な回路構成を採用する必要もない。その結果、回路規模、コストを抑えつつ、高性能な処理を実行するデータ処理装置100をハードウェア(一部、ソフトウェア処理を行う部分を含んでもよい)で実現することができる。
【0130】
[他の実施形態]
上記実施形態では、データ処理装置100において、L回ベクトル分解処理を実行する場合について説明したが、これに限定されることはない。例えば、データ処理装置100において、第L’番目(L’:自然数、L’<L)のベクトル分解処理により取得された局所解基底行列W0
(basis)および局所解実数係数ベクトルvec0
(coe)による積W0
(basis)・vec0
(coe)と、重み係数行列W0との差のノルム(例えば、行列ノルム、フロベニウスノルム)(あるいは、二乗和誤差や交差エントロピー誤差)を取得し、取得した当該ノルム(あるいは、二乗和誤差や交差エントロピー誤差)が所定の閾値よりも小さい場合、第L’番目より後の前記ベクトル分解処理を実行しないようにしてもよい(処理を中断するようにしてもよい)。そして、この場合、データ処理装置100において、評価部3は、第L’番目のベクトル分解処理までに取得されたデータを用いて、最適解のデータを取得するようにすればよい。このように処理することで、ベクトル分解処理により、精度の良い(誤差が極小の)データが取得された場合、以降の処理を中断する(実行しないようにする)ことができるので、処理を高速化することができる。
【0131】
また、上記実施形態では、データ処理装置100において、最適化処理時において、データ入力部Dev1から量子化判定処理部2に出力されるデータ数がNである場合について説明した。このデータ数Nは、最適化処理後の量子化処理部21、畳み込み処理部22の機能を有する畳み込み層を有するニューラルネットワークモデルにおいて、学習時に用いられる訓練データ(学習用データ)の数(1バッチ(1エポック)に相当する数(訓練データの総数))に一致させるようにしてもよい。また、データ数Nを、上記ニューラルネットワークモデルの学習処理を行うときの1つのミニバッチを構成するデータ数と同じ数としてもよい。また、データ数Nを、上記以外の他の数にしてもよい。
【0132】
また、上記実施形態では、量子化処理において、量子化幅については、説明しなかったが、量子化幅は、固定値であってもよく、可変値であってもよい。
【0133】
上記実施形態では、説明便宜のため、カーネルサイズ(重み係数行列(重み係数フィルタ)のサイズ)と、特徴マップのサイズ(特徴量入力データ(行列)のサイズ)とが同じであり、かつ、チャネル数が1である場合を想定して説明したが、これに限定されることはない。
【0134】
カーネルサイズが特徴マップのサイズよりも小さくてもよく、この場合、データ入力部Dev1がカーネルサイズに応じて、特徴マップの所定の範囲(領域)のデータを抽出し、抽出した範囲(領域)のデータについて、データ処理装置100において、上記処理(最適化処理、データ処理(データ予測処理))を同様に行えばよい。また、畳み込み処理におけるストライド量、パディング量(パディングの有無も含む)が所定の値に設定される場合、データ処理装置100において、設定されるストライド量、パディング量に応じて(を考慮して)、上記処理(最適化処理、データ処理(データ予測処理))を同様に行えばよい。
【0135】
また、チャンネル数が2以上に設定されている場合、データ処理装置100において、設定されているチャンネル数に応じて、上記処理(最適化処理、データ処理(データ予測処理))を同様に行えばよい。
【0136】
また、上記実施形態では、データ範囲調整処理方法が、(a)最大値-最小値正規化によるデータ範囲調整方法、(b)標準化によるデータ範囲調整方法、および、(c)四分位範囲に基づくデータ範囲調整方法の3つの方法である場合について説明したが、これに限定されることはなく、他のデータ範囲調整処理方法を追加、あるいは、上記方法の代わりに採用するようにしてもよい。例えば、上記3つの方法に、外れ値を除外した後、最大値-最小値正規化によるデータ範囲調整方法、標準化によるデータ範囲調整方法、および/または、四分位範囲に基づくデータ範囲調整方法を行うものを追加するようにしてもよい。
【0137】
また、上記実施形態で説明したデータ処理装置100の各ブロック(各機能部)は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。また、上記実施形態で説明したポーズデータ生成システム、CGデータシステム、ポーズデータ生成装置の各ブロック(各機能部)は、複数のLSIなどの半導体装置により実現されるものであってもよい。
【0138】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0139】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0140】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0141】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0142】
例えば、上記実施形態の各機能部を、ソフトウェアにより実現する場合、
図7に示したハードウェア構成(例えば、CPU、GPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0143】
また、上記実施形態の各機能部をソフトウェアにより実現する場合、当該ソフトウェアは、
図7に示したハードウェア構成を有する単独のコンピュータを用いて実現されるものであってもよいし、複数のコンピュータを用いて分散処理により実現されるものであってもよい。
【0144】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。また、上記実施形態における処理方法において、発明の要旨を逸脱しない範囲で、一部のステップが、他のステップと並列に実行されるものであってもよい。また、上記実施形態における処理方法において、並列に実行される処理を、直列に(順次)実行されるようにしてもよい。
【0145】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0146】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0147】
また、文言「部」は、「サーキトリー(circuitry)」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【0148】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【0149】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【0150】
また、本明細書内の記載、特許請求の範囲の記載において、「最適化」とは、最も良い状態にすることをいい、システム(モデル)を「最適化」するパラメータとは、当該システムの目的関数の値が最適値となるときのパラメータのことをいう。「最適値」は、システムの目的関数の値が大きくなるほど、システムが良い状態となる場合は、最大値であり、システムの目的関数の値が小さくなるほど、システムが良い状態となる場合は、最小値である。また、「最適値」は、極値であってもよい。また、「最適値」は、所定の誤差(測定誤差、量子化誤差等)を許容するものであってもよく、所定の範囲(十分収束したとみなすことができる範囲)に含まれる値であってもよい。
【符号の説明】
【0151】
100 データ処理装置
1 ベクトル分解判定処理部
11 ベクトル分解処理部
2 量子化判定処理部
21 量子化処理部
22 畳み込み処理部
23 第2判定処理部
3 評価部