从工程的角度来看,我想知道是什么原因会导致建模的准确性太高?
从科学的角度来看,除了您需要花费更少的计算时间外,似乎几乎总是一种好处。
因此,从工程角度来看,除了时间(或计算能力)外,为什么还要避免这种情况?
从工程的角度来看,我想知道是什么原因会导致建模的准确性太高?
从科学的角度来看,除了您需要花费更少的计算时间外,似乎几乎总是一种好处。
因此,从工程角度来看,除了时间(或计算能力)外,为什么还要避免这种情况?
Answers:
提防过度拟合。从系统中收集数据的更准确模型可能无法更好地预测系统的未来行为。
上图显示了一些数据的两个模型。
线性线在训练数据(图形上的点)上有些精确,并且(有人会期望)在测试数据上有些精确(其中点可能是x <5和x> -5的点) )。
相比之下,多项式对于训练数据而言是100%准确的,但是(除非出于任何物理原因,除非您有任何理由相信9次多项式是合理的),否则您会认为对于x> 5和x <-5。
基于将误差与我们收集的数据进行的任何比较,线性模型的准确性较低。但这是更普遍的。
此外,工程师不必担心他们的模型,而更多地担心人们将如何使用该模型。
如果我告诉您我们正在炎热的天气中散步,预计持续426分钟。您带来的水量可能少于我告诉您的步行将持续7小时的时间,甚至比我说的步行将持续4-8小时的时间少。这是因为您是在回应我对我的预测的隐含信心,而不是我陈述的时间的中点。
如果给人们一个准确的模型,人们将减少他们的误差幅度。这导致更大的风险。
以炎热的天气为例,如果我知道在95%的情况下,步行将需要4到8个小时,并且导航和步行速度存在一些不确定性。完全知道我们的步行速度将减少4-8身材的不确定性,但不会显着影响“我们花很长时间使水成为问题的机会”,因为这几乎完全是由不确定的航行所驱动,而不是不确定的步行速度。
最明显的不利因素是成本,所有工程项目的预算都有限,花费比您所需更多的钱显然是一件坏事,更何况浪费时间。
还可能存在更细微的问题。诸如有限元分析之类的事情总是近似的,有时添加不必要的细节会引入伪像,使对模型进行故障排除更加困难。例如,您可能会遇到不连续现象,从而导致压力上升
还需要考虑的是,即使您具有计算能力来舒适地处理大量数据供应商,客户也可能没有,而且在许多情况下,传输大文件仍然是一个瓶颈。
同样,如果您有更多的参数,则可能会在管理和调试文件时进行额外的工作。
同样,即使您现在有充裕的时间和资源,也很可能是有些人需要使用该模型而没有同样的奢侈,尤其是当它最终成为您要销售给客户的产品的一部分时。
有几个原因。
从纯粹务实的角度来看,这是由于时间限制。解决模型所需的时间远远超过精度水平,而且采用哪种水平都是主观的。
因此,过于精确是没有意义的。但是确实,甚至不尝试变得过于精确也可能是有益的。但是,其原因主要是心理上的。主要是,您不想让模型过于精确,也不想以小数点后七个位来输出结果,因为您不想引起错误的信心。
人类的大脑硬性认为1.2393532697比1.2更准确。但是实际上并非如此。由于现实世界中的所有不确定因素,您的模型可能无法考虑(特别是在当前硬件限制的情况下),因此1.2几乎可以肯定与1.2393532697一样有效。因此,不要掩饰自己或任何看到您模型的人。仅输出1.2,这透明地指示您实际上不知道第二位数字后的情况。
极其精确的模型可能需要大量的输入数据。例如,通过将大气中每个气体分子的位置和速度作为输入,可以生成一个出色的天气系统模型。在实践中,这样的模型将无用,因为没有现实的方法来生成正确的输入。在这种情况下,只需要有限输入数据的不太准确的模型将是可取的。
“太准确”不是单调的。实际上,它可能会产生一种逼真的错觉,使您认为值得在仿真中投入更多的资金。当您从混合逼真度模型中呈现数据时,这变得非常重要,其中某些部分非常详细,而另一些部分则非常粗糙。
我曾在一个现实生活中涉及过在整个地形上采样海拔高度的示例。该小组决定对1024个地形进行采样,以使保真度最大化。我们的客户想要一个ReallyGood(tm)答案。
现在,我对这种特定算法导致的运行时命中率感到不安,我想了解一下我实际上在支付多少保真度。我没有看到任何地形数据,所以我问他们如何加载。答案是“哦,我们没有地形。它只是平坦的。”
听起来好像我有一个很棒的高保真模型,采样了1024点。我实际上拥有的是一个低保真度模型,它没有比1024点采样1点更好,但运行速度却慢了整整一吨,并被伪装成高保真度模型!
在实际的工程世界中,领导者并不总是有机会学习模型的整个架构。实际上,我会说他们从来没有时间。我们的领导层是在假设我们拥有出色的1024点模型的情况下做出决策的。没有人有过错,当您在模型的一部分上将保真度调得过高而在另一部分上保真度低时,就会发生这种情况。它具有混合保真野兽的性质。
因此,从工程角度来看,除了时间(或计算能力)外,为什么还要避免这种情况
从机械工程的角度来看,最大的原因是,只有在产生明显不同的结果时,您才愿意付出额外的努力。
如果模型中的精度水平比精度水平高出几个数量级,那么您在执行设计时就可以提供这种精度水平,那是在浪费您的精力。如果模型中描述的准确性水平高于对客户有影响的要求水平。你在浪费钱。例如,如果您指定的精度比设计要求的精度高(例如,排气管的长度为+/- .00001mm),那是在浪费客户钱,因为350mm的排气孔与350.0005mm的排气孔几乎一样大气,但后者的生产成本明显更高。
在大学里,我们都学会了使用牛顿物理学对物理世界进行建模,尽管众所周知,后牛顿物理学可以提供更准确的物理行为模型。尽管如此,我知道没有一个机械工程程序默认情况下会避免牛顿模型过于不精确。如果我们使用更准确的模型,并且得出的答案与理论真相相差0.1%,那么在大多数情况下都不会影响我们的最终设计。如果我们的屈服应力相差0.1%,那么我们所需的横截面就不会有明显的差异,这使我们可以根据两种方法选择完全相同大小的工字梁。在这种情况下,付出额外努力的成本不会带来任何额外收益。
现在,在某些情况下,需要精确才能产生可行的设计,例如对某些相对论物理学所需的卫星进行建模。在这种情况下,我们需要找到一个能够提供所需精度水平的模型,并且需要对模型进行设计。如果我们需要将尺寸计算为+/- 0.0001%,那么如果零件尺寸为+/- 0.1%,那将完全是浪费了精力。在实际应用中,后者精度等级的零件尺寸比前者更为常见。
人为的约束(不考虑计算能力和计算时间)排除了大多数实际答案。一个需要花费数小时或数天才能评估的模型不允许进行快速的设计迭代,并且会以人为规模放慢速度,增加成本,并可能导致结果不佳。巧妙地简化模型而不损失太多准确性可能是一种非常有用的方法,然后可以使用蛮力模型来验证最终迭代。
过于复杂的模型可能掩盖了模型中的基本错误,或者收集信息以最大限度地实际使用模型所需的工作将超过任何潜在的好处。例如,如果您需要比供应商可以控制的更高的精度来了解材料的特性,则可以接受误差带,也可以去测试每一批材料以调整模型。