(57)【要約】  正常モデル学習に必要なコストを抑えつつ、精度が高い異常検知技術を提供する。異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部とを含む。
2020031570.tif 000002
【特許請求の範囲】
【請求項１】
異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部と
を含む異常検知装置。
【請求項２】
請求項１に記載の異常検知装置であって、
前記関連付けは、
前記適応学習用正常音を用いて、前記第１確率分布を更新することにより、得た前記異常検知対象機器から発せられた正常音の分布を示す第２確率分布である
ことを特徴とする異常検知装置。
【請求項３】
請求項２に記載の異常検知装置であって、
前記第２確率分布q2(x;θ)の変数xは、前記異常検知対象機器から発せられた正常音から生成された入力データを示す変数であり、
前記変数xは、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）と潜在変数z0を用いて、x=fK(fK-1(…(f1(z0))…))と表されるものであり、
q0(z0)を潜在変数z0の確率分布とし、
入力データxの確率密度q2(x;θ)は、入力データxに対応する潜在変数z0=f1-1(f2-1(…(fK-1(x))…))の確率密度q0(z0)を用いて計算される
ことを特徴とする異常検知装置。
【請求項４】
請求項３に記載の異常検知装置であって、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、適応バッチ正規化である
ことを特徴とする異常検知装置。
【請求項５】
請求項３に記載の異常検知装置であって、
前記第２確率分布q2(x;θ)は、次式で表される
【数３９】
2020031570.tif 000041
（ただし、z1=f1(z0;θ1), z2=f2(z1;θ2), …, x=fK(zK-1;θK)、θi(i=1, …, K)は変換fiに対応するパラメータ、θ=[θ1T, θ2T, …, θKT]Tである）
ことを特徴とする異常検知装置。
【請求項６】
請求項４または５に記載の異常検知装置であって、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、線形変換であり、
前記線形変換に対応する行列は、下方三角行列と上方三角行列の積、または、下方三角行列と対角行列と上方三角行列の積として表されている
ことを特徴とする異常検知装置。
【請求項７】
異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布を学習する学習部と
を含む確率分布学習装置であって、
前記第１確率分布q1(x;θ)の変数xは、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音から生成された入力データを示す変数であり、
前記変数xは、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）と潜在変数z0を用いて、x=fK(fK-1(…(f1(z0))…))と表されるものであり、
q0(z0)を潜在変数z0の確率分布とし、
入力データxの確率密度q1(x;θ)は、入力データxに対応する潜在変数z0=f1-1(f2-1(…(fK-1(x))…))の確率密度q0(z0)を用いて計算されるものであり、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、適応バッチ正規化である
確率分布学習装置。
【請求項８】
請求項７に記載の確率分布学習装置であって、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、線形変換であり、
前記線形変換に対応する行列は、下方三角行列と上方三角行列の積、または、下方三角行列と対角行列と上方三角行列の積として表されている
ことを特徴とする確率分布学習装置。
【請求項９】
異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部と
を含む異常検知装置。
【請求項１０】
請求項９に記載の異常検知装置であって、
前記関連付けは、
前記適応学習用正常音を用いて、前記第１自己符号化器を更新することにより、得た前記異常検知対象機器から発せられた正常音を復元する第２自己符号化器である
ことを特徴とする異常検知装置。
【請求項１１】
請求項１０に記載の異常検知装置であって、
前記第１自己符号化器は、適応バッチ正規化の計算を実行するAdaBN層を含むものニューラルネットワークとして構成されるものである
ことを特徴とする異常検知装置。
【請求項１２】
異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器を学習する学習部と
を含む自己符号化器学習装置であって、
前記第１自己符号化器は、適応バッチ正規化の計算を実行するAdaBN層を含むものニューラルネットワークとして構成されるものである
自己符号化器学習装置。
【請求項１３】
異常検知対象機器とは異なる１以上の機器から発せられた正常音の集合と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部と
を含む異常検知装置。
【請求項１４】
第１ドメインのドメインデータに対応する入力データから、潜在変数を計算する潜在変数計算部と、
前記潜在変数から、第２ドメインのドメインデータに対応する出力データを計算する出力データ計算部と
を含むデータ変換装置であって、
前記潜在変数計算部は、逆関数を有する所定の関数（以下、第１関数という）を用いて計算するものであり、
前記出力データ計算部は、逆関数を有する所定の関数（以下、第２関数という）を用いて計算するものであり、
第１関数と第２関数は、潜在変数z0を変数xに変換する所定の関数から導出されるものである
データ変換装置。
【請求項１５】
請求項１４に記載のデータ変換装置であって、
前記所定の関数は、第１ドメインと第２ドメインの和集合を用いて得られる関数である
ことを特徴とするデータ変換装置。
【請求項１６】
請求項１５に記載のデータ変換装置であって、
前記所定の関数は、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）を用いて、x=fK(fK-1(…(f1(z0))…))と表される関数（ただし、変換fi(i=1, …, K)のうち、少なくとも１つの変換fi_0(1≦i0≦K)に対して、その逆変換fi_0-1は適応バッチ正規化である）として、前記和集合のドメインデータを学習データとして学習することにより、得られる関数である
ことを特徴とするデータ変換装置。
【請求項１７】
請求項１６に記載のデータ変換装置であって、
第１関数は、前記和集合に含まれる第１ドメインのドメインデータから算出される統計量を用いて、前記所定の関数から導出されるものであり、
第２関数は、前記和集合に含まれる第２ドメインのドメインデータから算出される統計量を用いて、前記所定の関数から導出されるものである
ことを特徴とするデータ変換装置。
【請求項１８】
請求項１４ないし１７のいずれか１項に記載のデータ変換装置であって、
第１ドメインは、異常検知対象機器とは異なる１以上の機器から発せられた音の集合であり、
第２ドメインは、前記異常検知対象機器の音の集合であり、
前記第１ドメインのドメインデータは、前記異常検知対象機器とは異なる１以上の機器から発せられた異常音である
ことを特徴とするデータ変換装置。
【請求項１９】
請求項１から６、または、９から１１、または、１３のいずれか１項に記載の異常検知装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検知技術及びドメイン変換技術に関する。
【背景技術】
【０００２】
例えば、故障により、工場に設置された大型の製造機・造型機などの業務用機器の稼働がストップすると、業務に大きな支障をもたらす。そのため、動作状況を日常的に監視し、異常が発生した場合にはただちに対処を行う必要がある。この問題に対応する方法として、業務用機器の管理業者が定期的に現場へ整備員を派遣し、整備員がパーツの摩耗などを確認する方法がある。しかし、この方法は、多大な費用（例えば、人件費や移動費）及び労力がかかるため、すべての業務用機器や工場を対象に実施するのは難しい。そこで、代替手段として、機器の内部に設置したマイクロホンが収音する動作音に基づいて日常的に動作状況を監視する方法がある。具体的には、当該動作音を解析し、異常と思われる音（異常音）を検知した場合にはアラートをあげる。このように、音を利用して監視対象である機器が正常状態にあるか異常状態にあるかを判定する技術を異常音検知技術という。【０００３】
異常音検知技術において、機器の種類や個体毎に、異常音の種類と検出方法を設定するのではコストがかかる。そのため、異常音を検知するためのルールを自動設計する必要がある。その解決方法の１つとして、統計的手法に基づく異常音検知がよく知られている（非特許文献１）。この統計的手法に基づく異常音検知は、教師あり異常音検知と教師なし異常音検知に大別できる。教師あり異常音検知では、正常音と異常音を学習データとして大量に収集し、識別率（正常音と異常音を識別できる割合）を最大化するように識別器を学習する。一方、教師なし異常音検知では、正常音のみを学習データとして大量に収集し、正常音の発生に関する確率分布（以下、正常モデルという）を学習する。そして、正常モデルを用いて、新しく収集した音（つまり、異常検知対象となる音）が正常音に類似している（尤度が高い）と判定される場合は正常、類似していない（尤度が低い）と判定される場合は異常と判定する。【０００４】
産業的応用分野では異常音の学習データを大量に集めることが困難であるため、教師なし異常音検知が採用されることが多い。また、産業的応用分野では、大量の同種の機器に対してそれぞれを異常検知の対象としたい場合がある。例えば、データセンタに存在する膨大なサーバの異常音を監視したい場合である。この場合、各サーバに対してそれぞれ異常検知システムを適用することになるが、各サーバから発せられる音の分布は設置場所や組み立て誤差に起因して微妙に異なることが想定される。そこで、このような大量の同種の機器に対して異常検知システムを適用する方法として、以下のような方法が考えられる。
（１）いくつかの機器から収集した正常音を用いて、これらの機器に共通の正常モデルを学習する。そして、この共通のモデルを用いてすべての機器の異常検知を行う。
（２）機器ごとに収集した正常音を用いて、機器ごとに異なる正常モデルを学習する。そして、この個々のモデルを用いて各機器の異常検知を行う。【０００５】
（１）の方法は、機器ごとに学習を行わないため、監視したい機器が増加しても学習データ収集やモデル学習を行う必要がなく、データ収集や学習に係るコストが抑えられる一方、機器ごとの正常音発生に関する微妙な違いを捉えることができないため、精度が高い異常検知を行えない可能性がある。また、（２）の方法は、各機器から得られた正常音だけを用いて学習を行うため精度の高い正常モデルが生成されることが期待される一方、機器ごとに学習データを収集してモデル学習を行わなければならないため、監視したい機器の増加に伴い、データ収集や学習に係るコストがかかってしまうという問題がある。【０００６】
次に、ドメイン変換について説明する。ドメイン変換とは、あるドメインのデータを、当該ドメインとは異なるドメインのデータに変換する技術である。ここで、対象とするデータは、例えば、画像や音である。例えば、参考非特許文献１にあるように、「風景写真の画像」を「風景画の画像」に変換したり、「馬の写真の画像」を「シマウマの写真の画像」に変換したりするものである。
（参考非特許文献１：Jun-Yan Zhu, Taesung Park, Phillip Isola, Alexei A. Efros, “Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks”, arXiv:1703.10593v5, https://arxiv.org/abs/1703.10593v5）
ドメイン変換を実現するためには、ドメインDからドメインD’へのデータ変換器を作ればよい。このようなデータ変換器を作るために、例えば「風景写真」とそれを写実した「風景画」のペアを学習データとして大量に集め、ニューラルネットワークを用いて「風景写真」から「風景画」への変換を学習させるという方法を考えることができる。以下、このように２つのドメインのデータのペアを用いてデータ変換器を学習させる枠組みのことをペアデータありドメイン変換と呼ぶ。ペアデータありドメイン変換は、入力とそれに対する正解となる２つのドメインのデータのペアを学習データとして、比較的簡単に学習によりデータ変換器を構成できるという利点がある。しかし、学習データを多数集めなければならない。先ほどの「風景写真」と「風景画」の例では、まず「風景写真」を集め、その上で（例えば、画家に作成を依頼するなどして）「風景写真」を写実した「風景画」を作成する必要がある。また、「馬の写真」と「シマウマの写真」の例では、同じ構図の写真を撮ることは難しいため、学習データを集めることは現実的には不可能である。【０００７】
そこで、近年、学習データ収集に関する問題を解決するために、ペアデータを用いることなくデータ変換器を学習することができる枠組みが提案されている。この枠組みのことをペアデータなしドメイン変換という。ペアデータなしドメイン変換では、ドメインDのデータとドメインD’のデータを用いて、ドメインDのデータからドメインD’のデータに変換するデータ変換器を学習する。ここで、学習に用いるドメインDのデータとドメインD’のデータは、ペアである必要はない。したがって、「馬の写真」と「シマウマの写真」のようなペアデータを収集することが困難なドメイン間での変換であってもデータ変換器を学習することが可能となる。【０００８】
ペアデータなしドメイン変換の例として、例えば、非特許文献２に記載のStarGANという手法が提案されている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】井出剛，杉山将，“異常検知と変化検知”，講談社，pp.6-7，2015.
【非特許文献２】Yunjey Choi, Minje Choi, Munyoung Kim, Jung-Woo Ha, Sunghun Kim, Jaegul Choo, “StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation”, IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2018, pp.8789-8797, 2018.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
まず、第１の課題について説明する。
上述の通り、（１）、（２）の方法には、データ収集や学習に係るコストと異常検知の精度のトレードオフの問題がある。そこで、第３の方法として、以下のような方法も考えられる。
（３）いくつかの機器から収集した正常音を用いて、これらの機器に共通の正常モデルを学習する。次に、機器ごとに収集した正常音を用いて、この共通のモデルから機器ごとに異なる正常モデルを適応的に学習する。そして、この個々の適応済み正常モデルを用いて各機器の異常検知を行う。【００１１】
（３）の方法は、上記トレードオフの問題を解決できる可能性があるが、実際にこのような方法を実現するためには、異常検知の対象とする機器ごとに比較的少量の正常音を収集すればよいこと、当該正常音を用いて共通の正常モデルから各機器に適応した正常モデルを効率的に学習できることが必要になる。しかし、これまでそのような方法は開発されていなかった。【００１２】
これが第１の課題である。【００１３】
次に、第２の課題について説明する。
非特許文献２のStarGANでは、参考非特許文献２に記載のGenerative Adversarial Networks (GAN)という手法を利用してペアデータなしドメイン変換を実現しているが、学習が不安定であるという問題がある。
（参考非特許文献２：Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu,David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio, “Generative Adversarial Nets”, Advances in Neural Information Processing Systems 27 (NIPS 2014), 2018.）【００１４】
これが第２の課題である。【００１５】
そこで本発明では、正常モデル学習に必要なコストを抑えつつ、精度が高い異常検知技術と、安定したペアデータなし学習が可能となるドメイン変換技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の一態様は、異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部とを含む。【００１７】
本発明の一態様は、異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布を学習する学習部とを含む確率分布学習装置であって、前記第１確率分布q1(x;θ)の変数xは、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音から生成された入力データを示す変数であり、前記変数xは、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）と潜在変数z0を用いて、x=fK(fK-1(…(f1(z0))…))と表されるものであり、q0(z0)を潜在変数z0の確率分布とし、入力データxの確率密度q1(x;θ)は、入力データxに対応する潜在変数z0=f1-1(f2-1(…(fK-1(x))…))の確率密度q0(z0)を用いて計算されるものであり、前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、適応バッチ正規化である。【００１８】
本発明の一態様は、異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部とを含む。【００１９】
本発明の一態様は、異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器を学習する学習部とを含む自己符号化器学習装置であって、前記第１自己符号化器は、適応バッチ正規化の計算を実行するAdaBN層を含むものニューラルネットワークとして構成されるものである。【００２０】
本発明の一態様は、異常検知対象機器とは異なる１以上の機器から発せられた正常音の集合と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部とを含む。【００２１】
本発明の一態様は、第１ドメインのドメインデータに対応する入力データから、潜在変数を計算する潜在変数計算部と、前記潜在変数から、第２ドメインのドメインデータに対応する出力データを計算する出力データ計算部とを含むデータ変換装置であって、前記潜在変数計算部は、逆関数を有する所定の関数（以下、第１関数という）を用いて計算するものであり、前記出力データ計算部は、逆関数を有する所定の関数（以下、第２関数という）を用いて計算するものであり、第１関数と第２関数は、潜在変数z0を変数xに変換する所定の関数から導出されるものである。
【発明の効果】
【００２２】
本発明によれば、正常モデル学習に必要なコストを抑えつつ、精度の高い異常検知が可能となる。また、本発明によれば、安定したペアデータなしの学習が可能となるドメイン変換を実現することができる。
【図面の簡単な説明】
【００２３】
【図１】確率分布学習装置１００の構成の一例を示すブロック図である。
【図２】確率分布学習装置１００の動作の一例を示すフローチャートである。
【図３】確率分布適応学習装置２００の構成の一例を示すブロック図である。
【図４】確率分布適応学習装置２００の動作の一例を示すフローチャートである。
【図５】異常検知装置３００の構成の一例を示すブロック図である。
【図６】異常検知装置３００の動作の一例を示すフローチャートである。
【図７】異常度推定部３２０の構成の一例を示すブロック図である。
【図８】異常度推定部３２０の動作の一例を示すフローチャートである。
【図９】自己符号化器学習装置４００の構成の一例を示すブロック図である。
【図１０】自己符号化器学習装置４００の動作の一例を示すフローチャートである。
【図１１】自己符号化器適応学習装置５００の構成の一例を示すブロック図である。
【図１２】自己符号化器適応学習装置５００の動作の一例を示すフローチャートである。
【図１３】異常検知装置６００の構成の一例を示すブロック図である。
【図１４】異常検知装置６００の動作の一例を示すフローチャートである。
【図１５】異常度推定部６２０の構成の一例を示すブロック図である。
【図１６】異常度推定部６２０の動作の一例を示すフローチャートである。
【図１７】確率分布学習装置１１００の構成の一例を示すブロック図である。
【図１８】確率分布学習装置１１００の動作の一例を示すフローチャートである。
【図１９】データ変換装置１２００の構成の一例を示すブロック図である。
【図２０】データ変換装置１２００の動作の一例を示すフローチャートである。
【図２１】潜在変数計算部１２２０と出力データ計算部２３０による処理の様子を示す図である。
【図２２】データ変換装置１３００の構成の一例を示すブロック図である。
【図２３】データ変換装置１３００の動作の一例を示すフローチャートである。
【図２４】本発明の実施形態における各装置を実現するコンピュータの機能構成の一例を示す図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００２５】
＜記法＞
_（アンダースコア）は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
【００２６】
まず、本発明の第１実施形態から第３実施形態に対する技術的背景と、各実施形態について説明する。
【００２７】
＜技術的背景＞
本発明の実施形態は、複数の同一種類の機器に適用可能な異常検知の枠組みを提供するものである。具体的には、上述の（３）の方法による枠組みを提供する。各機器から発せられる正常音の分布の違いは音に関する特徴量の統計量で表現されるという仮説に基づき、特徴量の１次統計量である平均と２次統計量である分散を異なる機器間で一致させることにより、異なる機器の正常モデルを一つのモデルから導出できるようにするものである。
【００２８】
まず、本発明の実施形態で用いる従来技術について説明する。
【００２９】
《教師なし異常音検知》
異常音検知とは、異常検知対象となる音（観測信号）を発した監視対象機器の状況が正常であるか異常であるかを判定するタスクである。ここで、観測信号から生成される入力データxには、例えば次式のように観測信号の対数振幅スペクトルln|Xt,f|を要素とするベクトルを用いることができる。
【００３０】
【数１】
2020031570.tif 000003
【００３１】
ここで、t={1, …, T}、f = {1, …, F}は、それぞれ時間のインデックス、周波数のインデックスを表す。また、Qは入力で考慮する過去・未来のフレーム数を表す。
【００３２】
入力データxは、上記の例に限るものではなく、観測信号から生成される入力データとして、その他の特徴量を用いてもよい。
【００３３】
次に、密度推定ベースの異常音検知について説明する。正常音から生成される入力データ（以下、単に正常音の入力データという）は確率分布p(x)に従って生成されると仮定する。まず、パラメータθを持つ確率分布q(x;θ)を設計する。次に、確率分布p(x)から生成されたN個の正常音の入力データの集合{xi}i=1Nを用いて、q(x;θ)がp(x)に最も近くなるようなパラメータθ*を求め、q(x;θ*)をp(x)の近似分布とする。そして、異常検知対象となる音の入力データが入力された場合、例えば次式によりその入力データに関する異常度A(x;θ*)を求める。
【００３４】
【数２】
2020031570.tif 000004
【００３５】
最後に、判定結果Rを、例えば次式により求める。
【００３６】
【数３】
2020031570.tif 000005
【００３７】
ここで、閾値φは所定の定数、H(・)は引数が非負なら1、負なら0を返すステップ関数である。R=1の場合、当該異常検知対象となる音を発した機器は異常、R=0の場合、正常と判定する。つまり、異常度A(x;θ*)が事前に設定した閾値φより大きければ異常と判定する。
【００３８】
上述の通り、密度推定ベースの異常音検知では、（１）確率分布q(x;θ)の設計、（２）パラメータθの決定を行う必要がある。（１）の確率分布q(x;θ)の設計には、ノーマライジング・フロー(Normalizing Flow)を用いることができる。また、（２）のパラメータθの決定には、例えば、損失関数（目的関数）をL(θ)=-Σlogq(xi;θ)（つまり、正常音の入力データの集合{xi}i=1Nに対する負の対数尤度の和）とする勾配降下法による学習を用いることができる。
【００３９】
《ノーマライジング・フロー(Normalizing Flow)》
ノーマライジング・フローは、データ生成に関する確率分布p(x)を近似する分布を求める手法である。
【００４０】
以下、説明する。{fi(z)}i=1Kを逆変換を有するK個の変換（ただし、fi(z):RD→RD, Rは実数の集合、Dは1以上の整数）とする。また、fi-1(z)(i=1, …, K)をfi(z)の逆変換とする。
【００４１】
ノーマライジング・フローでは、N個の入力データの集合{xi}i=1Nに対して、それぞれ対応する潜在変数{z0,i}i=1Nが存在し、入力データxiは、K個の変換{fi(z)}i=1Kとxの潜在変数z0を用いた次式により、対応する潜在変数z0,iを変換したものであると考える。
【００４２】
【数４】
2020031570.tif 000006
【００４３】
つまり、i=1, …, Kに対して、次式が成り立つ。
【００４４】
【数５】
2020031570.tif 000007
【００４５】
なお、z1=f1(z0), z2=f2(z1), …, x=fK(zK-1)と表すこともある。
【００４６】
更に、潜在変数{z0,i}i=1Nは、例えば等方ガウス分布のような、モンテカルロサンプリングが容易な確率分布q0(z0)から生成されると仮定する。このとき、入力データの集合{xi}i=1Nが従う確率分布q(x;θ)（xは入力データを示す変数）は、次の形で表現できる。
【００４７】
【数６】
2020031570.tif 000008
【００４８】
ここで、z0=f1-1(f2-1(…(fK-1(x))…)))である。また、{θi}i=1Kは、変換{fi(z)}i=1Kに対応するパラメータ、θ=[θ1T, θ2T, …, θKT]Tである。
【００４９】
なお、確率分布q0(z0)は、モンテカルロサンプリングが容易な分布に限るものではなく、厳密な確率密度推定が容易な分布であればよい。厳密な確率密度推定が容易な分布の一例として、以下の条件を満たす確率分布p(x)が挙げられる。
（条件１）確率分布p(x)に対して、RD上の非負関数g(x)(≧0)が存在し、任意のx∈RDに対してp(x)=g(x)/∫g(x)dxとなる。
（条件２）関数g(x)に対して∫g(x)dxを計算することは容易である。
【００５０】
条件２を満たす関数として、ガウス分布が挙げられる。一方、条件２を満たさない関数として、g(x)=exp(sin(x)-x2)が挙げられる。
【００５１】
ノーマライジング・フローでは、確率分布q(x;θ)のパラメータθを入力データの集合{xi}i=1Nを用いて学習する。そして学習により得られたパラメータθ*を用いた確率分布q(x;θ*)により本来のデータ生成に関する確率分布p(x)を近似する。
【００５２】
ノーマライジング・フローでは、変換{fi(z)}i=1Kとして様々なものを用いることができる。例えば、参考非特許文献３に記載のバッチ正規化(Batch Normalization)やLeaky ReLU(Rectified Linear Unit：正規化線形関数)などを用いることができる。また、参考非特許文献４に記載の以下の線型変換を用いることもできる。
【００５３】
【数７】
2020031570.tif 000009
【００５４】
ここで、L, U∈RD×Dは、それぞれ下三角行列、上三角行列である。この変換はLとUの対角成分の積の絶対値（つまり、|Πi=1DLiiUii|）によりヤコビアンの行列式の絶対値|det(∂f(z;θ)/∂z)|を計算することができるため、入力データxの確率密度q(x;θ)を容易に計算することができる（入力データxの確率密度q(x;θ)の計算コストを抑えることができる）という特徴がある（式(5)参照）。
（参考非特許文献３：S. Ioffe, C. Szegedy, “Batch normalization: accelerating deep network training by reducing internal covariate shift”, ICML 2015, 2015.）
（参考非特許文献４：J. Oliva, et al., “Transformation Autoregressive Networks”, ICML 2018, 2018.）
【００５５】
以下、簡単にバッチ正規化BN:x→y（x, y∈RD）について説明する。バッチ正規化BNは、入力データの集合{xi}i=1Nの各次元の要素の平均が0、分散が1になるように調整した後、スケール変換とシフト変換を行う。具体的には、次式により、yi=BN(xi)が計算される。
【００５６】
【数８】
2020031570.tif 000010
【００５７】
ここで、γ, βは、それぞれスケール変換パラメータ、シフト変換パラメータであり、いずれも学習対象となるパラメータである。また、εは非負の実数であり、ゼロで割ることを避けたい場合は正の実数、避ける必要がない場合はゼロとすればよい。
【００５８】
なお、スケール変換パラメータγ、シフト変換パラメータβを明示するため、BN(・)をBNγβ(・)と表すこともある。
【００５９】
また、K個の変換すべてが同じ種類の変換である必要はない。したがって、例えば、変換f1(z)をバッチ正規化、変換f2(z)を線形変換というように、いくつかの種類の変換を組み合わせてもよい。
【００６０】
《適応バッチ正規化(AdaBN:Adaptive Batch Normalization)》
ドメイン適応とは、モデル学習に用いる学習データの分布と学習済みモデルを用いた処理の対象であるテストデータの分布が異なる場合に、当該分布の相違により、学習済みモデルを用いた処理の精度が低下しないように、学習済みモデルを調整する技術のことである。ここで、学習データの集合、テストデータの集合がドメインであり、それぞれ学習用ドメイン、テスト用ドメインということもある。
【００６１】
深層ニューラルネットワーク(DNN:Deep Neural Network)と組み合わせることができるドメイン適応の手法には様々なものがあるが、ここでは適応バッチ正規化について説明する（参考非特許文献５参照）。適応バッチ正規化は、バッチ正規化における平均・分散の計算と平均・分散の調整（式(7a)〜(7d)参照）をドメインごとに行うという手法である。つまり、式(7a)〜(7c)による計算を同一のドメインのデータごとに行うようにする。実際にテストする際には、テスト用ドメインの入力データの集合{xi}i=1Nに対して統計量（平均と分散）を計算して、その統計量を用いて式(7c)、式(7d)により処理結果yiを出力する。なお、変換が適応バッチ正規化である場合、AdaBN:x→y（x, y∈RD）と表すこともある。
（参考非特許文献５：Y. Li, et al., “Revisiting Batch Normalization For Practical Domain Adaptation”, ICLR 2017, 2016.）
【００６２】
以下、本発明の実施形態における異常検知について説明する。まず、本発明の実施形態における異常検知のための問題設定について説明する。次に、上記従来技術を用いた、本発明の実施形態における異常検知の具体的構成について説明する。
【００６３】
《問題設定》
解きたい問題は、「複数の機器から得られた大量の正常音を用いて学習した共通の正常モデルである第１確率分布と、異常検知対象機器から得られた少量の正常音とを用いて、異常検知対象機器のために用いることができる正常モデルである第２確率分布を学習し、この第２確率分布を用いて異常検知対象機器が発した音から異常検知することを可能とする」ことである。したがって、以下のデータを扱うことになる。
（１）学習データ：異常検知対象機器とは異なる１以上の機器から発せられた正常音であり、大量に用意することが可能であると仮定する。学習に用いることから、これらの音のことを学習用正常音という。また、その集合のことを学習用ドメインという。なお、正常音の収集対象となる機器は、異常検知対象機器と種類が同じものが好ましい。
（２）適応学習データ：異常検知対象機器から発せられた正常音であり、少量しか用意できないものと仮定する。適応学習に用いることから、これらの音のことを適応学習用正常音という。なお、その集合は、後述するテスト用ドメインである。
（３）テストデータ：異常検知対象機器から発せられた音であり、この音から機器が正常であるか異常であるかを判定する。そこで、この音のことを異常検知対象音という。また、その集合のことをテスト用ドメインという。
【００６４】
以下、学習用正常音を用いて学習するフェーズを学習フェーズ、適応学習用正常音を用いて適応学習するフェーズを適応学習フェーズ、異常検知対象音から異常検知を行うフェーズをテストフェーズ（異常検知フェーズ）という。
【００６５】
《ポイント》
本発明の実施形態では、少量の適応学習データから第２確率分布を低い計算量で適応学習できるようにするため、ノーマライジング・フローに適応バッチ正規化を導入する。具体的には、ノーマライジング・フローで用いるK個の変換{fi(z)}i=1Kのうち少なくとも１つの変換fi(z)に対して、その逆変換fi-1(z)が適応バッチ正規化であるというものである。なお、適応バッチ正規化の計算のうち、スケール変換及びシフト変換、つまり、式(7d)の計算は、省略したものであってもよい。別の言い方をすると、逆変換fi-1(z)がγ=1, β=0である適応バッチ正規化であるとも表現できる。
【００６６】
《具体的構成》
以下、具体的構成について説明する。
（１）学習フェーズ
まず、異常検知対象機器とは異なる１以上の機器から発せられた正常音（つまり、学習データ）から生成される入力データxを、確率分布q0(z0)に従って生成されているとみなす潜在変数z0(〜q(z0))に変換するニューラルネットワークについて説明する。ここでは5個の変換{fi(z)}i=15を用いる場合について説明する。つまり、z0は、z0=f1-1(f2-1(f3-1(f4-1(f5-1(x)))))として得られることになる。
【００６７】
上記5個の変換{fi(z)}i=15を次式により定義する。なお、便宜上変換fiを示す代わりにその逆変換fi-1を示す（ただし、z4=f5-1(x), z3=f4-1(z4), z2=f3-1(z3), z1=f2-1(z2), z0=f1-1(z1)）。
【００６８】
【数９】
2020031570.tif 000011
【００６９】
ここで、L2、L5∈RD×Dは、対角成分が1の下三角行列であり、上三角部分を除くすべての要素L2,ij, L5,ij(i≧j)が学習対象パラメータ（つまり、パラメータθ2またはパラメータθ5）である。D2、D5∈RD×Dは、対角行列であり、対角成分D2,ij, D5,ij(i=j)が学習対象パラメータ（つまり、パラメータθ2またはパラメータθ5）である。U2、U5∈RD×Dは、対角成分が1の上三角行列であり、下三角部分を除くすべての要素U2,ij, U5,ij(i≦j)が学習対象パラメータ（つまり、パラメータθ2またはパラメータθ5）である。また、α3(≧0)はLeakyReLUのパラメータであり、超パラメータとして設定してもよいし、学習対象パラメータ（つまり、パラメータθ3）としてもよい（α3を学習対象とする場合は、Parametric ReLUと呼ばれる（参考非特許文献６））。また、AdaBNγ_4β_4(・)及びAdaBNγ_1β_1(・)は上述の適応バッチ正規化であり、γ1, β1, γ4, β4が学習対象パラメータ（つまり、パラメータθ1またはパラメータθ4）である。
（参考非特許文献６：K. He, et al., “Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification”, ICCV 2015, pp.1026-1034, 2015.）
また、変換{fi(z)}i=15のヤコビアンの行列式の絶対値は、それぞれ次式により計算される（ただし、x=f5(z4), z4=f4(z3), z3=f3(z2), z2=f2(z1), z1=f1(z0)）。
【００７０】
【数１０】
2020031570.tif 000012
【００７１】
ここで、s4’は（学習データから生成された入力データxに対応する）z4の標準偏差、δは（学習データから生成された入力データxに対応する）z3のうちゼロを下回る要素の数、s1’は（学習データから生成された入力データxに対応する）z1の標準偏差である。なお、変換f4, f1に対するヤコビアンの行列式の絶対値|det(∂f4(z3)/∂z3)|, |det(∂f1(z0)/∂z0)|に関しては、学習時ではなく推論時（つまり、学習済みモデルを用いた処理時）におけるヤコビアンの行列式の絶対値を用いて表記している。
【００７２】
また、先述の通り、確率分布q0(z0)は厳密な確率密度推定が容易な確率分布とする。例えば、確率分布q0(z0)を平均が0、分散が単位行列Iのガウス分布N(0, I)とすると、確率分布q0(z0)は次式により表される。
【００７３】
【数１１】
2020031570.tif 000013
【００７４】
したがって、q1(x;θ)を学習データから生成された入力データxの確率分布とし、式(5)を用いることにより、潜在変数z0,iの確率密度q0(z0,i)から入力データxiの確率密度q1(xi;θ)が計算できることがわかる。
【００７５】
続いて、パラメータθの学習方法について説明する。通常のニューラルネットワークの学習と同様、損失関数L(θ)を用いて、例えば、勾配降下法、Momentum SGD(Stochastic Gradient Descent)、ADAM(Adaptive Moment Estimation)、あるいはそれらの組合せにより学習することができる。ノーマライジング・フローを用いる場合、損失関数L(θ)として、次式で定義される負の対数尤度の平均を用いることが多い。
【００７６】
【数１２】
2020031570.tif 000014
【００７７】
なお、上記学習には、ミニバッチと呼ばれる学習データの集合を単位にして行うミニバッチ学習法を用いることができる。ここで、ミニバッチとは、すべての学習データからランダムに選択した複数の学習データのことである。このミニバッチごとに損失関数L(θ)の値を計算することになる。
【００７８】
（２）適応学習フェーズ
次に、異常検知対象機器から発せられた正常音（つまり、適応学習データ）から生成される入力データxの確率分布q2(x;θ)の適応学習方法について説明する。例えば、z4=f5-1(x), z3=f4-1(z4), z2=f3-1(z3), z1=f2-1(z2), z0=f1-1(z1)を利用して、以下の手順で学習を実行すればよい。まず、入力データの集合{x’i}i=1Mから{z’4,i}i=1M（z’4,i=f5-1(x’i)）を計算する。次に、{z’4,i}i=1M‘の平均、分散を求める。最後に、式(7c)のm, s2を求めた平均と分散で置換する。同様に、入力データの集合{x’i}i=1Mから{z’1,i}i=1M（z’1,i=f2-1(f3-1(f4-1(f5-1(x’i))))）を計算する。次に、{z’1,i}i=1Mの平均、分散を求める。最後に、式(7c)のm, s2を求めた平均と分散で置換する。
【００７９】
（３）テストフェーズ
異常検知の方法には、例えば、《教師なし異常音検知》で説明した方法を用いることができる。
【００８０】
《効果》
ノーマライジング・フローに適応バッチ正規化を導入することにより、以下の効果が得られる。
（１）学習データの分布とテストデータの分布の相違を調整することが可能となり、テスト用ドメインにおける異常検知の精度低下を抑えることが可能となる。
【００８１】
具体的に説明する。仮に最終層に適応バッチ正規化を用いた場合、ドメイン間のデータの分布の軸方向の平行移動とスケールのずれを是正することが可能となる。また、異なるドメイン間のデータの分布の相違が平行移動と軸方向のスケーリングによって表現される場合は、原理的には１層目に適応バッチ正規化を導入すれば、学習用ドメインにおいて学習済みのパラメータθをテスト用ドメインにそのまま適用してもテスト用ドメインでの異常検知が精度よく実行できる。
（２）第２確率分布を低計算量で適応学習することが可能となる。
【００８２】
第２確率分布の適応学習に必要な処理は、上述の通り、基本的には、適応学習データに対して、適応バッチ正規化における統計量を計算するだけである。したがって、適応学習は、通常の学習を繰り返す場合と比べると低い計算量で実行可能であり、場合によっては、オンラインで実行することも可能となる。
【００８３】
また、上述の例のように、ノーマライジング・フローに線形変換を導入している場合、当該線形変換に対応する行列WをLU分解またLDU分解しておくことにより、以下の効果が得られる。
（３）確率密度の計算コストが抑制され、学習コストが抑制される。
【００８４】
具体的に説明する。ノーマライジング・フローでは、線形変換fのヤコビアンの行列式を逐一計算する必要がある。そのため、行列WをLU分解またはLDU分解しない形で保持している場合は、行列式|W|の計算はWの次数をkとしてO(k3)の計算量がかかることになる。しかし、W＝LUまたはW＝LDUのようにLU分解またはLDU分解した形で保持している場合は、|W|=|LU|=|L|×|U|（つまり、Lの対角成分とUの対角成分のすべての積）または|W|=|LDU|=|L|×|D|×|U|（つまり、Lの対角成分とDの対角成分とUの対角成分のすべての積）により|W|を求めることができるため、非常に高速に計算することができる。
【００８５】
＜第１実施形態＞
同種の機器が２台以上ある状況において、その中の１台の機器（これを異常検知対象機器とする）の異常を検知することを考える。そのために、まずこの異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す確率分布（以下、第１確率分布という）を学習する（学習フェーズ）。次に、異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）を用いて、第１確率分布から、異常検知対象機器から発せられた正常音の分布を示す確率分布（以下、第２確率分布という）を適応学習する（適応学習フェーズ）。そして、異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器が異常であるか否かを判定する（テストフェーズ（異常検知フェーズ））。
【００８６】
確率分布学習装置１００は、学習用正常音から、第１確率分布を学習する。確率分布適応学習装置２００は、適応学習用正常音を用いて、第１確率分布から第２確率分布を適応学習する。異常検知装置３００は、異常検知対象音から、当該機器が異常であるか否かを判定する。
【００８７】
以下、図１〜図２を参照して確率分布学習装置１００を説明する。図１は、確率分布学習装置１００の構成を示すブロック図である。図２は、確率分布学習装置１００の動作を示すフローチャートである。図１に示すように確率分布学習装置１００は、入力データ生成部１１０と、潜在変数推定部１２０と、損失関数計算部１３０と、パラメータ更新部１４０と、収束条件判定部１５０と、記録部１９０を含む。記録部１９０は、確率分布学習装置１００の処理に必要な情報を適宜記録する構成部である。記録部１９０は、例えば、学習対象となる第１確率分布q1(x;θ)のパラメータθを記録する。パラメータθの初期値として、例えば乱数を用いて生成された値が記録されている。
【００８８】
確率分布学習装置１００は、学習用正常音記録部９１０に接続している。学習用正常音記録部９１０には、事前に用意した学習用正常音が学習データとして記録されている。先述した通り、学習用正常音はできるだけ多く用意しておくことが好ましい。
【００８９】
図２に従い確率分布学習装置１００の動作について説明する。入力データ生成部１１０は、入力である学習用正常音si(i=1, …, N)から、入力データxi(i=1, …, N)を生成する（Ｓ１１０）。例えば、式(1)のように、学習用正常音siの対数振幅スペクトルを要素とするベクトルを生成し、これを入力データxiとすればよい。なお、学習用正常音siから生成される入力データxiとして、上記以外の音響特徴量を用いるようにしてもよい。
【００９０】
潜在変数推定部１２０は、第１確率分布q1(x;θ)のパラメータθを用いて、Ｓ１１０で生成した入力データxi(i=1, …, N)から、入力データxiに対応する潜在変数z0,i(i=1, …, N)を推定する（Ｓ１２０）。なお、ここで用いるパラメータθは、学習中の値である。
【００９１】
ここで、学習対象となる第１確率分布q1(x;θ)の変数xは、異常検知対象機器とは異なる１以上の機器から発せられた正常音から生成された入力データを示す変数であり、変数xは、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）と潜在変数z0を用いて、x=fK(fK-1(…(f1(z0))…))と表されるものとする。
【００９２】
したがって、入力データxiに対応する潜在変数z0,iは次式により与えられる。
【００９３】
【数１３】
2020031570.tif 000015
【００９４】
また、潜在変数z0,i(i=1, …, N)は、潜在変数z0の確率分布q0(z0)に従って生成されるものとする。ただし、確率分布q0(z0)は厳密な確率密度推定が容易であるという性質を有する。
【００９５】
したがって、確率分布q1(x;θ)は、確率分布q0(z0)を用いた次式により表現できる（式(5)参照）。
【００９６】
【数１４】
2020031570.tif 000016
【００９７】
ここで、θiは変換fiに対応するパラメータであり、θ=[θ1T, θ2T, …, θKT]Tとなる。
【００９８】
潜在変数推定部１２０は、入力データxから潜在変数z0を計算するニューラルネットワークNNを用いて実現できる。なお、計算式は以下の通りである。
【００９９】
【数１５】
2020031570.tif 000017
【０１００】
つまり、ニューラルネットワークNNは、入力データxを入力とし、逆変換fK-1, fK-1-1, …, f2-1, f1-1の順に計算を進めていき、最終的に潜在変数z0を出力するものである。
【０１０１】
上記変換fi(i=1, …, K)のうち、少なくとも１つの変換fi_0(ただし、i0は1≦i0≦Kを満たす整数)に対して、その逆変換fi_0-1は適応バッチ正規化となるようにする。このようにすることで、比較的少量の適応学習正常音を用いて第２確率分布q2(x;θ)を適応学習できるようになる（《ポイント》参照）。
【０１０２】
また、変換fi(i=1, …, K)のうち、少なくとも１つの変換fi_1(ただし、i1は1≦i1≦Kを満たす整数)に対して、その逆変換fi_1-1は、線形変換であり、当該線形変換に対応する行列が、下方三角行列と上方三角行列の積、または、下方三角行列と対角行列と上方三角行列の積として表されているようにしてもよい。このようにすることで、第１確率分布q1(x;θ)の学習時に必要となる確率密度の計算（後述する損失関数計算部１３０における計算）を低コストで実行できるようになる（《効果》の（３）参照）。
【０１０３】
具体的な変換fi(i=1, …, K)の例として、例えばK=5として、逆変換が式(8a)〜式(8e)で表される５つの変換を用いることができる。
【０１０４】
損失関数計算部１３０は、Ｓ１２０で推定した潜在変数z0,i(i=1, …, N)から、第１確率分布q1(x;θ)のパラメータθの最適化に用いる損失関数L(θ)の値を計算する（Ｓ１３０）。損失関数L(θ)は、例えば、式(11)のように負の対数尤度の平均として定義することができる。その際、入力データxi(i=1, …, N)の確率密度q1(xi;θ)を計算する必要があるが、入力データxiの確率密度q1(xi;θ)は入力データxiに対応する潜在変数z0,iの確率密度q0(z0,i)を用いて計算することができる。例えば、確率分布q0(z0)がガウス分布N(0, I)である場合、潜在変数z0,iの確率密度q0(z0,i)は、次式で計算できるので、
【０１０５】
【数１６】
2020031570.tif 000018
【０１０６】
式(5)’を用いて、上記計算した潜在変数z0,iの確率密度q0(z0,i)から入力データxiの確率密度q1(xi;θ)を計算することができる。
【０１０７】
パラメータ更新部１４０は、Ｓ１３０で計算した損失関数L(θ)の値を最適化（最小化）するように、第１確率分布q1(x;θ)のパラメータθを更新する（Ｓ１４０）。パラメータθの更新には、例えば、勾配降下法を用いるとよい。
【０１０８】
収束条件判定部１５０は、パラメータ更新の終了条件として事前に設定された収束条件を判定し、収束条件が満たされた場合はＳ１４０で更新したパラメータθを用いた第１確率分布q1(x;θ)を出力し、収束条件が満たされない場合はＳ１１０〜Ｓ１４０の処理を繰り返す（Ｓ１５０）。収束条件として、例えばＳ１１０〜Ｓ１４０の処理の実行回数が所定の回数に達したかという条件を採用することができる。出力に際して、Ｓ１４０で更新したパラメータθ（このパラメータのことを学習済みパラメータともいう）、逆変換fK-1(x;θK), fK-1-1(zK-1;θK-1), …, f2-1(z2;θ2), f1-1(z1;θ1)を出力するようにしてもよい。
【０１０９】
なお、入力データ生成部１１０、潜在変数推定部１２０、損失関数計算部１３０、パラメータ更新部１４０、収束条件判定部１５０を含む構成部を学習部１０５という。つまり、学習部１０５は、学習用正常音から第１確率分布を学習する構成部である。
【０１１０】
本実施形態の発明によれば、学習データの分布とテストデータの分布の相違を容易に調整することを可能とする第１確率分布q1(x;θ)を学習することができる。
【０１１１】
＜変形例＞
確率分布学習装置１００は、異常検知対象機器とは異なる１以上の機器から発せられた正常音である学習用正常音から、１つの第１確率分布q1(x;θ)を学習するものとして説明したが、異常検知対象機器とは異なる１以上の機器の数をW（Wは1以上の整数）とし、W個の機器の各々から発せられた正常音の分布を示す第１確率分布q1(1)(x;θ), …, q1(W)(x;θ)を学習するようにしてもよい。この場合、（ミニバッチに相当する）入力データxi(i=1, …, N)の中で同一の機器から発せられた学習用正常音から生成した入力データごとに適応バッチ正規化における平均と分散を計算することにより、潜在変数推定部１２０は潜在変数の推定処理を実行する。つまり、適応バッチ正規化における計算において、１組の平均と分散を用いる代わりに、W組の平均と分散を用いることになる。ただし、学習済みパラメータθは、W個の第１確率分布q1(1)(x;θ), …, q1(W)(x;θ)で共通となるため、１組である。
【０１１２】
＜第２実施形態＞
以下、図３〜図４を参照して確率分布適応学習装置２００を説明する。図３は、確率分布適応学習装置２００の構成を示すブロック図である。図４は、確率分布適応学習装置２００の動作を示すフローチャートである。図３に示すように確率分布適応学習装置２００は、入力データ生成部１１０と、パラメータ更新部２４０と、出力部２５０と、記録部１９０を含む。記録部１９０は、確率分布適応学習装置２００の処理に必要な情報を適宜記録する構成部である。記録部１９０は、例えば、確率分布学習装置１００を用いて学習した第１確率分布q1(x;θ)のパラメータθ（つまり、学習済みパラメータ）を記録しておく。この学習済みパラメータが、第２確率分布q2(x;θ)のパラメータθの初期値となるものである。なお、第２確率分布q2(x;θ)の変数xは、異常検知対象機器から発せられた正常音から生成された入力データを示す変数である。
【０１１３】
確率分布適応学習装置２００は、適応学習用正常音記録部９２０に接続している。適応学習用正常音記録部９２０には、事前に用意した適応学習用正常音が適応学習データとして記録されている。先述した通り、適応学習用正常音は、学習用正常音に比べると、比較的少量用意しておくのでよい。
【０１１４】
図４に従い確率分布適応学習装置２００の動作について説明する。入力データ生成部１１０は、入力である適応学習用正常音s’i(i=1, …, M)から、入力データx’i(i=1, …, M)を生成する（Ｓ１１０）。ここで、適応学習用正常音の数Mは、基本的には学習用正常音の数Nを超えない整数であるが、超える整数であってもかまわない。
【０１１５】
パラメータ更新部２４０は、Ｓ１１０で生成した入力データx’i(i=1, …, M)を用いて、第２確率分布q2(x;θ)のパラメータθを更新する（Ｓ２４０）。具体的には、逆変換が適応バッチ正規化である変換fi_0に対して、その計算に用いる平均と分散を入力データx’i(i=1, …, M)から計算される逆変換fi_0-1への入力データz’i_0,i（=fi_0-1-1(fi_0-2-1(…(fK-1(x’i))…))）の平均と分散で更新すればよい。つまり、式(7c)のmとs2を入力データz’i_0,i(i=1, …, M)の平均と分散で置換する。
【０１１６】
出力部２５０は、Ｓ２４０で更新したパラメータθを用いた第２確率分布q2(x;θ)を出力する（Ｓ２５０）。また、出力に際して、Ｓ２４０で更新したパラメータθ（このパラメータのことを学習済みパラメータともいう）、逆変換fK-1(x;θK), fK-1-1(zK-1;θK-1), …, f2-1(z2;θ2), f1-1(z1;θ1)を出力するようにしてもよい。
【０１１７】
なお、入力データ生成部１１０、パラメータ更新部２４０、出力部２５０を含む構成部を適応学習部２０５という。つまり、適応学習部２０５は、適応学習用正常音を用いて第１確率分布から第２確率分布を適応学習する構成部である。
【０１１８】
本実施形態の発明によれば、学習データの分布とテストデータの分布の相違を調整することにより、第２確率分布q2(x;θ)を学習することができる。
【０１１９】
＜変形例＞
確率分布学習装置１００がW個の第１確率分布q1(1)(x;θ), …, q1(W)(x;θ)を学習する場合においても、学習済みパラメータθは１組しかない。確率分布適応学習装置２００はこの１組のパラメータを用いて適応学習をする。
【０１２０】
＜第３実施形態＞
以下、図５〜図６を参照して異常検知装置３００を説明する。図５は、異常検知装置３００の構成を示すブロック図である。図６は、異常検知装置３００の動作を示すフローチャートである。図５に示すように異常検知装置３００は、入力データ生成部１１０と、異常度推定部３２０と、異常判定部３３０と、記録部３９０を含む。記録部３９０は、異常度検知装置３００の処理に必要な情報を適宜記録する構成部である。記録部３９０は、例えば、確率分布適応学習装置２００を用いて学習した第２確率分布q2(x;θ)のパラメータθ（つまり、学習済みパラメータ）を記録しておく。
【０１２１】
つまり、この学習済みパラメータを用いた第２確率分布q2(x;θ)を学習済みの第２確率分布として、異常検知装置３００は異常検知を実行する。
【０１２２】
図６に従い異常検知装置３００の動作について説明する。入力データ生成部１１０は、入力である異常検知対象音sから、入力データxを生成する（Ｓ１１０）。
【０１２３】
異常度推定部３２０は、学習済みの第２確率分布q2(x;θ)に基づいて、Ｓ１１０で生成した入力データxから、機器の異常の程度を示す異常度を推定する（Ｓ３２０）。以下、図７〜図８を参照して異常度推定部３２０について説明する。図７は、異常度推定部３２０の構成を示すブロック図である。図８は、異常度推定部３２０の動作を示すフローチャートである。図７に示すように異常度推定部３２０は、潜在変数計算部３２１と、異常度計算部３２２を含む。
【０１２４】
図８に従い異常度推定部３２０の動作について説明する。潜在変数計算部３２１は、Ｓ１１０で生成した入力データxから、入力データxに対応する潜在変数z0を計算する（Ｓ３２１）。具体的には、ニューラルネットワークNNのパラメータを第２確率分布の学習済みパラメータとしたニューラルネットワークを用いて計算することができる。
【０１２５】
異常度計算部３２２は、Ｓ３２１で計算した潜在変数z0から、入力データxに関する異常度A(x;θ)を計算する（Ｓ３２２）。異常度は、例えば次式により計算できる。
【０１２６】
【数１７】
2020031570.tif 000019
【０１２７】
確率分布q0(z0)が、厳密な確率密度推定が容易な分布である場合、入力データxの確率密度q2(x;θ)は、次式により計算することができる。
【０１２８】
【数１８】
2020031570.tif 000020
【０１２９】
式(5)’’の計算に際して、例えば、確率分布q0(z0)がガウス分布N(0, I)、逆変換が式(8a)〜式(8e)で表される５つの変換である場合は、式(10)や式(9a)〜式(9e)を用いればよい。
【０１３０】
異常度判定部３３０は、Ｓ３２０で推定した異常度A(x;θ)から、機器が異常であるか否かを示す判定結果を生成する（Ｓ３３０）。例えば、式(3)を用いて、R=1の場合は異常を示す判定結果、R=0の場合は正常を示す判定結果を生成すればよい。
【０１３１】
つまり、異常検知装置３００は、異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布と異常検知対象機器から発せられた正常音（適応学習用正常音）との関連付けに基づいて、異常検知対象機器から発せられた音（異常検知対象音）から、当該機器の異常の程度を示す異常度を推定する異常度推定部３２０とを含むものであると言える。関連付けの一例は、適応学習用正常音を用いて第１確率分布を更新することにより得た、異常検知対象機器から発せられた正常音の分布を示す第２確率分布である。
【０１３２】
本実施形態の発明によれば、学習データの分布とテストデータの分布の相違を調整した第２確率分布を用いて異常検知することにより、精度のよい異常検知が可能となる。つまり、異常検知精度の低下を抑えることが可能となる。
【０１３３】
なお、第１実施形態から第３実施形態では、ノーマライジング・フローを用いて異常度A(x;θ)を計算する方法を説明してきたが、その他の統計モデルを用いて異常度を求めることもできる。例えば、参考非特許文献７に記載の自己符号化器(AE: autoencoder)を用いることもできる。自己符号化器とは、符号化器（エンコーダ）と復号器（デコーダ）の組である。
（参考非特許文献７：Y. Koizumi, S. Saito, H. Uematsu, Y. Kawachi, and N. Harada, “Unsupervised Detection of Anomalous Sound based on Deep Learning and the Neyman-Pearson Lemma,” IEEE/ACM Transactions on Audio, Speech, and Language Processing, Vol.27-1, pp.212-224, 2019.）
以下、本発明の第４実施形態から第６実施形態に対する技術的背景と、各実施形態について説明する。
【０１３４】
＜技術的背景＞
自己符号化器を利用する場合、異常度は次式により計算できる。
【０１３５】
【数１９】
2020031570.tif 000021
【０１３６】
ここで、||・||はL2ノルム、EとDはそれぞれ符号化器と復号器、θEとθDはそれぞれ符号化器Eのパラメータと復号器Dのパラメータを表す。つまり、θ={θE, θD}である。
【０１３７】
符号化器E、復号器Dはいずれもニューラルネットワークとして構成できる。この場合、例えば、θは正常音の学習データの再構成（復元）誤差を最小化するように学習する。
【０１３８】
【数２０】
2020031570.tif 000022
【０１３９】
ここで、xiはi番目の正常音の学習データ、Nは正常音の学習データのサンプル数である。
【０１４０】
自己符号化器を用いた適応学習を実現するためには、適応バッチ正規化(AdaBN)を用いたニューラルネットワークとして、符号化器Eと復号器Dの両方、もしくはそのどちらか一方を構成すればよい。つまり、符号化器Eと復号器Dの両方、もしくはそのどちらか一方の計算の途中に適応バッチ正規化を利用する。例えば、符号化器EをE(x;θE)=W2[σ(W1x+b1)]+b2という3層ニューラルネットワークとして構成する代わりに、符号化器EをAdaBN層を挿入した次式を計算するニューラルネットワークとして構成すればよい。
【０１４１】
【数２１】
2020031570.tif 000023
【０１４２】
ここで、W1, W2は重み行列、b1, b2はバイアスベクトル、σは活性化関数を表す。AdaBN層とは、例えば式(8b)や式(8e)のように、AdaBN（適応バッチ正規化）の計算を実行する層のことである。
【０１４３】
＜第４実施形態＞
同種の機器が２台以上ある状況において、その中の１台の機器（これを異常検知対象機器とする）の異常を検知することを考える。そのために、まずこの異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する自己符号化器（以下、第１自己符号化器という）を学習する（学習フェーズ）。次に、異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）を用いて、第１自己符号化器から、異常検知対象機器から発せられた正常音を復元する自己符号化器（以下、第２自己符号化器という）を適応学習する（適応学習フェーズ）。そして、異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器が異常であるか否かを判定する（テストフェーズ（異常検知フェーズ））。
【０１４４】
自己符号化器学習装置４００は、学習用正常音から、第１自己符号化器を学習する。自己符号化器適応学習装置５００は、適応学習用正常音を用いて、第１自己符号化器から第２自己符号化器を適応学習する。異常検知装置６００は、異常検知対象音から、当該機器が異常であるか否かを判定する。
【０１４５】
以下、図９〜図１０を参照して自己符号化器学習装置４００を説明する。図９は、自己符号化器学習装置４００の構成を示すブロック図である。図１０は、自己符号化器学習装置４００の動作を示すフローチャートである。図９に示すように自己符号化器学習装置４００は、入力データ生成部１１０と、復元入力データ推定部４２０と、損失関数計算部４３０と、パラメータ更新部４４０と、収束条件判定部４５０と、記録部４９０を含む。記録部４９０は、自己符号化器学習装置４００の処理に必要な情報を適宜記録する構成部である。記録部４９０は、例えば、学習対象となる第１自己符号化器のパラメータθを記録する。パラメータθの初期値として、例えば乱数を用いて生成された値が記録されている。
【０１４６】
自己符号化器学習装置４００は、学習用正常音記録部９１０に接続している。学習用正常音記録部９１０には、事前に用意した学習用正常音が学習データとして記録されている。先述した通り、学習用正常音はできるだけ多く用意しておくことが好ましい。
【０１４７】
図１０に従い自己符号化器学習装置４００の動作について説明する。入力データ生成部１１０は、入力である学習用正常音si(i=1, …, N)から、入力データxi(i=1, …, N)を生成する（Ｓ１１０）。
【０１４８】
復元入力データ推定部４２０は、第１自己符号化器のパラメータθを用いて、Ｓ１１０で生成した入力データxi(i=1, …, N)から、入力データxiに対応する復元入力データyi(i=1, …, N)を推定する（Ｓ４２０）。なお、ここで用いるパラメータθは、学習中の値である。
【０１４９】
復元入力データ推定部４２０は、入力データxiから復元入力データyiを計算するニューラルネットワークを用いて実現できる。なお、計算式は以下の通りである。
【０１５０】
【数２２】
2020031570.tif 000024
【０１５１】
このニューラルネットワークが第１自己符号化器（ニューラルネットワークNNという）である。
【０１５２】
ここで、θ={θE, θD}（ただし、θEとθDはそれぞれ符号化器Eのパラメータと復号器Dのパラメータを表す）である。また、符号化器Eを構成するニューラルネットワーク、復号器Dを構成するニューラルネットワークの少なくとも１つは、AdaBN層を含むものとする。AdaBN層とは、AdaBN（適応バッチ正規化）の計算を実行する層のことである。つまり、ニューラルネットワークNNは、AdaBN層を含む。
【０１５３】
損失関数計算部４３０は、Ｓ４２０で推定した復元入力データyi(i=1, …, N)から、第１自己符号化器のパラメータθの最適化に用いる損失関数L(θ)の値を計算する（Ｓ４３０）。損失関数L(θ)は、例えば、次式により定義される異常度の平均とすることができる。
【０１５４】
【数２３】
2020031570.tif 000025
【０１５５】
パラメータ更新部４４０は、Ｓ４３０で計算した損失関数L(θ)の値を最適化（最小化）するように、第１自己符号化器のパラメータθを更新する（Ｓ４４０）。パラメータθの更新には、例えば、勾配降下法を用いるとよい。
【０１５６】
収束条件判定部４５０は、パラメータ更新の終了条件として事前に設定された収束条件を判定し、収束条件が満たされた場合はＳ４４０で更新したパラメータθを出力し、収束条件が満たされない場合はＳ１１０〜Ｓ４４０の処理を繰り返す（Ｓ４５０）。収束条件として、例えばＳ１１０〜Ｓ４４０の処理の実行回数が所定の回数に達したかという条件を採用することができる。
【０１５７】
なお、入力データ生成部１１０、復元入力データ推定部４２０、損失関数計算部４３０、パラメータ更新部４４０、収束条件判定部４５０を含む構成部を学習部４０５という。つまり、学習部４０５は、学習用正常音から第１自己符号化器（のパラメータθ）を学習する構成部である。
【０１５８】
本実施形態の発明によれば、学習データの分布とテストデータの分布の相違を容易に調整することを可能とする第１自己符号化器を学習することができる。
【０１５９】
＜第５実施形態＞
以下、図１１〜図１２を参照して自己符号化器適応学習装置５００を説明する。図１１は、自己符号化器適応学習装置５００の構成を示すブロック図である。図１２は、自己符号化器適応学習装置５００の動作を示すフローチャートである。図１１に示すように自己符号化器適応学習装置５００は、入力データ生成部１１０と、パラメータ更新部５４０と、出力部５５０と、記録部４９０を含む。記録部４９０は、自己符号化器適応学習装置５００の処理に必要な情報を適宜記録する構成部である。記録部４９０は、例えば、自己符号化器学習装置４００を用いて学習した第１自己符号化器のパラメータθ（つまり、学習済みパラメータ）を記録しておく。この学習済みパラメータが、第２自己符号化器のパラメータθの初期値となるものである。
【０１６０】
自己符号化器適応学習装置５００は、適応学習用正常音記録部９２０に接続している。適応学習用正常音記録部９２０には、事前に用意した適応学習用正常音が適応学習データとして記録されている。先述した通り、適応学習用正常音は、学習用正常音に比べると、比較的少量用意しておくのでよい。
【０１６１】
図１２に従い自己符号化器適応学習装置５００の動作について説明する。入力データ生成部１１０は、入力である適応学習用正常音s’i(i=1, …, M)から、入力データx’i(i=1, …, M)を生成する（Ｓ１１０）。ここで、適応学習用正常音の数Mは、基本的には学習用正常音の数Nを超えない整数であるが、超える整数であってもかまわない。
【０１６２】
パラメータ更新部５４０は、Ｓ１１０で生成した入力データx’i(i=1, …, M)を用いて、第２自己符号化器のパラメータθを更新する（Ｓ５４０）。具体的には、第１自己符号化器（ニューラルネットワークNN）に含まれる、適応バッチ正規化を計算する層であるAdaBN層に対して、その計算に用いる平均と分散を入力データx’i(i=1, …, M)から計算される復元入力データy’iの平均と分散で更新すればよい。
【０１６３】
出力部５５０は、Ｓ５４０で更新したパラメータθを出力する（Ｓ５５０）。
【０１６４】
なお、入力データ生成部１１０、パラメータ更新部５４０、出力部５５０を含む構成部を適応学習部５０５という。つまり、適応学習部５０５は、適応学習用正常音を用いて第１自己符号化器から第２自己符号化器を適応学習する構成部である。
【０１６５】
本実施形態の発明によれば、学習データの分布とテストデータの分布の相違を調整することにより、第２自己符号化器を学習することができる。
【０１６６】
＜第６実施形態＞
以下、図１３〜図１４を参照して異常検知装置６００を説明する。図１３は、異常検知装置３００の構成を示すブロック図である。図１４は、異常検知装置６００の動作を示すフローチャートである。図１３に示すように異常検知装置６００は、入力データ生成部１１０と、異常度推定部６２０と、異常判定部６３０と、記録部６９０を含む。記録部６９０は、異常度検知装置６００の処理に必要な情報を適宜記録する構成部である。記録部６９０は、例えば、自己符号化器適応学習装置５００を用いて学習した第２自己符号化器のパラメータθ（つまり、学習済みパラメータ）を記録しておく。
【０１６７】
つまり、この学習済みパラメータを用いた第２自己符号化器を学習済みの第２自己符号化器として、異常検知装置６００は異常検知を実行する。
【０１６８】
図１４に従い異常検知装置６００の動作について説明する。入力データ生成部１１０は、入力である異常検知対象音sから、入力データxを生成する（Ｓ１１０）。
【０１６９】
異常度推定部６２０は、学習済みの第２自己符号化器に基づいて、Ｓ１１０で生成した入力データxから、機器の異常の程度を示す異常度を推定する（Ｓ６２０）。以下、図１５〜図１６を参照して異常度推定部６２０について説明する。図１５は、異常度推定部６２０の構成を示すブロック図である。図１６は、異常度推定部６２０の動作を示すフローチャートである。図１５に示すように異常度推定部６２０は、復元入力データ計算部６２１と、異常度計算部６２２を含む。
【０１７０】
図１６に従い異常度推定部６２０の動作について説明する。復元入力データ計算部６２１は、Ｓ１１０で生成した入力データxから、入力データxに対応する復元入力データyを計算する（Ｓ６２１）。具体的には、ニューラルネットワークNNのパラメータを第２自己符号化器の学習済みパラメータとしたニューラルネットワークを用いて計算することができる。
【０１７１】
異常度計算部６２２は、Ｓ６２１で計算した復元入力データyから、入力データxに関する異常度A(x;θ)を計算する（Ｓ６２２）。異常度は、例えば式(13)により計算できる。
【０１７２】
異常度判定部６３０は、Ｓ６２０で推定した異常度A(x;θ)から、機器が異常であるか否かを示す判定結果を生成する（Ｓ６３０）。例えば、式(3)を用いて、R=1の場合は異常を示す判定結果、R=0の場合は正常を示す判定結果を生成すればよい。
【０１７３】
つまり、異常検知装置６００は、異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器と異常検知対象機器から発せられた正常音（適応学習用正常音）との関連付けに基づいて、異常検知対象機器から発せられた音（異常検知対象音）から、当該機器の異常の程度を示す異常度を推定する異常度推定部６２０とを含むものであると言える。関連付けの一例は、適応学習用正常音を用いて第１自己符号化器を更新することにより得た、異常検知対象機器から発せられた正常音を復元する第２自己符号化器である。
【０１７４】
本実施形態の発明によれば、学習データの分布とテストデータの分布の相違を調整した第２自己符号化器を用いて異常検知することにより、精度のよい異常検知が可能となる。つまり、異常検知精度の低下を抑えることが可能となる。
【０１７５】
次に、本発明の第７実施形態から第９実施形態に対する技術的背景と、各実施形態について説明する。
【０１７６】
＜技術的背景＞
本発明の実施形態は、ノーマライジング・フロー(Normalizing Flow)を用いてペアデータなしドメイン変換のデータ変換器の学習を行う。ノーマライジング・フローは、GANに比べて学習を行いやすいという特徴があり、その結果として従来のGANベースのペアデータなしドメイン変換技術(StarGAN)よりも安定して学習することができる。
【０１７７】
以下、本発明の実施形態で用いる従来技術について説明する。
《ノーマライジング・フロー(Normalizing Flow)》
ノーマライジング・フローは、データ生成に関する確率分布p(x)を近似する分布を求める手法である。
【０１７８】
{fi(z)}i=1Kを逆変換を有するK個の変換（ただし、fi(z):RD→RD, Rは実数の集合、Dは1以上の整数、Kは1以上の整数）とする。また、fi-1(z)(i=1, …, K)をfi(z)の逆変換とする。
【０１７９】
ノーマライジング・フローでは、N個の入力データの集合{xi}i=1Nに対して、それぞれ対応する潜在変数{z0,i}i=1Nが存在し、入力データxiは、K個の変換{fi(z)}i=1Kとxの潜在変数z0を用いた式(21)により、対応する潜在変数z0,iを変換したものであると考える。
【０１８０】
【数２４】
2020031570.tif 000026
【０１８１】
つまり、i=1, …, Kに対して、次式が成り立つ。
【０１８２】
【数２５】
2020031570.tif 000027
【０１８３】
なお、z1=f1(z0), z2=f2(z1), …, x=fK(zK-1)と表すこともある。
【０１８４】
更に、潜在変数{z0,i}i=1Nは、例えば等方ガウス分布のような、モンテカルロサンプリングが容易な確率分布q0(z0)から生成されると仮定する。このとき、入力データの集合{xi}i=1Nが従う確率分布q(x;θ)（xは入力データを示す変数）は、次の形で表現できる。
【０１８５】
【数２６】
2020031570.tif 000028
【０１８６】
ここで、z0=f1-1(f2-1(…(fK-1(x))…)))である。また、{θi}i=1Kは変換{fi(z)}i=1Kに対応するパラメータ、θ=[θ1T, θ2T, …, θKT]Tである。
【０１８７】
なお、確率分布q0(z0)は、モンテカルロサンプリングが容易な分布に限るものではなく、厳密な確率密度推定が容易な分布であればよい。厳密な確率密度推定が容易な分布の一例として、以下の条件を満たす確率分布p(x)が挙げられる。
（条件１）確率分布p(x)に対して、RD上の非負関数g(x)(≧0)が存在し、任意のx∈RDに対してp(x)=g(x)/∫g(x)dxとなる。
（条件２）関数g(x)に対して∫g(x)dxを計算することは容易である。
【０１８８】
条件２を満たす関数として、ガウス分布が挙げられる。一方、条件２を満たさない関数として、g(x)=exp(sin(x)-x2)が挙げられる。
【０１８９】
ノーマライジング・フローでは、確率分布q(x;θ)のパラメータθを入力データの集合{xi}i=1Nを用いて学習する。そして学習により得られたパラメータ（学習済みパラメータという）θを用いた確率分布q(x;θ)により本来のデータ生成に関する確率分布p(x)を近似する。
【０１９０】
ノーマライジング・フローでは、変換{fi(z)}i=1Kとして様々なものを用いることができる。例えば、参考非特許文献３に記載のバッチ正規化(Batch Normalization)やLeaky ReLU(Rectified Linear Unit：正規化線形関数)などを用いることができる。また、参考非特許文献４に記載の以下の線型変換を用いることもできる。
【０１９１】
【数２７】
2020031570.tif 000029
【０１９２】
ここで、L, U∈RD×Dは、それぞれ下三角行列、上三角行列である。この変換はLとUの対角成分の積の絶対値（つまり、|Πi=1DLiiUii|）によりヤコビアンの行列式の絶対値|det(∂f(z;θ)/∂z)|を計算することができるため、入力データxの確率密度q(x;θ)を容易に計算することができる（換言すれば、入力データxの確率密度q(x;θ)の計算コストを抑えることができる）という特徴がある（式(22)参照）。
【０１９３】
以下、簡単にバッチ正規化BN:x→y（x, y∈RD）について説明する。バッチ正規化BNは、入力データの集合{xi}i=1Nの各次元の要素の平均が0、分散が1になるように調整した後、スケール変換とシフト変換を行う。具体的には、次式により、yi=BN(xi)が計算される。
【０１９４】
【数２８】
2020031570.tif 000030
【０１９５】
ここで、γ, βは、それぞれスケール変換パラメータ、シフト変換パラメータであり、いずれも学習対象となるパラメータである。また、εは非負の実数であり、ゼロで割ることを避けたい場合は正の実数、避ける必要がない場合はゼロとすればよい。
【０１９６】
なお、スケール変換パラメータγ、シフト変換パラメータβを明示するため、BN(・)をBNγβ(・)と表すこともある。
【０１９７】
ノーマライジング・フローで用いるK個の変換すべてが同じ種類の変換である必要はない。したがって、例えば、変換f1(z)をバッチ正規化、変換f2(z)を線形変換というように、いくつかの種類の変換を組み合わせてもよい。
【０１９８】
《適応バッチ正規化(AdaBN:Adaptive Batch Normalization)》
ドメイン適応とは、モデル学習に用いる学習データの分布と学習済みモデルを用いた処理の対象であるテストデータの分布が異なる場合に、当該分布の相違により、学習済みモデルを用いた処理の精度が低下しないように、学習済みモデルを調整する技術のことである。ここで、学習データの集合、テストデータの集合がドメインであり、それぞれ学習用ドメイン、テスト用ドメインということもある。
【０１９９】
深層ニューラルネットワーク(DNN:Deep Neural Network)と組み合わせることができるドメイン適応の手法には様々なものがあるが、ここでは適応バッチ正規化について説明する（参考非特許文献５参照）。適応バッチ正規化は、バッチ正規化における平均・分散の計算と平均・分散の調整（式(24a)〜(24d)参照）をドメインごとに行うという手法である。つまり、式(24a)〜(24c)による計算を同一のドメインのデータごとに行うようにする。実際にテストする際には、テスト用ドメインの入力データの集合{xi}i=1Nに対して統計量（平均と分散）を計算して、その統計量を用いて式(24c)、式(24d)により処理結果yiを出力する。なお、変換が適応バッチ正規化である場合、AdaBN:x→y（x, y∈RD）と表すこともある。
【０２００】
《AdaFlow》
AdaFlowは、ノーマライジング・フローに適応バッチ正規化を導入した手法である。具体的には、ノーマライジング・フローで用いるK個の変換{fi(z)}i=1Kのうち少なくとも１つの変換fi_0(z)に対して、その逆変換fi_0-1(z)が適応バッチ正規化であるというものである。なお、適応バッチ正規化の計算のうち、スケール変換及びシフト変換、つまり、式(24d)の計算は、省略したものであってもよい。別の言い方をすると、逆変換fi_0-1(z)がγ=1, β=0である適応バッチ正規化であるとも表現できる。
【０２０１】
AdaFlowを用いて学習をすると、１つの学習済みモデルから複数ドメインの確率分布の生成が行えるようになる。また、複数ドメイン間でのデータ変換も行えるようになる。
【０２０２】
以下、AdaFlowについて具体的に説明する。AdaFlowとは、学習データから生成される入力データxを、確率分布q0(z0)に従って生成されているとみなす潜在変数z0(〜q(z0))に変換するニューラルネットワークである。ここでは5個の変換{fi(z)}i=15を用いる場合について説明する。つまり、z0は、z0=f1-1(f2-1(f3-1(f4-1(f5-1(x)))))として得られることになる。
【０２０３】
上記5個の変換{fi(z)}i=15を次式により定義する。なお、便宜上変換fiを示す代わりにその逆変換fi-1を示す（ただし、z4=f5-1(x), z3=f4-1(z4), z2=f3-1(z3), z1=f2-1(z2),z0=f1-1(z1)）。
【０２０４】
【数２９】
2020031570.tif 000031
【０２０５】
ここで、L2、L5∈RD×Dは、対角成分が1の下三角行列であり、上三角部分を除くすべての要素L2,ij, L5,ij(i≧j)が学習対象パラメータ（つまり、パラメータθ2またはパラメータθ5）である。D2、D5∈RD×Dは、対角行列であり、対角成分D2,ij, D5,ij(i=j)が学習対象パラメータ（つまり、パラメータθ2またはパラメータθ5）である。U2、U5∈RD×Dは、対角成分が1の上三角行列であり、下三角部分を除くすべての要素U2,ij, U5,ij(i≦j)が学習対象パラメータ（つまり、パラメータθ2またはパラメータθ5）である。また、α3(≧0)はLeakyReLUのパラメータであり、超パラメータとして設定してもよいし、学習対象パラメータ（つまり、パラメータθ3）としてもよい（α3を学習対象とする場合は、Parametric ReLUと呼ばれる（参考非特許文献６））。また、AdaBNγ_4β_4(・)及びAdaBNγ_1β_1(・)は上述の適応バッチ正規化であり、γ1, β1, γ4, β4が学習対象パラメータ（つまり、パラメータθ1またはパラメータθ4）である。
【０２０６】
また、変換{fi(z)}i=15のヤコビアンの行列式の絶対値は、それぞれ次式により計算される（ただし、x=f5(z4), z4=f4(z3), z3=f3(z2), z2=f2(z1), z1=f1(z0)）。
【０２０７】
【数３０】
2020031570.tif 000032
【０２０８】
ここで、s4’は（学習データから生成された入力データxに対応する）z4の標準偏差、δは（学習データから生成された入力データxに対応する）z3のうちゼロを下回る要素の数、s1’は（学習データから生成された入力データxに対応する）z1の標準偏差である。なお、変換f4, f1に対するヤコビアンの行列式の絶対値|det(∂f4(z3)/∂z3)|, |det(∂f1(z0)/∂z0)|に関しては、学習時ではなく推論時（つまり、学習済みモデルを用いた処理時）におけるヤコビアンの行列式の絶対値を用いて表記している。
【０２０９】
また、先述の通り、確率分布q0(z0)は厳密な確率密度推定が容易な確率分布とする。例えば、確率分布q0(z0)を平均が0、分散が単位行列Iのガウス分布N(0, I)とすると、確率分布q0(z0)は次式により表される。
【０２１０】
【数３１】
2020031570.tif 000033
【０２１１】
したがって、q1(x;θ)を学習データから生成された入力データxの確率分布とし、式(22)を用いることにより、潜在変数z0,iの確率密度q0(z0,i)から入力データxiの確率密度q1(xi;θ)が計算できることがわかる。
【０２１２】
続いて、パラメータθの学習方法について説明する。通常のニューラルネットワークの学習と同様、損失関数L(θ)を用いて、例えば、勾配降下法、Momentum SGD(Stochastic Gradient Descent)、ADAM(Adaptive Moment Estimation)、あるいはそれらの組合せにより学習することができる。ノーマライジング・フローを用いる場合、損失関数L(θ)として、次式で定義される負の対数尤度の平均を用いることが多い。
【０２１３】
【数３２】
2020031570.tif 000034
【０２１４】
なお、上記学習には、ミニバッチと呼ばれる学習データの集合を単位にして行うミニバッチ学習法を用いることができる。ここで、ミニバッチとは、すべての学習データからランダムに選択した複数の学習データのことである。このミニバッチごとに損失関数L(θ)の値を計算することになる。
【０２１５】
＜第７実施形態＞
確率分布学習装置１１００は、P種類のドメインDj（j=1, …, P）のデータ（以下、ドメインデータという。）から生成される入力データxを、確率分布q0(z0)に従って生成されているとみなす潜在変数z0(〜q(z0))に変換するニューラルネットワークのモデルパラメータθを学習する。このモデルパラメータθを用いて、確率分布q0(z0)から入力データxの確率分布q(x;θ)を求めることができる（式(22)参照）。ここで、ドメインDjは、Nj個のドメインデータを含むものとする。したがって、P種類のドメインの和集合に含まれるドメインデータの数をNとすると、N=ΣjNjとなる。
【０２１６】
以下、図１７〜図１８を参照して確率分布学習装置１１００を説明する。図１７は、確率分布学習装置１１００の構成を示すブロック図である。図１８は、確率分布学習装置１１００の動作を示すフローチャートである。図１７に示すように確率分布学習装置１１００は、入力データ生成部１１１０と、潜在変数推定部１１２０と、損失関数計算部１１３０と、パラメータ更新部１１４０と、収束条件判定部１１５０と、記録部１１９０を含む。記録部１１９０は、確率分布学習装置１１００の処理に必要な情報を適宜記録する構成部である。記録部１１９０は、例えば、入力データxの確率分布q(x;θ)のパラメータθを記録する。パラメータθの初期値として、例えば乱数を用いて生成された値が記録されている。
【０２１７】
確率分布学習装置１１００は、学習用ドメインデータ記録部１９１０に接続している。学習用ドメインデータ記録部１９１０には、事前に用意したドメインデータsi(i=1, …, N)と当該ドメインデータsiが含まれるドメインを識別するためのドメイン識別子jの組(si, j)が学習データとして記録されている。なお、(si, j)のことを学習用ドメインデータともいう。
【０２１８】
図１８に従い確率分布学習装置１１００の動作について説明する。Ｓ１１１０において、入力データ生成部１１１０は、入力である学習用ドメインデータ(si, j)(i=1, …, N、siはドメインデータ、jはsiを含むドメインのドメイン識別子である)を入力とし、ドメインデータsiから、入力データxi(i=1, …, N)を生成し、入力データxiとドメイン識別子jの組を出力する。ドメインデータから入力データを生成する方法は、入力データからドメインデータを復元できるのであれば、どのような方法であってもよい。例えば、ドメインデータが画像や音である場合、ドメインデータsiから生成される入力データxiとして、抽出元である画像や音を復元することができる所定の特徴量を用いるとよい。
【０２１９】
Ｓ１１２０において、潜在変数推定部１１２０は、Ｓ１１１０で生成した入力データxi(i=1, …, N)とドメインデータsiを含むドメインのドメイン識別子jの組を入力とし、確率分布q(x;θ)のパラメータθを用いて、入力データxi(i=1, …, N)から、入力データxiに対応する潜在変数z0,i(i=1, …, N)を推定し、出力する。なお、ここで用いるパラメータθは、学習中の値である。
【０２２０】
ここで、確率分布q(x;θ)の変数xは、P種類のドメインDjのドメインデータから生成された入力データを示す変数であり、変数xは、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）と潜在変数z0を用いて、x=fK(fK-1(…(f1(z0))…))と表されるものとする。
【０２２１】
したがって、入力データxiに対応する潜在変数z0,iは次式により与えられる。
【０２２２】
【数３３】
2020031570.tif 000035
【０２２３】
また、潜在変数z0,i(i=1, …, N)は、潜在変数z0の確率分布q0(z0)に従って生成されるものとする。ただし、確率分布q0(z0)は厳密な確率密度推定が容易であるという性質を有する。
【０２２４】
したがって、確率分布q(x;θ)は、確率分布q0(z0)を用いた次式により表現できる。
【０２２５】
【数３４】
2020031570.tif 000036
【０２２６】
ここで、θiは変換fiに対応するパラメータであり、θ=[θ1T, θ2T, …, θKT]Tとなる。
【０２２７】
潜在変数推定部１１２０は、入力データxから潜在変数z0を計算するニューラルネットワークNNを用いて実現できる。なお、潜在変数z0の計算式は以下の通りである。
【０２２８】
【数３５】
2020031570.tif 000037
【０２２９】
つまり、ニューラルネットワークNNは、入力データxを入力とし、逆変換fK-1, fK-1-1,…, f2-1, f1-1の順に計算を進めていき、最終的に潜在変数z0を出力するものである。
【０２３０】
上記変換fi(i=1, …, K)のうち、少なくとも１つの変換fi_0(ただし、i0は1≦i0≦Kを満たす整数)に対して、その逆変換fi_0-1は適応バッチ正規化となるようにする。
【０２３１】
また、変換fi(i=1, …, K)に含まれる変換fi_1(ただし、i1は1≦i1≦Kを満たす整数)に対して、その逆変換fi_1-1は、線形変換であり、当該線形変換に対応する行列が、下方三角行列と上方三角行列の積、または、下方三角行列と対角行列と上方三角行列の積として表されているようにしてもよい。
【０２３２】
具体的な変換fi(i=1, …, K)の例として、例えばK=5として、逆変換が式(25a)〜式(25e)で表される５つの変換を用いることができる。
【０２３３】
また、潜在変数推定部１１２０は、逆変換が適応バッチ正規化である変換fi_0に対して、逆変換fi_0-1の計算に用いる平均と分散を入力データxi(i=1, …, N)から計算される逆変換fi_0-1への入力データzi_0,i（=fi_0-1-1(fi_0-2-1(…(fK-1(xi))…))）の平均と分散をドメインごとに計算するため、(zi_0,i, j)（ただし、jは入力データxiの生成元であるドメインデータsiのドメイン識別子である）を記録部１１９０に記録しておく。以下、逆変換fi_0-1への入力データのドメインDjの平均と分散をそれぞれmi_0,jとsi_0,j2と表すことにする。なお、平均mi_0,jと分散si_0,j2を計算するのは、後述するように、収束条件判定部１１５０である。
【０２３４】
Ｓ１１３０において、損失関数計算部１１３０は、Ｓ１１２０で推定した潜在変数z0,i(i=1, …, N)を入力とし、潜在変数z0,i(i=1, …, N)から、確率分布q(x;θ)のパラメータθの最適化に用いる損失関数L(θ)の値を計算し、出力する。損失関数L(θ)は、例えば、式(28)のように負の対数尤度の平均として定義することができる。その際、入力データxi(i=1,…, N)の確率密度q(xi;θ)を計算する必要があるが、入力データxiの確率密度q(xi;θ)は入力データxiに対応する潜在変数z0,iの確率密度q0(z0,i)を用いて計算することができる。例えば、確率分布q0(z0)がガウス分布N(0, I)である場合、潜在変数z0,iの確率密度q0(z0,i)は、次式で計算できるので、
【０２３５】
【数３６】
2020031570.tif 000038
【０２３６】
式(22)を用いて、上記計算した潜在変数z0,iの確率密度q0(z0,i)から入力データxiの確率密度q(xi;θ)を計算することができる。
【０２３７】
Ｓ１１４０において、パラメータ更新部１１４０は、Ｓ１１３０で計算した損失関数L(θ)の値を入力とし、損失関数L(θ)の値を最適化（最小化）するように、確率分布q(x;θ)のパラメータθを更新し、出力する。パラメータθの更新には、例えば、勾配降下法を用いるとよい。
【０２３８】
Ｓ１１５０において、収束条件判定部１１５０は、パラメータ更新の終了条件として事前に設定された収束条件を判定し、収束条件が満たされた場合はＳ１１４０で更新したパラメータθ（このパラメータのことを学習済みパラメータという）を用いた確率分布q(x;θ)を出力する。その際、収束条件判定部１１５０は、Ｓ１１２０において記録した(zi_0,i, j) (i=1, …, N)を用いて、逆変換fi_0-1への入力データのドメインDj_0の平均mi_0,jと分散si_0,j2(j=1, …, P)とを計算し、出力する。一方、収束条件が満たされない場合、収束条件判定部１１５０は、Ｓ１１１０〜Ｓ１１４０の処理を繰り返す。収束条件として、例えばＳ１１１０〜Ｓ１１４０の処理の実行回数が所定の回数に達したかという条件を採用することができる。なお、Ｓ１１４０で更新したパラメータθ、逆変換fK-1(x;θK), fK-1-1(zK-1;θK-1), …, f2-1(z2;θ2), f1-1(z1;θ1)を出力するようにしてもよい。以下、逆変換fi_0-1への入力データのドメインDjの平均mi_0,jと分散si_0,j2のことをドメインDjのドメインデータから算出される統計量という。
【０２３９】
本実施形態の発明によれば、P種類のドメインDjのドメインデータから生成される入力データxの確率分布q(x;θ)を学習することができる。ノーマライジング・フローに基づくAdaFlowを用いて学習することにより、ペアデータなし学習を安定的に行うことが可能となる。
【０２４０】
＜第８実施形態＞
データ変換装置１２００は、確率分布学習装置１１００で学習した学習済みモデルパラメータθと、逆変換fi_0-1への入力データのドメインDjの平均mi_0,jと分散si_0,j2（j=1, …, P）とを用いて、ドメインDj_0のドメインデータをドメインDj_1のドメインデータに変換する（ただし、j0, j1は1≦j0, j1≦Pを満たす整数であり、j0≠j1である）。以下、ドメインDj_0のことを変換元ドメイン、ドメインDj_1のことを変換先ドメインという。
【０２４１】
以下、図１９〜図２０を参照してデータ変換装置１２００を説明する。図１９は、データ変換装置１２００の構成を示すブロック図である。図２０は、データ変換装置１２００の動作を示すフローチャートである。図１９に示すようにデータ変換装置１２００は、入力データ生成部１１１０と、潜在変数計算部１２２０と、出力データ計算部１２３０と、ドメインデータ生成部１２４０と、記録部１１９０を含む。記録部１１９０は、データ変換装置１２００の処理に必要な情報を適宜記録する構成部である。記録部１１９０は、例えば、確率分布学習装置１１００を用いて学習した確率分布q(x;θ)のパラメータθ（つまり、学習済みパラメータθ）を記録しておく。また、記録部１１９０は、例えば、逆変換fi_0-1への入力データのドメインDjの平均mi_0,jと分散si_0,j2（j=1, …, P）を記録しておく。
【０２４２】
図２０に従いデータ変換装置１２００の動作について説明する。Ｓ１１１０において、入力データ生成部１１１０は、入力である変換元ドメインDj_0のドメインデータsとそのドメイン識別子j0(変換元ドメイン識別子という)を入力とし、ドメインデータsから、入力データxを生成し、出力する。
【０２４３】
Ｓ１２２０において、潜在変数計算部１２２０は、Ｓ１１１０で生成した入力データxと変換元ドメイン識別子j0を入力とし、学習済みパラメータθと逆変換fi_0-1への入力データのドメインDj_0の平均mi_0,j_0と分散si_0,j_02とを用いて、入力データxから、入力データxに対応する潜在変数z0を計算し、出力する。入力データxに対応する潜在変数z0は、確率分布学習装置１１００で用いた変換fi（i=1, …, K）を用いて、次式により計算される。
【０２４４】
【数３７】
2020031570.tif 000039
【０２４５】
その際、学習済みパラメータθと逆変換fi_0-1への入力データのドメインDj_0の平均mi_0,j_0と分散si_0,j_02とを用いる。潜在変数計算部１２２０は、この点において確率分布学習装置１１００の潜在変数推定部１１２０と異なる。
【０２４６】
Ｓ１２３０において、出力データ計算部１２３０は、変換先ドメインの識別子である変換先ドメイン識別子j1とＳ１２２０で計算した潜在変数z0とを入力とし、学習済みパラメータθと逆変換fi_0-1への入力データのドメインDj_1の平均mi_0,j_1と分散si_0,j_12とを用いて、潜在変数z0から、潜在変数z0に対応する出力データx’を計算し、出力する。潜在変数z0に対応する出力データx’は、確率分布学習装置１１００で用いた変換fi（i=1, …, K）を用いて、次式により計算される。
【０２４７】
【数３８】
2020031570.tif 000040
【０２４８】
その際、学習済みパラメータθと逆変換fi_0-1への入力データのドメインDj_1の平均mi_0,j_1と分散si_0,j_12とを用いる。なお、出力データ計算部１２３０を実現するニューラルネットワークは、潜在変数計算部１２２０を実現するニューラルネットワークNNの出力を入力に、ニューラルネットワークNNの入力を出力にしたものとすればよい。
【０２４９】
潜在変数計算部１２２０と出力データ計算部１２３０による処理の様子を図２１に示す。図２１は、＜技術的背景＞の説明で用いた5個の変換{fi(z)}i=15により、入力データから潜在変数、潜在変数から出力データに変換する様子を示している。ここで、f1-1(j_0), f1(j_1)はドメインDj_0の平均mi_0,j_0と分散si_0,j_02を、f4-1(j_0), f4(j_1)はドメインDj_1の平均mi_0,j_1と分散si_0,j_12を用いた関数となる。
【０２５０】
Ｓ１２４０において、ドメインデータ生成部１２４０は、Ｓ１２３０で計算した出力データx’を入力とし、出力データx’から、変換先ドメインDj_1のデータである変換済ドメインデータs’を生成し、出力する。
【０２５１】
なお、潜在変数計算部１２２０、出力データ計算部１２３０を含む構成部をデータ変換部１２０５という。つまり、データ変換部１２０５は、変換元ドメインのドメインデータから生成した入力データを、変換先ドメインのドメインデータの生成元となる出力データに変換する構成部である。
【０２５２】
本実施形態の発明によれば、ドメイン間でデータを相互に変換することが可能となる。
【０２５３】
＜第９実施形態＞
第７実施形態及び第８実施形態では、Pを1以上の整数とし、P種類のドメインのドメインデータを用いるものとして説明した。ここでは、P=2とした場合のデータ変換装置１３００について説明する。
【０２５４】
以下、図２２〜図２３を参照してデータ変換装置１３００を説明する。図２２は、データ変換装置１３００の構成を示すブロック図である。図２３は、データ変換装置１３００の動作を示すフローチャートである。図２２に示すようにデータ変換装置１３００は、入力データ生成部１３１０と、潜在変数計算部１３２０と、出力データ計算部１３３０と、ドメインデータ生成部１３４０と、記録部１１９０を含む。記録部１１９０は、データ変換装置１３００の処理に必要な情報を適宜記録する構成部である。記録部１１９０は、例えば、確率分布学習装置１１００を用いて学習した確率分布q(x;θ)のパラメータθ（つまり、学習済みパラメータθ）を記録しておく。
【０２５５】
以下、変換元ドメインを第１ドメイン、変換先ドメインを第２ドメインと呼ぶことにし、それぞれD1、D2で表す。また、潜在変数計算部１３２０には、逆変換fi_0-1への入力データの第１ドメインD1の平均mi_0,1と分散si_0,12を設定しておく。同様に、出力データ計算部１３３０には、逆変換fi_0-1への入力データの第２ドメインD2の平均mi_0,2と分散si_0,22を設定しておく。
【０２５６】
図２３に従いデータ変換装置１３００の動作について説明する。Ｓ１３１０において、入力データ生成部１３１０は、第１ドメインのドメインデータsを入力とし、ドメインデータsから、入力データxを生成し、出力する。以下、この入力データのことを第１ドメインのドメインデータに対応する入力データともいう。
【０２５７】
Ｓ１３２０において、潜在変数計算部１３２０は、Ｓ１３１０で生成した入力データxを入力とし、学習済みパラメータθを用いて、入力データxから、入力データxに対応する潜在変数z0を計算し、出力する。
【０２５８】
Ｓ１３３０において、出力データ計算部１３３０は、Ｓ１３２０で計算した潜在変数z0を入力とし、学習済みパラメータθを用いて、潜在変数z0から、潜在変数z0に対応する出力データx’を計算し、出力する。
【０２５９】
Ｓ１３４０において、ドメインデータ生成部１３４０は、Ｓ１３３０で計算した出力データx’を入力とし、出力データx’から、第２ドメインのドメインデータs’を生成し、出力する。以下、この出力データのことを第２ドメインのドメインデータに対応する出力データともいう。
【０２６０】
なお、潜在変数計算部１３２０、出力データ計算部１３３０を含む構成部をデータ変換部１３０５という。つまり、データ変換部１３０５は、第１ドメインのドメインデータに対応する入力データを、第２ドメインのドメインデータに対応する出力データに変換する構成部である。
【０２６１】
以上の説明からわかるように、潜在変数計算部１３２０は、潜在変数を入力データに変換する、逆関数を有する関数（以下、第１関数という）を用いて計算するものであり、出力データ計算部１３３０は、潜在変数を出力データに変換する、逆関数を有する関数（以下、第２関数という）を用いて計算するものであるといえる。そして、第１関数と第２関数は、潜在変数z0を変数xに変換する所定の関数から導出されるものである。この所定の関数は、第１ドメインと第２ドメインの和集合を用いて得られる関数である。より具体的に言えば、当該所定の関数は、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）を用いて、x=fK(fK-1(…(f1(z0))…))と表される関数（ただし、変換fi(i=1, …, K)のうち、少なくとも１つの変換fi_0(1≦i0≦K)に対して、その逆変換fi_0-1は適応バッチ正規化である）として、第１ドメインと第２ドメインの和集合の要素であるドメインデータを学習データとして学習することにより、得られる関数である。また、第１関数は、当該和集合に含まれる第１ドメインのドメインデータから算出される統計量（具体的には、逆変換fi_0-1への入力データの第１ドメインD1の平均mi_0,1と分散si_0,12）を用いて、上記所定の関数から導出されるものであり、第２関数は、当該和集合に含まれる第２ドメインのドメインデータから算出される統計量（具体的には、逆変換fi_0-1への入力データの第２ドメインD2の平均mi_0,2と分散si_0,22）を用いて、所定の関数から導出されるものである。
【０２６２】
［適用例：教師あり異常検知問題への応用］
データ変換装置１３００を教師あり異常検知問題に応用することができる。ここで、教師あり異常検知とは、多数の正常データと少数の異常データから異常検知モデルを学習し、この異常検知モデルを用いて異常検知する枠組みである。
【０２６３】
異常データが多いほど高精度なモデルを学習することができるが、多くの異常データを集めるのは難しい。そこで、異常検知対象としたいドメインを複数用意し、できるだけ多くのデータを集め、確率分布学習装置１１００を用いて当該データからモデルパラメータθを学習する。そして、データ変換装置１３００を用いて、第１ドメインの異常データを第１ドメインとは異なる第２ドメインの異常データに変換する。このようにすることにより、収集に困難が伴う異常データを人工的に作り出し、その数を増加させることができ、結果としてより高精度な異常検知モデルを学習することが可能となる。
【０２６４】
例えば、第１ドメインを異常検知対象機器とは異なる１以上の機器から発せられた音の集合、第２ドメインを異常検知対象機器の音の集合とし、確率分布学習装置１１００を用いて、パラメータθを学習する。次に、データ変換装置１３００を用いて、第１ドメインのドメインデータである異常検知対象機器とは異なる１以上の機器から発せられた異常音から、第２ドメインのドメインデータとして異常検知対象機器の音を生成する。当該生成された異常検知対象機器の音は、異常音であることが期待される。そして、生成された異常検知対象機器の音を学習データとして用いて、第２ドメインの異常検知モデルを学習する。
【０２６５】
なお、発せられた音の多くは、正常音であると考えられる。学習に際しては、できるだけ多くのデータを用いるのが好ましいため、正常音、異常音を問わず、第１ドメインの音を学習に用いるようにするとよい。
本実施形態の発明によれば、ドメイン間でデータを相互に変換することが可能となる。その結果、例えば、異常検知モデル学習に用いる異常データを効率的に生成することができるようになる。
【０２６６】
＜実験結果＞
「風景写真」の集合と「風景画」の集合をドメインとし、ノーマライジング・フローのアーキテクチャとして参考非特許文献８に記載のGlowを採用し、GlowのActivation NormalizationをAdaBNに置き換えたニューラルネットワークAdaFlowを用いて学習を行う。風景写真と風景画の画像データをそれぞれ400枚ずつ集め、これらを用いてニューラルネットワークAdaFlowを学習させ、データ変換を行う。具体的には、「風景写真」を「風景画」に変換、または、「風景画」を「風景写真」に変換した。
（参考非特許文献８：Diederik P. Kingma, Prafulla Dhariwal, “Glow: Generative Flow with Invertible 1x1 Convolutions”, arXiv:1807.03039, https://arxiv.org/abs/1807.03039）
この実験、つまり、AdaFlowを用いたペアデータなしドメイン変換により、質のいい画像データが生成されることが確認できた。
【０２６７】
＜補記＞
図２４は、上述の各装置を実現するコンピュータの機能構成の一例を示す図である。上述の各装置における処理は、記録部２０２０に、コンピュータを上述の各装置として機能させるためのプログラムを読み込ませ、制御部２０１０、入力部２０３０、出力部２０４０などに動作させることで実施できる。
【０２６８】
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい）、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤ−ＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【０２６９】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくこととしてもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。
【０２７０】
ハードウェアエンティティでは、外部記憶装置（あるいはＲＯＭなど）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（上記、…部、…手段などと表した各構成要件）を実現する。
【０２７１】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【０２７２】
既述のように、上記実施形態において説明したハードウェアエンティティ（本発明の装置）における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【０２７３】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【０２７４】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０２７５】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０２７６】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【０２７７】
上述の本発明の実施形態の記載は、例証と記載の目的で提示されたものである。網羅的であるという意思はなく、開示された厳密な形式に発明を限定する意思もない。変形やバリエーションは上述の教示から可能である。実施形態は、本発明の原理の最も良い例証を提供するために、そして、この分野の当業者が、熟考された実際の使用に適するように本発明を色々な実施形態で、また、色々な変形を付加して利用できるようにするために、選ばれて表現されたものである。すべてのそのような変形やバリエーションは、公正に合法的に公平に与えられる幅にしたがって解釈された添付の請求項によって定められた本発明のスコープ内である。
【図１】
2020031570.tif 000042
【図２】
2020031570.tif 000043
【図３】
2020031570.tif 000044
【図４】
2020031570.tif 000045
【図５】
2020031570.tif 000046
【図６】
2020031570.tif 000047
【図７】
2020031570.tif 000048
【図８】
2020031570.tif 000049
【図９】
2020031570.tif 000050
【図１０】
2020031570.tif 000051
【図１１】
2020031570.tif 000052
【図１２】
2020031570.tif 000053
【図１３】
2020031570.tif 000054
【図１４】
2020031570.tif 000055
【図１５】
2020031570.tif 000056
【図１６】
2020031570.tif 000057
【図１７】
2020031570.tif 000058
【図１８】
2020031570.tif 000059
【図１９】
2020031570.tif 000060
【図２０】
2020031570.tif 000061
【図２１】
2020031570.tif 000062
【図２２】
2020031570.tif 000063
【図２３】
2020031570.tif 000064
【図２４】
2020031570.tif 000065
【手続補正書】
【提出日】令和3年1月21日(2021.1.21)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
本発明の一態様は、異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器を学習する学習部とを含む自己符号化器学習装置であって、前記第１自己符号化器は、適応バッチ正規化の計算を実行するAdaBN層を含むニューラルネットワークとして構成されるものである。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
＜第３実施形態＞
以下、図５〜図６を参照して異常検知装置３００を説明する。図５は、異常検知装置３００の構成を示すブロック図である。図６は、異常検知装置３００の動作を示すフローチャートである。図５に示すように異常検知装置３００は、入力データ生成部１１０と、異常度推定部３２０と、異常判定部３３０と、記録部３９０を含む。記録部３９０は、異常検知装置３００の処理に必要な情報を適宜記録する構成部である。記録部３９０は、例えば、確率分布適応学習装置２００を用いて学習した第２確率分布q2(x;θ)のパラメータθ（つまり、学習済みパラメータ）を記録しておく。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１６６
【補正方法】変更
【補正の内容】
【０１６６】
＜第６実施形態＞
以下、図１３〜図１４を参照して異常検知装置６００を説明する。図１３は、異常検知装置６００の構成を示すブロック図である。図１４は、異常検知装置６００の動作を示すフローチャートである。図１３に示すように異常検知装置６００は、入力データ生成部１１０と、異常度推定部６２０と、異常判定部６３０と、記録部６９０を含む。記録部６９０は、異常検知装置６００の処理に必要な情報を適宜記録する構成部である。記録部６９０は、例えば、自己符号化器適応学習装置５００を用いて学習した第２自己符号化器のパラメータθ（つまり、学習済みパラメータ）を記録しておく。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部と
を含む異常検知装置。
【請求項２】
請求項１に記載の異常検知装置であって、
前記関連付けは、
前記適応学習用正常音を用いて、前記第１確率分布を更新することにより、得た前記異常検知対象機器から発せられた正常音の分布を示す第２確率分布である
ことを特徴とする異常検知装置。
【請求項３】
請求項２に記載の異常検知装置であって、
前記第２確率分布q2(x;θ)の変数xは、前記異常検知対象機器から発せられた正常音から生成された入力データを示す変数であり、
前記変数xは、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）と潜在変数z0を用いて、x=fK(fK-1(…(f1(z0))…))と表されるものであり、
q0(z0)を潜在変数z0の確率分布とし、
入力データxの確率密度q2(x;θ)は、入力データxに対応する潜在変数z0=f1-1(f2-1(…(fK-1(x))…))の確率密度q0(z0)を用いて計算される
ことを特徴とする異常検知装置。
【請求項４】
請求項３に記載の異常検知装置であって、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、適応バッチ正規化である
ことを特徴とする異常検知装置。
【請求項５】
請求項３に記載の異常検知装置であって、
前記第２確率分布q2(x;θ)は、次式で表される
【数３９】
2020031570.tif 000066
（ただし、z1=f1(z0;θ1), z2=f2(z1;θ2), …, x=fK(zK-1;θK)、θi(i=1, …, K)は変換fiに対応するパラメータ、θ=[θ1T, θ2T, …, θKT]Tである）
ことを特徴とする異常検知装置。
【請求項６】
請求項４または５に記載の異常検知装置であって、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、線形変換であり、
前記線形変換に対応する行列は、下方三角行列と上方三角行列の積、または、下方三角行列と対角行列と上方三角行列の積として表されている
ことを特徴とする異常検知装置。
【請求項７】
異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音の分布を示す第１確率分布を学習する学習部と
を含む確率分布学習装置であって、
前記第１確率分布q1(x;θ)の変数xは、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音から生成された入力データを示す変数であり、
前記変数xは、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）と潜在変数z0を用いて、x=fK(fK-1(…(f1(z0))…))と表されるものであり、
q0(z0)を潜在変数z0の確率分布とし、
入力データxの確率密度q1(x;θ)は、入力データxに対応する潜在変数z0=f1-1(f2-1(…(fK-1(x))…))の確率密度q0(z0)を用いて計算されるものであり、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、適応バッチ正規化である
確率分布学習装置。
【請求項８】
請求項７に記載の確率分布学習装置であって、
前記変換fi(i=1, …, K)のうち、少なくとも１つの変換に対して、その逆変換は、線形変換であり、
前記線形変換に対応する行列は、下方三角行列と上方三角行列の積、または、下方三角行列と対角行列と上方三角行列の積として表されている
ことを特徴とする確率分布学習装置。
【請求項９】
異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部と
を含む異常検知装置。
【請求項１０】
請求項９に記載の異常検知装置であって、
前記関連付けは、
前記適応学習用正常音を用いて、前記第１自己符号化器を更新することにより、得た前記異常検知対象機器から発せられた正常音を復元する第２自己符号化器である
ことを特徴とする異常検知装置。
【請求項１１】
請求項１０に記載の異常検知装置であって、
前記第１自己符号化器は、適応バッチ正規化の計算を実行するAdaBN層を含むニューラルネットワークとして構成されるものである
ことを特徴とする異常検知装置。
【請求項１２】
異常検知対象機器とは異なる１以上の機器から発せられた正常音（以下、学習用正常音という）から、前記異常検知対象機器とは異なる１以上の機器から発せられた正常音を復元する第１自己符号化器を学習する学習部と
を含む自己符号化器学習装置であって、
前記第１自己符号化器は、適応バッチ正規化の計算を実行するAdaBN層を含むニューラルネットワークとして構成されるものである
自己符号化器学習装置。
【請求項１３】
異常検知対象機器とは異なる１以上の機器から発せられた正常音の集合と前記異常検知対象機器から発せられた正常音（以下、適応学習用正常音という）との関連付けに基づいて、前記異常検知対象機器から発せられた音（以下、異常検知対象音という）から、当該機器の異常の程度を示す異常度を推定する異常度推定部と
を含む異常検知装置。
【請求項１４】
第１ドメインのドメインデータに対応する入力データから、潜在変数を計算する潜在変数計算部と、
前記潜在変数から、第２ドメインのドメインデータに対応する出力データを計算する出力データ計算部と
を含むデータ変換装置であって、
前記潜在変数計算部は、逆関数を有する所定の関数（以下、第１関数という）を用いて計算するものであり、
前記出力データ計算部は、逆関数を有する所定の関数（以下、第２関数という）を用いて計算するものであり、
第１関数と第２関数は、潜在変数z0を変数xに変換する所定の関数から導出されるものである
データ変換装置。
【請求項１５】
請求項１４に記載のデータ変換装置であって、
前記所定の関数は、第１ドメインと第２ドメインの和集合を用いて得られる関数である
ことを特徴とするデータ変換装置。
【請求項１６】
請求項１５に記載のデータ変換装置であって、
前記所定の関数は、変換fi（i=1, …, K、Kは1以上の整数、変換fiに対して逆変換fi-1が存在する）を用いて、x=fK(fK-1(…(f1(z0))…))と表される関数（ただし、変換fi(i=1, …, K)のうち、少なくとも１つの変換fi_0(1≦i0≦K)に対して、その逆変換fi_0-1は適応バッチ正規化である）として、前記和集合のドメインデータを学習データとして学習することにより、得られる関数である
ことを特徴とするデータ変換装置。
【請求項１７】
請求項１６に記載のデータ変換装置であって、
第１関数は、前記和集合に含まれる第１ドメインのドメインデータから算出される統計量を用いて、前記所定の関数から導出されるものであり、
第２関数は、前記和集合に含まれる第２ドメインのドメインデータから算出される統計量を用いて、前記所定の関数から導出されるものである
ことを特徴とするデータ変換装置。
【請求項１８】
請求項１４ないし１７のいずれか１項に記載のデータ変換装置であって、
第１ドメインは、異常検知対象機器とは異なる１以上の機器から発せられた音の集合であり、
第２ドメインは、前記異常検知対象機器の音の集合であり、
前記第１ドメインのドメインデータは、前記異常検知対象機器とは異なる１以上の機器から発せられた異常音である
ことを特徴とするデータ変換装置。
【請求項１９】
請求項１から６、または、９から１１、または、１３のいずれか１項に記載の異常検知装置としてコンピュータを機能させるためのプログラム。
【国際調査報告】
2020031570.tif 000067
2020031570.tif 000068
2020031570.tif 000069
2020031570.tif 000070