(57)【要約】【課題】機械学習モデルを用いて入力データの特徴が適切に反映されたデータを生成する。【解決手段】トレーニング方法は、入力データを第１の機械学習モデルに入力して偽データを出力させる第１工程と、実データペアと偽データペアとを含む複数個のデータペアを第２の機械学習モデルに入力して複数個の識別データを出力させる第２工程と、識別データと識別データの目標値を示す教師データとを用いて、第２の機械学習モデルの演算パラメータを調整する第３工程と、偽データに対して、第１の機械学習モデルのエンコーダによる処理を実行して特徴データを生成する第４工程と、識別データと教師データと入力データの特徴データと偽データの特徴データとを用いて、第１の機械学習モデルの演算パラメータを調整する第５工程と、を備える。第１工程〜第５工程を複数回繰り返すことによって第１の機械学習モデルと第２の機械学習モデルとが並行してトレーニングされる。【選択図】  図９
2020187583.tif 000002
【特許請求の範囲】
【請求項１】
機械学習モデルのトレーニング方法であって、
入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記偽データを出力させる第１工程であって、前記第１の機械学習モデルは、前記入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記偽データを生成するデコーダと、を含み、前記第１の機械学習モデルは、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行する、前記第１工程と、
第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２工程であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２工程と、
前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３工程と、
前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４工程と、
前記識別データと前記教師データと前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとの差分が大きくなり、かつ、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第５工程と、
を備え、
前記第１工程〜前記第５工程を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする、方法。
【請求項２】
請求項１に記載の方法であって、さらに、
前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとを用いずに、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第６工程を備え、
前記第１工程と前記第４工程と前記第６工程とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングした後に、前記第１工程〜前記第５工程を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする、方法。
【請求項３】
機械学習モデルのトレーニング方法であって、
入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記偽データを出力させる第１工程であって、前記第１の機械学習モデルは、前記入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記偽データを生成するデコーダと、を含み、前記第１の機械学習モデルは、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行する、前記第１工程と、
第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２工程であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２工程と、
前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３工程と、
前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４工程と、
前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差分が大きくなるように、前記複数個の第１の演算パラメータを調整する第５工程と、
前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとを用いずに、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第６工程と、
を備え、
前記第１工程と前記第４工程と前記第６工程とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングした後に、前記第１工程〜前記第５工程を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする、方法。
【請求項４】
請求項２または３のいずれかに記載の方法であって、
前記第６工程において、さらに、特定の前記入力データに対応する前記実データおよび前記偽データを用いて、前記実データと前記偽データとの差分が小さくなるように、前記第１の演算パラメータを調整する、方法。
【請求項５】
請求項１〜４のいずれかに記載の方法であって、
前記第５工程において、さらに、特定の前記入力データに対応する前記実データおよび前記偽データを用いて、前記実データと前記偽データとの差分が小さくなるように、前記第１の演算パラメータを調整する、方法。
【請求項６】
データ生成装置であって、
学習済みの第１の機械学習モデルを用いて入力データに対応する出力データを生成する生成部と、
前記出力データを出力する出力部と、
を備え、
前記第１の機械学習モデルは、前記第１の入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記出力データを生成するデコーダと、を含み、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行するモデルであり、
学習済みの前記第１の機械学習モデルの前記複数個の第１の演算パラメータは、トレーニング処理によって調整済みであり、
前記トレーニング処理は、
前記入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記出力データを偽データとして出力させる第１処理と、
第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２処理であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２処理と、
前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３処理と、
前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４処理と、
前記識別データと前記教師データと前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとの差分が大きくなり、かつ、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第５処理と、
を備え、
前記第１処理〜前記第５処理を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理である、データ生成装置。
【請求項７】
データ生成装置であって、
学習済みの第１の機械学習モデルを用いて入力データに対応する出力データを生成する生成部と、
前記出力データを出力する出力部と、
を備え、
前記第１の機械学習モデルは、前記第１の入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記出力データを生成するデコーダと、を含み、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行するモデルであり、
学習済みの前記第１の機械学習モデルの前記複数個の第１の演算パラメータは、トレーニング処理によって調整済みであり、
前記トレーニング処理は、
前記入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記出力データを偽データとして出力させる第１処理と、
第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２処理であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２処理と、
前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３処理と、
前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４処理と、
前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差分が大きくなるように、前記複数個の第１の演算パラメータを調整する第５処理と、
前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとを用いずに、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第６処理と、
を備え、
前記第１処理と前記第４処理と前記第６処理とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングした後に、前記第１処理〜前記第５処理を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理である、データ生成装置。
【請求項８】
請求項６または７に記載のデータ生成装置であって、
前記入力データは、第１の属性と第２の属性を有し、かつ、第３の属性を有しない画像データであり、
前記出力データは、前記第１の属性と前記第３の属性を有し、かつ、前記第２の属性を有しない画像データである、データ生成装置。
【請求項９】
入力データに対応する出力データを生成するための学習済みの第１の機械学習モデルであって、
前記第１の機械学習モデルは、前記第１の入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記出力データを生成するデコーダと、を含み、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行するモデルであり、
学習済みの前記第１の機械学習モデルの前記複数個の第１の演算パラメータは、トレーニング処理によって調整済みであり、
前記トレーニング処理は、
前記入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記出力データを偽データとして出力させる第１処理と、
第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２処理であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２処理と、
前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３処理と、
前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４処理と、
前記識別データと前記教師データと前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとの差分が大きくなり、かつ、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第５処理と、
を備え、
前記第１処理〜前記第５処理を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理である、前記学習済みの第１の機械学習モデル。
【請求項１０】
入力データに対応する出力データを生成するための学習済みの第１の機械学習モデルであって、
前記第１の機械学習モデルは、前記第１の入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記出力データを生成するデコーダと、を含み、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行するモデルであり、
学習済みの前記第１の機械学習モデルの前記複数個の第１の演算パラメータは、トレーニング処理によって調整済みであり、
前記トレーニング処理は、
前記入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記出力データを偽データとして出力させる第１処理と、
第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２処理であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２処理と、
前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３処理と、
前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４処理と、
前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差分が大きくなるように、前記複数個の第１の演算パラメータを調整する第５処理と、
前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとを用いずに、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第６処理と、
を備え、
前記第１処理と前記第４処理と前記第６処理とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングした後に、前記第１処理〜前記第５処理を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理である、前記学習済みの第１の機械学習モデル。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、機械学習モデルや該機械学習モデルを用いてデータを生成する技術に関する。
【背景技術】
【０００２】
近年、注目される機械学習モデルとして、敵対的生成ネットワーク（GANs: Generative Adversarial Networks）が知られている。敵対的生成ネットワークでは、ディスクリミネータとジェネレータと呼ばれる２つのネットワークが利用される。ディスクリミネータは実データと偽データとを識別することを目的としてトレーニングされ、ジェネレータは、ディスクリミネータが上述の識別を誤るような偽データを生成することを目的としてトレーニングされる。
【０００３】
非特許文献１には、条件付き敵対的生成ネットワークを利用して、特定の区分(ドメインと呼ばれる)に属する画像（例えば、線画）を、他の区分に属する画像（例えば、写真）に変換する技術が開示されている。この技術では、ジェネレータは、入力される画像をエンコードするエンコーダと、エンコードして得られたデータをデコードして変換後の画像を生成するデコーダと、を備えている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Isola, P. et al ”Image-to-Image Translation with Conditional Adversarial Networks.” IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2017)
【非特許文献２】Taigman, Y. et al ”Unsupervised cross-domain image generation.” arXivpreprint arXiv:1611.02200 (2016).
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記技術では、入力データと偽データとディスクリミネータによる識別結果を用いてジェネレータとを用いてジェネレータのトレーニングが行われるが、ジェネレータのトレーニングのさらなる改善が求められている。
【０００６】
本明細書は、機械学習モデルを効果的にトレーニングして、機械学習モデルを用いて入力データの特徴が適切に反映されたデータを生成する技術を開示する。
【課題を解決するための手段】
【０００７】
本明細書に開示された技術は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
【０００８】
［適用例１］機械学習モデルのトレーニング方法であって、入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記偽データを出力させる第１工程であって、前記第１の機械学習モデルは、前記入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記偽データを生成するデコーダと、を含み、前記第１の機械学習モデルは、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行する、前記第１工程と、第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２工程であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２工程と、前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３工程と、前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４工程と、前記識別データと前記教師データと前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとの差分が大きくなり、かつ、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第５工程と、を備え、前記第１工程〜前記第５工程を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする、方法。
【０００９】
上記構成によれば、第１の機械学習モデルの第１の演算パラメータは、識別データと教師データとの差分が大きくなるように調整されるだけでなく、第１の特徴データと第２の特徴データとを用いて、これらの特徴データの差分が小さくなるように調整される。この結果、入力データの特徴が第１の特徴データに適切に反映されるように、第１の演算パラメータを調整できる。従って、第１の機械学習モデルを効果的にトレーニングできるので、上記方法を用いてトレーニングされた機械学習モデルを用いれば、入力データの特徴が反映された適切な偽データを生成できる。
【００１０】
［適用例２］機械学習モデルのトレーニング方法であって、入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記偽データを出力させる第１工程であって、前記第１の機械学習モデルは、前記入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記偽データを生成するデコーダと、を含み、前記第１の機械学習モデルは、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行する、前記第１工程と、第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２工程であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２工程と、前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３工程と、前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４工程と、前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差分が大きくなるように、前記複数個の第１の演算パラメータを調整する第５工程と、前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとを用いずに、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第６工程と、を備え、前記第１工程と前記第４工程と前記第６工程とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングした後に、前記第１工程〜前記第５工程を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする、方法。
【００１１】
上記構成によれば、第１の特徴データと第２の特徴データとを用いて、これらの特徴データの差分が小さくなるように第１の機械学習モデルをトレーニングした後に、第１の機械学習モデルと第２の機械学習モデルとを並行してトレーニングする。この結果、入力データの特徴が第１の特徴データに適切に反映されるように、第１の機械学習モデルを効果的にトレーニングできるので、上記方法を用いてトレーニングされた機械学習モデルを用いれば、入力データの特徴が反映された適切な出力データを生成できる。
【００１２】
［適用例３］データ生成装置であって、学習済みの第１の機械学習モデルを用いて入力データに対応する出力データを生成する生成部と、前記出力データを出力する出力部と、を備え、前記第１の機械学習モデルは、前記第１の入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記出力データを生成するデコーダと、を含み、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行するモデルであり、学習済みの前記第１の機械学習モデルの前記複数個の第１の演算パラメータは、トレーニング処理によって調整済みであり、前記トレーニング処理は、前記入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記出力データを偽データとして出力させる第１処理と、第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２処理であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２処理と、前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３処理と、前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４処理と、前記識別データと前記教師データと前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとの差分が大きくなり、かつ、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第５処理と、を備え、前記第１処理〜前記第５処理を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理である、データ生成装置。
【００１３】
上記構成によれば、第１の機械学習モデルの第１の演算パラメータは、トレーニング処理において、識別データと教師データとの差分が大きくなるように調整されるだけでなく、第１の特徴データと第２の特徴データとを用いて、これらの特徴データの差分が小さくなるように調整されている。これによって、入力データの特徴が第１の特徴データに適切に反映されるように、第１の機械学習モデルが効果的にトレーニングされている。従って、データ生成装置は、機械学習モデルを用いて、入力データの特徴が反映された適切な出力データを生成できる。
【００１４】
［適用例４］データ生成装置であって、学習済みの第１の機械学習モデルを用いて入力データに対応する出力データを生成する生成部と、前記出力データを出力する出力部と、を備え、前記第１の機械学習モデルは、前記第１の入力データに対して、次元数を削減する次元削減処理を実行して第１の特徴データを生成するエンコーダと、前記第１の特徴データに対して、次元数を復元する次元復元処理を実行して前記出力データを生成するデコーダと、を含み、複数個の第１の演算パラメータを用いて前記次元削減処理および前記次元復元処理を実行するモデルであり、学習済みの前記第１の機械学習モデルの前記複数個の第１の演算パラメータは、トレーニング処理によって調整済みであり、前記トレーニング処理は、前記入力データを第１の機械学習モデルに入力することによって前記入力データに対応する前記出力データを偽データとして出力させる第１処理と、第１のペアと第２のペアとを含む複数個のデータペアを第２の機械学習モデルに入力して、前記複数個のデータペアに対応する複数個の識別データを出力させる第２処理であって、前記第１のペアは、前記入力データと、前記入力データに対応する実データと、から成る一対のデータであり、前記第２のペアは、前記入力データと、前記入力データに対応する前記偽データと、から成る一対のデータであり、前記識別データは、対応する前記データペアが前記第１のペアと前記第２のペアとのいずれであるかを識別した結果を示し、前記第２の機械学習モデルは、複数個の第２の演算パラメータを用いた演算を実行して前記識別データを生成する、前記第２処理と、前記識別データと前記識別データの目標値を示す教師データとを用いて、前記識別データと前記教師データとの差分が小さくなるように、前記複数個の第２の演算パラメータを調整する第３処理と、前記偽データに対して、前記エンコーダによる前記次元削減処理を実行して第２の特徴データを生成する第４処理と、前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差分が大きくなるように、前記複数個の第１の演算パラメータを調整する第５処理と、前記第１の特徴データと前記第２の特徴データとを用いて、前記識別データと前記教師データとを用いずに、前記第１の特徴データと前記第２の特徴データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整する第６処理と、を備え、前記第１処理と前記第４処理と前記第６処理とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングした後に、前記第１処理〜前記第５処理を複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理である、データ生成装置。
【００１５】
上記構成によれば、第１の機械学習モデルは、第１の特徴データと第２の特徴データとを用いて、これらの特徴データの差分が小さくなるようにトレーニングされた後に、第２の機械学習モデルとを並行してさらにトレーニングされている。この結果、第１の機械学習モデルは、入力データの特徴が第１の特徴データに適切に反映されるように、効果的にトレーニングされている。従って、データ生成装置は、機械学習モデルを用いて、入力データの特徴が反映された適切な偽データを生成できる。
【００１６】
なお、本明細書に開示される技術は、種々の形態で実現することが可能であり、例えば、上記トレーニング方法を実行するトレーニング装置、学習済みの機械学習モデル、これらの方法や装置を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施例のデータ生成装置２００の構成を示すブロック図である。
【図２】画像生成処理のフローチャートである。
【図３】入力画像と出力画像との一例を示す図である。
【図４】生成ネットワークＧＮの構成を示すブロック図である。
【図５】エンコーダＥＣの構成を示すブロック図である。
【図６】デコーダＤＣの構成を示すブロック図である。
【図７】本実施例のトレーニング装置１００の構成を示すブロック図である。
【図８】入力画像と実画像との一例を示す図である。
【図９】本実施例のネットワークシステム１０００の概念図である。
【図１０】識別ネットワークＤＮの構成を示すブロック図である。
【図１１】トレーニング処理のフローチャートである。
【図１２】事前処理のフローチャートである。
【図１３】メイン処理のフローチャートである。
【発明を実施するための形態】
【００１８】
Ａ．実施例
Ａ−１．データ生成装置の構成
次に、実施の形態を実施例に基づき説明する。図１は、本実施例のデータ生成装置２００の構成を示すブロック図である。
【００１９】
データ生成装置２００は、パーソナルコンピュータやスマートフォンなどの計算機である。データ生成装置２００は、データ生成装置２００のコントローラとしてのＣＰＵ２１０と、ＲＡＭなどの揮発性記憶装置２２０と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置２３０と、液晶ディスプレイなどの表示部２４０と、キーボードやマウスなどの操作部２５０と、通信インタフェース（ＩＦ）２７０と、を備えている。通信インタフェース２７０は、外部機器（例えば、プリンタ３００）と接続するためのインタフェースである。通信インタフェース２７０は、例えば、プリンタ３００が接続されたネットワークＮＷに接続するための有線または無線のインタフェースを含む。
【００２０】
揮発性記憶装置２２０は、ＣＰＵ２１０が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置２３０には、コンピュータプログラムＰＧｇと、後述する複数個の入力データＩＤを含む入力データ群ＩＧと、が格納されている。揮発性記憶装置２２０や不揮発性記憶装置２３０は、データ生成装置２００の内部メモリである。
【００２１】
コンピュータプログラムＰＧｇは、例えば、プリンタ３００の製造者が運用するサーバからダウンロードされる形態で提供される。これに代えて、コンピュータプログラムＰＧｇは、ＤＶＤ−ＲＯＭなどに格納される形態で提供されてもよい。ＣＰＵ２１０は、コンピュータプログラムＰＧｇを実行することにより、後述する画像生成処理を実行する。
【００２２】
コンピュータプログラムＰＧｇは、後述する生成ネットワーク（generator）ＧＮの機能をＣＰＵ２１０に実現させるコンピュータプログラムである生成ネットワークプログラムＧＮＭをモジュールとして含んでいる。
【００２３】
プリンタ３００は、インクジェット方式や電子写真方式の印刷装置であり、印刷材としてのインクやトナーを用いて用紙などの印刷媒体上に画像を印刷する。
【００２４】
Ａ−２．画像生成処理
図２は、画像生成処理のフローチャートである。この画像生成処理は、例えば、データ生成装置２００において、ユーザの開始指示に基づいて開始される。
【００２５】
Ｓ１０では、ＣＰＵ２１０は、１個の入力データＩＤを取得する。この入力データＩＤは、例えば、不揮発性記憶装置２３０に格納された入力データ群ＩＧの中から、ユーザの指定に基づいて選択された１個のデータである。入力データＩＤは、入力画像ＩＩを示す画像データである。
【００２６】
図３は、入力画像と出力画像との一例を示す図である。本実施例の入力画像ＩＩは、第１種の書体（フォント）で特定の文字を示す画像である。入力画像ＩＩは、縦方向および横方向にマトリクス状に配列された（Ｈ×Ｗ）個の画素を含む。Ｈは、入力画像ＩＩの縦方向の画素数であり、Ｗは、入力画像ＩＩの横方向の画素数である。本実施例では、Ｈ＝Ｗ＝２５６である。例えば、図３（Ａ）の入力画像ＩＩａは、第１種の書体で「Ａ」の文字を示す画像である。図３（Ｂ）の入力画像ＩＩｂは、第１種の書体で「Ｂ」の文字を示す画像である。
【００２７】
本実施例では、入力データＩＤは、複数個の画素を含む画像を示すビットマップデータであり、具体的には、ＲＧＢ値によって画素ごとの色を表すＲＧＢ画像データである。ＲＧＢ値は、３個の色成分の階調値（以下、成分値とも呼ぶ）、すなわち、Ｒ値、Ｇ値、Ｂ値を含むＲＧＢ表色系の色値である。Ｒ値、Ｇ値、Ｂ値は、例えば、所定の階調数（例えば、２５６）の階調値である。
【００２８】
Ｓ２０では、ＣＰＵ２１０は、入力データＩＤを生成ネットワークＧＮに入力して、入力データＩＤに対応する出力データＯＤを生成させる。出力データＯＤは、出力画像ＯＩを示す画像データであり、入力データＩＤと同様にＲＧＢ画像データである。本実施例の出力画像ＯＩは、第１種の書体とは異なる第２種の書体で、対応する入力画像ＩＩと同一の文字を示す画像である。例えば、図３（Ａ）の出力画像ＯＩａは、入力画像ＩＩａに対応する出力画像であり、第２種の書体で「Ａ」の文字を示す画像である。図３（Ｂ）の出力画像ＯＩｂは、入力画像ＩＩｂに対応する出力画像であり、第２種の書体で「Ｂ」の文字を示す画像である。本実施例では、出力画像ＯＩのサイズは、入力画像ＩＩのサイズと同じである。生成ネットワークＧＮの具体的な構成については後述する。
【００２９】
Ｓ３０では、ＣＰＵ２１０は、生成された出力データＯＤを出力する。例えば、ＣＰＵ２１０は、出力データＯＤを用いて出力画像ＯＩを示す印刷データを生成して、プリンタ３００に送信する。プリンタ３００は、印刷データを用いて出力画像ＯＩを印刷媒体上に印刷する。あるいは、ＣＰＵ２１０は、出力データＯＤを用いて出力画像ＯＩを表示部２４０に表示する。
【００３０】
Ａ−３．生成ネットワークＧＮの構成
図４は、生成ネットワークＧＮの構成を示すブロック図である。生成ネットワークＧＮは、エンコーダＥＣとデコーダＤＣとを含んでいる。
【００３１】
Ａ−３−１．エンコーダＥＣの構成
エンコーダＥＣは、入力データＩＤに対して、複数個の演算パラメータＰｅを用いて、次元削減処理を実行して、入力データＩＤの特徴（すなわち、入力画像ＩＩの特徴）を示す特徴データＣＤを生成する。本実施例では、入力データＩＤは、（２５６×２５６）個の画素のそれぞれの３個の成分値（Ｒ値、Ｇ値、Ｂ値）を含むので、（２５６×２５６×３）個の値を含むデータ、すなわち、（２５６×２５６×３）次元のデータである。特徴データＣＤは、本実施例では、（１×１×５１２）個の値を含むデータ、すなわち、５１２次元のデータである。このように、次元削減処理では、入力データＩＤの次元数が削減される。
【００３２】
図５は、エンコーダＥＣの構成を示すブロック図である。エンコーダＥＣは、入力層ＥＬ＿０と、複数個の畳込層ＥＬ＿１〜畳込層ＥＬ＿８を有するニューラルネットワークである。
【００３３】
入力層ＥＬ＿０は、入力データＩＤが入力される層である。１番目の畳込層ＥＬ＿１には、入力層ＥＬ＿０に入力された入力データＩＤがそのまま入力される。畳込層ＥＬ＿１は、（２５６×２５６×３）次元の入力データＩＤに対して、後述する演算処理を実行して（Ａ１×Ｂ１×Ｃ１）次元のデータを生成する（Ａ１、Ｂ１、Ｃ１は正の整数）。
【００３４】
ｋ番目（ｋは、２〜８の整数）の畳込層ＥＬ＿ｋには、（ｋ−１）番目の畳込層ＥＬ＿（ｋ−１）によって生成される（Ａｋ−１×Ｂｋ−１×Ｃｋ−１）次元のデータに対して、所定の後処理（後述）を実行して得られる（Ａｋ−１、Ｂｋ−１、Ｃｋ−１）次元の処理済データが入力される。畳込層ＥＬ＿ｋは、（Ａｋ−１×Ｂｋ−１×Ｃｋ−１）次元の処理済データに対して、後述する演算処理を実行して（Ａｋ×Ｂｋ×Ｃｋ）次元のデータを生成する（Ａｋ、Ｂｋ、Ｃｋは正の整数）。
【００３５】
各畳込層ＥＬ＿１〜ＥＬ＿８が実行する演算処理は、畳込処理(convolution)とバイアスの加算処理とを含む。畳込処理は、入力されたデータに対して、（ｐ×ｑ×ｒ）次元のｓ個のフィルタを順次に適用して入力されたデータとフィルタとの相関を示す相関値を算出する処理である。各フィルタを適用する処理では、フィルタをスライドさせながら複数個の相関値が順次に算出される。１個のフィルタは、（ｐ×ｑ×ｒ）個の重みを含んでいる。バイアスの加算処理は、算出された相関値に、１個のフィルタに対して１個ずつ準備されたバイアスを加算する処理である。ｓ個のフィルタに含まれる（ｐ×ｑ×ｒ×ｓ）個の重みと、ｓ個のフィルタに対応するｓ個のバイアスと、は、上述した複数個の演算パラメータＰｅであり、後述するトレーニング処理において更新される。
【００３６】
各畳込層ＥＬ＿１〜ＥＬ＿８によって生成されるデータの各値は、上述した相関値にバイアスを加えた値である。各畳込層ＥＬ＿１〜ＥＬ＿８によって生成されるデータに含まれるデータの個数（例えば、畳込層ＥＬ＿１の場合は（Ａ１×Ｂ１×Ｃ１））は、畳込処理におけるストライド（フィルタをスライドさせる量）と、フィルタの個数ｓと、によって決定される。
【００３７】
畳込層ＥＬ＿１によって生成されるデータの各値は、上述した後処理として、活性化関数に入力されて変換される。本実施例では、活性化関数には、いわゆるLeakyReLU（Leaky Rectified Linear Unit）が用いられる。
【００３８】
畳込層ＥＬ＿２〜畳込層ＥＬ＿８によって生成されるデータの各値は、上述した後処理として、バッチノーマライゼーション（Batch Normalization）によって変換された後に、さらに、活性化関数に入力されて変換される。バッチノーマライゼーションは、後述するトレーニング処理では、用いられる入力データの集合（バッチ）分について、各値の平均と分散を計算して、各値を正規化する処理である。画像生成処理では、トレーニング処理時にバッチごとに算出された平均と分散の移動平均値を用いて、各値が正規化される。
【００３９】
畳込層ＥＬ＿８によって生成されるデータに対して、上述した後処理を実行して得られる処理済データが、上述した特徴データＣＤである。
【００４０】
なお、本実施例にて、各畳込層ＥＬ＿１〜ＥＬ＿８によって生成されるデータの次元数（Ａ１×Ｂ１×Ｃ１）〜（Ａ８×Ｂ８×Ｃ８）は、以下の通りである。
（Ａ１×Ｂ１×Ｃ１）＝（１２８×１２８×６４）
（Ａ２×Ｂ２×Ｃ２）＝（６４×６４×１２８）
（Ａ３×Ｂ３×Ｃ３）＝（３２×３２×２５６）
（Ａ４×Ｂ４×Ｃ４）＝（１６×１６×５１２）
（Ａ５×Ｂ５×Ｃ５）＝（８×８×５１２）
（Ａ６×Ｂ６×Ｃ６）＝（４×４×５１２）
（Ａ７×Ｂ７×Ｃ７）＝（２×２×５１２）
（Ａ８×Ｂ８×Ｃ８）＝（１×１×５１２）
【００４１】
Ａ−３−２．デコーダＤＣの構成
デコーダＤＣは、エンコーダＥＣによって生成された特徴データＣＤに対して、複数個の演算パラメータＰｄを用いて、次元復元処理を実行して、上述した出力データＯＤを生成する。本実施例では、特徴データＣＤは、上述したように（１×１×５１２）個の値を含むデータ、すなわち、５１２次元のデータである。本実施例では、出力データＯＤは、入力データＩＤと同様に、（２５６×２５６×３）個の値を含むデータ、すなわち、（２５６×２５６×３）次元のデータである。本実施例では、このように、本実施例の次元復元処理では、特徴データＣＤの次元数が復元される。
【００４２】
図６は、デコーダＤＣの構成を示すブロック図である。デコーダＤＣは、複数個の転置畳込層ＤＬ＿１〜転置畳込層ＤＬ＿８を有するニューラルネットワークである。
【００４３】
１番目の転置畳込層ＤＬ＿１には、特徴データＣＤが入力される。転置畳込層ＤＬ＿１は、特徴データＣＤに対して、後述する演算処理を実行して（Ｄ１×Ｅ１×Ｆ１）次元のデータを生成する（Ｄ１、Ｅ１、Ｆ１は正の整数）。
【００４４】
ｍ番目（ｍは、２〜８の整数）の転置畳込層ＤＬ＿ｍには、（ｍ−１）番目の転置畳込層ＤＬ＿（ｍ−１）によって生成される（Ｄｍ−１、Ｅｍ−１、Ｆｍ−１）次元のデータに対して所定の後処理（後述）を実行して得られる（Ｄｍ−１、Ｅｍ−１、Ｆｍ−１）次元の処理済データが入力される。さらに、ｍ番目の転置畳込層ＤＬ＿ｍには、エンコーダＥＣの（９−ｍ）番目の畳込層ＥＬ＿（９−ｍ）によって生成されるデータに対して上述した後処理を実行して得られる（Ａ９−ｍ、Ｂ９−ｍ、Ｃ９−ｍ）次元の処理済みデータが入力される。例えば、図５、図６に示すように、デコーダＤＣの転置畳込層ＤＬ＿２には、エンコーダＥＣのＥＬ＿７によって生成されるデータに基づく処理済みデータが入力され、転置畳込層ＤＬ＿４には、エンコーダＥＣのＥＬ＿５によって生成されるデータに基づく処理済みデータが入力される。したがって、ｍ番目（ｍは、２〜８の整数）の転置畳込層ＤＬ＿ｍには、｛（Ｄｍ−１、Ｅｍ−１、Ｆｍ−１）＋（Ａ９−ｍ、Ｂ９−ｍ、Ｃ９−ｍ）｝次元の処理済データが入力される。転置畳込層ＤＬ＿ｍは、入力される処理済データに対して、後述する演算処理を実行して（Ｄｍ×Ｅｍ×Ｆｍ）次元のデータを生成する（Ｄｍ、Ｅｍ、Ｆｍは正の整数）。
【００４５】
各転置畳込層ＤＬ＿１〜ＤＬ＿８が実行する演算処理は、転置畳込処理（transposed convolution）とバイアスの加算処理とを含む。転置畳込処理は、入力されたデータに対して、ストライドに応じて適宜に値（例えばゼロの値）を追加して次元数を増加させた後に、上述した畳込処理と同様に（ｐ×ｑ×ｒ）次元のフィルタを用いた畳み込み演算を行う処理である。バイアスの加算処理は、転置畳込演算で算出された相関値に、１個のフィルタに対して１個ずつ準備されたバイアスを加算する処理である。ｓ個のフィルタに含まれる（ｐ×ｑ×ｒ×ｓ）個の重みと、ｓ個のフィルタに対応するｓ個のバイアスと、は、上述した複数個の演算パラメータＰｄであり、後述するトレーニング処理において更新される。
【００４６】
各転置畳込層ＤＬ＿１〜ＤＬ＿８によって生成されるデータの各値は、上述した相関値にバイアスを加えた値である。各転置畳込層ＤＬ＿１〜ＤＬ＿８によって生成されるデータに含まれるデータの個数（例えば、転置畳込層ＤＬ＿１の場合は（Ｄ１×Ｅ１×Ｆ１））は、転置畳込処理におけるストライド（ゼロ等の値を追加する量）と、フィルタの個数ｓと、によって決定される。
【００４７】
転置畳込層ＤＬ＿１〜ＤＬ＿３によって生成されるデータの各値は、上述した後処理として、上述したバッチノーマライゼーションによって変換される。そして、トレーニング処理では、バッチノーマライゼーションによって変換された各値は、さらに後処理として、ドロップアウトよって変換された後に、活性化関数に入力されて変換される。ドロップアウトは、過学習を抑制するために、ランダムに選択された一部の値を無効化（０にする）する処理である。活性化関数には、いわゆるReLU（Rectified Linear Unit）が用いられる。画像生成処理では、ドロップアウト処理は行われず、バッチノーマライゼーションによって変換された各値は、活性化関数に入力されて変換される。
【００４８】
転置畳込層ＤＬ＿４〜ＤＬ＿７によって生成されるデータの各値は、上述した後処理として、上述したバッチノーマライゼーションによって変換され、その後に活性化関数に入力されて変換される。転置畳込層ＤＬ＿４〜ＤＬ＿７の後処理では、トレーニング処理でも画像生成処理でもドロップアウトは行われない。
【００４９】
転置畳込層ＤＬ＿８によって生成される（Ｄ８×Ｅ８×Ｆ８）次元のデータが、上述した出力データＯＤである。したがって、転置畳込層ＤＬ＿８によって生成されるデータの次元数（Ｄ８×Ｅ８×Ｆ８）は、出力データＯＤの次元数（２５６×２５６×３）と等しい。
【００５０】
なお、本実施例にて、各転置畳込層ＤＬ＿１〜ＤＬ＿８によって生成されるデータの次元数（Ｄ１×Ｅ１×Ｆ１）〜（Ｄ８×Ｅ８×Ｆ８）は、以下の通りである。
（Ｄ１×Ｅ１×Ｆ１）＝（２×２×５１２）
（Ｄ２×Ｅ２×Ｆ２）＝（４×４×５１２）
（Ｄ３×Ｅ３×Ｆ３）＝（８×８×５１２）
（Ｄ４×Ｅ４×Ｆ４）＝（１６×１６×５１２）
（Ｄ５×Ｅ５×Ｆ５）＝（３２×３２×２５６）
（Ｄ６×Ｅ６×Ｆ６）＝（６４×６４×１２８）
（Ｄ７×Ｅ７×Ｆ７）＝（１２８×１２８×６４）
（Ｄ８×Ｅ８×Ｆ８）＝（２５６×２５６×３）
【００５１】
Ａ−４．生成ネットワークＧＮのトレーニング
上述した生成ネットワークＧＮは、入力データＩＤが入力された場合に、所望の出力データＯＤを生成できるように、トレーニングされている。以下では、生成ネットワークＧＮのトレーニングについて説明する。
【００５２】
Ａ−４−１．トレーニング装置の構成
図７は、本実施例の生成ネットワークＧＮのトレーニングを実行するトレーニング装置１００の構成を示すブロック図である。
【００５３】
トレーニング装置１００は、パーソナルコンピュータやサーバなどの計算機である。トレーニング装置１００は、トレーニング装置１００のコントローラとしてのＣＰＵ１１０と、ＲＡＭなどの揮発性記憶装置１２０と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置１３０と、液晶ディスプレイなどの表示部１４０と、キーボードやマウスなどの操作部１５０と、外部機器（例えば、プリンタ３００）と接続するための通信インタフェース（ＩＦ）１７０と、を備えている。
【００５４】
揮発性記憶装置１２０は、ＣＰＵ１１０が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置１３０には、コンピュータプログラムＰＧｔと、トレーニング用の複数個の入力データＩＤを含む入力データ群ＩＧと、複数個の実データＲＤを含む実データ群ＲＧと、教師データＬＤと、が格納されている。揮発性記憶装置１２０や不揮発性記憶装置１３０は、トレーニング装置１００の内部メモリである。
【００５５】
コンピュータプログラムＰＧｔは、例えば、プリンタ３００の製造者が運用するサーバからダウンロードされる形態で提供される。これに代えて、コンピュータプログラムＰＧｔは、ＤＶＤ−ＲＯＭなどに格納される形態で提供されてもよい。ＣＰＵ１１０は、コンピュータプログラムＰＧｔを実行することにより、後述するトレーニング処理を実行する。
【００５６】
トレーニング処理で用いられる入力データＩＤは、上述した画像生成処理で用いられる入力データＩＤと同様のＲＧＢ画像データである。入力データＩＤによって示される入力画像ＩＩは、上述したように、第１の書体（フォント）で特定の文字を示す画像である。実データＲＤは、上述した画像生成処理で生成される出力データＯＤと同様のＲＧＢ画像データである。複数個の実データＲＤは、入力データ群ＩＧに含まれる複数個の入力データＩＤのそれぞれに一対一で対応している。本実施例では、実データＲＤによって示される実画像ＲＩは、第２の書体で、対応する入力画像ＩＩと同一の文字を示す画像である。
【００５７】
図８は、入力画像と実画像との一例を示す図である。図８（Ａ）の入力画像ＩＩｃは、第１の書体で「Ｃ」の文字を示す画像である。図８（Ａ）の入力画像ＩＩｃに対応する実画像ＲＩｃは、第２の書体で「Ｃ」の文字を示す画像である。図８（Ｂ）の入力画像ＩＩｄは、第１種の書体で「ｄ」の文字を示す画像である。図８（Ｂ）の入力画像ＩＩｄに対応する実画像ＲＩｄは、第２の書体で「ｄ」の文字を示す画像である。
【００５８】
入力データＩＤと実データＲＤとのペアは、トレーニングを実行する作業者によって、所定数、例えば、１０００個準備される。
【００５９】
教師データＬＤは、後述する識別ネットワークＤＮが出力すべき識別データＤＤの目標値を示すデータである。教師データＬＤは、トレーニングを実行する作業者によって準備される。教師データＬＤについてはさらに後述する。
【００６０】
Ａ−４−２．ネットワークシステムの構成
図９は、本実施例のネットワークシステム１０００の概念図である。ネットワークシステム１０００は、生成ネットワークＧＮをトレーニングするために利用されるシステムであり、上述した生成ネットワークＧＮに加えて、識別ネットワーク（discriminator）ＤＮを含んでいる。生成ネットワークＧＮと識別ネットワークＤＮとは、いわゆる敵対的生成ネットワーク（GANs(Generative adversarial networks)）を構成している。
【００６１】
識別ネットワークＤＮには、入力データＩＤと、その入力データＩＤに対応する実データと、から成る一対のデータ（実データペアＰｒとも呼ぶ）が入力される。さらに、識別ネットワークＤＮには、入力データＩＤと、その入力データＩＤに対応する出力データＯＤと、から成る一対のデータ（偽データペアＰｆとも呼ぶ）が入力される。入力データＩＤに対応する出力データＯＤは、その入力データを生成ネットワークＧＮに入力することによって生成される出力データＯＤを意味する。また、敵対的生成ネットワークでは、出力データＯＤは「偽データＯＤ」とも呼ばれる。ここで、特定の実データＲＤに対応する入力データＩＤを生成ネットワークＧＮに入力することによって生成される偽データＯＤを、該特定の実データＲＤに対応する偽データＯＤとも呼ぶ。
【００６２】
識別ネットワークＤＮは、実データペアＰｒと偽データペアＰｆとのいずれかが入力されると、入力されたデータペアの真偽を識別する。すなわち、識別ネットワークＤＮは、は、入力されたデータペアに対して、複数個の演算パラメータＰｄｎを用いた演算処理を実行して、入力されたデータペアが実データペアと偽データペアとのいずれであるかを識別した結果を示す識別データＤＤを出力する。
【００６３】
識別データＤＤは、本実施例では、（３０×３０×１）個の値を含む（３０×３０×１）次元のデータである。識別ネットワークＤＮは、実データペアＰｒが入力される場合には、入力されたデータペアが実データペアＰｒであることを示す識別データＤＤを出力し、偽データペアＰｆが入力される場合には、入力されたデータペアが偽データペアＰｆであることを示す識別データＤＤを出力するようにトレーニングされる。
【００６４】
このために、本実施例では、教師データＬＤ（図７）として、実データペアＰｒに対応する教師データＬＤｒと、偽データペアＰｆに対応する教師データＬＤｆと、の２種類が準備される。教師データＬＤｒは、入力されたデータペアが実データペアＰｒであることを示すデータであり、全ての値が「１」である（３０×３０×１）次元のデータである。教師データＬＤｆは、入力されたデータペアが偽データペアＰｆであることを示すデータであり、全ての値が「０」である（３０×３０×１）次元のデータである。
【００６５】
仮に、識別データＤＤを１次元のデータとする場合には、識別ネットワークＤＮにおいて１次元まで次元数を削減する過程で、入力された実データや偽データによって示される画像を大域的な特徴を示す情報が失われる可能性がある。この場合には、識別ネットワークＤＮのトレーニングが進まなくなる可能性がある。また、識別データＤＤを１次元のデータとする場合には、識別ネットワークＤＮの層数、ひいては、演算パラメータの個数が過度に大きくなり、トレーニングに要する時間が過度に長くなる。本実施例では、識別データＤＤを（３０×３０×１）次元のデータとすることによって、入力されたデータペアの真偽を識別するための情報が失われることを抑制し、かつ、迅速なトレーニングを実現することができる。
【００６６】
図１０は、識別ネットワークＤＮの構成を示すブロック図である。識別ネットワークＤＮは、入力層Ｌ＿０と、複数個の畳込層Ｌ＿１〜畳込層Ｌ＿５を有するニューラルネットワークである。
【００６７】
入力層Ｌ＿０は、偽データペアＰｆと実データペアＰｒとのいずれかが入力される層である。１番目の畳込層Ｌ＿１には、入力層Ｌ＿０に入力されたデータペアがそのまま入力される。データペアを構成する入力データＩＤの次元数は（２５６×２５６×３）であり、データペアを構成する実データＲＤまたは偽データＯＤの次元数は（２５６×２５６×３）である。このため、データペアの次元数は、（２５６×２５６×６）である。畳込層Ｌ＿１は、（２５６×２５６×６）次元の入力データＩＤに対して、後述する演算処理を実行して（Ｇ１×Ｈ１×Ｉ１）次元のデータを生成する（Ｇ１、Ｈ１、Ｉ１は正の整数）。
【００６８】
ｎ番目（ｎは、２〜５の整数）の畳込層Ｌ＿ｎには、（ｎ−１）番目の畳込層Ｌ＿（ｎ−１）によって生成される（Ｇｎ−１×Ｈｎ−１×Ｉｎ−１）次元のデータに対して、所定の後処理（後述）を実行して得られる（Ｇｎ−１、Ｈｎ−１、Ｉｎ−１）次元の処理済データが入力される。畳込層Ｌ＿ｎは、（Ｇｎ−１×Ｈｎ−１×Ｉｎ−１）次元の処理済データに対して、後述する演算処理を実行して（Ｇｎ×Ｈｎ×Ｉｎ）次元のデータを生成する（Ｇｎ、Ｈｎ、Ｉｎは正の整数）。
【００６９】
各畳込層Ｌ＿１〜Ｌ＿５が実行する演算処理は、エンコーダＥＣの畳込層の演算処理と同様に、畳込処理(convolution)とバイアスの加算処理とを含む。畳込処理で用いられるフィルタに含まれる複数個の重みと、各フィルタに対応するバイアスと、は、上述した複数個の演算パラメータＰｅであり、後述するトレーニング処理において更新される。なお、畳込処理では、生成されるデータの次元数を調整するためにデータを補うゼロパディングが適宜に行われる。
【００７０】
畳込層Ｌ＿１によって生成されるデータの各値は、上述した後処理として、活性化関数に入力されて変換される。本実施例では、活性化関数には、いわゆるLeakyReLU（Leaky Rectified Linear Unit）が用いられる。
【００７１】
畳込層Ｌ＿２〜畳込層Ｌ＿４によって生成されるデータの各値は、上述した後処理として、バッチノーマライゼーション（Batch Normalization）によって変換された後に、さらに、活性化関数に入力されて変換される。バッチノーマライゼーションは、上述したデコーダＤＣの説明において説明した通りである。
【００７２】
畳込層Ｌ＿５によって生成される（Ｇ５×Ｈ５×Ｉ５）次元のデータが、上述した識別データＤＤである。したがって、畳込層Ｌ＿５によって生成されるデータの次元数（Ｇ５×Ｈ５×Ｉ５）は、識別データＤＤの次元数（３０×３０×１）と等しい。
【００７３】
なお、本実施例にて、各畳込層Ｌ＿１〜Ｌ＿８によって生成されるデータの次元数（Ｇ１×Ｈ１×Ｉ１）〜（Ｇ５×Ｈ５×Ｉ５）は、以下の通りである。
（Ｇ１×Ｈ１×Ｉ１）＝（１２８×１２８×６４）
（Ｇ２×Ｈ２×Ｉ２）＝（６４×６４×１２８）
（Ｇ３×Ｈ３×Ｉ３）＝（３２×３２×２５６）
（Ｇ４×Ｈ４×Ｉ４）＝（３１×３１×５１２）
（Ｇ５×Ｈ５×Ｉ５）＝（３０×３０×１）
【００７４】
本実施例では、識別ネットワークＤＮおよび生成ネットワークＧＮをトレーニングするために、識別データＤＤと教師データＬＤとの間の誤差値Ｅｇａｎが用いられる。誤差Ｅｇａｎは、本実施例では、シグモイドクロスエントロピー誤差が用いられる。例えば、Ｅｇａｎは、以下の式（１）を用いて算出される。誤差値Ｅｇａｎは、識別データＤＤが、対応する教師データＬＤに近づくほど大きくなる。換言すれば、誤差値Ｅｇａｎは、識別データＤＤと、対応する教師データＬＤと、の差分が小さくなるほど大きくなる。
【００７５】
【数１】
2020187583.tif 000003
【００７６】
ここで、ｐは、識別データＤＤおよび教師データＬＤの次元数（本実施例では、ｐ＝（３０×３０×１））である。ａｉは、識別データＤＤの各値をシグモイド関数に入力して正規化した値であり、ｔｉは、値ａｉに対応する教師データＬＤの各値（上述したように０または１）である。
【００７７】
本実施例では、生成ネットワークＧＮをトレーニングするために、誤差値Ｅｇａｎに加えて、２種類の誤差値Ｅ１と、Ｅ２とが用いられる。誤差値Ｅ１は、上述した入力データＩＤの特徴データＣＤと、該入力データＩＤに対応する偽データＯＤの特徴データＣＤｆと、の間の誤差を示す。偽データＯＤの特徴データＣＤｆは、入力データＩＤを生成ネットワークＧＮに入力することによって生成された偽データＯＤを、生成ネットワークＧＮのエンコーダＥＣに入力することによって、生成されるデータである。すなわち、特徴データＣＤを生成する際に入力データＩＤに対して実行される演算と同じ演算を偽データＯＤに対して実行することによって、特徴データＣＤｆが生成される。誤差値Ｅ１には、平均二乗誤差（MSE（Mean Squared Error））が用いられる。例えば、誤差値Ｅ１は、以下の式（２）を用いて算出される。
【００７８】
【数２】
2020187583.tif 000004
【００７９】
ここで、ｑは、特徴データＣＤ、ＣＤｆの次元数（本実施例では、ｑ＝（１×１×５１２））である。ｂｉは、特徴データＣＤの各値であり、ｃｉは、値ｂｉに対応する特徴データＣＤｆの各値である。誤差値Ｅ１は、特徴データＣＤｆが特徴データＣＤに近いほど小さくなる。換言すれば、誤差値Ｅ１は、特徴データＣＤｆと特徴データＣＤとの差分が小さくなるほど小さくなる。
【００８０】
誤差値Ｅ２は、実データＲＤと、実データＲＤに対応する偽データＯＤと、の間の誤差を示す。誤差値Ｅ２には、例えば、平均絶対誤差（MAE（Mean Absolute Error））が用いられる。例えば、誤差値Ｅ２は、以下の式（３）を用いて算出される。
【００８１】
【数３】
2020187583.tif 000005
【００８２】
ここで、ｓは、実データＲＤおよび偽データＯＤの次元数（本実施例では、ｓ＝（２５６×２５６×３））である。ｄｉは、実データＲＤの各値であり、ｅｉは、値ｄｉに対応する出力データＯＤの各値である。式（３）から解るように、誤差値Ｅ２は、実データＲＤによって示される画像と、偽データＯＤによって示される画像と、の間の画素ごとの誤差である。誤差値Ｅ２は、偽データＯＤと実データＲＤとが近いほど小さくなる。換言すれば、誤差値Ｅ２は、偽データＯＤと実データＲＤとの差分が小さくなるほど小さくなる。
【００８３】
識別ネットワークＤＮは、誤差値Ｅｇａｎが大きくなるようにトレーニングされる。換言すれば、識別ネットワークＤＮは、入力されたデータペアの真偽を正しく識別することを目的としてトレーニングされる。
【００８４】
生成ネットワークＧＮは、誤差値Ｅｇａｎが小さくなるようにトレーニングされる。同時に、生成ネットワークＧＮは、誤差値Ｅ１、Ｅ２が小さくなるようにトレーニングされる。換言すれば、生成ネットワークＧＮは、識別ネットワークＤＮによって、偽データペアＰｆが実データペアＰｒであると誤って識別されること、および、特徴データＣＤｆと特徴データＣＤとが近づくこと、および、偽データＯＤが実データＲＤに近づくことを目的としてトレーニングされる。
【００８５】
Ａ−４−３．トレーニング処理
以下では、具体的なトレーニング処理について説明する。トレーニング処理は、生成ネットワークＧＮの上述した複数個の演算パラメータＰｅ、Ｐｄおよび識別ネットワークＤＮの上述した複数個の演算パラメータＰｄｎを調整することで、生成ネットワークＧＮが適切な出力データ（偽データ）ＯＤを出力できるようにトレーニングする処理である。上述したデータ生成装置２００の不揮発性記憶装置２３０に格納されたコンピュータプログラムＰＧｔに組み込まれた生成ネットワークＧＮは、本トレーニング処理によってトレーニングされた学習済みモデルである。
【００８６】
図１１は、トレーニング処理のフローチャートである。Ｓ１００では、ＣＰＵ１１０は、事前処理を実行する。事前処理は、識別ネットワークＤＮを用いることなく、生成ネットワークＧＮのみを用いて、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する処理である。ＧＡＮｓでは、生成ネットワークＧＮのタスク（画像データの生成）が識別ネットワークＤＮのタスク（画像データの識別）よりも重い。このために、生成ネットワークＧＮを事前にある程度トレーニングしておくことが好ましいためである。
【００８７】
Ｓ２００では、ＣＰＵ２１０は、メイン処理を実行する。メイン処理は、識別ネットワークＤＮと生成ネットワークＧＮとを用いて、識別ネットワークＤＮの複数個の演算パラメータＰｄｎと、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄと、を調整する処理である。メイン処理が完了すると、生成ネットワークＧＮのトレーニングは完了し、生成ネットワークＧＮの学習済みモデルが完成する。
【００８８】
Ａ−４−３−１．事前処理
図１２は、事前処理のフローチャートである。Ｓ１１０では、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄと、識別ネットワークＤＮの複数個の演算パラメータＰｄｎと、を初期化する。例えば、これらの演算パラメータＰｅ、Ｐｄ、Ｐｄｎの初期値は、同一の分布（例えば、正規分布）から独立に取得された乱数に設定される。
【００８９】
Ｓ１２０では、ＣＰＵ２１０は、不揮発性記憶装置２３０に格納された複数個（例えば、１０００個）の実データペアＰｒから、バッチサイズ分の実データペアＰｒ、例えば、Ｖ個（Ｖは、２以上の整数、例えば、Ｖ＝１００）の実データペアＰｒを選択する。不揮発性記憶装置２３０に格納された複数個の実データペアＰｒは、Ｖ個ずつの実データペアＰｒをそれぞれ含む複数個のグループ（バッチ）に予め分割されている。ＣＰＵ２１０は、これらの複数個のグループから１個のグループを順次に選択することによって、Ｖ個の使用すべき実データペアＰｒを選択する。これに代えて、Ｖ個ずつの実データペアＰｒは、不揮発性記憶装置２３０に格納された複数個の実データペアＰｒから、毎回、ランダムに選択されても良い。
【００９０】
Ｓ１３０では、ＣＰＵ２１０は、選択されたＶ個の実データペアＰｒに含まれるＶ個の入力データＩＤをそれぞれ、生成ネットワークＧＮのエンコーダＥＣに入力して、Ｖ個の入力データＩＤの特徴データＣＤを生成する。
【００９１】
Ｓ１４０では、ＣＰＵ２１０は、Ｖ個の特徴データＣＤをそれぞれ、生成ネットワークＧＮのデコーダＤＣに入力して、Ｖ個の実データＲＤおよび入力データＩＤに対応するＶ個の偽データＯＤを生成する。
【００９２】
Ｓ１５０では、ＣＰＵ２１０は、Ｖ個の実データＲＤのそれぞれについて、実データＲＤと、該実データＲＤに対応する偽データＯＤと、の間の誤差値Ｅ２を算出する。
【００９３】
Ｓ１６０では、ＣＰＵ２１０は、Ｖ個の偽データＯＤのそれぞれを、生成ネットワークＧＮのエンコーダＥＣに入力して、Ｖ個の偽データＯＤの特徴データＣＤｆを生成する。
【００９４】
Ｓ１７０では、ＣＰＵ２１０は、Ｖ個の入力データＩＤの特徴データＣＤのそれぞれについて、特徴データＣＤと、対応する特徴データＣＤｆと、の間の誤差値Ｅ１を算出する。
【００９５】
Ｓ１８０では、ＣＰＵ２１０は、Ｖ個の誤差値Ｅ１とＶ個の誤差値Ｅ２とを用いて、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する。具体的には、ＣＰＵ２１０は、以下の式（４）に示す損失関数Ｌｐｒｅを用いて指標値を算出する。ＣＰＵ２１０は、損失関数Ｌｐｒｅを用いて算出される指標値が小さくなるように、所定のアルゴリズムに従って演算パラメータＰｅ、Ｐｄを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【００９６】
【数４】
2020187583.tif 000006
【００９７】
ここで、Ｌ１は、Ｖ個の誤差値Ｅ１の平均値であり、Ｌ２は、Ｖ個の誤差値Ｅ２の平均値であり、αは、所定の係数である。
【００９８】
Ｓ１９０では、ＣＰＵ２１０は、トレーニングが完了したか否かを判断する。本実施例では、作業者からの完了指示が入力された場合にはトレーニングが完了したと判断し、トレーニングの継続指示が入力された場合にはトレーニングが完了していないと判断する。例えば、ＣＰＵ２１０は、トレーニング用に用いられた入力データＩＤとは別の複数個のテスト用の入力データＩＤを、生成ネットワークＧＮに入力して、複数個の偽データＯＤを生成する。ＣＰＵ２１０は、生成された偽データＯＤによって示される画像を表示部２４０に表示する。作業者は、表示された画像を確認して、事前処理の段階の画像として十分な画像（例えば、ある程度の文字が認識できる画像）が生成されているか否かを確認し、確認結果に応じて、操作部２５０を介して、トレーニングの完了指示または継続指示を入力する。変形例では、例えば、Ｓ１２０〜Ｓ１８０の処理が所定回数だけ繰り返された場合に、トレーニングが完了されたと判断されても良い。
【００９９】
トレーニングが完了していないと判断される場合には（Ｓ１９０：ＮＯ）、ＣＰＵ２１０は、Ｓ１２０に処理を戻す。トレーニングが完了したと判断される場合には（Ｓ１９０：ＹＥＳ）、ＣＰＵ２１０は、事前処理を終了する。
【０１００】
Ａ−４−３−２．メイン処理
図１３は、メイン処理のフローチャートである。Ｓ２０５では、図１２のＳ１２０と同様に、ＣＰＵ２１０は、不揮発性記憶装置２３０に格納された複数個の実データペアＰｒから、バッチサイズ分の実データペアＰｒ、例えば、Ｖ個の実データペアＰｒを選択する。なお、メイン処理のバッチサイズ、すなわち、本ステップで選択される実データペアＰｒの個数は、事前処理のバッチサイズとは異なっていても良い。
【０１０１】
Ｓ２１０では、図１２のＳ１３０と同様に、ＣＰＵ２１０は、選択されたＶ個の実データペアＰｒに含まれるＶ個の入力データＩＤをそれぞれ、生成ネットワークＧＮのエンコーダＥＣに入力して、Ｖ個の入力データＩＤの特徴データＣＤを生成する。
【０１０２】
Ｓ２１５では、図１２のＳ１４０と同様に、ＣＰＵ２１０は、Ｖ個の特徴データＣＤをそれぞれ、生成ネットワークＧＮのデコーダＤＣに入力して、Ｖ個の実データＲＤおよび入力データＩＤに対応するＶ個の偽データＯＤを生成する。
【０１０３】
Ｓ２２０では、ＣＰＵ２１０は、Ｖ個の実データペアＰｒを識別ネットワークＤＮに入力して、Ｖ個の実データペアＰｒに対応するＶ個の識別データＤＤを生成する。
【０１０４】
Ｓ２２５では、ＣＰＵ２１０は、Ｖ個の偽データペアＰｆを識別ネットワークＤＮに入力して、Ｖ個の偽データペアＰｆに対応するＶ個の識別データＤＤを生成する。Ｖ個の偽データペアＰｆのそれぞれは、Ｖ個の実データペアＰｒに含まれるＶ個の入力データＩＤのそれぞれと、該入力データＩＤに対応する偽データＯＤと、のペアである。入力データＩＤに対応する偽データＯＤは、Ｓ２１０、Ｓ２１５にて該入力データＩＤを生成ネットワークＧＮに入力して生成された偽データＯＤを意味する。
【０１０５】
Ｓ２３０では、ＣＰＵ２１０は、Ｓ２２０にて実データペアＰｒについて生成されたＶ個の識別データＤＤと、Ｓ２２５にて偽データペアＰｆについて生成されたＶ個の識別データＤＤと、のそれぞれについて、識別データＤＤと教師データＬＤとの間の誤差値Ｅｇａｎを算出する。
【０１０６】
Ｓ２３５では、ＣＰＵ２１０は、算出された（２×Ｖ）個の誤差値Ｅｇａｎを用いて、識別ネットワークＤＮの複数個の演算パラメータＰｄｎを調整する。具体的には、ＣＰＵ２１０は、以下の式（５）に示す損失関数Ｌｇａｎを用いて指標値を算出する。ＣＰＵ２１０は、損失関数Ｌｇａｎを用いて算出される指標値が大きくなるように、所定のアルゴリズムに従って演算パラメータＰｄｎを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【０１０７】
【数５】
2020187583.tif 000007
【０１０８】
式（５）に示すように、損失関数Ｌｇａｎは、（２×Ｖ）個の誤差値Ｅｇａｎの平均値を示す関数である。
【０１０９】
Ｓ２４０では、図１２のＳ１５０と同様に、ＣＰＵ２１０は、Ｖ個の実データＲＤのそれぞれについて、実データＲＤと、該実データＲＤに対応する偽データＯＤと、の間の誤差値Ｅ２を算出する。
【０１１０】
Ｓ２４５では、図１２のＳ１６０と同様に、ＣＰＵ２１０は、Ｖ個の偽データＯＤのそれぞれを、生成ネットワークＧＮのエンコーダＥＣに入力して、Ｖ個の偽データＯＤの特徴データＣＤｆを生成する。
【０１１１】
Ｓ２５０では、図１２のＳ１７０と同様に、ＣＰＵ２１０は、Ｖ個の入力データＩＤの特徴データＣＤのそれぞれについて、特徴データＣＤと、対応する特徴データＣＤｆと、の間の誤差値Ｅ１を算出する。
【０１１２】
Ｓ２５５では、ＣＰＵ２１０は、（２×Ｖ）個の誤差値ＥｇａｎとＶ個の誤差値Ｅ１とＶ個の誤差値Ｅ２とを用いて、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する。具体的には、ＣＰＵ２１０は、以下の式（６）に示す損失関数Ｌｇを用いて指標値を算出する。ＣＰＵ２１０は、損失関数Ｌｇを用いて算出される指標値が小さくなるように、所定のアルゴリズムに従って演算パラメータＰｅ、Ｐｄを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【０１１３】
【数６】
2020187583.tif 000008
【０１１４】
ここで、上述したように、Ｌｇａｎは（２×Ｖ）個の誤差値Ｅｇａｎの平均値であり、Ｌ１はＶ個の誤差値Ｅ１の平均値であり、Ｌ２はＶ個の誤差値Ｅ２の平均値である。β、γは、所定の係数である。
【０１１５】
Ｓ２６０では、ＣＰＵ２１０は、トレーニングが完了したか否かを判断する。本実施例では、作業者からの完了指示が入力された場合にはトレーニングが完了したと判断し、トレーニングの継続指示が入力された場合にはトレーニングが完了していないと判断する。例えば、ＣＰＵ２１０は、トレーニング用に用いられた入力データＩＤとは別の複数個のテスト用の入力データＩＤを、生成ネットワークＧＮに入力して、複数個の偽データＯＤを生成する。ＣＰＵ２１０は、生成された偽データＯＤによって示される画像を表示部２４０に表示する。作業者は、表示された画像を確認して、最終的な画像として十分な画像（例えば、第２の書体で特定の文字を精度良く表現する画像）が生成されているか否かを確認し、確認結果に応じて、操作部２５０を介して、トレーニングの完了指示または継続指示を入力する。変形例では、例えば、Ｓ２０５〜Ｓ２５５の処理が所定回数だけ繰り返された場合に、トレーニングが完了されたと判断されても良い。
【０１１６】
トレーニングが完了していないと判断される場合には（Ｓ２６０：ＮＯ）、ＣＰＵ２１０は、Ｓ２０５に処理を戻す。トレーニングが完了したと判断される場合には（Ｓ２６０：ＹＥＳ）、ＣＰＵ２１０は、トレーニング処理を終了する。以上説明したトレーニング処理が終了した時点で、生成ネットワークＧＮは、演算パラメータＰｅ、Ｐｄが調整された学習済みモデルになっている。したがって、トレーニング処理は、学習済みモデルを生成（製造）する処理である、と言うことができる。
【０１１７】
以上説明した本実施例によれば、トレーニング処理（図１１）のメイン処理（図１３）は、入力データＩＤを生成ネットワークＧＮに入力することによって入力データＩＤに対応する偽データＯＤを出力させる第１工程（図１３のＳ２１０、Ｓ２１５）と、実データペアＰｒと偽データペアＰｆとを含む複数個のデータペアを識別ネットワークＤＮに入力して、複数個のデータペアに対応する複数個の識別データＤＤを出力させる第２工程（図１３のＳ２２０、Ｓ２２５）と、識別データＤＤと教師データＬＤとを用いて、識別データＤＤと教師データＬＤとの差分が小さくなるように（本実施例では、誤差値Ｅｇａｎが大きくなるように）、識別ネットワークＤＮの複数個の演算パラメータＰｄｎを調整する第３工程（図１３のＳ２３０、Ｓ２３５）と、を備える。
【０１１８】
さらに、メイン処理は、偽データＯＤに対して、エンコーダＥＣによる次元削減処理を実行して特徴データＣＤｆを生成する第４工程（図１３のＳ２４５）と、識別データＤＤと教師データＬＤと特徴データＣＤと特徴データＣＤｆとを用いて、識別データＤＤと教師データＬＤとの差分が大きくなり（本実施例では、誤差値Ｅｇａｎが小さくなり）、かつ、特徴データＣＤと特徴データＣＤｆとの差分が小さくなるように（本実施例では誤差値Ｅ１が小さくなるように）、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する第５工程（図１３のＳ２５０、Ｓ２５５）と、を備える。
【０１１９】
メイン処理では、第１工程〜第５工程を複数回繰り返す（図１３のＳ２６０）ことによって、生成ネットワークＧＮと識別ネットワークＤＮとを並行してトレーニングする。このメイン処理によれば、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄは、識別データＤＤと教師データＬＤとの差分が大きくなるように調整されるだけでなく、特徴データＣＤ、ＣＤｆとを用いて、これらの特徴データＣＤ、ＣＤｆ間の差分が小さくなるように調整される。この結果、入力データＩＤの特徴が特徴データＣＤに適切に反映されるように、演算パラメータＰｅ、Ｐｄを調整できる。従って、上記トレーニング処理を用いてトレーニングされた生成ネットワークＧＮを用いれば、入力データＩＤの特徴が反映された適切な偽データＯＤを生成できる。
【０１２０】
例えば、エンコーダＥＣが入力データＩＤの特徴（例えば、入力画像ＩＩに示される文字の書体に依存しない本質的な特徴）を、特徴データの空間（潜在空間（latent space）とも呼ぶ）に適切にマッピングできており、デコーダＤＣによって、その特徴が適切に偽データＯＤに再現されているとする。この場合には、特徴データＣＤと特徴データＣＤｆとの差分は十分に小さくなると考えられる。このために、特徴データＣＤと特徴データＣＤｆとの差分が小さくなるように、生成ネットワークＧＮをトレーニングすることで、エンコーダＥＣが潜在空間に入力データＩＤの特徴をマッピングする精度を向上できるとともに、デコーダＤＣがその特徴を偽データＯＤに再現する精度を向上することができる。換言すれば、例えば、入力データＩＤの特定の属性（例えば、表現すべき文字の種類）を保持しつつ、変換すべき別の属性（例えば、書体）を変換できるように、生成ネットワークＧＮをトレーニングすることができる。また、限られた入力データＩＤだけでなく、多様な入力データＩＤ（例えば、様々な文字を示す入力データＩＤ）に対応して、変換すべき属性（例えば、書体）を変換した偽データＯＤを生成できるように、生成ネットワークＧＮをトレーニングできる（多様性の確保）。さらには、エンコーダＥＣが潜在空間に誤ったマッピングを行う方向にトレーニングが進むことを抑制できるので、生成ネットワークＧＮのトレーニングを安定させることができる。
【０１２１】
さらに、本実施例のメイン処理では、上述した第５工程において、さらに、一の入力データに対応する実データＲＤおよび偽データＯＤを用いて、実データＲＤと偽データＯＤとの差分が小さくなるように（本実施例では、誤差値Ｅ２が小さくなるように）、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する（図１３のＳ２４０、Ｓ２５５）。この結果、所望の偽データＯＤが生成されるように、生成ネットワークＧＮをトレーニングできる。換言すれば、実データＲＤと偽データＯＤとの差分が小さくなるように生成ネットワークＧＮをトレーニングすることで、生成ネットワークＧＮは、単に識別ネットワークＤＮが真偽の識別を誤るような偽データＯＤを生成するだけでなく、実データＲＤに近い偽データＯＤを生成するようにトレーニングされる。例えば、本実施例では、偽データＯＤにおいて、実データＲＤで表現された書体が適切に再現されるように、生成ネットワークＧＮをトレーニングできる。
【０１２２】
また、本実施例の事前処理（図１２）は、メイン処理（図１３）と同様に、入力データＩＤを生成ネットワークＧＮに入力することによって入力データＩＤに対応する偽データＯＤを出力させる第１工程（図１２のＳ１３０、Ｓ１４０）と、偽データＯＤに対して、エンコーダＥＣによる次元削減処理を実行して特徴データＣＤｆを生成する第４工程（図１２のＳ１６０）と、を備える。事前処理は、さらに、特徴データＣＤと特徴データＣＤｆとを用いて、識別データＤＤと教師データＬＤとを用いずに、特徴データＣＤと特徴データＣＤｆとの差分が小さくなるように（本実施例では誤差値Ｅ１が小さくなるように）、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する第６工程（図１２のＳ１８０）を備える。そして、事前処理では、第１工程と第４工程と第６工程とを複数回繰り返す（図１２のＳ１９０）ことによって、生成ネットワークＧＮをトレーニングする。事前処理の後に、上述したメイン処理が実行される（図１１）。このように、特徴データＣＤ、ＣＤｆの差分が小さくなるように、生成ネットワークＧＮをトレーニングした後に、生成ネットワークＧＮと識別ネットワークＤＮとを並行してトレーニングする。この結果、事前処理において、エンコーダＥＣが潜在空間に入力データＩＤの特徴をマッピングする精度をある程度保証することができる。したがって、入力データＩＤの特徴が第１の特徴データに適切に反映されるように、生成ネットワークＧＮを効果的にトレーニングできるので、上記トレーニング処理を用いてトレーニングされた生成ネットワークＧＮを用いれば、入力データＩＤの特徴が反映された適切な偽データＯＤを生成できる。
【０１２３】
ここで、上述したように、ＧＡＮｓでは、生成ネットワークＧＮのタスク（画像データの生成）が識別ネットワークＤＮのタスク（画像データの識別）よりも重い。メイン処理において、生成ネットワークＧＮのトレーニングは、識別ネットワークＤＮのトレーニングに対して遅れがちである。仮に、事前処理を実行しない場合には、メイン処理において、生成ネットワークＧＮのトレーニングが識別ネットワークＤＮのトレーニングに対して過度に遅れる可能性がある。この場合には、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する際に、勾配の消失が発生して生成ネットワークＧＮのトレーニングが進まなくなる場合がある。本実施例によれば、事前処理において、特徴データＣＤと特徴データＣＤｆとの差分が小さくなるように、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄが調整されるので、このような不都合の発生を抑制できる。したがって、本実施例によれば、トレーニングの安定化およびトレーニング時間の短縮を実現できる。
【０１２４】
さらに、本実施例の事前処理では、第６工程において、さらに、一の入力データに対応する実データＲＤおよび偽データＯＤを用いて、実データＲＤと偽データＯＤとの差分が小さくなるように（本実施例では、誤差値Ｅ２が小さくなるように）、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する（図１２のＳ１５０、Ｓ１８０）。この結果、メイン処理の前に、所望の偽データＯＤが生成されるように、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄをできる。この結果、所望の偽データＯＤが生成されるように、生成ネットワークＧＮを効率良くトレーニングできる。また、生成ネットワークＧＮのトレーニングの進み具合が識別ネットワークＤＮのトレーニングの進み具合よりも遅れる不都合を、さらに抑制できる。
【０１２５】
さらに、本実施例では、入力データＩＤは、第１の属性（例えば、「Ａ」の文字であるという属性）と第２の属性（例えば、第１の書体であるという属性）を有し、かつ、第３の属性（例えば、第２の書体であるという属性）を有しない画像データである。そして、出力データ（偽データ）ＯＤは、第１の属性と第３の属性を有し、かつ、第２の属性を有しない画像データである。したがって、本実施例によれば、学習済みの生成ネットワークＧＮは、入力データＩＤの第１の属性を維持しつつ、入力データＩＤの第２の属性を第３の属性に変換することによって出力データ（偽データ）ＯＤを生成することができる。
【０１２６】
さらに、本実施例のトレーニング装置１００（図１）、および、学習済みの生成ネットワークＧＮによれば、生成ネットワークＧＮは、上述したトレーニング処理によってトレーニングされているので、入力データＩＤの特徴が反映された適切な偽データＯＤを生成できる。また、限られた入力データＩＤだけでなく、多様な入力データＩＤ（例えば、様々な文字を示す入力データＩＤ）に対応して、変換すべき属性（例えば、書体）を変換した偽データＯＤを生成できる。
【０１２７】
以上の説明から解るように、本実施例の実データペアＰｒは、第１のペアの例であり、偽データペアＰｆは、第２のペアの例である。また、入力データＩＤの特徴データＣＤは、第１の特徴データの例であり、偽データＯＤの特徴データＣＤｆは、第２の特徴データの例である。また、生成ネットワークＧＮの演算パラメータＰｅ、Ｐｄは、第１の演算パラメータの例であり、識別ネットワークＤＮの演算パラメータＰｄｎは、第２の演算パラメータの例である。生成ネットワークＧＮは、第１の機械学習モデルの例であり、識別ネットワークＤＮは、第２の機械学習モデルの例である。
【０１２８】
Ｂ．変形例：
（１）上記実施例では、生成ネットワークＧＮをトレーニングする際に、事前処理とメイン処理との両方にて、特徴データＣＤと特徴データＣＤｆとの間の誤差値Ｅ１が用いられている。これに限らず、事前処理とメイン処理との少なくとも一方だけで、誤差値Ｅ１が用いられても良い。例えば、上記実施例にて、メイン処理のＳ２５５では、誤差値Ｅ１を用いて、生成ネットワークＧＮの演算パラメータＰｅ、Ｐｄを調整し、事前処理のＳ１８０では、誤差値Ｅ１を用いずに、誤差値Ｅ２のみを用いて、生成ネットワークＧＮの演算パラメータＰｅ、Ｐｄを調整しても良い。あるいは、メイン処理のＳ２５５では、誤差値Ｅ１を用いずに、誤差値Ｅｇａｎ、Ｅ２のみを用いて、生成ネットワークＧＮの演算パラメータＰｅ、Ｐｄを調整し、事前処理のＳ１８０では、誤差値Ｅ１を用いて、生成ネットワークＧＮの演算パラメータＰｅ、Ｐｄを調整しても良い。
【０１２９】
（２）上記実施例のメイン処理のＳ２５５では、誤差値Ｅｇａｎと、誤差値Ｅ１と、誤差値Ｅ２と、を用いて、生成ネットワークＧＮのトレーニング、すなわち、演算パラメータＰｅ、Ｐｄの調整が行われている。これに代えて、メイン処理のＳ２５５では、誤差値Ｅ２を用いることなく、誤差値Ｅｇａｎと誤差値Ｅ１とのみを用いて、演算パラメータＰｅ、Ｐｄの調整が行われても良い。
【０１３０】
（３）上記実施例の事前処理のＳ１８０では、誤差値Ｅ１と誤差値Ｅ２とを用いて、生成ネットワークＧＮのトレーニング、すなわち、演算パラメータＰｅ、Ｐｄの調整が行われている。これに代えて、事前処理のＳ１８０では、誤差値Ｅ２を用いることなく、誤差値Ｅ１のみを用いて、演算パラメータＰｅ、Ｐｄの調整が行われても良い。
【０１３１】
（４）上記実施例のトレーニング処理において、事前処理を省略して、メイン処理のみで、生成ネットワークＧＮのトレーニングが実行されても良い。
【０１３２】
（５）上記実施例では、誤差値Ｅｇａｎには、シグモイドクロスエントロピー誤差が用いられ、誤差値Ｅ１には、平均二乗誤差が用いられ、誤差値Ｅ１には、平均絶対誤差が用いれている。これに代えて、誤差値Ｅｇａｎ、Ｅ１、Ｅ２には、他の種類の誤差値が用いれても良い。例えば、誤差値Ｅｇａｎには、ソフトマックスクロスエントロピー誤差が用いられても良い。誤差値Ｅ１には、平均絶対誤差が用いられても良い。誤差値Ｅ２には、平均二乗誤差が用いられても良い。
【０１３３】
（６）上記実施例は、生成ネットワークＧＮは、一般的には、上述したように、第１の属性（例えば、「Ａ」の文字であるという属性）と第２の属性（例えば、第１の書体であるという属性）を有し、かつ、第３の属性（例えば、第２の書体であるという属性）を有しない画像データを、第１の属性と第３の属性を有し、かつ、第２の属性を有しない画像データに変換するモデルである。このような変換は、一般的には、「スタイル変換(style transfer)」「画像翻訳（image-to-image translation）」とも呼ばれる。他の具体例としては、生成ネットワークＧＮは、例えば、所定の物（建物、靴などの静物や馬、犬などの動物）を示す線画（線のみで描画された画像）を、所定の物を示すカラー画像に変換するモデルであっても良い。また、生成ネットワークＧＮは、例えば、所定の場所を示す航空写真を、該所定の場所を示す地図に変換するモデルであっても良い。これらの場合にも、生成ネットワークＧＮは、第１の属性（所定の物を示すという属性、所定の場所を示すという属性）と第２の属性（線画であるという属性、航空写真であるという属性）を有し、かつ、第３の属性（カラー画像であるという属性、地図であるという属性）を有しない画像データを、第１の属性と第３の属性を有し、かつ、第２の属性を有しない画像データに変換するモデルである、と言うことができる。
【０１３４】
（７）上記実施例では、生成ネットワークＧＮでは、入力データＩＤと偽データＯＤとは共に、画像データである。これに限らず、入力データＩＤや偽データＯＤの両方または片方は、テキストや音声を示すデータであっても良い。例えば、生成ネットワークＧＮは、特定の物を表現する画像データを、特定の物を表現するテキストや音声に変換するモデルであっても良い。あるいは、生成ネットワークＧＮは、特定の物を表現するテキストを、特定の物を表現する画像や音声に変換するモデルであっても良い。
【０１３５】
（８）生成ネットワークＧＮや識別ネットワークＤＮの具体的な構成は、図５、図６に示す構成に限られず、他の様々な構成であっても良い。例えば、生成ネットワークＧＮや識別ネットワークＤＮにおいて、畳込層や転置畳込層の層数は、適宜に変更されて良い。また、生成ネットワークＧＮや識別ネットワークＤＮは、畳込層や転置畳込層の全部または一部に代えて、プーリング層や全結合層を備えても良い。また、各層で出力された値に対して実行される後処理も任意の様々な構成が採用される。例えば、後処理に用いられる活性化関数は、任意の他の関数、例えば、ＰＲｅＬＵ、ソフトマックス、シグモイドが用いられても良い。また、バッチノーマリゼイション、ドロップアウトなどの処理も後処理として適宜に追加や省略がされ得る。さらに、上記実施例の生成ネットワークＧＮでは、デコーダＤＣのｍ番目の転置畳込層ＤＬ＿ｍには、エンコーダＥＣの（９−ｍ）番目の畳込層ＥＬ＿（９−ｍ）から出力される値が入力されるが、該入力は省略されても良い。
【０１３６】
また、識別ネットワークＤＮは、ニューラルネットワークとは異なる機械学習モデルであって、教師データを用いてトレーニングされる機械学習モデル、例えば、サポートベクターマシーン（ＳＶＭ）であっても良い。
【０１３７】
（９）図１のデータ生成装置２００や図７のトレーニング装置１００のハードウェア構成は、一例であり、これに限られない。例えば、データ生成装置２００やトレーニング装置１００のプロセッサは、ＣＰＵに限らず、ＧＰＵ（Graphics Processing Unit）やＡＳＩＣ（application specific integrated circuit）、あるいは、これらとＣＰＵとの組み合わせであっても良い。また、トレーニング装置１００やデータ生成装置２００は、ネットワークを介して互いに通信可能な複数個の計算機（例えば、いわゆるクラウドサーバ）であっても良い。
【０１３８】
（１０）上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、生成ネットワークＧＮや識別ネットワークＤＮは、プログラムモジュールに代えて、ASIC（Application Specific Integrated Circuit）等のハードウェア回路によって実現されてよい。
【０１３９】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１４０】
１００…トレーニング装置、１１０…ＣＰＵ、１２０…揮発性記憶装置、１３０…不揮発性記憶装置、１４０…表示部、１５０…操作部、２００…データ生成装置、２１０…ＣＰＵ、２２０…揮発性記憶装置、２３０…不揮発性記憶装置、２４０…表示部、２５０…操作部、２７０…通信インタフェース、３００…プリンタ、１０００…ネットワークシステム、ＥＬ＿０、Ｌ＿０…入力層、ＥＬ＿１〜ＥＬ＿８、Ｌ＿０〜Ｌ＿５…畳込層、ＤＬ＿１〜ＤＬ＿８…転置畳込層、ＥＣ…エンコーダ、ＤＣ…デコーダ、ＩＤ…入力データ、ＯＤ…出力データ（偽データ）、ＣＤ、ＣＤｆ…特徴データ、ＬＤ…教師データ、ＧＮ…生成ネットワーク、ＤＮ…識別ネットワーク、Ｐｄ、Ｐｅ、Ｐｄｎ…演算パラメータ、Ｐｒ…実データペア、ＰＧｇ、ＰＧｔ…コンピュータプログラム
【図１】
2020187583.tif 000009
【図２】
2020187583.tif 000010
【図３】
2020187583.tif 000011
【図４】
2020187583.tif 000012
【図５】
2020187583.tif 000013
【図６】
2020187583.tif 000014
【図７】
2020187583.tif 000015
【図８】
2020187583.tif 000016
【図９】
2020187583.tif 000017
【図１０】
2020187583.tif 000018
【図１１】
2020187583.tif 000019
【図１２】
2020187583.tif 000020
【図１３】
2020187583.tif 000021