设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Python机器学习中七种损失函数的科学指南(3)

发布时间:2019-11-11 19:08 所属栏目:21 来源:CDA数据分析师
导读:Softmax是通过在输出层之前的神经网络层实现的。Softmax层必须具有与输出层相同数量的节点。 最后,我们的输出是给定输入具有较大概率的类别。 我们使用一个输入层和一个输出层来进行构建模型,并以不同的学习率对

“ Softmax是通过在输出层之前的神经网络层实现的。Softmax层必须具有与输出层相同数量的节点。”

Python机器学习中七种损失函数的科学指南

最后,我们的输出是给定输入具有较大概率的类别。

我们使用一个输入层和一个输出层来进行构建模型,并以不同的学习率对其进行编译。在model.compile()语句中将损失参数指定为“ categorical_crossentropy”:

# importing requirements from keras.layers import Dense from keras.models import Sequential from keras.optimizers import adam # alpha = 0.001 as given in the lr parameter in adam() optimizer # build the model model_alpha1 = Sequential() model_alpha1.add(Dense(50, input_dim=2, activation='relu')) model_alpha1.add(Dense(3, activation='softmax')) # compile the model opt_alpha1 = adam(lr=0.001) model_alpha1.compile(loss='categorical_crossentropy', optimizer=opt_alpha1, metrics=['accuracy']) # fit the model # dummy_Y is the one-hot encoded # history_alpha1 is used to score the validation and accuracy scores for plotting history_alpha1 = model_alpha1.fit(dataX, dummy_Y, validation_data=(dataX, dummy_Y), epochs=200, verbose=0)

这是经过200个时期训练后的成本和准确率图:

Python机器学习中七种损失函数的科学指南
Python机器学习中七种损失函数的科学指南

2. KL散度(KL-Divergence)

KL散度是度量一个概率分布与另一个分布之间的差异的指标。KL散度为零表示分布相同。

请注意,散度函数不是对称的。

这就是为什么KL散度不能用作距离度量的原因。

我将介绍使用KL-散度作为损失函数而不涉及其数学的基本方法。我们想要得到目标变量关于输入特征的真实概率分布P的近似值,给出一个近似分布q。由于kl散度不是对称的,我们可以用两种方法来实现:

第一种方法用于监督学习中,第二种方法用于强化学习中。KL-散度在功能上类似于多分类交叉熵,并且也称为P相对于Q的相对熵:

我们像以前对多类交叉熵损失所做的那样,在compile()函数中将'kullbackleiblerdivergence'指定为损失参数的值。

# importing requirements from keras.layers import Dense from keras.models import Sequential from keras.optimizers import adam # alpha = 0.001 as given in the lr parameter in adam() optimizer # build the model model_alpha1 = Sequential() model_alpha1.add(Dense(50, input_dim=2, activation='relu')) model_alpha1.add(Dense(3, activation='softmax')) # compile the model opt_alpha1 = adam(lr=0.001) model_alpha1.compile(loss='kullback_leibler_divergence', optimizer=opt_alpha1, metrics=['accuracy']) # fit the model # dummy_Y is the one-hot encoded # history_alpha1 is used to score the validation and accuracy scores for plotting history_alpha1 = model_alpha1.fit(dataX, dummy_Y, validation_data=(dataX, dummy_Y), epochs=200, verbose=0)

Python机器学习中七种损失函数的科学指南
Python机器学习中七种损失函数的科学指南

与多类分类相比,KL-散度更常用于近似复杂函数。我们在使用深度自动生成模型(如变分自动编码器(VAE))时经常遇到KL-散度。

结语

哇!到这里为止我们已经讲了很多了。一直看到最后的你,给你自己一点鼓励吧。这篇文章中是我们通常在机器学习中使用的损失函数的详细列表。

在这里呢建议你在继续进行机器学习的过程中,多读几遍。因为这不是一次努力就可以全部理解的。需要一些阅读时间和经验才能了解这些损失函数的工作方式和位置。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读