对ISO 26262的分析:汽车软件中机器学习及安全问题

2024-04-08 01:38

本文主要是介绍对ISO 26262的分析:汽车软件中机器学习及安全问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、简介

二、背景

1.ISO 26262

2.机器学习

三、对ISO 26262的分析

1.危险识别

2.故障和失效模式

3.规范和验证

4.机器学习的使用标准

5.需要的软件技术


机器学习在自动驾驶中扮演着越来越重要的角色,然而,它是否足够安全仍然存在争议。ISO 26262道路车辆功能安全标准为确保安全提供了一套全面的要求,但没有解决基于机器学习软件的独特特性。在这篇文章中,作者在几个方面提出了一些建议,以解决这一问题。

一、简介

在软件开发的许多领域,机器学习的使用越来越多,汽车软件开发也不例外。高级驾驶员辅助系统和自动驾驶系统是机器学习发挥重要作用的两个领域。ISO 26262等标准的出现有助于集中行业实践,以系统且一致的方式解决安全问题。但是,ISO 26262的设计并没有考虑到机器学习这样的技术,这就造成了创新和提高安全性之间的矛盾。

最近对自动驾驶系统兴趣的激增也推动了对认证的研究。Koopman和Wagner确定了认证的一些关键挑战,包括机器学习。ML. Martin分析了ISO 26262对于自动驾驶系统的合适程度,但是关注的是它所增加的复杂性所带来的影响,而不是机器学习的具体使用。Spanfelner从驾驶员辅助系统的角度评估了ISO 26262。最后,Burton等人研究了使用机器学习组件的自动驾驶系统所需要的安全案例。本论文的贡献是对上述研究的补充。我们分析了使用基于机器学习的软件对ISO 26262各个部分的影响。特别地,我们考虑了它在危害分析领域和软件开发过程阶段的影响,确定了使用机器学习产生的不同问题,并通过对标准的更改和进一步的研究对解决这些问题的步骤提出了建议。

二、背景

1.ISO 26262

ISO 26262是规范道路车辆功能安全的标准。它建议使用危害分析风险评估(HARA)方法来识别系统中的危险事件,并指定减轻危害的安全目标。该标准有10个部分,本篇论文只关注第6部分:“软件层面的产品开发”。该标准遵循下图中众所周知的V模型。

软件层面的产品开发

汽车安全完整性等级(ASIL)是在ISO 26262中为汽车系统提出的风险分类方案。ASIL代表降低项目风险所需的严格程度,其中ASIL D代表最高,ASIL A代表最低风险。标准的第6部分详细说明了软件开发的遵从性要求。例如,图2显示了架构设计中推荐使用的错误处理机制。一种方法的推荐度取决于ASIL,其分类如下:++表示强烈推荐ASIL的方法;+表示推荐用于ASIL的方法;o表示该方法不建议使用或不建议使用ASIL。例如,优雅降级(1b)是ASIL C项的唯一推荐机制,而ASIL D项也适合独立的并行冗余(1c)。

软件架构上的错误处理机制

2.机器学习

在本文中,我们关注的是使用机器学习的软件实现,机器学习组件是使用监督、非监督或强化学习方法的训练模型。在功能性安全保障方面,在线学习的关键弱点是不能提前提出和评估安全论证。所以对于汽车系统中的机器学习组件,我们假设在线学习仅限于安全性要求不高的功能。例如,机器学习组件在线训练以了解司机的信息娱乐偏好。因此,对于本文所讨论的机器学习应用程序,我们假设训练是离线进行的。

机器学习有几个特征会影响安全性或安全性评估。

不透明性:增加机器学习模型的表达能力通常是以牺牲透明性为代价的,许多研究工作致力于在保证表达能力的同时使模型更透明。不透明是安全保障的一个障碍,因为评估人员更难以确定模型是否按预期运行。

错误率:机器学习模型通常不能很好地运行,并且有一定的错误率。此外,虽然真实错误率的估计值是机器学习过程的输出,但是这个估计值的可靠性只有统计上的保证。最后,即使真实错误率的估计值是准确的,它也不能反映系统在输入一组数据后实际运行时的错误率,因为真实误差是基于一组样本的。使用机器学习组件设计安全系统时必须考虑这些特性。

训练集:基于监督和非监督学习的机器学习模型使用可能遇到的行为的子集进行训练。因此,训练集必然是不完整的,甚至不能保证它能反映可能的输入空间。随着时间的推移,操作环境中输入的基本分布可能会偏离训练集的分布,从而降低安全性。

不稳定性:更强大的机器学习模型(例如,深度神经网络)通常使用局部优化算法进行训练,并且可以有多个优化。因此,即使训练集保持不变,训练过程也可能产生不同的结果。这种特性使得调试模型或重用以前的安全评估部分变得困难。

三、对ISO 26262的分析

在本节中,我们将详细分析机器学习对ISO 26262的影响。由于基于机器学习的软件是一种特殊类型的软件,我们将标准中与软件相关的部分划分为受影响的部分,对基于机器学习的软件的处理应区别于现有的软件处理。从ISO 26262标准的十个部分的两个部分(概念阶段危害分析和软件开发阶段)中确定了受影响的五个方面。我们下面描述了五个方面的影响与相应的建议。

1.危险识别

ISO 26262将危害定义为“当危害是身体伤害或对人的健康造成损害时,该物品的功能失常行为所造成的潜在伤害来源”。机器学习的使用会产生新的危害。一种危害类型是操作员认为自动化程序辅助(通常使用机器学习)比实际的更智能,从而变得自满。例如,驾驶员在自动转向功能中停止监视转向。

基于强化学习的组件可能会对环境产生负面影响,以实现其目标。例如,为了更快地到达目的地,自动驾驶系统可能会违反法律;自动驾驶系统可以通过利用某些传感器漏洞来“看”自己离其他车辆有多近,从而避免因与其他车辆靠得太近而受到罚款。尽管这样的危害可能是机器学习组件独有的,但它们可以追溯到故障,因此它们符合ISO 26262的现有准则。

对ISO 26262的建议:应将危害预防范围扩大,包括人与车辆之间复杂的行为交互可能造成的危害,而这些行为交互不是由于系统故障造成的。

2.故障和失效模式

ISO 26262要求使用诸如故障模式影响分析(FMEA)之类的分析来确定故障如何导致危害。不同于一般的软件,很多故障是机器学习独有的。神经网络的具体故障类型和模式已经被编目。如网络拓扑结构和学习方法的错误,导致泛化能力差(如层间连通性不够,学习速率过高,等等)或者错误的训练集。

针对ISO 26262的建议:机器学习故障的独特类型为开发有针对性的工具和技术提供了机会,以帮助机器学习模型发现故障。例如,Chakarov等人描述了一种用于调试错误分类的技术,而Nushi等人提出了一种解决由于链接的机器学习组件之间的复杂交互而导致的故障的方法。随着这些技术的成熟,应该对ISO 26262进行修改,要求对机器学习组件使用这些技术

当功能很复杂并且汽车安全完整性等级很高(例如,在更高的自动化级别上),只有通过增加或改进训练集,错误率才可能达到一个可接受的低水平。应该需要专门的体系结构技术来帮助减轻机器学习故障和故障的影响。

3.规范和验证

ISO 26262的建议:因为机器学习组件是从固有的不完整数据集中训练出来的,所以它们违反了基于V模型的流程中组件功能必须完全指定,且修改是可验证的假设。此外,机器学习非常适合的某些类型的高级功能(例如,需求感知)在原则上可能是未知的。因此,机器学习组件在设计时就预知有错误率,并且会周期性地失败。相比取消此类功能,作者建议ISO 26262根据功能是否可指定提供不同的安全要求。 

4.机器学习的使用标准

通过使用端到端方法,机器学习可以在体系结构级别与系统一起广泛使用,或者仅在组件级别使用。端到端方法挑战了这样一种假设,即将复杂系统建模为一种具有各自功能的组件的稳定层次分解。这限制了对系统安全的大多数技术的使用,因此我们建议ISO 26262只允许在组件级别使用机器学习。

5.需要的软件技术

ISO 26262要求在软件开发生命周期的不同阶段使用许多专门的技术。我们的分析表明,其中一些仍然适用于机器学习组件,而其他一些可以很容易地进行调整,但是仍然有许多技术特别倾向于使用命令式编程语言实现代码的。为了消除这种偏见,在不影响安全性的情况下,应该用技术的意图和成熟度来表达需求,而不是用技术的具体细节来表达需求。

 

更多资讯欢迎关注“上海控安研发与转化功能型平台”

这篇关于对ISO 26262的分析:汽车软件中机器学习及安全问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/884231

相关文章

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错