需要有关 pytorch 代理模型损失函数的建议

问题描述 投票:0回答:1

我希望获得有关为代理模型实现损失函数的建议。我正在对增材制造加工过程中产生的气孔进行微机械模拟,由于模拟时间的原因,我建立了一个替代模型,该模型将在给定体素化 3D 孔体积的情况下预测模拟输出。目标和输出是单通道 3D 应力场,每个体素强度代表约 -100 到 300 左右的应力值。所以我正在比较输出掩模与目标应力场的相似性。使用 MSE 似乎效果很好,R2 为 99.87%,但仔细观察直方图发现掩模应力分布有点偏离,如下所示。

虽然网络在捕获一般场形态方面表现良好,但在大多数情况下,它超出了最小值并低于最大值,因此它基本上将分布压缩在一起。为了更好地匹配分布,我添加了 Earth Mover 距离(Wasserstein 距离),它获取应力场的直方图并创建 cdf 来执行 L1 或 L2 损失。这有助于更好地匹配分布,但它仍然低于最大应力,尽管稍微好一些。问题是我使用应力场输出来计算应力集中因子 (SCF),该因子取决于最大应力和平均应力,因此获得准确的最大应力至关重要。我尝试为目标的平方误差添加一个额外项并掩盖最大应力,但它确实弄乱了分布,并且对最大应力几乎没有影响。我肯定还有更多的参数探索要做,但是有人有什么想法吗?

machine-learning deep-learning pytorch loss-function
1个回答
0
投票

需要考虑的一些事项。

  1. 您可能没有足够的数据来让模型表现得更好。如果是这样的话,无论你为损失做什么都无法解决这个问题。

  2. 对于“低于最大值”/“超过最小值”,请考虑数据点的百分比实际上接近这些最终范围值。您正在查看总数据的一小部分的性能 - 预计模型在这里表现更差。

  3. 看起来高应力部分只占总输出的一小部分。对于像 MSE 这样的损失,您的模型可以通过学习更常见的较低应力部分并忽略不太常见的高应力部分来获得较低的损失。您应该考虑按元素对损失进行加权,与潜在压力水平的概率相反(即权重不太常见,高压力部分更高)

  4. 您可能会考虑对压力值进行分箱并将其视为分类问题。这会降低预测的分辨率,但可能有助于最终范围值的性能。

© www.soinside.com 2019 - 2024. All rights reserved.