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
        {10x13 double}
        {10x14 double}
        {10x2  double}
        {10x14 double}
        {10x10 double}
        {10x2  double}
        {10x5  double}
        {10x9  double}
        {10x15 double}
        {10x15 double}
        {10x3  double}
        {10x15 double}
    
    
    targets
    targets=12×1 cell array
        {10x13 double}
        {10x14 double}
        {10x2  double}
        {10x14 double}
        {10x10 double}
        {10x2  double}
        {10x5  double}
        {10x9  double}
        {10x15 double}
        {10x15 double}
        {10x3  double}
        {10x15 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 = 
      1x1 dlarray
    
        8.1834
    
    

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

    свернуть все

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

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

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

    Размер каждой размерности targets должен совпадать с размером соответствующей размерности dlY.

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

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

    Совет

    Отформатированный dlarray объекты автоматически переставляют размерности базовых данных, чтобы иметь, заказывают "S" (пространственный), "C" (канал), "B" (пакет), "T" (время), затем "U" (незаданный). Гарантировать что размерности 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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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

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

    Совет

    Отформатированный dlarray объекты автоматически переставляют размерности базовых данных, чтобы иметь этот порядок: "S" (пространственный), "C" (канал), "B" (пакет), "T" (время) и "U" (незаданный). Например, dlarray объекты автоматически переставляют размерности данных с форматом "TSCSBS" иметь формат "SSSCBT".

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

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

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

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

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

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

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

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

    • "none" — Не нормируйте потерю.

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

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

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

    • "C" — Канал

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

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

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

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

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

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

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

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

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

    • "C" — Канал

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

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

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

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

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

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

    Типы данных: 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