主要内容

休伯

回归任务的Huber损失

    描述

    Huber操作计算回归任务的网络预测和目标值之间的Huber损失。当“TransitionPoint”选项是1,这也被称为光滑的l1损失

    休伯函数计算Huber损失dlarray数据。使用dlarray对象允许您标记维度,从而更容易处理高维数据。属性标记哪些维度对应于空间、时间、通道和批处理维度“S”“T”“C”,“B”标签,分别。对于未指定的维度和其他维度,使用“U”标签。为dlarray对象的函数在特定维度上操作时,可以通过格式化dlarray对象,或者使用DataFormat选择。

    例子

    损失=胡贝尔(Y目标返回格式化后的数据之间的Huber损失dlarray对象Y包含预测和目标值目标用于回归任务。输入Y是格式化的dlarray.输出损失是未格式化的dlarray标量。

    对于未格式化的输入数据,使用“DataFormat”选择。

    损失=胡贝尔(Y目标权重对计算的损失值应用权重。使用此语法对输入的类、观测值或区域对计算损失值的贡献进行加权。

    损失=胡贝尔(___、“DataFormat”FMT)还指定维度格式FMTY不是格式化的dlarray

    损失=胡贝尔(___名称,值除以前语法中的输入参数外,还使用一个或多个名称-值对参数指定选项。例如,“NormalizationFactor”、“所有元素的指定通过将减少的损耗除以输入元素的数量来规范化损耗。

    例子

    全部折叠

    为10个回答中的12个观察结果创建一个预测数组。

    numResponses = 10;numObservations = 12;Y = rand(numResponses,numObservations);ly = darray (Y,“CB”);

    查看预测的大小和格式。

    大小(海底)
    ans =1×210 12
    dim(海底)
    ans = 'CB'

    创建一个随机目标数组。

    targets = rand(numResponses,numObservations);

    查看目标的大小。

    大小(目标)
    ans =1×210 12

    计算预测和目标之间的Huber损失。

    损失=目标
    损失= 1x1 dlarray 0.7374

    在10个响应中为12个长度不同的序列创建预测和目标数组。

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

    查看预测和目标的单元格阵列。

    Y
    Y =12×1单元格数组{10x13双}{10x14双}{10x14双}{10x10双}{10x2双}{10x5双}{10x9双}{10x15双}{10x15双}{10x3双}{10x15双}
    目标
    目标=12×1单元格数组{10x13双}{10x14双}{10x14双}{10x10双}{10x2双}{10x5双}{10x9双}{10x15双}{10x15双}{10x3双}{10x15双}

    将预测序列和目标序列填充在二维中padsequences函数,并返回相应的掩码。

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

    将填充序列转换为dlarray带格式的“施”(通道,时间,批次)。因为格式化dlarray对象自动排序维度,保持目标的维度和掩码一致,同时将它们转换为格式化的dlarray具有相同格式的对象。

    ly = darray (Y,“施”);目标= dlarray(目标,“施”);蒙版= dlarray(蒙版,“施”);

    查看预测分数、目标和掩码的大小。

    大小(海底)
    ans =1×310 12 15
    大小(目标)
    ans =1×310 12 15
    大小(面具)
    ans =1×310 12 15

    计算预测和目标之间的Huber损失。若要防止从填充中计算的损耗值导致损耗,请设置“面具”属性返回的掩码padsequences函数。

    损失= huber,目标,“面具”面具)
    损失= 1x1 dlarray 8.1834

    输入参数

    全部折叠

    预测,指定为格式化的dlarray,一个未格式化的dlarray,或数值数组。当Y不是格式化的dlarray时,必须使用DataFormat选择。

    如果Y是数值数组,目标一定是dlarray

    目标响应,指定为格式化或非格式化dlarray或者一个数字数组。

    的每个维度的大小目标必须匹配相应尺寸的尺寸吗Y

    如果目标是格式化的dlarray,则其格式必须与的格式一致Y,或与DataFormat如果Y未格式化。

    如果目标是未格式化的dlarray或数值数组,则函数应用的格式Y或者是DataFormat目标

    提示

    格式化dlarray对象自动排列底层数据的维度以使其具有顺序“S”(空间),“C”(通道),“B”(批处理),“T”(时间),然后“U”(不明)。保证尺寸Y而且目标一致,当Y是格式化的dlarray,也指定目标作为格式化的dlarray

    权重,指定为adlarray或者一个数字数组。

    要指定响应权重,请使用“C”(通道)尺寸与尺寸匹配“C”(通道)的尺寸X.指定“C”(通道)维度的响应权重使用格式化dlarray对象或使用“WeightsFormat”选择。

    要指定观测权重,请使用“B”(批)尺寸与尺寸匹配“B”(批)尺寸Y.指定“B”(批处理)维的类权重使用格式化dlarray对象或使用“WeightsFormat”选择。

    若要单独为输入的每个元素指定权重,请将权重指定为大小相同的数组Y.在这种情况下,如果权重不是格式化的dlarray对象,则该函数使用与Y.方法指定权重格式“WeightsFormat”选择。

    名称-值参数

    指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

    在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

    例子:“NormalizationFactor”、“所有元素的指定通过将减少的损耗除以输入元素的数量来规范化损耗

    休伯损失从二次函数转变为线性函数的点,以逗号分隔的对表示,由“TransitionPoint”一个正标量。

    “TransitionPoint”等于1,也就是光滑的l1损失

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    掩码,指示要包括哪些元素进行损失计算,指定为dlarray对象、逻辑数组或具有相同大小的数值数组Y

    当掩码中的对应值分别为1和0时,该函数包含和排除输入数据中的元素以进行损失计算。

    如果面具是格式化的dlarray对象的格式,则其格式必须与Y.如果面具不是格式化的dlarray对象,则该函数使用与Y

    如果您指定DataFormat选项,则该函数也使用指定的掩码格式。

    的每个维度的大小面具必须匹配相应尺寸的尺寸吗Y.默认值是1的逻辑数组。

    提示

    格式化dlarray对象会自动排列底层数据的维数,使其排列顺序如下:“S”(空间),“C”(通道),“B”(批处理),“T”(时间)“U”(不明)。例如,dlarray对象根据格式自动排列数据的维度“TSCSBS”要有格式“SSSCBT”

    保证尺寸Y和面具是一致的,当Y是格式化的dlarray,也指定掩码为格式化的dlarray

    减少损失值数组的模式,指定为以下之一:

    • “和”-对损失值数组中的所有元素求和。在本例中,是输出损失是标量。

    • “没有”—不要缩减损失值数组。在本例中,是输出损失是未格式化的dlarray相同大小的对象Y

    用于归一化减少损失时的除数减少“和”,指定为以下其中之一:

    • “批大小”-通过将损失除以年的观测数来规范化损失X

    • “所有元素”-通过将其除以元素的数量来规范化损失X

    • “还有面具”-通过将损失值除以掩码为每个独立观测指定的包含元素的数量来归一化损失。要使用此选项,必须使用面具选择。

    • “没有”-不要将损失正常化。

    未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT它为数据的每个维度提供了一个标签。

    的格式时dlarray对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:

    • “S”——空间

    • “C”——频道

    • “B”-批次(例如,样品和观察)

    • “T”-时间(例如序列的时间步长)

    • “U”——未指明的

    您可以指定多个有标记的维度“S”“U”.你可以使用标签“C”“B”,“T”最多一次。

    您必须指定DataFormat当输入数据未被格式化时dlarray

    数据类型:字符|字符串

    权重的维度顺序,指定为字符向量或字符串标量,为权重的每个维度提供一个标签。

    的格式时dlarray对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:

    • “S”——空间

    • “C”——频道

    • “B”-批次(例如,样品和观察)

    • “T”-时间(例如序列的时间步长)

    • “U”——未指明的

    您可以指定多个有标记的维度“S”“U”.你可以使用标签“C”“B”,“T”最多一次。

    您必须指定WeightsFormat权重是一个数字向量和Y具有两个或多个非单维。

    如果权重不是向量,或者两者都是权重而且Y是向量,那么默认值是WeightsFormat的格式是否相同Y

    数据类型:字符|字符串

    输出参数

    全部折叠

    Huber损失,以未格式化的形式返回dlarray.输出损失是未格式化的dlarray使用与输入相同的底层数据类型Y

    的大小损失取决于减少选择。

    算法

    全部折叠

    Huber损失

    对于每个元素Yj的输入休伯函数使用公式计算相应的元素损耗值

    损失 j 1 2 Y j T j 2 如果 | Y j T j | δ δ | Y j T j | 1 2 δ 2 否则

    在哪里Tj预测是否有相应的目标值Yj而且 δ 是损失从二次函数转换为线性函数的过渡点。

    当过渡点为1时,这也称为光滑的l1损失

    为了将损失值减少为标量,函数然后使用公式减少按元素计算的损失

    损失 1 N j j w j 损失 j

    在哪里N是归一化因子,j元素的掩码值是j,wj是元素的权重值吗j

    如果不选择减少损失,则函数将掩码和权重直接应用于损失值:

    损失 j * j w j 损失 j

    扩展功能

    版本历史

    R2021a中引入