メトリクスの定義 - アマゾン SageMaker

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

メトリクスの定義

注記

SageMaker の組み込みアルゴリズムを使用するときは、メトリクスを定義する必要はありません。組み込みアルゴリズムは、自動的にハイパーパラメータ調整にメトリクスを送信します。調整ジョブの目標メトリクスとして組み込みアルゴリズムから出力されるメトリクスの 1 つを選択する必要があります。組み込みアルゴリズムが出力するメトリクスのリストについては、SageMaker 組み込みアルゴリズムを使用するのアルゴリズムのメトリクス表を参照してください。

機械学習モデル用のハイパーパラメータを最適化するために、調整ジョブはトレーニングアルゴリズムがログに書き込むメトリクスを使用して、開始したトレーニングジョブを評価します。Amazon SageMaker ハイパーパラメータ調整は、アルゴリズムの stdout ストリームと stderr ストリームを解析して、損失や検証精度など、アルゴリズムがデータセットに対してどの程度うまく機能しているかを示すアルゴリズムメトリクスを見つけます。

注記

これらは、SageMaker が CloudWatch Logs に送信するのと同じメトリクスです。詳細については、Amazon CloudWatch による SageMaker イベントのログ記録 を参照してください。

ハイパーパラメータ調整に独自のアルゴリズムを使用する場合は、評価データを stderr または stdout に書き込むことによって、アルゴリズムが 1 つ以上のメトリクスを発行するようにしてください。

注記

ハイパーパラメータの調整は、追加のハイパーパラメータ _tuning_objective_metric をトレーニングアルゴリズムに送信します。このハイパーパラメータは、ハイパーパラメータの調整ジョブに使用される目標メトリクスを指定します。アルゴリズムは、この情報をトレーニングで使用できます。

モニタリングジョブを調整するために、最大 20 個のメトリクスを定義できます。これらのメトリクスの 1 つを目標メトリクスとして選択します。これは、ハイパーパラメータ調整がトレーニングジョブを評価する際に使用します。ハイパーパラメータ調整ジョブは、オブジェクト目標に対して最善の値を返したトレーニングジョブを、最善のトレーニングジョブとして返します。

調整ジョブのメトリクスを定義するには、調整ジョブが監視する各メトリクスの名前と正規表現を指定します。アルゴリズムが出力するメトリクスの値をキャプチャするように正規表現を設計します。これらのメトリクスを、AlgorithmSpecification フィールドの MetricDefinitions フィールドとして、TrainingJobDefinition パラメータの CreateHyperParameterTuningJob オペレーションに渡します。

次の例では、4 つのメトリクスを定義しています。

=[ { "Name": "loss", "Regex": "Loss = (.*?);", }, { "Name": "ganloss", "Regex": "GAN_loss=(.*?);", }, { "Name": "discloss", "Regex": "disc_train_loss=(.*?);", }, { "Name": "disc-combined", "Regex": "disc-combined=(.*?);", }, ]

アルゴリズムによって書き込まれるログの例を以下に示します。

GAN_loss=0.138318; Scaled_reg=2.654134; disc:[-0.017371,0.102429] real 93.3% gen 0.0% disc-combined=0.000000; disc_train_loss=1.374587; Loss = 16.020744; Iteration 0 took 0.704s; Elapsed=0s

アルゴリズムのログ出力に一致するように正規表現 (regex) を使用して、メトリクスの数値を取得します。たとえば、上記で定義した loss メトリクスの正規表現では、正規表現の最初の部分で「Loss =」に一致するテキストを検索し、式 (.*?); では最初のセミコロン文字までの任意の 0 文字以上のテキストが取得されます。この正規表現では、括弧内のテキストを取得するよう指示します。. は任意の文字、* は 0 文字以上の文字、? は、; 文字の最初のインスタンスまでのみ取得されます。

調整ジョブの目標メトリクスとして定義したメトリクスの 1 つを選択します。API を使用している場合は、CreateHyperParameterTuningJob オペレーションに送信する HyperParameterTuningJobConfig パラメータの HyperParameterTuningJobObjective フィールドに name キーの値を指定します。