On this page |
基本的なトレーニングノードのML Regression Train TOPは、固定数の連続変数を別の連続変数のタプルへつなぐ関数をモデル化する回帰問題をサポートしています。
これは、独自のより特化したトレーニングノードを作成するためのサンプルとして役に立ちます。
このノードは、完全に繋がった層で構成された順伝播型ニューラルネットワーク(Feed-forward Neural Network)のパラメータ(ウェイトとバイアス)をトレーニングします。 そのネットワークの深さは、隠れ層(Hidden Layer)の数を選択することで制御されます。 それぞれの隠れ層(Hidden Layer)の幅も制御することができます。
アクティベーション関数 ¶
ML Regression Train TOPは、平均二乗誤差(MSE:Mean Squared Error)をトレーニングのコスト関数として使用します。
これによって、出力層のアクティベーション関数として恒等関数が選択されます。
出力ユニットの直前には非線形性はありません。
それぞれの隠れ層(Hidden Layer)の非線形なアクティベーション関数は、双曲正接関数(tanh
)です。
つまり、隠れ層を0にすると、ニューラルネットワークは線形変換になります。
ウェイトの初期化 ¶
ニューラルネットワークのパラメータは、指定したランダムシードに基づいた疑似乱数値を使用して初期化されます。 異なるランダムシードを選択することで、ウェイトに異なる初期値を与えることができます。
トレーニングは必ずしもコスト関数のグローバルミニマム(全域的る最小値)に向かうとは限らず、トレーニングがローカルミニマム(局所的最小値)で終了する場合があります。
各ローカルミニマムがグローバルミニマムである場合であっても、通常では、ウェイト空間の対称性が原因で同等の最小値が多数存在します。
異なる初期パラメータは、異なるコストの異なるトレーニングネットワークに向かう場合があります。
それぞれ異なるランダムシートを使用して複数のネットワークをトレーニングして、どれが最も良い結果を出すのか確認するのは役に立ちます。
これは、TOPでWedge TOPをセットアップすることでできます。
正則化(Regularization) ¶
データセットのサイズが小さい場合、過学習(Overfitting)を回避するのに利用可能な基本的な正則化のテクニックがいくつかあります。 これらのテクニックは、トレーニングモデルの実際の複雑さを制限することができ、未知入力の一般化を向上させることができます。
ML Regression Train TOPは、2つの正則化テクニックをサポートしています: Weight Decay(重み減衰)とEarly Stopping(早期停止)。
Weight Decay(重み減衰)には、ウェイト(バイアスではなく)を小さく維持することを目的にしたコスト関数の項を含んでいます。
Early Stopping(早期停止)は、データセットアップを2つの部分に分けます: トレーニング部分と検証部分。 このトレーニング部分は、ニューラルネットワークのパラメータを最適化します。 この検証部分は、トレーニングを停止するタイミングを決めます。 この検証部分の未知サンプルでネットワークのパフォーマンスが向上しなくなるとすぐにトレーニングを停止します。
ML回帰トレーニングの制限事項 ¶
基本的なML Regression Train TOPは、場合によって回帰問題に対して既存のディープラーニング手法をすべて網羅することはできません。
これは、PyTorchスクリプトを記述することなく、Houdiniで回帰MLを色々と実験できるほど十分な柔軟性を備えています。
また、ML Deformerの20.5バージョンでも使用されています。
しかし、HoudiniでML手法をさらに実験していくと、この基本的なトレーニングノードでサポートされていない機能が必要になることがあります。 例えば、よりスパース(疎)なネットワークアーキテクチャ、Skip Layer Connection(層を飛び越えた接続)、他のアクティベーション関数、代替のコスト関数、より複雑な正則化手法、オートエンコーダ手法用のLatent Inputs(潜在入力)、ウェイトの正規化などを組み込みたいことでしょう。
この場合、ML Regression Train TOPの根底にあるPyTorchトレーニングスクリプトが、トレーニングスクリプトを書き始める上で役に立ちます。
このトレーニングスクリプトは、
$HHP/hutil/ml/regression
フォルダにあります。
あなたがPythonとPyTorchに詳しいのであれば、このスクリプトを変更して拡張してから、Python Virtual Environment TOPと
Python Script TOPを組み合わせて、そのスクリプトを使用することができます。
ML Regression Train TOPの中身を見ると、どのようにしてトレーニングスクリプトを呼び出すことができるのか分かります。
スクリプトを変更したり、あなた自身でスクリプトを作成する場合、
Python Virtual Environment TOP上でモジュールを参照する必要が出てきます。
そうしなかった場合、そのスクリプトは
Python Script TOPからは見つかりません。