(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024022489
(43)【公開日】2024-02-16
(54)【発明の名称】Generative Adversarial Network(GAN)のGeneratorの品質を向上させる情報処理装置
(51)【国際特許分類】
G06T 7/00 20170101AFI20240208BHJP
G06N 3/094 20230101ALI20240208BHJP
【FI】
G06T7/00 350C
G06N3/094
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023107197
(22)【出願日】2023-06-29
(31)【優先権主張番号】17/880,336
(32)【優先日】2022-08-03
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】000155469
【氏名又は名称】株式会社野村総合研究所
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】田篭 照博
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA06
5L096CA01
5L096DA01
5L096HA09
5L096HA11
5L096KA04
(57)【要約】 (修正有)
【課題】Conditional GAN(Generative Adversarial Network)を用いてデータを生成する場合に、指定されたクラスのデータを生成する精度を向上させる。
【解決手段】情報処理装置は、1つ以上のプロセッサと、1つ以上のプログラムを含むメモリと、を含み、プログラムは、情報処理装置に、条件付き敵対的生成ネットワークの学習アルゴリズムを実行して、ノイズベクトルと指定されるクラスとに基づいてクラスに属すデータを生成する生成モデルを学習させ、入力されるデータが指定したクラスであるかを分類する分類モデルを学習させ、形式検証アルゴリズムを実行することで、生成モデルの出力を分類モデルが分類する際にプロパティを満たすかを判定する。これらを実行させるプロパティは、生成モデルに対して指定する第1クラスと異なるクラスに分類されるデータを、生成モデルが生成しないことである。
【選択図】
図10
【特許請求の範囲】
【請求項1】
情報処理装置であって、
1つ以上のプロセッサと、
1つ以上のプログラムを含むメモリと、を含み、前記1つ以上のプログラムは、前記1つ以上のプロセッサによって実行されると、前記情報処理装置に、
条件付き敵対的生成ネットワークの学習アルゴリズムを実行することにより、ノイズベクトルと指定されるクラスとに基づいて前記クラスに属すデータを生成する生成モデルを学習させることと、
入力されるデータが前記指定したクラスであるかを分類する分類モデルを学習させることと、
形式検証アルゴリズムを実行することにより、前記生成モデルの出力を前記分類モデルが分類する際にプロパティを満たすかを判定することと、を実行させ、
前記プロパティは、前記生成モデルに入力されるノイズベクトルの一定のノルムの範囲内において、前記生成モデルに対して指定する第1クラスと異なるクラスに分類されるデータを、前記生成モデルが生成しないことである、情報処理装置。
【請求項2】
前記1つ以上のプロセッサは、前記情報処理装置に、
前記プロパティを満たすと判定されたことに応じて、前記判定に用いられたノイズベクトルと、ノルムと、前記第1クラスとのセットを、ストレージに格納すること、を更に実行させる、請求項1に記載の情報処理装置。
【請求項3】
前記1つ以上のプロセッサは、前記情報処理装置に、
前記プロパティを満たすと判定されたことに応じて、前記判定に用いられたノイズベクトルと、ノルムと、前記第1クラスとのセットを、学習された前記生成モデルのデータと関連付けて、ストレージに格納すること、を更に実行させる、請求項1に記載の情報処理装置。
【請求項4】
前記1つ以上のプロセッサは、前記情報処理装置に、
前記プロパティを満たすと判定されたことに応じて、前記判定に用いられたノイズベクトルと、ノルムと、前記第1クラスとのセットを、学習された前記生成モデルのデータと関連付けて電子デバイスに送信すること、を更に実行させる、請求項1に記載の情報処理装置。
【請求項5】
前記1つ以上のプロセッサは、
前記プロパティを満たすかを判定することを、ノルムの大きさを変更しながら繰り返し実行する、請求項1に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Generative Adversarial Network(GAN)のGeneratorの品質を向上させる情報処理装置に関する。
【背景技術】
【0002】
近年、ディープラーニング技術の1つとして、生成モデル(Generator)と識別モデル(Discriminator)とを敵対的に学習させることで、従来と比較して高品質な、実在しないデータの生成を可能にするGANと呼ばれる技術が知られている。
【0003】
一般的なGANのGeneratorには、入力としてランダムに生成されたノイズベクトルが与えられる。例えば、手書きの数字0から9のいずれかが書かれた画像を生成するように学習されたGeneratorにノイズベクトルを与える場合、例えばGeneratorは0から9までの数字のいずれかが書かれた画像を生成する。この場合、ユーザはGeneratorにどの数字が書かれた画像を生成すべきかを指定することができない。
【0004】
このような課題に対し、ノイズベクトルに加えて、Generatorの入力にクラスの情報を与え、指定されたクラスに分類されるデータを生成するように、Generatorを制御することができる、Conditional GAN(条件付き敵対的生成ネットワーク、単にCGANともいう)が提案されている(非特許文献1)。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Mehdi Mirza、外1名、「Conditional Generative Adversarial Nets」、arXiv、2014年11月6日、URL: https://arxiv.org/abs/1411.1784
【発明の概要】
【発明が解決しようとする課題】
【0006】
CGANのGeneratorにノイズベクトルとクラスを入力すれば、指定されたクラスに属するであろうデータが生成されるが、指定したクラスのデータを生成することができるかどうかはGeneratorの品質に依存する。つまり、Generatorの品質によっては、ユーザが特定のクラスを指定してデータを生成させた場合に、(正しく分類することができる)分類モデルが当該生成されたデータを特定のクラスとは別のクラスに分類するようなデータが生成されることがあり得る。
【0007】
本発明は、上記課題に鑑みてなされ、その目的は、Conditional GANを用いてデータを生成する場合に、指定されたクラスのデータを生成する精度を向上させる技術を実現することである。
【課題を解決するための手段】
【0008】
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
情報処理装置であって、
1つ以上のプロセッサと、
1つ以上のプログラムを含むメモリと、を含み、前記1つ以上のプログラムは、前記1つ以上のプロセッサによって実行されると、前記情報処理装置に、
条件付き敵対的生成ネットワークの学習アルゴリズムを実行することにより、ノイズベクトルと指定されるクラスとに基づいて前記クラスに属すデータを生成する生成モデルを学習させることと、
入力されるデータが前記指定したクラスであるかを分類する分類モデルを学習させることと、
形式検証アルゴリズムを実行することにより、前記生成モデルの出力を前記分類モデルが分類する際にプロパティを満たすかを判定することと、を実行させ、
前記プロパティは、前記生成モデルに入力されるノイズベクトルの一定のノルムの範囲内において、前記生成モデルに対して指定する第1クラスと異なるクラスに分類されるデータを、前記生成モデルが生成しないことである。
【発明の効果】
【0009】
本発明によれば、Conditional GANを用いてデータを生成する場合に、指定されたクラスのデータを生成する精度を向上させることが可能になる。
【図面の簡単な説明】
【0010】
【
図1】本発明の実施形態に係る情報処理システムの概要を説明する図
【
図2】本実施形態に係る情報処理装置のハードウェア構成例を示すブロック図
【
図3】本実施形態に係る情報処理装置の機能構成例を示すブロック図
【
図4】CGANの学習段階の処理について説明するための図
【
図5】本実施形態に係る、CGANと分類モデルとを用いた本実施形態のモデルの学習段階と推論段階の処理について説明するための図
【
図6】回帰モデルに形式検証を適用した場合を説明するための例(1)
【
図7】回帰モデルに形式検証を適用した場合を説明するための例(2)
【
図8】分類モデルに形式検証を適用した場合を説明するための例(1)
【
図9】分類モデルに形式検証を適用した場合を説明するための例(2)
【
図10】本実施形態に係る、情報処理装置におけるGAN高精度化処理の動作を示すフローチャート
【
図11】本実施形態に係る学習データ及びテストデータのデータ構造の一例を示す図
【
図12】本実施形態に係るモデルデータのデータ構造の一例を示す図
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴は任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0012】
<情報処理システムの概要>
図1を参照して、本実施形態に係る情報処理システムの一例について説明する。情報処理システム10は、例えば、情報処理装置100と、電子デバイス101と、通信端末102とから構成され、それぞれはネットワークを通じて通信可能である。情報処理装置100は、GAN高精度化処理を実行することにより、CGANの学習と形式検証を終えた学習済みの生成モデル(検証済みCGANともいう)を生成する。GAN高精度化処理、CGANの学習及び形式検証については後述する。情報処理装置100は、例えばサーバであり得るが、ネットワーク上に配置されるエッジノードであってもよい。本実施形態では、説明の簡単のため、サーバ装置が1台のコンピュータで構成される場合を例に説明するが、複数のコンピュータで構成されてもよいし、ホスト上で動作する仮想マシンによって具現化されてもよい。
【0013】
通信端末102は、GAN高精度化処理に必要なデータや設定値をユーザ103が指定したり、或いは、ユーザ103が例えば学習データなどの必要なデータを情報処理装置100にアップロードしたりする通信端末である。通信端末102は、例えばパーソナルコンピュータであるが、タブレット機器やスマートフォンであってもよい。
【0014】
電子デバイス101は、GAN高精度化処理によって学習、検証された生成モデルが配置される電子デバイスである。電子デバイス101は、生成モデルの推論段階の処理を実行して、例えば画像等のデータを生成する。電子デバイス101は、例えば、ユーザの指示に応じて、或いは、システムアップデートなどの特定のトリガの発生に応じて、検証済みCGANを情報処理装置100からダウンロードしてよい。
図1に示す例では、電子デバイス101が例えばモバイルデバイスである場合を示しているが、データの生成処理を行う他の電子デバイスであってよい。電子デバイス101は、検証済みCGANをダウンロードする装置に限らず、当該検証済みCGANを組み込んだ他のサーバ(例えばウェブアプリケーションサーバ)であってもよい。情報処理装置100がクラウドサービスのプラットフォーム上に構築される場合、電子デバイス101は当該プラットフォーム上の情報処理装置100以外の装置であってもよい。また、電子デバイス101が検証済みCGANの推論段階の処理を実行する例に限らず、電子デバイス101の代わりに、情報処理装置100が、(GAN高精度化処理に加えて)検証済みCGANの推論段階の処理を行ってもよい。
【0015】
詳細は後述するが、本実施形態に係るGAN高精度化処理を行うことにより、CGANのモデルの学習と形式検証とが行われる。このため、検証済みCGAN、すなわちGAN高精度化処理によって検証された生成モデル(Generator)は、指定したクラスに分類モデルが分類するようなデータの生成を保証する(指定したクラスに分類されるようなデータ生成の精度が向上する)。
【0016】
一般に、GANによって生成された生成モデルは、学習データの特徴を踏まえた、存在しないデータを生成することができる。このような特徴により、GANの生成モデルは、一例として、実際のデータを入手することが困難な、機械学習モデルの学習データを生成する用途に用いられることが期待されている。実際のデータを入手することが困難な学習データは、例えば、医療分野で用いられる画像データなどが含まれる。本実施形態に係るGAN高精度化処理は、指定したクラスに分類モデルが分類するようなデータの生成を保証することができるため、医療のような人命に関わり得るが故に学習データの品質も必然的に高い精度が求められる分野に対しても、指定のクラスに合致するデータを精度良く生成することができる。例えば、検査画像に基づいて所定の病気の有無を推定したり、或いは患者の病名を推定したりする機械学習モデルのための学習データを生成することができる。また、本実施形態に係るGAN高精度化処理は、自動運転のために用いられる機械学習モデルを学習させるための学習データ、災害対応で用いられる機械学習モデルを学習させるための学習データ、或いは、橋や道路などの大型建造物の建設、検査等で用いられる機械学習モデルを学習させるための学習データの生成に用いることができる。但し、これらの学習データの例は、本実施形態に係るGAN高精度化処理によって検証された生成モデルが生成するデータの一例であり、本実施形態に係る検証済みの生成モデルを適用可能な場面は上述の例に限定されない。例えば、生成モデルが生成するデータを、学習データとしてだけでなく、出力データとして各種分野でそのまま用いることもある。
【0017】
<情報処理装置のハードウェア構成例>
図2を参照して、情報処理装置100のハードウェア構成例について説明する。情報処理装置100は、メモリ202と、プロセッサ204と、通信インタフェース206と、ストレージ208と、入力インタフェース210とを含む。これらの要素はそれぞれバス214に接続され、バス214を介して互いに通信する。
【0018】
メモリ202は、例えばDRAMなどの揮発性の記憶媒体であって、データやプログラムを一次的に記憶する。また、ストレージ208は、データやプログラムを永続的に記憶する不揮発性の記憶媒体である。ストレージ208は、例えば半導体メモリやハードディスクであってよい。ストレージ208は、後述するニューラルネットワークを学習させるための学習データ、学習済みのニューラルネットワークをテストするためのテストデータ、形式検証の実行に必要な各種データを格納することができる。
【0019】
プロセッサ204は、例えば、中央演算装置(CPU)などの演算回路を含む。プロセッサ204は1つ以上のプロセッサで構成されてよい。プロセッサ204は、更に、機械学習などの統計処理をより高速に実行するための演算回路(例えばGPU)や専用ハードウェアを更に含んでよいし、内部にメモリを含んでもよい。プロセッサ204は、ストレージ208に記憶されているプログラムをメモリ202に展開、実行することにより、情報処理装置100の各種機能を実現する。
【0020】
通信インタフェース206は、情報処理装置100の外部の装置との間でデータの送受信を行うためのインタフェースである。通信インタフェース206は、各種標準に準拠した通信方式で通信可能な通信回路を含んでよい。通信インタフェース206はネットワークに接続され、ネットワークを介して通信端末102或いは電子デバイス101とデータをやりとりする。入力インタフェース210は、例えば情報処理装置100の管理者からの入力を受け付けるためのデバイスであるが、無くてもよい。
【0021】
電源212は、情報処理装置100の各部が動作するための電力を提供するための回路又はモジュールである。電源212は、バッテリを備えるように構成されてもよい。
【0022】
<GAN高精度化処理の概要>
情報処理装置の機能構成例について説明する前に、本実施形態に係るCGAN高精度化処理の概要について説明する。
【0023】
Conditional GAN(CGAN)は、例えば
図4に示す構成を有し、Generator401、Discriminator402とを含む。Generator401とDiscriminator402とは、例えば、それぞれ別個のディープニューラルネットワークで構成される。Generator401は、生成モデルとして機能し、Discriminator402は、識別モデルとして機能する。Generator401には、ノイズベクトルzと、Generator401が生成すべきデータのクラスを指定するクラスベクトルcとが入力される。Generator401は、ノイズベクトルzとクラスベクトルcとに基づいてデータを生成する。生成されたデータは生成物G(z、c)として出力される。ここで、Generator401によって生成された生成物G(z、c)は、偽物である「fake」のデータとなる。Discriminator402は、例えば実世界で得られるデータ等である実データ「real」のデータx405-2、又は、「fake」である生成物G(z、c)405-1である識別対象のデータと、クラスベクトルc405-3とを入力して、識別対象のデータが「real」であるか「fake」であるかを識別する。Discriminator402は、例えば、0~1で表される識別信号406を出力する。識別信号406は、例えば、数値の1が「real」に、数値の0が「fake」に対応する数値であり、例えば、識別信号406の値が0に近いほど「fake」を表す。CGANの学習では、Discriminator402は、出力した識別信号406が、入力された識別対象のデータを正しく識別するように(すなわち入力されたデータの正しい属性「real」又は「fake」と出力との誤差が低減するように)学習される。一方、Generator401は、Discriminator402が誤識別するようなデータを生成するように(すなわちDiscriminator402による出力と「real」又は「fake」との誤差が増大するように)学習される。学習が終了すると、Discriminator402は不要となり、学習済みのGenerator401のみが用いられる。
【0024】
学習済みのCGANのGeneratorでは、ノイズベクトル空間上のどのようなノイズベクトルzを与えたとしても、クラスベクトルcに設定したクラスに分類される生成物G(z、c)が生成されることが望ましいが、そのような完全なGeneratorを生成することは困難である。但し、上記分類を行う分類モデルが誤分類をする可能性もあるが、ここでは、分類モデルは十分に高い精度で正しく分類することができるモデルであるものとする。そこで、本実施形態に係るGAN高精度化処理では、分類モデルが高いスコアで分類したGeneratorの生成物G(z、c)の入力となったノイズベクトルzの一定のノルムの範囲内において、分類モデルが別のクラスに分類するような出力を生成しないことを保証する。ノルムは、例えばノイズベクトルzを2次元空間に配置した場合、zからの半径によりその大きさを表すことができる。つまり、どの程度の大きさのノルムを用いるかについてユーザが設定等により定めた場合に、Generatorが、ノルムの範囲内で生成されるノイズを用いて、分類モデルが別のクラスに分類するような出力を生成しないことが検証されれば、ノルムの範囲内で別のクラスに分類されるようなデータが生成されないことを保証できる。
【0025】
本実施形態に係るGAN高精度化処理で用いるモデルを、
図5を参照して説明する。GAN高精度化処理では、CGANの学習時に利用されるDiscriminatorとは別に、分類モデル(Classifier)を用意し、Generatorの生成したデータが、分類モデルによって正しいクラスに分類されるかどうかを形式手法で検証する。これにより、学習させたGeneratorが、指定したクラスに分類モデルが分類するようなデータを生成することを保証する(すなわちGeneratorの品質を保証する)。
【0026】
具体的には、GAN高精度化処理では、学習モデルの学習段階の処理では、CGANの学習と、Classifierの学習とを含む。そして、学習段階の処理が完了すると、学習済みのGeneratorとClassifierとを用いて形式検証を実行する。
【0027】
CGANの構成は、例えば
図4で示した構成と同様の構成を含む。すなわち、本実施形態のCGANは、Generator501、Discriminator502とを含む。Generator501とDiscriminator502とは、例えば、それぞれ別個のディープニューラルネットワークで構成される。Generator501は、生成モデルとして機能し、Discriminator502は、識別モデルとして機能する。Generator501には、ノイズベクトルz503と、Generator501が生成すべきデータのクラスを指定するクラスベクトルc504とが入力される。Generator501は、z503とc504とに基づいてデータを生成する。生成されたデータは生成物G(z、c)として出力される。ここで、Generator501によって生成された生成物G(z、c)は、偽物である「fake」のデータとなる。Discriminator502は、例えば実データ「real」のデータx505-2、又は、「fake」である生成物G(z、c)505-1である識別対象のデータと、クラスベクトルc505-3とを入力して、識別対象のデータが「real」であるか「fake」であるかを識別する。Discriminator502は、例えば、0~1で表される識別信号406を出力する。識別信号506は、例えば、数値の1が「real」に、数値の0が「fake」に対応する数値であり、例えば、識別信号506の値が0に近いほど「fake」を表す。
【0028】
CGANの学習は、
図4を参照して説明した学習方法と同様である。すなわち、Discriminator502は、出力した識別信号506が、入力された識別対象のデータを正しく識別するように(すなわち入力されたデータの正しい属性「real」又は「fake」と出力との誤差が低減するように)学習される。一方、Generator501は、Discriminator502が誤識別するようなデータを生成するように(すなわちDiscriminator502による出力と「real」又は「fake」との誤差が増大するように)学習される。学習が終了すると、Discriminator502は不要となる。
【0029】
GAN高精度化処理では、Classifier507を用いる。Classifier507は、例えばディープニューラルネットワークで構成され、分類モデルとして機能する。Classifier507の学習では、実データx508がClassifier507に入力され、Classifier507は、実データx508を分類したクラスと、そのクラスに分類されるスコア(例えば0~1の数値)を出力する。
図5では、図を簡略化するため、Classifier507が実データx508をクラスcに分類した場合に、クラスcと分類されるスコアを出力する例を示している。
【0030】
Classifier507の学習では、実データx508を入力した際のClassifier507の出力と、実データxのクラスを示す正解データとに基づいて、Classifier507が、正しいクラスについて高いスコアを出力するように、学習される。
【0031】
Generator501とClassifier507の学習が終了すると、学習済みのGenerator501とClassifier507とを用いて、形式検証を行う。Generator501には、ノイズベクトルz523と、生成するデータのクラスを指定するc524とが入力される。ノイズベクトルz523は、特定のノイズベクトルz
1から一定のノルムの範囲内であるノイズベクトルである。生成物G(z、c)525は、学習済みのGenerator521によって生成されるデータであり、Classifier522に入力され、Classifier522によって分類される。Classifier522は、生成物525を分類したクラスと、そのクラスに分類されるスコア(例えば0~1の数値)を出力する。上述のように、
図5では、図を簡略化するため、Classifier522が生成物525をクラスcに分類した場合に、クラスcと分類されるスコアを出力する例を示している。
【0032】
このようにすることで、推論段階において学習済みのモデルを使用する際には、検証されたノイズベクトルの範囲内(ノイズベクトルの一定のノルム範囲内)でランダムにノイズベクトルを生成して入力すれば、検証済みのGenerator521が、Classifier522をはじめとする分類モデルで正しく分類されるデータを生成することを保証することができる。
【0033】
次に、
図6から
図9を参照して、本実施形態に係る形式検証を用いた、モデル(ディープニューラルネットワーク)の検証について説明する。形式検証は、ハードウェアとソフトウェアが特定のプロパティを満たすか否かを数学的に証明することにより、例えばシステムが正しいことを保証する。本実施形態の検証では、ディープニューラルネットワークが特定のプロパティを満たすか否かを形式検証により検証する。
【0034】
図6は、回帰モデルに形式検証を適用した場合を説明するための例を示している。
図6に示す例では、ノード600と602は入力層のニューロンを示す。また、ノード604及びノード606は中間層のニューロンを示す。更にノード608は出力層のニューロンを示している。回帰モデルの例では、出力層は入力値に対応する予測値(ここでは与信スコア)を出力する。また、ノード間の矢印に対応付けられた数値は、ノードを繋ぐ重み係数の値を示す。なお、この例では簡単化のため、バイアスを0として省略している。
図6に示す例では、入力x
2が3以下である制約において、出力(予測結果)が5以上となる入力の組み合わせ(x
1、x
2)が存在するかを検証する。この例では、与信スコアが5以上になるような、勤続年数を示すパラメータと年収を示すパラメータの組が存在するかを検証する。
【0035】
図7は、上述の制約を満たす解が存在する場合の例を示している。(x
1、x
2)の組が(5、0)である場合に、入力値と重み係数の積の総和をノードごとに演算し、演算結果に中間層の活性化関数(例えばReLU)による演算を行うことにより、5なる与信スコアが得られる。
【0036】
図8は、分類モデルに形式検証を適用した場合を説明するための例を示している。
図8に示す例では、ノード800と802は入力層のニューロンを示す。また、ノード804及びノード806は中間層のニューロンを示す。更にノード808、810及び812は出力層のニューロンを示している。分類モデルの例では、出力層は、入力値が分類されるクラス(ここでは与信グレード)を出力する。ノード間の矢印に対応付けられた数値は、ノードを繋ぐ重み係数の値を示す。この例においても、バイアスを0として省略している。
図8に示す例では、入力x
1が3以下である制約において、出力層のノード808の値が最大となる入力の組み合わせ(x
1、x
2)が存在するかを検証する。この例では、与信グレードAの確率が最も高くなるような、勤続年数を示すパラメータと年収を示すパラメータの組が存在するかを検証する。
【0037】
図9は、上述の制約を満たす解が存在する場合の例を示している。(x
1、x
2)の組が(1、0)である場合に、入力値と重み係数の積の総和をノードごとに演算し、演算結果に中間層の活性化関数(例えばReLU)による演算を行うことにより、与信グレードAが最も高くなる。
【0038】
上述の例から把握できるように、生成物G(z、c)の入力となったノイズベクトルzの一定のノルムの範囲内において、生成モデルが、分類モデルが別のクラスに分類するような出力を生成しないことをプロパティとし、当該プロパティを証明することにより、学習済みのGeneratorが、特定の入力の範囲内で、指定したクラスとは別のクラスに分類される生成物G(x、y)を生成しないことを保証することができる。例えば、分類モデルとして示した重み係数はGenerator521及びClassifier522の重み係数と対応し、入力における制約は、ノイズベクトルにおけるノルムの範囲に対応する。また、出力ノードの分類は、Classifier522の出力層(分類結果)に対応し、出力の制約は、指定した分類クラス以外の確率が最も高くならないことに対応する。このように、形式検証を用いることにより、GeneratorとClassifierの重み係数を用いるニューラルネットワークにおいて、Generatorの品質を保証することができる。
【0039】
<情報処理装置の機能構成例>
次に、
図3を参照して、情報処理装置100の機能構成例について説明する。
図3に示す機能構成例は、例えば、プロセッサ204がストレージ208に記憶された1つ以上のプログラムをメモリ202に展開、実行することにより実現され得る。なお、本実施形態で説明する機能ブロックの各々は、統合されまたは分離されてもよく、また説明する機能が別のブロックで実現されてもよい。また、ハードウェアとして説明したものがソフトウェアで実現されてもよく、その逆であってもよい。
【0040】
データ取得部310は、例えば、学習データと、テストデータとを取得する。学習データは、生成したいデータを出力するGeneratorを学習させるためのデータと、Classifier507を学習させるためのデータとを含む。学習データは、CGANの学習における実データxを含む。当該実データxは、Classifier507を学習させる際にも用いられてよい。学習データは、Discriminator502を学習させる際の、学習データにおける正解を示すデータを更に有する。
【0041】
テストデータは、Classifier507を学習させた際に、Classifier507が所望の精度で分類処理を実行するかを評価する(テストする)ためのデータである。テストデータには、テストデータにおける正解を示すデータを更に有する。
【0042】
データ取得部310は、例えば、通信端末102から送信されるこれらのデータを受信してもよいし、予め、学習データ及びテストデータ330やモデルデータ332としてストレージ208に格納されたデータを、ユーザ指示に応じて取得してもよい。更に、情報処理装置100の外部のストレージにこれらのデータが格納されている場合、当該データをユーザ指示に応じて外部のストレージから取得してもよい。
【0043】
ユーザ設定取得部312は、例えば通信端末102から、GAN高精度化処理に関するユーザ設定を取得する。GAN高精度化処理に関する設定は、例えば、Generatorによる生成を保証するノルムの大きさ(ε)、ノイズベクトルの数、及び、CGAN及びClassifierを学習させる際のエポック数、学習率及び学習アルゴリズムなどの設定、テストデータに対する分類モデルの正解率の閾値などを含む。ノイズベクトルの数は、精度を保証するノイズベクトルの数を表す。本実施形態では、特定のノイズベクトルzは特定のクラスcのみと対応付けられる。このため、ユーザ設定取得部312は、個々のクラスに対して、精度を保証するノイズベクトルの数の設定を受け付けることができる。ユーザ設定取得部312は、CGAN及びClassifierを学習させる際のエポック数、及び学習率を、CGANのための設定とClassifierのための設定とをそれぞれ別個に受け付けることができる。ユーザ設定取得部312は、CGAN、及びClassifierを学習させる際に用いられる学習アルゴリズムとして、勾配降下法やAdamなどの指定を受け付けることができる。
【0044】
処理部314は、情報処理装置100の各部を制御して、情報処理装置100の各種動作を制御する。また、処理部314は、分類モデル生成部316、GANモデル生成部318、及び形式検証制御部320による動作を制御して、GAN高精度化処理を実現する。
【0045】
分類モデル生成部316は、データ取得部310が取得した学習データと、ユーザ設定取得部312で取得した設定とに従って、上述のClassifier507を学習させる。また、分類モデル生成部316は、設定されたエポック数や正解率に到達することによってClassifier507の学習を終了すると、テストデータを用いて、学習されたClassifier507がどれだけ誤分類をしないかを評価する。処理部314は、テストデータを用いたClassifierの評価結果が一定の正解率を超えない場合には、再びClassifier507の学習を実行するようにして、テストデータを用いた評価結果が一定の正解率を超えるまで繰り返してもよい。このとき、処理部314は、エポック数や学習率、学習アルゴリズムの少なくともいずれかを変更したうえで、より高い正解率が得られるようにClassifierの学習を繰り返し実行してもよい。分類モデル生成部316は、学習済みのClassifierのデータ(例えば重み付けパラメータ等)を、例えばストレージ208に格納する。
【0046】
GANモデル生成部318は、ユーザ設定取得部312によって取得されたユーザ設定と、データ取得部310が取得した学習データとに基づいて、CGANのGenerator501とDiscriminator502とを学習させる。GANモデル生成部318は、設定されたエポック数などに到達することによってCGANの学習を終了する。このとき、処理部314は、例えば、CGANの学習のために与えられる損失関数の値が所定の値より低くなっていない場合には、再びCGANの学習を実行するようにしてもよい。このとき、処理部314は、エポック数や学習率、学習アルゴリズムの少なくともいずれかを変更したうえでCGANの学習を繰り返し実行してもよい。GANモデル生成部318は、学習済みのGeneratorのデータ(例えば重み付けパラメータ等)を、例えばストレージ208に格納する。
【0047】
形式検証制御部320は、分類モデル生成部316とGANモデル生成部318によって得られた重み係数を用いるニューラルネットワークにおいて、特定のノイズベクトルの一定のノルムの範囲内において、分類モデルが別のクラスに分類するような出力を生成モデルが生成しないことを検証(判定)する。
【0048】
形式検証制御部320が、特定のノイズベクトルから設定されたノルムの範囲内において、Classifier522が別のクラスに分類するような出力をGenerator521が生成しないことの検証が完了した場合、処理部314は、当該特定のノイズベクトルと、クラスベクトルと、ノルムとを関連付けて、例えばストレージ208に格納する。GAN高精度化処理により、Generatorによる品質が保証されるノイズベクトルとクラスとノルムとのセットが特定されたため、当該データのセットを、推論段階で使用される生成モデルに適用すれば、当該生成モデルの動作を保証することができる。
【0049】
例えば、推論段階で生成モデルが使用される場合、ノイズベクトルが与えられる(例えばランダムに選択され或いはユーザによって指定されてよい)。このとき、与えられたノイズベクトルが当該セットにおけるノイズベクトルのノルムの範囲内に含まれる場合、当該ノルムに関連付けられているノイズベクトルとクラスとノルムのセットを生成モデルに提供することができる。これにより、生成モデルが動作する際に、提供されたノイズベクトルとクラスとノルムのセットを用いることで、品質の保証された生成モデルの実行を実現することができる。
【0050】
モデル配置部322は、電子デバイス101からの要求に応じて又は情報処理装置100の管理者の操作に応じて、形式検証の完了したモデル(すなわちGenerator)のデータを電子デバイス101に送信し、モデルデータを電子デバイス101にデプロイさせる。モデル配置部322は、モデルのデータと共に、特定のノイズベクトルと、クラスベクトルと、ノルムとのデータのセットを電子デバイス101に送信してもよい。上述のように、電子デバイス101がノイズベクトルに関連付けられたクラスベクトルとノルムとを、Generatorの使用の際に用いることで、指定されたクラスに属すデータを生成することが保証される。
【0051】
学習データ及びテストデータ330は、正解データを含む学習データ及びテストデータを含む。
図11には、CGANの生成モデルが画像を生成する場合の学習データ及びテストデータ330のデータ構造の一例を示している。学習データ及びテストデータ330は、データIDと、画像データと、正解ラベルと、データ種別とを含む。データIDは、データの識別子を示す。画像データは、学習データ及びテストデータの画像データである。
図11の例では、これらの画像データは、例えば、車載カメラから撮影された道路の画像データである。正解ラベルは、クラスに対応し、一例として、道路上に存在する車、人、犬などがクラスとして特定される。また、正解ラベルは、このデータ構造から独立したOne-Hotエンコーディングの形式で記載されてもよい。データ種別は、画像データが学習データとして用いられるのか、テストデータとして用いられるのかを示す。データ種別は、学習データとテストデータの比率が一定になるように、学習のたびにランダムに種別が割り当てられてもよいし、固定であってもよい。また、データ種別の列を設けること無く、テストデータと学習データのそれぞれについてデータ構造を有してもよい。
【0052】
モデルデータ332は、学習済みのGenerator521のモデルのデータ(ニューラルネットワークの構成に関するハイパーパラメータ及び重み係数のデータ)を含む。また、モデルデータ332は、形式検証制御部320による形式検証の完了した、特定のノイズベクトルと、クラスベクトルと、ノルムとのデータのセット(ノイズデータセットという)を含んでもよい。
図12には、モデルデータ332のデータ構造の一例を示している。モデルデータ332は、モデルIDと、重み係数と、ハイパーパラメータと、複数のノイズデータセットとを含む。モデルIDは、Generatorであるニューラルネットワークを識別する識別子である。重み係数は、Generatorが学習されたときに得られる重み係数である。ハイパーパラメータは、Generatorのレイヤ数、各レイヤのノード数、ネットワークの構造等のデータを含んでよい。ノイズデータセットは、上述の形式検証によって検証された、特定のノイズベクトルと、クラスベクトルと、ノルムとのデータのセットであり、学習された生成モデルと関連付けられていてよい。特定のノイズベクトルと、クラスベクトルと、ノルムとのデータのセットは、1つのクラスに対して複数のノイズベクトルとノルムの組み合わせが存在してよい。また、ノイズデータセットは、モデルIDがM001であるモデルに対して、異なるクラスのデータ(例えば、車両Aのクラスに対するセットと、人間のクラスに対するセットとが関連付けられていてもよい。このように、学習された生成モデルと、複数のクラスを含むノイズデータセットとを関連付けて保持し、電子デバイス101に提供することにより、電子デバイスは、当該生成モデルを使用して、複数のクラスに属すデータを精度良く生成することが可能になる。
【0053】
<情報処理装置におけるGAN高精度化処理の一連の動作>
次に、情報処理装置100において実行されるGAN高精度化処理の一連の動作について、
図10を参照して説明する。また、本処理は、プロセッサ204がストレージ208に格納されるコンピュータプログラムをメモリ202に展開、実行することにより実現される。以下の説明では、説明を容易にするために各ステップの処理主体をまとめてプロセッサ204として説明するが、処理内容に応じて処理部314などの各部が対応する処理を実行する。
【0054】
まずプロセッサ204は、学習データとニューラルネットワークの構成(ハイパーパラメータ等)を取得(S1001)したうえで、ユーザ設定を取得する(S1002)。S1001の処理とS1002の処理の順序は逆であってもよいし、通信端末102から両方のデータを一度に取得してもよい。ユーザ設定は、上述のように、例えば、Generatorによる生成を保証するノルムの大きさ(ε)、ノイズベクトルの数、及び、CGAN及びClassifierを学習させる際のエポック数、学習率及び学習アルゴリズムなどの設定、テストデータに対する分類モデルの正解率の閾値などを含むものとするが、いずれかのみが設定されてもよい。
【0055】
更に、プロセッサ204は、S1001で取得された学習データとS1002で取得されたユーザ設定とに基づいて、CGANの学習を実行する(S1003)。ユーザ設定に指定が無いパラメータについては、デフォルト値を設定して値を変更しながら繰り返し実行してもよい。プロセッサ204は、S1001で取得された学習データとS1002で取得されたユーザ設定とに基づいて、分類モデルの学習を実行する(S1004)。
【0056】
次に、プロセッサ204は、S1003で学習された生成モデル(Generator521)と、S1004で学習された分類モデル(Classifier522)とを用いて、形式検証アルゴリズムを実行する(S1005)。上述したように、本実施形態に係る形式検証では、Generator521の生成物G(z、c)の入力となったノイズベクトルzの一定のノルムの範囲内において、分類モデルが別のクラスに分類するような出力を生成しないことをプロパティとする。プロセッサ204は、当該プロパティを検証するプログラムコードを自動生成して実行する。なお、形式検証によるロバストネス評価は、公知の技術を用いて実現することができる。例えば、「Reluplex: An Efficient SMT Solver for Verifying Deep Neural Networks」と題する公知文献(Guy Kats, 外3名、2017年5月19日、URL: https://arxiv.org/pdf/1702.01135.pdf)に記載される、ReLUを活性化関数に用いるディープニューラルネットワークに対するプロパティを検証する技術等を用いることができる。
【0057】
プロセッサ204は、形式検証を実行した結果、Generator521とClassifier522とがプロパティを満たすかを判定する(S1006)。プロセッサ204は、プロパティを満たすと判定した場合には処理をS1008に進め、そうでない場合には、S1007に処理を進める。プロセッサ204は、設定値のうちの1つの設定値を変更し(S1007)、変更した設定値でS1003~1005の処理を再び実行する。S1007では、プロセッサ204は、ノルムの大きさがユーザによって指定されている場合、S1007が実行されるたびにノルムの大きさ(すなわち1つの設定値)を小さい値から大きな値へ変更するようにしてもよい。このようにすれば、S1003~S1005の処理によって形式検証を行いつつ、ノルムの大きさを徐々に大きくすることができる。なお、ノルムの値を徐々に大きくしてゆくと検証回数が増加して演算コストが大きくなるため、ノルムε*1.5を閾値として二分探索を実行するなど、演算コストを抑制するための処理を行ってもよい。更に、プロセッサ204は、ノイズベクトルとクラスベクトルを変更して、別のノイズベクトルとクラスベクトルに対する形式検証を行うようにしてもよい。
【0058】
そのほか、プロセッサ204は、複数のユーザ設定のうちの他の設定を固定したまま設定の1つを変更しながら、S1003~1005の処理を繰り返してよい。ユーザにとって、モデルを学習させるためのエポック数、学習率、学習アルゴリズムなどは、どの設定値を選択すれば最善の結果を得ることができるかを把握することは難しいことが多い。このため、勘や経験で設定するよりも、プロセッサがこれらの設定値を徐々に変更して得られる結果のなかから、形式検証が成功する結果を得ることができる値を特定できる方がユーザにとってメリットが大きい。
【0059】
次に、S1008では、プロセッサ204は、形式検証によってプロパティを満たすと判定されたときの、ノイズベクトルz、ノルムε、クラスcを、生成モデルであるGenerator521の重み係数やハイパーパラメータと共に、モデルデータ332としてストレージ208に格納する。
【0060】
S1009では、プロセッサ204は、S1002において指定された設定値或いは、S1007で変動させている設定値の全てについて、S1003~S1005の処理を実行したかを判定し、実行している場合には処理をS1010に進め、そうでない場合には再び処理をS1007に戻す。プロセッサ204は、本処理によって得られたモデルデータ、すなわちノイズベクトルz、ノルムε、クラスcのセットと、Generator521の重み係数等を、電子デバイス101に提供する。S1002の処理は、電子デバイス101からの要求やユーザ103による通信端末102からの指示に応じて行われてもよい。プロセッサ204は、その後、本処理の一連の動作を終了する。
【0061】
なお、電子デバイス101は、提供されたノイズベクトル、ノルム、クラスのセットの範囲内で、生成モデルを動作させることにより、品質の保証された生成物を出力することができる。例えば、一実装例として、電子デバイス101の利用者からクラスの指定を受け付けた場合に、その指定されたクラスに対応するノイズベクトルから対応するノルム範囲内のノイズベクトルをランダムに生成し、この生成されたノイズベクトルと指定されたクラスを入力として対応する生成モデルを動作させることにより、所望の生成物を出力することができる。ここでの一実施例ではユーザからクラスの指定を受け付ける構成としたが、ユーザからクラスの指定を受け付けない構成の場合もある。他方で、利用可能なノイズベクトルの空間が制限されることから生成モデルが生成する生成物のバリエーションが小さくなる。このため、電子デバイス101は、生成モデルを実行する際に、まずは(上記セットの制限のない)ランダムなノイズベクトルを用いて生成物を生成して、当該生成物を分類モデルで分類させ、生成物が指定したクラスに分類されない場合に、上記提供されたノイズベクトル、ノルム、クラスのセットの範囲内で、生成モデルを動作させるようにしてもよい。このようにしても、電子デバイス101は、結果として指定されたクラスのデータを出力することができる。
【0062】
以上説明したように、本実施形態は、CGANの学習アルゴリズムを実行することにより、ノイズベクトルと指定されるクラスとに基づいて、当該クラスに属すデータを生成する生成モデルを学習させるとともに、入力されるデータが指定したクラスであるかを分類する分類モデルを学習させるようにした。そして、形式検証アルゴリズムを実行することにより、生成モデルの出力を分類モデルが分類するモデルがプロパティを満たすかを判定するようにした。このとき、プロパティは、生成モデルに入力されるノイズベクトルの一定のノルムの範囲内において、生成モデルに対して指定する第1クラスと異なるクラスに分類されるデータを、生成モデルが生成しないこととした。このようにすることで、特定の範囲のノイズベクトルにおいて、CGANの生成モデルが、分類モデルが別のクラスに分類するようなデータを生成しないことを保証することができる。換言すれば、CGANを用いてデータを生成する場合に、指定されたクラスのデータを生成する精度を向上させることができる。
【0063】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
【符号の説明】
【0064】
100…情報処理装置、101…電子デバイス、102…通信端末、204…プロセッサ、202…メモリ、310…データ取得部、312…ユーザ設定取得部、314…処理部、322…モデル配置部