数据和测试评价--《大模型测试技术与实践》

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


第二章  数据和测试评价

2.1  数据收集和清洗

为了训练大语言模型(LargeLanguageModel,LLM),需要收集足够的数据。数据应该涵盖各种情况和场景,以确保大语言模型(后文简称大模型)在各种情况和场景下都能准确地运行。

数据可以拥有各种来源,例如公共数据集、第三方数据提供商、内部数据集和模拟数据集等,数据的来源应该是真实的,并且应该涵盖大模型预计的使用情况。数据应该根据特定的需求进行采样和处理。

很多用于训练大模型的数据从广义上可以分成两大类:

其一是通用文本数据,包括网页、图书、网络留言,以及网络对话等,这类数据主要因为获取容易、数据规模大而广泛地被大模型利用,通用文本数据更容易提高大模型的泛化能力;

其二是专用文本数据,主要是一些多语言类别的数据、与科学相关的产出数据和代码,这类数据可以提高大模型完成专项任务的能力。

准备数据时,应该注意数据的质量,例如数据的准确性、完整性和一致性。

另外,还应该考虑数据安全性和隐私性方面的问题,如果数据包含敏感信息,例如用户的个人身份信息,则应该采取脱敏措施来确保数据的安全性和隐私性。

数据收集也是测试大模型的重要步骤之一,测试工程师需要进行充分的数据收集,以确保测试的准确性和全面性。

数据收集完成后,通常需要对数据进行清洗,数据清洗流程如图2-1所示。

这里的清洗指的是对数据中一些“不好的内容”进行处理,从而确保数据的质量,“不好的内容”指的是噪声、冗余数据、脏数据等。

无论收集到的数据是通用文本数据还是专用文本数据,都必须经过一系列的数据清洗才能用于大模型的训练。

面对所收集的初始数据集,首先需要通过质量过滤提高数据集的数据质量,常规的做法是设计一组过滤规则,删除低质量的数据,从而实现数据质量的提高。了解数据过滤规则对于测试工程师来说至关重要。

这不仅可以帮助删除低质量数据、保持数据一致性,还可以提高测试的可靠性和准确性,从而更好地评估大模型的性能和效果。

常用的数据过滤规则有基于语言的过滤规则、基于度量的过滤规则、基于统计的过滤规则和基于关键词的过滤规则。

图2-1数据清洗流程

  • 基于语言的过滤规则:如果LLM主要用于处理关于某种语言的任务,则可以设计删除其他语言的数据过滤规则,从而只保留目标语言的数据。

  • 基于度量的过滤规则:可以利用生成文本的评估度量,也就是利用LLM生成的问题进行度量,从而检测并删除一些不自然的数据。

  • 基于统计的过滤规则:利用数据集中的统计特征评估数据集中的数据的质量,删除低质量的数据,这里的统计特征可以是符号的分布、符号与单词比例、句子长度等。

  • 基于关键词的过滤规则:基于特定的关键词集合识别和删除文本中的噪声或无用元素,例如HTML标签、有毒词语等。

数据清洗中的一个重要工作是去重和补缺。收集到的数据集中可能有很多重复的数据,在将数据集投入使用之前,可以通过检测数据的个字段来删除重复数据,确保数据集中的数据都是唯一的。

在去重的过程中,我们同样也会关注数据是否缺失,这里的缺失是指某些字段或特征缺少信息,而不是指缺失某个方面的数据。对于存在缺失值的数据,我们可以删除该数据,也可以使用插补方法填充缺失信息。

目前常用的插补方法有均值填补、中位数填补、众数填补,以及用其他模型进行预测填补等。

  • 均值填补就是使用数据集中其他数据的算术平均数(算术平均数中通过将所有数值相加后除以数值个数来计算)进行填补;

  • 中位数(中位数是按顺序排列的一组数据中居于中间位置的数)填补和均值填补的思路类似,其使用对应缺失字段的中位数进行填补;

  • 众数(众数是一组数据中出现次数最多的数)填补也有着同样的思路,只是用众数替换了上面的算术平均数和中位数;

用其他模型进行预测填补是目前相对较新的一个方向,它利用一些模型的预测能力来填补缺失的数据。

无论使用哪一种方法,都存在填补后数据出现重复的可能,因此去重和补缺是一项需要反复交替进行的工作。

由于数据的来源不唯一,因此数据除重复、缺失以外,还有可能出现不一致的问题,这些问题有些是原始系统的数据由人工输入导致的,有些是不同系统的设计差异导致的。

例如对于日期的存储,不同系统的设计差异非常大,有的采用了日、月、年的顺序存储,有的采用了月、日、年的顺序存储,有的采用了“/”作为分隔符(如20/02/2022,表示2022年2月20日),有的采用了“-”作为分隔符(如02-20-2022,表示2022年2月20日),因此需要将含义相同但格式不一致的数据统一格式,包括转换文本数据的大小写形式、统一单位等。

在处理数据一致性的过程中,也需要关注数据的异常值,这里的异常值不是由数据缺失引起的,而是数据有明显的问题。数据往往都是经过原始系统处理后保存的,这些原始系统的设计往往会导致数据出现问题,如果这些数据的来源是人工输入,则会带来各种可能的问题,这些因素综合导致了异常值的存在。

异常值可能是由测量错误、数据录入错误或出现真实且重要的异常情况引起的,例如我们在人口统计数据中,看到年龄字段中的一个值为300,那么这个值就明显违背了常规逻辑,因此我们可以选择删除异常值,或者使用前面介绍的插补方法中的均值填补、中位数填补、众数填补等进行填补。

隐私删除也是数据清洗必不可少的流程之一。用于训练大模型的数据绝大部分来自网络,这里面包含大量的敏感信息和个人隐私信息,如果将这样的数据用于大模型的训练,就会给大模型带来伦理道德方面的潜在风险,增加隐私泄露的可能性。

因此,必须从数据集中删除这方面的内容。在隐私删除过程中,比较常用的方法是基于规则的方法,例如建立删除规则的关键字,通过关键字删除姓名、电话、地址、银行账号等包含个人隐私信息的数据。

在完成如上数据逻辑方面的清洗后,就要进行数据可用性方面的清洗,对数据类型进行正确的转换,确保数据类型与任务的要求相匹配。

例如,将文本字段转换为分类变量,将数字字段转换为连续变量或离散变量。完成转换后,还要对数据进行验证,验证数据的格式、结构是否符合预期,例如日期字段的格式是不是任务所要求的格式,数据精度是否满足模型需求,等等。

对于跨多个数据表、数据来源的数据集,对数据之间的关联性也需要进行分析,发现并解决由于数据来源不同而引起的数据偏差和错误。

如果数据集过大,可以采用随机采样或其他采样方法减小数据量,以加快数据处理和分析的速度。但要注意,采用采样方法可能会引入采样偏差,因此需要权衡和考虑采样策略。

对于如上全部的数据清洗流程,都需要记录、留痕,这是为了当后续的模型训练过程中出现一些非预期的结果时,能够通过反向追溯、复现数据清洗流程,来帮助我们查找问题。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值