我们来测试一下我们的训练结果 。
>>> print(.([u'我最近天天吃火锅']))火锅好吃啊>>> print(.([u'我最近天天吃火锅']))我也是>>> print(.([u'我最近天天吃火锅']))哈哈哈哈哈哈我最近一周吃了两顿火锅>>> print(.([u'我最近天天吃火锅']))我也是 , 每次都吃的撑>>> print(.([u'我最近天天吃火锅']))吃火锅不长胖>>> print(.([u'我最近天天吃火锅']))火锅好啊>>> print(.([u'我最近天天吃火锅']))你们那边有这种火锅?>>> print(.([u'我最近天天吃火锅']))火锅好吃吗?我也想吃>>> print(.([u'我最近天天吃火锅']))吃吧 , 吃了就开心了>>> print(.([u'我最近天天吃火锅']))我也想天天吃火锅!>>> print(.([u'我最近天天吃火锅']))火锅吃不了多久的 。>>> print(.([u'你那天气好吗']))还好 , 不热 , 有点冷>>> print(.([u'你那天气好吗', u'还好 , 不热 , 有点冷', u'那你得穿多厚的衣服']))我穿了两件
文章插图
对比分析
CDial-GPT也开源了自己训练的预训练模型 , 笔者也将它转换为能加载的格式了 , CDial-GPT-tf[2] , 读者也可以测试比对一下 。从训练上来看 , CDial-GPT使用实现的模型 , 基本结构是GPT Base , 使用了4张 , 总为32 , 累积梯度64步 , 论文说训练了30个epoch , 总步数约2100万步(笔者的两倍) , 因此大概相当于为2048训练了33万步 。
在输入设计上 , CDial-GPT也有所不同 , 如下图:
如图所示 , CDial-GPT跟我们前述设计的主要不同是多轮对话之间的拼接方式 , 我们之前是直接用[SEP]连接 , 它是用[]、[](图中简记为S1、S2)这样的角色标记来连接 , 最后才用一个[SEP]表示回复结束 。这样一来 , 由于预测部分的格式跟历史的格式不一样 , 因此每次只能训练一句回复 , 多轮对话要拆分为多个样本来训练 , 理论上是增加了训练复杂性的(要训练多步才能把一个多轮对话样本训练完) 。
至于效果上 , 个人测试的感觉是两者没什么明显差别 。有兴趣的读者也可以自行比较测试 。
文章总结
本文主要分享了一次对话模型实践 , 基于开源的LCCC闲聊语料库 , 利用语言模型(GPT)对多轮对话进行生成式建模 , 得到了一个相对通用的闲聊对话模型 , 最后将本文的思路与CDial-GPT本身开源的模型进行了比较 。
参考文献:
【多轮对话-2020:DialoGPT【生成式多轮对话模型】】[1]《从语言模型到:如戏 , 全靠Mask》: [2] CDial-GPT-tf:
- 人物对话描写作文300,求一篇描写对话的作文
- 人物对话是什么描写,描写人物说话语气成语3个
- 闪电述评|一场跨越千年的对话 整理世界之最
- 安卓记录2
- 对话北大优秀毕业生|万子珊:博学之,慎思之,笃行之 中国之最的阅读感想
- 对话科幻大咖|罗伯特·索耶:去成都吧,你会见到全世界最棒的科幻迷 成都历史上世界之最
- 读书|中国足球还有救吗?——《中场对话:大国足球的反思与探索》深度解析中国足球的积弊与出路 科学中国之最活动反思
- 上海男女激吻,路过的老者很好奇,他换了位置,继续仔细观察? 上海历史之最内容情侣对话
- 2023高招季——向往的专业院士对话青年学子 世界之最的0信息技术
- 【中国有约】穿越式打卡:一天三地,和外国友人对话古今 穿越古今对话历史之最逸