exponenta event banner

RegressionNeuralNetwork

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

    Описание

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

    Создание

    Создать RegressionNeuralNetwork объект с помощью fitrnet.

    Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    СтоимостьОписание
    'relu'

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

    f (x) ={x,x≥00,x<0

    'tanh'

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

    'sigmoid'

    Sigmoid function - выполняет следующую операцию над каждым входным элементом:

    f (x) = 11 + e − x

    'none'

    Функция Identity - возвращает каждый входной элемент без какого-либо преобразования, то есть f (x) = x

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

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

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

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

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

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

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

    Доступ к свойствам 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'. Программное обеспечение не преобразует необработанные значения ответа.

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

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

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

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

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

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

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

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

    Веса наблюдений, используемые для обучения модели, возвращаемые в виде 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")

    Представлен в R2021a