不同的损失函数可以用于不同的目标。在这篇文章中,我将向您介绍一些非常常用的损失函数的示例。本文提到的一些参数细节属于tensorflow或者keras的实现细节。损失函数简介损失函数有助于优化神经网络的参数。我们的目标是通过优化神经网络的参数(权重)来最小化神经网络的损失。通过神经网络将目标(实际)值与预测值进行匹配,然后通过损失函数计算损失。然后我们使用梯度下降来优化网络权重以最小化损失。这就是我们训练神经网络的方式。均方误差执行回归任务时可以选择此损失函数。顾名思义,这种损失是通过取实际(目标)值和预测值之间的平方差的平均值来计算的。例如,您有一个神经网络,可以获取有关房屋的一些数据并预测其价格。在这种情况下,您可以使用MSE(均方误差)损失。基本上,这个损失函数应该在输出是真实的时候使用。BinaryCrossEntropy执行二元分类任务时可以选择此损失函数。如果使用BCE(BinaryCrossEntropy)损失函数,只需要一个输出节点就可以将数据分成两类。输出值应通过sigmoid激活函数,以便输出在(0-1)范围内。例如,您有一个神经网络,它获取与大气相关的数据并预测是否会下雨。如果输出大于0.5,则网络将其归类为下雨;如果输出小于0.5,则网络将其归类为未下雨。即概率分数值越大,下雨的几率就越大。在训练网络时,如果标签正在下雨,则输入网络的目标值应为1,否则为0。重要的一点是,如果使用BCE损失函数,节点的输出应该在(0-1)之间。这意味着您必须在最终输出中使用sigmoid激活函数。因为sigmoid函数可以将任何实数值转换到(0–1)的范围内。(即输出概率值)如果不想在最后一层显式使用sigmoid激活函数,可以在损失函数的参数上设置fromlogits为true,它会在内部调用Sigmoid函数应用于输出值。Multi-classcrossentropy这个损失函数可以在你做多类分类任务的时候选择。如果使用CCE(CategoryCrossEntropy)损失函数,输出节点的数量必须与类别相同。最后一层的输出要经过一个softmax激活函数,让每个节点输出一个介于(0-1)之间的概率值。例如,您有一个神经网络可以读取图像并将其分类为猫或狗。如果猫节点的概率得分高,则图像被归类为猫,否则被归类为狗。基本上,如果类节点具有高概率得分,则图像将被归类为该类。为了在训练时提供目标值,你必须对它们进行单热编码。如果图像是猫,目标向量将为(1,0),如果图像是狗,目标向量将为(0,1)。基本上,目标向量的大小将与类的数量相同,实际类对应的索引位置为1,其他所有位置为零。如果不想在最后一层显式使用softmax激活函数,可以在损失函数的参数上将fromlogits设置为true,这样会在内部调用softmax函数来作用于输出值。同上。SparseMulti-ClassCross-Entropy这个损失函数和multi-classcross-entropy几乎一样,只是有一个小的变化。使用SCCE(稀疏分类交叉熵)损失函数时,不需要目标向量的单热形式。比如目标图片是猫,就传0,否则传1。基本上不管是哪个类,只要传那个类的索引即可。这些是最重要的损失函数。在训练神经网络时,可以使用这些损失函数之一。下面的链接是Keras中可用的所有损失函数的源代码。(https://github.com/keras-team/keras/blob/c658993cf596fbd39cf800873bc457e69cfb0cdb/keras/backend/numpy_backend.py)
