📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
第二章 数据和测试评价
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%免费】