(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
【0016】
[第1の実施形態]
本発明の第1の実施形態について説明する。
(システムの概要)
まず、本実施形態に係る自己診断システムの概要について説明する。
図1は、本実施形態に係る自己診断システム1の概要を説明するシステム図である。図示する自己診断システム1は、電子機器10と、電子機器10と通信接続されるクラウド(クラウドコンピューティング)上のストレージであるデータベース20と、データベース20に蓄積されるデータに基づいて機械学習した学習済みモデルを提供する学習装置30(サーバ装置)とを備えている。電子機器10は、例えば、ラップトップ型のパーソナルコンピュータであるが、デスクトップ型やタブレット型などのパーソナルコンピュータであってもよい。電子機器10は、自身のパフォーマンスの低下などの異常(問題)を検出し、更にその原因を検出する。
【0017】
電子機器10は、電子機器10自身のシステムの状態に関する状態情報(Rawデータ)を収集し、収集したシステムの状態情報に基づいて、自身の異常を検出する。以下では特に明示しない限り、システムとは、電子機器10が備えるハードウェアやシステムファームウェアなどを用いたシステムのことを指し、自己診断システム1とは異なる概念とする。システムの状態情報には、例えば、CPU(Central Processing Unit)に関する情報(CPU使用率、CPUの温度など)、GPU(Graphic Processing Unit)に関する情報(GPU使用率など)、システムの動作状態に基づく情報(BSOD:Blue Screen of Death、ハングアップなど)、バッテリに関する情報(放電カーブ、満充電、残量少、充電開始時間、放電開始時間など)、ファンの回転速度の情報などが含まれる。電子機器10の異常検出部112は、システムの状態情報の中から異常値を検出し、電子機器10の異常を検出する。電子機器10の異常とは、例えば、「バッテリ寿命が短い」、「パフォーマンス低下(処理が遅い)」、「頻繁にシステムがハングアップする」などのように電子機器10で問題や故障などが生じている状況や状態が含まれる。
【0018】
また、電子機器10は、異常が検出された場合に、当該異常を分類するための分類情報(Rawデータ)を収集し、検出された異常を分類情報に基づいて分類(クラスタリング)することにより異常の原因を検出する。異常を分類するための分類情報には、例えば、製品名、動作中のアプリケーション(以下、単にアプリと称する)のリスト、サービスのリスト、ドライバのリストや、BIOS(Basic Input Output System)のバージョンの情報などが含まれる。電子機器10の原因検出部114は、異常検出部112により検出された異常を、収集した分類情報を用いて分類(クラスタリング)することにより異常の原因を検出する。異常の原因としては、例えば、「アプリAのパフォーマンスが非常に低い」、「アプリEのパフォーマンスに重篤な問題がある」といったように、異常の原因となっているアプリ、サービス、ドライバなどが原因として特定される。
【0019】
ここで、異常検出部112及び原因検出部114は、それぞれAI(Artificial Intelligence)エンジンを備えている。異常検出部112は、システムの状態情報に基づくデータセットを用いて機械学習された学習済みモデル(以下、「異常検出モデル」と称する)を用いて異常を検出するローカルAIとして機能する。原因検出部114は、検出された異常内容を示す情報と分類情報とに基づいて機械学習された学習済みモデル(以下、「原因検出モデル」と称する)を用いて異常の原因を検出するローカルAIとして機能する。
【0020】
このように、電子機器10は、異常を検出するためのAI(異常検出部112)と異常の原因を検出するためのAI(原因検出部114)との2つのAIを用いて自己診断を行い、異常の原因を検出する。電子機器10は、通常は異常を検出するためのシステムの状態情報を収集し、異常の原因を検出するための分類情報については収集にかなりの処理負荷がかかるため、異常検出部112により異常が検出された場合のみ収集する。これにより、電子機器10は、正常時には自己診断処理に要する負荷を抑制することができるため、バッテリ寿命への影響を低減できるとともに、通常の処理を妨げないようにすることができる。
【0021】
なお、原因検出部114は、検出された異常の分類ができなかった場合、分類できない異常データ(未分類の異常データ)を、データ提供部115を介してクラウド上のデータベース20(DB)へ送信する。データベース20は、電子機器10から送信された未分類の異常データを格納し蓄積する。なお、データベース20は、複数のユーザのそれぞれが使用する複数の電子機器10から送信された未分類の異常データを格納し蓄積してもよい。未分類の異常データには、異常の内容と収集した分類情報とが含まれる。学習装置30は、データベース20に格納されている未分類の異常データに対してクラスタ分析及びデータ分析により機械学習を行うことにより原因検出モデルを生成または更新し、原因検出モデルとその異常の解決策を提供する。学習装置30は、予め設定されたタイミングまたは原因検出モデルを更新したタイミングなどで、電子機器10へ原因検出モデルを送信し、電子機器10で使用する原因検出モデルを更新する。これにより、分類できなかった異常と同様の異常が次に生じた場合には分離できるようになり原因を検出可能な異常の症状が増える。
【0022】
また、電子機器10は、原因検出部114による検出結果に基づく情報を表示部12に表示することにより、異常に関する情報をユーザに通知する。電子機器10は、異常に関する情報として、例えば、異常の内容及び異常の原因に関する情報(例えば、「アプリAがパフォーマンスの問題を引き起こしています」)を表示する。また、電子機器10は、異常に関する情報として、その異常の解決策や対応策を示す情報を表示してもよい。図示する「YES」が表示されているボタンB121は、異常に関する詳細情報表示するための操作子として表示されている。ボタンB121に対する操作がされると、電子機器10は、異常の内容や原因の詳細を示す情報、異常の原因に対する対処方法(解決策や対応策など)を示す情報などを表示してもよい。例えば、対処方法としては、異常の原因となっているアプリのアップデートまたは再インストールや、システムの再起動などをユーザに依頼する内容が表示される。
【0023】
次に、電子機器10の構成について詳しく説明する。
(電子機器のハードウェア構成)
図2は、本実施形態に係る電子機器10のハードウェアの構成例を示す概略ブロック図である。電子機器10は、通信部11、表示部12、スピーカ13、入力部14、電源部15、温度センサ17、ファン16、EC(Embedded Controller)18、記憶部19、及びシステム処理部100を含んで構成される。システム処理部100は、CPU101、GPU102、メモリコントローラ103、I/O(Input−Output)コントローラ104、及びシステムメモリ105を含んで構成され、オペレーティングシステム(OS:Operating System)によるシステム処理によって、OS上で各種アプリのプログラムの処理が実行可能である。CPU101とGPU102をプロセッサと総称することがある。
【0024】
通信部11は、無線または有線による通信ネットワークを介して他の機器と通信可能に接続し、各種のデータの送信および受信を行う。例えば、通信部11は、イーサネット(登録商標)等の有線LANインターフェースやWi−Fi(登録商標)等の無線LANインターフェース等を含んで構成されている。なお、通信部11は、USB(Universal Serial Bus)インターフェースやBluetooth(登録商標)インターフェースを含んで構成されてもよい。
【0025】
表示部12は、映像、画像、テキスト等を表示するディスプレイであり、例えば、液晶ディスプレイパネル、有機ELディスプレイパネルなどを含んで構成される。スピーカ13は、電子音や音声などを出力する。
【0026】
入力部14は、ユーザの入力を受け付ける入力部であり、例えばキーボードやタッチパッドなどの入力デバイスを含んで構成されている。入力部14は、キーボード、タッチパッドなどに対する操作を受け付けることに応じて、操作内容を示す操作信号をEC18へ出力する。なお、入力部14は、表示部12の表示画面に対する操作を受け付けるタッチパネルを含んで構成されてもよい。
【0027】
電源部15は、電子機器10の各部の動作状態に応じて各部へ電源系統を介して電力を供給する。電源部15は、DC(Direct Current)/DCコンバータを備える。DC/DCコンバータは、AC(Alternate Current)/DCアダプタ又はバッテリ151から供給される直流電力の電圧を、各部で要求される電圧に変換する。DC/DCコンバータで電圧が変換された電力が各電源系統を介して各部へ供給される。例えば、電源部15は、EC18から入力される各部の動作状態に応じて制御信号に基づいて各電源系統を介して各部に電力を供給する。
【0028】
温度センサ17は、電子機器10の筐体内部に一又は複数設けられ、環境温度を検出する。例えば、温度センサ17は、CPU101の近傍やバッテリ151の近傍など温度が上昇しやすい箇所に設けられている。
ファン16は、電子機器10の内部の上昇した温度を低下させるための冷却用として設けられている。
【0029】
EC18は、CPU101の処理に関わらず、各種デバイス(周辺装置やセンサ等)の監視及び制御を行うマイクロコンピュータが組み込まれた組み込みコントローラであり、バッテリの管理、電源管理、キーボードコントローラなどの機能を有する。例えば、EC18は、入力部14と、電源部15と、ファン16と、温度センサ17とに接続されている。EC18は、入力部14から操作信号を取得する。また、EC18は、不図示の電源ボタンに対する操作に応じて起動信号を生成する。また、EC18は、各部への給電のON/OFFの指示を電源部15に対して行うとともに、バッテリに関する情報(放電カーブ、満充電、残量少、充電開始時間、放電開始時間など)を電源部15から取得する。また、EC18は、温度センサ17の検出結果を取得し、検出結果(温度)に応じて、ファン16のON/OFF、およびON時の回転速度などを制御する。EC18とCPU101とは通信を行うことにより、各種情報や各動作状態などを共有する。
【0030】
記憶部19は、HDD(Hard Disk Drive)、ROM(Read Only Memory)などの記憶媒体を含んで構成される。記憶部19には、BIOS、OS、デバイスドライバ、アプリなどの各種のプログラムや、その他、プログラムの処理に必要なデータ、プログラムの処理により取得した各種のデータなどが記憶される。
【0031】
CPU101は、BIOSやOSによるシステム処理により動作状態を制御する。システムの動作状態として少なくとも通常動作状態(パワーオン状態)と待機状態(アイドル状態)との間を遷移可能である。待機状態には、スタンバイ状態、スリープ状態、ハイバネーション状態およびパワーオフ状態が含まれる。
【0032】
スタンバイ状態は、プロセッサの処理能力を通常動作状態よりも低くし、動作中のシステムメモリ105の内容を保持しながら通信部11、表示部12、スピーカ13、及び記憶部19など周辺デバイスの消費電力を通常動作状態よりも少なくする動作状態である。
スリープ状態は、システムメモリ105とEC18とその配下にあるデバイス以外のデバイスへの給電を停止し、プロセッサによるプログラムの実行を伴わない動作モードである。
ハイバネーション状態は、スリープ状態においてプロセッサから即座にアクセス可能とする補助記憶装置にシステムメモリ105に記憶していた情報を全て退避させ、その後、システムメモリ105への給電をさらに停止するモードである。従って、ハイバネーション状態から起動処理を開始する際、CPU101は、補助記憶装置に退避された情報をシステムメモリ105に記憶する。
パワーオフ状態は、EC18とその配下にあるデバイス以外のデバイスへの給電を停止した状態である。
【0033】
例えば、CPU101は、動作状態が待機状態であって、EC18から起動信号が入力された場合、待機状態から通常動作状態に遷移させる。例えば、動作状態がスリープ状態、ハイバネーション状態またはパワーオフ状態であるとき、電源部15から電力の供給を受け、かつEC18から起動信号が入力されると、CPU101は、起動処理を開始する。CPU101は、起動処理において、システムメモリ105、記憶部19などの最小限のデバイスの検出と初期化を行う(プリブート)。CPU101は、記憶部19からBIOSをシステムメモリ105にロードし、通信部11、表示部12などその他のデバイスの検出と初期化を行う(ポスト処理)。初期化には、初期パラメータの設定などの処理が含まれる。なお、スリープ状態から通常動作状態への遷移(レジューム)においては、ポスト処理の一部が省略されることがある。CPU101は、起動処理が完了した後、OSによるシステム処理の実行を開始する(起動)。
【0034】
また、CPU101は、OSが起動した後、インストールされているアプリのプログラムを実行することにより、当該アプリの機能を実現する。例えば、
図1を参照して説明した自己診断処理は、当該自己診断を行うための自己診断アプリとして提供され、自己診断アプリのプログラムを実行することにより、その機能を実現する。
【0035】
GPU102は、CPU101の制御に基づいて画像処理を実行して表示データを生成する。GPU102は、生成した表示データを表示部12に出力する。なお、CPU101とGPU102は、一体化して1個のコアとして形成されてもよいし、個々のコアとして形成されたCPU101とGPU102の相互間で負荷が分担されてもよい。プロセッサの数は、1個に限られず、複数個であってもよい。
【0036】
メモリコントローラ103は、CPU101とGPU102によるシステムメモリ105、記憶部19などからのデータの読出し、書込みを制御する。
I/Oコントローラ104は、通信部11、表示部12、スピーカ13、及びEC18とのデータの入力または出力を制御する。
システムメモリ105は、CPU101が実行するプログラムの読み込み領域ならびに処理データを書き込む作業領域として用いられる。
【0037】
次に、電子機器10における自己診断処理に関する機能構成について説明する。
図3は、本実施形態に係る電子機器10の機能構成の一例を示すブロック図である。制御部110は、CPU101が自己診断アプリのプログラムを実行することにより実現する自己診断処理の機能構成を示している。制御部110は、第1取得部111と、異常検出部112と、第2取得部113と、原因検出部114と、データ提供部115と、検出結果出力部116とを備えている。また、自己診断処理に用いるデータを記憶する構成として、記憶部19は、第1情報記憶部191と、第2情報記憶部192と、第3情報記憶部193と、異常検出モデル記憶部194と、原因検出モデル記憶部195と、検出結果記憶部196とを備えている。
【0038】
第1取得部111は、電子機器10のシステムの状態に関する状態情報(第1情報の一例)を取得する。例えば、第1取得部111は、予め設定されたタイミングで、システムの状態情報を取得し、取得した情報を取得したタイミングを示す情報と関連付けて、第1情報記憶部191に記憶させる。前述したように、システムの状態情報には、プロセッサ(CPU101又はGPU102など)の使用率を示す情報、システムの動作状態に基づく情報、バッテリに関する情報、ファンの回転速度の情報などが含まれる。
【0039】
異常検出部112は、第1取得部111が取得したシステムの状態情報に基づいて異常を検出する。例えば、異常検出部112は、異常を検出するための学習済みモデルである異常検出モデルを用いて、第1取得部111が取得したシステムの状態情報に対応する異常を検出する。この異常検出モデルは、以前に電子機器10または他の電子機器で取得されたシステムの状態情報と、そのシステムの状態情報に対応する異常の有無に関する情報とに基づいて機械学習された学習済みモデルである。例えば、機械学習のアルゴリズムとしてOne Class SVM(Support Vector Machine)が用いられ、正常なシステムの状態情報を学習データとして機械学習させることで異常値との識別境界を決定し、当該識別境界を基準として異常の検出を行う。電子機器10は、この異常検出モデルを事前に外部のサーバ装置や記憶媒体を介して取得し、異常検出モデル記憶部194に記憶している。なお、この機械学習は、学習装置30で行われてもよい。また、異常検出部112は、異常を検出した場合、異常を示す異常情報(第2情報の一例)を生成し、第2情報記憶部192に記憶させる。例えば、異常検出部112は、検出した異常を、「バッテリ寿命が短い」、「パフォーマンス低下(処理が遅い)」、「頻繁にシステムがハングアップする」などのような予め設定されている異常内容にラベリングすることにより、異常情報を生成する。例えば、「パフォーマンス低下(処理が遅い)」は、プロセッサ(CPU101又はGPU102など)の使用率に基づいて検出された異常情報である。また、異常情報は、システム状態でカテゴリ分けされてもよい。例えば、「パフォーマンス低下(処理が遅い)」という異常が検出された場合、異常が起きているときのシステム状態として、CPU使用率が高い状態(High CPU usage)、CPU使用率が低い状態(Low CPU usage)、システムがアイドル状態(Idle)などにカテゴリ分けされてもよい。なお、CPU使用率が高いか低いかの判別の閾値は、予め設定された値、または式により算出される値である。
【0040】
第2取得部113は、異常検出部112により異常が検出された場合、第2情報記憶部192に記憶されている情報を参照して、異常検出部112により生成された異常情報を取得する。また、第2取得部113は、異常検出部112により異常が検出された場合、異常を分類するため分類情報(第3情報の一例)を取得する。分類情報には、電子機器10のシステムを用いて実行している処理に関する情報が含まれる。例えば前述したように、分類情報には、製品名、動作中のアプリのリスト、サービスのリスト、ドライバのリストや、BIOSのバージョンの情報などが含まれる。
【0041】
原因検出部114は、第2取得部113が取得した異常情報と分類情報とに基づいて異常の原因を検出する。例えば、原因検出部114は、第2取得部113が取得した異常情報と分類情報と、異常の原因を検出するための原因検出モデルとを用いて、異常をクラスタリングすることにより原因を検出する。この原因検出モデルは、以前に電子機器10または他の電子機器で生じた異常を、その異常が乗じたときの分類情報に基づいてクラスタ分析して分類することにより機械学習された学習済みモデルである。機械学習は、例えば、学習装置30で行われる。電子機器10は、学習装置30から原因検出モデルを取得し、原因検出モデル記憶部195に記憶している。
【0042】
ここで、学習装置30で行われる原因検出モデルの機械学習の例について説明する。学習装置30は、電子機器10または他の電子機器で収集された複数の異常についての異常情報と分類情報とに基づいて、各異常を分類情報を用いてクラスタリングする。
図4は、クラスタリングの結果の参考例を示す図である。図示する例は、「パフォーマンス低下(処理が遅い)」の異常を、分類情報のアプリのリストを用いてクラスタリングした結果を示している。横軸はアプリを示し、縦軸は異常の件数を示している。
図4(A)、(B)、(C)のそれぞれは、カテゴリが、CPU使用率が高い状態(High CPU usage)、CPU使用率が低い状態(Low CPU usage)、システムがアイドル状態(Idle)のそれぞれのときのクラスタリング結果の一例(イメージ)を示している。
【0043】
図4(A)に示す例では、アプリAに分類された件数が最も多いため、パフォーマンスの低下にアプリAが起因している可能性が高い。そのため、例えばアプリAが異常の原因として推定される。
図4(B)に示す例では、アプリA及びアプリDに分類された件数が最も多いため、パフォーマンスの低下にアプリAまたはアプリDが起因している可能性が高い。そのため、例えばアプリAまたはアプリDが異常の原因として推定される。
図4(C)に示す例では、アプリJに分類された件数が最も多いため、パフォーマンスの低下にアプリJが起因している可能性が高い。そのため、例えばアプリJが異常の原因として推定される。学習装置30は、上述したようなクラスタリング(クラスタ分析)を行うことにより、異常の内容及びカテゴリごとに機械学習を行い、異常の内容及びカテゴリごとに原因検出モデルを生成する。
【0044】
電子機器10の原因検出部114は、学習装置30で生成された原因検出モデルを取得し、異常検出部112により検出された異常の内容及びカテゴリごとに、それぞれ対応する原因検出モデルを用いて異常の原因を検出する。例えば、原因検出部114は、
図4(A)に示すクラスタリング結果に基づく原因検出モデルを用いて同様の異常をクラスタリングした場合、その異常がアプリAに分類され、アプリAが異常の原因として検出される。
【0045】
なお、原因検出部114は、第2取得部113が取得した異常情報と分類情報とに基づいて異常の原因を検出できない場合(即ち、異常を分類できない場合)、第2取得部113が取得した異常情報及び分類情報を未分類の異常データとして、通信接続される学習装置30で利用可能なデータベース20へデータ提供部115を介して送信する。
【0046】
学習装置30は、データベース20から未分類の異常データを取得し、取得した未分類の異常データに基づいて機械学習を行うことにより、原因検出モデルを更新する。例えば、データ分析を行う技術者は、未分類の異常データに対してデータ分析を行い、異常の有無の判断と、異常であると判断される場合には、その異常の原因、異常の解決策などをみつけ、学習装置30へ入力する。学習装置30は、入力された異常の原因、異常の解決策などのデータを、未分類の異常データをクラスタリングしたときの期待値として、機械学習し、原因検出モデルを更新する。また、原因検出部114は、送信した未分類の異常データに基づいて学習装置30で機械学習されて更新された原因検出モデルを取得する。以降、原因検出部114は、更新された原因検出モデルを用いて異常の原因を検出する。
【0047】
データ提供部115は、原因検出部114で異常の原因を検出できなかった異常についての異常情報及び分類情報を通信部11を介してデータベース20へ送信する。
【0048】
検出結果出力部116は、原因検出部114による検出結果に基づく情報を出力する。検出結果に基づく情報とは、異常の原因を示す情報、または異常の原因に対する対処方法を示す情報である。例えば、検出結果出力部116は、原因検出部114による検出結果に基づいて、異常の原因を示す情報を表示部12に表示させる。また、検出結果出力部116は、原因検出部114による検出結果に基づいて、異常の原因に対する対処方法を示す情報を表示部12に表示させてもよい。なお、出力方法としては、表示部12への」表示に代えて、または加えてスピーカ13から音声として出力させてもよい。また、検出結果出力部116は、検出履歴情報として、検出結果に基づく情報を検出結果記憶部196に記憶させる。
【0049】
次に、電子機器10において制御部110が実行する自己診断処理の動作について説明する。
図5は、本実施形態に係る自己診断処理の一例を示すフローチャートである。
(ステップS101)制御部110は、予め設定されたタイミングで、電子機器10のシステムの状態情報を取得し、取得した情報を取得したタイミングを示す情報と関連付けて、第1情報記憶部191に記憶させる。そして、ステップS103の処理に進む。
【0050】
(ステップS103)制御部110は、第1情報記憶部191に記憶された情報を参照し、取得したシステムの状態情報に基づいて異常を検出する。例えば、異常検出部112は、第2情報記憶部192に記憶されている異常検出モデルを用いて、第1取得部111が取得したシステムの状態情報に対応する異常を検出する。そして、ステップS105の処理に進む。
【0051】
(ステップS105)制御部110は、異常を検出したか否かを判定する。制御部110は、異常を検出したと判定した場合(YES)、ステップS107の処理に進む。一方、制御部110は、異常を検出しないと判定した場合(NO)、ステップS101の処理に戻る。
【0052】
(ステップS107)制御部110は、異常情報を生成し、第2情報記憶部192に記憶させる。例えば、制御部110は、検出した異常を予め設定されている異常内容にラベリングすることにより、異常情報を生成する。そして、ステップS109の処理に進む。
【0053】
(ステップS109)制御部110は、第2情報記憶部192に記憶されている情報を参照して、異常検出部112により生成された異常情報を取得する。また、第2取得部113は、異常検出部112により異常が検出された場合、異常を分類するため分類情報を取得する。そして、ステップS111の処理に進む。
【0054】
(ステップS111)制御部110は、取得した異常情報と分類情報と、原因検出モデル記憶部195に記憶されている原因検出モデルとを用いて、異常を分類(クラスタリング)することにより原因を検出する。そして、ステップS113の処理に進む。
【0055】
(ステップS113)制御部110は、異常の原因を検出したか否かを判定する。制御部110は、異常の原因を検出したと判定した場合(YES)、ステップS115の処理に進む。一方、制御部110は、異常の原因を検出できないと判定した場合(YES)、ステップS117の処理に進む。
【0056】
(ステップS115)制御部110は、異常の原因の検出結果に基づく情報を出力する。例えば、制御部110は、異常の原因を示す情報、または異常の原因に対する対処方法を示す情報などを表示部12に表示させる。
【0057】
(ステップS117)制御部110は、異常の原因を検出できなかった異常情報及び分類情報を、データ提供部115を介してクラウド上のデータベース20へ送信する。
【0058】
以上説明したように、本実施形態に係る電子機器10は、第1取得部111と、異常検出部112と、第2取得部113と、原因検出部114と、検出結果出力部116(出力部の一例)とを備えている。第1取得部111は、システムの状態に関する第1情報(例えば、システムの状態情報)を取得する。異常検出部112は、第1取得部111が取得したシステムの状態情報に基づいて異常を検出する。第2取得部113は、異常検出部112により異常が検出された場合、異常を示す第2情報(例えば、異常情報)と異常の原因を検出するための第3情報(例えば、分類情報)とを取得する。原因検出部114は、第2取得部113が取得した第2情報と第3情報とに基づいて異常の原因を検出する。検出結果出力部116は、原因検出部114による検出結果に基づく情報を出力する。
【0059】
これにより、電子機器10は、異常を検出したときのみ、異常の原因を検出するための情報を収集するため、異常検出処理に要する負荷を抑制することができ、バッテリ寿命への影響を低減できるとともに、通常の処理を妨げないようにすることができる。よって、電子機器10は、なるべく処理負荷をかけずに電子機器10の異常及び異常の原因を検出することができる。また、電子機器10は、電子機器10の異常及び異常の原因を自己診断し、ユーザに通知することができる。
【0060】
例えば、原因検出部114は、第2取得部113が取得した異常情報と分類情報とに基づいて異常を分類することにより、異常の原因を検出する。これにより、電子機器10は、電子機器10で生じた異常を原因ごとに分類することにより、異常の原因を検出することができる。
【0061】
例えば、第1取得部111が取得したシステムの状態情報にはCPU使用率を示す情報が含まれる。第2取得部113は、異常情報として、CPU使用率に基づいて検出された異常を示す情報を取得する。そして、原因検出部114は、CPU使用率に基づいて検出された異常を分類情報に基づいて分類することにより、異常の原因を検出する。これにより、電子機器10は、CPU使用率に基づいて異常を検出するとともに、その異常の原因を検出することができる。
【0062】
一例として、原因検出部114は、異常情報と分類情報とに基づいて異常を分類することにより機械学習された異常検出モデル(学習済みモデルの一例)を用いて、第2取得部113が取得した異常情報と分類情報とに対応する異常の原因を検出する。これにより、電子機器10は、AIを用いて容易且つ精度よく異常の原因を検出することができる。
【0063】
また、原因検出部114は、第2取得部113が取得した異常情報と分類情報とに基づいて異常の原因を検出できない場合、第2取得部113が取得した異常情報と分類情報とを、機械学習を行う学習装置30(サーバ装置の一例)で利用可能なデータベース20(記憶装置の一例)へ送信する。これにより、電子機器10は、使用した異常検出モデルで異常の原因を検出できなかった場合には、学習装置30へフィードバックするため、学習装置30で異常検出モデルを再学習及び更新が可能なようにすることができる。
【0064】
原因検出部114は、データベース20へ送信した異常情報と分類情報とに基づいて学習装置30で更新された異常検出モデルを用いて、異常の原因を検出する。これにより、電子機器10は、学習装置30で更新された異常検出モデルを用いることで、異常の原因の検出性能を高めることができる。
【0065】
ここで、分類情報は、CPU101(プロセッサの一例)を用いて実行している処理に関する情報(例えば、アプリのリスト、サービスのリスト、ドライバのリストや、BIOSのバージョンの情報)を含む。これにより、電子機器10は、異常の原因となっているアプリ、サービス、ドライバ、またはBIOSのバージョンなどを特定することができる。
【0066】
また、異常検出部112は、システムの状態情報と異常の有無に関する情報とに基づいて機械学習された学習済みモデルを用いて、第1取得部111が取得したシステムの状態情報に対応する異常を検出する。
【0067】
これにより、電子機器10は、AIを用いて容易且つ精度よく電子機器10で生じる異常を検出することができる。また、電子機器10は、異常を検出するAIと、異常の原因を検出するAIとの2つのAIを用いて自己診断することにより、異常及び異常の原因を検出するため、異常を検出したときのみ、異常の原因を検出するための情報の収集と異常の原因を検出するAIとを機能させることが可能である。よって、電子機器10は、仮に1つのAiで異常及び異常の原因を検出するように構成するよりも、正常時には異常を検出する処理のみで済むため処理負荷を抑制することができ、バッテリ寿命への影響を低減できるとともに、通常の処理を妨げないようにすることができる。
【0068】
検出結果出力部116は、原因検出部114による検出結果に基づいて、異常の原因を示す情報を出力する。これにより、電子機器10は、異常が生じた場合に異常の原因をユーザに通知することができる。
【0069】
例えば、検出結果出力部116は、原因検出部114による検出結果に基づいて、異常の原因に対する対処方法を示す情報を出力する。これにより、電子機器10は、異常が生じた場合に対処方法をユーザに通知することができる。
【0070】
[第2の実施形態]
次に、本発明の第2の実施形態について説明する。
本実施形態では、第1の実施形態で説明した異常検出処理の具体例について説明する。
【0071】
まず、第1取得部111がシステムの状態情報を取得するタイミングについて説明する。
図6は、本実施形態に係るシステムの状態情報の取得タイミングの一例を説明する図である。図示する例は、システムの状態情報の取得タイミングを示しており、縦軸がCPU使用率であり、横軸が時間軸である。第1取得部111は、時刻t1においてトリガイベントを検出すると、当該検出タイミングに応じてシステムの状態情報を取得する。
【0072】
トリガイベントは、例えば、自己診断アプリのアプリ画面(自己診断に関する各種の操作を受け付ける画面)において、「パフォーマンス測定」の開始を指示する操作ボタンへの操作がされたとき、ファン16が回転したとき、CPU使用率が10秒間に「100%/コア数」を超えたとき、或いは、所定の時間間隔(例えば、30分)ごと、などである。例えば、「パフォーマンス測定」の開始を指示する操作ボタンへの操作がされると、第1取得部111は、検出開始の指示に応じてシステムの状態情報の測定を開始し、所定の期間経過後に測定を終了する。
【0073】
第1取得部111は、時刻t1から所定の期間th(例えば30秒間)の間はCPU使用率の測定ために、自身はCPUを用いた処理は行わずに待機する。そして、時刻t1から所定の期間th(例えば30秒間)が経過した時刻t2において、第1取得部111は、再びシステムの状態情報を取得する。例えば、第1取得部111は、この時刻t1と時刻t2とで取得したシステムの状態情報の差分から各プロセスの各スレッドのCPU使用率などのデータを収集する。また、第1取得部111は、収集したシステムの状態情報をファイル(例えば、csvファイル)にして第1情報記憶部191に保存する。
【0074】
次に、第1取得部111が収集するシステムの状態情報の具体例について説明する。
図7〜9は、本実施形態に係るシステムの状態情報のデータ例を示す図である。システムの状態情報には、
図7に示すように、「パフォーマンス測定」の開始時及び終了時におけるシステムの状態として、CPU使用率(CpuUsage)、GPU使用率(GpuUsage)、メモリ使用率(MemoryUsage)、通信ネットワークの接続状態(NetworkConnected)などのデータが含まれる。
【0075】
また、
図8に示すように、パフォーマンス測定中(CPU使用率測定中)のプロセスの合計数(NumOfProcess)及びスレッドの合計数(NumOfThread)や、パフォーマンス測定中(CPU使用率測定中)のCPU使用率(CpuUsageCheck)、CPU使用率ごとのプロセスの数(ProCU00〜ProCU5660)、CPU使用率ごとのスレッドの数(ThreCU2125〜ProCU100)などのデータが含まれる。例えば、第1取得部111は、測定されたプロセスごとまたはスレッドごとのCPU使用率に基づいて、CPU使用率が0%、1〜5%、6〜10%、・・・、96〜99%、100%、といったように5%刻みで、それぞれのプロセスの数またはスレッドの数のデータを生成し第1情報記憶部191に保存する。なお、この
図8では、CPU使用率が5%刻みの例を示したが、これに限定されるものではなく、例えば10%刻みとしてもよい。
【0076】
また、
図9に示すように、プロセッサアーキテクチャ(ProcessorArchitecture)、論理プロセッサ数(NumOfProcessors)、メモリサイズ(MemorySize)、システムドライブのディスクサイズ(DiskSize)、OSのバージョン(OSBuildVersion)などのデータが含まれる。
【0077】
第1取得部111は、上述したシステムの状態情報の一部または全部を取得してもよい。なお、上述したシステムの状態情報は一例であって、第1取得部111は、これ以外の情報を取得してもよい。異常検出部112は、第1取得部111が取得したシステムの状態情報の一部または全部に基づいて、異常を検出する。
【0078】
ここで、本実施形態において異常検出部112が異常の検出に用いるデータセットの一例を説明する。例えば、単にCPU使用率が高いといっても高負荷のアプリケーションの処理を正常に実行している場合もある。そこで、正常な処理と異常な処理とのそれぞれでスレッドごとのCPU使用率が実際にどのような傾向にあるかを調べる実験を行った。
図10は、スレッドごとのCPU使用率の実験結果の一例を示す図である。実験では、正常な処理としては、通常の作業中のときのスレッドごとのCPU使用率を測定した。また、異常な処理としては、CPU高負荷問題を持ったアプリケーションの実行中と、無限ループのバグを持ったアプリケーションの実行中とのそれぞれについて、スレッドごとのCPU使用率を測定した。この図では、横軸をCPU使用率、縦軸をスレッドの数として、正常な処理及び異常なし処理のそれぞれについて、どの位のCPU使用率のスレッドが多いかを表している。その結果、実際には、CPU使用率が1〜5%のスレッドの数が多い場合には正常な処理であり、異常な処理では、正常な処理のときに比較して、CPU使用率が10〜30%や90〜100%程度のスレッドの数が相対的に多くなる傾向が実験によりわかった。このように、正常な処理と異常な処理とでは、スレッドごとのCPU使用率に差があることがわかった。そこで、異常検出部112は、第1取得部111が取得したスレッドごとのCPU使用率に基づいて異常を検出する。一例として、異常検出部112は、CPU101を使用しているスレッドの合計数に対するCPU使用率が1〜5%であるスレッドの数の割合を入力のデータセットとして使用する。
【0079】
図11は、異常検出モデルで用いるデータセットを説明する図である。CPU使用率の測定中に、CPU101を使用していたスレッドの合計数に対するCPU使用率1〜5%のスレッド数の割合をThreCU0105Rとすると、
ThreCU0105R
=ThreCU0105×100/(NumOfThread−ThreCU00)
で表すことができる。
なお、前述したように、ThreCU00は、CPU使用率の測定中にCPU使用率が0%のスレッドの数である。ThreCU0105は、CPU使用率の測定中にCPU使用率が1〜5%のスレッドの数である。NumOfThreadは、CPU使用率の測定中に、実行されていたスレッドの合計数である。
【0080】
学習装置30は、上述したデータセットを用いて機械学習を行う異常検出モデルを生成する。例えば、学習装置30は、機械学習のアルゴリズムとしてOne Class SVMを用いて、正常なときのデータセットを学習データとして機械学習させることで異常値との識別境界を決定し、当該識別境界を基準として異常の検出が可能な異常検出モデルを生成する。異常検出部112は、学習装置30で機械学習された異常検出モデルを用いて、第1取得部111が取得したスレッドごとのCPU使用率に対応する異常を検出する。このように、異常検出部112は、スレッドごとのCPU使用率を用いて機械学習された異常検出モデルを用いて異常を検出することで、高負荷の処理の時も低負荷の処理のときも精度よく異常を検出することができる。
【0081】
また、前述したように、第1取得部111は、トリガイベントに応じて、システムの状態が予め設定された複数のそれぞれの状態となるタイミングで、システムの状態情報(例えば、スレッドごとのCPU使用率)を取得する。学習装置30は、各システムの状態によってカテゴリ分けされたカテゴリごと(上記タイミングごと)に、システムの状態情報に基づくデータセットを用いて異常検出モデルを生成してもよい。異常検出部112は、上記システムの状態のカテゴリ(上記タイミング)のそれぞれで第1取得部111が取得したスレッドごとのCPU使用率に対応する異常を、上記タイミングのそれぞれに対応する異常検出モデルを用いて検出する。
【0082】
図12は、システムの状態のカテゴリの例を示す図である。図示する例では、システムプロセスがCPUを使用しているとき、システムがアイドル状態のとき、システムがレジューム後の30秒以内、CPU使用率が低い状態、CPU使用率が高い状態、CPU使用率が0%の状態の6つのカテゴリに分けて、各カテゴリが示すシステムの状態のときに取得されたシステムの状態情報(例えば、スレッドごとのCPU使用率)に基づいて異常検出モデルが生成されてもよい。なお、図示するシステム状態のカテゴリは一例であって、他のシステム状態としてもよい。
【0083】
以上説明したように、本実施形態に係る電子機器10は、プログラムに基づいて処理を実行するCPU101(プロセッサの一例)と、第1取得部111(取得部の一例)と、異常検出部112とを備えている。第1取得部111は、CPU101が実行する処理におけるスレッドごとのCPU使用率を示す情報を取得する。異常検出部112は、第1取得部111が取得したスレッドごとのCPU使用率に基づいて異常を検出する。これにより、電子機器10は、単にCPU使用率によるのではなく、スレッドごとのCPU使用率に基づいて異常を検出することで、異常を精度よく検出することができる。
【0084】
異常検出部112は、スレッドごとのCPU使用率と異常の有無に関する情報とに基づいて機械学習された異常検出モデル(学習済みモデルの一例)を用いて、第1取得部111が取得したスレッドごとのCPU使用率に対応する異常を検出する。これにより、電子機器10は、AIを用いて異常を精度よく検出することができる。
【0085】
具体的には、異常検出部112は、CPU101を使用しているスレッドの合計数に対する特定のCPU使用率(例えば、CPU使用率1〜5%)であるスレッドの数の割合に基づいて機械学習された異常検出モデルを用いて、第1取得部111が取得したスレッドごとのCPU使用率に対応する異常を検出する。これにより、電子機器10は、AIを用いて異常を精度よく検出することができる。
【0086】
第1取得部111は、CPU101を含むシステムの状態が予め設定された複数のそれぞれの状態となるタイミングで、スレッドごとのCPU使用率を取得する。
異常検出部112は、上記タイミングのそれぞれで第1取得部111が取得したスレッドごとのCPU使用率に対応する異常を、上記タイミングのそれぞれに対応する異常検出モデルを用いて検出する。これにより、電子機器10は、システムの状態ごとの異常検出モデルを用いて、システムの状態ごとに取得されたスレッドごとのCPU使用率から異常を検出することにより、異常を精度よく検出することができる。
【0087】
プログラムに基づいて処理を実行するCPU101を備えた電子機器10の異常を検出するための異常検出モデルは、処理におけるスレッドごとのCPU使用率を示す情報と異常の有無に関する情報とに基づいて、異常を検出するようコンピュータを機能させるための学習済みモデルである。これにより、異常検出モデルは、スレッドごとのCPU使用率に基づいて、異常を精度よく検出することができる。
【0088】
なお、本実施形態では、CPU101を使用しているスレッドの合計数に対するCPU使用率1〜5%であるスレッドの数の割合をデータセットとして、異常検出モデルを生成する例を説明したが、CPU使用率1〜5%に限定されるものではない。例えば、CPU101を使用しているスレッドの合計数に対する任意の特定のCPU使用率であるスレッドの数の割合をデータセットとしてもよい。
【0089】
以上、図面を参照してこの発明の第1及び第2の実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。例えば、第1及び第2の実施形態で説明した構成は、任意に組み合わせてもよい。
【0090】
また、上記実施形態では、異常検出モデルの機械学習のアルゴリズムとしてOne Class SVMを用いる例を説明したが、これに限られるものではなく、他の機械学習のアルゴリズムが用いられてもよい。また、原因検出モデルの機械学習のアルゴリズムとしてクラスタリングを用いる例を説明したが、これに限られるものではなく、他の機械学習のアルゴリズムが用いられてもよい。
【0091】
また、上記実施形態では、システムの状態情報と学習済みモデルとを用いて異常の検出を行なう例を説明したが、これに限られるものではない。例えば、学習済みモデルを使用せずに、システムの状態情報の一部または全部と異常の有無(正常or異常)とが関連付けられたデータテーブルを用いて異常の検出を行なうように構成されてもよい。また、学習済みモデルを使用せずに、システムの状態情報に基づいて異常を検出するアルゴリズムを具現化したプログラムを用いて異常の検出を行なうように構成されてもよい。また、同様に異常の原因の検出についても、学習済みモデルを使用せずに、異常情報の一部または全部と原因の一部または全部とが関連付けられたデータテーブル、または異常情報と分類情報とに基づいて異常の原因を検出するアルゴリズムを具現化したプログラムを用いて異常の検出を行なうように構成されてもよい。
【0092】
また、上記実施形態では、システム処理部100と独立に動作するEC18は、センサハブ、チップセット、などのいずれの処理部であってもよく、EC18以外の処理部がEC18に代えて上述の処理を実行してもよい。また、システム処理部100とEC18とは、一体化された集積回路で構成されてもよい。
【0093】
なお、上述した電子機器10は、内部にコンピュータシステムを有している。そして、上述した電子機器10が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述した電子機器10が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD−ROM等の非一過性の記録媒体であってもよい。
【0094】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に電子機器10が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0095】
また、上述した実施形態における電子機器10が備える各機能の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0096】
また、上記実施形態の電子機器10は、パーソナルコンピュータに限られるものではなく、スマートフォンなどの携帯型の端末装置であってもよいし、ゲーム装置、家庭用電気製品、業務用電気製品など各種の電子機器に適用できる。