
作者:Mark Pitchford LDRA技术专家
降低安全关键型软件中的人工智能/ML 风险
人工智能(AI)和机器学习(ML)是安全关键型嵌入式软件开发人员的最新领域。这些技术可以大规模集成和分析数据,并支持具有人类智能的功能。作为习惯了数十年风险缓解流程和技术的功能安全从业人员,从事这一领域工作的开发人员必须适应人工智能/ML 的巨大前景,同时不影响所构建系统的任何级别的安全性。
什么是人工智能和机器学习?
ChatGPT、GitHub Copilot、Amazon Q Developer 和类似的生成式人工智能工具引起了人们的广泛关注,也让人们对人工智能/机器学习到底是什么感到困惑。对于安全关键型开发而言,AI/ML 涵盖了从编码助手到主要车载功能等看似无限的广泛应用能力。
牛津英语词典》将人工智能定义为 “计算机或其他机器表现或模拟智能行为的能力;与此相关的研究领域”。OED 将机器学习定义为 “计算机通过使用算法和统计模型来分析和推断数据中的模式,在不遵循明确指令的情况下进行学习和适应的能力”。
人工智能的类型
人工智能算法分为 “狭义 ”和 “广义 ”两种。狭义(或弱)人工智能执行特定任务,缺乏类似人类的一般智能。IBM 的 “深蓝 ”可能是弱人工智能最著名的例子,现代聊天机器人、图像识别系统、预测性维护模型和自动驾驶汽车也是如此。自动单元测试向量生成是弱人工智能的一种形式,因为它通过从现有代码中提取测试存根和控制来 “模拟智能行为”。图 1 显示了一组通过软件自动创建的测试向量,无需人类花时间创建。
图 1. LDRA 工具套件创建的测试向量(来源:LDRA)
相比之下,通用(或强)人工智能能执行各种任务,并能自学解决新问题,就像依靠人类智能一样。这类系统目前尚未开发出来,而且关于在我们有生之年是否有可能实现这类系统还存在很多争议(尽管有《星际迷航》的主计算机)。
机器学习的类型
机器学习可按促进其算法的数据类型进行分类,分为 “有标签 ”和 “无标签 ”两种。标记数据是指以某种方式标注了正确结果或目标值的数据。这类数据通常比非标记数据更难获取和存储。
机器学习的四种主要类型是
监督学习: 算法在有标记的数据上进行训练,从而为每个输入提供正确的输出。将输入映射到输出所获得的经验为预测新数据提供了基础。
无监督学习: 该算法给定无标签数据,并识别出供应用程序使用的模式或结构。
半监督学习: 该算法在标注数据和非标注数据的组合上进行训练。
强化学习: 算法根据奖励系统学习决策序列,接收决策质量反馈并相应调整方法。
功能安全中的应用
虽然不同类型的 ML 需要不同程度的人工输入,但它们都符合功能安全标准,在部署过程中已证明能产生足够可靠的软件。例如,IEC 62304 “医疗设备软件-软件生命周期流程 ”功能安全标准就是一种典型的 “需求优先 ”方法,通过监督和半监督学习得以体现。
该标准并没有坚持采用任何特定的流程模型,但通常采用 V 模型来表示,如图 2 所示。
图 2. IEC 62304 功能安全标准规定的开发阶段的 V 模型表示法(来源:LDRA)
针对 AI/ML 的特定行业调整
国际医疗设备监管机构论坛 (IMDRF) 发布了一份文件,定义了用于医疗目的的软件的系统风险分类方法。该文件被称为 “作为医疗设备的软件”: 该文件根据对患者的影响程度对特定设备的风险进行分类,如图 3 所示。
图 3. 软件作为医疗设备 (SaMD) 对患者的影响,“I ”代表最低风险,“IV ”代表最高风险(来源:IMDRF)
这包括软件的预期用途、软件提供的信息对医疗决策的重要性以及软件故障的潜在后果等因素。
由于这种分类与创建软件所使用的方法无关,因此医疗设备开发人员可以应用这些准则来确定基于人工智能/ML 技术的软件所需的要求和监管审查水平。
汽车行业则采取了更加积极主动的态度,制定了新的标准,以适应人工智能/ML 应用的发展:
ISO/CD PAS 8800《道路车辆--安全与人工智能》: 该标准将定义与安全相关的特性以及影响人工智能性能不足和故障行为的风险因素。
ISO/CD TS 5083:《道路车辆--自动驾驶系统安全--设计、验证和确认》: 该文件将概述并指导开发和验证配备安全自动驾驶系统的自动驾驶汽车的步骤。
图 4 说明了这些标准如何与现有行业准则相匹配。
图 4. 现有指南背景下的新人工智能汽车安全标准 ISO PAS 8800 和 ISO DTS 5083(资料来源:LDRA)
在安全关键型应用中降低人工智能/移动语言风险的方法
在现代系统中,基于人工智能/ML 的组件的输出将被发送到使用非人工智能技术构建的软件中,包括有人类参与的系统。这支持安全关键型开发人员所熟悉的领域隔离,其中包含人工智能/ML 组件,而非人工智能组件则旨在降低跨领域交互的风险。
IEC 62304:2006 +AMD1:2015允许采用这种方法,规定 “软件架构应促进安全运行所需的软件项目的隔离,并应描述用于确保这些软件项目有效隔离的方法”。它进一步指出,隔离并不限于物理隔离,而是 “防止一个软件项目对另一个软件项目产生负面影响的任何机制”。这表明人工智能/ML 组件与传统组件之间的软件隔离是有效的。
当前的测试工具可以支持这些跨领域交互的风险评估和缓解。如图 5 所示,污点分析可以验证从人工智能/ML 组件流入传统开发软件的数据流。
图 5. 使用 LDRA 工具套件进行污点分析(来源:LDRA)
欧洲航空安全局(EASA)文件《人工智能路线图》: 欧洲航空安全局 (EASA) 的文件《人工智能路线图:以人为本的航空人工智能方法》中提出了确保人工智能安全的其他建议:
让人类参与指挥或参与回路。
通过传统的备份系统监控人工智能/ML 的输出。
在基于规则的方法中封装 ML。
通过独立的人工智能代理监控人工智能。
降低人工智能/ML 安全风险从今天的工具开始
安全关键型系统的开发人员对人工智能/ML 算法持谨慎态度,并正在寻找主动降低风险的方法。对于不愿采用 AI/ML 的团队来说,现有的功能安全原则(如域隔离)可以有效降低风险。现有工具也可用于确定 AI/ML 对传统开发的软件项目的影响