(57)【要約】 【課題】機械学習モデルの学習の進み具合を調整する技術をする。【解決手段】トレーニング方法は、第１の入力データを第１の機械学習モデルに入力することによって、第１の入力データに対応する第１の出力データを出力させる第１工程であって、第１の機械学習モデルは、第１の入力データに対して複数個の第１の演算パラメータを用いる演算処理を実行して第１の出力データを出力するモデルである、第１工程と、第１の出力データと教師データとを用いて、複数個の第１の演算パラメータを調整する第２工程であって、教師データは、第１の入力データに対応する第１の出力データの目標値を示す、第２工程と、を備える。第１工程と第２工程とを複数回繰り返すことによって、第１の機械学習モデルはトレーニングされる。第２工程は、複数個の第１の演算パラメータの調整のために用いられる値を、乱数を用いて変動させる変動工程を含む。【選択図】  図１２
2020187582.tif 000002
【特許請求の範囲】
【請求項１】
機械学習モデルのトレーニング方法であって、
第１の入力データを第１の機械学習モデルに入力することによって、前記第１の入力データに対応する前記第１の出力データを出力させる第１工程であって、前記第１の機械学習モデルは、前記第１の入力データに対して複数個の第１の演算パラメータを用いる演算処理を実行して前記第１の出力データを出力するモデルである、前記第１工程と、
前記第１の出力データと教師データとを用いて、前記複数個の第１の演算パラメータを調整する第２工程であって、前記教師データは、前記第１の入力データに対応する前記第１の出力データの目標値を示す、前記第２工程と、
を備え、
前記第１工程と前記第２工程とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングし、
前記第２工程は、前記複数個の第１の演算パラメータの調整のために用いられる値を、乱数を用いて変動させる変動工程を含む、方法。
【請求項２】
請求項１に記載の方法であって、
前記変動工程は、前記複数個の教師データに含まれる少なくとも一部の値を、前記乱数を用いて変動させる工程であり、
前記第２工程は、前記第１の出力データと、少なくとも一部の値が変動された後の前記教師データと、を用いて、前記複数個の第１の演算パラメータを調整する工程である、方法。
【請求項３】
請求項１に記載の方法であって、
前記変動工程は、前記第１の出力データに含まれる少なくとも一部の値を、前記乱数を用いて変動させる工程であり、
前記第２工程は、少なくとも一部の値が変動された後の前記第１の出力データと、前記教師データと、を用いて、前記複数個の第１の演算パラメータを調整する工程である、方法。
【請求項４】
請求項１に記載の方法であって、
前記第２工程は、
前記第１の出力データと前記教師データとを用いて、所定の損失関数に基づく評価値を算出する工程と、
前記評価値を、前記乱数を用いて変動させる前記変動工程と、
変動後の前記評価値を用いて、前記複数個の第１の演算パラメータを調整する工程と、
を含む、方法。
【請求項５】
請求項１〜４のいずれかに記載の方法であって、さらに、
第２の入力データを前記第１の機械学習モデルとは異なる第２の機械学習モデルに入力することによって、前記第２の入力データに対応する第２の出力データを出力させる第３工程であって、前記第２の機械学習モデルは、前記第２の入力データに対して複数個の第２の演算パラメータを用いる演算処理を実行して前記第２の出力データを出力するモデルである、前記第３工程と、
前記第２の出力データを用いて、前記複数個の第２の演算パラメータを調整する第４工程と、
を備え、
前記第１工程と前記第２工程と前記第３工程と前記第４工程とを複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングし、
前記第４工程は、前記複数個の第２の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる工程を含まない、方法。
【請求項６】
請求項５に記載の方法であって、
前記第１の入力データは、実データと、偽データとしての前記第２の出力データと、を含む複数個のデータであり、
前記教師データは、複数個の前記第１の入力データのそれぞれが前記実データであるか前記偽データであるかを示すデータであり、
前記第１の機械学習モデルは、前記複数個の第１の入力データのそれぞれが前記実データと前記偽データとのいずれであるかを識別するためのモデルであり、
前記第１の出力データは、前記第１の機械学習モデルによる識別結果を示すデータであり、
前記第２の機械学習モデルは、前記偽データとしての前記第２の出力データを生成するためのモデルであり、
前記第２工程では、前記第１の出力データと前記教師データとを用いて、前記第１の出力データと前記教師データとの差分が小さくなるように、前記複数個の第１の演算パラメータを調整し、
前記第４工程では、前記偽データとしての前記第２の出力データを前記第１の機械学習モデルに入力することによって得られる前記第１の出力データと前記教師データとの差分が大きくなるように、前記複数個の第２の演算パラメータを調整する、方法。
【請求項７】
請求項１〜６のいずれかに記載の方法であって、
前記変動工程では、変動後の値が０以上の値となるように、前記複数個の第１の演算パラメータの調整のために用いられる値を変動させる、方法。
【請求項８】
データ生成装置であって、
第１の機械学習モデルを用いるトレーニング処理によってトレーニングされた学習済みの第２の機械学習モデルを用いて特定のデータを生成する生成部と、
前記特定のデータを出力する出力部と、
を備え、
前記第１の機械学習モデルは、前記第１の入力データに対して複数個の第１の演算パラメータを用いる演算処理を実行して、前記第１の入力データが実データと偽データとのいずれかであるかを識別した結果を示す識別データを出力するモデルであり、
前記第２の機械学習モデルは、第２の入力データに対して複数個の第２の演算パラメータを用いる演算処理を実行して、前記第２の入力データに対応する前記偽データを生成するモデルであり、
前記トレーニング処理は、
前記第２の入力データを前記第２の機械学習モデルに入力して、前記偽データを生成させる偽データ生成処理と、
実データと、前記第２の機械学習モデルによって生成された前記偽データと、を含む複数個の前記第１の入力データを前記第１の機械学習モデルに入力して、複数個の前記識別データを出力させる識別データ生成処理と、
前記識別データと教師データとを用いて、前記識別データと前記教師データとの差が小さくなるように、前記複数個の第１の演算パラメータを調整する第１の調整処理であって、前記教師データは、前記複数個の第１の入力データのそれぞれが前記実データであるか前記偽データであるかを示すデータである、前記第１の調整処理と、
前記偽データを前記第１の機械学習モデルに入力することによって得られる前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差が大きくなるように、前記複数個の第２の演算パラメータを調整する第２の調整処理と、
を含み、前記偽データ生成処理と前記識別データ生成処理と前記第１の調整処理と前記第２の調整処理とを複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理であり、
前記第１調整処理は、前記複数個の第１の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含み、
前記第２調整処理は、前記複数個の第２の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含まない、データ生成装置。
【請求項９】
第１の機械学習モデルを用いるトレーニング処理によってトレーニングされた学習済みの第２の機械学習モデルであって、特定のデータを生成するための前記学習済みの第２の機械学習モデルであって、
前記第１の機械学習モデルは、前記第１の入力データに対して複数個の第１の演算パラメータを用いる演算処理を実行して、前記第１の入力データが実データと偽データとのいずれかであるかを識別した結果を示す識別データを出力するモデルであり、
前記第２の機械学習モデルは、第２の入力データに対して複数個の第２の演算パラメータを用いる演算処理を実行して、前記第２の入力データに対応する前記偽データを生成するモデルであり、
前記トレーニング処理は、
前記第２の入力データを前記第２の機械学習モデルに入力して、前記偽データを生成させる偽データ生成処理と、
実データと、前記第２の機械学習モデルによって生成された前記偽データと、を含む複数個の前記第１の入力データを前記第１の機械学習モデルに入力して、複数個の前記識別データを出力させる識別データ生成処理と、
前記識別データと教師データとを用いて、前記識別データと前記教師データとの差が小さくなるように、前記複数個の第１の演算パラメータを調整する第１の調整処理であって、前記教師データは、前記複数個の第１の入力データのそれぞれが前記実データであるか前記偽データであるかを示すデータである、前記第１の調整処理と、
前記偽データを前記第１の機械学習モデルに入力することによって得られる前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差が大きくなるように、前記複数個の第２の演算パラメータを調整する第２の調整処理と、
を含み、前記偽データ生成処理と前記識別データ生成処理と前記第１の調整処理と前記第２の調整処理とを複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理であり、
前記第１調整処理は、前記複数個の第１の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含み、
前記第２調整処理は、前記複数個の第２の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含まない、前記学習済みの第２の機械学習モデル。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、機械学習モデルや該機械学習モデルを用いてデータを生成する技術に関する。
【背景技術】
【０００２】
近年、ニューラルネットワークやサポートベクタマシンなどの機械学習モデルの利用や開発が進んでいる。例えば、特許文献１に開示された技術では、入力データに、ある属性を有するか否かを示すポジティブまたはネガティブ情報をラベル付けして教師データとする。そして、該教師データの特徴量をサポートベクタマシンに学習させることによって、サポートベクタマシンをトレーニングする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２５３９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、他の機械学習モデルの学習の進み具合等との関係で、機械学習モデルのトレーニングの進み具合を調整することが好ましい場合がある。上記技術では、このようなトレーニングの進み具合を適切に調整できない可能性があった。
【０００５】
本明細書は、機械学習モデルの学習の進み具合を調整する技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書に開示された技術は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
【０００７】
［適用例１］機械学習モデルのトレーニング方法であって、第１の入力データを第１の機械学習モデルに入力することによって、前記第１の入力データに対応する前記第１の出力データを出力させる第１工程であって、前記第１の機械学習モデルは、前記第１の入力データに対して複数個の第１の演算パラメータを用いる演算処理を実行して前記第１の出力データを出力するモデルである、前記第１工程と、前記第１の出力データと教師データとを用いて、前記複数個の第１の演算パラメータを調整する第２工程であって、前記教師データは、前記第１の入力データに対応する前記第１の出力データの目標値を示す、前記第２工程と、を備え、前記第１工程と前記第２工程とを複数回繰り返すことによって、前記第１の機械学習モデルをトレーニングし、前記第２工程は、前記複数個の第１の演算パラメータの調整のために用いられる値を、乱数を用いて変動させる変動工程を含む、方法。
【０００８】
上記構成によれば、第２工程は、複数個の第１の演算パラメータの調整のために用いられる値を、乱数を用いて変動させる変動工程を含むので、複数個の第１の演算パラメータの調整量を、乱数を用いない場合に算出される調整量とは異なる量に変動させることができる。この結果、第１の機械学習モデルのトレーニングの進み具合を調整することができる。
【０００９】
［適用例２］データ生成装置であって、第１の機械学習モデルを用いるトレーニング処理によってトレーニングされた学習済みの第２の機械学習モデルを用いて特定のデータを生成する生成部と、前記特定のデータを出力する出力部と、を備え、前記第１の機械学習モデルは、前記第１の入力データに対して複数個の第１の演算パラメータを用いる演算処理を実行して、前記第１の入力データが実データと偽データとのいずれかであるかを識別した結果を示す識別データを出力するモデルであり、前記第２の機械学習モデルは、第２の入力データに対して複数個の第２の演算パラメータを用いる演算処理を実行して、前記第２の入力データに対応する前記偽データを生成するモデルであり、前記トレーニング処理は、前記第２の入力データを前記第２の機械学習モデルに入力して、前記偽データを生成させる偽データ生成処理と、実データと、前記第２の機械学習モデルによって生成された前記偽データと、を含む複数個の前記第１の入力データを前記第１の機械学習モデルに入力して、複数個の前記識別データを出力させる識別データ生成処理と、前記識別データと教師データとを用いて、前記識別データと前記教師データとの差が小さくなるように、前記複数個の第１の演算パラメータを調整する第１の調整処理であって、前記教師データは、前記複数個の第１の入力データのそれぞれが前記実データであるか前記偽データであるかを示すデータである、前記第１の調整処理と、前記偽データを前記第１の機械学習モデルに入力することによって得られる前記識別データと前記教師データとを用いて、前記識別データと前記教師データとの差が大きくなるように、前記複数個の第２の演算パラメータを調整する第２の調整処理と、を含み、前記偽データ生成処理と前記識別データ生成処理と前記第１の調整処理と前記第２の調整処理とを複数回繰り返すことによって、前記第１の機械学習モデルと前記第２の機械学習モデルとを並行してトレーニングする処理であり、
前記第１調整処理は、前記複数個の第１の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含み、前記第２調整処理は、前記複数個の第２の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含まない、データ生成装置。
【００１０】
上記構成によれば、第１調整処理は、複数個の第１の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含み、第２調整処理は、前記複数個の第２の演算パラメータを調整するために用いられる値を、乱数を用いて変動させる処理を含まない。この結果、第１の機械学習モデルのトレーニングの進み具合を調整することによって、第２の機械学習モデルは、第１の機械学習モデルのトレーニングの進み具合に対して過度に遅れないようにトレーニングされている。このために、例えば、データ生成装置は、適切な出力データを生成することができる。
【００１１】
なお、本明細書に開示される技術は、種々の形態で実現することが可能であり、例えば、上記トレーニング方法を実行するトレーニング装置、学習済みの機械学習モデル、これらの方法や装置を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【００１２】
【図１】データ生成装置２００の構成を示すブロック図である。
【図２】画像生成処理のフローチャートである。
【図３】入力画像と出力画像との一例を示す図である。
【図４】生成ネットワークＧＮの構成を示すブロック図である。
【図５】エンコーダＥＣの構成を示すブロック図である。
【図６】デコーダＤＣの構成を示すブロック図である。
【図７】トレーニング装置１００の構成を示すブロック図である。
【図８】入力画像と実画像との一例を示す図である。
【図９】本実施例のネットワークシステム１０００の概念図である。
【図１０】識別ネットワークＤＮの構成を示すブロック図である。
【図１１】トレーニング処理のフローチャートである。
【図１２】変動誤差値算出処理のフローチャートである。
【図１３】第１変形例の変動誤差値算出処理のフローチャートである。
【図１４】第２変形例の変動誤差値算出処理のフローチャートである。
【発明を実施するための形態】
【００１３】
Ａ．実施例
Ａ−１．データ生成装置の構成
次に、実施の形態を実施例に基づき説明する。図１は、本実施例のデータ生成装置２００の構成を示すブロック図である。
【００１４】
データ生成装置２００は、パーソナルコンピュータやスマートフォンなどの計算機である。データ生成装置２００は、データ生成装置２００のコントローラとしてのＣＰＵ２１０と、ＲＡＭなどの揮発性記憶装置２２０と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置２３０と、液晶ディスプレイなどの表示部２４０と、キーボードやマウスなどの操作部２５０と、通信インタフェース（ＩＦ）２７０と、を備えている。通信インタフェース２７０は、外部機器（例えば、プリンタ３００）と接続するためのインタフェースである。通信インタフェース２７０は、例えば、プリンタ３００が接続されたネットワークＮＷに接続するための有線または無線のインタフェースを含む。
【００１５】
揮発性記憶装置２２０は、ＣＰＵ２１０が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置２３０には、コンピュータプログラムＰＧｇと、後述する複数個の入力データＩＤを含む入力データ群ＩＧと、が格納されている。揮発性記憶装置２２０や不揮発性記憶装置２３０は、データ生成装置２００の内部メモリである。
【００１６】
コンピュータプログラムＰＧｇは、例えば、プリンタ３００の製造者が運用するサーバからダウンロードされる形態で提供される。これに代えて、コンピュータプログラムＰＧｇは、ＤＶＤ−ＲＯＭなどに格納される形態で提供されてもよい。ＣＰＵ２１０は、コンピュータプログラムＰＧｇを実行することにより、後述する画像生成処理を実行する。
【００１７】
コンピュータプログラムＰＧｇは、後述する生成ネットワーク（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）によって変換された後に、さらに、活性化関数に入力されて変換される。バッチノーマライゼーションは、上述したデコーダＤＣの説明において説明した通りである。
【００６７】
畳込層Ｌ＿５によって生成される（Ｇ５×Ｈ５×Ｉ５）次元のデータが、上述した識別データＤＤである。したがって、畳込層Ｌ＿５によって生成されるデータの次元数（Ｇ５×Ｈ５×Ｉ５）は、識別データＤＤの次元数（３０×３０×１）と等しい。
【００６８】
なお、本実施例にて、各畳込層Ｌ＿１〜Ｌ＿８によって生成されるデータの次元数（Ｇ１×Ｈ１×Ｉ１）〜（Ｇ５×Ｈ５×Ｉ５）は、以下の通りである。
（Ｇ１×Ｈ１×Ｉ１）＝（１２８×１２８×６４）
（Ｇ２×Ｈ２×Ｉ２）＝（６４×６４×１２８）
（Ｇ３×Ｈ３×Ｉ３）＝（３２×３２×２５６）
（Ｇ４×Ｈ４×Ｉ４）＝（３１×３１×５１２）
（Ｇ５×Ｈ５×Ｉ５）＝（３０×３０×１）
【００６９】
Ａ−４−３．トレーニング処理
以下では、トレーニング処理について説明する。トレーニング処理は、生成ネットワークＧＮの上述した複数個の演算パラメータＰｅ、Ｐｄおよび識別ネットワークＤＮの上述した複数個の演算パラメータＰｄｎを調整することで、生成ネットワークＧＮが適切な出力データ（偽データ）ＯＤを出力できるようにトレーニングする処理である。上述したデータ生成装置２００の不揮発性記憶装置２３０に格納されたコンピュータプログラムＰＧｇに組み込まれた生成ネットワークＧＮは、本トレーニング処理によってトレーニングされた学習済みモデルである。
【００７０】
図１１は、トレーニング処理のフローチャートである。図１１は、トレーニング処理のフローチャートである。Ｓ２００では、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄと、識別ネットワークＤＮの複数個の演算パラメータＰｄｎと、を初期化する。例えば、これらの演算パラメータＰｅ、Ｐｄ、Ｐｄｎの初期値は、同一の分布（例えば、正規分布）から独立に取得された乱数に設定される。
【００７１】
Ｓ２０５では、ＣＰＵ２１０は、不揮発性記憶装置２３０に格納された複数個（例えば、１０００個）の実データペアＰｒから、バッチサイズ分の実データペアＰｒ、例えば、Ｖ個（Ｖは、２以上の整数、例えば、Ｖ＝１００）の実データペアＰｒを選択する。不揮発性記憶装置２３０に格納された複数個の実データペアＰｒは、Ｖ個ずつの実データペアＰｒをそれぞれ含む複数個のグループ（バッチ）に予め分割されている。ＣＰＵ２１０は、これらの複数個のグループから１個のグループを順次に選択することによって、Ｖ個の使用すべき実データペアＰｒを選択する。これに代えて、Ｖ個ずつの実データペアＰｒは、不揮発性記憶装置２３０に格納された複数個の実データペアＰｒから、毎回、ランダムに選択されても良い。
【００７２】
Ｓ２１０では、ＣＰＵ２１０は、選択されたＶ個の実データペアＰｒに含まれるＶ個の入力データＩＤをそれぞれ、生成ネットワークＧＮに入力して、Ｖ個の偽データＯＤを生成する。
【００７３】
Ｓ２１５では、ＣＰＵ２１０は、Ｖ個の実データペアＰｒを識別ネットワークＤＮに入力して、Ｖ個の実データペアＰｒに対応するＶ個の識別データＤＤｒを生成する。
【００７４】
Ｓ２２０では、ＣＰＵ２１０は、Ｖ個の偽データペアＰｆを識別ネットワークＤＮに入力して、Ｖ個の偽データペアＰｆに対応するＶ個の識別データＤＤｆを生成する。Ｖ個の偽データペアＰｆのそれぞれは、Ｖ個の実データペアＰｒに含まれるＶ個の入力データＩＤのそれぞれと、該入力データＩＤに対応する偽データＯＤと、のペアである。入力データＩＤに対応する偽データＯＤは、Ｓ２１０にて該入力データＩＤを生成ネットワークＧＮに入力して生成された偽データＯＤを意味する。
【００７５】
Ｓ２２５では、ＣＰＵ２１０は、変動誤差値算出処理を実行する。変動誤差値算出処理は、教師データＬＤｒ、ＬＤｆと識別データＤＤｒ、ＤＤｆとに加えて、乱数を用いて、変動誤差値を算出する処理である。
【００７６】
図１２は、変動誤差値算出処理のフローチャートである。Ｓ３００では、ＣＰＵ２１０は、図１１のＳ２１５にて生成されたＶ個の実データペアＰｒに対応するＶ個の識別データＤＤｒから１個の注目識別データを選択する。
【００７７】
Ｓ３０５では、実データペアＰｒに対応する教師データＬＤｒの次元数分の乱数Ｒｒを取得する。本実施例では、教師データＬＤｒは、（３０×３０×１）次元のデータである。このために、（３０×３０×１）個の乱数Ｒｒが取得される。これらの乱数Ｒｒは、例えば、同一の分布から独立に取得される。本実施例では、これらの乱数Ｒｒは、平均が０で分散が０．１である正規分布から取得される。このために、乱数Ｒｒは、概ね−０．３〜０．３の範囲の値である。
【００７８】
Ｓ３１０では、ＣＰＵ２１０は、教師データＬＤｒの（３０×３０×１）個の値（本実施例では全て「１」）に、それぞれ、（３０×３０×１）個の乱数Ｒｒを１個ずつ加算することによって、変動教師データＬＤｒｖを生成する。変動教師データＬＤｒｖの（３０×３０×１）個の値をｔｒｖｉとし、（３０×３０×１）個の乱数ＲｒをＲｒｉとする（ｉは、１以上（３０×３０×１）以下の整数）。この場合に、ｔｒｖｉは、（１＋Ｒｒｉ）である。
【００７９】
Ｓ３１５では、ＣＰＵ２１０は、注目識別データと、変動教師データＬＤｒｖと、を用いて、変動誤差値ＥＶｒを算出する。変動誤差値ＥＶｒには、所定の損失関数、本実施例では、シグモイドクロスエントロピー誤差が用いられる。シグモイドクロスエントロピーの式（１）は、以下に示す通りである。
【００８０】
【数１】
2020187582.tif 000003
【００８１】
ここで、ｐは、識別データおよび教師データの次元数（本実施例では、ｐ＝（３０×３０×１））である。ａｉは、注目識別データの各値をシグモイド関数に入力して正規化した値であり、ｔｉは、値ａｉに対応する教師データの各値である。誤差値Ｅｇａｎは、識別データが、対応する教師データに近づくほど大きくなる。換言すれば、誤差値Ｅｇａｎは、識別データと、対応する教師データと、の差分が小さくなるほど大きくなる。本ステップでは、式（１）における教師データの各値ｔｉとして、上述した変動教師データＬＤｒｖの各値ｔｒｖｉを用いて算出される誤差値Ｅｇａｎが、変動誤差値ＥＶｒである。
【００８２】
Ｓ３２０では、ＣＰＵ２１０は、Ｖ個の識別データＤＤｒを全て処理したか否かを判断する。未処理の識別データＤＤｒがある場合には（Ｓ３２０：ＮＯ）、ＣＰＵ２１０は、Ｓ３００に戻る。Ｖ個の識別データＤＤｒが全て処理された場合には（Ｓ３２０：ＹＥＳ）、ＣＰＵ２１０は、Ｓ３２５に処理を進める。
【００８３】
Ｓ３２５に処理が進められた時点で、Ｖ個の識別データＤＤｒに対応するＶ個の変動誤差値ＥＶｒが算出されている。１個の変動誤差値ＥＶｒを算出する度に、Ｓ３０５にて乱数Ｒｒを取り直すので、Ｖ個の変動誤差値ＥＶｒのそれぞれが算出される際に用いられる変動教師データＬＤｒｖは、互いに異なる。
【００８４】
Ｓ３２５では、ＣＰＵ２１０は、図１１のＳ２２０にて生成されたＶ個の偽データペアＰｆに対応するＶ個の識別データＤＤｆから１個の注目識別データを選択する。
【００８５】
Ｓ３３０では、偽データペアＰｆに対応する教師データＬＤｆの次元数分の乱数Ｒｆを取得する。本実施例では、教師データＬＤｆは、（３０×３０×１）次元のデータである。このために、（３０×３０×１）個の乱数Ｒｆが取得される。これらの乱数Ｒｆは、例えば、上述した乱数Ｒｒと同様に、平均が０で分散が０．１である正規分布から独立に取得される。
【００８６】
Ｓ３３５では、ＣＰＵ２１０は、教師データＬＤｆの（３０×３０×１）個の値（本実施例では全て「０」）に、それぞれ、（３０×３０×１）個の乱数Ｒｆの絶対値｜Ｒｆ｜を１個ずつ加算することによって、変動教師データＬＤｆｖを生成する。変動教師データＬＤｆｖの（３０×３０×１）個の値をｔｆｖｉとし、（３０×３０×１）個の乱数ＲｆをＲｆｉとする（ｉは、１以上（３０×３０×１）以下の整数）。この場合に、ｔｆｖｉは、｜Ｒｆｉ｜である。
【００８７】
Ｓ３４０では、ＣＰＵ２１０は、注目識別データと、変動教師データＬＤｆｖと、を用いて、変動誤差値ＥＶｆを算出する。変動誤差値ＥＶｆには、シグモイドクロスエントロピー誤差が用いられる。したがって、上述した式（１）における教師データの各値ｔｉとして、上述した変動教師データＬＤｆｖの各値ｔｆｖｉを用いて算出される誤差値Ｅｇａｎが、変動誤差値ＥＶｆである。
【００８８】
Ｓ３４５では、ＣＰＵ２１０は、Ｖ個の識別データＤＤｆを全て処理したか否かを判断する。未処理の識別データＤＤｆがある場合には（Ｓ３４５：ＮＯ）、ＣＰＵ２１０は、Ｓ３２５に戻る。Ｖ個の識別データＤＤｆが全て処理された場合には（Ｓ３４５：ＹＥＳ）、ＣＰＵ２１０は、変動誤差値算出処理を終了する。
【００８９】
変動誤差値算出処理が終了した時点で、Ｖ個の識別データＤＤｆに対応するＶ個の変動誤差値ＥＶｆが算出されている。１個の変動誤差値ＥＶｆを算出する度に、Ｓ３３０にて乱数Ｒｆを取り直すので、Ｖ個の変動誤差値ＥＶｆのそれぞれが算出される際に用いられる変動教師データＬＤｆｖは、互いに異なる。
【００９０】
変動誤差値算出処理が終了すると、図１１のＳ２３０では、ＣＰＵ２１０は、算出されたＶ個の変動誤差値ＥＶｒと、Ｖ個の変動誤差値ＥＶｆと、を用いて、識別ネットワークＤＮの複数個の演算パラメータＰｄｎを調整する。具体的には、（２×Ｖ）個の変動誤差値ＥＶｒ、ＥＶｆの平均値を示す損失関数Ｌｄｎがバッチ全体の損失関数として用いられる。ＣＰＵ２１０は、ＣＰＵ２１０は、損失関数Ｌｄｎを用いて算出される指標値が大きくなるように、所定のアルゴリズムに従って演算パラメータＰｄｎを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【００９１】
Ｓ２３５では、ＣＰＵ２１０は、Ｖ個の偽データペアＰｆのそれぞれについて、識別データＤＤｆと教師データＬＤｆとの間の誤差値Ｅｆを算出する。教師データＬＤｆの各値は、上述したように「０」である。このため、Ｖ個の識別データＤＤｆのそれぞれについて、上述した式（１）における教師データの各値ｔｉとして「０」を用いて算出される誤差値Ｅｇａｎが、誤差値Ｅｆである。
【００９２】
Ｓ２４０では、ＣＰＵ２１０は、Ｖ個の実データＲＤのそれぞれについて、実データＲＤと、該実データＲＤに対応する偽データＯＤと、の間の誤差値Ｅｒｆを算出する。誤差値Ｅｒｆには、所定の損失関数、本実施例では、平均絶対誤差（MAE（Mean Absolute Error））が用いられる。例えば、誤差値Ｅｒｆは、以下の式（２）を用いて算出される。
【００９３】
【数２】
2020187582.tif 000004
【００９４】
ここで、ｓは、実データＲＤおよび偽データＯＤの次元数（本実施例では、ｓ＝（２５６×２５６×３））である。ｄｉは、実データＲＤの各値であり、ｅｉは、値ｄｉに対応する出力データＯＤの各値である。式（２）から解るように、誤差値Ｅｒｆは、実データＲＤによって示される画像と、偽データＯＤによって示される画像と、の間の画素ごとの誤差である。誤差値Ｅｒｆは、偽データＯＤと実データＲＤとが近いほど小さくなる。換言すれば、誤差値Ｅｆは、偽データＯＤと実データＲＤとの差分が小さくなるほど小さくなる。
【００９５】
Ｓ２４５では、ＣＰＵ２１０は、Ｓ２３５にて算出されたＶ個の誤差値Ｅｒと、Ｓ２４０にて算出されたＶ個の誤差値Ｅｒｆと、を用いて、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する。具体的には、ＣＰＵ２１０は、バッチ全体の損失関数として、以下の式（３）に示す損失関数Ｌｇを用いて指標値を算出する。ＣＰＵ２１０は、損失関数Ｌｇを用いて算出される指標値が小さくなるように、所定のアルゴリズムに従って演算パラメータＰｅ、Ｐｄを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【００９６】
【数３】
2020187582.tif 000005
【００９７】
ここで、上述したように、ＬｆはＶ個の誤差値Ｅｆの平均値であり、ＬｒｆはＶ個の誤差値Ｅｒｆの平均値であり、αは、所定の係数である。
【００９８】
Ｓ２５０では、ＣＰＵ２１０は、トレーニングが完了したか否かを判断する。本実施例では、作業者からの完了指示が入力された場合にはトレーニングが完了したと判断し、トレーニングの継続指示が入力された場合にはトレーニングが完了していないと判断する。例えば、ＣＰＵ２１０は、トレーニング用に用いられた入力データＩＤとは別の複数個のテスト用の入力データＩＤを、生成ネットワークＧＮに入力して、複数個の偽データＯＤを生成する。ＣＰＵ２１０は、生成された偽データＯＤによって示される画像を表示部２４０に表示する。作業者は、表示された画像を確認して、最終的な画像として十分な画像（例えば、第２の書体で特定の文字を精度良く表現する画像）が生成されているか否かを確認し、確認結果に応じて、操作部２５０を介して、トレーニングの完了指示または継続指示を入力する。変形例では、例えば、Ｓ２０５〜Ｓ２４５の処理が所定回数だけ繰り返された場合に、トレーニングが完了されたと判断されても良い。
【００９９】
トレーニングが完了していないと判断される場合には（Ｓ２５０：ＮＯ）、ＣＰＵ２１０は、Ｓ２０５に処理を戻す。トレーニングが完了したと判断される場合には（Ｓ２５０：ＹＥＳ）、ＣＰＵ２１０は、トレーニング処理を終了する。このトレーニング処理によれば、変動誤差値ＥＶｒが大きくなるように、換言すれば、識別データＤＤｒ、ＤＤｆと変動教師データＬＤｒｖ、ＬＤｆｖとの差分が小さくなるように、識別ネットワークＤＮの複数個の演算パラメータＰｄｎが調整される（図１１のＳ２３０）。すなわち、識別ネットワークＤＮは、入力されたデータペアの真偽を正しく識別することを目的としてトレーニングされる。そして、生成ネットワークＧＮは、誤差値Ｅｆが小さくなるように、換言すれば、識別データＤＤｆと教師データＬＤｆとの差分が大きくなるように、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄが調整される（図１１のＳ２３０）。同時に、生成ネットワークＧＮは、誤差値Ｅｒｆが小さくなるように、換言すれば、実データＲＤと、実データＲＤに対応する偽データＯＤと、の差分が小さくなるように、トレーニングされる。すなわち、生成ネットワークＧＮは、識別ネットワークＤＮによって、偽データペアＰｆが実データペアＰｒであると誤って識別されること、および、偽データＯＤが実データＲＤに近づくことを目的としてトレーニングされる。この結果、入力データＩＤの特定の属性（例えば、表現すべき文字の種類）を保持しつつ、変換すべき別の属性（例えば、書体）を変換できるように、生成ネットワークＧＮをトレーニングすることができる。トレーニング処理が終了した時点で、生成ネットワークＧＮは、演算パラメータＰｅ、Ｐｄが調整された学習済みモデルになっている。したがって、トレーニング処理は、学習済みモデルを生成（製造）する処理である、と言うことができる。
【０１００】
以上説明した本実施例によれば、トレーニング処理（図１１）は、実データペアＰｒおよび偽データペアＰｆを識別ネットワークＤＮに入力することによって、これらのデータペアに対応する識別データＤＤｒ、ＤＤｆを出力させる第１工程（図１１のＳ２１５、Ｓ２２０）と、識別データＤＤｒ、ＤＤｆと教師データＬＤｒ、ＬＤｆとを用いて、識別ネットワークＤＮの複数個の演算パラメータＰｄｎを調整する第２工程（図１１のＳ２２５、Ｓ２３０）と、を備え、第１工程と第２工程とを複数回繰り返す（図１１のＳ２５０）ことによって、識別ネットワークＤＮをトレーニングする。第２工程の変動誤差値算出処理（図１２）は、複数個の演算パラメータＰｄｎの調整のために用いられる値である教師データＬＤｒ、ＬＤｆを、乱数Ｒｒ、Ｒｆを用いて変動させる変動工程（図１２のＳ３０５、Ｓ３１０、Ｓ３３０、Ｓ３３５）を含む。この結果、変動誤差値ＥＶｒは、乱数Ｒｒ、Ｒｆを用いない場合に算出される誤差値とは異なる量に変動する。したがって、複数個の演算パラメータＰｄｎの調整量を、乱数Ｒｒ、Ｒｆを用いない場合に算出される調整量とは異なる量に変動させることができる。この結果、識別ネットワークＤＮのトレーニングの進み具合を調整することができる。
【０１０１】
例えば、本実施例では、さらに、入力データＩＤを、識別ネットワークＤＮとは異なる機械学習モデルである生成ネットワークＧＮに入力することによって、入力データＩＤに対応する偽データ（出力データ）ＯＤを出力させる第３工程（図１１のＳ２１０）と、偽データＯＤを用いて（本実施例では、偽データＯＤを識別ネットワークＤＮに入力して得られる識別データＤＤｆを用いて）、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する第４工程（図１１のＳ２３５〜Ｓ２４５）と、を備え、第１工程〜第４工程を複数回繰り返す（図１１のＳ２５０）ことによって、識別ネットワークＤＮと生成ネットワークＧＮとを並行してトレーニングする。そして、第４工程では、乱数は用いられない。すなわち、第４工程は、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整するために用いられる値を、乱数を用いて変動させる工程を含まない。このように、複数個の機械学習モデルを並行してトレーニングする場合には、例えば、一方の機械学習モデル（本実施例では、生成ネットワークＧＮ）のトレーニングの進み具合との関係で、他方の機械学習モデル（本実施例では、識別ネットワークＤＮ）のトレーニングの進み具合を調整したい場合がある。このような場合に、本実施例のように、一方の機械学習モデルのトレーニング（パラメータの調整）のために用いられる値には乱数を用いず、他方の機械学習モデルのトレーニングのために用いられる値には乱数を用いることで、一方の機械学習モデルのトレーニングに対して、他方の機械学習モデルのトレーニングの進み具合を遅らせることができる。
【０１０２】
より具体的には、本実施例では、識別ネットワークＤＮと生成ネットワークＧＮとは、上述のように、いわゆるＧＡＮｓを構成している。すなわち、識別ネットワークＤＮは、複数個の偽データペアＰｆおよび実データペアＰｒのそれぞれが実データＲＤと偽データＯＤとのいずれを含むペアであるかを識別するためのモデルである。識別ネットワークＤＮが出力するデータは、当該識別結果を示す識別データＤＤｒ、ＤＤｆである。そして、生成ネットワークＧＮは、偽データＯＤを生成するためのモデルである。第２工程（図１１のＳ２２５、Ｓ２３０）では、識別データＤＤｒ、ＤＤｆと教師データＬＤｒ、ＬＤｆとの差分が小さくなるように、識別ネットワークＤＮの複数個の演算パラメータＰｄｎが調整される（図１１のＳ２３０）。第４工程（Ｓ２３５〜Ｓ２４５）では、偽データＯＤを識別ネットワークＤＮに入力することによって得られる識別データＤＤｆと教師データＬＤｆとの差が大きくなるように、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄが調整される。このような、ＧＡＮｓでは、生成ネットワークＧＮのタスク（例えば、画像データの生成）が識別ネットワークＤＮのタスク（例えば、画像データの識別）よりも重い。このために、生成ネットワークＧＮのトレーニングの進み具合が、識別ネットワークＤＮのトレーニングの進み具合よりも遅れがちである。仮に、トレーニング処理において、生成ネットワークＧＮのトレーニングが識別ネットワークＤＮのトレーニングに対して過度に遅れる可能性がある。この場合には、生成ネットワークＧＮの複数個の演算パラメータＰｅ、Ｐｄを調整する際に、勾配の消失が発生して生成ネットワークＧＮのトレーニングが進まなくなる不都合が発生し得る。本実施例では、第２工程にて乱数Ｒｒ、Ｒｆを用いることによって、識別ネットワークＤＮのトレーニングの進み具合を遅らせることができる。この結果、生成ネットワークＧＮのトレーニングの進み具合が識別ネットワークＤＮのトレーニングの進み具合よりも過度に遅れることを抑制できる。この結果、上述の不都合を抑制して、生成ネットワークＧＮのトレーニングを効果的に進めることができる。
【０１０３】
さらに、上記トレーニング処理では、変動工程（図１２のＳ３０５、Ｓ３１０、Ｓ３３０、Ｓ３３５）は、複数個の教師データＬＤｒ、ＬＤｆに含まれる値を、乱数Ｒｒ、Ｒｆを用いて変動させる工程である。この結果、教師データＬＤｒ、ＬＤｆに含まれる値を変動させることで、容易に識別ネットワークＤＮのトレーニングの進み具合を調整することができる。
【０１０４】
さらに、本実施例の変動工程では、教師データの変動後の値（すなわち、変動教師データＬＤｒｖ、ＬＤｆｖの値）が０以上の値となるように、教師データＬＤｒ、ＬＤｆに含まれる値を変動させる。例えば、上記実施例のＳ３３５では、教師データＬＤｆの各値は「０」であるので、仮に、−０．３〜０．３の範囲の値を取るＲｆをそのまま加算すれば、変動後の値は、０未満になり得る。上記実施例のＳ３３５では、教師データＬＤｆの各値に、乱数Ｒｆの絶対値｜Ｒｆ｜を加算することで、変動後の値が０以上の値になる。教師データの各値は、０以上の値（例えば、０または１）が通常は用いられるので、変動後の値が０未満であると、プログラムによる計算で誤動作が発生する可能性がある。本実施例では、このような不都合を抑制できる。
【０１０５】
さらに、本実施例のトレーニング装置１００（図１）、および、学習済みの生成ネットワークＧＮによれば、生成ネットワークＧＮは、上述したトレーニング処理によって効果的にトレーニングされているので、入力データＩＤに応じた適切な偽データＯＤを生成できる。例えば、本実施例では、入力データＩＤは、第１の属性（例えば、「Ａ」の文字であるという属性）と第２の属性（例えば、第１の書体であるという属性）を有し、かつ、第３の属性（例えば、第２の書体であるという属性）を有しない画像データである。そして、出力データ（偽データ）ＯＤは、第１の属性と第３の属性を有し、かつ、第２の属性を有しない画像データである。このように、本実施例によれば、学習済みの生成ネットワークＧＮは、入力データＩＤの第１の属性を維持しつつ、入力データＩＤの第２の属性を第３の属性に変換することによって出力データ（偽データ）ＯＤを生成することができる。
【０１０６】
以上の説明から解るように、本実施例の実データペアＰｒおよび偽データペアＰｆは、第１の入力データの例であり、入力データＩＤは、第２の入力データの例である。また、識別データＤＤｒ、ＤＤｆは、第１の出力データの例であり、偽データＯＤは、第２の出力データの例である。また、識別ネットワークＤＮの演算パラメータＰｄｎは、第１の演算パラメータの例であり、生成ネットワークＧＮの演算パラメータＰｅ、Ｐｄは、第２の演算パラメータの例である。識別ネットワークＤＮは、第１の機械学習モデルの例であり、生成ネットワークＧＮは、第２の機械学習モデルの例である。
【０１０７】
Ｂ．変形例：
（１）上記実施例の変動工程（図１２のＳ３０５、Ｓ３１０、Ｓ３３０、Ｓ３３５）は、複数個の教師データＬＤｒ、ＬＤｆに含まれる値を、乱数Ｒｒ、Ｒｆを用いて変動させる工程である。これに限らず、変動工程は、複数個の演算パラメータＰｄｎの調整のために用いられる別の値を、乱数を用いて変動させる工程であっても良い。その一例を第１変形例および第２変形例として説明する。
【０１０８】
図１３は、第１変形例の変動誤差値算出処理のフローチャートである。図１３の変動誤差値算出処理は、図１２の変動誤差値算出処理のＳ３１０、Ｓ３１５、Ｓ３３５、Ｓ３４０に代えて、Ｓ３１０Ｂ、Ｓ３１５Ｂ、Ｓ３３５Ｂ、Ｓ３４０Ｂが実行される。
【０１０９】
Ｓ３１０Ｂでは、ＣＰＵ２１０は、注目識別データ（Ｖ個の識別データＤＤｒのうちの１つのデータ）の（３０×３０×１）個の値のそれぞれに、乱数Ｒｒを１個ずつ加算することによって、変動注目識別データを生成する。注目識別データの（３０×３０×１）個の値をＶｒｉとし、（３０×３０×１）個の乱数ＲｒをＲｒｉとする（ｉは、１以上（３０×３０×１）以下の整数）。この場合に、変動注目識別データの各値Ｖｒｉは、（Ｖｒｉ＋Ｒｒｉ）である。
【０１１０】
Ｓ３１５Ｂでは、ＣＰＵ２１０は、Ｓ３１０Ｂにて生成された変動注目識別データと、教師データＬＤｒと、を用いて、変動誤差値ＥＶｒｂを算出する。具体的には、上記の式（１）における教師データの各値ｔｉとして、教師データＬＤｒの各値「１」を用い、ａｉとして、変動注目識別データの各値（Ｖｒｉ＋Ｒｒｉ）をシグモイド関数に入力して正規化した値を用いて、算出される誤差値Ｅｇａｎが、変動誤差値ＥＶｒｂである。
【０１１１】
Ｓ３３５Ｂでは、ＣＰＵ２１０は、注目識別データ（Ｖ個の識別データＤＤｆのうちの１つのデータ）の（３０×３０×１）個の値のそれぞれに、乱数Ｒｆを１個ずつ加算することによって、変動注目識別データを生成する。注目識別データの（３０×３０×１）個の値をＶｆｉとし、（３０×３０×１）個の乱数ＲｆをＲｆｉとする（ｉは、１以上（３０×３０×１）以下の整数）。この場合に、変動注目識別データの各値Ｖｆｉは、（Ｖｆｉ＋Ｒｆｉ）である。
【０１１２】
Ｓ３４０Ｂでは、ＣＰＵ２１０は、Ｓ３３５Ｂにて生成された変動注目識別データと、教師データＬＤｆと、を用いて、変動誤差値ＥＶｆｂを算出する。具体的には、上記の式（１）における教師データの各値ｔｉとして、教師データＬＤｆの各値「０」を用い、ａｉとして、変動注目識別データの各値（Ｖｆｉ＋Ｒｆｉ）をシグモイド関数に入力して正規化した値を用いて、算出される誤差値Ｅｇａｎが、変動誤差値ＥＶｆｂである。
【０１１３】
第１変形例では、図１１のＳ２３０において、（２×Ｖ）個の変動誤差値ＥＶｒ、ＥＶｆに代えて、図１３の変動誤差値算出処理にて算出された（２×Ｖ）個の変動誤差値ＥＶｒｂ、ＥＶｆｂを用いて、識別ネットワークＤＮの複数個の演算パラメータＰｄｎを調整する。
【０１１４】
以上説明した第１変形例では、変動工程（図１３のＳ３０５、Ｓ３１０Ｂ、Ｓ３３０、Ｓ３３５Ｂ）は、識別データＤＤｒ、ＤＤｆに含まれる値を、乱数Ｒｒ、Ｒｆを用いて変動させる工程である。この結果、識別データＤＤｒ、ＤＤｆに含まれる値を変動させることで、実施例と同等の容易さで、識別ネットワークＤＮのトレーニングの進み具合を調整することができる。
【０１１５】
図１４は、第２変形例の変動誤差値算出処理のフローチャートである。図１４の変動誤差値算出処理は、図１２の変動誤差値算出処理のＳ３０５〜Ｓ３１５、Ｓ３３０〜Ｓ３４０に代えて、Ｓ３０５Ｃ〜Ｓ３１５Ｃ、Ｓ３３０Ｃ〜Ｓ３４０Ｃが実行される。
【０１１６】
Ｓ３０５Ｃでは、ＣＰＵ２１０は、注目識別データ（Ｖ個の識別データＤＤｒのうちの１つのデータ）と、教師データＬＤｒと、を用いて、誤差値Ｅｖを算出する。具体的には、上記の式（１）における教師データの各値ｔｉとして、教師データＬＤｒの各値「１」を用い、ａｉとして、注目識別データの各値をシグモイド関数に入力して正規化した値を用いて、算出される誤差値Ｅｇａｎが、誤差値Ｅｒである。
【０１１７】
Ｓ３１０Ｃでは、ＣＰＵ２１０は、１個の乱数Ｒｒｃを取得する。乱数Ｒｒｃは、例えば、所定の正規分布から独立に取得される。
【０１１８】
Ｓ３１５Ｃでは、ＣＰＵ２１０は、Ｓ３０５Ｃにて算出された誤差値Ｅｒに、乱数Ｒｒｃを加算して、変動誤差値ＥＶｒｃを算出する（ＥＶｒｃ＝Ｅｒ＋Ｒｒｃ）。
【０１１９】
Ｓ３３０Ｃでは、ＣＰＵ２１０は、注目識別データ（Ｖ個の識別データＤＤｆのうちの１つのデータ）と、教師データＬＤｆと、を用いて、誤差値Ｅｆを算出する。具体的には、上記の式（１）における教師データの各値ｔｉとして、教師データＬＤｆの各値「０」を用い、ａｉとして、注目識別データの各値をシグモイド関数に入力して正規化した値を用いて、算出される誤差値Ｅｇａｎが、誤差値Ｅｆである。
【０１２０】
Ｓ３３５Ｃでは、ＣＰＵ２１０は、１個の乱数Ｒｆｃを取得する。乱数Ｒｆｃは、例えば、乱数Ｒｒｃと同一の正規分布から独立に取得される。
【０１２１】
Ｓ３４０Ｃでは、ＣＰＵ２１０は、Ｓ３３０Ｃにて算出された誤差値Ｅｆに、乱数Ｒｆｃを加算して、変動誤差値ＥＶｆｃを算出する（ＥＶｆｃ＝Ｅｆ＋Ｒｆｃ）。
【０１２２】
第２変形例では、図１１のＳ２３０において、（２×Ｖ）個の変動誤差値ＥＶｒ、ＥＶｆに代えて、図１４の変動誤差値算出処理にて算出された（２×Ｖ）個の変動誤差値ＥＶｒｃ、ＥＶｆｃを用いて、識別ネットワークＤＮの複数個の演算パラメータＰｄｎを調整する。
【０１２３】
以上説明した第２変形例では、変動工程（図１４のＳ３１０Ｃ、Ｓ３１５Ｃ、Ｓ３３５Ｃ、Ｓ３４０Ｃ）は、注目識別データと教師データＬＤｒ、ＬＤｆとを用いて算出される誤差値Ｅｒ、Ｅｆを、乱数Ｒｒｃ、Ｒｆｃを用いて変動させる工程である。誤差値Ｅｒ、Ｅｆは、所定の損失関数（本実施例ではシグモイドクロスエントロピー誤差）を用いて算出される指標値と言うことができる。第２変形例によれば、より少ない個数の乱数を用いて、変動誤差値ＥＶｒｃ、ＥＶｆｃを算出できるので、容易に識別ネットワークＤＮのトレーニングの進み具合を調整することができる。
【０１２４】
（２）上記実施例および変形例では、乱数を用いて変動させる値は、教師データ、識別データ、誤差値である。これに限らず、ＣＰＵ２１０は、識別ネットワークＤＮの複数個の演算パラメータＰｄｎの調整のために用いられる他の値を、乱数を用いて変動させても良い。例えば、ＣＰＵ２１０は、誤差逆伝播法や勾配降下法の過程で算出される微分値などの中間パラメータを、乱数を用いて変動させても良い。なお、これらの変動対象の値が負の値を取ることが許容される場合には、例えば、これらの値は負の値を含む乱数を加算することによって変動させても良い。また、これらの変動対象の値が負の値を取ることが許容されない場合には、例えば、これらの値は０以上の値の乱数を加算することによって変動させても良い。
【０１２５】
また、上記実施例および変形例では、変動対象の値に乱数を加算することで、その値を変動させている。これに代えて、例えば、平均が１である正規分布から乱数を取得し、変動対象の値に乱数を乗算または除算することで、その値を変動させても良い。
【０１２６】
（３）上記実施例では、いわゆるＧＡＮｓを構成するネットワークシステム１０００において、生成ネットワークＧＮのトレーニングの進み具合が、識別ネットワークＤＮのトレーニングの進み具合に対して過度に遅れないように、識別ネットワークＤＮのトレーニングの進み具合を、乱数を用いて調整している。ＧＡＮｓとしては、様々な種類のＧＡＮｓ、例えば、CycleGAN、DCGAN、ConditionalGANに対して、本発明が適用されてもよい。
【０１２７】
さらに、ＧＡＮｓに限らず、何らかの理由で、出力データと教師データとを用いてトレーニングされる特定の機械学習モデルのトレーニングの進み具合を調整する場合に、本発明が適用され得る。
【０１２８】
（４）上記実施例では、誤差値ＥＶｒ、ＥＶｆ、Ｅｆには、式（１）に示すように、シグモイドクロスエントロピー誤差が用いられ、誤差値Ｅｒｆには、平均絶対誤差が用いれている。これに代えて、これらの誤差値には、他の種類の誤差値が用いられても良い。例えば、誤差値ＥＶｒ、ＥＶｆ、Ｅｆには、ソフトマックスクロスエントロピー誤差が用いられても良い。誤差値Ｅｒｆには、平均二乗誤差が用いられても良い。
【０１２９】
（５）上記実施例は、生成ネットワークＧＮは、一般的には、上述したように、第１の属性（例えば、「Ａ」の文字であるという属性）と第２の属性（例えば、第１の書体であるという属性）を有し、かつ、第３の属性（例えば、第２の書体であるという属性）を有しない画像データを、第１の属性と第３の属性を有し、かつ、第２の属性を有しない画像データに変換するモデルである。このような変換は、一般的には、「スタイル変換(style transfer)」「画像翻訳（image-to-image translation）」とも呼ばれる。他の具体例としては、生成ネットワークＧＮは、例えば、所定の物（建物、靴などの静物や馬、犬などの動物）を示す線画（線のみで描画された画像）を、所定の物を示すカラー画像に変換するモデルであっても良い。また、生成ネットワークＧＮは、例えば、所定の場所を示す航空写真を、該所定の場所を示す地図に変換するモデルであっても良い。これらの場合にも、生成ネットワークＧＮは、第１の属性（所定の物を示すという属性、所定の場所を示すという属性）と第２の属性（線画であるという属性、航空写真であるという属性）を有し、かつ、第３の属性（カラー画像であるという属性、地図であるという属性）を有しない画像データを、第１の属性と第３の属性を有し、かつ、第２の属性を有しない画像データに変換するモデルである、と言うことができる。
【０１３０】
（６）上記実施例では、生成ネットワークＧＮでは、入力データＩＤと偽データＯＤとは共に、画像データである。これに限らず、入力データＩＤや偽データＯＤの両方または片方は、テキストや音声を示すデータであっても良い。例えば、生成ネットワークＧＮは、特定の物を表現する画像データを、特定の物を表現するテキストや音声に変換するモデルであっても良い。あるいは、生成ネットワークＧＮは、特定の物を表現するテキストを、特定の物を表現する画像や音声に変換するモデルであっても良い。
【０１３１】
（７）生成ネットワークＧＮや識別ネットワークＤＮの具体的な構成は、図５、図６に示す構成に限られず、他の様々な構成であっても良い。例えば、生成ネットワークＧＮや識別ネットワークＤＮにおいて、畳込層や転置畳込層の層数は、適宜に変更されて良い。また、生成ネットワークＧＮや識別ネットワークＤＮは、畳込層や転置畳込層の全部または一部に代えて、プーリング層や全結合層を備えても良い。また、各層で出力された値に対して実行される後処理も任意の様々な構成が採用される。例えば、後処理に用いられる活性化関数は、任意の他の関数、例えば、ＰＲｅＬＵ、ソフトマックス、シグモイドが用いられても良い。また、バッチノーマリゼイション、ドロップアウトなどの処理も後処理として適宜に追加や省略がされ得る。さらに、上記実施例の生成ネットワークＧＮでは、デコーダＤＣのｍ番目の転置畳込層ＤＬ＿ｍには、エンコーダＥＣの（９−ｍ）番目の畳込層ＥＬ＿（９−ｍ）から出力される値が入力されるが、該入力は省略されても良い。
【０１３２】
また、識別ネットワークＤＮは、ニューラルネットワークとは異なる機械学習モデルであって、教師データを用いてトレーニングされる機械学習モデル、例えば、サポートベクターマシーン（ＳＶＭ）であっても良い。
【０１３３】
（８）図１のデータ生成装置２００や図７のトレーニング装置１００のハードウェア構成は、一例であり、これに限られない。例えば、データ生成装置２００やトレーニング装置１００のプロセッサは、ＣＰＵに限らず、ＧＰＵ（Graphics Processing Unit）やＡＳＩＣ（application specific integrated circuit）、あるいは、これらとＣＰＵとの組み合わせであっても良い。また、トレーニング装置１００やデータ生成装置２００は、ネットワークを介して互いに通信可能な複数個の計算機（例えば、いわゆるクラウドサーバ）であっても良い。
【０１３４】
（９）上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、生成ネットワークＧＮや識別ネットワークＤＮは、プログラムモジュールに代えて、ASIC（Application Specific Integrated Circuit）等のハードウェア回路によって実現されてよい。
【０１３５】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１３６】
１００…トレーニング装置、１１０…ＣＰＵ、１２０…揮発性記憶装置、１３０…不揮発性記憶装置、１４０…表示部、１５０…操作部、２００…データ生成装置、２１０…ＣＰＵ、２２０…揮発性記憶装置、２３０…不揮発性記憶装置、２４０…表示部、２５０…操作部、２７０…通信インタフェース、３００…プリンタ、１０００…ネットワークシステム、ＥＬ＿０、Ｌ＿０…入力層、ＥＬ＿１〜ＥＬ＿８、Ｌ＿０〜Ｌ＿５…畳込層、ＤＬ＿１〜ＤＬ＿８…転置畳込層、ＥＣ…エンコーダ、ＤＣ…デコーダ、ＩＤ…入力データ、ＯＤ…出力データ（偽データ）、ＣＤ、ＣＤｆ…特徴データ、ＬＤｒ、ＬＤｆ…教師データ、ＧＮ…生成ネットワーク、ＤＮ…識別ネットワーク、Ｐｄ、Ｐｅ、Ｐｄｎ…演算パラメータ、Ｐｒ…実データペア、ＰＧｇ、ＰＧｔ…コンピュータプログラム
【図１】
2020187582.tif 000006
【図２】
2020187582.tif 000007
【図３】
2020187582.tif 000008
【図４】
2020187582.tif 000009
【図５】
2020187582.tif 000010
【図６】
2020187582.tif 000011
【図７】
2020187582.tif 000012
【図８】
2020187582.tif 000013
【図９】
2020187582.tif 000014
【図１０】
2020187582.tif 000015
【図１１】
2020187582.tif 000016
【図１２】
2020187582.tif 000017
【図１３】
2020187582.tif 000018
【図１４】
2020187582.tif 000019