huber

Утрата Хубера для задач регрессии

    Описание

    Операция Хубера вычисляет утрату Хубера между сетевыми предсказаниями и целевыми значениями для задач регрессии. Когда 'TransitionPoint' опция равняется 1, это также известно как сглаженную потерю L1.

    huber функция вычисляет утрату Хубера с помощью dlarray данные. Используя dlarray объекты делают работу с высокими размерными данными легче, позволяя вам пометить размерности. Например, можно пометить, которому размерности соответствуют пространственный, время, канал, и обрабатывают размерности в пакетном режиме с помощью 'S'TC, и 'B' метки, соответственно. Для незаданных и других размерностей используйте 'U' метка. Для dlarray возразите функциям, которые действуют по конкретным размерностям, можно задать метки размерности путем форматирования dlarray возразите непосредственно, или при помощи 'DataFormat' опция.

    пример

    loss = huber(dlY,targets) возвращает утрату Хубера между отформатированным dlarray объект dlY содержа предсказания и целевые значения targets для задач регрессии. Вход dlY отформатированный dlarray. Выход loss бесформатный dlarray скаляр.

    Для бесформатных входных данных используйте 'DataFormat' опция.

    loss = huber(dlY,targets,weights) применяет веса к расчетным долинам потерь. Используйте этот синтаксис, чтобы взвесить вклады классов, наблюдений или областей входа к расчетным значениям потерь.

    loss = huber(___,'DataFormat',FMT) также задает формат размерности FMT когда dlY не отформатированный dlarray.

    loss = huber(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Например, 'NormalizationFactor','all-elements' задает, чтобы нормировать потерю путем деления уменьшаемого ущерба от количества входных элементов.

    Примеры

    свернуть все

    Создайте массив предсказаний для 12 наблюдений более чем 10 ответов.

    numResponses = 10;
    numObservations = 12;
    
    Y = rand(numResponses,numObservations);
    dlY = dlarray(Y,'CB');

    Просмотрите размер и формат предсказаний.

    size(dlY)
    ans = 1×2
    
        10    12
    
    
    dims(dlY)
    ans = 
    'CB'
    

    Создайте массив случайных целей.

    targets = rand(numResponses,numObservations);

    Просмотрите размер целей.

    size(targets)
    ans = 1×2
    
        10    12
    
    

    Вычислите утрату Хубера между предсказаниями и целями.

    loss = huber(dlY,targets)
    loss = 
      1x1 dlarray
    
        0.7374
    
    

    Создайте массивы предсказаний и целей для 12 последовательностей различных длин более чем 10 ответов.

    numResponses = 10;
    numObservations = 12;
    maxSequenceLength = 15;
    
    sequenceLengths = randi(maxSequenceLength,[1 numObservations]);
    
    Y = cell(numObservations,1);
    targets = cell(numObservations,1);
    
    for i = 1:numObservations
        Y{i} = rand(numResponses,sequenceLengths(i));
        targets{i} = rand(numResponses,sequenceLengths(i));
    end

    Просмотрите массивы ячеек предсказаний и целей

    Y
    Y=12×1 cell array
        {10×13 double}
        {10×14 double}
        {10×2  double}
        {10×14 double}
        {10×10 double}
        {10×2  double}
        {10×5  double}
        {10×9  double}
        {10×15 double}
        {10×15 double}
        {10×3  double}
        {10×15 double}
    
    
    targets
    targets=12×1 cell array
        {10×13 double}
        {10×14 double}
        {10×2  double}
        {10×14 double}
        {10×10 double}
        {10×2  double}
        {10×5  double}
        {10×9  double}
        {10×15 double}
        {10×15 double}
        {10×3  double}
        {10×15 double}
    
    

    Заполните предсказание и предназначайтесь для последовательностей во втором измерении с помощью padsequences функционируйте и также возвратите соответствующую маску.

    [Y,mask] = padsequences(Y,2);
    targets = padsequences(targets,2);

    Преобразуйте заполненные последовательности в dlarray с форматом 'CTB' (канал, время, пакет). Поскольку отформатированный dlarray объекты автоматически сортируют размерности, сохраняют размерности целей и маски сопоставимыми, также преобразовывая их в отформатированный dlarray объекты с теми же форматами.

    dlY = dlarray(Y,'CTB');
    targets = dlarray(targets,'CTB');
    mask = dlarray(mask,'CTB');

    Просмотрите размеры баллов предсказания, целей и маски.

    size(dlY)
    ans = 1×3
    
        10    12    15
    
    
    size(targets)
    ans = 1×3
    
        10    12    15
    
    
    size(mask)
    ans = 1×3
    
        10    12    15
    
    

    Вычислите утрату Хубера между предсказаниями и целями. Чтобы предотвратить значения потерь, вычисленные от дополнения от содействия до потери, установите 'Mask' опция к маске, возвращенной padsequences функция.

    loss = huber(dlY,targets,'Mask',mask)
    loss = 
      1×1 dlarray
    
        8.1834
    
    

    Входные параметры

    свернуть все

    Предсказания в виде отформатированного dlarray, бесформатный dlarray, или числовой массив. Когда dlY не отформатированный dlarray, необходимо задать формат размерности с помощью 'DataFormat' опция.

    Если dlY числовой массив, targets должен быть dlarray.

    Целевые ответы в виде отформатированного или бесформатного dlarray или числовой массив.

    Задайте цели как массив с тем же размером и форматом как dlY.

    Если targets отформатированный dlarray, его формат размерности должен совпасть с форматом dlY, или то же самое как 'DataFormat' если dlY восстанавливается после форматирования

    Если targets бесформатный dlarray или числовой массив, затем формат dlY или значение 'DataFormat' неявно применяется к targets.

    Совет

    Отформатированный dlarray объекты автоматически сортируют свои размерности. Гарантировать что размерности dlY и targets сопоставимы, когда dlY отформатированный dlarray, также задайте targets как отформатированный dlarray.

    Веса в виде dlarray или числовой массив.

    Чтобы задать веса ответа, задайте вектор с 'C' (канал) размерность с размером, совпадающим с 'C' (канал) размерность dlX. Задайте 'C' (канал) размерность весов ответа при помощи отформатированного dlarray возразите или при помощи 'WeightsFormat' опция.

    Чтобы задать веса наблюдения, задайте вектор с 'B' (пакетная) размерность с размером, совпадающим с 'B' (пакетная) размерность dlY. Задайте 'B' (пакетная) размерность весов класса при помощи отформатированного dlarray возразите или при помощи 'WeightsFormat' опция.

    Чтобы задать веса для каждого элемента входа независимо, задайте веса как массив одного размера с dlY. В этом случае, если weights не отформатированный dlarray объект, затем функция использует тот же формат в качестве dlY. В качестве альтернативы задайте формат весов с помощью 'WeightsFormat' опция.

    Аргументы в виде пар имя-значение

    Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

    Пример: 'NormalizationFactor','all-elements' задает, чтобы нормировать потерю путем деления уменьшаемого ущерба от количества входных элементов

    Укажите где переходы утраты Хубера от квадратичной функции до линейной функции в виде разделенной запятой пары, состоящей из 'TransitionPoint' и положительная скалярная величина.

    Когда 'TransitionPoint' 1, это также известно как сглаженную потерю L1.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Маска, указывающая, который элементы включать для расчета потерь в виде разделенной запятой пары, состоящей из 'Mask' и dlarray объект, логический массив или числовой массив с тем же размером как dlY.

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

    Значением по умолчанию является логический массив из единиц с тем же размером как dlY.

    Совет

    Отформатированный dlarray объекты автоматически сортируют свои размерности. Гарантировать что размерности dlY и маска сопоставима, когда dlY отформатированный dlarray, также задайте маску как отформатированный dlarray.

    Режим для того, чтобы редуцировать массив значений потерь в виде разделенной запятой пары, состоящей из 'Reduction' и одно из следующего:

    • 'sum' – Суммируйте все элементы в массиве значений потерь. В этом случае, выход loss isscalar.

    • 'none' – Не редуцируйте массив значений потерь. В этом случае, выход loss бесформатный dlarray объект с тем же размером как dlY.

    Делитель для нормализации уменьшаемой потери, когда 'Reduction' 'sum'В виде разделенной запятой пары, состоящей из 'NormalizationFactor' и одно из следующего:

    • 'batch-size' – Нормируйте потерю путем деления на количество наблюдений в dlX.

    • 'all-elements' – Нормируйте потерю путем деления на число элементов dlX.

    • 'mask-included' – Нормируйте потерю путем деления значений потерь на количество включенных элементов, указанных маской для каждого наблюдения независимо. Чтобы использовать эту опцию, необходимо задать маску с помощью 'Mask' опция.

    • 'none' – Не нормируйте потерю.

    Порядок размерности бесформатных входных данных в виде разделенной запятой пары, состоящей из 'DataFormat' и вектор символов или строковый скаляр FMT это обеспечивает метку для каждой размерности данных.

    При определении формата dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

    • 'S' — Пространственный

    • 'C' — Канал

    • 'B' — Пакет (например, выборки и наблюдения)

    • 'T' — Время (например, временные шаги последовательностей)

    • 'U' — Незаданный

    Можно указать, что несколько размерностей пометили 'S' или 'U'. Можно использовать, маркирует 'C'B, и 'T' самое большее однажды.

    Необходимо задать 'DataFormat' когда входными данными не является отформатированный dlarray.

    Пример: 'DataFormat','SSCB'

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

    Порядок размерности весов класса в виде разделенной запятой пары, состоящей из 'WeightsFormat' и вектор символов или строковый скаляр, который обеспечивает метку для каждой размерности весов.

    При определении формата dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

    • 'S' — Пространственный

    • 'C' — Канал

    • 'B' — Пакет (например, выборки и наблюдения)

    • 'T' — Время (например, временные шаги последовательностей)

    • 'U' — Незаданный

    Можно указать, что несколько размерностей пометили 'S' или 'U'. Можно использовать, маркирует 'C'B, и 'T' самое большее однажды.

    Необходимо задать 'WeightsFormat' когда weights числовой вектор и dlX имеет две или больше неодноэлементных размерности.

    Если weights не вектор или оба weights и dlY векторы, затем значение по умолчанию 'WeightsFormat' совпадает с форматом dlY.

    Пример: 'WeightsFormat','CB'

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

    Выходные аргументы

    свернуть все

    Утрата Хубера, возвращенная как бесформатный dlarray. Выход loss бесформатный dlarray с тем же базовым типом данных как вход dlY.

    Размер loss зависит от 'Reduction' опция.

    Алгоритмы

    свернуть все

    Утрата Хубера

    Для каждого элемента Yj входа, huber функция вычисляет соответствующего Хубера поэлементные значения потерь с помощью формулы

    lossj={12(YjTj)2если |YjTj|δδ|YjTj|12δ2в противном случае,

    где Tj является соответствующим целевым значением к Yj и δ точка перехода где переходы потерь от квадратичной функции до линейной функции.

    Когда точка перехода равняется 1, это также известно как сглаженную потерю L1.

    Чтобы уменьшать значения потерь до одного скаляра, функция затем уменьшает поэлементные значения потерь до скалярной потери с помощью формулы

    loss=1Njmjwjlossj,

    где N является коэффициентом нормализации, mj является значением маски для элемента j, и wj является значением веса для элемента j.

    Не уменьшая потерю, функция применяет маску и веса к значениям потерь непосредственно:

    lossj*=mjwjlossj

    Расширенные возможности

    Введенный в R2021a