wkhtmltox 中文显示一半_中文GPT闲聊对话生成模型 开源工作 包括 GPT和GPT2

bojone/CDial-GPT-tf​github.com
87692e34a6a6831247403f0bd96b03a0.png

今天发现有一个朋友的github更新了一个新的项目,于是我点进去扫了两眼。首先必然还是把两个预训练语言模型的压缩包下载下来。跟随者这个项目的步伐我发现了一个超级厉害的项目。

thu-coai/CDial-GPT​github.com
dc1731892a8735115d401e8372643fad.png

在项目介绍中描述到。本项目提供了一个大规模中文对话数据集,并提供了在此数据集上的中文对话预训练模型(中文GPT模型)。

大概就是用了很多的开源的对话语聊训练了一个中文版本的GPT闲聊对话模型。

我应该吧GPT简单的介绍一下。

GPT(Generative Pre-Training),是OpenAI在2018年提出的模型,利用Transformer模型来解决各种自然语言问题,例如分类、推理、问答、相似度等应用的模型。GPT采用了Pre-training + Fine-tuning的训练模式,使得大量无标记的数据得以利用,大大提高了这些问题的效果。
GPT就是利用Transformer进行自然语言各种任务的尝试之一,主要有以下三个要点

  • Pre-Training的方式
  • 单向Transformer模型
  • Fine-Tuning与不同输入数据结构的变化

如果已经理解了Transformer的原理,那么只需要再搞懂上面的三个内容就能够对GPT有更深的认识。
作者:Ph0en1x
链接:https://zhuanlan.zhihu.com/p/69290203
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

嗯这个解释还是比较言简意亥的。

so 我们开始玩一玩。怎么去在这个代码的基础之上继续进行预训练。很不幸我没看到版本的要求。就是所应用的深度学习计算框架的版本在readme中并没有体现。按照代码的指示首先常规操作

pip install -r requirements.txt

安装过程中看到了thu-coai/CDial-GPT的版本是pytorch 1.4.0版本的。这里面还是建议在安装之前就进行pytorch的安装。

karll:Centos 7 conda安装特定CUDA版本的Pytorch 1.4.0 和 Apex​zhuanlan.zhihu.com
537b1924bf533ed9ad24184f9d431094.png

可以参考这个教程进行 pytorch的 1.4.0版本的安装。

我们来看看官方给出的数据集是什么格式的

0cab91a85e9ced4a5261d0af1798faa6.png
数据集格式

首先需要把数据集给解压然后放在一个目录之下嗯 按照下面这个写法来看更清晰一些 开源的代码是可以单机多显卡跑任务的。

python train.py --pretrained --model_checkpoint 模型目录/ --data_path 数据集目录/STC.json  # 使用单个GPU进行训练

172c9b90f0f51dc46d9d5c04e49d282e.png
训练过程的截图

启动的时候数据集预处理的时间还是挺长的 ,然后就变成了这个样子了。pytorch并不是很熟悉。今天阿里源应该是出现了一些问题,转到清华源会好很多。

然后我就想造一个 自己的数据集。于是我找了一些对话的数据。两万条非重复数据 五千条 验证 五千条测试 一万五千条 训练。在cpu上面进行训练。因为机器坏掉了,所以只能在cpu上面凑活跑一下。

0c6ca1509f67ca61f3a43fa161b26f2a.png

一个 epoch上面大概 六个小时

6d1449b8309fc414747fe0174decdb88.png

另外一点就是根据readme中的描述 base的数据质量回比large版本的数据质量更高一些

https://miao-picture.oss-cn-shanghai.aliyuncs.com/GPT_LCCC-base-tf.zip​miao-picture.oss-cn-shanghai.aliyuncs.com

贡献一下自己的OSS支持大家快速进行预训练模型的下载。

看到了评论区的提问,之前bert也很大,但是现在很多公司的bert已经是炉火纯青了。所以开源才是深度学习前进的最大动力呀。本地采用的是单卡2080ti进行的模型训练。现在 30系列的显卡出来了。看参数,20系列真的是整体去世了。

对于这个模型我认为是一个辅助发现问答对的好模型,还没有经历过预测的测试。在这个参数之下,响应速度应该会受到一定的影响。模型内部的数据流程也是下一阶段主要探索的点。新开源工作就像新大陆一样。总会有着惊喜,相信美好的事情即将发生。

(一下信息来自实习生 杨红文编辑)

GPT 调研报告

对于 https://github.com/thu-coai/CDial-GPT 数据结构及模型有以下调研:

提出了一个清洁中文会话数据集 LCCC(其中包含基本版本(680 万对话)和

大型版本(1200 万对话))的模型。该数据集的质量是通过严格的数据清理管道

来确保的,该管道基于一组规则和在手动注释的 110K 对话对上训练的分类器而

构建。 并用对话生成预训练模型(GPT),分别在基于 LCCC-base 和 LCCC-large

上进行了训练。

清理后的数据集和预训练模型将有助于短文本对话建模的研究。

一、 数据集

1 数据获取

数据集主要是基于公共资源进行抓取的,其来源包含电影脚本、社交媒体

(twitter、reddit、weibo 以及技术论坛等)。这些从公共资源抓取的数据集通常是

大规模的,因为公共资源的语料库很丰富。

但也包含很多噪音,需要仔细清洁。

首先从微博抓取了 79M 条对话。 通过严格的清理过程,构建了清理后的微

博数据集(LCCC-base)。 然后,将 79M 条会话与几个公共中文会话数据集混

合,并通过更宽松的清洁条件获得更大的中文会话数据集(LCCC-large)。 清洗

过程包括基于规则的过滤和基于分类的过滤。

LCCC-base: 两阶段数据收集方案用于构建我们的原始对话。 在第一阶段,收集

了一组种子用户。 即手动选择了一批遵循专业大众传媒致力于发布新闻的微博

帐号。 然后,我们将在这些新闻下发表评论的用户视为“高质量”用户(因为机

器人帐户通常不会过多关注这些日常新闻。)在第二阶段,我们收集了这些种子

用户的对话。 这些用户的微博帖子与以下注释(以树结构组织)一起收集。 请

注意,从根到叶的任何路径都可以视为对话会话。 我们使用“深度优先搜索”流

程重建了这些会话,并构建了 7,900 万个原始会话。 然后,使用情节方法清洁数

据构建了一个清洁的微博数据集。

LCCC-large: 从多个开源存储库中收集了语料库,包括中国 Chatterbot 语料库,

PTT 闲话语料库,字幕语料库和小黄集语料库。这些数据集与 Qingyun 语料库和

Tieba 语料库一起被清理并处理为单个回合对话数据.此外,还收集了多回合对话

数据,包括豆瓣对话语料库,电子商业对话语料库和中文聊天语料库。然后,我

们将这些数据集与 7900 万对话进行了混合。 使用相同的清洗过程,但通过放宽

下面描述的分类器的阈值,我们获得了较大版本的数据集(LCCC-barge)。

2 清洁过程

基于规则的噪声过滤是通过规则过滤出多种类型的噪声,包括:(1)在对话

框中删除平台标签;(2)从文字中删除网址字符串;(3)将会话数超过 30 的会话

拆分为多个会话数少于 30 的会话;(4)在一个句子中仅保留重复超过 6 次的短

语或单词的副本; (5)如果回答太长或太短,则删除对话; (6)如果将响应

标识为广告,则删除对话; (7)如果响应中 90%的三元组是高频三元组,则删

除对话; (8)如果响应具有某些特定形式的通用响应,则删除对话; (9)删

除回复与帖子相同的对话。

其次,还构建了包含以下噪声的黑名单:(1)脏话,敏感词和方言; (2)

特殊主题词,如左氧氟沙星; (3)名称,称谓和未知缩写; (4)特殊符号和

表情符号; (5)平台标志,例如与广告,图片和视频相关的单词。 如果对话

中包含出现在黑名单中的单词,则该对话将被删除。

基于分类器的过滤是就语义和语法而言,许多类型的噪声,以及某些与上下文相关的对话,很难用规则过滤。因此,我们建立了两个 BERT 分类器,以进行

更精细的过滤。我们用不同的置信度分数评估了准确性,召回率和 F 分数,以选

择最佳置信度阈值。第一个 BERT 分类器接受了手动标记的 100,000 个对话的培

训。如果对话具有上述噪声或以下噪声,则标记为嘈杂:(1)响应不流畅或句子

中存在严重错别字;(2)响应信息不完整;

(3)对话的主题是时间敏感的,(4)

帖子中未提及的节日,地点,性别和时间出现在回复中(5)帖子和回复无关。

表 1 中显示了某些情况(底部)。测试集的分类精度达到 73.76%。在社交媒体中,

许多对话不可避免地依赖于文本之外的外部上下文[27,33],从而使其难以理解[9]。

为了减轻这个问题,第二个 BERT 分类器在包含 10,000 个语音的手动标记数据

集上进行了训练。测试集的分类精度达到 77.60%。

二、模型

GPT 模型主要是使用 transformer 的 decoder 结构,并对 transformer decoder

结构进行改进,原本的 decoder 包含两个 multi-head attention 结构,GPT 只保留

了 mask multi-hesd attention 结构.GPT 使用句子序列预测下一个单词,因此采用

采用 multi-head attention 对下文进行遮挡,防止信息泄露。GPT 在训练时时利用

上文预测下一个单词,Bert 时根据上下文预测单词,因此在很多 NLU 任务上,

GPT 的效果较 BERT 要差。但 GPT 更适合用于文本生成的任务,因为文本生成

通常时基于当前已有的信息,生成下一个单词。

(来自实习生 杨红文编辑)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值