以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[第1実施形態]
図1は、本実施形態における処理システム100の構成の一例を示す図である。処理システム100は、ローカルエリアネットワーク102およびインターネット104で接続された、クラウドサーバ200、エッジサーバ300およびデバイス400を含んで構成される。デバイス400には、ネットワーク接続が可能な各種装置が含まれる。デバイス400としては、例えば、センサ500、プリンタ600、パーソナルコンピュータやワークステーション等の情報処理装置、スマートフォンやタブレットなどのクライアント端末401、デジタルカメラ402、音声入出力装置403である。ただし、デバイス400は、これらの種類に限られるものではなく、例えば冷蔵庫やテレビ、エアコンなどの家電製品、工業製品、製造装置であってもよい。デバイス400は、ローカルエリアネットワーク102で相互に接続され、ローカルエリアネットワーク102に設置されているルータ103を介してインターネット104と接続することが可能である。
ここで、ルータ103は、ローカルエリアネットワーク102とインターネット104を接続する装置として示されているが、ローカルエリアネットワーク102を構成する無線LANアクセスポイント機能を有していても良い。この場合、各デバイス400は、有線LANでルータ103と接続する以外に、無線LANでアクセスポイントと接続してローカルエリアネットワーク102に接続するように構成することが可能である。例えば、プリンタ600とクライアント端末401は有線LANで接続し、プリンタ600とセンサ500は無線LANで接続するように構成することが可能である。
各デバイス400およびエッジサーバ300は、ルータ103を介して接続されたインターネット104を経由してクラウドサーバ200と相互に通信することが可能である。エッジサーバ300と各デバイス400は、ローカルエリアネットワーク102を介して相互に通信することが可能である。また、各デバイス400同士は、ローカルエリアネットワーク102を介して相互に通信することが可能である。また、センサ500とプリンタ600は、近距離無線通信101によって通信することが可能である。近距離無線通信101は、例えば、Bluetooth(登録商標)規格やNFC規格に準拠する無線通信である。
上記の構成は、一例であって、他の構成が用いられてもよい。例えば、ルータ103がアクセスポイント機能を備えている例を示したが、アクセスポイントをルータ103と異なる装置で構成してもよい。また、エッジサーバ300と各デバイス400の間の接続は、ローカルエリアネットワーク102以外の接続構成を用いるものであってもよい。例えば、無線LAN以外のLPWA、ZigBee、Bluetooth、近距離無線通信などの無線通信や、USBなどの有線接続や赤外線通信などを用いるものであってもよい。また、センサ500は、センサを内蔵したデバイスであってもよい。例えば、内部にセンサデータを保持する構成を有するようにしてもよい。
図2は、クラウドサーバ200、エッジサーバ300の構成の一例を示すブロック図である。本実施形態では、クラウドサーバ200、エッジサーバ300は、共通の情報処理装置としてのハードウェア構成を有するものとして説明する。以下、クラウドサーバ200を、クラウドサーバ200とエッジサーバ300の代表例として説明する。クラウドサーバ200は、装置全体の制御を行うメインボード210、ネットワーク接続ユニット201、ハードディスクユニット202を含む。メインボード210に配置されるマイクロプロセッサ形態のCPU211は、内部バス212を介して接続されているプログラムメモリ213に記憶されている制御プログラムと、データメモリ214の内容とに従って動作する。CPU211は、ネットワーク制御部215を介してネットワーク接続部201を制御することで、インターネット101やローカルエリアネットワーク102などのネットワークと接続し、他の装置との通信を行う。また、CPU211は、ハードディスク制御部216を経由して接続されたハードディスク202にデータを読み書きすることが可能である。ハードディスク202には、プログラムメモリ213にロードして使用されるオペレーティングシステムやクラウドサーバ200の制御ソフトウェアや各種データが格納される。
メインボード210には、GPU217が構成されており、各種演算処理をCPU211の代わりに実行させることが可能である。GPU217は、データをより多く並列処理することで効率的な演算を行うことができるので、ディープラーニングのような学習モデルを用いて複数回に渡って学習を行う場合には、GPU217で処理を行う場合がある。本実施形態では、後述のクラウドサーバ200の学習部252の処理において、CPU211に加えてGPU217が用いられる場合がある。即ち、学習モデルを含む学習プログラムを実行する場合には、CPU211とGPU217が協同して演算を行うことで学習が行われる。なお、学習部252の処理は、CPU211またはGPU217により演算が行われてもよい。また、後述のエッジサーバ300の推論部351の処理において、学習部252と同様に、GPU217が用いられる場合がある。
クラウドサーバ200とエッジサーバ300で共通の構成を有するものとして説明したが、必ずしもそのような構成に限られるものではない。例えば、クラウドサーバ200にはGPU217を搭載し、エッジサーバ300ではGPU217を搭載しないように構成してもよいし、異なる性能のGPU217を搭載してもよい。また、学習部252や推論部351の処理では、プリンタ600に搭載されたGPU621あるいはCPU611が用いられてもよい。そのため、後述する学習用データ生成部251、データ収集・提供部350、学習モデル更新判定部352の各処理、学習済モデル353の保持は、プリンタ600内部で行われるように構成してもよい。また、上記の構成に伴い、学習用データベース250をエッジサーバ300またはプリンタ600に構成してもよい。
図3(a)及び図3(b)は、プリンタ600の外観の一例を示す図である。本実施形態では、プリンタ600として、例えばスキャナその他の機能を兼ね備えたマルチファンクションプリンタ(MFP)が用いられる。図3(a)は、プリンタ600の全体外観図を示す。原稿台601はガラス状の透明な台であり、原稿を設置してスキャナで読み取る時に使用される。原稿台圧板602は、スキャナで読み取りを行う際に原稿が浮かないように原稿台に押しつけるとともに、外光がスキャナユニットに入らないようにするためのカバーである。印刷用紙挿入口603は、様々なサイズの用紙をセット可能な挿入口である。印刷用挿入口603にセットされた用紙は一枚ずつ印刷部に搬送され、所望の印刷が行われ、印刷用紙排出口604から排出される。
図3(b)は、プリンタ600上面の外観図を示す。原稿台圧板602の上部には、操作パネル605および近距離無線通信ユニット606が配置されている。近距離無線通信ユニット606は、近距離無線通信を行うためのユニットであり、所定距離内にいる通信相手の近距離無線通信ユニットと通信を行うことが可能である。無線LANアンテナ607は、無線LANを用いてローカルエリアネットワーク102と接続して通信を行うためのアンテナとして構成されている。
図4は、プリンタ600の構成の一例を示すブロック図である。プリンタ600は、装置全体の制御を行うメインボード610、無線LAN通信部608、近距離無線通信部606、操作パネル605を含む。メインボード610に配置されるマイクロプロセッサ形態のCPU611は、内部バス612を介して接続されているROM形態のプログラムメモリ613に記憶されている制御プログラムと、RAM形態のデータメモリ614の内容とに従って動作する。CPU611は、スキャナ部615を制御して原稿を読み取り、読取結果をデータメモリ614中の画像メモリ616に格納する。また、CPU611は、印刷部317を制御して、データメモリ614中の画像メモリ616の画像データに基づいて記録媒体に印刷させることが可能である。また、メインボード610には、GPU621が構成されており、各種演算処理をCPU611の代わりに実行させることが可能である。
CPU611は、無線LAN通信制御部618を介して無線LAN通信部608を制御して、他の通信端末装置と無線LAN通信を行う。また、CPU611は、近距離無線通信制御部620を介して近距離無線通信部606を制御して、他の近距離無線通信端末との接続を検知したり、他の近距離無線通信端末との間でデータの送受信を行うことが可能である。CPU611は、操作部制御部621を制御して、操作パネル605にプリンタ600の状態の表示や機能選択メニューの表示を行ったり、ユーザからの操作を受け付けることが可能である。操作パネル605にはバックライトが備えられており、CPU611は、操作部制御部620を介してバックライトの点灯、消灯を制御することが可能である。例えば、プリンタ600の消費電力を抑えるために、CPU611は、操作部制御部620を介してバックライトを消灯するよう制御する。
図5は、処理システム100のソフトウェア構成の一例を示す図である。図5では、ソフトウェア構成のうち、本実施形態における学習および推論の処理に関わるものについてのみ示しており、その他のソフトウェアモジュールについては不図示としている。例えば、各デバイスやサーバ上で動作するオペレーティングシステムや各種ミドルウェア、メンテナンスのためのアプリケーション等については図示を省略している。
クラウドサーバ200は、学習用データベース250、学習用データ生成部251、学習部252、学習モデル253を含む。学習用データベース250は、学習部252が使用する学習用データが格納されたデータベースである。学習用データ生成部251は、外部から受信したデータから、学習部252が処理可能な学習用データを生成するモジュールである。本実施形態では、学習用データは、例えば時系列データである入力データXとして示される。学習用データ生成部251により生成された学習用データは逐次、学習用データベース250に蓄積される。学習部252は、学習用データ生成部251から受け取った学習用データを用いた学習モデル253による学習を実行するためのプログラムモジュールである。なお、学習部252には、学習モデル253のハイパーパラメータをチューニングする処理を含んでもよい。そのような構成により、学習モデル253の精度を向上させることができる。学習モデル253は、学習部252で行った学習モデルのハイパーパラメータ、推論誤差などの学習結果を蓄積することが可能である。本実施形態では、学習モデル253をリカレントニューラルネットワーク(RNN)として実現する例を説明する。RNNに時系列データを入力することで、入力された時系列データ以降の時刻に対応する予測値を出力することができる。学習モデル253は、エッジサーバ300に学習済モデルとして配信され、エッジサーバ300における推論処理に用いられる。
エッジサーバ300は、データ収集・提供部350、推論部351、学習モデル更新判定部352、学習済モデル353を含む。データ収集・提供部350は、デバイス400から受信したデータや、エッジサーバ300が自ら収集したデータを、クラウドサーバ200での学習に用いるためのデータ群としてクラウドサーバ200に送信するモジュールである。推論部351は、デバイス400から送られるデータに基づいて、学習済モデル353を用いて推論を実行し、その結果をデバイス400に返送するプログラムモジュールである。デバイス400から送られるデータは、推論部351の入力データXとなるデータである。学習モデル更新判定部352は、学習済モデル353の精度評価を行い、精度低下を防止するために学習モデルの更新が必要か否かを判定する。学習済モデル353は、エッジサーバ300で行う推論に用いられる。学習済モデル353は、学習モデル253と同様にニューラルネットワークとして実現される。ここで、学習済モデル353は学習モデル253と同一のものであってもよいし、学習モデル253の一部が抽出されて構成されるものであってもよい。学習済モデル353は、クラウドサーバ200で蓄積されて配信された学習結果を学習モデル253として格納する。学習済モデル353は、学習モデル253の全てが配信されたものであってもよいし、学習モデル253のうちエッジサーバ300での推論に必要な一部分だけが抽出されて配信されたものであってもよい。
デバイス400は、アプリケーション部450、データ送受信部451を含む。アプリケーション部450は、デバイス400で実行される各種の機能を実現するモジュールであり、機械学習による学習・推論の仕組みを用いることが可能である。データ送受信部451は、エッジサーバ300に学習または推論を依頼するモジュールである。学習時には、データ送受信部451は、アプリケーション部450からの依頼により、学習に用いるデータをエッジサーバ300のデータ収集・提供部350に送信する。推論時には、データ送受信部451は、アプリケーション部450からの依頼により、推論に用いるデータをエッジサーバ300に送信し、その結果を受信してアプリケーション部450に返す。
なお、本実施形態では、クラウドサーバ200で学習された学習モデル253をエッジサーバ300に学習済モデル353として配信して推論に用いる構成を説明するが、この構成に限定されるものではない。学習、推論をそれぞれ、クラウドサーバ200、エッジサーバ300、デバイス400のどこで実行するかについて、ハードウェア資源の配分や計算量、データ通信量の大小に基づいて決定されるようにしてもよい。例えば、プリンタ600で推論、学習のいずれかあるいは両方が行われるようにしてもよい。また、これらの資源の配分や計算量、データ通信量の増減に応じて、学習、推論のそれぞれを処理システム100のどの装置で実行するかを動的に変更するようにしてもよい。また、学習と推論を行う装置を異ならせ、推論側の装置は推論で用いるロジックのみで構成することで、学習済モデル353の容量を削減し、且つより高速で推論処理が実行可能となる。
図6(a)及び図6(b)は、学習モデル253、学習済モデル353を用いる際の入出力の構造を説明するための概念図である。図6(a)は、学習時における、学習モデル253とその入出力データの関係を示す。入力データX(入力データ801)は、学習モデル253の入力層のデータである。時系列データである入力データXよりも後時刻のデータを学習モデル253で予測した結果として、出力データY(出力データ803)が出力される。学習時には、入力データXよりも後時刻で実際に計測されたデータとして教師データT(教師データ802)が与えられるので、出力データYと教師データTを損失関数804に与えることにより、予測結果の正解からのずれ量L(ずれ量805)が得られる。多数の学習用データに対してずれ量Lが小さくなるように、学習モデル253中のRNNのパラメータ等が更新される。
本実施形態では、使用する機械学習アルゴリズムとしてRNNを説明するが、他の再帰型ニューラルネットワークを用いてもよい。例えば、Long short-term memory(LSTM)や、双方向RNNなどが用いられてもよい。さらにネットワーク構造として、複数のネットワーク構造を組み合わせたものが用いられてもよい。例えば、畳み込みニューラルネットワーク(CNN)とRNN、LSTMなどの再帰型ニューラルネットワーク、オートエンコーダなどが組み合わせられてもよい。
図6(b)は、推論時における、学習済モデル353とその入出力データの関係を示す。入力データX(入力データ811)は、学習済モデル353の入力層のデータである。時系列データである入力データXよりも後時刻のデータを学習モデル253で予測した結果として出力データY(出力データ813)が出力される。推論時には、この出力データYを推論結果として用いられる。なお、推論時の学習済モデル353は、学習時の学習モデル253と同等のネットワーク構造を備えるものとして説明したが、推論で必要な部分のみを抽出したものを学習済モデル353として構成してもよい。そのような構成により、学習済モデル353のデータ量を削減したり、推論処理の時間を短縮したりすることができる。
以上の構成に基づいて、以下、本実施形態の動作について説明する。本実施形態では、装置の状態(装置の動作)が正常と判定される場合の予測精度を基準精度と比較することで、学習済モデルを適切なタイミングで更新することができる。
一般的に、機械学習を用いて装置の異常を予測するためには、学習時に正常時のデータと異常時のデータの両方が必要になる。しかしながら、装置の故障により発生する異常なデータを学習に十分なデータ数分集めることは困難である。このような異常時のデータ不足を解決するために、正常時のデータのみを学習させた学習済モデルを作成し、上述のモデルに入力したデータの推論値と実際に観測された値の誤差を比較することにより、装置の異常を予測する手法がある。上述のモデルは正常時のデータしか学習していないため、正常時のデータを入力すると実際に観測された値との予測誤差は小さくなり、精度よく推論が機能するが、異常時のデータを入力すると推論値と実際に観測された値との予測誤差は大きくなる。このようにして、入力したデータが装置の異常を示すデータであったかを帰納的に判定することができる。
一般的に、装置に搭載される学習済モデルは、検討用データを学習させることで用意されていることが多く、検討用データは、実際の全ての使用環境や使用方法を反映できているわけではない。また、装置を構成する部品は経年変化していくため、入力データの分布などが変化していく可能性がある。そのため、学習済モデルの精度は、装置の使用開始時から時間経過に伴って徐々に低下していくことが想定される。そのため、精度が低下した場合には、新たに収集したデータで再度学習を行うことで学習済モデルを更新することが必要となる。
しかしながら、正常時のデータのみが学習データとなる異常予測モデルにおいては、単純に学習データと学習済モデルの入力データの分布を比較してモデルの精度評価をすることはできない。また、異常予測モデルにおいては、推論値と実際に観測された値との予測誤差を用いて正常もしくは異常を判定する。そのため、単純に予測誤差が増加したことだけでは、モデルの精度が低下したための予測誤差の増加であるのか、装置動作の異常のための予測誤差であるのかが分からない。そのため、単純に予測誤差が増加したことを以て、学習済モデルの精度低下と判断することができない。本実施形態では、推論結果により装置動作が正常と判定される場合の学習済モデルの予測精度を基準精度と比較することで、学習済モデルを適切なタイミングで更新することができる。
図7(a)及び図7(b)は、入力データX、教師データTのデータ形式の一例を示す図である。図7(a)は、入力データXのデータ形式の一例を示す。入力データXは、各列にパラメータごとのデータ、各行に時刻カウントごとのデータが格納されている時系列データである。ここで、入力データXは、パラメータごとに異なるセンサデータを格納したデータでもよい。例えば、パラメータ1には温度に対応するデータが格納され、パラメータ2には圧力に対応するデータが格納される。
図7(b)は、3カウント前のデータから次の1カウント分のデータを予測する学習モデルを作成する場合に、学習時に使用する入力データX、教師データTのデータ形式の一例を示す。入力データXの時刻長と予測する時刻長は、適用するシステムに応じて適宜変更されてもよい。これらは学習モデルのハイパーパラメータとも考えられるため、学習モデル253の精度を向上させるために、学習部252にて入力データXの時刻長と予測する時刻長を設定可能としてもよい。
図8は、学習時の学習モデル253の入出力の構造を示す図である。以下、学習モデル253は3カウント前のデータから次の1カウント分のデータを予測するモデルとして説明する。入力データXとして、センサデータ900を用いて説明する。教師データTとして、センサデータ950を用いて説明する。図8に示す構造は一例であり、センサデータ900は、センサデータ950に含まれるデータの3カウント前までのデータの集合であるものとする。学習モデル253は、センサデータ900を学習モデル253に入力した時の出力と、教師データTとのずれ量Lが最小となるよう学習が行われて更新される。
図9(a)及び図9(b)は、学習時に用いられる学習用データの定義を説明するための図である。図9(a)に示すように、一対の学習用データは、入力データXと教師データTのペアを表している。図9(b)は、推論時に異常予測のための指標として用いる異常判定閾値について説明するための図である。学習用データセット821には、図9(a)で示すような学習用データの組が複数含まれている。
本実施形態では、学習用データセット821として、学習モデルのパラメータ更新に用いられるトレーニングデータ822と、学習モデルのパラメータ更新に用いられず学習モデル251の予測精度を評価するためのバリデーションデータ823とが用意される。バリデーションデータ823の学習用データごとに予測精度としてずれ量L(ずれ量805)が得られる。異常判定閾値830は、バリデーションデータ823の学習用データごとに得られるずれ量Lの平均値である。ここで、バリデーションデータを用意する際の手法として、クロスバリデーション法、ホールドアウト法、リーブワンアウト(Leave One Out)法のいずれかまたはその他の手法を用いてもよい。また、本実施形態では、異常判定閾値830は、バリデーションデータの平均誤差としたが、その他の指標を用いてもよい。例えば、バリデーションデータのずれ量Lの最大値、最小値、その他の統計値を異常判定閾値830として用いてもよい。
図10は、推論時の学習済モデル353の入出力と、学習済モデル353の出力データにより正常/異常判定を行う構造を示す図である。入力データX(入力データ801)として、学習時と同様にセンサデータ900が用いられる。具体的には、時刻カウントt=s-3、s-2、s-1のデータが入力データXとなる。このとき、上述したように学習済モデルは、3カウント前のデータから次の1カウントのデータを予測するモデルであるため、出力データY(出力データ803)は、時刻カウントt=sのデータの予測値となる。ずれ量L(ずれ量805)は、時刻カウントt=sの予測値である出力データYと時刻カウントt=sの実測値(測定値)である実測値950を損失関数804に入力したときに得られる予測誤差である。損失関数804は、学習時と同一の損失関数を用いてもよい。判定処理960は、ずれ量Lから装置の正常/異常判定を行う処理である。判定処理960を含む推論処理のフローについては後述する。判定値961は、判定処理960の出力値であり、正常もしくは異常を示す値として出力される。本実施形態では、このようにして、推論時の出力データから装置の正常/異常判定を行う。
図11は、判定処理960を含む推論処理を示すフローチャートである。なお、本実施形態では、推論処理は、図11(a)、図11(b)のいずれのフローで行われてもよい。図11(a)は、1回の推論結果により、装置の正常/異常判定を行う場合のフローチャートである。図11(a)及び図11(b)の処理は、例えば、エッジサーバ300のGPU217がプログラムメモリ213に記憶されたプログラムを読み出して実行することにより実現される。
S1101において、GPU217は、入力データX(実測値)以降の出力データY(予測値)を予測する。その後、S1102において、GPU217は、予測値と同時刻カウントの実測値を受信したか否かを判定する。S1102の処理は、予測値と同時刻カウントの実測値を受信したと判定されるまで繰り返される。予測値と同時刻カウントの実測値を受信したと判定された場合、S1103に進む。
S1103において、GPU217は、予測値と同時刻カウントの実測値とのずれ量Lを算出する。S1104において、GPU217は、ずれ量Lと異常判定閾値830とを比較し、ずれ量Lが異常判定閾値830より小さいか否かを判定する。ずれ量Lが異常判定閾値830より小さいと判定された場合、S1105において、GPU217は、判定値961を「正常」として出力し、図11(a)の処理を終了する。一方、ずれ量Lが異常判定閾値830より小さくない、即ち、ずれ量Lが異常判定閾値830より大きいと判定された場合、S1106において、GPU217は、判定値961を「異常」として出力し、図11(a)の処理を終了する。以下、S1101~S1104の処理を、正常/異常判定処理と呼ぶ。
図11(b)は、連続した複数回の推論結果により、装置の正常/異常判定を行う場合のフローチャートである。図11(b)では、上記の正常/異常判定処理を予め定められた任意の連続推論回数分、ループ処理して実行する。そして、正常/異常判定処理を連続推論回数分の実行中に一度もずれ量Lが異常判定閾値830を下回らなければ、ループ処理を終了し、S1107において、GPU217は、判定値961を「異常」として出力し、図11(b)の処理を終了する。一方、正常/異常判定処理を連続推論回数分の実行中に一度でもずれ量Lが異常判定閾値830を下回った場合、S1108において、GPU217は、判定値961を「正常」として出力し、図11(b)の処理を終了する。
図12は、処理システム100において、学習データが蓄積されるまでの処理を示すフローチャートである。なお、プリンタ600の動作は、例えばCPU610により実行される。また、エッジサーバ300とクラウドサーバ200の動作は、例えば各サーバのCPU211もしくはGPU217により実行される。図12は、センサ500からのセンサデータをプリンタ600が受信し、エッジサーバ300がセンサデータから学習用データを生成し、クラウドサーバ200が学習用データを学習用データベース250に格納するまでの流れを示している。なお、センサ500は、プリンタ600内に構成されていてもよいし、プリンタ600の外部に構成されていてもよい。S1201において、センサ500はデータを逐次計測し、S1202においてセンサデータをプリンタ600に送信する。S1201及びS1202の処理は、随時実行される。
S1203において、プリンタ600は、センサデータを受信する。なお、プリンタ600は、S1203で受信したセンサデータをプリンタ600内のデータメモリ614に蓄積し、蓄積したデータに対して以降の処理をまとめて実行してもよい。S1204において、プリンタ600は、受信したセンサデータが装置の状態(装置の動作)が正常時のデータであるか否かを判定する。一つの判定方法として、プリンタ600は、プリンタ600内に格納された動作ログを参照することによって、受信したセンサデータが装置の状態が正常時のデータであるか否かを判定してもよい。例えば、センサデータが計測された日時においてセンサ500やプリンタ600にエラーが発生していたか否か、あるいは印刷結果に異常があったかを確認し、エラーや異常が発生していなければ正常時のデータと判定してもよい。
また、一つの判定方法として、プリンタ600は、複数のセンサ500による異常計測結果を用いることによって、受信したセンサデータが正常時のデータであるか否かを判定してもよい。例えば、火災報知器や漏電検知器、地震感知器といったセンサによって異常を検知した場合に、プリンタ600に異常発生を通知するようにしておく。そして、プリンタ600内に保持された異常発生時刻とセンサデータが計測された日時とを比較して、その計測日時において異常が発生したか否かを判定してもよい。
また、一つの判定方法として、過去に計測されたセンサデータに正常時/異常時のデータか否かを示すラベルを手動で設定するようにし、そのラベルを参照することによって、受信したセンサデータが正常時のデータであるか否かを判定してもよい。上記の判定方法は一例であって、他の判定方法が用いられてもよい。S1205において、プリンタ600は、エッジサーバ300にセンサデータを送信する。
S1211において、エッジサーバ300は、プリンタ600からの正常時のセンサデータを受信し、その後、S1212において、エッジサーバ300は、データ加工処理を行う。データ加工処理として、エッジサーバ300は、受信したセンサデータを、入力データXと教師データTの学習用データの形式に変換する。その際、必要に応じて、標準化、正規化、主成分分析等の次元削減処理、その他の特徴量算出のための処理を行ってもよい。なお、S1212のデータ加工処理は、プリンタ600がセンサデータを送信する前に行われてもよいし、クラウドサーバ200がデータを受信した後に行われてもよい。S1213において、エッジサーバ300は、クラウドサーバ200に学習用データを送信する。S1221において、クラウドサーバ200は、学習用データを受信し、その後、S1222において、クラウドサーバ200の学習用データベース250内に受信した学習用データを格納する。
以上のように、デバイス400から、装置の状態が正常時のデータが学習用データとしてクラウドサーバ200に送信され、学習用データベース250内に蓄積される。
図13は、学習時における処理システム100の処理を示すフローチャートである。図13は、エッジサーバ300が学習モデル更新判定を行い、学習モデルを更新すると判定された場合に、クラウドサーバ200が学習を行って学習モデルをエッジサーバ300に配信し、エッジサーバ300が学習済モデルを保持するまでの流れを示している。なお、エッジサーバ300とクラウドサーバ200の動作は、例えば、各サーバのCPU211もしくはGPU217により実行される。
S1301において、エッジサーバ300は、後述する学習モデル更新判定を行う。学習モデルを更新すると判定された場合、S1302において、エッジサーバ300は、クラウドサーバ200に学習依頼を送信する。
S1311において、クラウドサーバ200は、学習依頼を受信し、S1312において学習用データベース250から学習用データを取得する。その後、S1313において、クラウドサーバ200は、学習モデル253を用いて学習処理を実行し、学習の完了後、S1314において、学習結果を蓄積する。なお、学習結果には、学習済モデルの他、異常判定閾値830、後述する学習モデル基準精度1500が含まれる。S1315において、クラウドサーバ200は、エッジサーバ300に学習済モデルを配信する。S1303において、エッジサーバ300は、クラウドサーバ200から受信した学習済モデルを学習済モデル353として保持する。
図13は、エッジサーバ300から学習依頼が送信される構成を示しているが、そのような構成に限られない。例えば、エッジサーバ300を介さずに、プリンタ600等、デバイス400からクラウドサーバ200に学習依頼が送信されるようにしても良い。また、例えば、プリンタ600で推論および学習が行われる場合には、図13のエッジサーバ300およびクラウドサーバ200の処理をプリンタ600内で実行するように構成してもよい。
図12及び図13で示すように、本実施形態では、プリンタ600から送信されたセンサデータを学習した学習済モデルが配信される構成を想定している。しかしながら、プリンタ600から送信されたセンサデータと異なるデータを学習した学習済モデルが配信されるようにしてもよい。例えば、プリンタ600と異なる他のプリンタから送信されたデータを学習して作成された学習済モデルを配信し、その学習済モデルがプリンタ600の推論に用いられてもよい。また、他のプリンタから送信されたセンサデータを学習して作成された学習済モデルをプリンタ600から送信されたセンサデータを用いて追加で学習させた学習済モデルを作成し、プリンタ600の推論に用いるようにしてもよい。また、エッジサーバ300は、S1313の学習処理の予約を行うようにしてもよい。例えば、S1302の学習依頼において、エッジサーバ300は、学習処理を実施する日時を指定して、クラウドサーバ200に学習依頼を送信するようにしてもよい。
図14は、推論時における処理システム100の処理を示すフローチャートである。図14は、センサ500からのセンサデータをプリンタ600が受信し、プリンタ600から送信されたセンサデータによって、エッジサーバ300が推論を行って装置の状態の正常/異常判定を行う流れを示している。なお、プリンタ600の動作は、例えばCPU610により実行される。また、エッジサーバ300とクラウドサーバ200の動作は、例えば各サーバのCPU211もしくはGPU217により実行される。
図14のS1201~S1203の処理は、図12における説明と同じであるので、それらの説明を省略する。S1401において、プリンタ600は、エッジサーバ300に推論処理の依頼を送信する。推論処理の依頼には、推論用データとしてのセンサデータの送信が含まれる。S1402において、エッジサーバ300は、推論依頼を受信し、S1403において、データ加工処理を行い、S1404において、推論処理を行う。なお、S1403のデータ加工処理は、図12のS1212のデータ加工処理における説明と同じであるので、その説明を省略する。また、S1404の推論処理では、図11(a)もしくは図11(b)の処理が行われる。
S1405において、エッジサーバ300は、装置の状態の正常/異常判定を行う。S1405の正常/異常判定は、図10で説明した構造に基づいて行われる。正常/異常判定に必要なセンサデータの予測値に対応する同時刻カウントのセンサデータの実測値は、S1401の時点もしくはそれ以降で送信されるようにしてもよい。S1405で判定値961が「正常」であると判定された場合、後述する学習モデル更新判定のために、S1406において、エッジサーバ300は、予測値と実測値をエッジサーバ300内に蓄積する。そして、S1407において、エッジサーバ300は、判定値961をプリンタ600に送信する。S1405で判定値961が「異常」であると判定された場合、S1407において判定値961をプリンタ600に送信する。
S1408において、プリンタ600は、判定値961を受信し、S1409において判定値961が「異常」であるか否かを判定する。「異常」であると判定された場合、S1410において、プリンタ600は、装置の異常が予測された旨を通知する処理を行う。異常の通知において、プリンタ600の操作パネル605上で、推論実行時の日時、推論実行時に使用したセンサデータの計測日時、センサ名称、判定値961が「異常」を示した累計回数、等の情報を表示するようにしてもよい。また、操作パネル605上での表示内容と同様の内容をクライアント端末401に通知するようにしてもよい。また、S1409の判定後に、推論を再度実行するか、推論を停止するかを判定してもよい。その場合、推論を再度実行すると判定した場合に、S1401からの処理を繰り返すようにしてもよい。
図15は、図13のS1301の学習モデル更新判定の処理を示すフローチャートである。本実施形態では、学習モデル基準精度1500として、推論回数N、評価指標および評価指標値(基準値)が定義されている。ここで、評価指標としては、例えば二乗平均平方根誤差(RMSE:Root Mean Square Error)が用いられる。即ち、学習モデル基準精度1500として、例えば、「1000データの推論時の評価指標(RMSE)が0.6以下」として定義される。本実施形態では、正常時のデータに基づく学習済モデルの精度が学習モデル基準精度1500の精度を下回った時点で学習済モデルを更新する。なお、図15の処理は、例えば、エッジサーバ300のGPU217により実行される。
S1501において、GPU217は、学習モデル更新判定のために実行される推論回数をリセットする。S1501のリセット処理は、図14のS1402で推論依頼を受信した場合に行われてもよい。
S1502において、GPU217は、正常/異常判定を行う。S1502の正常/異常判定処理は、図14のS1404の処理に対応する。そして、S1503において、GPU217は、判定値961が「正常」であるか「異常」であるかを判定する。判定値961が「正常」であると判定された場合、学習モデル更新判定の精度評価対象とするため、S1504に進む。一方、判定値961が「異常」であると判定された場合、学習モデル更新判定の精度評価対象とせず、S1502からの処理を繰り返す。
S1504において、GPU217は、推論回数に1を加算する。S1505において、GPU217は、学習モデル更新判定における評価指標値を計算するために、予測値と実測値を蓄積する。S1505の予測値と実測値の蓄積は、図14のS1406の処理に対応する。S1506において、GPU217は、学習モデル基準精度1500で定義したNデータ数分の推論が行われたか否かを判定する。学習モデル基準精度1500で定義したデータ数分の推論が行われていないと判定された場合、S1502からの処理を繰り返す。Nデータ数分の推論回数が行われたと判定された場合、S1507において、GPU217は、評価指標値(RMSE)の算出を行う。
S1508において、GPU217は、算出した評価指標値が学習モデル基準精度1500で定義された評価指標値Yより大きいか否かを判定する。ここで、算出した評価指標値が評価指標値Yより大きい、即ち、使用している学習済モデルの予測精度が学習モデル基準精度よりも低精度であると判定された場合、S1509において、GPU217は、学習モデルの更新を行う。S1509では、図13のS1302、S1311~S1315までの一連の処理もしくはその一部の処理が行われる。一方、算出した評価指標値が評価指標値Y以下である、即ち、使用している学習済モデルの予測精度が学習モデル基準精度1500を満たしていると判定された場合、S1501からの処理を繰り返す。
S1510において、GPU217は、異常判定閾値830および学習モデル基準精度1500を更新する。例えば、異常判定閾値830は、S1509における図13のS1315で配信された、学習時のバリデーションデータのずれ量Lの最大値、最小値、その他の統計値を用いて更新されてもよい。また、例えば、学習モデル基準精度1500の推論回数および評価指標値は、学習時の予測精度の評価回数、ずれ量Lの統計値に基づいて更新されてもよい。本実施形態では、図15の処理は、エッジサーバ300内で実行されるとして説明したが、プリンタ600とクラウドサーバ200のいずれか、もしくは両方において実行されるようにしてもよい。
以上のように、本実施形態によれば、推論結果により装置動作が正常と判定される場合の予測精度を所定の評価指標値が表す基準精度と比較することで、学習済モデルを適切なタイミングで更新することができる。即ち、装置動作が正常と判定されている状態であり且つ基準精度より低下したタイミングで、学習済モデルを更新することができる。
[第2実施形態]
以下、第1実施形態と異なる点について第2実施形態を説明する。第1実施形態では、学習モデル基準精度1500に定義された推論回数Nおよび評価指標値に基づいて、学習モデル更新判定を行う構成を説明した。本実施形態では、評価指標値の統計値に基づいて、学習モデル更新判定を行う。
図16は、本実施形態における、図13のS1301の学習モデル更新判定の処理を示すフローチャートである。本実施形態では、学習モデル基準精度1600として、評価指標および評価指標値の統計値(基準値)の種類や計算方法が定義されている。ここで、評価指標としては、例えば二乗平均平方根誤差(RMSE)が用いられる。即ち、学習モデル基準精度1600として、例えば、「評価指標(RMSE)の平均値が0.6以下」のように定義される。本実施形態では、装置動作が正常と判定される場合の学習済モデルの予測精度が学習モデル基準精度1600の精度を下回った時点で学習モデルを更新する。なお、図16の処理は、例えば、エッジサーバ300のGPU217により実行される。
S1601において、GPU217は、正常/異常判定を行う。S1601の正常/異常判定処理は、図14のS1404の処理に対応する。そして、S1602において、GPU217は、判定値961が「正常」であるか「異常」であるかを判定する。判定値961が「正常」であると判定された場合、学習モデル更新判定の精度評価対象とするため、S1603に進む。一方、判定値961が「異常」であると判定された場合、学習モデル更新判定の精度評価対象とせず、S1601からの処理を繰り返す。
S1603において、GPU217は、学習モデル更新判定における評価指標値を計算するために、予測値と実測値を蓄積する。S1603の予測値と実測値の蓄積は、図14のS1406の処理に対応する。S1604において、GPU217は、評価指標値(RMSE)の算出を行う。ここでの評価指標値の算出は、例えば、直近の1000サンプルのデータを対象として評価指標値を算出して記憶領域に保持する。S1605において、GPU217は、現在までに保持された評価指標値の統計値を算出する。ここでの統計値は、例えば、最大値、最小値、平均値、中央値等の統計量である。なお、算出方法が定義可能であれば、他の統計量が用いられてもよい。
S1606において、GPU217は、評価指標値の統計値が、学習モデル基準精度1600に定義された統計値Yより大きいか否かを判定する。ここで、算出した評価指標値の統計値が評価指標値Yより大きい、即ち、使用している学習済モデルの予測精度が学習モデル基準精度1601よりも低精度であると判定された場合、S1607において、GPU217は、学習モデルの更新を行う。S1607では、図13のS1302、S1311~S1315までの一連の処理もしくはその一部の処理が行われる。一方、算出した評価指標値が評価指標値Y以下である、即ち、使用している学習済モデルの予測精度が学習モデル基準精度1600を満たしていると判定された場合、S1601からの処理を繰り返す。
S1608において、GPU217は、異常判定閾値830および学習モデル基準精度1600を更新する。例えば、異常判定閾値830は、S1607における図13のS1315で配信された、学習時のバリデーションデータのずれ量Lの最大値、最小値、その他の統計値を用いて更新されてもよい。また、例えば、学習モデル基準精度1600の評価指標値の統計値は、学習時のずれ量Lの統計値に基づいて更新されてもよい。本実施形態では、図16の処理は、エッジサーバ300内で実行されるとして説明したが、プリンタ600とクラウドサーバ200のいずれか、もしくは両方において実行されるようにしてもよい。
以上のように、本実施形態によれば、推論結果により装置動作が正常と判定される場合の予測精度を所定の評価指標値の統計値が表す基準精度と比較することで、学習済モデルを適切なタイミングで更新することができる。即ち、装置動作が正常と判定されている状態であり且つ基準精度より低下したタイミングで、学習済モデルを更新することができる。
[第3実施形態]
以下、第1及び第2実施形態と異なる点について第3実施形態を説明する。第1実施形態では、学習モデル基準精度1500に定義された推論回数Nおよび評価指標値に基づいて、学習モデル更新判定を行う構成を説明した。第2実施形態では、学習モデル基準精度1600に定義された評価指標値の統計値に基づいて、学習モデル更新判定を行う構成を説明した。本実施形態では、評価指標値の推移の予測により学習モデル更新時期を通知可能な構成を説明する。
図17は、累計推論回数と評価指標値の関係を示す図である。なお、評価指標値の算出は、第1及び第2実施形態と同様、判定値961が「正常」であると判定された推論結果に対してのみ行う。評価指標値(実測値)1700は、累積推論回数に対する評価指標値の実測値の推移である。評価指標値(予測値)1701は、評価指標値(実測値)1700から予測される将来の評価指標値の予測値の推移である。例えば、評価指標値(予測値)1701は、評価指標値(実測値)1700の推移結果から、回帰モデルにより導くことが可能である。回帰モデルとしては、例えば、線形回帰モデル、ガウス過程回帰モデルなどが用いられる。
学習モデル基準精度の評価指標値1702は、学習モデル基準精度で定義された評価指標値を表し、例えば、学習モデル基準精度1500の評価指標値Yである。つまり、学習モデル基準精度の評価指標値1702以下であれば、学習モデル基準精度を満たすことを示している。例えば、図17の累計推論回数N回までの評価指標値(実測値)1700は、学習モデル基準精度を満たしていることを示している。一方、学習モデル更新推論回数1703は、評価指標値の予測により、学習モデル基準精度の評価指標値1702より上回る、即ち、学習モデル基準精度以下の精度になると予想される累積推論回数を示している。
以上のように、本実施形態では、評価指標値(実測値)1700の推移から、回帰モデルにより評価指標値(予測値)1701を導くことで、学習モデル基準精度の評価指標値1702を上回る時点に対応する学習モデル更新推論回数1703を予測する。その結果、学習モデルの更新予定のタイミングをユーザに通知することが可能となる。
エッジサーバ300のGPU217は、評価指標値(予測値)1701を導出可能とするために、所定回数の推論が実行された時点で、その時点での累計推論回数と評価指標値とを対応づけて記憶する。例えば、第1実施形態では、図15の推論回数N=1000である場合には、1000回ごとの評価指標値(実測値)1700と、累計推論回数とを所定の記憶領域に記憶するようにしてもよい。そして、GPU217は、累計推論回数と評価指標値(実測値)1700のデータセットが所定量蓄積された場合に、累計推論回数に対する評価指標値(実測値)1700の推移に基づいて、評価指標値(予測値)1701を導出する。そして、GPU217は、導出された評価指標値(予測値)1701が学習モデル基準精度の評価指標値1702を上回る推論回数、即ち、学習モデル更新推論回数1703を特定する。その際、学習モデル基準精度の評価指標値1702としては、最新の評価指標値が用いられてもよい。学習モデル更新推論回数1703が特定されると、例えばエッジサーバ300でS1404の推論処理が行われる間隔に基づいて、学習モデル更新推論回数1703に達する時点が特定可能となる。GPU217は、その特定した時点、例えば日付を含む通知画面を表示部に表示させる表示制御を実行してもよい。
図18は、学習モデル更新予定を通知するための通知画面1800の一例を示す図である。通知画面1800の表示1801には、現在の学習モデルの精度が示されている。表示1801の「累計推論回数:1000回」は、図17の累計推論回数N回に対応し、「評価指標値:0.55」は、図17の累計推論回数N回のときの評価指標値に対応する。また、通知画面1800の表示1802には、学習モデルの更新予定のタイミングが示されている。表示1802の「YYYY/MM/DD」は、図17の学習モデル更新推論回数1703の時点(年月日)に対応する。
以上のように、本実施形態によれば、ユーザに対して、現在の学習済モデルの予測精度と、学習済モデルの更新予定のタイミングとを通知することができる。なお、図18の通知画面は、デバイス400の表示部に表示させるようにしてもよいし、エッジサーバ300やクラウドサーバ200の表示部に表示させるようにしてもよい。また、本実施形態では、累積推論回数に対する評価指標値(予測値)1701を回帰的に導く予測方法を説明したが、累積推論回数ではなく、他の入力変数に対する多変量回帰モデルを作成してもよい。例えば、推論時の入力データXの特徴量および統計量に対する評価指標値(予測値)1701を予測するようなモデルを作成してもよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。