主要内容

基于分子

分类任务的交叉熵损耗

描述

跨熵操作计算单个标签和多标签分类任务的网络预测和目标值之间的跨熵损失。

基于分子功能计算所代表的预测和目标之间的跨熵损失dlarray.数据。使用dlarray.通过允许您标记尺寸,对象使高维数据更容易。例如,您可以使用使用的标记对应于空间,时间,频道和批处理尺寸的维度标记''T''C', 和'B'标签分别。对于未指定的和其他尺寸,使用'U'标签。为了dlarray.通过特定尺寸运行的对象功能,可以通过格式化维度标签来指定维度标签dlarray.直接对象,或使用'datomformat'选项。

笔记

计算A内的交叉熵损失分层图对象或者阵列使用Trainnetwork.功能,使用分类层

例子

损失=基于联语(d目标返回格式化之间的分类交叉熵损耗dlarray.目的d包含预测和目标值目标用于单个标签分类任务。输出损失是一个未格式化的标量dlarray.标量。

对于未格式化的输入数据,请使用'datomformat'选项。

损失=基于联语(d目标重量将权重应用于计算出的损耗值。使用此语法来重量输入的类,观察,区域或单个元素的贡献给计算的损耗值。

损失=基于联语(___,'datomformat',fmt)还指定维度格式FMT.什么时候d不是格式化的dlarray.

损失=基于联语(___名称,价值除了以前语法中的输入参数之外,使用一个或多个名称值对参数指定选项。例如,'target类别','独立'计算多标签分类任务的跨熵丢失。

例子

全部收缩

创建一系列预测分数,以获得超过10个课程的12个观察结果。

numclasses = 10;numobservations = 12;y = rand(numcrasses,numobservations);dly = dlarray(y,'cb');dly = softmax(dly);

查看预测分数的大小和格式。

尺寸(dly)
ans =.1×210 12.
昏暗(dly)
ans ='cb'

创建一个编码为单热量向量的目标数组。

标签= randi(numcrasses,[1 numobservations]);targets = OneHotencode(标签,1,'classnames',1:numclasses);

查看目标的大小。

尺寸(目标)
ans =.1×210 12.

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

损失=联语分子(DLY,目标)
丢失= 1x1 dlarray 2.3343

创建一系列预测分数,以获得超过10个课程的12个观察结果。

numclasses = 10;numobservations = 12;y = rand(numcrasses,numobservations);dly = dlarray(y,'cb');

查看预测分数的大小和格式。

尺寸(dly)
ans =.1×210 12.
昏暗(dly)
ans ='cb'

创建被编码为零数组数组的随机数组。每个观察都可以具有多个类。

目标= rand(numclasses,numobservations)> 0.75;目标=单身(目标);

查看目标的大小。

尺寸(目标)
ans =.1×210 12.

计算预测和目标之间的跨熵损失。要指定多标签分类的跨熵损耗,请设置'target类别'选择'独立的'

损失=联语分子(DLY,目标,'target类别''独立的'
丢失= 1x1单个Dlarray 9.8853

创建一系列预测分数,以获得超过10个课程的12个观察结果。

numclasses = 10;numobservations = 12;y = rand(numcrasses,numobservations);dly = dlarray(y,'cb');dly = softmax(dly);

查看预测分数的大小和格式。

尺寸(dly)
ans =.1×210 12.
昏暗(dly)
ans ='cb'

创建一个编码为单热量向量的目标数组。

标签= randi(numcrasses,[1 numobservations]);targets = OneHotencode(标签,1,'classnames',1:numclasses);

查看目标的大小。

尺寸(目标)
ans =.1×210 12.

使用矢量类权重计算预测和目标之间的加权交叉熵丢失。指定权重格式'UC'(未指定,频道)使用'掌控'选项。

权重= rand(1,numcrasses);损失=联语分子(DLY,靶,重量,'掌控''UC'
丢失= 1x1 dlarray 1.1261

输入参数

全部收缩

预测,指定为格式化dlarray.,一个不可格式化的人dlarray.或数字数组。什么时候d不是格式化的dlarray.,您必须使用尺寸格式指定'datomformat'选项。

如果d是一个数字数组,目标必须是A.dlarray.

目标分类标签,指定为格式或未格式化dlarray.或数字数组。

将目标指定为包含具有相同大小和格式的单热编码标签的数组d。例如,如果d是A.numobservations.-经过-numclasses.然后阵列目标(n,i)= 1如果观察N属于课程一世目标(n,i)否则= 0。

如果目标是一个格式化的dlarray.,其维度格式必须与格式相同d,或者是一样的'datomformat'如果d是不格式化的

如果目标是一个无格式化的人dlarray.或数字数组,然后是数字d或者价值'datomformat'隐含地应用于目标

小费

格式化dlarray.对象自动对其尺寸进行排序。确保尺寸d目标是一致的,何时d是一个格式化的dlarray.,还指定目标作为格式化dlarray.

重量,指定为adlarray.或数字数组。

要指定类权重,请指定带有的向量'C'(通道)尺寸,尺寸匹配'C'(频道)维度的尺寸DLX.。指定'C'(通道)使用格式化的类重量的维度dlarray.对象或使用'掌控'选项。

要指定观察权重,请指定带有的向量'B'(批量)尺寸,尺寸匹配'B'(批量)的维度d。指定'B'(批量)使用格式化的类重量的尺寸dlarray.对象或使用'掌控'选项。

要独立地指定输入的每个元素的权重,请将权重指定为与相同尺寸的数组d。在这种情况下,如果重量不是格式化的dlarray.对象,然后该函数使用相同的格式d。或者,使用该方法指定权重格式'掌控'选项。

名称值对参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'target类别','独立','datomformat','cb'评估多标签分类任务的跨熵丢失,并指定输入数据的尺寸顺序'cb'

分类任务类型,指定为逗号分隔对组成'target类别'和以下之一:

  • '独家的'- 单标签分类。每次观察到预测d专门分配给一个类别。该函数计算由单个类别指定的目标值之间的丢失目标和相应的预测d,平均在观察的数量上。

  • '独立的'- 多标签分类。每次观察到预测d可以分配给一个或多个独立类别。该功能计算由此指定的每个类别之间的丢失和目标和预测d对于那些类别,平均在观察的数量上。这种类型分类任务的交叉熵损耗也称为二进制交叉熵损失。

掩模指示要包含损耗计算的要素,指定为包括的逗号分隔对'面具'A.dlarray.对象,逻辑阵列或具有相同尺寸的数字数组d

该函数分别包括并排除当掩码中的相应值为1和0时的损耗计算的输入数据的元素。

默认值是具有相同尺寸的逻辑阵列d

小费

格式化dlarray.对象自动对其尺寸进行排序。确保尺寸d掩码是一致的,什么时候d是一个格式化的dlarray.,还将掩码指定为格式化dlarray.

减少损耗值阵列的模式,指定为包括的逗号分隔对'减少'和以下之一:

  • '和'- 将所有元素放在丢失值阵列中。在这种情况下,输出损失是标量。

  • '没有任何'- 不要减少损耗值阵列。在这种情况下,输出损失是一个无格式化的人dlarray.物体尺寸相同d

分割用于归一化降低损失'减少''和',指定为逗号分隔的配对组成'正常化活性仪'和以下之一:

  • '批量大小'- 通过除以观察人数来规范损失DLX.

  • '全部元素'- 通过划分划分的元素数来归一化损失DLX.

  • '掩盖'- 通过独立地将掩码指定的包含元素的数量划分损耗值来归一化损耗。要使用此选项,必须使用此选项指定掩码'面具'选项。

  • '没有任何'- 不要使损失正常化。

未格式化的输入数据的维度顺序,指定为逗号分隔对组成'datomformat'和一个字符矢量或标量FMT.为数据的每个维度提供标签。

在指定格式的时候dlarray.对象,每个字符为数据的每个维度提供标签,必须是以下内容之一:

  • '- 空间

  • 'C'- 渠道

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

  • 'T'- 时间(例如,序列的时间步长)

  • 'U'- 未指定

您可以指定标记的多个维度'要么'U'。您可以使用标签'C''B', 和'T'最多一次。

您必须指定'datomformat'当输入数据不是格式化时dlarray.

例子:'dataformat','sscb'

数据类型:char|细绳

类重量的尺寸顺序,指定为逗号分隔对组成'掌控'和一个字符向量或字符串标量,为权重的每个维度提供标签。

在指定格式的时候dlarray.对象,每个字符为数据的每个维度提供标签,必须是以下内容之一:

  • '- 空间

  • 'C'- 渠道

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

  • 'T'- 时间(例如,序列的时间步长)

  • 'U'- 未指定

您可以指定标记的多个维度'要么'U'。您可以使用标签'C''B', 和'T'最多一次。

您必须指定'掌控'什么时候重量是数字矢量和DLX.有两个或两个以上的不明适力尺寸。

如果重量不是矢量,或两者重量d是向量,然后是默认值'掌控'与格式相同d

例子:'treeformat','cb'

数据类型:char|细绳

输出参数

全部收缩

交叉熵损失,作为未格式化的返回dlarray.。输出损失是一个无格式化的人dlarray.具有与输入相同的底层数据类型d

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

算法

全部收缩

交叉熵损失

对于每个元素yj输入,基于分子功能使用公式计算相应的跨熵元素 - 明显损耗值

损失 j = T. j LN. y j + 1 - T. j LN. 1 - y j

在哪里T.j是相应的目标值yj

要将损耗值降低到单个标量,则使用公式将函数降低到标量损耗的元素 - 方向损耗值

损失 = - 1 N σ. j m j W. j 损失 j

在哪里N是归一化因素,mj是元素的掩码值j, 和W.j是元素的重量值j

如果没有降低损失,则该函数直接将掩码和权重应用于损耗值:

损失 j * = m j W. j 损失 j

此表显示了不同任务的损耗配方。

任务 描述 损失
单标签分类 相互独家班级的交叉熵损失。当观察必须具有单个标签时,这很有用。

损失 = - 1 N σ. N = 1 N σ. 一世 = 1 K. T. N 一世 LN. y N 一世

在哪里NK.是观察数和课程。

多标签分类 独立类的交叉熵损失。当观察可以具有多个标签时,这很有用。

损失 = - 1 N σ. N = 1 N σ. 一世 = 1 K. T. N 一世 日志 y N 一世 + 1 - T. N 一世 日志 1 - y N 一世

在哪里NK.是分别观察和课程的数量。

具有加权类的单个标签分类 跨熵损失与类重量。这对具有不平衡类的数据集非常有用。

损失 = - 1 N σ. N = 1 N σ. 一世 = 1 K. W. 一世 T. N 一世 LN. y N 一世

在哪里NK.是分别观察和课程的数量W.一世表示类的重量一世

序列到序列分类 具有遮蔽时间步的跨熵损失。这对于忽略对应于填充数据的损耗值非常有用。

损失 = - 1 N σ. N = 1 N σ. T. = 1 S. m N T. σ. 一世 = 1 K. T. N T. 一世 LN. y N T. 一世

在哪里NS., 和K.是观察,时间步长和类的数量,mNT.表示时间步骤的蒙版值T.观察N

扩展能力

在R2019B中介绍