On this page

サンプルベースのMLツールの目的は、固定数の変数を別の固定数の変数へつなぐ関数を学習することです。 ML Regression Train TOPは、出力変数の値が入力変数の変化に応じて滑らかに変化する連続関数の近似化を目指します。

Houdiniには少なくとも2つの使用例があります:

  1. プロシージャルネットワーク(例えば、シミュレーション)は、MLを使用して近似化することで、トレーニング済みのモデルにすることができます。 これを推論すると、元のプロシージャルネットワークよりもはるかに処理が高速になります。 これにより、近似誤差を犠牲にして、元のネットワークをより高速なものに置き換えることができます。

  2. MLは、マッピングの逆を検索するようにトレーニングさせることができます。 例えば、Houdiniのネットワークは設定に基づいて異なる結果を返すのが通例です。 このネットワークの出力が入力で、このネットワークの入力がターゲットのサンプルを構築することができます。 このような方法で、特定の未知 出力 に向かう設定を近似化できるモデルをトレーニングできる場合があります。

固定次元空間から別の固定次元空間へのマッピングとしてエンコード可能なプロシージャルネットワークがあれば、Houdiniで回帰(Regression)を適用することができます。 各入力と各出力を表現または近似化する方法を選択する必要があります。 ML Deformer H20.5のコンテンツライブラリのサンプルの場合では、 入力変数は、すべてのジョイント回転のコンポーネントで、出力変数は、スキン変形を表現したPCAウェイトです。

トレーニングの進捗を確認するには、ML Regression Train TOPで生成されたログファイルを見てください。 このログファイルには、Train Lossの項目(左側)があります。 Early Stopping(早期停止)が有効な場合、さらにValidation Lossの項目(右側)があります。

十分なキャパシティ(能力)の確保

トレーニングのゴールは、上手く一般化できるモデルを取得することができます。 データセットの特定のサブセットに対してモデルをトレーニングしてから、そのトレーニング済みのモデルがトレーニング中に受けたことのない入力に対して正確な結果が出せることを期待します。 一般化する前に、モデルがトレーニングデータを正確に近似化するのに十分なキャパシティ(能力)を持っているようにしてください:

  • これを検証するには、Regularization系のオプションを無効にしたML Regression Train TOPを使用します。 Weight Decay パラメータを0に設定し、 Enable Early Stopping チェックボックスを無効にします。

    • この設定をした時に、モデルがトレーニングデータから近い近似値を見つけることができなかった場合、そのモデルには十分な表現能力がない(Underfitting:学習不足である)可能性があります。 ML Regression Train TOPで生成されたトレーニングログのTrain Loss項目を見ることで、この原因を調べることができます。

  • 表現能力を上げるには、隠れ層(Hidden Layer)の数を増やす、隠れ層あたりのユニット数を増やす、または、その両方を組み合わせます。

    • それでも動作しない場合、その問題は、入力と出力の表現方法が原因である可能性があります(仮説空間の選択が不適切)。

    • 他にも、データセットの品質が悪い可能性があります。入力とは関係のないターゲット固有のノイズがある可能性があります。 その場合、一般的には、トレーニングデータに対して正確な一致を得ることは不可能です。

  • いくつかの問題では、ML Regression Train TOPの Learning Rate パラメータ値がデフォルトで高すぎるのが原因です。

    • この値を下げると、一般的には、トレーニング時間が長くなりますが、損失の少ない(より正確な)トレーニング済みモデルが生成されます。

未知入力の一般化

モデルがトレーニングに十分な表現能力を持っていることを確認した後は、そのモデルが未知サンプルをどれだけ上手く一般化できるのかに集中することができます。

  • ML Regression Train TOPEarly Stoppingを有効にしてから、このモデルが一般化にどのように影響を与えるのか確認します。 これは、ML Regression Train TOPで生成されたトレーニングログのValidation Loss項目で調べることができます。

    • Validation LossがTrain Lossよりも大幅に高い場合(Overfitting:過学習)、一般化が十分に改善されるまで、データセット内のデータポイント量を増やすと良いでしょう。

    • データセットサイズを上げるのが不可能、または、望ましくない場合、別の方法として、ML Regression Train TOPWeight Decay パラメータを上げてください。 Weight Decay パラメータを上げると、Train Lossが上がる傾向がありますが、Validation Lossが下がります。

  • Wedge TOPを使用して Weight Decay パラメータを色々と変えてトレーニングを試みて、最も上手く動作する値を見つけることを推奨します。 Weight Decay は、おそらく最も単純なタイプの正則化です。

ML Regression Train TOPは、サンプルとして利用可能な単純なノードになるように設計されています。 これには、あり得るすべての正則化手法が組み込まれているわけではありません。 より洗練されたタイプの正則化をトレーニングに組み込む必要がある場合は、ML Regression Train TOPで使用されている既存のPyTorchスクリプトを開始点として使用してそれを変更すると良いでしょう。 このスクリプトは、$HHP/hutil/ml/regressionにあります。

ディープラーニングなしの機械学習

ML Regression Train TOPは、隠れ層を持つニューラルネットワークをトレーニングすることができます。 入力の次元が低い場合、代替のMLテクニックを使用して関数を近似化することができます。 その例が最近傍探索(Nearest Neighbor Search)です。 ラベル付きサンプルは、入力が照会入力に最も近い時に見つかり、このラベル付きサンプルに呼応するターゲットコンポーネントが出力として返されます。

ML Regression Proximity SOPは、このタイプの近接度ベースの関数近似を実行することができます。 これにはトレーニングは不要です。 このノードは、MLセットアップのトラブル対応にも役立ちます。 データセット準備ネットワークが正しく設定されていれば、ラベル付きサンプルセット内の入力コンポーネントを指定すると、マッチしたターゲットコンポーネントを取得することができます。

機械学習

一般的なサポート

サンプルベースのML

リファレンス