本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係るデータ処理装置1の例は、図1に示すように、制御部11と、記憶部12と、入力部13と、出力部14とを含んで構成されている。
ここで制御部11は、CPU等のプログラム制御デバイス、あるいはFPGA(Field Programmable Gate Array)等のロジックデバイス、あるいはASIC(Application Specific Integrated Circuit)であり、本発明の推測手段、学習処理手段、及び出力手段を実現する。制御部11として、CPU等のプログラム制御デバイスを用いる場合は、この制御部11は、記憶部12に格納されたプログラムを実行することで、上記各部の動作を実現する。
また制御部11としてFPGA等のロジックデバイスを用いる場合は、プログラムされた論理に従って動作し、上記各部の動作を実現する。
すなわち本実施の形態ではこの制御部11が、繰り返し入力されるデータを受け入れ、入力されたデータを入力データ及び教師データとして、逆数演算により機械学習可能な機械学習モデルの機械学習処理を実行する。また、この制御部11は、当該入力されたデータを入力データとして、当該機械学習モデルが表す推定器に入力したときの、当該推定器の出力を得る。そして制御部11は、当該得られた推定器の出力と、入力されたデータとの比較に基づいて、予め定めた判定処理を行い、当該判定処理の結果を出力する。この制御部11の詳しい動作の例については後に述べる。
記憶部12は、メモリデバイスやディスクデバイスを含んで構成される。この記憶部12は、制御部11がCPU等のプログラム制御デバイスである場合は、制御部11によって実行されるプログラムを保持する。このプログラムは、コンピュータ可読、かつ非一時的な記録媒体に格納されて提供され、この記憶部12に格納されたものであってもよい。
またこの記憶部12は、推定器を機械学習する際の機械学習モデルのモデルパラメータ等、制御部11の処理において必要となる情報を保持する、ワークメモリとしても動作する。
入力部13は、外部のセンサ等から入力されるデータをディジタルデータに変換し、また予め定められた次元のベクトル情報に変換して制御部11に出力する。出力部14は、制御部11から入力される指示に従って情報を出力する。この出力部14は例えばディスプレイ等であり、制御部11から入力される情報を表示出力する。
本実施の形態では制御部11は、機能的には、図2に例示するように、データ受入部21と、推定器22と、学習処理部23と、判定処理部24と、出力処理部25とを含んで構成される。
データ受入部21は、入力部13からデータの入力を受け入れる。本実施の形態の例では、データ処理装置1は、例えば製品製造の現場等に配され、当該製品製造に用いる装置に取り付けられ、当該装置の振動や、温度等の種々の情報を検出して出力するセンサに接続される。そして入力部13は、これらのセンサの出力を所定のタイミングごと(例えば定期的なタイミングごと)に、繰り返しディジタル値に変換して制御部11に対して出力する。また、入力部13は複数のセンサの出力を変換して得たディジタル値を所定の順に配列したベクトル値をデータとして制御部11に出力する。データ受入部21は、この入力部13が所定のタイミングごとに出力するデータを受け入れて、学習処理部23に出力する。
推定器22は、推測手段を実現するもので、機能的には図3に例示するように、入力層31と、中間層(隠れ層)32と、出力層33とを含む、3層の全結合型のニューラルネットワークである。また、本実施の形態においてこの推定器22は入力層31のノードの数(入力データのベクトルの次元)と、出力層33のノードの数(出力するデータのベクトルの次元)とが一致しているものとする。
すなわちこの推定器22では、入力データとなったベクトル値の各成分に対応する入力層31のノード31a,31b,…,31nと中間層32のノード32a,32b,…32Lとの間の結合重みをW(w1,w2,…,wL)(ここでwiは入力層31のノード数nに等しい次元のベクトル)、バイアスをb(b1,b2,…bL)とし、中間層32のノード32a,32b,…32Lと出力層33のノード33a,33b,…,33nとの間の結合重みをV(v1,v2,…,vL)(ここでviは出力層33のノード数nに等しい次元のベクトル)とするとき、これらの結合重みの値W,V及びバイアスbが推定器22の機械学習モデルのパラメータとなる。
推定器22は、入力データが入力されると、当該入力データを入力層31に入力し、この入力層31に入力された入力データの各成分に、それぞれ対応する結合重みWを乗じて総和するなど、入力層31に入力された入力データの各成分と結合重みWとに基づく所定の演算を行うことで中間層32の各ノードの値を求める。また、中間層32の各ノードの値h1,h2…,hLに、所定の非線形関数fを適用して求められる値f(hi)(i=1,2,…L)に対し、対応する結合重みVを乗じて出力層33の各ノードの値を求める。この演算は、一般的なニューラルネットワークにおける演算と同様であるので、ここでの詳しい説明を省略する。
ここでの非線形関数は、シグモイド関数、ReLU等広く知られたものを採用してもよい。推定器22は、出力層33の各ノードの値を成分とするベクトルを、出力データとして出力する。
本実施の形態では、この推定器22は、少なくとも学習処理の条件によっては、逆数演算により上記機械学習モデルのパラメータの機械学習が可能なものとなっている。このような推定器22の例については後に詳しく説明する。
学習処理部23は、データ受入部21が受け入れたデータを入力データ及び教師データとして、推定器22の機械学習処理を行う。具体的にこの学習処理部23は、データ受入部21が受け入れた直近所定回数分(バッチサイズ分)のデータを、推定器22に対して入力データとして入力する。ここでバッチサイズを1とする場合は、学習処理部23は、データ受入部21が受け入れたデータを、推定器22に対してそのまま入力データとして入力する。
学習処理部23は、当該入力データを入力したときに推定器22が出力した出力データと、データ受入部21が受け入れたデータ(教師データ)とを比較し、その差(絶対誤差や二乗平均誤差等)を損失(ロス)として演算する。そして学習処理部23は、当該損失が小さくなるよう、推定器22のパラメータ(結合重みの値)を更新する。
つまり、本実施の形態の例では、学習処理部23は、推定器22をオートエンコーダとして機械学習することとなる。
判定処理部24は、学習処理部23が推定器22に対し、入力データを入力したときに、推定器22が出力する出力データに基づいて所定の判定処理を実行する。
具体的な例として、この判定処理部24は、学習処理部23が演算した損失を参照し、当該損失の大きさが予め定めたしきい値を超える場合に入力データが異常である旨(つまり、製造装置等に異常が生じている旨)を表す判定の結果を出力処理部25に出力させる。また判定処理部24は、損失の大きさが予め定めたしきい値を超えていないときには、入力データが正常である旨(つまり、製造装置等に異常がない旨)を表す判定の結果を出力処理部25に出力させてもよい。
なお、この判定処理部24は、学習処理部23により推定器22のパラメータが十分に学習されるまでは、判定の処理を行わないよう制御されてもよい。具体的には、判定処理部24は、推定器22が機械学習をしていない状態(リセットされた状態)から、推定器22に入力データを入力した回数(学習処理部23によりパラメータの更新が行われた回数)が予め定めた初期化しきい値を超えたか否かを比較し、当該初期化しきい値を超えている場合に、推定器22のパラメータが十分に学習されたと判断してもよい。ここで初期化しきい値は例えば、中間層32のノードの数L以上の数として予め定めておく。
この場合、判定処理部24は、当該初期化しきい値として定められた回数だけ学習処理を実行するまでは(推定器22が初期化しきい値の回数だけ入力データを受け入れてパラメータの更新を受けるまでは)判定の処理を行わない。
出力処理部25は、判定処理部24から入力される指示に従い、判定の結果を出力部14に出力する。
ここで本実施の形態の例に係る推定器22の具体的な機械学習モデルについて説明する。本実施の形態では、この推定器22は、学習処理部23の動作により、入力層31と中間層32との結合重みW、及びバイアスbをランダムに決定し、中間層32と出力層33との間の結合重みVを機械学習するニューラルネットワークとする。具体的にここでは推定器22と学習処理部23とにより、OS-ELM(Online Sequential - Extreme Learning Machine)を実現して用いる。このOS-ELMは、N.Y. Liang, G.B. Huang, P.Saratchandran, and N.Sundararajan,”A Fast and Accurate Online Sequential Learning Algorithm for Feedforward Networks,” IEEE Transactions on Neural Networks, Vol. 17, No.6, pp. 1411-1423, Nov. 2006等の文献に開示され、広く知られているので、ここでの詳細な説明は省略する。
このOS-ELMとする場合、学習処理部23は、当初は推定器22をリセットするため、入力層31と中間層32との結合重みWとバイアスbとをランダムに決定する(なお、このとき、結合重みVもランダムに定めておいてもよい)。そして学習処理部23は、データ受入部21が受け入れたデータを推定器22に対し、入力データとして入力する。学習処理部23は、当該入力データを入力したときに推定器22が出力した出力データと、データ受入部21が受け入れたデータ(教師データ)とを比較し、その差(例えば二乗平均誤差とする)を損失として演算する。そして学習処理部23は、当該損失が小さくなるよう、推定器22の、中間層32と出力層33との間の結合重みVを更新する。
OS-ELMでは学習処理は次のようにして行われる。学習処理部23は、入力データを、n
i(i=1,2…)個ずつに分けてバッチとし、各バッチを順次、訓練データとする。ここでi番目のバッチに含まれる入力データをx
i(i=1,2,…,)とし、入力層31と中間層32との間の結合重みをW
k(W
k=w
1,w
2,…,w
L)、バイアスをb
k(b
k=b
1,b
2,…b
L)とするとき、このi番目のバッチに対する出力層33の出力は、次の行列で表される。
なお、Gは、出力層33の各ノードの出力を表し、x
i(j)は、i番目のバッチに含まれるj番目の入力データであることを表す。なお、n
iは、i番目のバッチにおけるバッチサイズである。
また、ここで教師データは入力データに同じであるので、この教師データTは、
となる。なお、右肩のTは転置を意味する(以下同じ)。
学習処理部23は、i番目のバッチが入力された時点では、損失の大きさ
を最小とする結合重みβを求めて、これを推定器22の中間層32と出力層33との間の結合重みVとすることで、推定器22を最適化することとなる。このとき、
を用い、i=2の場合を考慮すると、(1)式は、
と変形できる。なお、A
-1は、Aの疑似逆行列を意味する。
これを一般化して、i番目のバッチまでの学習が終了し、その時点での推定器22の中間層32と出力層33との間の結合重みVがV=β
iとなっているとすると、i+1番目のバッチに基づく機械学習の結果である結合重みβ
i+1を、
とすることができる(逐次更新式)。ただし、
である。
ここで、
とすると、これらの逐次更新式は、
として(ただしIは単位行列)、
と表現できる。
従って学習処理部23は、i番目のバッチが入力されたときに、中間層32の出力H
iを得て、その時点で最適化された中間層32と出力層33との結合重みV=β
iと、中間結果としてのP
iとを得ておく。そしてi+1番目のバッチが入力されると、(2)式により次の中間結果P
i+1を得て、中間層32と出力層33との結合重みVを(3)式で演算されるβ
i+1に更新する。なお、逆行列を求める演算については、特異値分解を用いるのが一般的であるが、各バッチにおけるバッチサイズN
iをN
i=1とする(バッチサイズを1とする)と、疑似逆行列を求めるべき行列である(2)式の
は、スカラ値となり((4)式は、N
i×N
iの行列であるため)、従ってこの疑似逆行列は、単なる逆数演算により求められることとなる。
すなわち、本実施の形態において逆数演算により機械学習可能な推測手段は、推定器22及び学習処理部23として、中間層と出力層との間の結合重みを疑似逆行列演算によって機械学習するニューラルネットワークを用い、その機械学習のバッチサイズを1とすることで(データを受け入れるごとに機械学習をすることで)実現される。このようなニューラルネットワークは、具体的には入力層と中間層との結合重みをランダムに決定するELM(Extreme Learning Machine)及び、それから派生するニューラルネットワーク(FP(Forgetting Parameters)-ELM、OS(On-Line Sequential)-ELM、EOS(Ensemble of OS)-ELM、FOS-ELM(OS-ELM with forgetting mechanism))等が相当する。もっともこれら推定器22と学習処理部23とによって、逆数演算により機械学習可能な推測手段を実現するニューラルネットワークは、これらの例に限られるものではない。
[動作]
本実施の形態のデータ処理装置1は以上の構成を備えており、次のように動作する。以下の例では、制御部11を、FPGAを用いて実装するものとし、推定器22として、バッチサイズを1とした、OS-ELMを用いるものとする。
またここではデータ処理装置1は、製品を製造する装置の近傍に配した複数の振動センサからの信号を受け入れるものとする。振動センサは、取り付けられた部位の振動の大きさを表すアナログの電気信号を出力する。
データ処理装置1は、当初は、推定器22であるOS-ELMの入力層31と中間層32との結合重みW及びバイアスbをランダムに決定する。そしてデータ処理装置1は、各センサが出力した電気信号をディジタル値に変換し、制御部11に入力する。制御部11はデータ受入部21として機能して、複数のセンサの出力を変換して得たディジタル値を所定の順に配列したベクトル値を、学習処理部23に出力する。
学習処理部23は、データの入力を受け入れるごとに、つまりバッチサイズが1の入力データを受け入れるごとに、推定器22に当該入力データを入力する。学習処理部23は、推定器22の出力データHと、教師データとしての入力データTと、その段階での推定器22の中間層32と出力層33との結合重みV=βiと、前回演算した中間結果としてのPi(β,Pとも、初回の値は予め設定しておく)を得る。
そして学習処理部23は、(2),(3)式により推定器22の中間層32と出力層33との結合重みVを更新する。また学習処理部23は、推定器22の出力と、入力データ(教師データ)との二乗平均誤差を損失として演算し、判定処理部24に出力する。
判定処理部24は、推定器22のパラメータが十分に機械学習されたか否かを判断する。この判断は、データ処理装置1が推定器22を初期化してから入力データを入力した回数が予め定めた初期化しきい値を超えたか否かにより判断する。判定処理部24は、推定器22のパラメータが十分に機械学習された状態にないと判断すると、判定処理部24は、判定処理を行わない。
一方、推定器22のパラメータが十分に機械学習された状態となっていると判断すると、判定処理部24は、学習処理部23から入力された損失の値の大きさが、予め定めたしきい値を超えたか否かを調べ、損失の値の大きさが当該予め定めたしきい値を超えている場合に、入力データが異常であり、製造装置等に異常が生じていると推定される旨を表す判定の結果を、出力部14であるディスプレイに出力するよう制御する等の処理を行う。
このように本実施の形態のデータ処理装置1によると、実際の異常検知を行う現場に設置してから推定器の逐次的な機械学習をオートエンコーダとして(つまり別途、教師データを用意することなく)行い、当該機械学習の結果に基づいて異常検知を行うので、準備工程を簡略化でき、環境に適合した判定を行うことが可能となる。
また、機械学習の過程の演算を比較的簡素な逆数演算により行うことが可能な推定器を用いることで、比較的簡易な構成とすることができる。
なお、ここでは製品を製造する装置の異常検知を行う例について述べたが、本実施の形態はこの例に限られるものではなく、発熱する装置の温度データを入力データとして発熱に係る異常検知を行うこととしてもよいし、配線上の電流を入力データとした電流量に関する異常検知や、ある製品の熱分布(サーモグラフィー)のデータを入力データとした熱分布の異常検知、人の行動や装置の操作履歴を入力データとした異常検知、無人航空機(ドローン等)の動作に係る異常検知等、種々の例に適用可能である。
[忘却]
また、本実施の形態の例において、忘却処理を含めるべき場合は、忘却率をαとして、(3)式のPi+1に1/α2を乗じることとすればよい。これによって簡易な方法で忘却効果を得ることが可能となる。
[学習結果の部分破棄]
また本実施の形態において、バッチサイズが1であるなど、比較的少数のバッチサイズの入力データ群により学習処理を行う場合は、異常なデータが連続することで生じる、異常なデータへの適合を防止するため、次のような学習結果の部分破棄の処理を行ってもよい。
本実施の形態の一例では、学習処理部23はデータ受入部21が受け入れたデータを、推定器22に対してそのまま入力データとして入力する(バッチサイズを1として逐次的な学習処理を実行する)。具体的にこの推定器22としては、OS-ELM のニューラルネットワークを用いることとすればよい。この場合、推定器22と学習処理部23とにより、バッチサイズを「1」とした、逐次的な学習処理を行うOS-ELMが実現される。
この例において学習処理部23は、入力データXを推定器22に入力し、当該推定器22が出力する出力データと入力データXとを用いて機械学習処理を行うごとに、つまり推定器22の中間層32と出力層33との結合重みVを更新するごとに、推定器22に入力した入力データXと、更新のために求めた結合重みβ、及び機械学習処理で必要となるデータ(例えば上述のP)を互いに関連付けて記憶部12に格納する。
またこのとき学習処理部23は、過去M回より前に格納した、入力データX,結合重みβ及び中間結果Pを互いに関連付けた情報が記憶部12に格納されていれば、当該情報を削除してもよい。
これにより記憶部12には、最大で直近のM回分の推定器22の機械学習結果である中間層32と出力層33との結合重みβjと、中間結果としてのPjと、それぞれの結合重みを求めたときの入力データXjとを互いに関連付けた情報Rj(j=1,2,…)が記憶されている状態となる(図4)。
学習処理部23は、予め定めた方法で決定した複数回(ここではM回とする)の機械学習処理を行うごとに、記憶部12に記憶したM回前の中間層32と出力層33との結合重みβ、中間結果P、及び入力データXを読み出す。学習処理部23は、ここで読み出した入力データXを、推定器22に入力する。
学習処理部23は、推定器22の出力を参照し、当該出力が予め定めた条件を満足するか否かを判断する。ここでは学習処理部23は、当該推定器22の出力と、入力データX(教師データに相当する)との差に基づく値(例えば二乗平均誤差)を損失として演算し、この損失の大きさが予め定めたしきい値を超えるか否かを調べる。ここで演算される損失の大きさが予め定めたしきい値を超えるとの条件が、例えば上記の予め定めた条件の一例に相当する。
学習処理部23は、ここで損失の大きさが予め定めたしきい値を超えていたとき、つまり、上記予め定めた条件が満足されるときには、ここで入力した入力データに関連付けて記憶されている機械学習結果であるM回前の中間層32と出力層33との結合重みβを用いて、推定器22の機械学習状態を補正する。具体的には、推定器22の中間層32と出力層33との結合重みVを、ここで読み出した結合重みβに設定する(この動作は、直近の機械学習の結果を部分的に破棄することに相当する)。
またこのときには、学習処理部23は、この時点で記憶している中間結果を、ここで読み出した中間結果Pに設定し直す。
なお、学習処理部23は、損失の大きさが予め定めたしきい値を超えていなかった場合は、推定器22の機械学習状態を補正することなく、機械学習処理を続ける。
本実施の形態のこの例によると、予め定めた方法で決定した回数(例えば実験的に定めてもよい)だけの機械学習を行うごとに、過去の所定の時点での入力データを現在の推定器22に入力して損失の大きさが大きくなっていないかを確認する。そして損失が大きくなっていれば、直近の機械学習の内容を破棄して、推定器22のパラメータを、上記過去の所定の時点での推定器22のパラメータに戻すこととなる。
これにより、バッチサイズが比較的大きい値となっている場合と同様に、時間的に平均化した機械学習が行われることとなる。
[遅延学習]
また本実施の形態の一例では、学習データを部分破棄する代わりに、学習を遅延して行ってもよい。この例では、学習処理部23はデータ受入部21が受け入れたデータを、推定器22に対してそのまま入力データとして入力する(バッチサイズを1として逐次的な学習処理を実行する)。この推定器22は、既に述べた例と同様にOS-ELM のニューラルネットワークを用いることとすればよい。すなわち、ここでも推定器22と学習処理部23とにより、バッチサイズを「1」とした、逐次的な学習処理を行うOS-ELMが実現されるものとする。
学習処理部23は、入力データXを受け入れて推定器22に入力し、当該推定器22が出力する出力データを得て、当該出力データと入力データXとの差に基づく値(例えば二乗平均誤差)を損失として演算し、入力データXと演算した損失とを関連付けて記憶部12に格納する。この段階では学習処理部23は、推定器22の機械学習処理を行わない。
学習処理部23は、予め定められた回数M(Mは2以上の自然数とする)だけ、上記の処理を繰り返して、過去M回分の入力データXとそれに基づく推定結果の損失の値とを、記憶部12に保持している状態となると、M回前の入力データXを用いた機械学習処理を行うか否かを判断する。
具体的にこの判断は、次のようにして行うことができる。すなわち学習処理部23は、保持している情報を参照して、直近M回分の損失の値に基づく統計値(例えばここでは平均Eavとする)を求める。そして学習処理部23は、M回前の(機械学習処理を行うか否かを判断する対象となったM回前の入力データXに対する)損失の値Eを参照し、この値Eが、上記統計値である平均Eavを用いた条件
E<a・Eav
を満足するか否かを判断する。このaは予め定めた定数であり、例えばa=3.0などとしておく。なお、ここでは統計値として平均を用いたが、平均だけでなく、中間値としてもよい。またaは定数ではなく直近M回分の損失の値の分散や標準偏差に基づいて定められてもよい。
学習処理部23は、上記の値Eが、E<a・Eavを満足するときには、M回前の入力データXを用いて機械学習処理を実行する。つまり、当該M回前の入力データXと、対応する損失Eとを用いて、推定器22の中間層32と出力層33との結合重みVを更新する。
学習処理部23は、そして当該M回前に格納した、入力データXと損失の情報とを削除してもよい。
なお、学習処理部23は、上記の判断において、値Eが、E<a・Eavを満足しない場合は、M回前の入力データXを用いた機械学習処理を実行することなく、当該M回前に格納した入力データXと損失の情報とを削除する。
本実施の形態のこの例によると、予め定めた方法で決定した回数(例えば実験的に定めてもよい)だけ遅延して機械学習を行うか否かを判断し、大きく外れた入力データに基づく機械学習を行わないよう制御するので、条件に応じて直近の学習内容を破棄する上述の例と同様の効果を得ることができ、時間的に平均化した機械学習が行われることとなる。
[並列化]
さらに本実施の形態によると、推定器22は複数あっても構わない。この例に係るデータ処理装置1の制御部11は、機能的には、図5に例示するように、データ受入部21と、複数の推定器42-1,42-2…と、各推定器42に対応して設けられる複数の学習処理部43-1,43-2…と、判定処理部44と、出力処理部25とを含んで構成される。なお、図2に例示したものと同様の構成となるものについては、同じ符号を付して繰り返しての説明を省略する。
本実施の形態のこの例に係る推定器42(ここで各推定器を区別する必要がない場合は、それぞれの推定器をまとめて推定器42と表記する。また学習処理部についても同様とする)のそれぞれは、図2に例示した推定器22と同じもので構わない。つまり、各推定器42は、それぞれOS-ELMに対応するニューラルネットワークでよい。
また学習処理部43は、対応する推定器42のパラメータを、既に説明した学習処理部23と同様にして機械学習処理により逐次的に更新する。学習処理部43は、また推定器42の出力データと、入力データ(教師データに相当する)との差に係る値(二乗平均誤差等)を損失として演算して出力する。さらに本実施の形態のこの例では、学習処理部43は、損失の値を出力するとともに、対応する推定器42をリセットしてからのパラメータの更新回数(入力データを入力した回数)を、学習状況情報として出力する。なお、ここでの例でも、それぞれの学習処理部43は、学習結果の部分破棄の処理を実行してもよい。
本実施の形態のこの例において学習処理部43-i(i=1,2,…)は、対応する推定器42-i(i=1,2,…)を、学習処理部43-iごとに定められる所定のタイミングTiごとにリセットする。すなわち学習処理部43-iは、前回推定器42-iをリセット(入力層31と中間層32との結合重みW及びバイアスbをランダムに決定)してから、タイミングTiだけの時間が経過するごとに、推定器42-iを再度リセットする。
ここでタイミングTiは、入力データの入力回数により定めてもよい(例えばタイミングTiは入力データがqi回入力されるごととしてもよい)し、図示しない時計部(現在時刻を計時ないし取得する回路部)から時刻の情報を取得し、当該時刻の情報に基づいて判断される、実際の時間経過により定めてもよい。
またこのタイミングTiは、すべての推定器42が(少なくとも異常検知の処理に必要な時間の間は)一斉にリセットされないタイミングとしておくこととしてもよい。例えばタイミングTiを入力データの入力回数により定める場合は、各タイミングTiに係る入力回数を素数とする。一例として推定器42を2つ用いる場合に、それぞれのリセットのタイミングを、T1=27437,T2=27449(いずれも素数)としておくと、7.5億回までは同じタイミングでリセットすることがなくなる。
またタイミングTiを現実の時刻により定める場合は、T1を毎日午前0時0分0秒に、T2を毎週月曜日の午前1時0分0秒に…というように定めれば、同じタイミングでリセットされることがなくなる。
このように本実施の形態の一例では、学習処理部43は、各推定器42を、例えばそれぞれ互いに異なるタイミングでリセットすることで、すべての推定器42が(少なくとも異常検知の処理に必要な時間の間は)一斉にリセットされないようにしておく。
また、この例の判定処理部44は、複数の学習処理部43から、それぞれ対応する推定器42が出力した出力データに係る損失の演算結果と、学習状況情報(ここでは対応する推定器42をリセットしてからのパラメータの更新回数)とを受け入れる。
そして判定処理部44は、学習状況情報を参照して、パラメータが十分に学習されている推定器42に対応する学習処理部43が出力した損失を参照し、当該損失の大きさが予め定めたしきい値を超えるか否かを調べる。ここでパラメータが十分に学習されているか否かは、例えば学習状況情報が表すパラメータの更新回数が予め定めた初期化しきい値を超えているか否かにより判断すればよい。つまり判定処理部44は、学習状況情報が表すパラメータの更新回数が予め定めた初期化しきい値を超えていればパラメータが十分に学習されていると判断する。
判定処理部44は、パラメータが十分に学習されていると判断された推定器42の数Qにより、パラメータが十分に学習されていると判断された推定器42に対応する学習処理部43のうち、出力した損失の大きさが予め定めたしきい値を超えるものの数qを除して、この値q/Qが所定の値、例えば1/2を超えるか否かを調べる。そしてこの値q/Qが例えば1/2を超える場合(この所定の値が1/2であるときには、過半数の推定器42が異常を検知したと判断される場合)に、入力データが異常である旨(つまり、製造装置等に異常が生じている旨)を表す判定の結果を出力処理部25に出力させる。
[クラスタリング]
また、このように推定器22を複数設けて並列化するときには、次のように機械学習処理を行ってもよい。本実施の形態のここでの例に係るデータ処理装置1の制御部11は、機能的には、図6に例示するように、図5に示した例と同様、データ受入部21と、複数の推定器42-1,42-2…と、学習処理部43′と、判定処理部44′と、出力処理部25と、第2学習処理部45とを含んで構成される。なお、図5に例示したものと同様の構成となるものについては、同じ符号を付して繰り返しての説明を省略する。
本実施の形態のこの例に係る推定器42(ここでも各推定器を区別する必要がない場合は、それぞれの推定器をまとめて推定器42と表記する)のそれぞれは、図2に例示した推定器22と同じもので構わない。つまり各推定器42は、それぞれOS-ELMに対応するニューラルネットワークでよい。
学習処理部43′は、データ受入部21が受け入れた入力データXを各推定器42に入力する。そして学習処理部43′は、各推定器42の出力データと、入力データXとの二乗平均誤差を損失として演算し、判定処理部44′に出力する。学習処理部43′は、入力データXを記憶部12に蓄積して保持する。
また学習処理部43′は、推定器42のうち、その出力データに係る損失に基づく判断の結果が、入力データXが「正常」であることを表すものとなっている推定器42を特定する情報を判定処理部44′から受け入れ、当該情報で特定される推定器42のパラメータを、既に説明した学習処理部23と同様にして機械学習処理により更新する。
判定処理部44′は、学習処理部43′から各推定器42の損失に係る情報の入力を受けて、当該損失に基づいて、各推定器42による入力データXの正常/異常判定の結果を出力する。具体的に、判定処理部44′は、対応する損失の大きさが予め定めたしきい値を超える推定器42については、当該推定器42が入力データXを異常と判定したとする。また、対応する損失の大きさが予め定めたしきい値を超えていない推定器42については、当該推定器42が入力データXを正常と判定したものとする。判定処理部44′は、すべての推定器42が入力データXを異常と判定した場合に、入力データXが異常であったと判定して、その旨を出力するよう、出力処理部25に指示する。
また判定処理部44′は、少なくとも一つの推定器42が入力データを正常と判定しているときには、入力データXは正常であるとして、その旨を出力するよう、出力処理部25に指示する。
さらに判定処理部44′は、入力データXを正常であると判断した推定器42を特定する情報を、学習処理部43′に出力する。
第2学習処理部45は、予め定められたタイミングで起動し、推定器42の機械学習処理を実行する。ここで予め定められたタイミングは、データ処理装置1の起動時点、あるいは所定の時間に1度、入力データXが所定の回数だけ入力されるごと、異常と判断された入力データが所定の回数を超えて入力された時点、入力データの傾向に基づいて定めたクラスタ数mの値が妥当でないと判断した時点、利用者の指示による時点など、として定めておけばよい。クラスタ数の値が妥当であるか否かの判断は、クラスタ数を異ならせて試験的なクラスタリングを行い、その結果を参照して、クラスタ数を変更するか否かを判断する処理を予め定めた判断のタイミングごとに繰り返して実行することによって行う。ここでクラスタ数を変更するか否かの具体的な判断は、上記判断の処理の時点におけるクラスタ数でのクラスタリングの結果と、上記の試験的なクラスタリングの結果とにおける、同じクラスタに属する入力データ同士の距離(凝集性)や、互いに異なるクラスタに属する入力データ同士の距離(クラスタ間離散性)とに基づいて行うことができる。
この第2学習処理部45による機械学習処理は、次のようにして行われる。第2学習処理部45は、学習処理部43′が記憶部12に蓄積して記録した入力データをクラスタリングする。ここでのクラスタリングの方法は、教師なしのクラスタリングであれば、どのような方法であってもよく、例えばDBScan、SUBCLU、k-meansなど、種々の処理のいずれかを採用できる。
第2学習処理部45は、推定器42の数と同じ、またはより少ない数のクラスタに分類を行う。つまり推定器42の数がnであるとすると、クラスタの数をm≦nなるmとする。あるいは、ここで得られるクラスタの数より多い推定器42を予め用意しておくこととしてもよい(その場合は、入力データとなるべきデータを予め蓄積し、クラスタリング処理を行ってクラスタ数を決定する)。
第2学習処理部45は、各推定器42を、いずれかのクラスタに係る入力データを機械学習する推定器であるとして、各推定器42をいずれかのクラスタに割り当てる。なお、以前に割り当てを行っている場合には、第2学習処理部45は改めて割り当てを変更することなく、以前の割り当ての結果をそのまま利用する。
そして第2学習処理部45は、記憶部12に蓄積されている入力データを順次取り出し、取り出した入力データのクラスタリングの結果(属するクラスタを表す情報)を参照する。第2学習処理部45は、当該情報で表されるクラスタに割り当てられている推定器42に対して、当該入力データを入力し、その出力データを得て、既に述べた方法と同様の方法で、当該推定器42を機械学習処理する。このとき、参照した情報で表されるクラスタに割り当てられていない推定器42については、機械学習処理を行わない。
第2学習処理部45は、記憶部12に蓄積されている入力データのすべてについて上記の処理を終了すると、記憶部12に蓄積している入力データを削除する(次回の学習には利用しないよう制御する)こととしてもよい。
そして第2学習処理部45による機械学習処理後、学習処理部43′と、判定処理部44′と出力処理部25とによる動作を継続する。
つまりこの例では、入力データをクラスタに分類し、分類されたクラスタごとに、対応する推定器42を用意して、当該推定器42を、対応するクラスタに属する入力データで機械学習する。
本実施の形態のこの例によると、各推定器42が第2学習処理部45の動作により、入力データの種類に特化した機械学習を行うこととなる。これにより、例えば製造装置の異常判定を行う例においては、製造装置が一時停止しているときの振動、動作中の振動、…といったように、複数の異なるタイプの振動をそれぞれ機械学習するようになる。
なお、本実施の形態のこの例においては、各クラスタに対して利用者が任意にラベルを付してもよい。この例では制御部11は当該ラベルの情報を記憶する。
そして判定処理部44′は、少なくとも一つの推定器42が入力データを正常と判定しているときには、当該推定器42が割り当てられているクラスタに係るラベルの情報を、出力処理部25に出力し、当該ラベルの情報を出力させる。これによると、利用者は、入力データの異常・正常の判断に加え、当該入力データがどのような状態に対応するものであるか(例えば上述の例であれば、「装置停止中」などといった状態)を識別可能となる。
また、判定処理部44′は、すべての推定器42の判定結果を総合的に判断することで、当該入力データに対応するラベル(当該入力データがどのような状態に対応するものであるか)の確信度を出力してもよい。例えば、一つの推定器42が正常と判定し、それ以外の推定器42がすべて異常と判定したときは正常と判断した推定器42が割り当てられているクラスタに係るラベルの情報に対する確信度(当該クラスタ分類に対する信頼度)は高くなる。一方、一つの入力データに対して、複数の推定器42が一斉に正常と判定したときには、当該複数の推定器42のそれぞれが割り当てられているクラスタに係るラベルの情報に対する確信度は低くなる。
そこで判定処理部44′は、複数の入力データのそれぞれに対して推定器42ごとに、単独で正常と判断した(他の推定器42が異常と判断しているときに、当該推定器42のみが正常と判断した)割合、つまり単独で正常と判断した回数を、正常と判断した回数(他の推定器42も正常と判断したときを含む回数)で除した値を、当該推定器42に割り当てられているクラスタに係るラベルの確信度として出力してもよい。
[行動異常の検出]
また既に述べたように、本実施の形態のデータ処理装置1は、被験者の行動の正常・異常を判断することにも用いることができる。
この行動異常の検出を行う場合、被験者の行動(例えば車両を運転中の被験者であればハンドルを左に切る、右に切る、アクセルを踏む、などの行動であり、コンピュータ操作を行う被験者を対象とする場合は、入力したコマンドの種類等)を表す符号(例えばアルファベット一文字)を予め規定しておき、被験者の一連の行動を符号列(A,C,E,B…といった列)として表現する。
データ処理装置1のデータ受入部21は、一定の期間ごとの被験者の一連の行動を表す符号列の入力を入力部13から複数回受け入れる。そしてデータ受入部21は、各期間に対応する符号列に基づいて各期間ごとの状態遷移表を生成する。具体的にデータ受入部21は、N個の符号からなる符号列からi番目(iは、0<i<Nの各整数)の符号Ciと、i+1番目の符号Ci+1とを取り出て順列(Ci,Ci+1)を作成し、この順列ごとの出現確率を演算する。
データ受入部21は、あり得るすべての順列について、その出現確率を関連付けたベクトル情報(符号列から取り出されなかった順列についての出現確率は0とする)を生成して状態遷移表とする。そしてデータ受入部21は、この状態遷移表のベクトル情報を入力データとして学習処理部23(あるいは学習処理部43や学習処理部43′)に出力し、正常・異常を判別する推定器を得る。
もっとも、このようにして生成した状態遷移表は、スパース(ほとんどの要素が「0」)なベクトル情報となっていることが想定される。
そこで本実施の形態のここでの例では、データ受入部21は、複数の期間のそれぞれについて求められた状態遷移表について、広く知られた圧縮(複数の要素を統合して要素数を減少させる)処理を行った後、圧縮処理後のベクトル情報を入力データとすることとしてもよい。この処理としては、Candes-Taoの理論に基づく方法など、広く知られた方法を採用できるので、ここでの詳しい説明は省略する。
あるいは、データ受入部21は、第j番目の期間に対応する状態遷移表Vjを求める際、第j−1番目の期間に対応する状態遷移表Vj-1があれば、第j番目の期間に対応して上記の方法で求めた状態遷移表V′jを用い、求める状態遷移表Vjを、
Vj=V′j+α・Vj-1
として求めてもよい。ここでαは任意の定数であり、例えばα=0.8などとする。
この例のデータ処理装置1は、図6に例示した構成を有するものであってもよい。この図6の構成を有するものとした場合は、車両を運転する被験者の行動の異常・正常を検出するときには、各推定器42は、走行中に対応するもの、停車中に対応するもの…といったように分化して機械学習されることが期待される。そしてこの場合のデータ処理装置1は、どの推定器42においても異常であると判断されたときに、行動の異常が検出されたことを表す情報を出力することとなる。
[前処理]
さらに本実施の形態のデータ処理装置1のデータ受入部21は、入力部13が出力するデータに対して前処理を行ってもよい。この前処理は、処理の対象とするベクトルデータx(要素が(x0,x1,x2…,xn)とする)に対して所定の変換を行うもので、変換後のベクトルy(要素が(y0,y1,y2…,yn)とする)を、
yi=Σαj・xj
(ただしΣは、jについての総和を求めることを意味する)などとして求めることを意味する。ここでαは、フィルタ関数(カーネル)であり、例えば、
αj=0(j<i−1,またはj>i+1のとき)
αj=1/3(i−1≦j≦i+1のとき)
としてもよい。
また、
αj=0(j<i−1,またはj>i+1のとき)
αj=1/4(j=i−1,またはj=i+1のとき)
αj=1/2(j=iのとき)
としてもよい。
データ受入部21は、入力部13が出力するデータを受け入れて、当該データに対して上述のフィルタ関数を用いて変換処理を行ってから、変換処理後のデータを入力データとして学習処理部23(あるいは学習処理部43や学習処理部43′)に出力することとしてもよい。
このようにすると、例えば時系列に値を配列したベクトルデータを入力データとする場合に、時間変化に対する変動に対してロバストな判定を行うことが可能となる。
また、上述のように、フィルタ関数の定め方は複数あるため、図5に例示した構成を用いることとしてもよい。この場合、各フィルタ関数に対応する推定器42を定めておく。そしてこの場合のデータ受入部21は複数のフィルタ関数をそれぞれ適用して変換したデータを複数得て、各フィルタ関数に対応する推定器42を、対応するフィルタ関数で変換したデータを用いて機械学習させるよう、各学習処理部43にそれぞれ対応する変換したデータを出力することとしてもよい。
また変換処理の方法として、HOG特徴量を用いる方法を採用してもよい。具体的には、ベクトルデータxの各要素を所定サイズ(例えばw×h)のマトリクス状に配列した上で、当該配列後のマトリクス内で予め定めたウインドウサイズWw×Hw(Ww<w、Hw<h)の領域を設定し、当該領域(局所データとなる)の勾配方向と勾配強度とを演算して、それらのヒストグラムを変換後のベクトルyとして、当該変換処理後のデータを入力データとして学習処理部23(あるいは学習処理部43や学習処理部43′)に出力することとしてもよい。
この処理は、ベクトルデータxがもともと上記所定サイズ(w×h)の画像データである場合に有効である。この場合、ベクトルデータxの各成分は当該画像データの各画素の輝度値となる。またそのHOG特徴量をベクトルyとして表現する方法は、広く知られているため、ここでの詳しい説明は省略する。
[多層化]
また、本実施の形態のデータ処理装置1を複数用い、各データ処理装置1を互いに、FATツリー等の木構造ネットワーク状に接続して用いてもよい。
この場合、データ処理装置1を、木構造ネットワークの各ノードに配する。そして親となるノードのないノード(ルートノード)に対応するデータ処理装置1を最上位とする。子のあるノードに対応するデータ処理装置1pは、子となっているノードに対応するデータ処理装置1fが出力する判定の結果(当該データ処理装置1fに入力された入力データが正常であるか否かを表す情報)を受け入れ、この判定の結果の情報を入力部13から受け入れて、機械学習の対象(入力データ及び教師データ)として、OS-ELM等で構成した推定器をオートエンコーダとして学習処理し、入力データが正常であるか異常であるかの判定を行う。
この例によると、より下位側(製品の製造機械の振動などの情報を入力とする)データ処理装置1において、異常検知の対象となったシステムの細部における異常を検知するとともに、例えば一つの作業室において、個々の製造機械の振動についての異常検知を行う複数のデータ処理装置1からの入力を受け入れる(親となっているノードに相当する)データ処理装置1は、この作業室全体(システムのより広域な部分)における集約的な異常検知を行うこととなる。
このように本実施の形態のデータ処理装置1を多層的に接続することで、システムの種々のスケールで異常検知を行うことが可能となる。
[要因推定]
また、本実施の形態のデータ処理装置1は、異常と判断された入力データと、その前後にデータ処理装置1に入力されていた複数の入力データとを入力とし、異常の原因を表す情報を正解として機械学習処理した、ディープラーニングのニューラルネットワークを用いた要因推定装置に接続されてもよい。
この場合、データ処理装置1は、最近入力した入力データを少なくともN個蓄積して保持する。そして異常と判断される入力データが入力されると、その後、m個(m<N,m=N−nとする)の入力データが入力されるまで待機し、異常と判断された入力データが入力された後、m個の入力データが入力されたときに、保持しているN個の入力データ(異常発生前にn−1個、異常と判断された入力データが1個、異常と判断された後の入力データm個の合計N個)を、要因推定装置に送出する。
なお、上述のような要因推定装置の構成は、広く知られたものを採用できるので、ここでの詳しい説明は省略する。