• [其他] Modelarts基于主动学习的智能数据标注
    智能数据标注深度学习一直都是“数据饥饿的",为了达到更好的训练效果,需要大量人工标注的数据样本来训练模型。例如,ImageNet图像数据集包含一百多万张图像。标注这些数据是一个枯燥乏味的过程,且需要耗费大量的人力成本。不同标注任务需要的标注成本也相差很大。例如,在图像分类任务中,标注一张图像不到1秒;而在图像分割任务中,标注一个物体的轮廓平均需要30s以上。为了减少标注消耗的时间同时降低标注的成本,ModelArts在标注过程中加入了机器学习技术并为标注者提供了智能数据标注服务。基于主动学习的智能数据标注。机器学习问题中数据的冗余性无处不在。在现实场景中,每个数据所包含的信息量是不一样的,也就是说对于给定的某个算法,数据集中每个数据重要性不一样,对最终模型效果的贡献度也不一样。如果标注者可以仅标注信息量较大的数据来训练模型,就可以取得与标注全部数据后训练的模型相差不大的精度。ModelArts提供的基于主动学习的智能标注功能,可以自动为标注者挑选最具有信息量的数据,从而减少整体标注工作量。在标注任务开始时,标注者仅需标注少量的数据作为训练集来训练模型,然后用训练好的模型对未标注数据进行推理。主动学习策略根据当前这一轮的推理结果来选择下一轮需要人工标注的数据,标注者在标注完这些数据以后将其加入训练集中,依次循环,直到模型的效果达到用户的要求。ModelArts主动学习算法包括监督模式和半监督模式。监督模式只使用用户己标注的数据进行训练;而半监督模式同时使用已标注数据和未标注数据,虽然半监督模式可以提升模型精度,但一般耗时较长。
  • [其他] 现实场景数据标注的复杂度
    现实场景中,标注往往非常复杂。有很多标注任务对于标注流程和标注工具有独特的要求。在证件类的OCR(光学字符识别)场景中,需要先进行四点标注,然后经过透视变换将证件位置调整后,再标注文字块和文字类别。本质上,这种场景的标注流程是由其原始数据和训练算法共同决定的。算法人员需要根据业务背景、数据情况和己有算法能力综合评估之后,才能大致确定面向该业务背景的人工智能应用开发流程,然后根据流程来反推需要什么标注作为输入,进而确定好标注流程。在与业务强相关的标注场景中,标注流程的确定就更加复杂,需要对业务有深刻的理解。例如,在某网站的评论分类场景,或者医疗影像的细胞分类场景中,首先需要理解该场景的具体业务类型,其次才可以定义如何对每个数据打标签。标注人员如果没有较强的业务知识或者缺乏专业指导,就不知道如何进行标注。另外,标注人员还需要正确定义标签的粒度。如果标签的粒度太粗,则分类算法的训练监督信息不够强;如果标签的粒度太细,则可能造成每个类别的样本量太少,对分类算法的训练有一定影响。因此,标签粒度的定义需要算法工程师和行业专业人员共同参与。由于行业数据标注的难度很高,人工智能在很多专业领域应用时,数据标签通常都是非常稀缺的资源。在此背景下,就需要平台提供智能化标注能力,以在一定程度上减少标注者的工作量。
  • [其他] 标注任务分类
    大多数人工智能算法仍然依赖监督学习,因此数据标注十分必要。即便是近几年在自然语言处理和视觉领域快速发展的无监督学习,也还是需要一部分标注信息才可以最终解决业务问题。通常,数据标注数量越多、质量越高,训练出来的模型效果也会越好。因此,在当前的人工智能商业项目中,数据标注非常重要。标注任务分类数据的标注与其应用场景密切相关。常用的图像相关的标注任务包括但不限于图像分类标注、目标检测标注、图像分割标注、点云标注等。对于通用图像的标注任务,ModelArts提供了基础的通用标注工具,如矩形框、多边形、圆形、点、线等。常用的文本相关的标注任务包括但不限于文本分类标注、命名体识别标注、三元组标注、词法分析标注、机器翻译标注等。以文本分类标注和三元组标注为例,ModelArts提供了标注工具。
  • [其他] 数据脱敏
    其他数据处理。还有一些其他数据处理操作,如数据脱敏等。数据脱敏是指在原始数据中去除关键敏感信息的过程。数据隐私信息的保护一直是备受关注的问题。同一份数据有可能被不同的人工智能应用开发者处理,因此数据的信息脱敏非常关键。例如,在医疗影像识别业务中,需要提前将原始影像数据中可能存在的病人名字或其他敏感信息过滤,在视频监控业务中,需要针对性地过滤一些敏感信息,如车牌信息、人脸信息等。另外,由于人工智能应用开发流程包括模型训练、模型评估和最终应用部署之后的推理测试,因此很有必要将数据集切分为三部分:训练集、验证集、测试集。训练集用于模型的训练学习;验证集用于模型和应用的选择与调优;测试集用于评价最终发布的应用的效果。当数据集较小时,建议按照比例(如60%、20%、20%)来切分数据:当数据集较大时,可以自行定义每个部分的比例或数量。综上所述,数据校验可以保证数据基本的合法性;数据转换可以使数据满足模型训练的需求;数据清洗可以提高数据信噪比,进而提升模型训练的精度;数据选择可以降低数据的冗余度,数据增强可以扩充数据,从而提升模型训练的精度。其他数据处理方法也非常有必要,如数据脱敏可以保障隐私信息受到保护,数据切分可以保障后续开发阶段的正常进行。
  • [其他] 图像数据和自然语言数据增强方法
    正确的数据增强方法应该不改变原数据的语义信息。例如,在图像识别中,对于图像执行随机擦除的增强操作,即将图像中某一小部分抠除,不会影响整个图像识别的结果。另外,使用有针对性的增强方法,可以让模型在某一维度的泛化能力更强。例如,在训练前可以针对每一幅图像扩充出一系列亮度不同的图像,使得训练后的模型对亮度变化更加鲁棒。类似的增强技术还有很多,数据增强本质上都是对数据进行尽可能多的扰动,但不改变数据的语义信息。推理数据和训练数据差别较大时,运行态效果就会变差。如果根据推理数据的风格,去采集类似的新数据,然后重新标注和训练,则数据增强成本很高。因此,需要考虑采用跨域迁移的数据增强方法。可以将新采集数据的风格迁移到已标注的老数据集上,并生成新的数据集,这种新的数据集无须标注就可以直接训练。因为新采集的数据和推理态数据之间相似度较高,所以重新训练后模型的推理效果就会有较大的提升。类似地,在自然语言处理领域,也有很多数据增强方法,自然语言处理领域的数据增强方法本质上与图像数据增强方法类似,都是确保增强前后数据的语义不发生变化。例如,在文本分类中,利用同义词替换文本中的部分词后,可以生成新的文本,由于文本类别没有发生变化,因此这是一种合理的数据增强方法。数据增强是提升模型效果的有效技术,但是当前的数据增强大部分是研究人员手工设计的,增强策略欠缺灵活性,针对不同的任务场景和数据集通常需要重新设计增强策略。目前流行的做法是将多个增强策略放入搜索空间,使用搜索算法找到最佳策略,使得神经网络在目标数据集上产生最高的准确度。目前数据增强方法也在向自动化方向演进,并且在一些开源数据和业务场景中取得成功。此外,对于结构化数据而言,通常采用基于特征构建的方式,通过己有特征来组合生成新的特征以提升模型效果,这种方法属于广义的数据增强方法。ModelArts提供了一系列的数据增强方法,节省了开发增强算法的成本。开发者可以根据自身需要灵活地选择合适的增强方法,也可以让ModelArts自动选择增强方法。
  • [其他] 数据增强
    数据增强与数据选择相反,数据增强通过缩放、裁剪、变换、合成等操作直接或间接地增加数据量,从而进一步提升模型的训练精度。结构化和非结构化数据都可以做数据增强。不过由于近几年随着深度学习、计算机视觉、自然语言处理的迅速发展,非结构化数据的数据增强成了热门的研究对象。依据训练方式可以将数据增强划分为离线数据增强和在线数据增强。离线数据增强是先进行数据增强,然后形成新的数据集版木再进行训练,而在线数据增强是指在训练过程中边进行数据增强边训练。离线数据增强和在线数据增强各有应用场合。当数据量较大时,一般采用在线数据增强;当数据量较少时,建议采用离线数据增强,以防止模型训练精度过低。不管是离线数据增强还是在线数据增强,大部分的数据增强方法都是通用的。
  • [其他] 数据选择
    数据选择。当需要考虑的数据特征维度较高时,需要使用降维方法,如PCA(主成分分析)、t-SNE(t分布随机近邻嵌入)等,将维度压缩到二维或三维,并将其可视化展示出来。此时开发者就可以观察到那些类内差距较大的图像,并进行合理地清洗。有时需要通过数据选择减少标注量,并且尽可能维持精度不变,甚至还可以提升精度。例如,基于视频做模型训练时,通常需要先将视频截帧,然而距离越近的帧之间相似度越高,这些相似度过高的图像对于训练来说有冗余,因此视频抽帧后都要按一定的采样率进行选择。针对图像数据,还可以基于图像相似度进行去重。例如,在某口罩识别的案例中,原始数据是72张带有口罩目标的图像,通过数据选择发现,只需要标注其中18张即可,在节约标注量75%的同时,训练后的模型精度反而提升了0.3%。另外,还可以通过学习和迭代的方式进行数据选择。Embedding-Ranking框架是一个流行的数据选择框架。该数据选择方法主要包含3个步骤:特征提取、聚类排序、选择最优子集。在某车辆检测场景下,按照Embedding-Ranking框架对原始的689张图像进行自动选择,可抽取90%的高价值数据,节约标注量10%,用90%的数据和全量原始数据相比发现,训练后的模型精度可以提升2.9%。对于结构化数据,还可以在特征维度上进行数据选择,即特征选择。有些特征选择也属于特征清洗的范畴。有多种方式可以做特征选择:基于Filter-based的方法,选择与目标变量相关性最大的特征列,并确保这些特征之间尽量少一些冗余度,常用算法有mRMR等;基于wrapperbased的方法,主要采用启发式搜索、随机搜索等方法发现最优的特征子集,如从一个随机种子开始,不断尝试加入新的特征并洗掉无用的特征,最终找到使得模型精度最高的特征子集;基于Embedded-based的方法,主要利用一些算法本身的特点和实现技巧来实现重要特征的筛选,如决策树模型中每个节点就代表一个特征,该模型的训练过程本身就是一种有效地特征选择的方法。还可以通过正则化等方式来约束训练过程以发现最重要的特征子集。
  • [其他] 几个图像数据清洗的例子
    下面以图像为例,介绍几个数据清洗的案例。在某安全帽检测的案例中,基于无监督模型的方法,进行脏数据自动去除和关键数据保留,我们可以从300张原始图像中得到若干张质量较高的图像。如果数据集中其他类别的数据也都混杂进来,而且数量较多时,就需要采用基于无监督的自动分组算法对数据进行粗分类,提前清洗掉不需要的数据。再比如:在“嫩芽”识别场景中,混杂了大量“花朵”和“儿童图画”数据,这些混杂的数据都需清洗。另外,还可以根据数据特征分布对数据进行清洗。例如,对某自然场景的图像数据集做特征分析时,通过亮度特征的分布直方图可以看出,亮度值小于100的地方出现多处“毛刺”,根据实际情况判断这部分图像是拍摄误差造成的。而如果推理阶段绝大部分的图像亮度值也都高于100,那么就可以清除这些亮度值较低的图像,让后续的模型训练聚焦在亮度值大于100的范围。
  • [其他] 数据清洗的方法
    数据清洗。数据清洗是指对数据进行去噪、纠错或补全的过程。对于结构化数据,需要对单个特征进行各类变换,包括但不限于以下几种。离散化。针对特征取值为连续的场景,需要将其离散化,以增强模型的鲁棒性。无量纲化。不同的特征通常有不同的物理含义,其取值范围也各不相同,为了保证特征之间的公平性,同时提升模型精度,通常需要对特征进行归一化、标准化、区间缩放等处理。缺失值补全。由于各种原因,某些样本的某些特征值可能会缺失,因此需要一些补全策略,如用该特征值下所有其他样本的均值补全该缺失值,也可以新增一些特征列来表示该特征是否缺失,还可以直接删除带有缺失值的样本。分布变换。理想的数据分布状态是正态分布,这也是很多算法期望的假设条件,但现实中很多数据分布不能满足这个基本假设,因此通常需要一些数学变换来改变数据分布,如对数变换、指数变换、幂变换等。变量编码。通常需要对于一些非数值类的特征(如文字、字母等)进行量化编码,使其转换为可被算法处理的向量,常见的编码方法有One-Hot、哑变量、频率编码等。对于非结构化数据(图像、语音、文本等)而言,也需要及时去除脏数据。例如,在图像分类中,通常需要将不属于所需分类类别的图像去除,以免对标注、模型训练造成干扰。在文本处理中,针对不同的文本格式,需要采用不同的解析工具来完成关键文本信息的提取。
  • [其他] 数据处理:转换
    数据转换。数据转换是指对数据的大小、格式、特征等进行变换的过程,即对数据进行规范化处理。数据转换是为了使数据更适合算法选择和模型训练,使数据被更合理、充分地利用。例如,在医疗影像或地理遥感影像识别业务中,通常原始图像分辨率都非常高,需要做数据切片;在智能监控业务中,原始数据是视频,需要进行视频解码和抽帧,才能进行进一步的处理;图像、视频等数据通常有不同的格式,如图像有JPEG、PNG等格式,视频有AVI、MP4等格式,但是满足算法输入要求的格式总是有限的,这就需要对不同的格式进行转换。很多真实的业务场景中,数据往往是多种格式并存的,这时需要转换格式并进行必要的数据整理。另外,对于视频数据来说,在数据标注或模型训练之前,往往需要进行抽帧才能满足需求。开发者可以使用FFmpeg等工具自行抽帧,也可以利用ModelArts提供的内置抽帧工具进行转换。
  • [其他] 数据处理:校验
    当采集到数据时,数据集并不一定符合实际开发需要,往往还需要一系列的数据处理工作(如校验、转换、清洗、选择、增强等)。数据处理主要是为了让开发者在模型训练之前得到质量更高、更符合开发需要的数据集,从而提高模型的精度或降低训练的成本。数据校验。数据校验指的是对数据的可用性进行判断和验证的过程。在数据采集过程中,有部分数据存在格式等问题无法被进一步处理。以图像识别为例,用户经常会从互联网中搜索一些图像用于训练,但是其质量难以保证,有可能图像的名称、后缀名都不满足训练算法的要求。也可能图像有部分损坏,导致无法解码、无法被算法处理,另外,人工采集的图像可能有重复,需要被去除。因此,数据校验非常重要,可以帮助人工智能应用开发者提前发现数据问题,有效防止由于数据的基本问题造成的算法精度下降或训练失败的现象发生。另外,对于需要标注的数据,标注的格式可能有多种多样,即便是同样的标注格式,也难免有些字段出现错误。训练算法所支持的标注格式通常是有限的,而且容错性较差。因此,标注数据也需要被校验,从而提前发现标注问题。ModelArts数据处理模块提供数据校验功能。例如,对于图像数据,判断图像标注格式是否符合要求、图像分辨率大小是否满足算法设定的阈值、图像通道数是否满足算法要求、图像解码是否正常、图像后缀名是否满足规范等。建议人工智能应用开发者将数据及其标注进行充分校验后,将问题提前暴露,解决好基本的数据问题之后,再进入后续步骤。
  • [其他] 数据接入
    对于己经采集好的数据,如果要进行大规模分析和建模,则需要将数据接入应用开发平台上。数据的接入又分为批量接入和实时流接入。在批量接入方面,华为CDM(Cloud Data Migration,云数据迁移)服务可以一键式将数据在不同的存储之间做平滑迁移。CDM支持的存储形式有数据仓库、Hadoop集群、对象存储、文件系统、关系型数据库、非关系型数据库、搜索服务、消息系统等。对于数据库中己有数据,CDM支持批量迁移表、文件,还支持同构数据库和异构数据库之间的整库迁移。在迁移能力方面,CDM支持增量数据迁移、事务模式迁移、字段迁移。在实时接入方面,华为云提供了DIS(Data Ingestion Service,数据接入服务)可以一键式将数据流式迁移到云上。另外,华为云DLI(Data Lake Insight,数据湖探索)服务可以对接不同的数据源,如RDS(关系型数据库服务)、DWS(数据仓库服务)、DDS(文档数据库服务)等,仅需安装一个DLIAgent插件并进行相关配置,即可将数据自动接入云上。数据采集和接入后需要统一存储,并通过版本管理工具进行管理。根据存储的物理位置不同,数据存储可分为.本地存储和云存储。OBS(对象存储服务),具备标准RESTful API,可存储任意数量和形式的非结构化数据。OBS通过可信云认证,支持服务端加密、VPC(虚拟私有云)网络隔离、日志审计、细粒度权限控制,保障数据安全可信。
  • [其他] 数据采集的内容和方法
    数据采集的内容涉及图像、视频、音频、结构化表格数据及环境信息等。数据采集是数据管理的起始环节,一般而言,数据越丰富,算法所达到的效果就越好。尤其对于深度学习而言,数据量越大,模型表现一般越好。数据采集方法多种多样,通常需要根据实际场景来选择不同的采集方式。数据采集常见的几种方式有:终端设备采集,如摄像头等,设备可以很方便地采集日常生活中的真实图像和视频;网络数据采集,在合法合规的情况下,按照一定的规则,自动地抓取允许范围内的数据,基于搜索的数据采集,如基于图像搜索方法,从已有的图像数据仓库中搜索出类似的图像,作为当前项目的数据来源当面向企业级业务时,数据采集就更加复杂,主要体现在以下几个方面。数据来源具有分散性。对于企业级生产系统,通常有多方面的数据会对最终的人工智能决策产生影响。如对于销量预测而言,有多种类型的数据源,包括生产系统的数据、销售部门的数据、物流方面的数据、外部环境的数据、财务部门的数据等,我们需要对这些数据综合起来分析,才能对后续销量做出更准确的预测。此外,每一种类型的数据,也有多种来源。如对于某制造工厂,不同生产线上的多种传感器都会不停地采集数据,需要专用的软硬件系统进行数据采集。数据存储具有多样性。数据可来自数据库、本地磁盘、存储服务器等,甚至可来自第三方存储系统或云存储服务。数据天然具有多模态属性。在实际问题中,图像、语音、文本、表格等多种模态的数据源会同时存在。因此,在成本允许且项目需要的前提下,有必要对这些模态的数据进行采集和接入,以便于给数据分析和模型训练提供更丰富的“原材料”。数据采集具有较强的业务相关性。在实际业务场景中,经常会有很多矛盾出现。例如,有些数据是应用开发者最想采集的,但是出于安全、成本等因素的考虑,业务方未必可以提供这些数据;而有些数据对模型没有太大作用,却比较容易采集。有些时候,甚至有必要额外定制一套数据采集方案和设备。因此,数据采集很大程度上会受到业务的影响。由于数据的分散性、存储多样性、多模态属性、业务相关性,数据采集工作并不容易。很重要的一点是,应用开发者需要理解业务和具体场景,结合实际情况,才能够对采集哪些数据、怎么采集数据等问题做出更好的判断。面向企业系统,通常可以使用的数据采集方式也非常多,包括企业提供的采集工具、企业级消息系统等。当然,对于复杂行业,也可以将数据采集工作委托给第三方公司。最后说一句,数据相关的事情,都是比较苦、和枯燥的,有钱完全可以委托给第三方。
  • [其他] 人工智能应用开发第一步:数据准备
    对于开发者而言,数据采集是开发人工智能应用时面临的首要问题。数据准备阶段包含从原始数据采集到形成最终数据集的所有操作,在大多数人工智能应用开发的过程中,数据准备不仅重要,而且工作量巨大。据调查,在很多机器学习项目的开发中,数据相关的工作量占据了80%。因此,完备的数据采集、数据处理、数据标注、数据分析和优化对系统尤为重要。ModelArts在这方面提供了十分完备的数据管理功能。
  • [技术干货] TensorFlow Transformer 自定义实现(IMDB情感分类)
    Transformer是当下最先进的深度学习架构之一,它被广泛应用与自然语言处理领域和视觉领域。并且替代了以前的循环神经网络(RNN和LSTM),并且以此为基础衍生了诸如BERT、GPT-3等知名网络架构。本文将介绍如何使用TensorFlow原生API从零实现Transformer多头自注意力机制,并在IMDB数据集上验证网络的性能,模型的训练结果如下:TensorFlow极简代码实现可以参考Notebook: