Модель нейронной сети для регрессии
A RegressionNeuralNetwork объект является обученной, прямой и полностью связанной нейронной сетью для регрессии. Первый полностью подключенный уровень нейронной сети имеет соединение от сетевого входа (данные предиктора 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) - выполняет пороговую операцию для каждого элемента входа, где любое значение меньше нуля устанавливается равным нулю, то есть ={x,x≥00,x<0 |
'tanh' | Функция гиперболической касательной (tanh) - применяет |
'sigmoid' | Sigmoid function - выполняет следующую операцию над каждым входным элементом: + e − x |
'none' | Функция Identity - возвращает каждый входной элемент без какого-либо преобразования, то есть 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-by-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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.