Модель нейронной сети для регрессии
A RegressionNeuralNetwork
объект является обученной, feedforward и полностью связанной нейронной сетью для регрессии. Первый полностью соединенный слой нейронной сети имеет соединение с сетевого входа (данные предиктора X
), и каждый последующий слой имеет соединение с предыдущего слоя. Каждый полносвязный слой умножает вход на весовую матрицу (LayerWeights
) и затем добавляет вектор смещения (LayerBiases
). Функция активации следует за каждым полносвязным слоем, исключая последний (Activations
и OutputLayerActivation
). Конечный полностью соединенный слой создает выход сети, а именно предсказанные значения отклика. Для получения дополнительной информации см. «Нейронные Структуры сети».
Создайте RegressionNeuralNetwork
объект при помощи fitrnet
.
LayerSizes
- Размеры полносвязных слоевЭто свойство доступно только для чтения.
Размеры полносвязных слоев в модели нейронной сети, возвращенные как положительный целочисленный вектор. i-й элемент LayerSizes
- количество выходов в i-м полностью соединенном слое модели нейронной сети.
LayerSizes
не включает размер конечного полносвязного слоя. Этот слой всегда имеет один выход.
Типы данных: single
| double
LayerWeights
- Выученные веса слоевЭто свойство доступно только для чтения.
Обученные веса слоев для полносвязных слоев, возвращенные как массив ячеек. i-я запись в массиве ячеек соответствует весам слоев для i-го полносвязного слоя. Для примера, Mdl.LayerWeights{1}
возвращает веса для первого полносвязного слоя модели Mdl
.
LayerWeights
включает веса для конечного полносвязного слоя.
Типы данных: cell
LayerBiases
- Выученные смещения слояЭто свойство доступно только для чтения.
Выученные смещения слоя для полносвязных слоев, возвращенные как массив ячеек. i-я запись в массиве ячеек соответствует смещениям слоя для i-го полносвязного слоя. Для примера, Mdl.LayerBiases{1}
возвращает смещения для первого полносвязного слоя модели Mdl
.
LayerBiases
включает смещения для конечного полносвязного слоя.
Типы данных: cell
Activations
- Функции активации для полносвязных слоев'relu'
| 'tanh'
| 'sigmoid'
| 'none'
| массивов ячеек из векторов символовЭто свойство доступно только для чтения.
Функции активации для полносвязных слоев модели нейронной сети, возвращенные как вектор символов или массив ячеек из векторов символов со значениями из этой таблицы.
Значение | Описание |
---|---|
'relu' | Функция выпрямленного линейного модуля (ReLU) - выполняет операцию порога для каждого элемента входа, где любое значение, меньше нуля, устанавливается в ноль, то есть, |
'tanh' | Функция гиперболического тангенса (tanh) - применяет |
'sigmoid' | Сигмоидная функция - Выполняет следующую операцию на каждом входном элементе: |
'none' | Единичная функция - Возвращает каждый входной элемент, не выполняя никакого преобразования, то есть f (x) = x |
Если Activations
содержит только одну функцию активации, тогда это функция активации для каждого полносвязного слоя модели нейронной сети, исключая конечный полносвязный слой, который не имеет функции активации (OutputLayerActivation
).
Если Activations
является массивом функций активации, тогда i-й элемент является функцией активации для i-го слоя модели нейронной сети.
Типы данных: char
| cell
OutputLayerActivation
- Функция активации для конечного полносвязного слоя'none'
Это свойство доступно только для чтения.
Функция активации для конечного полносвязного слоя, возвращенная следующим 'none'
.
ModelParameters
- Значения параметров, используемые для обучения моделиNeuralNetworkParams
объектЭто свойство доступно только для чтения.
Значения параметров, используемые для обучения RegressionNeuralNetwork
модель, возвращенная как NeuralNetworkParams
объект. ModelParameters
содержит значения параметров, такие как аргументы имя-значение, используемые для обучения модели регрессионной нейронной сети.
Доступ к свойствам 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'
. Программное обеспечение не преобразует необработанные значения отклика.
NumObservations
- Количество наблюденийЭто свойство доступно только для чтения.
Количество наблюдений в обучающих данных, хранимых в X
и Y
, возвращенный как положительный числовой скаляр.
Типы данных: double
RowsUsed
- Строки, используемые в подборе кривой[]
| логический векторЭто свойство доступно только для чтения.
Строки исходных обучающих данных, используемых в подборе кривой модели, возвращаются как логический вектор. Это свойство пустое, если используются все строки.
Типы данных: logical
W
- Веса наблюденийЭто свойство доступно только для чтения.
Веса наблюдений, используемые для обучения модели, возвращаются как n-на-1 числовой вектор. n - количество наблюдений (NumObservations
).
Программа нормализует веса наблюдений, указанные в Weights
аргумент имя-значение так, чтобы элементы W
сумма до 1.
Типы данных: single
| double
compact | Уменьшите размер модели машинного обучения |
crossval | Перекрестная валидация модели машинного обучения |
loss | Потеря для регрессионной нейронной сети |
resubLoss | Регрессионная потеря реституции |
resubPredict | Прогнозируйте ответы для обучающих данных, используя обученную регрессионую модель |
partialDependence | Вычисление частичной зависимости |
plotPartialDependence | Создайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE) |
predict | Спрогнозируйте ответы, используя регрессионую нейронную сеть |
Обучите регрессионую модель нейронной сети и оцените эффективность модели на тестовом наборе.
Загрузите 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")
CompactRegressionNeuralNetwork
| fitrnet
| loss
| predict
| RegressionPartitionedModel
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.