ML デフォーマのトレーニング設定

ML デフォーマのトレーニング設定では、トレーニング データで機械学習モデルをトレーニングする方法を設定します。トレーニング データを書き出す方法の詳細については、「ML デフォーマ(ML Deformer)のトレーニング データを書き出し(Export Training Data)ウィンドウ」を参照してください。

注: ML デフォーマのトレーニングの設定は、ML デフォーマ(ML Deformer)のトレーニング データを書き出し(Export Training Data)ウィンドウとは異なります。
ML デフォーマを使用して複雑なデフォメーションをソース オブジェクトに転送する方法については、「ML デフォーマを作成する」および「個別のターゲット ジオメトリを使用して ML デフォーマを作成する」を参照してください。

ML デフォーマのトレーニング設定を開くには

フォルダ設定(Folder Settings)

このセクションでは、書き出したトレーニング データとトレーニング済みモデルへのパスを設定できます。

トレーニング データの場所(Training Data Location)
モデルをトレーニングする書き出されたトレーニング データへのパスを表示します。トレーニング データを書き出す方法の詳細については、「ML デフォーマ(ML Deformer)のトレーニング データを書き出し(Export Training Data)ウィンドウ」を参照してください。参照(Browse)をクリックして、トレーニング データをロードできるフォルダに移動します。
注: モデルをトレーニングした後は、同じデータを使用して再トレーニングしない限りトレーニング データは必要ないため、これは一時フォルダにすることができます。
ML モデル ルートの場所(ML Model Root Location)
トレーニング済み ML モデルが保存されるフォルダが表示されます。このフォルダは、既定ではプロジェクト フォルダ内にあります。ML デフォーマを機能させるには ML モデルが必要です。そのため、通常、ML モデルは共有を容易にするためにシーンと同じプロジェクトに保持する必要があります。
参照(Browse)をクリックして、ML モデルを保存するフォルダに移動します。

トレーニング設定(Training Settings)

このセクションでは、ML デフォーマの学習に使用するトレーニング データを定義できます。

トレーニング データ名(Training Data Name)
モデルのトレーニングに使用するトレーニング データ セットの名前を指定します。これは、ML デフォーマ(ML Deformer)のトレーニング データを書き出し(Export Training Data)ウィンドウでトレーニング データを書き出すときに指定した名前と一致する必要があります。
出力 ML モデル名(Output ML Model Name)
トレーニング済み ML モデル ファイルとそれに関連付けられたメタデータを保持するために作成されるフォルダの名前。このフォルダには接尾辞「.mldf」が付けられます。たとえば、「test」という名前で書き出すと、Training Data Name フォルダの ML Model Root Location フォルダに test.mldf というフォルダが作成されます。
データをプリロード(Preload Data)
データをプリロード(Preload Data)をアクティブにすると、トレーニング プロセス中にすべてのトレーニング データを一括でロードする代わりに、メモリにロードできます。トレーニング データ セット全体をメモリに収めることができる場合は、データをプリロード(Preload Data)を有効にすることをお勧めします。これにより、トレーニング プロセスが大幅に高速化されます。GPU でトレーニングする場合、速度の違いがさらに大きくなる可能性があります。
バッチ サイズ(Batch Size)
データ セットを分割する「バッチ」のサイズを指定します。バッチはメモリに同時にロードされるため、指定したバッチ サイズをサポートするのに十分な RAM (および GPU を使用している場合は VRAM)が必要です。
エポック(Epochs)
トレーニングが完全なデータ セットを処理する回数を設定します。エポック(Epochs)の数は、モデルのトレーニングにかかる時間に影響します。
結果に満足できない場合は、エポック数を増やす前に、より小さいエポック数(100 未満)で実験してください。トレーニングに多くのエポックを使用すると、モデルはデータからより多くのことを学習できますが、「過剰適合」に注意してください。
過剰適合は、モデルが指定された特定のデータの一致に慣れ過ぎ、新しい制御値に対して一般化できなくなると発生します。トレーニング データの過剰適合デルタを解析するには、ML デフォーマトレーニング結果(Training Results)ウィンドウを参照してください。

過剰適合の例: 青い線はトレーニングを表し、オレンジの線は検証を表します

過剰適合を確認するには、トレーニングと検証損失を比較します。検証エラーがトレーニング エラーよりも大きい場合、トレーニング データに対してモデルが過剰適合している兆候になります(上記の例を参照)。
検証率(Validation Ratio)
検証のために確保する必要があるトレーニング データ サンプルのパーセンテージを指定します。検証セットは、トレーニングに使用しないトレーニング データのランダム サンプリングです。これは、未知のデータに対してモデルがどの程度良好に動作するかを示し、過剰適合のチェックにも使用できます。

高度な設定(Advanced Settings)

ML デフォーマの高度なトレーニング設定により、近似を制御する方法がさらに増えました。既定の設定のままにして、特定のニーズがある場合にのみ詳細設定(Advanced Settings)を調整することをお勧めします。

学習率(Learning Rate)
モデルがバッチの結果に基づいてモデル自身を調整するためにバッチごとに実行すべき学習「ステップ」の大きさを設定します。値が小さいほどトレーニングに必要なエポックが増え、過負荷になる場合があります。値が大きいほど無秩序になり、適切な近似が生成されない場合があります。
非表示レイヤ数(Hidden Layer Count)
入力レイヤと出力レイヤを含まない、ニューラル ネットワークのレイヤ数。現在、すべての設定は非表示の各レイヤに均一に適用されます。
指定するレイヤを増やすと、コントロールと生成される変形されたジオメトリ間の複雑な関係をモデルで近似できますが、モデルの実行やトレーニングが遅くなり、矛盾が生じる可能性があります。
レイヤあたりのニューロン数(Neurons per layer)
モデルの各レイヤに存在する人工的なニューロンの数。
これらのニューロンは、上記のレイヤから入力値のセットを取り、出力値を生成します。ニューロンの数を増やすと、モデルはより多くのデフォメーションを学習します。ただし、ニューロンの数を増やすと、モデルのサイズも大きくなり、実行やトレーニングが遅くなります(特に高解像度メッシュの場合)。これは過剰適合の原因になります。
一般に、ディープ ニューラル ネットワークは非常に広いニューラル ネットワークよりも効率的です。
アクティベーション関数(Activation Function)
ニューロンの入力の合計に適用して出力を生成する関数を選択します。これらの関数は出力に非線形を導入し、モデルが入力と出力の間の非線形の関係を学習できるようにします。
Sigmoid
S シェイプのカーブ関数。
説明については、PySthoch のドキュメントの「Sigmoid」を参照してください。
TanH
双曲線正接関数。
説明については、PyStatch のドキュメントの「TanH」を参照してください。
Leaky ReLU
ReLU に似ていますが、負の値がすべて 0 となる代わりに、f(x) = 0.01 * x のような小さな傾斜を持つという点が異なります。
これにより、負の値でフリーズしてニューロンが消滅するのを防ぎます。
説明については、PyStatch のドキュメントの「LeakyReLU」を参照してください。
ReLU (修正された長さ単位)
単純な区分関数。x が正の場合は f(x) = x、x が負の場合は f(x) = 0 です。
この関数は単純であるため、他の関数よりも速く良好な結果を返します。ただし、負の値間には傾斜がないため、入力が負の値でフリーズし、トレーニングできなくなることがあります。
説明については、PyStone のドキュメントの「ReLU」を参照してください。
リニア(Linear)
リニアは最も基本的なアクティベーション関数です(f(x) = x)。リニア アクティベーションのみからなるネットワークはノンリニア デフォメーションを学習できないため、そのことが望ましい場合や、他のアクティベーション関数と組み合わせて使用する場合にのみ適しています。
説明については、PyStoch のドキュメントの「Linear」を参照してください。
ドロップアウト率(Dropout Ratio)
ドロップアウト率(Dropout Ratio)を使用して、過剰適合を防ぎます。ドロップアウト率(Dropout Ratio)を使用する場合、各レイヤごとに比率で設定される入力の割合は、トレーニング中にゼロに設定されます。入力をゼロに設定すると、モデルは冗長接続を学習するようになり、より堅牢になります。
ただしこの方法では、出力に影響しないようにすべきコントロールが出力にリンクされるなど、望ましくない結果が生じる可能性があります。たとえば、手首のジョイントを移動すると、肩が変形します。
主要シェイプ(Principal Shapes )

主要シェイプ(Principal Shapes)をアクティブ化すると、ML デフォーマは各ポーズのベース頂点とターゲット頂点の違いを評価するのではなく、ターゲット デフォメーションの一連のベース ポーズを計算します。主要シェイプ(Principal Shapes)の使用手順については、「主要シェイプを使用して ML デフォーマのトレーニング データを作成する」を参照してください。

主要シェイプ(Principal Shapes)はブレンド シェイプに似ています。最終結果を作成するために、関連付けられたウェイトがブレンドされます。主要シェイプ(Principal Shapes)をベースに追加すると、ターゲット デフォメーションが再作成されます。これにより、ML デフォーマは、デルタを近似するためにトレーニングするのではなく、これらのウェイトにコントロール値をマップするために主要シェイプ(Principal Shapes)を使用します。

主要シェイプ(Principal Shapes)が便利な点は、学習するウェイトの数がデルタの数よりも少なくなり、結果として得られる ML モデルの学習や評価が高速化されるということです。(過剰適合を避けるために、レイヤごとのニューロンの数を減らす必要がある場合があります)。

主要シェイプ(Principal Shapes)は、特異値分解を使用したトレーニング ポーズから計算されます。
注: この計算を実行するためにすべてのトレーニング ポーズがメモリにロードされるため、トレーニング データ セットを保持するのに十分な RAM があることを確認してください。
主要シェイプの制限(Principal Shapes Limit)
生成する主要シェイプの最大数。この値はハード制限として機能するため、目的の精度に達しない場合でも、計算ではこの数のシェイプまでしか使用されません。トレーニング データにデルタよりも多くのサンプルが含まれている場合は、エラー ッセージが表示されます。
主要シェイプの精度(Principal Shapes Accuracy)
サンプル ポーズ全体で主要シェイプの組み合わせが達成する必要がある精度のレベル。次に、ML デフォーマは、この精度レベルに達するためにターゲット デフォメーションを再作成するのに必要な数の主要シェイプを生成します。
注: これは完璧なウェイト値を使用した精度であるため、トレーニング済みモデルの結果の精度は低くなります。
既定にリセット(Reset to Defaults)
ML デフォーマのトレーニング設定の既定のオプションを復元します。
トレーニング(Train)
ML デフォーマのトレーニング プロセスを開始します。
保存(Save)
ML デフォーマのトレーニング設定を保存して、再利用できるようにします。以前の ML デフォーマのトレーニング設定を再利用するには、トレーニング データ名(Training Data Name)および出力 ML モデル名(Output ML Model Name)フィールドで選択(Choose)をクリックします。
キャンセル(Cancel)
ML デフォーマのトレーニング設定を閉じます。