Deep Learning
概要
H2O 3.8.2.6を使用して深層学習アルゴリズムを実行します。
詳細
このアルゴリズムは、再現可能なパラメーターがtrueに設定されている 場合にのみ決定的であることに注意してください 。この場合、アルゴリズムは1つのスレッドのみを使用します。
深層学習は、バックプロパゲーションを使用した確率的勾配降下法でトレーニングされた多層フィードフォワード人工ニューラルネットワークに基づいています。ネットワークには、tanh、整流器、およびmaxoutアクティベーション機能を備えたニューロンで構成される多数の隠れ層を含めることができます。適応学習率、速度アニーリング、運動量トレーニング、ドロップアウト、L1またはL2正則化などの高度な機能により、高い予測精度が実現します。各計算ノードは、ローカルデータのグローバルモデルパラメーターのコピーをマルチスレッドで(非同期に)トレーニングし、ネットワーク全体のモデル平均化によってグローバルモデルに定期的に貢献します。
オペレーターは、1ノードのローカルH2Oクラスターを開始し、その上でアルゴリズムを実行します。 1つのノードを使用しますが、実行は並列です。設定/環境設定/一般/スレッド数の設定を変更することにより、並列処理のレベルを設定できます。デフォルトでは、システムに推奨されるスレッド数を使用します。クラスターの1つのインスタンスのみが開始され、RapidMiner Studioを閉じるまで実行され続けます。
入力
- トレーニングセット (IOObject)入力ポートには、ラベル付きのExampleSetが必要です。
出力
- モデルディープラーニングの分類または回帰モデルは、この出力ポートから提供されます。この分類または回帰モデルは、ラベル属性の予測のために、見えないデータセットに適用できます。
- サンプルセット(IOObject)入力として指定されたExampleSetは、このポートを介して出力に変更せずに渡されます。これは通常、別の演算子で同じExampleSetを再利用するため、または結果ワークスペースでExampleSetを表示するために使用されます。
パラメーター
- activation隠れ層のニューロンが使用するアクティベーション関数(非線形性)。
- Tanh:双曲線正接関数(スケーリングおよびシフトされたシグモイドと同じ)。
- Rectifier:Rectifier Linear Unit:最大値(0、x)を選択します。xは入力値です。
- Maxout:入力ベクトルの最大座標を選択します。
- ExpRectifier:指数整流線形単位関数。
範囲:選択
- hidden_layer_sizesモデル内の各非表示レイヤーの数とサイズ。たとえば、ユーザーが「100,200,100」を指定すると、3つの隠れ層を持つモデルが作成され、中間の隠れ層には200個のニューロンが含まれます。 範囲:列挙
- hidden_dropout_ratios一般化を改善するために、トレーニングから除外される各非表示レイヤーの入力の一部。省略した場合、各非表示レイヤーのデフォルトは0.5です。ドロップアウト付きのアクティベーション機能が選択されている場合にのみ表示されます。 範囲:列挙
- reproducible小さいデータの再現性を強制します(遅くなります-1つのスレッドのみを使用します)。 範囲:ブール
- use_local_random_seedランダム化にローカルランダムシードを使用するかどうかを示します。 reproducibleがtrueに設定されている場合にのみ使用できます。 範囲:ブール
- local_random_seedランダム生成用のローカルランダムシード。このパラメーターは、ローカルシードの使用パラメーターがtrueに設定されている場合にのみ使用できます。 範囲:整数
- epochsデータセットを反復(ストリーミング)する回数は、小数になることがあります。 範囲:実数
- compute_variable_importances入力フィーチャの変数の重要度を計算するかどうか。実装されたメソッドは、入力フィーチャを最初の2つの非表示レイヤーに接続する重みを考慮します。 範囲:ブール
- train_samples_per_iteration反復ごとに処理されるトレーニングデータ行の数。このパラメーターとは無関係に、各行は(オンライン)確率的勾配降下でモデルを更新するためにすぐに使用されることに注意してください。このパラメーターは、スコアリングとモデルの取り消しが発生する頻度を制御します。特別な値は、反復ごとに1エポックの場合は0、反復ごとに最大量のデータを処理する場合は-1です。特別な値-2は、自動モード(自動調整)をオンにします。 範囲:長い
- adaptive_rate実装された適応学習速度アルゴリズム(ADADELTA)は、学習速度アニーリングと運動量トレーニングの利点を自動的に組み合わせて、収束が遅くなるのを防ぎます。 2つのパラメーター(ローとイプシロン)のみを指定すると、ハイパーパラメーター検索が簡単になります。場合によっては、手動で制御された(非適応)学習率と運動量の仕様がより良い結果につながることがありますが、最大7つのパラメーターの仕様(およびハイパーパラメーター検索)が必要です。モデルが多くの局所的最小値または長いプラトーのあるトポロジに基づいて構築されている場合、一定の学習率で次善の結果が得られる可能性があります。学習速度アニーリングにより、局所的最小値をより深く掘り下げることができ、速度減衰により、レイヤーごとに異なる学習速度を指定できます。勾配が最適化ランドスケープの長い谷で推定されている場合、学習率が大きいと勾配が振動し、間違った方向に移動する可能性があります。学習率が低く比較的平坦な表面で勾配を計算すると、モデルの収束が必要以上に遅くなる可能性があります。 範囲:ブール
- epsilon初期トレーニング中の学習速度アニーリングと同様に、前進が可能な後期の勢い。一般的な値は1e-10〜1e-4です。このパラメーターは、適応学習率が有効な場合にのみアクティブになります。 範囲:実数
- rho運動量に似ており、以前の重量更新のメモリに関連しています。一般的な値は0.9〜0.999です。このパラメーターは、適応学習率が有効な場合にのみアクティブになります。 範囲:実数
- standardize有効にすると、データが自動的に標準化されます。無効にした場合、ユーザーは適切にスケーリングされた入力データを提供する必要があります。 範囲:ブール
- learning_rate適応学習率が無効の場合、重みの更新の大きさはユーザー指定の学習率(潜在的にアニーリング)によって決定され、予測値と目標値の差の関数です。一般にデルタと呼ばれるこの違いは、出力層でのみ利用可能です。各非表示層で出力を修正するには、逆伝播が使用されます。 Momentumは、前の反復が現在の更新に影響を与えることを可能にすることにより、逆伝播を修正します。運動量パラメータを使用すると、極小値とそれに伴う不安定性を回避するのに役立ちます。勢いが大きすぎると不安定になります。そのため、勢いを徐々に上げるのが最適です。このパラメーターは、適応学習率が無効になっている場合にのみアクティブになります。 範囲:実数
- rate_annealing学習率のアニーリングは、学習率を低下させて、最適化ランドスケープの極小値に「フリーズ」します。アニーリングレートは、学習率を半分にするために必要なトレーニングサンプルの数の逆数です(たとえば、1e-6は、学習率を半分にするために1e6のトレーニングサンプルが必要であることを意味します)。このパラメーターは、適応学習率が無効になっている場合にのみアクティブになります。 範囲:実数
- rate_decay学習率減衰パラメーターは、レイヤー全体の学習率の変化を制御します。たとえば、rateパラメーターが0.01に設定され、rate_decayパラメーターが0.5に設定されているとします。入力と最初の隠れ層を接続する重みの学習率は0.01、1番目と2番目の隠れ層を接続する重みの学習率は0.005、2番目と3番目の隠れ層を接続する重みの学習率0.0025などになります。このパラメーターは、適応学習率が無効になっている場合にのみアクティブになります。 範囲:実数
- momentum_start momentum_startパラメーターは、トレーニングの開始時の運動量を制御します。このパラメーターは、適応学習率が無効になっている場合にのみアクティブになります。 範囲:実数
- momentum_ramp momentum_rampパラメーターは、運動量が増加する学習量を制御します(momentum_stableがmomentum_startよりも大きいと仮定します)。ランプは、トレーニングサンプルの数で測定されます。このパラメーターは、適応学習率が無効になっている場合にのみアクティブになります。 範囲:実数
- momentum_stable momentum_stableパラメーターは、momentum_rampトレーニングサンプルの後に到達する最終的な運動量値を制御します。トレーニングに使用される勢いは、そのポイントに達するまでトレーニングの場合と同じままです。このパラメーターは、適応学習率が無効になっている場合にのみアクティブになります。 範囲:実数
- nesterov_accelerated_gradient Nesterov加速勾配降下法は、凸関数の従来の勾配降下法を修正したものです。この方法は、さまざまなポイントでの勾配情報に依存して、より少ない降下の反復で残差を最小化する多項式近似を構築します。このパラメーターは、適応学習率が無効になっている場合にのみアクティブになります。 範囲:ブール
- L1重みの絶対値を制約し、モデルからいくつかの重みを削除(ゼロに設定)する正味の効果を持つ正則化方法。複雑さを軽減し、過剰適合を回避します。 範囲:実数
- L2重みの2乗の合計を制約する正則化方法。この方法では、パラメーター推定値にバイアスがかかりますが、推定値の分散が小さくなると、モデル化でかなりのゲインが得られることがよくあります。 範囲:実数
- max_w2任意の1つのニューロンに入力される2 乗重みの合計の最大値。この調整パラメーターは、MaxoutやRectifierなどの非バインドアクティベーション関数に特に役立ちます。特別な値0は無限を意味します。 範囲:実数
- loss_functionモデルによって最小化される損失(エラー)関数。絶対、二次、およびフーバーは回帰または分類に適用されますが、CrossEntropyは分類にのみ適用されます。 Huberは、外れ値のある回帰問題を改善できます。 CrossEntropy lossは、モデルの出力が独立した仮説で構成される場合に使用され、出力は各仮説が真である確率として解釈できます。ターゲット値がクラスラベルの場合、特に不均衡なデータの場合、クロスエントロピーは推奨される損失関数です。実際のクラスラベルの予測におけるエラーに強くペナルティを科します。 2次損失は、モデル出力が連続的な実数値である場合に使用されますが、分類にも使用できます(実際のクラスだけでなく、すべての出力クラスでエラーを強調する場合)。 範囲:選択
- distribution_functionトレーニングデータの分布関数。一部の機能(ツイーディーなど)については、エキスパートパラメーターを使用してさらにチューニングすることができます。
- AUTO:自動選択。名義には多項式を使用し、数値ラベルにはガウスを使用します。
- bernoulli:ベルヌーイ分布。二項または2クラスの多項式ラベルに使用できます。
- gaussian、possion、gamma、tweedie、quantile、laplace:回帰の分布関数。
範囲:選択
- early_stopping trueの場合、早期停止のパラメーターを指定する必要があります。 範囲:ブール
- starting_rounds starting_metricの収束に基づく早期停止。 Stopping_metricsの長さkの単純な移動平均がk:= stopping_roundsスコアリングイベントで改善しない場合は停止します(無効にする場合は0)。このパラメーターは、early_stoppingが設定されている場合にのみ表示されます。 範囲:整数
- starting_metric早期停止に使用するメトリック。調整するには、stopping_toleranceを設定します。このパラメーターは、early_stoppingが設定されている場合にのみ表示されます。
- AUTO:自動選択。分類には対数損失、回帰には逸脱を使用します。
- deviance、logloss、MSE、AUC、lift_top_group、r2、誤分類、mean_per_class_error:アルゴリズムを停止するかどうかを決定するために使用するメトリック。
範囲:選択
- starting_toleranceメトリックベースの停止基準の相対的な許容範囲(相対的な改善がこれほど大きくない場合は停止します)。このパラメーターは、early_stoppingが設定されている場合にのみ表示されます。 範囲:実数
- missing_values_handling欠損値の処理。 SkipまたはMeanImputationのいずれか。
- スキップ:欠損値はスキップされます。
- MeanImputation:欠損値は平均値に置き換えられます。
範囲:選択
- max_runtime_secondsモデルトレーニングの最大許容実行時間(秒)。 0を使用して無効にします。 範囲:整数
- expert_parametersこれらのパラメーターは、アルゴリズムを微調整するためのものです。通常、デフォルト値は適切なモデルを提供しますが、場合によってはそれらを変更すると役立つ場合があります。ブール値パラメーターにはtrue / false値を使用し、列には正確な属性名を使用してください。コンマ(、)文字で値を分割することにより、配列を提供できます。パラメーターの詳細については、H2Oのドキュメントをご覧ください。
- score_each_iteration:モデルトレーニングの各反復中にスコアを付けるかどうか。タイプ:ブール値、デフォルト:false
- fold_assignment:fold_columnが指定されていない場合のクロス検証フォールド割り当てスキーム。オプション:AUTO、ランダム、モジュロ、成層。タイプ:列挙、デフォルト:AUTO
- fold_column:観測ごとの交差検証フォールドインデックス割り当てを含む列名。タイプ:列、デフォルト:折りたたみ列なし
- offset_column:オフセット列名。タイプ:列、デフォルト:オフセット列なし
- balance_classes:オーバー/アンダーサンプリングを介してトレーニングデータクラスカウントのバランスを取ります(不均衡なデータの場合)タイプ:ブール値、デフォルト:false
- keep_cross_validation_predictions:交差検証モデルの予測を保持します。タイプ:ブール値、デフォルト:false
- keep_cross_validation_fold_assignment:クロス検証フォールド割り当てを保持します。タイプ:ブール値、デフォルト:false
- max_after_balance_size:クラスカウントのバランス調整後のトレーニングデータの最大相対サイズ(1.0未満になる場合があります)。 balance_classesが必要です。タイプ:実数、デフォルト:5.0
- max_confusion_matrix_size:ログに印刷される混同マトリックスの最大サイズ(#クラス)。タイプ:整数、デフォルト:20
- quantile_alpha:変位値回帰に必要な変位値(0.0から1.0)。タイプ:実数、デフォルト:0.5
- tweedie_power:Tweedie Power(1と2の間)。タイプ:実数、デフォルト:1.5
- class_sampling_factors:クラスごとに必要なオーバー/アンダーサンプリング比(辞書式順序)。指定しない場合、トレーニング中にクラスバランスを取得するために、サンプリング係数が自動的に計算されます。 balance_classes = trueが必要です。タイプ:float配列、デフォルト:空
- input_dropout_ratio:一般化(次元サンプリング)を改善するために、トレーニングから除外される各トレーニング行の機能の一部。タイプ:実数、デフォルト:0
- score_interval:モデルのスコアリングの間に経過する最小時間(秒単位)。実際の間隔は、反復ごとのトレーニングサンプルの数とスコアリングデューティサイクルによって決まります。タイプ:整数、デフォルト:5
- score_training_samples:スコアリングに使用されるトレーニングデータセットポイントの数。ランダムにサンプリングされます。トレーニングデータセット全体を選択するには0を使用します。タイプ:整数、デフォルト:10000
- score_validation_samples:スコアリングに使用される検証データセットポイントの数。ランダムにサンプリングまたは階層化できます(「バランスクラス」が設定され、「スコア検証サンプリング」が階層化に設定されている場合)。トレーニングデータセット全体を選択するには0を使用します。タイプ:整数、デフォルト:0
- score_duty_cycle:トレーニングおよび検証サンプルのモデルスコアリング、および機能の重要性の計算などの診断(つまり、トレーニングではない)に費やされる壁時計時間の最大割合。低い:より多くのトレーニング、より高い:より多くのスコアリング。タイプ:実数、デフォルト:0.1
- overwrite_with_best_model:有効にすると、トレーニングの最後にこのモデルの宛先キーの下に最適なモデルを保存します。タイプ:ブール値、デフォルト:true。
- initial_weight_distribution:初期の重みが引き出される分布。デフォルトのオプションは、ネットワークのサイズを考慮した最適化された初期化です。 「均一」オプションは、平均が0で指定された間隔の均一分布を使用します。 「正規」オプションは、標準正規分布から平均0で与えられた標準偏差で重みを引き出します。タイプ:列挙、オプション:UniformAdaptive、Uniform、Normal。デフォルト:UniformAdaptive
- initial_weight_scale:均一分布または正規分布の分布関数のスケール。均一の場合、値は-initial_weight_scale … initial_weight_scaleから均一に描画されます。正規の場合、値はinitial_weight_scaleの標準偏差を持つ正規分布から取得されます。タイプ:実数、デフォルト:1
- Classification_stop:トレーニングデータスコアリングデータセットの分類エラー(1精度)に関する停止基準。エラーがこのしきい値以下になると、トレーニングが停止します。タイプ:実数、デフォルト:0
- regression_stop:トレーニングデータスコアリングデータセットの回帰エラー(MSE)に関する停止基準。エラーがこのしきい値以下になると、トレーニングが停止します。タイプ:実数、デフォルト:1e-6。
- score_validation_sampling:スコアリング用の検証データセットのサンプリングに使用されるメソッド。タイプ:列挙、オプション:均一、層別。デフォルト:均一。
- fast_mode:高速モードを有効にします(逆伝播のわずかな近似)。結果に大きな影響はありません。タイプ:ブール値、デフォルト:true。
- force_load_balance:すべてのコアを利用できるように多数のチャンクに分割することで、小さなデータセットのトレーニング速度を向上させます。タイプ:ブール値、デフォルト:true。
- shuffle_training_data:トレーニングデータのシャッフルを有効にします(各ノードで)。このオプションは、トレーニングデータがN個のノードで複製され、反復ごとのトレーニングサンプルの数がデータセットサイズのN倍に近く、すべてのノードが(ほぼ)すべてのデータをトレーニングする場合に推奨されます。反復ごとのトレーニングサンプルの数が-1(またはデータセットサイズのN倍以上)に設定されている場合、自動的に有効になります。 RapidMinerは常に1つのノードでH2Oを実行するため、このパラメーターを設定する必要は通常ありません。タイプ:ブール値、デフォルト:false。
- quiet_mode:標準出力への出力を少なくするためにQuietモードを有効にします。タイプ:ブール値、デフォルト:false。
- sparse:スパースデータ処理(値が0のデータに対してより効率的)。タイプ:ブール値、デフォルト:false。
- average_activation:スパースオートエンコーダの平均アクティベーション(実験的)タイプ:double、デフォルト:0.0。
- sparsity_beta:スパース正則化。 (実験的)タイプ:double、デフォルト:0.0。
- max_categorical_features:最大ハッシュを介して適用されるカテゴリ機能の数(実験的)タイプ:整数、デフォルト:2147483647。
- export_weights_and_biases:ニューラルネットワークの重みとバイアスをH2Oフレームにエクスポートするかどうか。タイプ:ブール値、デフォルト:false。
- mini_batch_size:ミニバッチサイズ(サイズが小さいほど適合性が向上し、サイズが大きいほど高速化および一般化が向上します)。タイプ:整数、デフォルト:1
- elastic_averaging:計算ノード間の弾性平均化により、分散モデルの収束を改善できます。 (実験的)タイプ:ブール値、デフォルト:false。
- use_all_factor_levels:カテゴリー変数のすべての因子レベルを使用します。それ以外の場合、最初の因子レベルは省略されます(精度が失われることはありません)。変数の重要度に役立ち、自動エンコーダーで自動有効化されます。タイプ:ブール値、デフォルト:true。
- nfolds:交差検定の折り畳みの数。 0を使用して、相互検証をオフにします。タイプ:整数、デフォルト:0
範囲:列挙
チュートリアルプロセス
深層学習を使用した分割検証による分類
H2O Deep Learningオペレーターは、TitanicサンプルデータセットのSurvived属性を予測するために使用されます。ラベルは二項なので、分類が実行されます。モデルの品質を確認するには、分割検証演算子を使用してトレーニングデータセットとテストデータセットを生成します。ディープラーニングオペレーターのパラメーターはデフォルト値です。これは、それぞれ50個のニューロンを持つ2つの隠れ層が構築されることを意味します。ラベルが付いたExampleSetは、精度メトリックを計算するパフォーマンス(二項分類)演算子に接続されています。ディープラーニングモデルのプロセス出力には、ラベル付きデータとパフォーマンスベクトルが表示されます。
深層学習を使用した回帰H2O Deep Learningオペレーターは、生成されたデータセットの数値ラベル属性を予測するために使用されます。ラベルは実数なので、回帰が実行されます。データが生成され、データの分割演算子で2つの部分に分割されます。最初の出力はトレーニングとして使用され、2番目の出力はスコアリングデータセットとして使用されます。 Deep Learningオペレーターは、適応学習率オプション(デフォルト)を使用します。アルゴリズムは、イプシロンとローパラメータに基づいて学習率を自動的に決定します。デフォルト以外のパラメータは、それぞれ50ニューロンの3つのレイヤーが使用される非表示レイヤーサイズのみです。テスト用のExampleSetに適用した後、ラベル付きデータはプロセス出力に接続されます。