阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

基于 Wide & Deep 网络和 TextCNN 的敏感字段识别

  • 2020-03-22
  • 本文字数:2132 字

    阅读完需:约 7 分钟

基于 Wide & Deep 网络和 TextCNN 的敏感字段识别

01 数据探索性分析

首先,我们对接入整个数据仓库贴源层中的所有表所有字段的敏感类型 (也就是模型的目标变量 Y)进行了统计,其中敏感类型的字段占全部字段 2% 左右,主要的敏感信息类型包括:姓名,身份证号,手机号,固定电话号,银行卡号,邮箱等。可以看出这一个样本极度不均衡的问题。


其次,我们对于所能获取到的用于判断一个字段敏感类型的信息 (也就是模型的自变量 X)统计如下:



对于上表中的原始特征,通过统计分析确定相应的数据预处理方法和参数,从而衍生出更多的特征。例如,对于数据库名称 (db_name),我们衍生出数据库名称长度 (db_name_len)特征,并对其在是否为敏感字段上的分布统计如下:



从上图中不难看出,数据库名称长度对于字段是否为敏感具有一定的区分性。从字段类型 (column_type) 角度分析,不同字段类型的敏感和非敏感字段占比如下:



最终,通过数据预处理,特征衍生等多种手段得到模型最终的输入特征。

02 Wide&Deep 网络和 TextCNN

Wide&Deep 网络

Wide & Deep 网络是由 Google 提出的一种用于推荐系统的深度神经网络模型 [2]。整个网络框架如下图所示:



模型 Wide Models 部分的输入为数值型和利用 One-Hot 编码的分类型特征,Deep Models 部分通过学习得到了分类特征的 Embedding 编码。对两部分进行合并得到最终的 Wide & Deep 网络,模型预测的条件概率为:



其中,Y 为预测标签,为 Sigmoid 函数,为原始特征的 X 的特征组合,为偏置项,为 Wide 部分的权重,为应用在 Deep 部分最后一层的权重。原文中 Wide 部分采用 FTRL 进行优化,Deep 部分采用 AdaGrad 进行优化。


敏感字段识别问题的输入中包含了大量的数值型特征和分类型特征,因此可以采用 Wide & Deep 网络进行处理。

TextCNN

TextCNN 是由 Kim 等人提出的一种利用卷积神经网络对文本进行分类的深度神经网络模型[3]。整个网络框架如下图所示:



在卷积层中,一个特征由一个窗口内的词生成:



其中, h 为窗口的大小,为词向量表示,为卷积核参数,为偏置项, k 为词向量的维度。


敏感字段识别问题的输入中包含了大量的文本特征,因此可以采用 TextCNN 网络进行处理。

03 敏感字段识别模型

对于敏感字段识别问题,从问题和数据的特点出发,对原始的 Wide & Deep 模型和 TextCNN 做出了如下改进:

Wide&Deep 网络改进

原始 Wide & Deep 网络的深度模型的输入均为分类型特征,但在敏感字段识别问题还存在大量的文本特征。考虑到 CNN 在文本分类上具有较好的效果,因此对于文本特征在通过 Embedding 层后利用 CNN 网络对其进行处理,其它的分类型特征在通过 Embedding 层后仍使用全连接网络进行处理。改进后的网络框架如下图所示:


TextCNN 改进

原始的 TextCNN 解决的是英文文本的分类问题,对于敏感字段识别问题,文本特征中存在大量的汉语信息。不同于英文,汉语没有天然的分隔符,传统的做法是采用分词技术对汉语文本进行预处理。但是这样模型的效果就会受制于分词效果的好坏,同时计算效率也会有一定的下降,因此我们选择不分词,直接采用字向量处理文本。


同时需要注意的是 CNN 会隐含地利用到文本的位置信息,因此对于不同的文本特征组合成一个定长的文本时,需先对每个文本特征进行截取和补全,再将其进行拼接得到最终的定长文本。改进后的网络框架如下图所示:


模型训练

在数据探索性分析阶段,我们指出了数据的不平衡性。因此在处理数据不平衡问题时可以采用如下两个方法:


  1. 数据的过采样和欠采样。即对较少类型的数据多采样一些,或者对于较多类型的数据少采样一些。

  2. 代价敏感学习。即在损失函数中赋予较少类型的样本更大的损失值,增加其在一批数据中的重要程度。


对于训练数据的生成,由于字段数量是有限的,但字段内容值 (column_value) 是大量的。因此我们以一个不为空的字段内容值搭配其他特征为一个训练样本。数据的划分采用常用的模式:训练集测试集划分 7:3,训练集内部训练集验证集划分 8:2。


模型训练的超参数采用常用的模式:


  • Wide 部分 Dropout 比例:0.5

  • Deep 部分 Dropout 比例:0.5

  • Concat 部分 Dropout 比例:0.5

  • Embedding 维度:128

  • 优化器: Adam(lr=0.001, beta_1=0.9, beta_2=0.999)

  • 训练数据 Batch Size: 128

模型性能

敏感字段识别问题为一个多分类问题,训练好的模型在测试集上的整体准确率为 93% 左右。但其在一些具体类型上的效果略有欠缺,通过具体的分析定位问题在于训练数据中包含了一些标注错误的样本,例如:敏感类型为“地址”,但该字段保存的却不是地址类型的数据。

实施流程

模型的整个实施流程如下:



[1] https://en.wikipedia.org/wiki/Data_governance


[2] Cheng, H.-T., Koc, L., Harmsen, J., Shaked, T., Chandra, T.,Aradhye, H., … Shah, H. (2016). Wide & Deep Learning for RecommenderSystems. ArXiv:1606.07792 [Cs, Stat].


[3] Kim, Y. (2014). Convolutional Neural Networks for SentenceClassification. In Proceedings of the 2014 Conference on Empirical Methods inNatural Language Processing (EMNLP) (pp. 1746–1751).


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-03-22 21:041153

评论

发布
暂无评论
发现更多内容

“只跑一趟”,小区装维任务主动推荐探索

鲸品堂

运维

实战模拟│JWT 登录认证

经验分享 JWT 开发语言 7月月更 跨域认证

DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效

HarmonyOS开发者

HarmonyOS

linux实战清理挖矿病毒kthreaddi

入门小站

Linux

一文掌握数仓中auto analyze的使用

华为云开发者联盟

数据库 sql 后端 analyze

解密函数计算异步任务能力之「任务的状态及生命周期管理」

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

赋能数字经济 福昕软件出席金砖国家可持续发展高层论坛

联营汇聚

智洋创新与华为签署合作协议,共同推进昇腾AI产业持续发展

Geek_2d6073

广电五舟与华为签署合作协议,共同推进昇腾AI产业持续发展

Geek_2d6073

HUAWEI nova 10系列发布 华为应用市场筑牢应用安全防火墙

最新动态

能源势动:电力行业的碳中和该如何实现?

脑极体

在线SQL转Excel(xls/xlsx)工具

入门小站

工具

CANN算子:利用迭代器高效实现Tensor数据切割分块处理

华为云开发者联盟

人工智能 算子 迭代器

扩展你的KUBECTL功能

mengzyou

Kubernetes DevOps kubectl krew

可视化任务编排&拖拉拽 | Scaleph 基于 Apache SeaTunnel的数据集成

Apache SeaTunnel

数据同步 数据集成 可视化开发 数据集成平台 拖拉拽

湘江鲲鹏加入昇腾万里伙伴计划,与华为续写合作新篇章

Geek_2d6073

使用 BlocConsumer 同时构建响应式组件和监听状态

岛上码农

flutter ios 安卓 移动端开发 7月月更

整理混乱的头文件,我用include what you use

华为云开发者联盟

c++ 开发 C语言 技能

在线文本行固定长度填充工具

入门小站

工具

华为nova 10系列支持应用安全检测功能 筑牢手机安全防火墙

科技汇

联想首次详解绿色智城数字孪生平台 破解城市双碳升级难点

科技大数据

使用 MyBatis 操作 Nebula Graph 的实践

NebulaGraph

mybatis 图数据库 Nebula Graph

python小知识-python泛函数

AIWeker

Python python小知识 7月月更

应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设

SelectDB

数据库 数据中台 Apaache Doris

多模输入事件分发机制详解

OpenHarmony开发者

Open Harmony

英特尔集成光电研究最新进展推动共封装光学和光互连技术进步

科技之家

托管式服务网络:云原生时代的应用体系架构进化

阿里巴巴云原生

阿里云 云原生 服务网格

基于Netty,徒手撸IM(一):IM系统设计篇

JackJiang

网络编程 Netty 即时通讯 im开发

玩转gRPC—深入概念与原理

海风极客

gRPC 网络协议 后端开发

Nebula Importer 数据导入实践

NebulaGraph

图数据库 数据导入 Nebula Graph

上线首月,这家露营地游客好评率高达99.9%!他是怎么做到的?

天天预约

小程序 SaaS 线上预约 预约工具 露营

基于 Wide & Deep 网络和 TextCNN 的敏感字段识别_文化 & 方法_京东数字科技产业AI中心_InfoQ精选文章