Модель нейронной сети для регрессии
RegressionNeuralNetwork
объект является обученным, feedforward и полностью соединенной нейронной сетью для регрессии. Первый полносвязный слой нейронной сети имеет связь от сетевого входа (данные о предикторе X
), и каждый последующий слой имеет связь от предыдущего слоя. Каждый полносвязный слой умножает вход на матрицу веса (LayerWeights
) и затем добавляет вектор смещения (LayerBiases
). Функция активации следует за каждым полносвязным слоем, исключая последнее (Activations
и OutputLayerActivation
). Итоговый полносвязный слой производит выход сети, а именно, предсказанные значения отклика. Для получения дополнительной информации смотрите Структуру Нейронной сети.
Создайте RegressionNeuralNetwork
объект при помощи fitrnet
.
LayerSizes
— Размеры полносвязных слоевЭто свойство доступно только для чтения.
Размеры полносвязных слоев в модели нейронной сети, возвращенной как положительный целочисленный вектор. i th элемент LayerSizes
количество выходных параметров в i th полносвязный слой модели нейронной сети.
LayerSizes
не включает размер итогового полносвязного слоя. Этот слой всегда имеет тот выход.
Типы данных: single
| double
LayerWeights
— Изученные веса слояЭто свойство доступно только для чтения.
Изученные веса слоя для полносвязных слоев, возвращенных как массив ячеек. i th запись в массиве ячеек соответствует весам слоя для i th полносвязный слой. Например, Mdl.LayerWeights{1}
возвращает веса для первого полносвязного слоя модели Mdl
.
LayerWeights
включает веса для итогового полносвязного слоя.
Типы данных: cell
LayerBiases
— Изученные смещения слояЭто свойство доступно только для чтения.
Изученный слой смещает для полносвязных слоев, возвращенных как массив ячеек. i th запись в массиве ячеек соответствует смещениям слоя для i th полносвязный слой. Например, Mdl.LayerBiases{1}
возвращает смещения для первого полносвязного слоя модели Mdl
.
LayerBiases
включает смещения для итогового полносвязного слоя.
Типы данных: cell
Activations
— Активация функционирует для полносвязных слоев'relu'
| 'tanh'
| 'sigmoid'
| 'none'
| массив ячеек из символьных векторовЭто свойство доступно только для чтения.
Активация функционирует для полносвязных слоев модели нейронной сети, возвращенной как вектор символов или массив ячеек из символьных векторов со значениями из этой таблицы.
Значение | Описание |
---|---|
'relu' | Исправленный линейный модуль (ReLU), функция — Выполняет пороговую операцию на каждом элементе входа, где любое значение меньше, чем нуль обнуляется, то есть, |
'tanh' | Гиперболическая касательная (tanh) функция — Применяется |
'sigmoid' | Сигмоидальная функция — Выполняет следующую операцию на каждом входном элементе: |
'none' | Тождественное отображение — Возвращает каждый входной элемент, не выполняя преобразования, то есть, f (x) = x |
Если Activations
содержит только одну функцию активации, затем это - функция активации для каждого полносвязного слоя модели нейронной сети, исключая итоговый полносвязный слой, который не имеет функции активации (OutputLayerActivation
).
Если Activations
массив функций активации, затем i th элемент является функцией активации для i th слой модели нейронной сети.
Типы данных: char |
cell
OutputLayerActivation
— Функция активации для итогового полносвязного слоя'none'
Это свойство доступно только для чтения.
Функция активации для итогового полносвязного слоя, возвращенного как 'none'
.
ModelParameters
— Значения параметров раньше обучали модельNeuralNetworkParams
объектЭто свойство доступно только для чтения.
Значения параметров раньше обучали RegressionNeuralNetwork
модель, возвращенная как NeuralNetworkParams
объект. ModelParameters
содержит значения параметров, такие как аргументы name-value, используемые, чтобы обучить модель нейронной сети регрессии.
Доступ к свойствам ModelParameters
при помощи записи через точку. Например, получите доступ к функции, используемой, чтобы инициализировать веса полносвязного слоя модели Mdl
при помощи Mdl.ModelParameters.LayerWeightsInitializer
.
ConvergenceInfo
— Информация о сходимостиЭто свойство доступно только для чтения.
Информация о сходимости, возвращенная как массив структур.
Поле | Описание |
---|---|
Iterations | Количество учебных итераций раньше обучало модель нейронной сети |
TrainingLoss | Учебная среднеквадратическая ошибка (MSE) для возвращенной модели или resubLoss(Mdl) для модели Mdl |
Gradient | Градиент функции потерь относительно весов и смещений в итерации, соответствующей возвращенной модели |
Step | Размер шага в итерации, соответствующей возвращенной модели |
Time | Общее время проведено через все итерации (в секундах) |
ValidationLoss | Валидация MSE для возвращенной модели |
ValidationChecks | Максимальное количество времен подряд, которых потеря валидации была больше или была равна минимальной потере валидации |
ConvergenceCriterion | Критерий сходимости |
History | Смотрите TrainingHistory |
Типы данных: struct
TrainingHistory
— Учебная историяЭто свойство доступно только для чтения.
Учебная история, возвращенная как таблица.
Столбец | Описание |
---|---|
Iteration | Учебная итерация |
TrainingLoss | Учебная среднеквадратическая ошибка (MSE) для модели в этой итерации |
Gradient | Градиент функции потерь относительно весов и смещений в этой итерации |
Step | Размер шага в этой итерации |
Time | Время проведено во время этой итерации (в секундах) |
ValidationLoss | Валидация MSE для модели в этой итерации |
ValidationChecks | Рабочее общее количество времен, которых потеря валидации больше или равна минимальной потере валидации |
Типы данных: table
Solver
— Решатель раньше обучал модель нейронной сети'LBFGS'
Это свойство доступно только для чтения.
Решатель, используемый, чтобы обучить модель нейронной сети, возвратился как 'LBFGS'
. Создать RegressionNeuralNetwork
модель, fitrnet
использует ограниченную память алгоритм квазиньютона Бройдена Флетчера Голдфарба Шэнно (LBFGS) как его метод минимизации функции потерь, где программное обеспечение минимизирует среднеквадратическую ошибку (MSE).
PredictorNames
— Имена переменного предиктораЭто свойство доступно только для чтения.
Имена переменного предиктора, возвращенные как массив ячеек из символьных векторов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предиктора появляются в обучающих данных.
Типы данных: cell
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора, возвращенные как вектор из положительных целых чисел. Предположение, что данные о предикторе содержат наблюдения в строках, CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: double
ExpandedPredictorNames
— Расширенные имена предиктораЭто свойство доступно только для чтения.
Расширенные имена предиктора, возвращенные как массив ячеек из символьных векторов. Если кодирование использования модели для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames
совпадает с PredictorNames
.
Типы данных: cell
X
— Нестандартизированные предикторыЭто свойство доступно только для чтения.
Нестандартизированные предикторы, используемые, чтобы обучить модель нейронной сети, возвратились как числовая матрица или таблица. X
сохраняет его исходную ориентацию, с наблюдениями в строках или столбцах в зависимости от значения ObservationsIn
аргумент значения имени в вызове fitrnet
.
Типы данных: single
| double
| table
ResponseName
— Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика, возвращенное как вектор символов.
Типы данных: char
Y
— Значения откликаЭто свойство доступно только для чтения.
Значения отклика, используемые, чтобы обучить модель, возвратились как числовой вектор. Каждая строка Y
представляет значение отклика соответствующего наблюдения в X
.
Типы данных: single
| double
ResponseTransform
— Функция преобразования ответа'none'
Это свойство доступно только для чтения.
Функция преобразования ответа, возвращенная как 'none'
. Программное обеспечение не преобразовывает необработанные значения отклика.
HyperparameterOptimizationResults
— Оптимизация перекрестной проверки гиперпараметровBayesianOptimization
возразите | таблицаЭто свойство доступно только для чтения.
Оптимизация перекрестной проверки гиперпараметров в виде BayesianOptimization
возразите или таблица гиперпараметров и присваиваемых значений. Это свойство непусто если 'OptimizeHyperparameters'
аргумент пары "имя-значение" непуст, когда вы создаете модель. Значение HyperparameterOptimizationResults
зависит от установки Optimizer
поле в HyperparameterOptimizationOptions
структура, когда вы создаете модель.
Значение Optimizer Поле | Значение HyperparameterOptimizationResults |
---|---|
'bayesopt' (значение по умолчанию) | Объект класса BayesianOptimization |
'gridsearch' или 'randomsearch' | Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому |
NumObservations
— Количество наблюденийЭто свойство доступно только для чтения.
Количество наблюдений в обучающих данных сохранено в X
и Y
, возвращенный в виде положительного числа.
Типы данных: double
RowsUsed
— Строки используются в подборе кривой[]
| логический векторЭто свойство доступно только для чтения.
Строки исходных обучающих данных, используемых в том, чтобы подбирать модель, возвращенную как логический вектор. Это свойство пусто, если все строки используются.
Типы данных: логический
W
— Веса наблюденияЭто свойство доступно только для чтения.
Веса наблюдения, используемые, чтобы обучить модель, возвратились как n-by-1 числовой вектор. n является количеством наблюдений (NumObservations
).
Программное обеспечение нормирует веса наблюдения, заданные в Weights
аргумент значения имени так, чтобы элементы W
суммируйте до 1.
Типы данных: single
| double
CompactRegressionNeuralNetwork
compact | Уменьшайте размер модели машинного обучения |
RegressionPartitionedModel
crossval | Перекрестный подтвердите модель машинного обучения |
lime | Локальные поддающиеся толкованию объяснения модели агностические (LIME) |
partialDependence | Вычислите частичную зависимость |
plotPartialDependence | Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP) |
shapley | Шепли оценивает |
resubLoss | Потеря регрессии перезамены |
resubPredict | Предскажите ответы для обучающих данных с помощью обученной модели регрессии |
Обучите модель регрессии нейронной сети и оцените эффективность модели на наборе тестов.
Загрузите carbig
набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х. Составьте таблицу, содержащую переменные предикторы Acceleration
, Displacement
, и так далее, а также переменная отклика MPG
.
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-х. Создайте матричный X
содержа переменные предикторы Acceleration
, Cylinders
, и так далее. Сохраните переменную отклика 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 выходных параметров в первом полносвязном слое и 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
Доступ к весам и смещениям для полносвязных слоев обученной модели при помощи LayerWeights
и LayerBiases
свойства Mdl
. Первые два элемента каждого свойства соответствуют значениям для первых двух полносвязных слоев, и третий элемент соответствует значениям для итогового полносвязного слоя для регрессии. Например, отобразите веса и смещения для первого полносвязного слоя.
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
⋮
Итоговый полносвязный слой имеет тот выход. Количество слоя выходные параметры соответствует первой размерности весов слоя и смещений слоя.
size(Mdl.LayerWeights{end})
ans = 1×2
1 10
size(Mdl.LayerBiases{end})
ans = 1×2
1 1
Чтобы оценить эффективность обученной модели, вычислите среднеквадратическую ошибку (MSE) набора тестов для Mdl
. Меньшие значения 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")
fitrnet
| predict
| loss
| RegressionPartitionedModel
| CompactRegressionNeuralNetwork
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.