RegressionNeuralNetwork
説明
RegressionNeuralNetwork
オブジェクトは、全結合のフィードフォワード ネットワークなどの回帰用学習済みニューラル ネットワークです。全結合のフィードフォワード ネットワークでは、最初の全結合層にネットワーク入力 (予測子データ X
) からの結合があり、後続の各層に前の層からの結合があります。各全結合層では、入力に重み行列 (LayerWeights
) が乗算されてからバイアス ベクトル (LayerBiases
) が加算されます。最終層を除く各全結合層の後には活性化関数 (Activations
および OutputLayerActivation
) が続きます。最終全結合層によってネットワークの出力、つまり予測応答値が生成されます。詳細については、ニューラル ネットワークの構造を参照してください。
作成
RegressionNeuralNetwork
オブジェクトの作成には fitrnet
を使用します。
プロパティ
ニューラル ネットワークのプロパティ
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデルの全結合層のサイズ。
プロパティの値は、モデルの当てはめに使用した方法によって異なります。
ニューラル ネットワーク アーキテクチャを指定する
dlnetwork
または層配列を使用して当てはめたモデルの場合、このプロパティは空になります。この場合、モデルのニューラル ネットワーク アーキテクチャを調べるには、dlnetwork
(Deep Learning Toolbox) 関数を使用してモデルをdlnetwork
オブジェクトに変換します。それ以外の場合、プロパティは正の整数ベクトルになります。
LayerSizes
の i 番目の要素がニューラル ネットワーク モデルの i 番目の全結合層の出力数です。この場合、LayerSizes
には最終全結合層のサイズは含まれません。この層の出力は常に応答変数ごとに 1 つです。
データ型: single
| double
この プロパティ は読み取り専用です。
全結合層の学習済みの層の重み。
プロパティの値は、モデルの当てはめに使用した方法によって異なります。
ニューラル ネットワーク アーキテクチャを指定する
dlnetwork
または層配列を使用して当てはめたモデルの場合、このプロパティは空になります。この場合、モデルの学習可能なパラメーターを調べるには、dlnetwork
(Deep Learning Toolbox) 関数を使用してモデルをdlnetwork
オブジェクトに変換します。それ以外の場合、プロパティは cell 配列になります。cell 配列のエントリ i が全結合層 i の層の重みに対応します。たとえば、
Mdl.LayerWeights{1}
は、モデルMdl
の最初の全結合層についての重みを返します。この場合、LayerWeights
には最終全結合層の重みが含まれます。
データ型: cell
この プロパティ は読み取り専用です。
全結合層の学習済みの層のバイアス。
プロパティの値は、モデルの当てはめに使用した方法によって異なります。
ニューラル ネットワーク アーキテクチャを指定する
dlnetwork
または層配列を使用して当てはめたモデルの場合、このプロパティは空になります。この場合、モデルの学習可能なパラメーターを調べるには、dlnetwork
(Deep Learning Toolbox) 関数を使用してモデルをdlnetwork
オブジェクトに変換します。それ以外の場合、プロパティは cell 配列になります。cell 配列のエントリ i が全結合層 i の層のバイアスに対応します。たとえば、
Mdl.LayerBiases{1}
は、モデルMdl
の最初の全結合層についてのバイアスを返します。この場合、LayerBiases
には最終全結合層のバイアスが含まれます。
データ型: cell
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデルの全結合層の活性化関数。
プロパティの値は、モデルの当てはめに使用した方法によって異なります。
ニューラル ネットワーク アーキテクチャを指定する
dlnetwork
または層配列を使用して当てはめたモデルの場合、このプロパティは空になります。この場合、モデルのニューラル ネットワーク アーキテクチャを調べるには、dlnetwork
(Deep Learning Toolbox) 関数を使用してモデルをdlnetwork
オブジェクトに変換します。それ以外の場合、プロパティは文字ベクトルまたは文字ベクトルの cell 配列になります。
Activations
に活性化関数が 1 つだけ含まれている場合は、ニューラル ネットワーク モデルの最終全結合層を除くすべての全結合層の活性化関数になります。最終全結合層には活性化関数はありません (OutputLayerActivation
)。Activations
が活性化関数の配列の場合は、i 番目の要素がニューラル ネットワーク モデルの i 番目の層の活性化関数になります。
Activations
が文字ベクトルまたは文字ベクトルの cell 配列の場合、値は次の表のようになります。
値 | 説明 |
---|---|
"relu" | 正規化線形ユニット (ReLU) 関数 — 各入力要素に対して、0 より小さい値については 0 に設定するという次のしきい値演算を実行します。 |
"tanh" | 双曲線正接 (tanh) 関数 — 各入力要素に関数 |
"sigmoid" | シグモイド関数 — 各入力要素に対して次の演算を実行します。 |
"none" | 恒等関数 — 変換を実行せずに、各入力要素を次のようにそのまま返します。f(x) = x |
データ型: char
| cell
この プロパティ は読み取り専用です。
最終全結合層の活性化関数。
プロパティの値は、モデルの当てはめに使用した方法によって異なります。
ニューラル ネットワーク アーキテクチャを指定する
dlnetwork
または層配列を使用して当てはめたモデルの場合、このプロパティは空になります。この場合、モデルのニューラル ネットワーク アーキテクチャを調べるには、dlnetwork
(Deep Learning Toolbox) 関数を使用してモデルをdlnetwork
オブジェクトに変換します。それ以外の場合、プロパティは
'none'
になります。
この プロパティ は読み取り専用です。
RegressionNeuralNetwork
モデルの学習に使用されたパラメーター値。NeuralNetworkParams
オブジェクトとして返されます。ModelParameters
には、回帰ニューラル ネットワーク モデルの学習に使用された名前と値の引数などのパラメーター値が格納されます。
ModelParameters
のプロパティにアクセスするには、ドット表記を使用します。たとえば、モデル Mdl
の全結合層の重みの初期化に使用する関数にアクセスするには Mdl.ModelParameters.LayerWeightsInitializer
を使用します。
収束制御のプロパティ
この プロパティ は読み取り専用です。
収束情報。構造体配列として返されます。
構造体のフィールドは次のとおりです。
フィールド | 説明 |
---|---|
Iterations | ニューラル ネットワーク モデルの学習に使用された学習反復の数 |
TrainingLoss | 返されたモデルの学習平均二乗誤差 (MSE) (モデル Mdl の resubLoss(Mdl) ) |
Gradient | 返されたモデルに対応する反復における重みとバイアスに関する損失関数の勾配 |
Step | 返されたモデルに対応する反復におけるステップ サイズ |
Time | すべての反復に費やした合計時間 (秒) |
ValidationLoss | 返されたモデルの検証 MSE |
ValidationChecks | 検証損失が連続で検証損失の最小値以上になった最大回数 |
ConvergenceCriterion | 収束の基準 |
History | TrainingHistory を参照 |
ニューラル ネットワーク アーキテクチャを指定する dlnetwork
または層配列を使用して当てはめたモデルの場合、ValidationChecks
の値は常に NaN
になります。
データ型: struct
この プロパティ は読み取り専用です。
学習履歴。table として返されます。
列 | 説明 |
---|---|
Iteration | 学習反復 |
TrainingLoss | この反復におけるモデルの学習平均二乗誤差 (MSE) |
Gradient | この反復における重みとバイアスに関する損失関数の勾配 |
Step | この反復におけるステップ サイズ |
Time | この反復に費やした時間 (秒) |
ValidationLoss | この反復におけるモデルの検証 MSE |
ValidationChecks | 検証損失が連続で検証損失の最小値以上になっている現在までの回数 |
ニューラル ネットワーク アーキテクチャを指定する dlnetwork
または層配列を使用して当てはめたモデルの場合、table に Time
と ValidationChecks
の列は含まれません。
データ型: table
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデルの学習に使用されたソルバー。'LBFGS'
として返されます。fitrnet
による RegressionNeuralNetwork
モデルの作成では、メモリ制限 Broyden-Fletcher-Goldfarb-Shanno 準ニュートン アルゴリズム (LBFGS) が損失関数の最小化手法として使用され、平均二乗誤差 (MSE) が最小化されます。
予測子のプロパティ
この プロパティ は読み取り専用です。
予測子変数名。文字ベクトルの cell 配列として返されます。PredictorNames
の要素の順序は、予測子名が学習データに現れる順序に対応します。
データ型: cell
この プロパティ は読み取り専用です。
カテゴリカル予測子のインデックス。正の整数のベクトルとして返されます。予測子データの行に観測値が含まれていると仮定すると、CategoricalPredictors
には、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値が格納されます。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]
) になります。
データ型: double
この プロパティ は読み取り専用です。
展開された予測子名。文字ベクトルの cell 配列として返されます。モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames
には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNames
は PredictorNames
と同じです。
データ型: cell
R2023b 以降
この プロパティ は読み取り専用です。
予測子の平均。数値ベクトルとして返されます。ニューラル ネットワーク モデルに学習させるときに Standardize
を 1
または true
に設定した場合、ベクトル Mu
の長さは展開された予測子の数と等しくなります (ExpandedPredictorNames
を参照)。展開されたカテゴリカル予測子に対応するダミー変数については、ベクトルに値 0
が格納されます。
ニューラル ネットワーク モデルに学習させるときに Standardize
を 0
または false
に設定した場合、Mu
の値は空ベクトル ([]
) になります。
データ型: double
R2023b 以降
この プロパティ は読み取り専用です。
予測子の標準偏差。数値ベクトルとして返されます。ニューラル ネットワーク モデルに学習させるときに Standardize
を 1
または true
に設定した場合、ベクトル Sigma
の長さは展開された予測子の数と等しくなります (ExpandedPredictorNames
を参照)。展開されたカテゴリカル予測子に対応するダミー変数については、ベクトルに値 1
が格納されます。
ニューラル ネットワーク モデルに学習させるときに Standardize
を 0
または false
に設定した場合、Sigma
の値は空ベクトル ([]
) になります。
データ型: double
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデルの学習に使用された標準化されていない予測子。数値行列または table として返されます。X
では、fitrnet
を呼び出したときの名前と値の引数 ObservationsIn
の値に応じて、元の向きで行または列に観測値が格納されます。
データ型: single
| double
| table
応答のプロパティ
この プロパティ は読み取り専用です。
応答変数の名前。文字ベクトルまたは文字ベクトルの cell 配列として返されます。
データ型: char
| cell
この プロパティ は読み取り専用です。
モデルの学習に使用される応答データ。数値のベクトル、行列、または table として返されます。Y
の各行は、X
の対応する観測値の応答値を表します。
データ型: single
| double
応答変換関数。'none'
または関数ハンドルを指定します。ResponseTransform
は、生の応答値を変換する方法を表します。
MATLAB® 関数やユーザー定義関数の場合は、関数ハンドルを入力します。たとえば、Mdl.ResponseTransform = @function
を入力できます。ここで function
は、元の応答値を受け入れ、変換した応答が格納されている同じサイズの出力を返します。
データ型: char
| function_handle
その他のデータのプロパティ
この プロパティ は読み取り専用です。
ハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれている table または BayesianOptimization
オブジェクトを指定します。モデルを作成するときに名前と値のペアの引数 'OptimizeHyperparameters'
が空以外であった場合、このプロパティは空以外になります。HyperparameterOptimizationResults
の値は、モデル作成時の構造体 HyperparameterOptimizationOptions
の Optimizer
フィールドの設定によって変化します。
Optimizer オプションの値 | HyperparameterOptimizationResults の値 |
---|---|
"bayesopt" (既定の設定) | BayesianOptimization クラスのオブジェクト |
"gridsearch" または "randomsearch" | 使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されている table |
この プロパティ は読み取り専用です。
X
および Y
に格納されている学習データ内の観測値の個数。正の数値スカラーとして返されます。
データ型: double
この プロパティ は読み取り専用です。
モデルに格納されている元の学習データの観測値。logical ベクトルとして返されます。このプロパティは、X
と Y
にすべての観測値が格納される場合は空になります。
データ型: logical
この プロパティ は読み取り専用です。
モデルの学習に使用された観測値の重み。n 行 1 列の数値ベクトルとして返されます。n は観測値の個数 (NumObservations
) です。
W
の要素の合計が 1 になるように、名前と値の引数 Weights
で指定された観測値の重みが正規化されます。
データ型: single
| double
オブジェクト関数
compact | 機械学習モデルのサイズの縮小 |
crossval | 機械学習モデルの交差検証 |
dlnetwork (Deep Learning Toolbox) | 深層学習ニューラル ネットワーク |
lime | Local Interpretable Model-agnostic Explanations (LIME) |
partialDependence | 部分依存の計算 |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
shapley | シャープレイ値 |
resubLoss | 再代入回帰損失 |
resubPredict | 学習済み回帰モデルを使用した学習データについての応答の予測 |
gather | Gather properties of Statistics and Machine Learning Toolbox object from GPU |
例
ニューラル ネットワーク回帰モデルに学習させ、テスト セットでモデルの性能を評価します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。Acceleration
、Displacement
などの予測子変数と応答変数 MPG
が格納された table を作成します。
load carbig cars = table(Acceleration,Displacement,Horsepower, ... Model_Year,Origin,Weight,MPG);
cars
から table に欠損値がある行を削除します。
cars = rmmissing(cars);
米国製かどうかに基づいて、自動車を分類します。
cars.Origin = categorical(cellstr(cars.Origin)); cars.Origin = mergecats(cars.Origin,["France","Japan",... "Germany","Sweden","Italy","England"],"NotUSA");
データを学習セットとテスト セットに分割します。観測値の約 80% をニューラル ネットワーク モデルの学習に使用し、観測値の約 20% を学習済みモデルの新しいデータでの性能のテストに使用します。cvpartition
を使用してデータを分割します。
rng("default") % For reproducibility of the data partition c = cvpartition(height(cars),"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: 'none' Solver: 'LBFGS' ConvergenceInfo: [1×1 struct] TrainingHistory: [708×7 table] Properties, Methods
Mdl
は学習させた RegressionNeuralNetwork
モデルです。ドット表記を使用して Mdl
のプロパティにアクセスできます。たとえば、Mdl.TrainingHistory
と指定すると、ニューラル ネットワーク モデルの学習履歴についての詳細情報を取得できます。
検定の平均二乗誤差 (MSE) を計算して、テスト セットで回帰モデルの性能を評価します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
testMSE = loss(Mdl,carsTest,"MPG")
testMSE = 7.1092
Deep Learning Toolbox™ を使用してカスタムのニューラル ネットワーク アーキテクチャを指定します。
全結合層が直列に接続されたニューラル ネットワークを指定するには、LayerSizes
引数などの引数を使用してニューラル ネットワーク アーキテクチャを構成します。さらに複雑なアーキテクチャをもつニューラル ネットワーク (スキップ接続をもつニューラル ネットワークなど) の場合は、名前と値の引数 Network
で dlnetwork
オブジェクトを使用してアーキテクチャを指定できます。
carbig
データ セットを読み込みます。
load carbig
X = [Acceleration Cylinders Displacement Weight];
Y = MPG;
いずれかの配列に欠損値があるデータの行を削除します。
R = rmmissing([X Y]); X = R(:,1:end-1); Y = R(:,end);
データを学習データ (XTrain
および YTrain
) とテスト データ (XTest
および YTest
) に分割します。観測値の約 20% を検定用に予約し、残りの観測値を学習に使用します。
rng("default") % For reproducibility of the partition c = cvpartition(length(Y),Holdout=0.2); 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);
次の特性をもつニューラル ネットワーク アーキテクチャを定義します。
予測子の数と一致する入力サイズをもつ特徴入力層。
3 つの全結合層とそれに続く ReLU 層が直列に接続され、全結合層の出力サイズは 12、2 番目と 3 番目の全結合層の後には加算層がある。
2 番目と 3 番目の全結合層についてのスキップ接続。加算層を使用。
応答の数と一致する出力サイズをもつ最終全結合層。
inputSize = size(XTrain,2); outputSize = size(YTrain,2); net = dlnetwork; layers = [ featureInputLayer(inputSize) fullyConnectedLayer(12) reluLayer(Name="relu1") fullyConnectedLayer(12) additionLayer(2,Name="add2") reluLayer(Name="relu2") fullyConnectedLayer(12) additionLayer(2,Name="add3") reluLayer fullyConnectedLayer(outputSize)]; net = addLayers(net,layers); net = connectLayers(net,"relu1","add2/in2"); net = connectLayers(net,"relu2","add3/in2");
ニューラル ネットワーク アーキテクチャをプロットで可視化します。
figure plot(net)
ニューラル ネットワーク回帰モデルに学習させます。
Mdl = fitrnet(XTrain,YTrain,Network=net,Standardize=true)
Mdl = RegressionNeuralNetwork ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 319 LayerSizes: [] Activations: '' OutputLayerActivation: '' Solver: 'LBFGS' ConvergenceInfo: [1×1 struct] TrainingHistory: [1000×5 table] View network information using dlnetwork. Properties, Methods
検定の平均二乗誤差 (MSE) を計算して、テスト セットで回帰モデルの性能を評価します。値が小さいほど、予測精度が高いことを示します。
testMSE = loss(Mdl,XTest,YTest)
testMSE = 14.3926
拡張機能
使用上の注意および制限:
次のオブジェクト関数は GPU 配列を完全にサポートしています。
次の少なくとも 1 つに該当する場合、オブジェクト関数は GPU で実行されます。
モデルが GPU 配列を使用して当てはめられている。
オブジェクト関数に渡す予測子データが GPU 配列である。
オブジェクト関数に渡す応答データが GPU 配列である。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2021a で導入R2023b 以降では、予測子に欠損値がある学習観測値が X
、Y
、および W
のデータ プロパティに含まれます。RowsUsed
プロパティは、学習に使用された観測値ではなく、モデルに格納されている学習観測値を示します。予測子に欠損値がある観測値は、モデルの学習プロセスでは引き続き省略されます。
以前のリリースでは、予測子に欠損値がある学習観測値はモデルのデータ プロパティで省略されていました。
ニューラル ネットワーク モデルに含まれる Mu
プロパティと Sigma
プロパティに、学習前の予測子の標準化に使用される平均と標準偏差がそれぞれ格納されます。これらのプロパティは、近似関数で標準化が一切実行されない場合は空になります。
参考
fitrnet
| predict
| loss
| RegressionPartitionedNeuralNetwork
| CompactRegressionNeuralNetwork
| dlnetwork
(Deep Learning Toolbox)
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)