作者丨金立达
单位丨笨鸟社交 AI Lab
学校丨英国帝国理工学院
研究方向丨自然语言处理、知识图谱
标注数据,可以说是 AI 模型训练里最艰巨的一项工作了。自然语言处理的数据标注更是需要投入大量人力。相对计算机视觉的图像标注,文本的标注通常没有准确的标准答案,对句子理解也是因人而异,让这项工作更是难上加难。
但是,谷歌最近发布的 BERT [1] 大大地解决了这个问题!根据我们的实验,BERT 在文本多分类的任务中,能在极小的数据下带来显著的分类准确率提升。并且,实验主要对比的是仅仅 5 个月前发布的 State-of-the-Art 语言模型迁移学习模型 – ULMFiT [2],结果有着明显的提升。我们先看结果:
▲ 图1. 实验结果对比,BERT在极少的数据集上表现非常出色
从上图我们可以看出,在不同的数据集中,BERT 都有非常出色的表现。我们用的实验数据分为 1000、 6700 和 12000 条,并且各自包含了测试数据,训练测试分割为 80%-20%。数据集从多个网页来源获得,并经过了一系列的分类映射。但 Noisy 数据集带有较为显著的噪音,抽样统计显示噪音比例在 20% 左右。
实验对比了几个模型,从最基础的卷积网络作为 Baseline,到卷积网络加上传统的词向量 Glove embedding, 然后是 ULMFiT 和 BERT。为了防止过拟合,CNN 与 CNN+Glove 模型训练时加入了 Early stopping。
值得注意的是,这里用的 BERT 模型均为基础版本,“BERT-Base, Uncased”,12 层,110M 参数,对比的是 ULMFiT 调整过的最优化参数。可见 BERT 在此任务中的强大。
然而,在 12000 条样本的数据集上,BERT 的结果相对 6700 条并没有显著的提升。数据分类不平衡可能是导致此结果的一大因素。
BERT 开源的多个版本的模型:
▲ 图2. 开源的多个版本的BERT模型
接下来,我们直奔主题 – 如何在自己的机器上实现 BERT 的文本 25 分类任务。教程分为以下几部分:
运行环境
硬件配置
下载模型
输入数据准备
实现细节
运行环境
TensorFlow 版本为 Windows 1.10.0 GPU,具体安装教程可以参考此链接:
https://www.tensorflow.org/install/pip?lang=python3