(57)【要約】【課題】識別器の異常検知の能力低下を抑制することを課題とする。【解決手段】異常検出装置は、画像データを生成する生成器が、画像データの真偽を識別する識別器の識別誤差を最大化するように学習を実行するとともに、識別器が、識別誤差を最小化するように学習を実行する。異常検出装置は、学習の実行途中において、予め設定された条件で、学習途中の生成器の状態を保存し、保存された学習途中の識別器の状態を用いて、識別器の再学習を実行する。【選択図】図１０
2020123096.tif 000002
【特許請求の範囲】
【請求項１】
画像データを生成する生成器と、
前記画像データの真偽を識別する識別器と、
前記生成器が前記識別器の識別誤差を最大化するように学習を実行するとともに、前記識別器が識別誤差を最小化するように学習を実行する学習部と、
前記学習の実行途中において、予め設定された条件で、学習途中の前記生成器の状態を保存する保存部と、
保存された前記学習途中の識別器の状態を用いて、前記識別器の再学習を実行する再学習部と
を有することを特徴とする学習装置。
【請求項２】
前記保存部は、前記識別器の損失が閾値以上になった後、再び前記閾値未満となったときの前記生成器の状態を保存することを特徴とする請求項１に記載の学習装置。
【請求項３】
前記識別器は、第１の識別器と、前記第１の識別器よりも学習速度が速い第２の識別器とを含み、
前記学習部は、前記第１の識別器の識別誤差を最大化するように前記生成器を学習し、前記第１の識別器の前記識別誤差が最小化するように前記第１の識別器を学習し、前記第２の識別器の前記識別誤差が最小化するように前記第２の識別器を学習し、
前記保存部は、前記第２の識別器の損失が増加した後に低下し始めるとともに、前記第１の識別器の損失が閾値以上のときの前記生成器の状態を保存することを特徴とする請求項１に記載の学習装置。
【請求項４】
前記再学習部は、前記学習部による前記学習が完了した学習済みの識別器に対して、前記学習途中の識別器の状態を用いた再学習を実行することを特徴とする請求項１に記載の学習装置。
【請求項５】
前記再学習部は、前記学習部による前記学習と並行して、前記学習途中の識別器の状態を用いた再学習を実行することを特徴とする請求項１に記載の学習装置。
【請求項６】
前記再学習された識別器に、識別対象の画像データを複数領域に分割して入力して、前記再学習された識別器により異常が検出された場合に、前記再学習された識別器が異常と示す領域を提示する検出部をさらに有することを特徴とする請求項１に記載の学習装置。
【請求項７】
コンピュータが、
画像データを生成する生成器が、前記画像データの真偽を識別する識別器の識別誤差を最大化するように学習を実行するとともに、前記識別器が、識別誤差を最小化するように学習を実行し、
前記学習の実行途中において、予め設定された条件で、学習途中の前記生成器の状態を保存し、
保存された前記学習途中の識別器の状態を用いて、前記識別器の再学習を実行する
処理を実行することを特徴とする学習方法。
【請求項８】
コンピュータに、
画像データを生成する生成器が、前記画像データの真偽を識別する識別器の識別誤差を最大化するように学習を実行するとともに、前記識別器が、識別誤差を最小化するように学習を実行し、
前記学習の実行途中において、予め設定された条件で、学習途中の前記生成器の状態を保存し、
保存された前記学習途中の識別器の状態を用いて、前記識別器の再学習を実行する
処理を実行させることを特徴とする学習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習装置、学習方法および学習プログラムに関する。
【背景技術】
【０００２】
近年、医療画像分析の分野等で、画像データを用いて、病変等の異常を検出することが行われている。特に、医療等の分野では、訓練データに用いる異常状態の画像データの入手が困難なことが多いことから、正常状態の画像データのみを利用した機械学習が求められるとともに、大量かつ精密な大容量のデータを扱うことから、検出速度の高速化も求められている。
【０００３】
このような状況下で、機械学習を使用した異常検知に手法として、正常データの分布を推定して、その分布から外れたデータを異常データと検知する敵対的生成ネットワーク（GAN：Generative  Adversarial  Networks）が知られている。図１７は、ＧＡＮを説明する図である。図１７に示すように、ＧＡＮは、生成器と識別器とを有し、生成器を学習するネットワークと識別器を学習するネットワークとが互いに成長していく教師なし学習の学習モデルである。
【０００４】
ＧＡＮでは、生成器がノイズなどの入力データから本物データに近い偽物データを生成するように学習し、識別器が生成器により生成されたデータが本物データか偽物データかを識別できるように学習する。このＧＡＮを用いた異常検出としては、学習済みの生成器が与えられたサンプルを生成する能力が存在するか否かを判定して、能力が無ければ異常データとみなす手法や、学習済みの識別器が偽物データと判定したデータを異常データとみなす手法が利用されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Schlegl，Thomas，et  al．“Unsupervised  anomaly  detection  with  generative  adversarial  networks  to  guide  marker  discovery．”，International  Conference  on  Information  Processing  in  Medical  Imaging．Springer，Cham，2017．
【非特許文献２】M．Sabokrou，et  al．“Adversarially  Learned  One−Class  Classifier  for  Novelty  Detection”，Proceedings  of  IEEE  Conference  on  Computer  Vision  and  Pattern  Recognition．2018．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記技術では、識別器の異常検知の能力が低下する場合がある。具体的には、識別器を使用する場合、識別器の特性が学習終了時の生成器が誤って生成する正常データ以外のデータに依存するので、検出漏れが大きくなる場合がある。例えば、識別器は、正常データと生成器の出力の違いを見分ける能力があると期待できるが、その一方で、生成器の出力に含まれず、正常データにも含まれないものは、学習できないので、特定の出力を期待できない。なお、生成器を用いる手法は、検出コストが高いので、高速性が求められる異常検知には不向きである。
【０００７】
一つの側面では、識別器の異常検知の能力低下を抑制することができる学習装置、学習方法および学習プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、学習装置は、画像データを生成する生成器と、前記画像データの真偽を識別する識別器とを有する。学習装置は、前記生成器が前記識別器の識別誤差を最大化するように学習を実行するとともに、前記識別器が識別誤差を最小化するように学習を実行する学習部を有する。学習装置は、前記学習の実行途中において、予め設定された条件で、学習途中の前記生成器の状態を保存する保存部を有する。学習装置は、保存された前記学習途中の識別器の状態を用いて、前記識別器の再学習を実行する再学習部を有する。
【発明の効果】
【０００９】
一実施形態によれば、識別器の異常検知の能力低下を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１にかかる異常検出装置を説明する図である。
【図２】図２は、学習前を説明する図である。
【図３】図３は、学習開始後を説明する図である。
【図４】図４は、学習の進行中を説明する図である。
【図５】図５は、学習後の識別器を説明する図である。
【図６】図６は、実施例１にかかる異常検出装置の機能構成を示す機能ブロック図である。
【図７】図７は、検出結果の一例を説明する図である。
【図８】図８は、実施例１にかかる学習処理の流れを示すフローチャートである。
【図９】図９は、実施例１にかかる検出処理の流れを示すフローチャートである。
【図１０】図１０は、一時保存と再学習を説明する図である。
【図１１】図１１は、効果を説明する図である。
【図１２】図１２は、実施例２にかかる学習処理を説明する図である。
【図１３】図１３は、実施例２にかかる学習処理の流れを示すフローチャートである。
【図１４】図１４は、実施例３にかかる学習処理を説明する図である。
【図１５】図１５は、実施例３にかかる学習処理の流れを示すフローチャートである。
【図１６】図１６は、ハードウェア構成例を説明する図である。
【図１７】図１７は、ＧＡＮを説明する図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する学習装置、学習方法および学習プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００１２】
［異常検出装置１０の説明］
図１は、実施例１にかかる異常検出装置１０を説明する図である。図１に示すように、異常検出装置１０は、学習フェーズにおいて、ＧＡＮにより生成器と識別器とを学習し、予測フェーズにおいて、学習済みの識別器を用いて、予測対象の画像データに対して異常検知を実行する学習装置の一例である。
【００１３】
ところで、一般的なＧＡＮによる学習では、識別器の異常検知の能力が低下する場合がある。ここで、図２から図５を用いて、一般的なＧＡＮの問題点を説明する。ここでは、図２から図５では、一般的なＧＡＮによる学習に関し、学習開始前から学習終了後の各段階を例示して説明する。図２は、学習前を説明する図である。図３は、学習開始後を説明する図である。図４は、学習の進行中を説明する図である。図５は、学習後の識別器を説明する図である。
【００１４】
図２に示すように、学習前では、生成器は、正常データとは異なる分布のデータを生成し、識別器は、正常データに分布と生成器が生成したデータの分布との違いを学習する。すなわち、識別器は、正常データの分布と生成器が生成するデータの分布とを明確に区別して識別する。
【００１５】
続いて、図３に示すように、学習が開始されると、識別器に正常と識別されるデータが多く、異常と識別されるデータが少なくなるように、生成器の学習が進む。すなわち、生成器は、識別器が識別を間違えるようなデータの生成を学習するので、生成器が生成するデータの分布が、識別器が正常と判断できる範囲を含むように学習される。その一方で、識別器は、学習開始に伴って生成器が生成するデータの分布が変更されると、正常であると識別する識別結果の確率が変化していくが、正常データの分布と生成器が生成したデータの分布との違いを学習する。
【００１６】
続いて、図３の時点よりも学習が進むと、図４に示すように、生成器が生成するデータの分布は、図３において識別器が正常と識別できる範囲を含むように学習される。すなわち、生成器が生成するデータの分布が、識別器が正常と識別できる範囲により多く含まれるように更新される。一方で、識別器は、更新された生成器が生成データの分布と、正常データの分布とを識別するように学習する。
【００１７】
さらに学習が進むと、図５に示すように、生成器は、図４の状態から、識別器が正常と識別できる範囲のデータを模倣して識別器を間違わせるように学習するので、生成器が生成するデータの分布が、図４において識別器が識別できる範囲を含むように更新される。学習が完了すると、学習後の識別器は、生成器が生成したデータと正常データ（本物データ）とを識別できるように学習されている。
【００１８】
しかし、一般的なＧＡＮでは、識別器の特性が学習終了時の生成器が誤って生成する正常データ以外のデータに依存するので、検出漏れが大きくなる場合がある。つまり、学習後の識別器が異常と判断できる範囲に存在する異常データに対しては正しく異常を検出できるが、それ以外の範囲に存在する異常データを検出できない。言い換えると、一般的なＧＡＮでは、検出が期待される異常データの範囲まで識別器を学習できないことがある。
【００１９】
そこで、実施例１にかかる異常検出装置１０は、医療における検出したい異常データが正常データの分布から大きく外れたところには出現しないことに着目する。そして、異常検出装置１０は、学習の過程で、生成器の生成するデータの分布が一時的に正常データの分布を逸脱することがありうることから、一定の間隔で学習途中の生成器を保存し、保存された生成器すべてを用いて識別器を学習する。
【００２０】
具体的には、図１に示すように、異常検出装置１０は、ＧＡＮによる生成器と識別器とを学習する一方で、一定間隔で、学習途中の生成器に関する情報を取得する。そして、異常検出装置１０は、ＧＡＮによる識別器の学習が完了すると、学習済みの識別器に対して、途中に保存した各生成器を用いて再学習を実行する。再学習の完了後、異常検出装置１０は、予測対象の画像データを再学習済みの識別器に入力して、異常検出を実行する。
【００２１】
［機能構成］
図６は、実施例１にかかる異常検出装置１０の機能構成を示す機能ブロック図である。図６に示すように、異常検出装置１０は、通信部１１、記憶部１２、制御部２０を有する。
【００２２】
通信部１１は、他の装置の間の通信を制御する処理部であり、例えば通信インタフェースなどである。例えば、通信部１１は、管理者端末から各種処理の開始指示、正常データ、予測対象データなどを受信し、管理者端末に学習結果や予測結果などを送信する。
【００２３】
記憶部１２は、各種データや制御部２０が実行するプログラムなどを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部１２は、正常データＤＢ１３、途中情報ＤＢ１４、学習結果ＤＢ１５などを記憶する。
【００２４】
正常データＤＢ１３は、正常な状態の内臓等が撮像された画像データを記憶するデータベースである。例えば、正常データＤＢ１３は、ＧＡＮによる識別器の学習において使用される正常データを記憶する。
【００２５】
途中情報ＤＢ１４は、ＧＡＮによる生成器の学習過程における学習途中の生成器に関する情報を記憶するデータベースである。例えば、途中情報ＤＢ１４は、学習途中の生成器を再現（構築）できる、学習途中の各種パラメータを記憶する。
【００２６】
学習結果ＤＢ１５は、生成器および識別器の学習結果を記憶するデータベースである。例えば、学習結果ＤＢ１５は、ＧＡＮを用いた生成器および識別器の学習結果や、識別器の再学習結果として、学習が完了した学習済みの生成器や識別器を生成できる各種パラメータを記憶する。
【００２７】
制御部２０は、異常検出装置１０全体を司る処理部であり、例えばプロセッサなどである。この制御部２０は、学習処理部３０、再学習部４０、検出部５０を有し、識別精度のよい識別器を学習し、入力される予測対象の画像データに対して異常検知を実行する。
【００２８】
学習処理部３０は、生成器学習部３１、識別器学習部３２、一時保存部３３を有し、ＧＡＮを用いた生成器および識別器の学習を実行する処理部である。
【００２９】
生成器学習部３１は、ＧＡＮの生成器の学習を実行する処理部である。具体的には、生成器学習部３１は、一般的なＧＡＮと同様、識別器に正常と判定されるデータが多く、異常と判定されるデータが少なくなるように生成器を学習する。すなわち、生成器は、識別器の識別誤差を最大化するように学習する。
【００３０】
例えば、生成器学習部３１は、乱数やランダムノイズなどであり、いわゆる種などと呼ばれる潜在変数を用いて、生成器により画像データを生成する。そして、生成器学習部３１は、生成された画像データ（以下では、生成データと記載する場合がある）を識別器に入力し、識別器の識別結果を取得する。そして、生成器学習部３１は、識別結果を用いて、生成データが識別器により正常データと識別されるように、生成器を学習する。
【００３１】
すなわち、生成器学習部３１は、生成器が生成する生成データの分布が正常データの分布と一致するように、生成器を学習する。学習が完了すると、生成器学習部３１は、学習済みの生成器に関する情報を学習結果ＤＢ１５に格納する。
【００３２】
識別器学習部３２は、ＧＡＮの識別器の学習を実行する処理部である。具体的には、識別器学習部３２は、一般的なＧＡＮと同様、正常データＤＢ１３に記憶される正常データと、生成器により生成される生成データとを区別できるように生成器を学習する。すなわち、識別器は、識別誤差を最小化するように学習する。
【００３３】
例えば、識別器学習部３２は、生成器から生成データを取得して識別器に入力し、識別器の出力結果を取得する。そして、識別器学習部３２は、出力結果に含まれる正常データである正常確率と、生成データである異常確率とのうち、異常確率が高くなり、正常確率が低くなるように、識別器を学習する。
【００３４】
すなわち、識別器学習部３２は、生成器が生成する生成データの分布と正常データの分布との違いを識別器に学習させる。学習が完了すると、識別器学習部３２は、学習済みの識別器に関する情報を学習結果ＤＢ１５に格納する。
【００３５】
一時保存部３３は、学習途中の生成器を保存する処理部である。例えば、一時保存部３３は、生成器学習部３１による生成器の学習過程において、一定時間ごと、または、一定学習回数ごとに、学習途中の生成器の状態を示す各種パラメータを、生成器から取得して途中情報ＤＢ１４に格納する。
【００３６】
再学習部４０は、ＧＡＮにより学習された識別器の再学習を実行する処理部である。具体的には、再学習部４０は、一時保存部３３により保存された、学習途中の生成器すべてを用いて、識別器の再学習を実行する。
【００３７】
例えば、再学習部４０は、学習処理部３０による学習が完了すると、途中情報ＤＢ１４からパラメータなどの情報を読み出して、学習途中である各生成器を生成する。同様に、再学習部４０は、学習結果ＤＢ１５から識別器のパラメータなどを読み出して、学習済みの識別器を生成する。
【００３８】
ここで、学習途中の識別器が４つ生成されたとする。すると、再学習部４０は、１つ目の生成器を用いて生成データを生成して、学習済みの識別器に入力して、当該識別器を学習させる。続いて、再学習部４０は、２つ目の生成器を用いて生成データを構築して、１つの識別器により学習された識別器に入力して、当該識別器を学習させる。このようにして、再学習部４０は、学習途中の各生成器を順次用いて、識別器の再学習を実行する。そして、再学習部４０は、再学習が完了すると、再学習済みの識別器に関する情報を学習結果ＤＢ１５に格納する。
【００３９】
検出部５０は、入力される画像データから異常検出を実行する処理部である。例えば、検出部５０は、再学習部４０による再学習が完了すると、再学習済みの識別器に関するパラメータなどを学習結果ＤＢ１５から読み出して、識別器を構築する。そして、検出部５０は、予測対象である画像データを受信すると、当該画像データを構築した識別器に入力し、出力結果を取得する。
【００４０】
ここで、検出部５０は、出力結果に含まれる正常データである正常確率と、生成データである異常確率とのうち、正常確率の方が高い場合は入力された画像データを正常な画像データと識別し、異常確率の方が高い場合は入力された画像データを異常な画像データと識別する。そして、検出部５０は、識別結果を管理者端末に送信したり、ディスプレイなどの表示部に表示したり、記憶部１２に格納したりする。
【００４１】
図７は、検出結果の一例を説明する図である。図７に示すように、検出部５０は、予測対象である入力画像を小領域に分割後、再学習部４０により学習された識別器に入力して、識別結果を取得する。そして、検出部５０は、識別器が異常と判定した領域をユーザに提示することができる。
【００４２】
［学習処理の流れ］
図８は、実施例１にかかる学習処理の流れを示すフローチャートである。図８に示すように、学習処理が指示されると、学習処理部３０は、生成器と識別器を初期化する（Ｓ１０１）。
【００４３】
続いて、生成器学習部３１は、生成器でデータ（生成データ）を生成し（Ｓ１０２）、識別器学習部３２は、正常データと生成データとを区別できるように識別器を学習する（Ｓ１０３）。そして、生成器学習部３１は、生成データが識別器に正常データと識別されるように、生成器を学習する（Ｓ１０４）。
【００４４】
その後、一時保存部３３は、生成器が保存されていない時間や反復数（学習回数）が一定以上である場合（Ｓ１０５：Ｙｅｓ）、学習途中である生成器を保存する（Ｓ１０６）。なお、生成器が保存されていない時間や反復数が一定未満であれば（Ｓ１０５：Ｎｏ）、Ｓ１０６を実行することなく、Ｓ１０７が実行される。
【００４５】
その後、学習が終了するまで（Ｓ１０７：Ｎｏ）、Ｓ１０２以降が繰り返される。一方、学習が終了すると（Ｓ１０７：Ｙｅｓ）、再学習部４０は、正常データと、保存された生成器で生成されたデータ（生成データ）とを識別できるように、識別器を再学習する（Ｓ１０８）。そして、再学習部４０は、再学習が完了すると、識別器を保存する（Ｓ１０９）。
【００４６】
［検出処理の流れ］
図９は、実施例１にかかる検出処理の流れを示すフローチャートである。図９に示すように、検出処理が指示されると、検出部５０は、保存された識別器を読み込む（Ｓ２０１）。続いて、検出部５０は、対象データを識別器に入力して、対象データの異常を判定（識別）する（Ｓ２０２）。
【００４７】
ここで、検出部５０は、正常と判定された場合（Ｓ２０３：Ｙｅｓ）、処理を終了し、正常と判定されなかった場合（Ｓ２０３：Ｎｏ）、対象データを異常データとして出力する（Ｓ２０４）。
【００４８】
［効果］
上述したように、異常検出装置１０は、例えば医療における検出したい異常データが正常データの分布から大きく外れたところには出現しないことに着目し、学習途中の生成器を用いて識別器の再学習を実行する。この結果、異常検出装置１０は、正常なデータの周辺に存在すると期待される異常データを網羅的に生成可能な生成器を用いて識別器を再学習することができるので、識別器の識別範囲を拡張することができる。
【００４９】
図１０は、一時保存と再学習を説明する図である。学習途中の生成器を保存することは、生成器の学習途中の状態を保存することであり、正常データの分布と一致するように、学習している途中の生成器が生成する生成データの分布を保存することとなる。つまり、図１０に示すように、学習初期から学習完了までに、生成器が生成する各生成データの分布の学習過程を保存しておくことができる。したがって、保存しておいたすべての生成器を用いて再学習することで、各生成器の生成データの各分布を学習することができるので、ＧＡＮによる学習が完了した識別器が網羅できない範囲を学習することができる。
【００５０】
図１１は、効果を説明する図である。図１１に示すように、一般的なＧＡＮでは、識別器の特性が学習終了時の生成器が誤って生成する正常データ以外のデータに依存するので、異常検出が期待される範囲を網羅するように識別器の学習を行うことが難しく、検出漏れが多い。図１１の例では、識別器は、生成器のデータ分布の範囲外にあるデータＡについては、異常と検出できない。
【００５１】
これに対して、実施例１による識別器の学習では、途中保存される生成器により生成される生成データの分布を再学習することができるので、学習完了後の生成器の状態に依存せず、正常データの周辺をより多く網羅することができる。この結果、再学習後の識別器は、一般的なＧＡＮによる識別器では検出できなかったデータＡについても異常データとして検出することができる。
【実施例２】
【００５２】
ところで、実施例１では、学習途中の生成器を一定間隔で保存する例を説明したが、一定間隔ではなく、保存する間隔を制御することで、識別器の性能を向上させることができる。そこで、実施例２では、一定間隔ではなく、識別器の損失が一時的に閾値以上に上がった後、再び閾値未満に下がるタイミングで生成器を保存する例を説明する。
【００５３】
図１２は、実施例２にかかる学習処理を説明する図である。図１２では、ＧＡＮによる学習において、識別器の損失の時間変化、すなわち識別器が識別に失敗する割合の時間変化を図示している。図１２に示すように、ＧＡＮによる生成器の学習が進むと、生成器が生成するデータの分布が、識別器がカバーしていない領域へ逸脱し始め（図１２の（ａ））、識別器の損失が増加する（図１２の（ｂ））。その後、識別器の学習が進み、識別器が生成器の学習に追従するので、識別器の損失が低下していき（図１２の（ｃ））、逸脱が解消されていく（図１２の（ｄ））。
【００５４】
そこで、一時保存部３３は、識別器の損失が増加していき、当該損失が低下し始めたときの生成器の状態を保存する。なお、一時保存部３３は、このタイミングの生成器を複数保存したい場合、識別器の損失が低下し始めてから一定時間の間隔で生成器を保存することもできる。このようにすることで、生成器が生成するデータの分布と正常データの分布との差が大きい時点を保存することができるので、識別器が学習できる範囲を広くすることができる。この結果、識別器の性能を向上させることができる。
【００５５】
図１３は、実施例２にかかる学習処理の流れを示すフローチャートである。図１３に示すように、学習処理が指示されると、学習処理部３０は、生成器と識別器を初期化する（Ｓ３０１）。
【００５６】
続いて、生成器学習部３１は、生成器でデータ（生成データ）を生成し（Ｓ３０２）、識別器学習部３２は、正常データと生成データとを区別できるように識別器を学習する（Ｓ３０３）。そして、生成器学習部３１は、生成データが識別器に正常データと識別されるように、生成器を学習する（Ｓ３０４）。
【００５７】
その後、一時保存部３３は、生成器が保存されていない時間や反復数が一定以上（Ｓ３０５：Ｙｅｓ）、かつ、識別器の損失が減少している場合（Ｓ３０６：Ｙｅｓ）、学習途中である生成器を保存する（Ｓ３０７）。なお、生成器が保存されていない時間や反復数が一定未満（Ｓ３０５：Ｎｏ）、または、識別器の損失が減少していない場合（Ｓ３０６：Ｎｏ）、Ｓ３０７を実行することなく、Ｓ３０８が実行される。
【００５８】
その後、学習が終了するまで（Ｓ３０８：Ｎｏ）、Ｓ３０２以降が繰り返される。一方、学習が終了すると（Ｓ３０８：Ｙｅｓ）、再学習部４０は、正常データと、保存された生成器で生成されたデータ（生成データ）とを識別できるように、識別器を再学習する（Ｓ３０９）。そして、再学習部４０は、再学習が完了すると、識別器を保存する（Ｓ３１０）。なお、検出処理は、実施例１と同様なので、詳細な説明を省略する。
【実施例３】
【００５９】
ところで、実施例２では、生成器が異常データを生成し始めると、すぐに識別器が追従するので、生成器による生成データの分布の識別器がカバーしていない領域への逸脱の範囲が限定され、また、どの程度逸脱が進行しているかを見極めにくいことが考えられる。
【００６０】
そこで、実施例３では、学習速度の異なる識別器を２つ使用し、逸脱が進んだ状態の生成器を正確に保存することで、識別器の性能を向上させる。具体的には、生成器は、遅い識別器を用いて学習を行い、速い識別器を用いて逸脱の進行度を測る。実施例２では、速い識別器により生成データであると識別可能な生成データの割合を指標とする。また、逸脱が一定以上に進行した段階で、生成器を保存し、それ以上逸脱が起きないように、遅い識別器に速い生成器をコピーする。
【００６１】
図１４は、実施例３にかかる学習処理を説明する図である。図１４に示すように、図１４では、学習速度の遅い識別器Ａ（以下では、識別器Ａや遅い識別器Ａなどと記載する場合がある）と学習速度の速い識別器Ｂ（以下では、識別器Ｂや速い識別器Ｂなどと記載する場合がある）の２つを用いたＧＡＮによる学習において、各識別器の損失の時間変化を図示している。
【００６２】
図１４に示すように、ＧＡＮによる生成器の学習が進むと、生成器が生成するデータの分布が、速い識別器Ｂがカバーしていない領域へ逸脱し始め（図１４の（ａ））、速い識別器Ｂの損失が増加する（図１４の（ｂ））。しかし、遅い識別器Ａは、学習速度が遅いことから、速い識別器Ｂよりも損失の増加は少ない。
【００６３】
その後、両方の識別器の学習が進むが、特に速い識別器Ｂの学習が進んで、生成器の学習に追従するので、速い識別器Ｂの損失が低下し、遅い識別器Ａは逸脱を許容できない（図１４の（ｃ））。すなわち、遅い識別器Ａは、生成器の学習に追従することができず、識別の補正が進まない。
【００６４】
このとき、一時保存部３３は、学習途中の生成器を保存する。つまり、一時保存部３３は、速い識別器Ｂの逸脱が一定以上進行した段階で、遅い識別器Ａを用いて学習する生成器を保存する。言い換えると、一時保存部３３は、速い識別器Ａの損失が増加した後に低下し始める一方で、遅い識別器Ｂの損失が増加しているときの生成器の状態を保存する。なお、損失が一定値以上か否かの閾値は、識別器Ａと識別器Ｂとで共通の値を用いることができる。
【００６５】
そして、一時保存部３３は、速い識別器の重みなどのパラメータを、遅い識別器Ａにコピーして、２つの学習速度を用いた学習を再開する（図１４の（ｄ））。すなわち、２つの識別器のいずれも速い識別器の状態に変更し、その状態から、遅い学習と速い学習を行う。
【００６６】
このようにして、２つの識別器を用いた学習が完了すると、再学習部４０は、一時的に保存された学習途中の生成器を用いて、識別器Ｂの再学習を実行する。
【００６７】
図１５は、実施例３にかかる学習処理の流れを示すフローチャートである。図１５に示すように、学習処理が指示されると、学習処理部３０は、生成器、識別器Ａ、識別器Ｂを初期化する（Ｓ４０１）。
【００６８】
続いて、生成器学習部３１は、識別器Ａの学習速度が識別器Ｂより小さくなるように設定する（Ｓ４０２）。例えば、生成器学習部３１は、学習率を低くしたり、学習頻度を下げたりすることで、学習速度を遅くする。
【００６９】
そして、生成器学習部３１は、生成器でデータ（生成データ）を生成し（Ｓ４０３）、識別器学習部３２は、正常データと生成データとを区別できるように識別器Ａと識別器Ｂを学習する（Ｓ４０４）。そして、生成器学習部３１は、生成データが識別器Ａに正常データと識別されるように、生成器を学習する（Ｓ４０５）。
【００７０】
その後、一時保存部３３は、生成器が保存されていない時間や反復数が一定以上（Ｓ４０６：Ｙｅｓ）、かつ、識別器Ｂの損失が減少している場合（Ｓ４０７：Ｙｅｓ）、学習途中である生成器を保存する（Ｓ４０８）。続いて、一時保存部３３は、識別器Ｂの重みなどのパラメータを識別器Ａにコピーする（Ｓ４０９）。
【００７１】
なお、生成器が保存されていない時間や反復数が一定未満（Ｓ４０６：Ｎｏ）、または、識別器の損失が減少していない場合（Ｓ４０７：Ｎｏ）、Ｓ４０８とＳ４０９を実行することなく、Ｓ４１０が実行される。
【００７２】
その後、学習が終了するまで（Ｓ４１０：Ｎｏ）、Ｓ４０３以降が繰り返される。一方、学習が終了すると（Ｓ４１０：Ｙｅｓ）、再学習部４０は、正常データと、保存された生成器で生成されたデータ（生成データ）とを識別できるように、識別器Ｂを再学習する（Ｓ４１１）。そして、再学習部４０は、再学習が完了すると、識別器Ｂを保存する（Ｓ４１２）。なお、検出処理は、実施例１と同様なので、詳細な説明を省略する。
【実施例４】
【００７３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００７４】
［学習］
例えば、学習処理を終了するタイミングは、所定数以上の学習データを用いた学習が完了した時点や識別器の損失が閾値未満となった時点など、任意に設定することができる。また、医療用の画像データに限らず、不正侵入や危険物持ち込みなどを判定する各種分野に適用することができる。
【００７５】
［再学習のタイミング］
上記実施例では、学習完了後に、識別器を再学習する例を説明したが、これに限定されるものではない。例えば、識別器は、通常のＧＡＮによる学習と、一時的に保存された学習途中の生成器を用いて学習とを並行して実行することもできる。つまり、保存した生成器がすでに生成可能な異常データを再び生成する生成器の保存を抑制するために、学習途中でも、識別器の学習に保存した生成器を用いる。このようにすることで、学習時間を短縮できるとともに、識別器の学習を補正しながら学習できるので、識別器の識別性能の向上を図ることもできる。
【００７６】
［システム］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、学習処理部３０と再学習部４０と検出部５０とを別々の装置で実現することもできる。
【００７８】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７９】
［ハードウェア］
図１６は、ハードウェア構成例を説明する図である。図１６に示すように、異常検出装置１０は、通信装置１０ａ、ＨＤＤ（Hard  Disk  Drive）１０ｂ、メモリ１０ｃ、プロセッサ１０ｄを有する。また、図１６に示した各部は、バス等で相互に接続される。
【００８０】
通信装置１０ａは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。ＨＤＤ１０ｂは、図６に示した機能を動作させるプログラムやＤＢを記憶する。
【００８１】
プロセッサ１０ｄは、図６に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ｂ等から読み出してメモリ１０ｃに展開することで、図６等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、異常検出装置１０が有する各処理部と同様の機能を実行する。具体的には、プロセッサ１０ｄは、学習処理部３０と再学習部４０と検出部５０等と同様の機能を有するプログラムをＨＤＤ１０ｂ等から読み出す。そして、プロセッサ１０ｄは、学習処理部３０と再学習部４０と検出部５０等と同様の処理を実行するプロセスを実行する。
【００８２】
このように異常検出装置１０は、プログラムを読み出して実行することで異常検出方法を実行する情報処理装置として動作する。また、異常検出装置１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、異常検出装置１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００８３】
１０  異常検出装置
１１  通信部
１２  記憶部
１３  正常データＤＢ
１４  途中情報ＤＢ
１５  学習結果ＤＢ
２０  制御部
３０  学習処理部
３１  生成器学習部
３２  識別器学習部
３３  一時保存部
４０  再学習部
５０  検出部
【図１】
2020123096.tif 000003
【図２】
2020123096.tif 000004
【図３】
2020123096.tif 000005
【図４】
2020123096.tif 000006
【図５】
2020123096.tif 000007
【図６】
2020123096.tif 000008
【図７】
2020123096.tif 000009
【図８】
2020123096.tif 000010
【図９】
2020123096.tif 000011
【図１０】
2020123096.tif 000012
【図１１】
2020123096.tif 000013
【図１２】
2020123096.tif 000014
【図１３】
2020123096.tif 000015
【図１４】
2020123096.tif 000016
【図１５】
2020123096.tif 000017
【図１６】
2020123096.tif 000018
【図１７】
2020123096.tif 000019