モデルトレーニングのベストプラクティス - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

モデルトレーニングのベストプラクティス

Neptune ML モデルのパフォーマンスを向上させるためにできることはあります。

適切なノードプロパティを選択する

グラフ内のすべてのプロパティが機械学習タスクに有意義である、または関連性があるとは限りません。無関係なプロパティは、データのエクスポート時に除外する必要があります。

ベストプラクティスを以下に示します。

  • ドメインのエキスパートを使用して、特徴の重要性とそれらを予測に使用することの実現可能性を評価します。

  • データのノイズや重要でない相関を減らすために、冗長または無関係であると判断した特徴を削除します。

  • モデルの構築中に反復処理を行います。特徴、特徴の組み合わせ、調整目標を調整できます。

Amazon Machine Learning Developer Guide の特徴処理には、Neptune ML に関連する特徴処理に関する追加のガイドラインが記載されています。

外れ値のデータポイントの処理

外れ値は、残りのデータとは大きく異なるデータ点です。データの外れ値は、トレーニングプロセスを台無しにしたり誤解を招いたりして、トレーニング時間が長くなったり、モデルの精度が低下したりする可能性があります。これらが本当に重要でない限り、データをエクスポートする前に外れ値を排除する必要があります。

重複するノードとエッジを削除する

Neptune に格納されているグラフには、重複したノードまたはエッジがある場合があります。これらの冗長要素は、ML モデルトレーニングにノイズを発生させます。データをエクスポートする前に、重複するノードまたはエッジを削除してください。

グラフ構造の微調整

グラフをエクスポートするときに、特徴の処理方法やグラフの作成方法を変更して、モデルのパフォーマンスを向上させることができます。

ベストプラクティスを以下に示します。

  • エッジプロパティがエッジのカテゴリの意味を持つ場合、場合によってはエッジタイプに変換する価値があります。

  • 数値プロパティに使用されるデフォルトの正規化ポリシーは min-max ですが、場合によっては他の正規化ポリシーがうまくいく場合もある。model-HPO-configuration.json 要素のリスト。 の説明に従って、プロパティを前処理し、正規化ポリシーを変更できます。

  • エクスポートプロセスでは、プロパティタイプに基づいて特徴タイプが自動的に生成されます。例えば、String プロパティをカテゴリ別特徴とし、Float および Int プロパティを数値特徴として処理します。必要に応じて、エクスポート後にとしタイプを変更できます (model-HPO-configuration.json 要素のリスト。)。

ハイパーパラメータの範囲とデフォルトを調整する

データ処理オペレーションは、グラフからハイパーパラメータ設定範囲を推測します。生成されたモデルのハイパーパラメータの範囲とデフォルトがグラフデータでうまく機能しない場合は、HPO 設定ファイルを編集して、独自のハイパーパラメータ調整戦略を作成できます。

ベストプラクティスを以下に示します。

  • グラフが大きくなると、デフォルトの非表示次元サイズがすべての情報を含むのに十分な大きさではない場合があります。num-hidden ハイパーパラメータを変更して非表示の寸法サイズを制御することもできます。

  • Knowledge Graph Embedding (KGE) モデルの場合、グラフの構造と予算に応じて、使用されている特定のモデルを変更したい場合があります。

    TrainsE モデルは、1対多 (1-N)、多対1 (N-1)、多対多 (N-N) の関係を扱うのが困難です。DistMult モデルは対称関係を扱うのが困難です。RotatE はあらゆる種類のリレーションのモデリングが得意ですが、トレーニング中は TrainsE および DistMult よりも高価です。

  • 場合によっては、ノード識別とノード特徴情報の両方が重要な場合は、`concat-node-embed` を使用してNeptune ML モデルに、その特徴と初期埋め込みを連結して、ノードの初期表現を取得するように指示します。

  • 一部のハイパーパラメータに対して適度に良好なパフォーマンスが得られる場合は、それらの結果に応じてハイパーパラメータサーチスペースを調整できます。

Neptune ML でのモデルトレーニングプロセスの早期停止

早期停止により、モデルのパフォーマンスを低下させることなく、モデルトレーニングのランタイムと関連コストを大幅に削減できます。また、モデルがトレーニングデータに過適合するのを防ぎます。

早期停止は、検証セットのパフォーマンスの定期的な測定値に依存します。最初は、トレーニングが進むにつれてパフォーマンスは向上しますが、モデルが過適合となると、再び低下し始めます。早期停止機能は、モデルが過適合を開始し、その時点でモデルトレーニングを停止する点を特定します。

Neptune ML は検証メトリクスの呼び出しを監視し、最新の検証メトリクスを最後の n 評価 (nwindow-for-early-stop パラメータを使用して設定した数字) を検証メトリックの平均と比較します。検証メトリクスがその平均よりも悪くなるとすぐに、Neptune ML はモデルトレーニングを停止し、それまでに最適なモデルを保存します。

次のパラメータを使用して、早期停止を制御できます。

  • window-for-early-stop — このパラメータの値は、早期停止を決定する際に平均する最近の検証スコアの数を指定する整数です。デフォルト値は、「3」です。

  • enable-early-stop — このブール値パラメータを使用して、早期停止機能をオフにします。デフォルトでは、この値は true です。

Neptune ML での HPO プロセスの早期停止

Neptune ML の早期停止機能は、SageMaker HPO ウォームスタート機能を使用して、他のトレーニングジョブと比較してうまく機能しないトレーニングジョブを停止します。これにより、コストを削減し、HPO の品質を向上させることができます。

この仕組みについては、ウォームスタートのハイパーパラメータチューニングジョブを実行するを参照してください。

ウォームスタートは、以前のトレーニングジョブから学習した情報を後続のトレーニングジョブに渡す機能を提供し、次の 2 つの異なる利点があります。

  • まず、以前の調整ジョブの結果は、新しいトレーニングジョブで検索するハイパーパラメータの良い組み合わせを選択する目的で使用されます。

  • 第 2 に、早期停止により多くのモデル実行にアクセスできるため、チューニング時間が短縮されます。

この機能は Neptune ML で自動的に有効になり、モデルトレーニング時間とパフォーマンスのバランスを取ることができます。現在のモデルのパフォーマンスに満足すれば、そのモデルを使用できます。そうでない場合は、以前の実行の結果でウォームスタートされるより多くの HPO を実行して、より良いモデルを発見します。

プロフェッショナルサポートサービスを受ける

AWS は、Neptune プロジェクトでの機械学習における問題に対処するための専門的なサポートサービスを提供します。行き詰まったら、AWS サポートをご利用ください。