激活函数用于获取星期几

我正在编写一个程序来预测某事何时会发生。我不知道该使用哪种激活函数来输出星期几(1-7)。

我尝试过使用sigmoid函数,但它需要输入预测的日期并输出其概率,我不希望是这样。

我希望激活函数返回0到无穷大,ReLU是否是此任务的最佳激活函数?

编辑:

另外,如果我希望输出超过7天,例如,x将在今天后的第9天或第15天发生等?我正在寻找动态的方法来实现这一点


回答:

我想补充@隐藏人名提出的观点,这在你的问题设置中提出了一个有效的观点。你会在下文找到你最初问题的答案,但我强烈建议你先阅读以下评论。

一般来说,你需要区分分类变量、顺序变量和区间变量。我在Stackoverflow上的另一个回答中给出了一个相对较长的解释,这可能有助于更详细地理解这个概念。
在你的场景中,你主要是想了解“你错得有多离谱”。当然,假设你正在做的事情并将其解释为区间变量是完全合理的,因此具有假设的顺序(和距离)在不同值之间。
然而,问题在于你假设了一个连续空间在一个离散变量上。例如,解释4.3的输出是没有意义的,因为你只能在4(假设你从0开始编号你的日子,即星期五)或5(星期六)之间做出判断。任何中间值都必须四舍五入,这完全没问题——直到你想在这个损失上进行反向传播。这是有问题的,因为你实际上引入了非凸和非连续的函数,无论你如何“四舍五入”你的值。再举个例子,你可以假设四舍五入到最接近的数字;那么,在4.5的值处,你会看到损失的突然增加,这是不可微分的,因此会给你的优化器带来困难,可能限制你的系统的收敛性。

相反,如果你使用多个输出神经元,如@隐藏人名所建议的,你可能会在纸面上失去距离信息(你偏离了多少天),但你当然仍然可以以任何你喜欢的方式解释你的损失。这对于离散值变量来说无疑是更好的选择。

回答你的最初问题:我个人会确保你的损失函数在上限和下限都是有界的,否则你可能会有未定义/不一致的损失值,这可能会导致次优的优化。一种方法是重新缩放Sigmoid函数(sigmoid(R)的共域是[0,1])。最终,你可以将输出乘以6,得到一个值范围为[0,6],并可以(在四舍五入后)覆盖你想要的所有值。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注