我是深度学习和Keras的新手,这个问题已经困扰我好几个星期了。希望我能从这里得到一些提示。
功能
我模拟了两个变量,每个变量有10k个样本,遵循标准正态分布:A ~ Norm(0, 1)
;B ~ Norm(0, 1)
。
标签
我从模拟变量中推导出两个标签:y1 = A * B
;y2 = A / B
。
模型
输入维度:2
隐藏层:4个致密层,全部为32个神经元宽
输出层:包含1个神经元的密集层
激活函数:所有激活函数的ReLU
编译器:'MSE'
作为损失函数,'Adam'
作为优化器,学习率为1e-05
任务
最后,我为MLP设置了三个学习任务:
(1)用A、B预测y1;
(2)用A、B预测y2;
(3)用A,1/B预测y2
验证
使用'validation_split = 0.2'
验证模型
结果和推理
对于任务1中10~15个时期后的训练和验证集,它都可以很容易地达到1以下的MSE
。然而,对于其他两个任务,我总是在训练损失上得到像30k+这样的非常高的损失。
更新I还通过皮尔逊相关系数对结果进行了评估,任务1返回~0.7,任务2和3返回<0.01。
这对我来说很奇怪,因为乘法(y1
)和除法(y2
)在数学上是一样的。然后我试着研究1/B的分布,我发现它的两边都有非常长的尾巴。我猜测这可能是困难的根源,但想不出任何策略来解决它。我也试着在训练前将1/B正规化,但没有成功。
欢迎任何建议或评论。在网上或书本上都找不到关于这方面的讨论,真的很想在这方面取得一些进展。谢谢。
发布于 2018-07-30 08:12:18
y2值与y1值的分布有很大的不同,具体地说,它的值的绝对值要大得多。这意味着直接比较损失是不公平的。
这有点像估算一个人的质量与估算一个行星的质量,然后为自己偏离了数百万磅而心烦意乱。
为了举例说明,尝试计算所有三个问题的损失,但使用的估计器仅猜测0.0。我怀疑问题1的损失会比其他两个小得多。
https://stackoverflow.com/questions/51585339
复制相似问题