RegressionNeuralNetwork

Модель нейронной сети для регрессии

    Описание

    RegressionNeuralNetwork объект является обученным, feedforward и полностью соединенной нейронной сетью для регрессии. Первый полносвязный слой нейронной сети имеет связь от сетевого входа (данные о предикторе X), и каждый последующий слой имеет связь от предыдущего слоя. Каждый полносвязный слой умножает вход на матрицу веса (LayerWeights) и затем добавляет вектор смещения (LayerBiases). Функция активации следует за каждым полносвязным слоем, исключая последнее (Activations и OutputLayerActivation). Итоговый полносвязный слой производит выход сети, а именно, предсказанные значения отклика. Для получения дополнительной информации смотрите Структуру Нейронной сети.

    Создание

    Создайте RegressionNeuralNetwork объект при помощи fitrnet.

    Свойства

    развернуть все

    Свойства нейронной сети

    Это свойство доступно только для чтения.

    Размеры полносвязных слоев в модели нейронной сети, возвращенной как положительный целочисленный вектор. i th элемент LayerSizes количество выходных параметров в i th полносвязный слой модели нейронной сети.

    LayerSizes не включает размер итогового полносвязного слоя. Этот слой всегда имеет тот выход.

    Типы данных: single | double

    Это свойство доступно только для чтения.

    Изученные веса слоя для полносвязных слоев, возвращенных как массив ячеек. i th запись в массиве ячеек соответствует весам слоя для i th полносвязный слой. Например, Mdl.LayerWeights{1} возвращает веса для первого полносвязного слоя модели Mdl.

    LayerWeights включает веса для итогового полносвязного слоя.

    Типы данных: cell

    Это свойство доступно только для чтения.

    Изученный слой смещает для полносвязных слоев, возвращенных как массив ячеек. i th запись в массиве ячеек соответствует смещениям слоя для i th полносвязный слой. Например, Mdl.LayerBiases{1} возвращает смещения для первого полносвязного слоя модели Mdl.

    LayerBiases включает смещения для итогового полносвязного слоя.

    Типы данных: cell

    Это свойство доступно только для чтения.

    Активация функционирует для полносвязных слоев модели нейронной сети, возвращенной как вектор символов или массив ячеек из символьных векторов со значениями из этой таблицы.

    ЗначениеОписание
    'relu'

    Исправленный линейный модуль (ReLU), функция — Выполняет пороговую операцию на каждом элементе входа, где любое значение меньше, чем нуль обнуляется, то есть,

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

    'tanh'

    Гиперболическая касательная (tanh) функция — Применяется tanh функционируйте к каждому входному элементу

    'sigmoid'

    Сигмоидальная функция — Выполняет следующую операцию на каждом входном элементе:

    f(x)=11+ex

    'none'

    Тождественное отображение — Возвращает каждый входной элемент, не выполняя преобразования, то есть, f (x) = x

    • Если Activations содержит только одну функцию активации, затем это - функция активации для каждого полносвязного слоя модели нейронной сети, исключая итоговый полносвязный слой, который не имеет функции активации (OutputLayerActivation).

    • Если Activations массив функций активации, затем i th элемент является функцией активации для i th слой модели нейронной сети.

    Типы данных: char | cell

    Это свойство доступно только для чтения.

    Функция активации для итогового полносвязного слоя, возвращенного как 'none'.

    Это свойство доступно только для чтения.

    Значения параметров раньше обучали RegressionNeuralNetwork модель, возвращенная как NeuralNetworkParams объект. ModelParameters содержит значения параметров, такие как аргументы name-value, используемые, чтобы обучить модель нейронной сети регрессии.

    Доступ к свойствам ModelParameters при помощи записи через точку. Например, получите доступ к функции, используемой, чтобы инициализировать веса полносвязного слоя модели Mdl при помощи Mdl.ModelParameters.LayerWeightsInitializer.

    Свойства элементов управления сходимости

    Это свойство доступно только для чтения.

    Информация о сходимости, возвращенная как массив структур.

    Поле Описание
    IterationsКоличество учебных итераций раньше обучало модель нейронной сети
    TrainingLossУчебная среднеквадратическая ошибка (MSE) для возвращенной модели или resubLoss(Mdl) для модели Mdl
    GradientГрадиент функции потерь относительно весов и смещений в итерации, соответствующей возвращенной модели
    StepРазмер шага в итерации, соответствующей возвращенной модели
    TimeОбщее время проведено через все итерации (в секундах)
    ValidationLossВалидация MSE для возвращенной модели
    ValidationChecksМаксимальное количество времен подряд, которых потеря валидации была больше или была равна минимальной потере валидации
    ConvergenceCriterionКритерий сходимости
    HistoryСмотрите TrainingHistory

    Типы данных: struct

    Это свойство доступно только для чтения.

    Учебная история, возвращенная как таблица.

    СтолбецОписание
    IterationУчебная итерация
    TrainingLossУчебная среднеквадратическая ошибка (MSE) для модели в этой итерации
    GradientГрадиент функции потерь относительно весов и смещений в этой итерации
    StepРазмер шага в этой итерации
    TimeВремя проведено во время этой итерации (в секундах)
    ValidationLossВалидация MSE для модели в этой итерации
    ValidationChecksРабочее общее количество времен, которых потеря валидации больше или равна минимальной потере валидации

    Типы данных: table

    Это свойство доступно только для чтения.

    Решатель, используемый, чтобы обучить модель нейронной сети, возвратился как 'LBFGS'. Создать RegressionNeuralNetwork модель, fitrnet использует ограниченную память алгоритм квазиньютона Бройдена Флетчера Голдфарба Шэнно (LBFGS) как его метод минимизации функции потерь, где программное обеспечение минимизирует среднеквадратическую ошибку (MSE).

    Свойства предиктора

    Это свойство доступно только для чтения.

    Имена переменного предиктора, возвращенные как массив ячеек из символьных векторов. Порядок элементов PredictorNames соответствует порядку, в котором имена предиктора появляются в обучающих данных.

    Типы данных: cell

    Это свойство доступно только для чтения.

    Категориальные индексы предиктора, возвращенные как вектор из положительных целых чисел. Предположение, что данные о предикторе содержат наблюдения в строках, CategoricalPredictors содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

    Типы данных: double

    Это свойство доступно только для чтения.

    Расширенные имена предиктора, возвращенные как массив ячеек из символьных векторов. Если кодирование использования модели для категориальных переменных, то ExpandedPredictorNames включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames совпадает с PredictorNames.

    Типы данных: cell

    Это свойство доступно только для чтения.

    Нестандартизированные предикторы, используемые, чтобы обучить модель нейронной сети, возвратились как числовая матрица или таблица. X сохраняет его исходную ориентацию, с наблюдениями в строках или столбцах в зависимости от значения ObservationsIn аргумент значения имени в вызове fitrnet.

    Типы данных: single | double | table

    Свойства ответа

    Это свойство доступно только для чтения.

    Имя переменной отклика, возвращенное как вектор символов.

    Типы данных: char

    Это свойство доступно только для чтения.

    Значения отклика, используемые, чтобы обучить модель, возвратились как числовой вектор. Каждая строка Y представляет значение отклика соответствующего наблюдения в X.

    Типы данных: single | double

    Это свойство доступно только для чтения.

    Функция преобразования ответа, возвращенная как 'none'. Программное обеспечение не преобразовывает необработанные значения отклика.

    Другие свойства данных

    Это свойство доступно только для чтения.

    Оптимизация перекрестной проверки гиперпараметров в виде BayesianOptimization возразите или таблица гиперпараметров и присваиваемых значений. Это свойство непусто если 'OptimizeHyperparameters' аргумент пары "имя-значение" непуст, когда вы создаете модель. Значение HyperparameterOptimizationResults зависит от установки Optimizer поле в HyperparameterOptimizationOptions структура, когда вы создаете модель.

    Значение Optimizer Поле Значение HyperparameterOptimizationResults
    'bayesopt' (значение по умолчанию)Объект класса BayesianOptimization
    'gridsearch' или 'randomsearch'Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому

    Это свойство доступно только для чтения.

    Количество наблюдений в обучающих данных сохранено в X и Y, возвращенный в виде положительного числа.

    Типы данных: double

    Это свойство доступно только для чтения.

    Строки исходных обучающих данных, используемых в том, чтобы подбирать модель, возвращенную как логический вектор. Это свойство пусто, если все строки используются.

    Типы данных: логический

    Это свойство доступно только для чтения.

    Веса наблюдения, используемые, чтобы обучить модель, возвратились как n-by-1 числовой вектор. n является количеством наблюдений (NumObservations).

    Программное обеспечение нормирует веса наблюдения, заданные в Weights аргумент значения имени так, чтобы элементы W суммируйте до 1.

    Типы данных: single | double

    Функции объекта

    развернуть все

    compactУменьшайте размер модели машинного обучения
    crossvalПерекрестный подтвердите модель машинного обучения
    limeЛокальные поддающиеся толкованию объяснения модели агностические (LIME)
    partialDependenceВычислите частичную зависимость
    plotPartialDependenceСоздайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)
    shapleyШепли оценивает
    lossПотеря для нейронной сети регрессии
    predictПредскажите ответы с помощью нейронной сети регрессии
    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")

    Введенный в R2021a