深度学习:我应该使用哪些损失函数和激活函数?

CYJ0go 2018-07-27

深度学习:我应该使用哪些损失函数和激活函数?

本文的目的是提供指导,根据业务目标,应在神经网络中使用最终层激活函数和损失函数的组合。

本文假设读者具有激活函数的知识。

回归:预测数值

例如,预测产品的价格

神经网络的最后一层将有一个神经元,它返回的值是一个连续的数值。

为了理解预测的准确性,将其与真实值进行比较,该真实值也是连续数。

深度学习:我应该使用哪些损失函数和激活函数?

最终激活函数

线性 - 这会产生我们需要的数值

深度学习:我应该使用哪些损失函数和激活函数?

损失函数

均方误差(MSE) - 它找到预测值和真值之间的平均平方差

深度学习:我应该使用哪些损失函数和激活函数?

分类:预测二元结果

例如,预测交易是否是欺诈

神经网络的最后一层将有一个神经元并将返回0到1之间的值,这可以推断为可能。

为了理解预测的准确性,将其与真实值进行比较。如果数据是该类,则true值为1,否则为0。

深度学习:我应该使用哪些损失函数和激活函数?

最终激活函数

Sigmoid - 这导致一个介于0和1之间的值,我们可以推断该模型对该类示例的可能性如何

深度学习:我应该使用哪些损失函数和激活函数?

损失函数

二元交叉熵 - 交叉熵量化两个概率分布之间的差异。我们的模型预测{p,1-p}的模型分布,因为我们有二元分布。我们使用二元交叉熵将其与真实分布进行比较{y,1-y}

深度学习:我应该使用哪些损失函数和激活函数?

分类:从多个类中预测单个标签

例如,预测文档的主题

神经网络的最后一层将为每个类提供一个神经元,它们将返回0到1之间的值,这可以推断为可能。然后输出导致概率分布,因为它总和为1。

为了理解预测的准确性,将每个输出与其对应的真值进行比较。真值是one-hot编码的,意味着1对应于正确的类别出现在列中,否则出现0

深度学习:我应该使用哪些损失函数和激活函数?

最终激活函数

Softmax - 这导致每个输出的值介于0和1之间,所有输出总和为1.因此,这可以推断为概率分布

深度学习:我应该使用哪些损失函数和激活函数?

损失函数

交叉熵 - 交叉熵量化两个概率分布之间的差异。我们的模型预测{p1,p2,p3}的模型分布(其中p1 + p2 + p3 = 1)。我们使用交叉熵将其与真实分布{y1,y2,y3}进行比较

深度学习:我应该使用哪些损失函数和激活函数?

分类:预测多个类的多个标签

例如,预测图像中动物的存在

神经网络的最后一层将为每个类提供一个神经元,它们将返回0到1之间的值,这可以推断为可能。

为了理解预测的准确性,将每个输出与其对应的真值进行比较。如果1出现在真值列中,则它对应的类别出现在数据中,否则出现0。

深度学习:我应该使用哪些损失函数和激活函数?

最终激活函数

Sigmoid - 这导致0到1之间的值,我们可以推断出它在类上的自信程度

深度学习:我应该使用哪些损失函数和激活函数?

损失函数

二元交叉熵 - 交叉熵量化两个概率分布之间的差异。我们的模型预测每个类的{p,1-p}(二元分布)的模型分布。我们使用二元交叉熵将这些与每个类的真实分布{y,1-y}进行比较,并总结其结果

深度学习:我应该使用哪些损失函数和激活函数?

汇总表

下表总结了上述信息,以便您快速找到适合您的用例的最终层激活函数和损失函数

深度学习:我应该使用哪些损失函数和激活函数?

相关推荐