トレーニングパラメータ - Amazon Machine Learning

Amazon Machine Learning サービスの更新や、その新しいユーザーの受け入れは行っていません。このドキュメントは既存のユーザー向けに提供されていますが、更新は終了しています。詳細については、「Amazon Machine Learning とは」を参照してください。

トレーニングパラメータ

通常、機械学習アルゴリズムは、トレーニングプロセスおよび結果として生じる ML モデルのプロパティを制御するために使用できるパラメータを受け入れます。Amazon Machine Learning では、これらをトレーニングパラメータと呼びます。Amazon ML コンソール、API、またはコマンドラインインターフェイス (CLI) を使用してこれらのパラメータを設定できます。パラメータを設定しない場合、Amazon ML は、機械学習のさまざまなタスクに適していることが知られているデフォルト値を使用します。

以下のトレーニングパラメータに値を指定できます。

  • 最大モデルサイズ

  • トレーニングデータへのパスの最大数

  • シャッフルタイプ

  • 正則化タイプ

  • 正則化の量

Amazon ML コンソールで、トレーニングパラメータはデフォルトで設定されています。デフォルトの設定は、ほとんどの ML の問題に適していますが、パフォーマンスを微調整するために別の値を選択できます。学習レートなどのその他のトレーニングパラメータには、データに基づいて設定されているものがあります。

以下のセクションでは、トレーニングパラメータについて詳しく説明します。

最大モデルサイズ

最大モデルサイズは、Amazon ML が ML モデルのトレーニング中に作成するパターンの合計サイズ (バイト単位) です。

デフォルトでは、Amazon ML は 100 MB のモデルを作成します。異なるサイズを指定することで、より小さな、またはより大きなモデルを作成するよう Amazon ML に指示できます。使用可能なサイズの範囲については、「ML モデルのタイプ」を参照してください。

モデルサイズを満たすだけのパターンを Amazon ML が見つけられない場合は、より小さなモデルが作成されます。たとえば、最大モデルサイズとして 100 MB を指定しても、Amazon ML が合計 50 MB のパターンしか見つけられない場合は、結果のモデルは 50 MB となります。Amazon ML が指定したサイズより多くのパターンを見つけた場合は、学習したモデルの品質に最も影響の少ないパターンをトリミングして最大値でカットオフします。

モデルサイズを選択すると、モデルの予測品質と使用コストの間でのトレードオフを制御できます。より小さなモデルでは、最大サイズに収まるように Amazon ML により多くのパターンが削除され、予測の品質に影響を与えます。一方、より大きなモデルでは、リアルタイム予測のクエリのためにコストがより大きくなります。

注記

リアルタイム予測を生成するために ML モデルを使用する場合、モデルサイズにより決まる小さなキャパシティーの予約料金が発生します。詳細については、「Amazon ML の料金」を参照してください。

モデルは入力データではなくパターンを保存するため、入力データセットが大きくなるほどモデルが大きくなるとは限りません。パターンがシンプルであれば、結果として生じるモデルは小さくなります。多くの raw 属性 (入力列) や派生した機能 (Amazon ML データ変換の出力) を持つ入力データは、トレーニングプロセス中により多くのパターンを見つけて保存する可能性が高くなります。データと問題に対する正しいモデルサイズの選択は、いくつかの実験をすることで最も効果的に行えます。Amazon ML モデルのトレーニングログ (コンソールから、または API 経由でダウンロードできる) には、トレーニングプロセス中に発生したトリミングの量 (存在する場合) に関するメッセージが含まれていて、潜在的な予想の的中品質を見積もることができます。

データに対するパスの最大数

最良の結果を得るには、パターンを発見するために Amazon ML がデータを複数回パスする必要があるかもしれません。デフォルトでは、Amazon ML は 10 回のパスを行いますが、100 までの数値を設定することでデフォルトを変更できます。Amazon ML はパターンの品質 (モデルの収束) を追跡し、データポイントやパターンが発見できなくなったら自動的にトレーニングを終了します。例えば、パスの数を 20 に設定していても、15 のパスを終えた時点で新しいパターンはもう見つけられないと Amazon ML が判断すると、15 のパスでトレーニングを終了します。

通常、わずかな観測値しか持たないデータセットでは、より高いモデル品質を得るために、データに対してより多くのパスが必要となります。大きなデータセットには多くの同様のデータポイントが含まれているため、多数のパスを必要としません。データにより多くのデータパスを選択することは二重の影響があります。モデルトレーニングにはより時間がかかり、コストも高くなります。

トレーニングデータのシャッフルタイプ

Amazon ML では、トレーニングデータをシャッフルする必要があります。シャッフルは、データの順序をミックスして、SGD アルゴリズムがあまりに多くの連続した観測で 1 つのタイプのデータに遭遇することがないようにします。たとえば、ML モデルをトレーニングして製品タイプを予測するとき、トレーニングデータに映画、玩具、ビデオゲームの製品タイプが含まれている場合、アップロードする前に製品タイプの列でデータを並べ替えた場合、アルゴリズムは製品タイプごとのアルファベット順にデータを見ていきます。アルゴリズムは、映画のすべてのデータを最初に見ていき、ML モデルは映画のパターンを学習し始めます。次に、モデルが玩具のデータに遭遇したとき、アルゴリズムが行うすべての更新は、その更新が映画に適したパターンを劣化させるとしても、モデルを玩具の製品タイプに適合させようとします。この映画から玩具のタイプへの突然の切り替えにより、製品タイプについての精度の高い予測を学習できないモデルが生成されます。

入力データソースをトレーニングと評価の部分に分割するときにランダム分割オプションを選択した場合でも、トレーニングデータをシャッフルする必要があります。ランダム分割の方法では、各データソースのデータのランダムなサブセットが選択されますが、データソース内の行の順序は変更されません。データ分割の詳細については、「データの分割」を参照してください。

コンソールを使用して ML モデルを作成すると、Amazon ML はデフォルトで、擬似乱数シャッフルの手法を使ってデータをシャッフルします。リクエストされたパスの数にかかわらず、Amazon ML は ML モデルをトレーニングする前にデータを 1 回だけシャッフルします。Amazon ML にデータを提供する前にシャッフルし、Amazon ML でデータを再度シャッフルしたくない場合は、[Shuffle type] (シャッフルタイプ) を none に設定できます。例えば、 Amazon S3 にアップロードする前に .csv ファイル内のレコードをランダムにシャッフルした場合、Amazon RDS からデータソースを作成する際に MySQL SQL クエリの rand() 関数を使用した場合、または、Amazon Redshift からデータソースを作成する際に Amazon Redshift SQL クエリの random() 関数を使用した場合は、[Shuffle type] (シャッフルタイプ) を none に設定しても、ML モデルの予測精度には影響しません。データを 1 回シャッフルするだけで、ML モデルを作成するための実行時間とコストが削減されます。

重要

Amazon ML API を使用して ML モデルを作成すると、Amazon ML はデフォルトではデータをシャッフルしません。コンソールではなく API を使用して ML モデルを作成する場合は、sgd.shuffleType パラメータを auto に設定することで、データをシャッフルすることを強くお勧めします。

正則化のタイプと量

データに含まれるパターンが多すぎると、複雑な ML モデル (入力属性が多いモデル) の予測パフォーマンスが低下します。パターンの数が増えると、モデルが、実際のデータパターンではなく、意図しないデータアーティファクトを学習する可能性も高くなります。そのような場合、モデルはトレーニングデータではうまくいきますが、新しいデータではうまく一般化できません。この現象はトレーニングデータのオーバーフィットとして知られています。

正則化は、極端なウェイト値にペナルティを課すことによって、線形モデルがトレーニングデータの例にオーバーフィットするのを防ぎます。L1 正則化は、さもなければ非常に小さなウェイトを持つ機能のウェイトを 0 にすることによって、モデルで使用される機能の数を減らします。L1 正則化は、まばらなモデルを生成し、モデル内のノイズの量を低減します。L2 正則化により、全体のウェイトの値が小さくなり、機能間の相関性が高い場合にウェイトを安定させます。Regularization amount パラメータを使用して、L1 または L2 正則化の量を調整できます。非常に大きな Regularization amount 値を指定すると、すべての機能のウェイトがゼロになる可能性があります。

最適な正則化の値を選択して調整することは、機械学習の分野で活発に研究されている課題です。Amazon ML コンソールのデフォルトである適度な量の L2 正則化を選択することにはメリットがあるでしょう。上級ユーザーは、正則化の 3 つのタイプ (none、L1、または L2) と量を選択できます。正則化の詳細については、「正則化 (数学)」を参照してください。

トレーニングパラメータ: タイプとデフォルト値

次の表に、Amazon ML トレーニングパラメータと、それぞれのデフォルト値と許容範囲を示します。

トレーニングパラメータ

タイプ

[Default Value] (デフォルト値)

説明

maxMLModelSizeInBytes

整数

100,000,000 バイト (100 MiB)

許容範囲:100,000 (100 KiB) ~ 2,147,483,648 (2 GiB)

入力データによっては、モデルのサイズがパフォーマンスに影響する可能性があります。

sgd.maxPasses

整数

10

許容範囲: 1 ~ 100

sgd.shuffleType

文字列

auto

許容範囲: auto または none

sgd.l1RegularizationAmount

ダブル

0 (デフォルト、L1 は使用されません)

許容範囲: 0 ~ MAX_DOUBLE

L1 の値を 1E-4 と 1E-8 の間にすると良好な結果が得られることが分かっています。それより大きな値では、役立つモデルが生成される可能性はあまりありません。

L1 と L2 の両方を設定することはできません。どちらかを選択する必要があります。

sgd.l2RegularizationAmount

ダブル

1E-6 (デフォルト、L2 はこの量の正則化を使用します)

許容範囲: 0 ~ MAX_DOUBLE

L2 の値を 1E-2 と 1E-6 の間にすると良好な結果が得られることが分かっています。それより大きな値では、役立つモデルが生成される可能性はあまりありません。

L1 と L2 の両方を設定することはできません。どちらかを選択する必要があります。