人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法
人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法
随着深度学习革命的不断发展,AI算法驱动的软件产品越来越影响我们的生活。比如人脸识别、机器翻译等应用越来越广泛,技术也在像纵深方向发展,比如像自动驾驶从L2向L5不断迭代。
但是,一个硬币往往是有两面的,随着AI软件复杂性的提升,可靠性问题、安全问题的重要性也成为躲不过的关口。
算法工程师的技术栈也是有限的,对于传统的软件工程、软件分析、软件验证等方向上加的技术点容易不足。所以指望算法工程师同学靠自测来避免可靠性问题可能并不是银弹,我们需要一个跨学科的方法论来征服这片新大陆。
AI软件可靠性概述
按照中国计算机学会软件工程专业委员会2020年发布的《智能软件可靠性的研究进展与趋势》的分类,AI软件可靠性的分类如下图所示:
其中上面的部分,也就是数据可靠性的部分,是算法同学们比较熟悉的,不仅受过专业的训练,而且在实战中也积累了比较丰富的经验。所以我们后面遇到就具体问题具体分析,直接讨论细节。
下面的部分,也就是软件和硬件平台的可靠性,是工程同学比较熟悉的,可能深度学习框架和AI加速芯片等新因素带来的一些新挑战,但是跟传统的软件还是一脉相承的。
相对复杂一些的是中间的部分,也就是模型可靠性部分,比如可解释性就是一个一直以来算法的难题。对于AI软件的正确性分析,也是一个较新的课题。
这一部分的困难在于,需要对于软件工程、程序分析等传统软件技术要有一定深度的了解,同时还要对深度学习算法等有精深的理解。
如何保障AI软件的可靠性
上面讲的三类可靠性,大家应该是都认可的,但是只有这些理论还太虚,我们需要讨论如何落地。
如果要保障AI软件的可靠性的话,办法无非两种:一种是测试,一种是正确性验证的方法。
我们先看下知识体系的大图:
测试的话其实挑战相对更小一些,只是相对。
首先,我们有生成对抗网络这样的利器,这是AI软件独有的方便。
其次,在传统测试中发挥重要作用的模糊测试和符号执行,在AI软件中还是可以使用。
第三,写测试脚本时,需要指定验证所期望的结果,这方面有蜕变测试等方法可用。
第四,参照普通软件的coverage测试,我们可以对AI软件也进行神经元级、网络层次级的覆盖率测试,也可能进行MC/DC分支情况覆盖率测试。
验证方面,也有传统技术和深度学习结合的方法,比如基于SAT/SMT求解器的约束求解方法,基于抽象解释的方法。
针对AI模型,也有其个性化的属性,比如局部鲁棒性属性、区间属性等,其基础是利普希茨属性。
利普希茨属性是一个连续性属性,有点类似于我们学习微积分时的连续性概念,它主要限制的是函数变化的速度。我们在神经网络中,主要限制的是向量之间的变化速度,也就是范数的变化值。在不同的函数中,变化最大值是个常数,叫做利普希茨常数,这个值在实践中我们需要做一些估计。
这一节就先说这么多,后面我们针对测式和验证两个方向依次展开。
人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法相关推荐
- as ssd测试软件得分分析,关于AS SSD Benchmark软件和4K读写性能浅析
我们在测试SSD时经常用到AS SSD Benchmark这个软件.通过这个软件大致了解到一些SSD的读写情况.但是一些高逼格的朋友,竟然可以通过这个软件测试出来的4K读写性能,来判定SSD的性能好坏 ...
- 机器学习:软件漏洞分析
Software Vulnerability Analysis and Discovery Using Machine-Learning and Data-Mining Techniques: A S ...
- 关于学习软件逆向分析意义的阐述
1对本课程教学地位的理解和想法(学习软件逆向分析的意义) 1.1逆向工程的起源 世界上最早的逆向工程其实来源于战争时期.在军事战争时期,各国之间常常存在水上作战,而船舶就成了运输和作战的重要工具.如下 ...
- AI软件写作实战测试:写作技巧 - 让智能写作助手变得更加智能化?
最近测试了一些AI软件,市面上很多分列各种AI软件的推荐,但是对于AI软件写作的一些技巧,比较缺乏分析和总结.本文尝试从自身实践出发,分享个人的一些感受.具体写效果可以查看如下视频: AI智能写作软件 ...
- 软件工程个人作业-软件案例分析
软件工程个人作业-软件案例分析 目录 软件工程个人作业-软件案例分析 1. CSDN APP 1.1. 调研,评测 1.1.1. 软件简介 1.1.2. 优缺点分析 1.1.3. 软件 bug a. ...
- 个人作业二-软件案例分析
个人作业-软件案例分析-音乐软件 项目 内容 这个作业属于哪个课程 2023年春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目标是 学习软件工程方法,提升解决 ...
- SCA(软件成分分析)中的知识图谱技术
在开源广泛使用的今天,如何解决开源组件中潜在的风险问题也被众多企业提上了日程.开源风险包括漏洞风险,许可证风险等等,现在一般的解决方法是使用SCA工具. SCA工具最基础的检测能力就是对开源组件中的依 ...
- 软件成分分析技术介绍
软件成分分析技术介绍 1.关于软件成分分析 SCA,Software Composition Analysis,软件成本分析是一种对二进制软件的组成部分进行识别.分析和追踪的技术.在开源软件日益盛行的 ...
- 软件成分分析:华为云重磅发布开源软件治理服务
摘要:软件成分分析,指通过对软件源码.二进制软件包等的静态分析,挖掘其所存在的开源合规.已知漏洞等安全合规风险,是一种业界常见的安全测试手段. 本文分享自华为云社区<华为云重磅发布开源软件治理服 ...
最新文章
- 数据流分析与 SSA | 什么是静态单赋值 SSA
- 数据结构与算法 / 红黑树
- 使用secure CRT的SFTP在LINUX与WINDOWS下交换文件
- ActiveMQ持久化到mysql
- Hulu:如何实现大型比赛直播系统自动扩容
- python滚动文本框_调整滚动Tkinter文本框的大小
- Spring.NET学习笔记22——整合WCF(应用篇) Level 200
- Python读取Access数据库基本操作
- Android 四大组件学习之Service七
- C#:System.Data.SQLite数据库介绍
- DB2数据库错误代码大全
- xftp中文文件名乱码
- #WPF#Dirkster.AvalonDock教程
- angular的生命周期
- IDEA+Gradle搭建Spring Boot项目
- allergro音乐术语什么意思_常见音乐术语(速度术语)
- 初探Kronecker product(克罗内克积)
- 延缓青少年近视进展的新方案
- php配置使用pdo,解析php5配置使用pdo
- html图片切换动画,js实现图片切换(动画版)
热门文章
- 访谈 | 终于有人为了我解答了关于量化(交易)的种种疑惑
- windows10怎么备份操作系统
- 让职场人心惊胆战的职场“黑话大全” 您知多少?
- fastjson1.2.24TemplatesImpl利用链源码分析
- 从单块架构到分布式架构之数据库集群(三)
- FLV文件(H264 + AAC)格式超详细分析
- Romberg(龙贝格)积分法 | matlab
- C语言strlen()函数用法
- 【已解决】Windows更新:你的设备中缺少重要的安全和质量修复(电脑自动更新帮我解决的,文中的方法我之前试过没用)
- Struts2的介绍~~(跟着佟刚老师视频)