人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法

随着深度学习革命的不断发展,AI算法驱动的软件产品越来越影响我们的生活。比如人脸识别、机器翻译等应用越来越广泛,技术也在像纵深方向发展,比如像自动驾驶从L2向L5不断迭代。
但是,一个硬币往往是有两面的,随着AI软件复杂性的提升,可靠性问题、安全问题的重要性也成为躲不过的关口。
算法工程师的技术栈也是有限的,对于传统的软件工程、软件分析、软件验证等方向上加的技术点容易不足。所以指望算法工程师同学靠自测来避免可靠性问题可能并不是银弹,我们需要一个跨学科的方法论来征服这片新大陆。

AI软件可靠性概述

按照中国计算机学会软件工程专业委员会2020年发布的《智能软件可靠性的研究进展与趋势》的分类,AI软件可靠性的分类如下图所示:

其中上面的部分,也就是数据可靠性的部分,是算法同学们比较熟悉的,不仅受过专业的训练,而且在实战中也积累了比较丰富的经验。所以我们后面遇到就具体问题具体分析,直接讨论细节。
下面的部分,也就是软件和硬件平台的可靠性,是工程同学比较熟悉的,可能深度学习框架和AI加速芯片等新因素带来的一些新挑战,但是跟传统的软件还是一脉相承的。
相对复杂一些的是中间的部分,也就是模型可靠性部分,比如可解释性就是一个一直以来算法的难题。对于AI软件的正确性分析,也是一个较新的课题。
这一部分的困难在于,需要对于软件工程、程序分析等传统软件技术要有一定深度的了解,同时还要对深度学习算法等有精深的理解。

如何保障AI软件的可靠性

上面讲的三类可靠性,大家应该是都认可的,但是只有这些理论还太虚,我们需要讨论如何落地。

如果要保障AI软件的可靠性的话,办法无非两种:一种是测试,一种是正确性验证的方法。

我们先看下知识体系的大图:

测试的话其实挑战相对更小一些,只是相对。
首先,我们有生成对抗网络这样的利器,这是AI软件独有的方便。
其次,在传统测试中发挥重要作用的模糊测试和符号执行,在AI软件中还是可以使用。
第三,写测试脚本时,需要指定验证所期望的结果,这方面有蜕变测试等方法可用。
第四,参照普通软件的coverage测试,我们可以对AI软件也进行神经元级、网络层次级的覆盖率测试,也可能进行MC/DC分支情况覆盖率测试。

验证方面,也有传统技术和深度学习结合的方法,比如基于SAT/SMT求解器的约束求解方法,基于抽象解释的方法。
针对AI模型,也有其个性化的属性,比如局部鲁棒性属性、区间属性等,其基础是利普希茨属性。
利普希茨属性是一个连续性属性,有点类似于我们学习微积分时的连续性概念,它主要限制的是函数变化的速度。我们在神经网络中,主要限制的是向量之间的变化速度,也就是范数的变化值。在不同的函数中,变化最大值是个常数,叫做利普希茨常数,这个值在实践中我们需要做一些估计。

这一节就先说这么多,后面我们针对测式和验证两个方向依次展开。

人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法相关推荐

  1. as ssd测试软件得分分析,关于AS SSD Benchmark软件和4K读写性能浅析

    我们在测试SSD时经常用到AS SSD Benchmark这个软件.通过这个软件大致了解到一些SSD的读写情况.但是一些高逼格的朋友,竟然可以通过这个软件测试出来的4K读写性能,来判定SSD的性能好坏 ...

  2. 机器学习:软件漏洞分析

    Software Vulnerability Analysis and Discovery Using Machine-Learning and Data-Mining Techniques: A S ...

  3. 关于学习软件逆向分析意义的阐述

    1对本课程教学地位的理解和想法(学习软件逆向分析的意义) 1.1逆向工程的起源 世界上最早的逆向工程其实来源于战争时期.在军事战争时期,各国之间常常存在水上作战,而船舶就成了运输和作战的重要工具.如下 ...

  4. AI软件写作实战测试:写作技巧 - 让智能写作助手变得更加智能化?

    最近测试了一些AI软件,市面上很多分列各种AI软件的推荐,但是对于AI软件写作的一些技巧,比较缺乏分析和总结.本文尝试从自身实践出发,分享个人的一些感受.具体写效果可以查看如下视频: AI智能写作软件 ...

  5. 软件工程个人作业-软件案例分析

    软件工程个人作业-软件案例分析 目录 软件工程个人作业-软件案例分析 1. CSDN APP 1.1. 调研,评测 1.1.1. 软件简介 1.1.2. 优缺点分析 1.1.3. 软件 bug a. ...

  6. 个人作业二-软件案例分析

    个人作业-软件案例分析-音乐软件 项目 内容 这个作业属于哪个课程 2023年春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目标是 学习软件工程方法,提升解决 ...

  7. SCA(软件成分分析)中的知识图谱技术

    在开源广泛使用的今天,如何解决开源组件中潜在的风险问题也被众多企业提上了日程.开源风险包括漏洞风险,许可证风险等等,现在一般的解决方法是使用SCA工具. SCA工具最基础的检测能力就是对开源组件中的依 ...

  8. 软件成分分析技术介绍

    软件成分分析技术介绍 1.关于软件成分分析 SCA,Software Composition Analysis,软件成本分析是一种对二进制软件的组成部分进行识别.分析和追踪的技术.在开源软件日益盛行的 ...

  9. 软件成分分析:华为云重磅发布开源软件治理服务

    摘要:软件成分分析,指通过对软件源码.二进制软件包等的静态分析,挖掘其所存在的开源合规.已知漏洞等安全合规风险,是一种业界常见的安全测试手段. 本文分享自华为云社区<华为云重磅发布开源软件治理服 ...

最新文章

  1. 数据流分析与 SSA | 什么是静态单赋值 SSA
  2. 数据结构与算法 / 红黑树
  3. 使用secure CRT的SFTP在LINUX与WINDOWS下交换文件
  4. ActiveMQ持久化到mysql
  5. Hulu:如何实现大型比赛直播系统自动扩容
  6. python滚动文本框_调整滚动Tkinter文本框的大小
  7. Spring.NET学习笔记22——整合WCF(应用篇) Level 200
  8. Python读取Access数据库基本操作
  9. Android 四大组件学习之Service七
  10. C#:System.Data.SQLite数据库介绍
  11. DB2数据库错误代码大全
  12. xftp中文文件名乱码
  13. #WPF#Dirkster.AvalonDock教程
  14. angular的生命周期
  15. IDEA+Gradle搭建Spring Boot项目
  16. allergro音乐术语什么意思_常见音乐术语(速度术语)
  17. 初探Kronecker product(克罗内克积)
  18. 延缓青少年近视进展的新方案
  19. php配置使用pdo,解析php5配置使用pdo
  20. html图片切换动画,js实现图片切换(动画版)

热门文章

  1. 访谈 | 终于有人为了我解答了关于量化(交易)的种种疑惑
  2. windows10怎么备份操作系统
  3. 让职场人心惊胆战的职场“黑话大全” 您知多少?
  4. fastjson1.2.24TemplatesImpl利用链源码分析
  5. 从单块架构到分布式架构之数据库集群(三)
  6. FLV文件(H264 + AAC)格式超详细分析
  7. Romberg(龙贝格)积分法 | matlab
  8. C语言strlen()函数用法
  9. 【已解决】Windows更新:你的设备中缺少重要的安全和质量修复(电脑自动更新帮我解决的,文中的方法我之前试过没用)
  10. Struts2的介绍~~(跟着佟刚老师视频)