经常在工作和生活中听到模型、算法,甚至常常被叫做模型算法,他们到底能做什么事情?二者是一样的还是有区别?所以需要做一个简单的理解。
一、模型
1. 模型的基本理解
我们都知道航模、船模(车模不算😂),风洞实验模型等,工作中对于复杂的事件经常通过一张图来揭示主要对象和它们之间的关系,这些都是模型,前者是物理的,后者是心智的,都是定性模型。通过这些例子,我们可以总结:模型是用一套简化的易于理解的系统去描述研究的对象系统,甚至还可以对研究对象进行预测(如风洞实验可以研究飞机的性能)。
2. 数学模型
而定量方式表达的则是其中的数学模型。模型最好是能与对象系统同构,即对象系统中的要素与数学模型中的变量一一对应,对象系统中要素之间的关系在对应的数学模型变量中以运算(算数运算、逻辑运算、集合运算等)表示出来,形成一种保持运算不变的双射。要求能正确反应对象的主要因素、特征和结构,还能推断,也就是能反应系统的变化情况。当然,这是理想状态,实际上要做到这个程度很困难。
对于数学模型来说,就是用一套易于理解的符号系统来简化同构复杂对象系统,并且能运算模型来描述对象系统演化过程。
表1: 现实对象和数学模型的对应关系
现实系统对象 | 要素间关系 | 要素 | 变量的重要程度(需要求取/设定的数据) |
---|---|---|---|
对应模型要素 | 运算(数学/逻辑/集合) | 变量 | 参数 |
模型可能是正确的,也可能是错误的。
3. 建模的理念
对象越简单描述就越能准确。如把影响因素降到最低并理想化的物理实验能有很好的模型(如物理中常把星球当成质点处理),李群能帮助推断夸克的数量及特性(参数)。但到复杂的生物界模型就有些吃力了,而到超复杂的社会领域其有效性更受考验。常用模型一种是从数据发现其趋势的外推模型,时间序列分析是典型,只要能满足统计上可接受就可以来,如通过显著性检验等。另外一直是考虑了内在运行机制因果演化的模型,有基于经济等理论的,如CGE,从瓦尔拉斯均衡出发;也有基于系统论、控制论的SD,源自正负反馈,从增量、存量、延迟等分析;还有基于整体论的CAS,从agent 、涌现等概念开始;也有直接对指标间关键构建的结构模型。这一种模型研究了显示了系统内在的结构,有着更好的说服力。
4.模型的局限
模型对社会关系简化的结构描述是正确的吗?首先社会运行的真实原因和机制是这样的吗?这让人很是生疑。其次,模型创建是依赖过去知识和数据,得到的结果可能对过去拟合很好,但一旦有一个因素起变化会改变参数和结构,模型马上出问题,泛化能力大为降低。如免疫疗法对癌症能有很好的效果,那平均成活年限这个参数肯定会大大提升,相应的社保等都会有影响。基础科学的突破传递到应用科学后对社会对影响巨大,会极大地改变社会结构,但其突破不是计划来的,所以从本质上来说,社会的规律是不可把控的,用于推测更有些吃力,就像一位著名的模型专家说的,我们不可能真实地对社会运行过程建模,但是可以得到可以用的方法,用就是了。
基于本体论的观点,我们一直希望能对本源进行解释,但模型仅仅是描述结构,显然不能完成这方面的工作,当然如果弦论正确,解释世界的构成倒也是有可能。但极端复杂的社会复杂巨系统不太相信能成功,因为数学的处理能力此时显得太简单和粗糙,如反应连续时间中对象状态连续变化的工具实在太少(一个粗糙的 Markov 模型,但是效果还是不错)。寻找本质或许不是模型能做的事情。
5.模型的重要性
虽然研究问题模型化,尤其是数学模型的应用虽然有这样那样的问题,但是绝对有必要,只要不是太迷信模型。我们中华文化一直是差不多先生,重纪录缺归纳和演绎(最早记录观察到哈雷彗星,却重来没有归纳出其76年的周期,更没有理论抽象)。量化和抽象必须要在我们文化中扎根并内生化,使用模型建设还是很有必要的,况且还是有一定作用。这对于我们社会治理的精细化是一个重要的抓手。
二、算法
算法是在有限步内解决一个问题步骤集合,是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或者多个操作,此外,一个算法还具有下列5个重要特性:
(1)有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
(2)确定性:算法中每一条指令必须有确切的涵义,读者理解时不会产生二义性,并且,在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
(3)可行性:一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的,
(4)输入:一个 有0个或者多个的输入,这些输入取自于某个特定的对象的集合。
(5)输出:一个算法有一个或者多个的输出,这些输出是同输入有着某些特定关系的量。
三、建模
建模有两种路径,一是根据先验知识进行建模,主要是根据常识或者相应理论进行建模。二是利用数据来发现其中存在的模式。
1.利用先验知识建模
有模型或者是有建立模型的理论和方法基础。
1)、利用行业内已经有的模型直接利用,如直接使用人口方面的模型,比如莱斯莉矩阵等等。
2)、利用专业领域研究的结果框架下,建立数学模型,比如说CGE模型,系统动力学模型,投入产出模型等来对特定领域建立符合当前应用一个具体模式。而模型的参数是通过算法来求解,可以获得解析解的,通过微积分、线性代数或者是抽象代数的方法求解,对于不能直接求解的,用 Monte Carlo 仿真等等方法设计确定的算法求解。
2.利用数据直接发现其中的结构
直接通过机器学习的方法通过算法利用数据获得合理的结构,并且用一个模型来描述。
1)、把问题分解为子问题,这些子问题又对应明确任务,并且把它数学化。
2)、根据数据用一个合适的算法求取,比如对待一个分类任务,即可用ANN又可以使用回归等等得到相应的模型。
3)、模型优化
4)、模型应用与解释
四、算法用于训练/求解模型
有些结构已知的模型,如 logistics 回归中各种变量系数和常量的测算,这属于结构验证方式。判断结构是否合理、选择的因素是否恰当,尤其要估计参数,有些模型是简单的,可以有解析解,但是对于一些复杂问题就必须用算法来计算结果估计参数。 Monte Carlo 仿真等,这就需要设计算法来求解了。
模型结构未知的,直接通过数据利用算法得到数据集结构,如通过深度学习中 CNN 训练出来的稀疏连接神经网络,网络本身模拟的是一个由多个函数复合成的复杂函数/模型,是对数据本身通过探究得到的关于其内在结构的一种(可以有多种)描述,属于结构发现方式。平时常说使用算法训练出模型就是这个意思。当然还需要对模型进行验证。从数据中发现存在的知识。
当前火爆的大语言模型(LLM)就是一个典型的结构发现模型。他通过输入语言(图像、语音)的,把这些内容分成一个个小的单元(分词),然后把它们转化成词向量(一般是512维的一个向量),通过对这些向量的分量按照一定的算法赋值,让某些词之间在向量空间上夹脚更小(如牡丹和玫瑰,她们都是美丽的鲜花)或者欧几里得距离跟近等,得到词元(token),然后利用self- attention机制等训练出词元之间的条件概率模型,利用这个条件概率模型,就能根据前面的单词的排列生成后续的单词序列。