01、为什么要度量AI?
人工智能(AI)的不断演进和革命性变化正在彻底改变我们的世界。这个过程涉及了从计算机科学到统计学,从数学到认知心理学等多个学科。然而,准确而有意义地度量AI还是一个复杂的挑战。
首先,为什么要度量?
从理论上来讲,IT行业的管理,还是延续了德鲁克、戴明等大师的管理思想——无量化,不管理。目前,业界也有一些对AI的评分、排名。但是很少从“规模”的维度上来度量。
在实用层面上,则可以追溯到“人月神话”故事。AI的购买者,AI研发的管理者,希望能够对AI研发的工作量、工期、成本进行“量化”评估。
在2020年左右,大语言模型(LLM)还没有横空出世,国内某金融机构的IT研发组织就已委托我们进行过“规模度量”方面的研究。当时,他们已经有几百人在做AI的研发——图像和语音识别、决策分析等领域。领导希望通过规模度量,来了解到他们的“效能”如何?
我们当时使用了“人类学习”的方式,建立了一个度量模型。
02、度量AI的什么?
我们先回顾一下软件工程的度量。
“规模度量”主要分为两大类:功能与非功能。在世界范围,应用最广泛的还是“功能规模度量”,即:以功能点(FP)为计量单位的度量方法。而“非功能性规模”,则只是有欧美的部分组织在实践。
这两大类度量方法,都有ISO/IEEE的标准。其中,功能规模度量的5个标准,在2023年都形成了国内的版本。国内很多政府和企业,基于此发布了地方标准、团体标准、内部的管理办法等等。可以说,我国在功能规模度量领域已取得了显著的进步;但是“非功能性规模度量”的实践,还是步履蹒跚。
对于AI的度量,不仅是度量功能规模。还应该考虑其他“非功能性”特性的度量:可解释性、伦理和信任;应考虑算法的复杂性、模型的泛化能力以及机器学习的鲁棒性。
对于AI,还要评估其“数据源”——质量与数量、可靠性。
对于传统软件,我们是会评估软件的“数据功能规模”——包含多少个业务数据、业务规则。但是,我们并不考虑某个业务数据(ILF/EIF)包含多少条记录,每条记录的质量。软件开发厂商以及咨询公司,只是会劝告客户——垃圾进、垃圾出。以此,他们把信息化、数字化的责任撇得干干净净。如果软件没有用好,那责任是在客户/用户——输入了太多垃圾。
但是AI,是自带数据集,ta自己是对模型的输出质量负责。AI的价值就在于数据的管理与分析。
03、弱AI的开发步骤
即使“大模型”现在大红大紫,我们现在还是处于“弱AI”(Weak AI)的时代。这类AI系统专注于特定的任务或领域,如语音识别、图像分类、推荐系统等。它们在特定任务上可能表现得非常出色,甚至超过人类的表现,但它们的智能仅限于它们被训练执行的特定任务。弱AI不理解任务之外的概念,也无法将知识从一个领域转移到另一个领域。
一般而言,研发主要步骤如下:
数据收集:首先收集并准备大量与AI目标相关的数据。
算法选择:我们选择最适合解决类型问题的算法和可用数据。根据问题类型(例如,分类、回归、聚类等),考虑不同类型的算法。例如,对于分类问题,可能会使用支持向量机(SVM)、人工神经网络或决策树等算法。
模型训练:我们使用收集到的数据来训练AI模型,可以是监督式的或无监督式的。
优化:我们调整算法参数以提高模型的性能。
评估和测试:我们使用测试数据评估AI模型,以确保其准确性和可靠性。
实施和监控:一旦模型准备好,就将其实施到操作环境中,并监控其长期正常运行。
04、一个AI度量的实践
Komarova女士,做了一个很实用的AI——根据位置、面积来估算房价。他们选择使用线性回归作为机器学习算法。模拟涉及变量(如房价、位置和面积),计算之间的线性关系。可能是意大利的房价比较平稳,比较“线性”。
他们从可靠的信息来源,收集了过去三年的房屋销售的历史数据,包括要价和实际售价等信息。
首先,他们先是对这些数据进行处理:格式化、清洗、标准化。然后用数据进行模型训练,识别数据中的模式,并根据这些模式进行预测。
训练完成后,使用一个单独的测试数据集来评估模型的性能。
最终结果由一个多学科团队评估,包括房地产专家、数据分析师和软件工程师。
度量AI的规模
对于这个AI,从两个方面进行度量:
1、度量功能规模。
1.1、数据功能。可以识别3个ILF(区域、房屋特征、其他价格因素);总计是21个功能点。这里需要参考IFPUG的一些白皮书:如何度量数据仓库。
1.2、事务功能,主要是3类功能。
1.2.1、数据获取(他们开发2个功能来生成上述的数据,1个是手工录入,1个是通过Excel导入;这总计是2个EI,8个功能点。这里可以看出来老外的功能设计比较节俭,他们用1个手工功能来录入3个ILF;很可能他们将3个ILF设计为了1个宽表);
1.2.2、数据分析(即:算法选择与训练,这部分属于非功能需求,详见下文);
1.2.3、数据输出(即:展示估算的房价,1个EO,5个功能点)。
总计是34个功能点,他们预测的工作量是3人小组工作40天,总计是120人天。如此折算,他们的生产率是28.24人时/功能点。这个数据比起传统的应用软件开发要高很多。
2、度量非功能规模
2.1、可以根据SNAP(即:非功能规模的度量标准)来进行度量:数据收集与质量、算法与模型、训练与优化。这些特性都可以使用标准的方法来度量,只是Komarova女士并没有给出具体的数字结果。
2.2、目前,没有度量标准的:可解释性、可扩展性和鲁棒性、伦理和安全性、测试和验证、变化管理(即:考虑环境变化对“房价”的影响,例如:社区有新的基础设施建设)。
05、总结1:重视非功能规模度量
上述AI项目的功能规模,度量的结果只有34个功能点。Komarova女士也认为,这个数字可能与工作的“复杂度”不成比例。注意:她可没有说“相关性”差。所以,她的结论之一,对于AI,不能仅仅度量功能规模,还必须要度量非功能的规模。
例如:要度量“数据”的规模——用来训练和测试的数据既要有数量,又要有质量。
对于AI的一些特性,SNAP有现成的方法。但是还是有很多的空白领域等待专家们去研究。
06、总结2:考虑行业性
不同领域的AI评估需要特定的规模度量方法。
例如,在医疗领域,基于AI的诊断系统,可以根据其诊断的准确性和结果解释能力来评估规模的大小;在金融行业,自动交易算法可以根据其在不同市场条件下产生利润的能力来度量;在制造业,基于AI的质量控制系统可以根据其准确性来评估。
最后,也说一下我的感想。在非功能规模度量的实践上,相比较欧美,我国有一些落后。在功能规模度量的领域,我们虽然是方兴未艾,但是整体基础还是比较薄弱。这两个领域,都需要我们踏踏实实去学习、实践,不能再欠“技术债”了。