メインコンテンツ

TrainingOptionsLBFGS

メモリ制限 BFGS (L-BFGS) オプティマイザーの学習オプション

R2023b 以降

    説明

    TrainingOptionsLBFGS オブジェクトを使用して、直線探索方法、勾配とステップの許容誤差など、メモリ制限 BFGS (L-BFGS) オプティマイザーの学習オプションを設定します。

    L-BFGS アルゴリズム[1]は、Broyden-Fletcher-Goldfarb-Shanno (BFGS) アルゴリズムを近似する準ニュートン法です。L-BFGS アルゴリズムは、単一のバッチで処理できる小規模なネットワークやデータ セットに使用します。

    作成

    trainingOptions 関数を使用し、最初の入力引数として "lbfgs" を指定し、TrainingOptionsLBFGS オブジェクトを作成します。

    プロパティ

    すべて展開する

    L-BFGS

    学習に使用する最大反復回数。正の整数として指定します。

    L-BFGS ソルバーは全バッチ ソルバーです。これは、学習セット全体を 1 回の反復で処理することを意味します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    適切な学習率を検出する方法。次の値のいずれかとして指定します。

    • "weak-wolfe" — 弱 Wolfe 条件を満たす学習率を検索します。この方法は、逆ヘッセ行列の正定値近似を維持します。

    • "strong-wolfe" — 強 Wolfe 条件を満たす学習率を検索します。この方法は、逆ヘッセ行列の正定値近似を維持します。

    • "backtracking" — 十分な減少条件を満たす学習率を検索します。この方法は、逆ヘッセ行列の正定値近似を維持しません。

    保存する状態更新の数。正の整数として指定します。ほとんどのタスクには 3 ~ 20 の値が適しています。

    L-BFGS アルゴリズムは、勾配計算の履歴を使用してヘッセ行列を再帰的に近似します。詳細については、メモリ制限 BFGSを参照してください。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    逆ヘッセ行列の近似を特徴付ける初期値。正のスカラーとして指定します。

    メモリを節約するため、L-BFGS アルゴリズムでは密なヘッセ行列 B の保存や反転は行われません。代わりに、アルゴリズムは近似 Bkm1λkI を使用します。ここで、m は履歴サイズであり、逆ヘッセ因子 λk はスカラーです。また、I は単位行列です。このアルゴリズムは、スカラーの逆ヘッセ因子のみを格納します。アルゴリズムは各ステップで逆ヘッセ因子を更新します。

    逆ヘッセ因子の初期値は、λ0 の値です。

    詳細については、メモリ制限 BFGSを参照してください。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    学習率を決定するための直線探索の反復の最大数。正の整数として指定します。

    データ型: 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

    R2024b 以降

    初期ステップ サイズ。次のいずれかの値として指定します。

    • [] — 初期ヘッセ近似の決定に初期ステップ サイズを使用しません。

    • "auto" — 初期ステップ サイズを自動的に決定します。ソフトウェアは、初期ステップ サイズ s0=12W0+0.1 を使用します。ここで、W0 はネットワークの初期の学習可能なパラメーターです。

    • 正の実数スカラー — 指定された値を初期ステップ サイズ s0 として使用します。

    InitialStepSize"auto" または正の実数スカラーの場合、ソフトウェアは λ0=s0J(W0) を使用して初期逆ヘッセ行列を近似します。ここで、λ0 は初期逆ヘッセ行列係数であり、J(W0) は初期の学習可能なパラメーターに関する損失の勾配を示します。詳細については、メモリ制限 BFGSを参照してください。

    データ レイアウト

    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" — ターゲット データと入力データの次元の数が同じ場合、関数 trainnetInputDataFormats で指定された形式を使用します。ターゲット データと入力データの次元の数が異なる場合、関数 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 軸のスケールを対数に切り替えるには、座標軸ツール バーを使用します。Training plot axes toolbar with log scale enabled and the tooltip "Log scale y-axis".

    プロットの詳細については、深層学習における学習の進行状況の監視を参照してください。

    監視するメトリクス。次のいずれかの値として指定します。

    • 組み込みメトリクスまたは損失関数名 — string スカラー、文字ベクトル、または次の 1 つ以上の名前の cell 配列か string 配列としてメトリクスを指定します。

      • メトリクス:

        • "accuracy" — 精度 (最上位精度とも呼ばれる)

        • "auc" — ROC 曲線下面積 (AUC)

        • "fscore" — F スコア (F1 スコアとも呼ばれる)

        • "precision" — 適合率

        • "recall" — 再現率

        • "rmse" — 平方根平均二乗誤差

        • "mape" — 平均絶対誤差率 (MAPE) (R2024b 以降)

        • "rsquared"R2 (決定係数) (R2025a 以降)

      • 損失関数:

        • "crossentropy" — 分類タスクのクロスエントロピー損失。 (R2024b 以降)

        • "indexcrossentropy" — 分類タスクのインデックス クロスエントロピー損失。 (R2024b 以降)

        • "binary-crossentropy" — バイナリおよびマルチラベル分類タスクのバイナリ クロスエントロピー損失。 (R2024b 以降)

        • "mae" / "mean-absolute-error" / "l1loss" — 回帰タスクの平均絶対誤差。 (R2024b 以降)

        • "mse" / "mean-squared-error" / "l2loss" — 回帰タスクの平均二乗誤差。 (R2024b 以降)

        • "huber" — 回帰タスクの Huber 損失 (R2024b 以降)

      損失関数を "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 オブジェクト (R2024a 以降) — カスタム逆方向関数をもつ関数オブジェクト。詳細については、Define Custom Deep Learning Operationsを参照してください。

    • カスタム メトリクス オブジェクト — より詳細なカスタマイズが必要な場合は、独自のカスタム メトリクス オブジェクトを定義できます。カスタム メトリクスの作成方法を示す例については、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]

    R2024a 以降

    早期に停止して最適なネットワークを返すのに使用されるオブジェクティブ メトリクスの名前。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 は学習を早期に停止させることを示すスカラーです。stopFlag1 (true) の場合、ソフトウェアは学習を停止させます。それ以外の場合、ソフトウェアは学習を続行します。

    関数 trainnet は、次のフィールドをもつ構造体 info を出力関数に渡します。

    フィールド説明
    Iteration反復回数
    TimeElapsed経過時間 (時間、分、秒)
    TrainingLoss学習損失
    ValidationLoss検証損失。検証データを指定しない場合、ソフトウェアはこの情報を表示しません。
    GradientNorm勾配のノルム
    StepNormステップのノルム
    State反復での学習状態。"start""iteration"、または "done" として指定します。

    学習オプションで追加のメトリクスを指定した場合、学習情報にもそれらのメトリクスが表示されます。たとえば、Metrics 学習オプションを "accuracy" に設定した場合、フィールド TrainingAccuracy および ValidationAccuracy もこの情報に含まれます。

    フィールドが計算されない、または出力関数の特定の呼び出しに関連していない場合、そのフィールドには空の配列が含まれます。

    出力関数の使用方法を示す例については、Custom Stopping Criteria for Deep Learning Trainingを参照してください。

    データ型: 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 は、ニューラル ネットワークの学習が停止するまでに、検証セットでのオブジェクティブ メトリクスが前の最良値以下になることが許容される回数を指定します。ValidationPatienceInf の場合、検証メトリクスの値によって学習が早期に停止することはありません。ソフトウェアは、メトリクスの Maximize プロパティの指定に従って、メトリクスを最大化または最小化しようと試みます。オブジェクティブ メトリクスが "loss" の場合、ソフトウェアは損失値を最小化しようと試みます。

    返されるニューラル ネットワークは、OutputNetwork 学習オプションによって異なります。検証メトリクス値が最良のニューラル ネットワークを返すようにするには、OutputNetwork 学習オプションを "best-validation" に設定します。

    R2024a より前: ソフトウェアは、検証損失値を使用して検証の許容回数を計算します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    学習完了時に返すニューラル ネットワーク。次のいずれかとして指定します。

    • "auto"ValidationData が指定されている場合は "best-validation" を使用します。それ以外の場合は "last-iteration" を使用します。

    • "best-validation" – 検証メトリクス値が最良となる学習反復に対応するニューラル ネットワークを返します。最適化するメトリクスは ObjectiveMetricName オプションで指定します。このオプションを使用するには、ValidationData 学習オプションを指定しなければなりません。

    • "last-iteration" – 最後の学習反復に対応するニューラル ネットワークを返す。

    正則化と正規化

    L2 正則化 (重み減衰) の係数。非負のスカラーとして指定します。詳細については、L2 正則化を参照してください。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    入力層の正規化をリセットするオプション。次のいずれかに指定します。

    • 1 (true) — 入力層の正規化統計量をリセットし、学習時に再計算します。

    • 0 (false) — 正規化統計量が空の場合、学習時に計算します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

    バッチ正規化層の統計量を評価するモード。次のいずれかとして指定します。

    • "population" — 母集団の統計量を使用します。学習終了後に学習データが再度渡され、その結果得られる平均と分散を使用して最終的な統計量が決定されます。

    • "moving" — 学習中、以下の更新ステップで与えられる実行時推定を使用して統計量を近似します。

      μ*=λμμ^+(1λμ)μσ2*=λσ2σ2^+(1-λσ2)σ2

      ここで、μ*σ2* はそれぞれ更新後の平均と分散、λμλσ2 はそれぞれ平均と分散の減衰値、μ^σ2^ はそれぞれ層入力の平均と分散、μσ2 はそれぞれ移動平均と分散の値の最新値を表します。学習終了後、最後に得られた移動平均と分散の値が使用されます。このオプションは、CPU および単一の GPU による学習のみをサポートします。

    • "auto""moving" オプションを使用します。

    勾配クリップ

    勾配しきい値。Inf または正のスカラーとして指定します。勾配が GradientThreshold の値を超えた場合、勾配は GradientThresholdMethod 学習オプションに応じてクリップされます。

    詳細については、勾配クリップを参照してください。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    勾配しきい値を超えた勾配の値をクリップするために使用する勾配しきい値法。次のいずれかに指定します。

    • "l2norm" — 学習可能なパラメーターの勾配の L2 ノルムが GradientThreshold より大きい場合は、L2 ノルムが GradientThreshold に等しくなるように勾配をスケーリングします。

    • "global-l2norm" — グローバル L2 ノルム LGradientThreshold より大きい場合は、すべての勾配を GradientThreshold/L 倍にスケーリングします。グローバル L2 ノルムでは、すべての学習可能なパラメーターが考慮されます。

    • "absolute-value" — 学習可能なパラメーターの勾配に含まれる偏微分のうち、絶対値が GradientThreshold より大きいものについては、偏微分の符号を維持したまま、大きさが GradientThreshold に等しくなるように偏微分をスケーリングします。

    詳細については、勾配クリップを参照してください。

    シーケンス

    入力シーケンスのパディングまたは切り捨てを行うオプション。次のいずれかのオプションとして指定します。

    • "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 を使用します。

    R2024a 以降

    パフォーマンスの最適化。次のいずれかの値として指定します。

    • "auto" – 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。

    • "none" – すべての最適化を無効にします。

    "auto" 高速化オプションを使用すると、パフォーマンス上のメリットが得られますが、初期実行時間が長くなります。互換性のあるパラメーターを使用した後続の呼び出しは、より高速になります。サイズと形状が同じである異なる入力データを使用して関数を複数回呼び出す場合は、パフォーマンスの最適化を使用してください。

    チェックポイント

    チェックポイント ニューラル ネットワークの保存用のパス。string スカラーまたは文字ベクトルとして指定します。

    • パスを指定しない (既定の "" を使用する) 場合、チェックポイント ニューラル ネットワークは保存されません。

    • パスを指定すると、ソフトウェアによってこのパスにチェックポイント ニューラル ネットワークが保存され、各ニューラル ネットワークに一意の名前が割り当てられます。その後、いずれかのチェックポイント ニューラル ネットワークを読み込み、そのニューラル ネットワークから学習を再開できます。

      フォルダーが存在していない場合、チェックポイント ニューラル ネットワークを保存するパスを指定する前に、まずフォルダーを作成しなければなりません。指定したパスが存在していない場合、ソフトウェアはエラーをスローします。

    データ型: char | string

    チェックポイント ニューラル ネットワークを繰り返し保存する頻度。正の整数として指定します。

    このオプションは、CheckpointPath が空でない場合にのみ有効です。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    すべて折りたたむ

    L-BFGS オプティマイザーを使用したニューラル ネットワーク学習の一連のオプションを作成します。

    • "strong-wolfe" 直線探索方法を使用して学習率を決定します。

    • 相対勾配が 1e-5 以下になると、学習を停止します。

    • 学習の進行状況プロットをオンにします。

    options = trainingOptions("lbfgs", ...
        LineSearchMethod="strong-wolfe", ...
        GradientTolerance=1e-5, ...
        Plots="training-progress")
    options = 
      TrainingOptionsLBFGS with properties:
    
                         HistorySize: 10
         InitialInverseHessianFactor: 1
                     InitialStepSize: []
                    LineSearchMethod: 'strong-wolfe'
          MaxNumLineSearchIterations: 20
                       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: 'training-progress'
                           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'
                    L2Regularization: 1.0000e-04
             GradientThresholdMethod: 'l2norm'
                   GradientThreshold: Inf
    
    

    アルゴリズム

    すべて展開する

    参照

    [1] Liu, Dong C., and Jorge Nocedal. "On the limited memory BFGS method for large scale optimization." Mathematical programming 45, no. 1 (August 1989): 503-528. https://doi.org/10.1007/BF01589116.

    [2] Pascanu, R., T. Mikolov, and Y. Bengio. "On the difficulty of training recurrent neural networks". Proceedings of the 30th International Conference on Machine Learning. Vol. 28(3), 2013, pp. 1310–1318.

    [3] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.

    [4] Murphy, K. P. Machine Learning: A Probabilistic Perspective. The MIT Press, Cambridge, Massachusetts, 2012.

    バージョン履歴

    R2023b で導入

    すべて展開する