Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

RegressionNeuralNetwork

回帰用のニューラル ネットワーク モデル

    説明

    RegressionNeuralNetwork オブジェクトは、回帰用の全結合の学習済みフィードフォワード ニューラル ネットワークです。ニューラル ネットワークの最初の全結合層にはネットワーク入力 (予測子データ X) からの結合があり、後続の各層には前の層からの結合があります。各全結合層では、入力に重み行列 (LayerWeights) が乗算されてからバイアス ベクトル (LayerBiases) が加算されます。最終層を除く各全結合層の後には活性化関数 (Activations および OutputLayerActivation) が続きます。最終全結合層によってネットワークの出力、つまり予測応答値が生成されます。詳細については、ニューラル ネットワークの構造を参照してください。

    作成

    RegressionNeuralNetwork オブジェクトの作成には fitrnet を使用します。

    プロパティ

    すべて展開する

    ニューラル ネットワークのプロパティ

    このプロパティは読み取り専用です。

    ニューラル ネットワーク モデル内の全結合層のサイズ。正の整数ベクトルとして返されます。LayerSizes の i 番目の要素は、ニューラル ネットワーク モデルの i 番目の全結合層の出力数です。

    LayerSizes には最終全結合層のサイズは含まれません。この層の出力は常に 1 つです。

    データ型: single | double

    このプロパティは読み取り専用です。

    全結合層の学習済みの層の重み。cell 配列として返されます。cell 配列内の i 番目のエントリは、i 番目の全結合層の層の重みに対応します。たとえば、Mdl.LayerWeights{1} は、モデル Mdl の最初の全結合層についての重みを返します。

    LayerWeights には最終全結合層の重みが含まれます。

    データ型: cell

    このプロパティは読み取り専用です。

    全結合層の学習済みの層のバイアス。cell 配列として返されます。cell 配列内の i 番目のエントリは、i 番目の全結合層の層のバイアスに対応します。たとえば、Mdl.LayerBiases{1} は、モデル Mdl の最初の全結合層についてのバイアスを返します。

    LayerBiases には最終全結合層のバイアスが含まれます。

    データ型: cell

    このプロパティは読み取り専用です。

    ニューラル ネットワーク モデルの全結合層の活性化関数。次の表の値をもつ文字ベクトルまたは文字ベクトルの cell 配列として返されます。

    説明
    'relu'

    正規化線形ユニット (ReLU) 関数 — 各入力要素に対して、0 より小さい値については 0 に設定するという次のしきい値演算を実行します。

    f(x)={x,x00,x<0

    'tanh'

    双曲線正接 (tanh) 関数 — 各入力要素に関数 tanh を適用します。

    'sigmoid'

    シグモイド関数 — 各入力要素に対して次の演算を実行します。

    f(x)=11+ex

    'none'

    恒等関数 — 変換を実行せずに、各入力要素を次のようにそのまま返します。f(x) = x

    • Activations に活性化関数が 1 つだけ含まれている場合は、ニューラル ネットワーク モデルの最終全結合層を除くすべての全結合層の活性化関数になります。最終全結合層には活性化関数はありません (OutputLayerActivation)。

    • Activations が活性化関数の配列の場合は、i 番目の要素がニューラル ネットワーク モデルの i 番目の層の活性化関数になります。

    データ型: char | cell

    このプロパティは読み取り専用です。

    最終全結合層の活性化関数。'none' として返されます。

    このプロパティは読み取り専用です。

    RegressionNeuralNetwork モデルの学習に使用されたパラメーター値。NeuralNetworkParams オブジェクトとして返されます。ModelParameters には、回帰ニューラル ネットワーク モデルの学習に使用された名前と値の引数などのパラメーター値が格納されます。

    ModelParameters のプロパティにアクセスするには、ドット表記を使用します。たとえば、モデル Mdl の全結合層の重みの初期化に使用する関数にアクセスするには Mdl.ModelParameters.LayerWeightsInitializer を使用します。

    収束制御のプロパティ

    このプロパティは読み取り専用です。

    収束情報。構造体配列として返されます。

    フィールド説明
    Iterationsニューラル ネットワーク モデルの学習に使用された学習反復の数
    TrainingLoss返されたモデルの学習平均二乗誤差 (MSE) (モデル MdlresubLoss(Mdl))
    Gradient返されたモデルに対応する反復における重みとバイアスに関する損失関数の勾配
    Step返されたモデルに対応する反復におけるステップ サイズ
    Timeすべての反復に費やした合計時間 (秒)
    ValidationLoss返されたモデルの検証 MSE
    ValidationChecks検証損失が連続で検証損失の最小値以上になった最大回数
    ConvergenceCriterion収束の基準
    HistoryTrainingHistory を参照

    データ型: struct

    このプロパティは読み取り専用です。

    学習履歴。table として返されます。

    説明
    Iteration学習反復
    TrainingLossこの反復におけるモデルの学習平均二乗誤差 (MSE)
    Gradientこの反復における重みとバイアスに関する損失関数の勾配
    Stepこの反復におけるステップ サイズ
    Timeこの反復に費やした時間 (秒)
    ValidationLossこの反復におけるモデルの検証 MSE
    ValidationChecks検証損失が連続で検証損失の最小値以上になっている現在までの回数

    データ型: table

    このプロパティは読み取り専用です。

    ニューラル ネットワーク モデルの学習に使用されたソルバー。'LBFGS' として返されます。fitrnet による RegressionNeuralNetwork モデルの作成では、メモリ制限 Broyden-Fletcher-Goldfarb-Shanno 準ニュートン アルゴリズム (LBFGS) が損失関数の最小化手法として使用され、平均二乗誤差 (MSE) が最小化されます。

    予測子のプロパティ

    このプロパティは読み取り専用です。

    予測子変数名。文字ベクトルの cell 配列として返されます。PredictorNames の要素の順序は、予測子名が学習データに現れる順序に対応します。

    データ型: cell

    このプロパティは読み取り専用です。

    カテゴリカル予測子のインデックス。正の整数のベクトルとして返されます。予測子データの行に観測値が含まれていると仮定すると、CategoricalPredictors には、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値が格納されます。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

    データ型: double

    このプロパティは読み取り専用です。

    展開された予測子名。文字ベクトルの cell 配列として返されます。モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNamesPredictorNames と同じです。

    データ型: cell

    このプロパティは読み取り専用です。

    ニューラル ネットワーク モデルの学習に使用された標準化されていない予測子。数値行列または table として返されます。X では、fitrnet を呼び出したときの名前と値の引数 ObservationsIn の値に応じて、元の向きで行または列に観測値が格納されます。

    データ型: single | double | table

    応答のプロパティ

    このプロパティは読み取り専用です。

    応答変数名。文字ベクトルとして返されます。

    データ型: char

    このプロパティは読み取り専用です。

    モデルの学習に使用された応答値。数値ベクトルとして返されます。Y の各行は、X の対応する観測値の応答値を表します。

    データ型: single | double

    このプロパティは読み取り専用です。

    応答変換関数。'none' として返されます。生の応答値が変換されません。

    その他のデータのプロパティ

    このプロパティは読み取り専用です。

    X および Y に格納されている学習データ内の観測値の個数。正の数値スカラーとして返されます。

    データ型: double

    このプロパティは読み取り専用です。

    モデルの当てはめに使用された元の学習データの行。logical ベクトルとして返されます。すべての行を使用した場合、このプロパティは空になります。

    データ型: logical

    このプロパティは読み取り専用です。

    モデルの学習に使用された観測値の重み。n 行 1 列の数値ベクトルとして返されます。n は観測値の個数 (NumObservations) です。

    W の要素の合計が 1 になるように、名前と値の引数 Weights で指定された観測値の重みが正規化されます。

    データ型: single | double

    オブジェクト関数

    compact機械学習モデルのサイズの縮小
    crossval機械学習モデルの交差検証
    loss回帰ニューラル ネットワークの損失
    resubLoss再代入回帰損失
    resubPredict学習済み回帰モデルを使用した学習データについての応答の予測
    partialDependence部分従属の計算
    plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
    predict回帰ニューラル ネットワークの使用による応答の予測

    すべて折りたたむ

    ニューラル ネットワーク回帰モデルに学習させ、検定セットでモデルの性能を評価します。

    carbig データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。AccelerationDisplacement などの予測子変数と応答変数 MPG が格納された table を作成します。

    load carbig
    cars = table(Acceleration,Displacement,Horsepower, ...
        Model_Year,Origin,Weight,MPG);

    データを学習セットと検定セットに分割します。観測値の約 80% をニューラル ネットワーク モデルの学習に使用し、観測値の約 20% を学習済みモデルの新しいデータでの性能の検定に使用します。cvpartition を使用してデータを分割します。

    rng("default") % For reproducibility of the data partition
    c = cvpartition(length(MPG),"Holdout",0.20);
    trainingIdx = training(c); % Training set indices
    carsTrain = cars(trainingIdx,:);
    testIdx = test(c); % Test set indices
    carsTest = cars(testIdx,:);

    学習データ carsTrain を関数 fitrnet に渡して、ニューラル ネットワーク回帰モデルに学習させます。より良い結果を得るために、予測子データを標準化するように指定します。

    Mdl = fitrnet(carsTrain,"MPG","Standardize",true)
    Mdl = 
      RegressionNeuralNetwork
               PredictorNames: {'Acceleration'  'Displacement'  'Horsepower'  'Model_Year'  'Origin'  'Weight'}
                 ResponseName: 'MPG'
        CategoricalPredictors: 5
            ResponseTransform: 'none'
              NumObservations: 314
                   LayerSizes: 10
                  Activations: 'relu'
        OutputLayerActivation: 'linear'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1×1 struct]
              TrainingHistory: [1000×7 table]
    
    
      Properties, Methods
    
    

    Mdl は学習させた RegressionNeuralNetwork モデルです。ドット表記を使用して Mdl のプロパティにアクセスできます。たとえば、Mdl.TrainingHistory と指定すると、ニューラル ネットワーク モデルの学習履歴についての詳細情報を取得できます。

    検定の平均二乗誤差 (MSE) を計算して、検定セットで回帰モデルの性能を評価します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。

    testMSE = loss(Mdl,carsTest,"MPG")
    testMSE = 16.6154
    

    全結合層のサイズなど、ニューラル ネットワーク回帰モデルの構造を指定します。

    carbig データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。予測子変数 AccelerationCylinders などが含まれている行列 X を作成します。応答変数 MPG を変数 Y に保存します。

    load carbig
    X = [Acceleration Cylinders Displacement Weight];
    Y = MPG;

    データを学習データ (XTrain および YTrain) と検定データ (XTest および YTest) に分割します。観測値の約 20% を検定用に予約し、残りの観測値を学習に使用します。

    rng("default") % For reproducibility of the partition
    c = cvpartition(length(Y),"Holdout",0.20);
    trainingIdx = training(c); % Indices for the training set
    XTrain = X(trainingIdx,:);
    YTrain = Y(trainingIdx);
    testIdx = test(c); % Indices for the test set
    XTest = X(testIdx,:);
    YTest = Y(testIdx);

    ニューラル ネットワーク回帰モデルに学習させます。予測子データを標準化するように指定し、最初の全結合層の出力数を 30、2 番目の全結合層の出力数を 10 に指定します。既定では、どちらの層でも正規化線形ユニット (ReLU) 活性化関数が使用されます。全結合層の活性化関数は、名前と値の引数 Activations を使用して変更できます。

    Mdl = fitrnet(XTrain,YTrain,"Standardize",true, ...
        "LayerSizes",[30 10])
    Mdl = 
      RegressionNeuralNetwork
                 ResponseName: 'Y'
        CategoricalPredictors: []
            ResponseTransform: 'none'
              NumObservations: 318
                   LayerSizes: [30 10]
                  Activations: 'relu'
        OutputLayerActivation: 'linear'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1×1 struct]
              TrainingHistory: [1000×7 table]
    
    
      Properties, Methods
    
    

    MdlLayerWeights プロパティと LayerBiases プロパティを使用して、学習させたモデルの全結合層の重みとバイアスにアクセスします。各プロパティの最初の 2 つの要素が最初の 2 つの全結合層の値に対応し、3 番目の要素が回帰用の最終全結合層の値に対応します。たとえば、最初の全結合層の重みとバイアスを表示します。

    Mdl.LayerWeights{1}
    ans = 30×4
    
       -1.0617    0.1287    0.0797    0.4648
       -0.6497   -1.4565   -2.6026    2.6962
       -0.6420    0.2744   -0.0234   -0.0252
       -1.9727   -0.4665   -0.5833    0.9371
       -0.4373    0.1607    0.3930    0.7859
        0.5091   -0.0032   -0.6503   -1.6694
        0.0123   -0.2624   -2.2928   -1.0965
       -0.1386    1.2747    0.4085    0.5395
       -0.1755    1.5641   -3.1896   -1.1336
        0.4401    0.4942    1.8957   -1.1617
          ⋮
    
    
    Mdl.LayerBiases{1}
    ans = 30×1
    
       -1.3086
       -1.6205
       -0.7815
        1.5382
       -0.5256
        1.2394
       -2.3078
       -1.0709
       -1.8898
        1.9443
          ⋮
    
    

    最終全結合層の出力は 1 つです。層の出力の数は、層の重みと層のバイアスの最初の次元に対応します。

    size(Mdl.LayerWeights{end})
    ans = 1×2
    
         1    10
    
    
    size(Mdl.LayerBiases{end})
    ans = 1×2
    
         1     1
    
    

    学習させたモデルの性能を推定するには、Mdl の検定セットの平均二乗誤差 (MSE) を計算します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。

    testMSE = loss(Mdl,XTest,YTest)
    testMSE = 17.2022
    

    検定セットの予測応答値と実際の応答値を比較します。予測されるガロンあたりの走行マイル数 (MPG) を縦軸に、実際の MPG を横軸にしてプロットします。基準線上にある点は予測が正しいことを示します。優れたモデルでは、生成された予測が線の近くに分布します。

    testPredictions = predict(Mdl,XTest);
    plot(YTest,testPredictions,".")
    hold on
    plot(YTest,YTest)
    hold off
    xlabel("True MPG")
    ylabel("Predicted MPG")

    R2021a で導入