作者:书友53034809 | 来源:互联网 | 2023-07-28 15:47
主要内容是第一部分:人工智能和测试的介绍第二部分:人工智能系统的特性和验收标准第三部分:机器学习第四部分:机器学习的性能指标和基准第五部分:人工智能系统测试简介第六部分:人工智能系
主要内容是
第一部分:人工智能和测试的介绍
第二部分:人工智能系统的特性和验收标准
第三部分:机器学习
第四部分:机器学习的性能指标和基准
第五部分:人工智能系统测试简介
第六部分:人工智能系统的黑盒测试
第七部分:人工智能系统的白盒测试
第八部分:测试人工智能的测试环境
第九部分:使用人工智能进行测试
三、机器学习
3.1 机器学习介绍
机器学习(ML)是AI的一种形式,其中基于AI的系统从提供的训练数据中学习其行为,而不是对其进行显式编程。 ML的结果称为模型,由AI开发框架使用选定的算法和训练数据创建。该模型反映了输入和输出之间的学习关系。 ML的示例用途包括图像分类,玩游戏(例如围棋),语音识别,安全系统(恶意软件检测),飞机防撞系统和自动驾驶汽车。
机器学习(ML)有三种基本方法。
使用监督的ML,该算法会根据一组标记数据的训练来创建模型。
监督ML的一个示例是,所提供的数据被标记为猫和狗的图片,并且所创建的模型有望在将来正确识别它看到的猫和狗。
监督学习解决了两种形式的问题:分类问题和回归问题。
分类是模型将输入分为不同类别的地方,例如“是-此模块容易出错”和“否-此模块不容易出错”。
回归是模型提供值的地方,例如“模块中的错误预期数量为12”。
由于机器学习是概率性的,因此我们也可以衡量这些分类和回归正确的可能性。
对于无监督的ML,训练集中的数据不会被标记,因此算法会得出数据本身的模式。
无监督ML的一个示例是,所提供的数据是有关客户的,并且系统用于查找特定的客户分组,可以按特定的方式进行销售。由于不必标记训练数据,因此比无监督ML的训练数据更容易(更便宜)地获取数据。
通过强化学习,为系统定义了奖励函数,当系统接近所需的行为时,它将返回更高的结果。利用奖励功能的反馈,系统学会改善其行为。强化学习的一个例子是使用奖励功能找到最短路径的路径规划系统。
3.2 机器学习工作流
1,了解目标
2,选择框架
3,建模
4,原始数据
5,数据预处理
6,训练模型
7,模型评价
使用验证数据,根据性能指标对经过训练的模型进行评估-然后将结果用于改进(调整)模型。通常需要对评估结果进行可视化,并且不同的ML框架支持不同的可视化选项。在实践中,通常会创建和训练几个模型,并根据评估和调整的结果选择最佳模型。
8,模型参数调整
9,模型测试
一旦对模型进行了训练,评估,调整和选择,就应该针对测试数据集进行测试,以确保符合商定的性能标准。该测试数据应完全独立于工作流中使用过的训练和验证数据。
10,模型部署
11,模型使用
12,模型监控和微调
在使用模型时,存在其状况可能演变的风险,并且该模型可能会“偏离”其预期性能。
为确保识别和管理任何漂移,应根据其接受标准定期评估运营模型。
可能认为有必要更新模型以解决漂移问题,或者可以决定对新数据进行重新训练将导致更准确或更健壮的模型,在这种情况下,可以使用新的训练数据重新建模。
可以使用A / B测试形式将新模型与现有模型进行比较。
3.3 机器学习训练和测试数据
在执行监督式ML时,将使用两个单独的数据集(训练数据集和测试集)来防止过度拟合
测试集有时称为保持集。为了支持模型的迭代评估和调整,将训练数据集分为两部分-用于训练的数据和用于评估的验证数据。但是,这可能意味着现在没有足够的数据来进行训练。
解决此问题的一种方法称为交叉验证,其中训练数据集被分为n个相等的部分,称为折叠。然后对模型进行训练和评估在每种情况下,将不同的折叠用作验证集,并将其余的折叠用作训练集。这样,可以改善训练,并且仍然可以执行评估和调整。
详细可以查看《机器学习》周志华 中的描述
3.4 机器学习中的过拟合和欠拟合
3.4.1 过拟合
当模型从无关紧要的信息中学习不正确的关系时,就会发生过度拟合,例如无关紧要的细节,随机波动和训练数据中的噪声(即训练数据中包含太多特征)。
实际上,就好像该模型已经存储了训练数据,并且在实际使用中,该模型可以很好地用于与训练数据非常相似的数据,但是很难归纳和处理新数据。
识别过度拟合的一种方法是确保使用独立于测试数据的独立测试集。
3.4.2 欠拟合
当模型无法从训练数据中识别输入和输出之间的关系时,就会发生拟合不足。
拟合不足通常发生在训练数据不足以提供足够的信息来推导输入和输出之间正确关系的情况下(即训练数据中包含的特征不足),但也可能在选择的算法不适合数据时发生。
创建用于处理非线性数据的线性模型)。
这通常会导致做出许多错误预测的简化模型。
3.5 训练数据中的偏差和公平
偏差在第二部分中有介绍。
如果训练数据包括固有偏差,则导出的模型可能会包括那些相同的偏差。
因此,必须注意确保不包括会导致结果模型不公平的数据特征。
例如,除其他功能外,以下功能应被识别为可能引起不必要的偏差:
•性别•性取向•年龄•种族•宗教•原籍国•教育背景•收入来源•家庭住址
但是,仅从训练数据中删除上述特征并不一定能解决问题,因为很可能还有其他特征(可能结合使用)仍可能导致不公平的模式(例如,父母是否离婚会导致种族定型)。
3.6 数据质量
监督学习假定训练数据正确。但是,实际上,很少会在100%的时间内正确标记训练数据集。
人类贴标人员可以犯一些简单的随机错误(例如,按下错误的按钮),而且还存在故意犯错误的可能性。标签并非总是简单地分为两类之一,更复杂的标签任务可能意味着正确的标签是有问题的。
标记可以通过多种方式执行,每种方式均会对数据质量产生固有风险:
Labelling by internal team
• Outsourced labelling
• Crowdsourced labelling
• Synthetic data generation
• AI-Based labelling
• Hybrid approaches
内部团队标记•外包标记•众包标记•综合数据生成•基于AI的标记•混合方法
例如,如果输入传感器的质量低下或校准不当,则数据的质量可能很差-当传感器数据来自多个来源(例如,使用略有不同的测量方法的实验室)时,这通常是一个问题。
数据丢失可以采用三种主要形式,每种形式对结果模型的影响不同。
如果完全随机丢失数据,则鉴于模型的概率性质,其影响不大(除了由于缺少数据而降低准确性外)。
如果错过了来自某个特定特征的数据(例如,来自女性的所有数据),那么这很可能会对生成的模型产生不利影响(除非该模型不用于对女性进行操作性预测)。
更糟糕的是,第三种情况最难发现,因为缺少给定特征的一组特定数据值(例如,年龄在35至50岁之间的女性的数据)。
由于数据收集的性质,此类问题通常在医学研究中发生。
在这种情况下,模型可能会受到严重损害。
3.7 机器学习算法/模型选择
算法的选择,模型设置和超参数是一门科学还是一门艺术都存在争议。
没有确定的方法可以纯粹从对问题情况的分析中选择最佳集合,在实践中这种选择几乎总是部分地通过反复试验来进行
1)进行此选择所需的信息包括知道模型应提供的功能,学习算法和模型可使用的数据以及必须满足的非功能要求。
在功能方面,模型通常将提供分类,值预测(回归),异常检测或根据数据确定结构(聚类)。
知道有多少数据可用可以丢弃某些算法(例如,如果可用的数据较少,则可以忽略依赖大数据的算法)。
如果数据被标记,则可以进行监督学习,否则需要另一种方法。
预期模型将使用的功能数量也将指向某些算法的选择,以及用于聚类的预期类别的数量也将指向该算法。
3.8 机器学习测试和质量验证
3.8.1 机器学习工作流回顾
3.8.2 验收标准
接受标准(包括功能性要求和非功能性要求)都应记录在案,并证明可以在此应用程序上使用。该模型应包括性能指标。
3.8.3 框架,算法/模型和参数选择
应当选择并证明选择框架,算法,模型,设置和超参数的理由。
3.8.4 模型更新
无论何时更新部署的模型,都应重新测试以确保其继续满足接受标准,包括针对可能未记录的隐式需求进行测试,例如测试模型降级(例如,新模型的运行速度比先前模型慢
)。在适当的情况下,应针对先前的模型执行A / B测试或背对背测试(back-to-back testing)。
3.8.5 训练数据质量
机器学习系统高度依赖于代表操作数据的训练数据,并且某些机器学习系统具有广泛的操作环境(例如自动驾驶汽车中使用的环境)。已知边界条件(边缘情况)会在所有类型的系统(AI和非AI)中引起故障,应将其包括在训练数据中。
就数据集的大小和偏差,透明度和完整性等特征而言,训练数据的选择应形成文件,并由专家针对更关键的系统进行校准和确认。
3.8.6 测试数据质量
训练数据的标准同样适用于测试数据,但要注意的是,测试数据必须尽可能独立于训练数据。独立程度应形成文件并说明理由。测试数据应系统地选择和/或创建,并且还应包括负面测试(例如超出预期输入范围的输入)和对抗测试
3.8.7 模型集成测试(系统测试)
应该执行集成测试以确保ML模型正确地与它作为一部分的基于AI的系统的其余部分集成。
例如,应该执行测试以检查是否将正确的图像文件传递给模型以进行对象识别,并且该文件具有模型期望的格式。
还应该执行测试以检查模型的输出是否被系统的其余部分正确地解释和使用。
3.8.8 对抗样本测试
一个对抗性的例子是,对神经网络的输入所做的非常小的更改会在输出中产生意外的(错误的)大更改(即与未更改的输入完全不同的结果)。
对抗性示例首先通过图像分类器注意到。
通过简单地改变几个像素(人眼不可见),就可以说服神经网络将其图像分类更改为一个非常不同的对象(并具有高度的置信度)。
但是请注意,对抗性示例不仅限于图像分类器,而且通常是神经网络的属性,因此适用于对神经网络的任何使用。
对抗性例子通常是可以转移的。
这意味着,导致一个神经网络发生故障的对抗示例通常会导致经过训练以执行相同任务的其他神经网络发生故障。
请注意,这些其他神经网络可能已经使用不同的数据并基于不同的体系结构进行了训练,但是在相同的对抗性示例中,它们仍然易于失败。
对抗性测试通常被称为进行对抗性攻击。
通过执行这些攻击并在测试过程中识别漏洞,可以采取措施防止将来的失败,从而提高了神经网络的鲁棒性。
可以在训练模型时进行攻击,然后在训练后的模型(神经网络)本身上进行攻击。
训练期间的攻击可能包括破坏训练数据(例如修改标签),向训练集中添加不良数据(例如不需要的功能)以及破坏学习算法。
对训练后的模型的攻击可以是白盒或黑盒,并且涉及确定对抗性示例,这些示例将迫使模型给出不良结果。
对于白盒攻击,攻击者完全了解用于训练模型的算法以及所使用的设置和参数。
攻击者使用此知识来生成对抗性示例,例如,通过对输入进行较小的扰动并监视导致模型发生较大变化的扰动。
通过黑匣子攻击,攻击者无法访问模型的内部工作原理或知识,也无法了解其训练方法。
在这种情况下,攻击者首先使用该模型确定其功能,然后构建提供相同功能的“重复”模型。然后,攻击者使用白盒方法来识别此重复模型的对抗示例。由于对抗性示例通常可以迁移,因此相同的对抗性示例通常也可以在(黑匣子)模型上使用。