TrainingOptionsLM
説明
TrainingOptionsLM オブジェクトを使用して、レーベンバーグ・マルカート (LM) オプティマイザーの学習オプションを設定します。
LM アルゴリズム[1]は、勾配降下法とガウス・ニュートン法を補完するもので、小規模なニューラル ネットワークのロバスト性を向上させます。ヤコビ外積を使用して 2 階微分を近似します。LM アルゴリズムは、学習可能なパラメーターの数が少なく、データ セットを 1 つのバッチで処理できる回帰ネットワークに使用します。
作成
trainingOptions 関数を使用し、最初の入力引数として "lm" を指定し、TrainingOptionsLM オブジェクトを作成します。
プロパティ
LM
学習に使用する最大反復回数。正の整数として指定します。
LM ソルバーは全バッチ ソルバーです。これは、学習セット全体を 1 回の反復で処理することを意味します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
初期減衰係数。正のスカラーとして指定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
最大減衰係数。正のスカラーとして指定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
減衰係数を増加させる係数。1 より大きい正のスカラーとして指定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
減衰係数を減少させる係数。1 未満の正のスカラーとして指定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
相対勾配の許容値。正のスカラーとして指定します。
相対勾配の許容誤差。次のいずれかの値として指定します。
正のスカラー — 相対勾配が指定した値以下になると、学習を停止します。
0(R2025a 以降) — 相対勾配に基づいて学習を停止しません。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
ステップ サイズの許容誤差。次のいずれかの値として指定します。
正のスカラー — アルゴリズムの実行するステップが指定された値以下になると、学習を停止します。
0(R2025a 以降) — ステップ サイズに基づいて学習を停止しません。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
データ レイアウト
R2025a 以降
categorical 入力の符号化。次のいずれかの値として指定します。
"integer"— categorical 入力を整数値に変換します。この場合、ネットワークは categorical 入力ごとに 1 つの入力チャネルをもたなければなりません。"one-hot"— categorical 入力を one-hot 符号化されたベクトルに変換します。この場合、ネットワークは categorical 入力ごとにnumCategories個のチャネルをもたなければなりません。ここで、numCategoriesは対応する categorical 入力のカテゴリの数です。
R2025a 以降
categorical ターゲットの符号化。次のいずれかの値として指定します。
"auto"—"index-crossentropy"損失関数を使用して学習させる場合は、categorical ターゲットを整数値に変換します。それ以外の場合は、categorical ターゲットを one-hot 符号化されたベクトルに変換します。"integer"— categorical ターゲットを整数値に変換し、整数に符号化された値を損失関数とメトリクス関数に渡します。"one-hot"— categorical ターゲットを one-hot 符号化されたベクトルに変換し、one-hot 符号化された値を損失関数とメトリクス関数に渡します。
入力データの次元の説明。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。
InputDataFormats が "auto" の場合、ソフトウェアは、ネットワークの入力で必要とされる形式を使用します。そうでない場合、ソフトウェアは、該当するネットワーク入力に対して指定された形式を使用します。
データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。
各文字は以下のとおりです。
"S"— 空間"C"— チャネル"B"— バッチ"T"— 時間"U"— 指定なし
たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。データは "CBT" (チャネル、バッチ、時間) の形式で記述できます。
"S" または "U" のラベルが付いた次元については、複数回指定できます。ラベル "C"、"B"、および "T" はそれぞれ 1 回まで使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。
複数の入力をもつニューラル ネットワーク net の場合、入力データ形式の配列を指定します。ここで、InputDataFormats(i) は入力 net.InputNames(i) に対応します。
詳細については、深層学習のデータ形式を参照してください。
データ型: char | string | cell
ターゲット データの次元の説明。次のいずれかの値として指定します。
"auto"— ターゲット データと入力データの次元の数が同じ場合、関数trainnetはInputDataFormatsで指定された形式を使用します。ターゲット データと入力データの次元の数が異なる場合、関数trainnetは損失関数で必要とされる形式を使用します。string 配列、文字ベクトル、または文字ベクトルの cell 配列 — 関数
trainnetはユーザーが指定したデータ形式を使用します。
データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。
各文字は以下のとおりです。
"S"— 空間"C"— チャネル"B"— バッチ"T"— 時間"U"— 指定なし
たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。データは "CBT" (チャネル、バッチ、時間) の形式で記述できます。
"S" または "U" のラベルが付いた次元については、複数回指定できます。ラベル "C"、"B"、および "T" はそれぞれ 1 回まで使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。
詳細については、深層学習のデータ形式を参照してください。
データ型: char | string | cell
監視
ニューラル ネットワークの学習中に表示するプロット。次のいずれかの値として指定します。
"none"— 学習中にプロットを表示しません。"training-progress"— 学習の進行状況をプロットします。
プロットには、学習と検証の損失、Metrics プロパティで指定された学習と検証のメトリクス、および学習の進行状況に関する追加情報が表示されます。
学習後にプログラムで学習の進行状況プロットを開いたり閉じたりするには、関数 trainnet の 2 番目の出力で関数 show および close を使用します。Plots 学習オプションが "none" として指定されている場合でも、関数 show を使用して学習の進行状況を表示できます。
Y 軸のスケールを対数に切り替えるには、座標軸ツール バーを使用します。
プロットの詳細については、深層学習における学習の進行状況の監視を参照してください。
監視するメトリクス。次のいずれかの値として指定します。
組み込みメトリクスまたは損失関数名 — string スカラー、文字ベクトル、または次の 1 つ以上の名前の cell 配列か string 配列としてメトリクスを指定します。
メトリクス:
"accuracy"— 精度 (最上位精度とも呼ばれる)"auc"— ROC 曲線下面積 (AUC)"fscore"— F スコア (F1 スコアとも呼ばれる)"precision"— 適合率"recall"— 再現率"rmse"— 平方根平均二乗誤差"mape"— 平均絶対誤差率 (MAPE)"rsquared"— R2 (決定係数) (R2025a 以降)
損失関数:
"crossentropy"— 分類タスクのクロスエントロピー損失。"indexcrossentropy"— 分類タスクのインデックス クロスエントロピー損失。"binary-crossentropy"— バイナリおよびマルチラベル分類タスクのバイナリ クロスエントロピー損失。"mae"/"mean-absolute-error"/"l1loss"— 回帰タスクの平均絶対誤差。"mse"/"mean-squared-error"/"l2loss"— 回帰タスクの平均二乗誤差。"huber"— 回帰タスクの Huber 損失
損失関数を
"crossentropy"に設定し、メトリクスとして"index-crossentropy"を指定すること、または損失関数を"index-crossentropy"に設定し、メトリクスとして"crossentropy"を指定することはサポートされていないことに注意してください。深層学習のメトリクスと損失関数の詳細については、Deep Learning Metricsを参照してください。
組み込みメトリクス オブジェクト — より高い柔軟性が必要な場合は、組み込みメトリクス オブジェクトを使用できます。ソフトウェアは、次の組み込みメトリクス オブジェクトをサポートします。
組み込みメトリクス オブジェクトを作成するときは、平均化のタイプ、タスクが単一ラベルか複数ラベルかなどの追加オプションを指定できます。
カスタム メトリクス関数ハンドル — 組み込みメトリクス以外のメトリクスが必要な場合は、関数ハンドルを使用してカスタム メトリクスを指定できます。関数の構文は
metric = metricFunction(Y,T)でなければなりません。ここで、Yはネットワーク予測に対応し、Tはターゲット応答に対応します。複数の出力をもつネットワークの場合、構文はmetric = metricFunction(Y1,…,YN,T1,…TM)でなければなりません。ここで、Nは出力の数、Mはターゲットの数です。詳細については、Define Custom Metric Functionを参照してください。deep.DifferentiableFunctionオブジェクト — カスタム backward 関数をもつ関数オブジェクト。詳細については、カスタム深層学習演算の定義を参照してください。カスタム メトリクス オブジェクト — より詳細なカスタマイズが必要な場合は、独自のカスタム メトリクス オブジェクトを定義できます。カスタム メトリクスの作成方法を示す例については、Define Custom Metric Objectを参照してください。カスタム メトリクスの作成に関する一般的な情報については、Define Custom Deep Learning Metric Objectを参照してください。
trainingOptions関数のMetricsオプションとしてカスタム メトリクスを指定します。
メトリクスを関数ハンドル、deep.DifferentiableFunction オブジェクト、またはカスタム メトリクス オブジェクトとして指定し、trainnet 関数を使用してニューラル ネットワークに学習させる場合、ソフトウェアによってメトリクスに渡されるターゲットのレイアウトは、ターゲットのデータ型、trainnet 関数で指定する損失関数、および指定するその他のメトリクスによって異なります。
ターゲットが数値配列の場合、ソフトウェアはターゲットをメトリクスに直接渡します。
損失関数が
"index-crossentropy"で、ターゲットが categorical 配列の場合、ソフトウェアはターゲットを数値クラス インデックスに自動的に変換し、メトリクスに渡します。その他の損失関数では、ターゲットが categorical 配列の場合、ソフトウェアはターゲットを自動的に one-hot 符号化されたベクトルに変換し、メトリクスに渡します。
例: Metrics=["accuracy","fscore"]
例: Metrics=["accuracy",@myFunction,precisionObj]
早期に停止して最適なネットワークを返すのに使用される目的指標の名前。string スカラーまたは文字ベクトルとして指定します。
このメトリクスの名前は、"loss" であるか、Metrics 引数で指定されたメトリクスの名前と同じでなければなりません。関数ハンドルで指定されたメトリクスはサポートされていません。ObjectiveMetricName の値をカスタム メトリクスの名前として指定するには、カスタム メトリクス オブジェクトの Maximize プロパティの値が空であってはなりません。詳細については、Define Custom Deep Learning Metric Objectを参照してください。
早期に停止するための目的指標の指定に関する詳細については、ValidationPatience を参照してください。目的指標を使用して最適なネットワークを返すことに関する詳細については、OutputNetwork を参照してください。
データ型: char | string
コマンド ウィンドウに学習の進行状況の情報を表示するためのフラグ。1 (true) または 0 (false) として指定します。
このプロパティが 1 (true) である場合、ソフトウェアは次の情報を表示します。
| 変数 | 説明 |
|---|---|
Iteration | 反復回数。 |
TimeElapsed | 経過時間。時間、分、秒で示されます。 |
TrainingLoss | 学習損失。 |
ValidationLoss | 検証損失。検証データを指定しない場合、ソフトウェアはこの情報を表示しません。 |
GradientNorm | 勾配のノルム。 |
StepNorm | ステップのノルム。 |
学習オプションで追加のメトリクスを指定した場合、詳細出力にもそれらのメトリクスが表示されます。たとえば、Metrics 学習オプションを "accuracy" に設定した場合、変数 TrainingAccuracy および ValidationAccuracy もこの情報に含まれます。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
コマンド ウィンドウへの表示間の反復回数を示す、詳細出力の頻度。正の整数として指定します。
学習中にニューラル ネットワークを検証する場合、ソフトウェアは、検証が行われるたびにコマンド ウィンドウにも出力します。
このプロパティを有効にするには、Verbose 学習オプションを 1 (true) に設定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
学習中に呼び出す出力関数。関数ハンドル、または関数ハンドルの cell 配列として指定します。ソフトウェアは、学習の開始前、各反復後、および学習の完了時に関数を 1 回呼び出します。
関数の構文は stopFlag = f(info) でなければなりません。ここで、info は学習の進行状況に関する情報が格納される構造体、stopFlag は学習を早期に停止させることを示すスカラーです。stopFlag が 1 (true) の場合、ソフトウェアは学習を停止させます。それ以外の場合、ソフトウェアは学習を続行します。
関数 trainnet は、次のフィールドをもつ構造体 info を出力関数に渡します。
| フィールド | 説明 |
|---|---|
Iteration | 反復回数 |
TimeElapsed | 経過時間 (時間、分、秒) |
TrainingLoss | 学習損失 |
ValidationLoss | 検証損失。検証データを指定しない場合、ソフトウェアはこの情報を表示しません。 |
GradientNorm | 勾配のノルム |
StepNorm | ステップのノルム |
State | 反復での学習状態。"start"、"iteration"、または "done" として指定します。 |
学習オプションで追加のメトリクスを指定した場合、学習情報にもそれらのメトリクスが表示されます。たとえば、Metrics 学習オプションを "accuracy" に設定した場合、フィールド TrainingAccuracy および ValidationAccuracy もこの情報に含まれます。
フィールドが計算されない、または出力関数の特定の呼び出しに関連していない場合、そのフィールドには空の配列が含まれます。
出力関数の使用方法を示す例については、深層学習における学習用のカスタム停止条件を参照してください。
データ型: function_handle | cell
検証
学習中の検証で使用するデータ。[] として指定するか、検証予測子と検証ターゲットを含むデータストア、table、cell 配列、または minibatchqueue オブジェクトとして指定します。
学習中に、ソフトウェアは検証データを使用して検証損失とメトリクス値を計算します。検証頻度を指定するには、ValidationFrequency 学習オプションを使用します。検証データを使用して、検証目的指標が改善されなくなったときに学習を自動的に停止することもできます。既定では、目的指標は損失に設定されます。自動検証停止をオンにするには、ValidationPatience 学習オプションを使用します。
ValidationData が [] の場合、学習中にニューラル ネットワークが検証されません。
ニューラル ネットワークに予測時と学習時で動作が異なる層 (ドロップアウト層など) がある場合、検証損失が学習損失より低くなる可能性があります。
ValidationData が [] の場合、学習中にニューラル ネットワークが検証されません。
データストア、table、minibatchqueue オブジェクト、または cell 配列 {predictors,targets} として検証データを指定します。ここで、predictors には検証予測子を格納し、targets には検証ターゲットを格納します。trainnet 関数でサポートされているいずれかのレイアウトを使用して、検証予測子と検証ターゲットの値を指定します。
詳細については、関数 trainnet の入力引数を参照してください。
反復回数で示されるニューラル ネットワークの検証の頻度。正の整数として指定します。
ValidationFrequency の値は、検証メトリクスの評価間の反復回数です。検証データを指定するには、ValidationData 学習オプションを使用します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
ニューラル ネットワークの学習の検証を停止するまでの待機回数。正の整数または Inf として指定します。
ValidationPatience は、ニューラル ネットワークの学習が停止するまでに、検証セットでの目的指標が前の最良値以下になることが許容される回数を指定します。ValidationPatience が Inf の場合、検証メトリクスの値によって学習が早期に停止することはありません。ソフトウェアは、メトリクスの Maximize プロパティの指定に従って、メトリクスを最大化または最小化しようと試みます。目的指標が "loss" の場合、ソフトウェアは損失値を最小化しようと試みます。
返されるニューラル ネットワークは、OutputNetwork 学習オプションによって異なります。検証メトリクス値が最良であるニューラル ネットワークを返すようにするには、OutputNetwork 学習オプションを "best-validation" に設定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
学習完了時に返すニューラル ネットワーク。次のいずれかとして指定します。
"auto"–ValidationDataが指定されている場合は"best-validation"を使用します。それ以外の場合は"last-iteration"を使用します。"best-validation"– 検証メトリクス値が最良となる学習反復に対応するニューラル ネットワークを返します。最適化するメトリクスはObjectiveMetricNameオプションで指定します。このオプションを使用するには、ValidationData学習オプションを指定しなければなりません。"last-iteration"– 最後の学習反復に対応するニューラル ネットワークを返す。
正規化
入力層の正規化をリセットするオプション。次のいずれかに指定します。
1(true) — 入力層の正規化統計量をリセットし、学習時に再計算します。0(false) — 正規化統計量が空の場合、学習時に計算します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
バッチ正規化層の統計量を評価するモード。次のいずれかとして指定します。
"population"— 母集団の統計量を使用します。学習終了後に学習データが再度渡され、その結果得られる平均と分散を使用して最終的な統計量が決定されます。"moving"— 学習中、以下の更新ステップで与えられる実行時推定を使用して統計量を近似します。ここで、 と はそれぞれ更新後の平均と分散、 と はそれぞれ平均と分散の減衰値、 と はそれぞれ層入力の平均と分散、 と はそれぞれ移動平均と分散の値の最新値を表します。学習終了後、最後に得られた移動平均と分散の値が使用されます。このオプションは、CPU および単一の GPU による学習のみをサポートします。
"auto"—"moving"オプションを使用します。
シーケンス
入力シーケンスのパディングまたは切り捨てを行うオプション。次のいずれかのオプションとして指定します。
"longest"— 最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが、パディングによってニューラル ネットワークにノイズが生じることがあります。"shortest"— 最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用すると、関数はパディングを追加しなくなりますが、代わりにデータが破棄されます。
入力シーケンスのパディングと切り捨ての効果の詳細については、シーケンスのパディングと切り捨てを参照してください。
パディングまたは切り捨ての方向。次のいずれかのオプションとして指定します。
"right"— シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイム ステップで始まり、ソフトウェアによって各シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。"left"— シーケンスの左側に対してパディングまたは切り捨てを行います。各シーケンスが同じタイム ステップで終わるように、ソフトウェアによって各シーケンスの先頭に対して切り捨てまたはパディングの追加が行われます。
再帰層は 1 タイム ステップずつシーケンス データを処理するため、再帰層の OutputMode プロパティが "last" の場合、最後のタイム ステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンス データの左側に対してパディングまたは切り捨てを行うには、名前と値の引数 SequencePaddingDirection を "left" に設定します。
sequence-to-sequence ニューラル ネットワークの場合 (各再帰層について OutputMode プロパティが "sequence" である場合)、最初のタイム ステップでパディングを行うと、それ以前のタイム ステップの予測に悪影響を与える可能性があります。シーケンス データの右側に対してパディングまたは切り捨てを行うには、名前と値の引数 SequencePaddingDirection を "right" に設定します。
シーケンスのパディングと切り捨ての効果の詳細については、シーケンスのパディングと切り捨てを参照してください。
入力シーケンスをパディングする値。スカラーとして指定します。
ニューラル ネットワーク全体にエラーが伝播される可能性があるため、NaN でシーケンスをパディングしないでください。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
ハードウェアと高速化
ハードウェア リソース。次のいずれかの値として指定します。
"auto"— 利用可能な場合、GPU を使用します。そうでない場合、CPU を使用します。"gpu"— GPU を使用します。GPU を使用するには Parallel Computing Toolbox™ ライセンスとサポートされている GPU デバイスが必要です。サポートされているデバイスの詳細については、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。Parallel Computing Toolbox または適切な GPU が利用できない場合、エラーが返されます。"cpu"— CPU を使用します。
パフォーマンスの最適化。次のいずれかの値として指定します。
"auto"– 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。"none"– すべての最適化を無効にします。
"auto" 高速化オプションを使用すると、パフォーマンス上のメリットが得られますが、初期実行時間が長くなります。互換性のあるパラメーターを使用した後続の呼び出しは、より高速になります。サイズと形状が同じである異なる入力データを使用して関数を複数回呼び出す場合は、パフォーマンスの最適化を使用してください。
チェックポイント
チェックポイント ニューラル ネットワークの保存用のパス。string スカラーまたは文字ベクトルとして指定します。
パスを指定しない (既定の
""を使用する) 場合、チェックポイント ニューラル ネットワークは保存されません。パスを指定すると、ソフトウェアによってこのパスにチェックポイント ニューラル ネットワークが保存され、各ニューラル ネットワークに一意の名前が割り当てられます。その後、いずれかのチェックポイント ニューラル ネットワークを読み込み、そのニューラル ネットワークから学習を再開できます。
フォルダーが存在していない場合、チェックポイント ニューラル ネットワークを保存するパスを指定する前に、まずフォルダーを作成しなければなりません。指定したパスが存在していない場合、ソフトウェアはエラーをスローします。
データ型: char | string
チェックポイント ニューラル ネットワークを繰り返し保存する頻度。正の整数として指定します。
このオプションは、CheckpointPath が空でない場合にのみ有効です。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
例
LM オプティマイザーを使用したニューラル ネットワーク学習の一連のオプションを作成します。
初期減衰係数として 0.002 を使用する。
最大減衰係数として を使用する。
係数 12 を使用して減衰を大きくする。
係数 0.2 を使用して減衰を小さくする。
options = trainingOptions("lm", ... InitialDampingFactor=0.002, ... MaxDampingFactor=1e9, ... DampingIncreaseFactor=12, ... DampingDecreaseFactor=0.2)
options =
TrainingOptionsLM with properties:
InitialDampingFactor: 0.0020
MaxDampingFactor: 1.0000e+09
DampingDecreaseFactor: 0.2000
DampingIncreaseFactor: 12
MaxIterations: 1000
GradientTolerance: 1.0000e-05
StepTolerance: 1.0000e-05
Verbose: 1
VerboseFrequency: 50
ValidationData: []
ValidationFrequency: 50
ValidationPatience: Inf
Metrics: []
ObjectiveMetricName: 'loss'
ExecutionEnvironment: 'auto'
Plots: 'none'
OutputFcn: []
SequenceLength: 'longest'
SequencePaddingValue: 0
SequencePaddingDirection: 'right'
InputDataFormats: "auto"
TargetDataFormats: "auto"
ResetInputNormalization: 1
BatchNormalizationStatistics: 'auto'
OutputNetwork: 'auto'
Acceleration: "auto"
CheckpointPath: ''
CheckpointFrequency: 30
CategoricalInputEncoding: 'integer'
CategoricalTargetEncoding: 'auto'
アルゴリズム
LM アルゴリズム[1]は、勾配降下法とガウス・ニュートン法を補完するもので、小規模なニューラル ネットワークのロバスト性を向上させます。ヤコビ外積を使用して 2 階微分を近似します。LM アルゴリズムは、学習可能なパラメーターの数が少なく、データ セットを 1 つのバッチで処理できる回帰ネットワークに使用します。
アルゴリズムは、次で与えられる更新ステップを使用し、反復 k+1 で学習可能なパラメーター W を更新します。
ここで、ΔWk は、次で与えられる反復 k での重みの変化です。
ここで、Hk は反復 k での近似ヘッセ行列であり、 は、学習可能なパラメーターに関する反復 k での損失の勾配です。このアルゴリズムは、次を使用してヘッセ行列を近似します。
ここで、Jk は反復 k でのヤコビ行列、μk は反復 k での減衰係数、I は単位行列です。
ソルバーは、各反復で実行されるステップ サイズを調整するために減衰係数を使用し、各反復で適応的に更新します。反復によって損失が増加すると減衰係数は増加し、損失が減少すると減衰係数は減少します。これらの調整により、オプティマイザーは、損失が増加しているときにはより大きなステップを、損失が減少しているときにはより小さなステップをそれぞれ実行するようになります。
ソルバーは、損失が増加した場合には DampingIncreaseFactor を、損失が減少した場合には DampingDecreaseFactor をそれぞれ乗算して、減衰係数を適応的に増減します。
参照
[1] Marquardt, Donald W. “An Algorithm for Least-Squares Estimation of Nonlinear Parameters.” Journal of the Society for Industrial and Applied Mathematics 11, no. 2 (June 1963): 431–41. https://doi.org/10.1137/0111030.
バージョン履歴
R2024b で導入ニューラル ネットワークに学習させるために categorical 入力と categorical ターゲットを数値に変換する方法を指定するには、それぞれ CategoricalInputEncoding 引数と CategoricalTargetEncoding 引数を使用します。
L-BFGS または LM ソルバーを使用するときに、相対勾配またはステップ サイズの値によって学習が停止しないようにするには、trainingOptions 関数の GradientTolerance 引数と StepTolerance 引数をそれぞれ 0 に設定します。
学習時に R2 メトリクスを監視してプロットします。
このメトリクスを使用して学習時の動作を監視およびプロットするには、Metrics を使用して指定します。"rsquared" を指定することも、より高度なカスタマイズが必要な場合には RSquaredMetric オブジェクトを作成することもできます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)