在今天中国计算学会的一次学术会上,我讲了“工业大数据建模的可靠性与实用性”,把几十年的实践和认识串了一下。
在这个报告中,有些PPT可以追溯到20多年前,有些是会议开始后才改写的。我用这些多年沉淀的“老”元素,串起了新的逻辑。
我在报告中指出:实用化的模型需要关注如下三点:
1、模型的程度(精度);
2、适用的范围(精度有效的范围);
3、模型的精度和适用范围可知、稳定
要防止三类不稳定性问题:
1、工况正常稳定时,精度是高的;工况异常时,精度无法保证。
2、过去、现在的精度是高的,明天就可能低了。
3、不知道什么时候精度高、什么时候精度低。
总之一句话:稳定可靠的模型才实用。但稳定可靠不容易、甚至可以说是最难的。单纯追求高精度,往往得不到稳定的模型。
思考的逻辑起始点是:我们进行数据建模,并不是因为没有“机理模型”,而是“机理模型”缺乏必要的参数而算不准。于是,下一个问题就是:算不准怎么办?最基本的办法就是把实践的结果记下来,形成经验和标准,供下次使用。
既然有了标准,为什么还要有模型? 一个重要的原因,是为了“适应变化”。工业对象的参数是会漂移的,模型的作用是适应这种变化。
模型是如何适应变化的呢?有个最简单的办法,就是和人的做法一样:把实践过程记录下来,下次跟着学。注意:这样的“模型”与软件结合的时候,其实是“变化的标准”、“动态的标准”。在我看来,工业中所谓的“机器学习”,本质其实就是把过去的成功做法“记下来”。这种逻辑,类似传统的近邻算法、CBR算法。但是,只有在大数据时代,才能找到比较近似的学习对象。大数据的意义,就在于此:方法一样,条件不同了,成功率不一样了。
“世界上没有完全相同的两片叶子”。
直接学到的东西,往往有比较大的误差。这个时候怎么办?这个时候的办法,就是在“跟着学”的基础上根据实际的差距做调整。所以,模型其实包括两个部分:1、跟着过去成功的学、2、针对差异进行调整。这就是我常说的“高尔夫球”做法。这样的做法,在钢铁行业并不罕见。这样的逻辑,往往能充分利用领域知识。
这种算法 会遇到两个问题:首先是“跟着谁学”。如果算法不好,会“跟错人”,模型就不稳定。大数据时代,数据完整性比较好,可以通过多特征的方法防止“跟错人”。其次是如何调整的问题。这个时候,要知道“什么变化了”、在此基础上做调整。但是,“什么变化了”可能测量不到,需要用间接的手段获取。这其实是一种“子模型”。现实中的模型往往要具有这种“子模型”。这也使得数据建模得到的模型,与机理模型不一致。
除此之外,对象本身的参数会发生变化,进而导致模型本体的参数发生变化。这个时候,需要另外一种机器学习:让模型的精度适应对象的变化。这是两种比较实用的机器学习。都是“有限责任”的机器学习。我一直认为:机器学习承担的责任过大,会影响模型的可靠性。
写到这里,就容易理解J.BOX的名言:“模型都是错的,但有些是有用的”。我们必须接纳那些“错误”的模型,来获得“有用”性。但这些“错误”往往是可理解的。
在报告中,我再次提到一个观点:实践经验告诉我们,模型误差大的时候,首先应该关注数据的质量,其次才是在算法中寻找问题(多数人的做法 正好相反)。我认为,针对生产对象时,模型精度不高,90%是数据质量不高导致的,算法能够起到的作用往往有限。当然,这个观点与模型的应用场景有关。
所以,企业的管理和大数据工作,要以提高数据质量为核心。从某种意义上讲,管理好的企业才能用好模型。讲工业大数据时,很多人总是强调数据量大。在我看来,数据量大本身并没有多大作用,但数据量大为提高数据质量奠定了基础,从而为模型的实用化奠定了基础。
最后,我还谈到了软件开发过程中的可靠性问题。
这样,以“可靠性、实用性”为核心,把几十年的认识串起来了。这里没有讲“第四范式”:这种事情能做,但太难了,一般人做不了。