本文首发于:行者AI
从最初的GPT1和BERT模型到GPT3,在更多的训练数据及更强力的算力加持下,大规模的预训练模型逐渐走上了一条参数暴涨的不归路。GPT3比起前作GPT2参数增加了100倍,达到了令人惊叹的1750亿,与此同时,这些模型对应的论文也从10多页增加到72页。这些剧烈变动的趋势反映了学界对通用语言模型的殷殷期盼。
天量参数加持下的GPT3一经问世就引起了众多深度学习界研究人员的关注,虽然在测试表现中存在着“逻辑硬伤”等明显的缺陷,但是瑕不掩瑜,其出色的生成效果和令人惊叹的少样本学习(few-shot)能力得到了众多研究人员的肯定。
令人遗憾的是对于国内的研究者而言,由于GPT3主要是在英文数据集下训练,不能直接用于中文数据的处理。而对于中文数据的自然语言处理也迫切需要大规模的预训练模型,清源团队在2020年11月份发布了在巨量中文语料下训练得到的大规模预训练模型——CPM。也被称之为中文版的GPT3,最大版本拥有26亿参数。在实际测试中收获了很多惊喜,尤其是它的少样本学习能力,着实令人印象深刻。
下面就来一起感受一下它的惊艳之处。
表0-1 近几年有代表性的大规模自然语言处理预训练模型的概况
模型 | 发布时间 | 参数量 | 训练数据量 |
---|---|---|---|
GPT | 2018年6月 | 1.17 亿 | 约5GB |
bert(large) | 2018年10月 | 3.4亿 | 13GB |
GPT-2 | 2019 年 2 月 | 15 亿 | 40GB |
T5 | 2019年10月 | 110 亿 | 750GB |
GPT-3 | 2020 年 5 月 | 1750 亿 | 570GB |
CPM | 2020年11月 | 26亿 | 100GB |
1. 生成效果
CPM模型的论文中自然不乏以专业指标来表示的测试结果,虽显严谨,但却无法直观地感受到模型的具体效果,故本文罗列了众多具体的生成实例,可以直观感受其强大之处。
1.1 少样本问答生成
问答是自然语言处理领域中一个经典应用场景,诸如智能客服,闲聊机器人都是该场景的具体应用。CPM的训练数据集中也包含部分问答数据(见表2-1),故整体来看在问答场景的效果有着意料之中的较好表现。
CPM模型在常识问答(表1-1)中大多数都能正确回答,少数回答错误的例子在范围上并没有偏离太多,如“黄晓明的老婆是谁”虽然回答错误,但回答内容也是一个人名,从范围上来看并没有偏离太多。类似“砒霜可以吃吗”这种询问是否可以的问题模型似乎学会了习惯性的说"可以"(真是个顺从的好boy)。
表1-1 常识问答
问题 | 模型回答 | 参考答案 |
---|---|---|
红楼梦谁写的? | 曹雪芹。 | 曹雪芹 |
袁隆平的贡献有哪些 | 杂交水稻。 | 杂交水稻 |
朝鲜战争中美国的最高指挥官是谁 | 麦克阿瑟。 | 麦克阿瑟 |
朝鲜战争中指挥中国人民志愿军的指挥官是谁 | 彭德怀。 | 彭德怀 |
美国的首都是哪里? | 华盛顿。 | 华盛顿 |
中国的国旗是什么 | 五星红旗。 | 五星红旗 |
美国的国旗是什么 | 星条旗。 | 星条旗 |
是谁发现了新大陆 | 哥伦布。 | 哥伦布 |
谁发明了交流发电机 | 爱迪生。 | 波利特·皮克西 |
七下西洋的人是谁 | 郑和。 | 郑和 |
李世民的谥号是什么 | “太宗文武大圣大广孝皇帝”。 | 文武大圣大广孝皇帝 |
转基因食品可以吃吗 | 可以。 | 可以 |
砒霜可以吃吗 | 可以。 | 不可以 |
毒品和赌博的危害那个大一些 | 都很大。 | 都很大 |
巴黎是中国的城市吗 | 不是。 | 不是 |
深圳是中国的城市吗 | 深圳。 | 是 |
可以做电子表格的软件是什么 | Excel。 | Excel |
编曲常用的软件是什么 | FL studio。 | FL studio |
常见的操作系统有哪些 | windows。 | windows,unix,linux |
人体最脆弱的部位是什么 | 心脏。 | - |
蒜这个字怎么读 | jiǎo。 | suàn |
空军的英文怎么说 | Air Force。 | Air Force |
人类的平均寿命 | 男性为70岁,女性为70岁。 | - |
黄晓明的老婆是谁 | 黄晓明。 | 杨颖 |
号称睁眼看世界第一人是谁 | 牛顿。 | 魏源 |
历史上最大的地震 | 唐山大地震。 | 智利大地震 |
小说的三要素是什么 | 矛盾、冲突、悬念。 | 人物形象、故事情节、典型环境 |
你对袁天罡的预言怎么看 | 袁天罡是唐朝的人。 | - |
注:“-”代表没有参考答案,属于开放式问题,下同。
生活话题(表1-2)的回答还反映了模型“机智”的一面,对于“凤姐和鞠婧祎谁更漂亮”的问题学会了两边都不得罪。对于“男朋友是渣男怎么办”的问题模型更是毅然决然的抛出了两个字“分手”。
表1-2 生活话题问答
问题 | 模型回答 | 参考答案 |
---|---|---|
上班的意义是什么 | 挣钱。 | - |
人生的意义是什么 | 活着。 | - |
凤姐和鞠婧祎谁更漂亮 | 都漂亮。 | - |
你觉得同事能成为朋友吗 | 不能。 | - |
砒霜能吃吗 | 不能。 | - |
鸡蛋能吃吗 | 不能。 | - |
最想从事的职业 | 教师。 | - |
女朋友生气了怎么办 | 哄。 | - |
男朋友生气了怎么办 | 哄。 | - |
微信好用还是qq好用 | 微信。 | - |
工作太多做不完怎么办 | 把工作做完。 | - |
淘宝的商品怎么退款 | 退货。 | - |
在网上玩彩票半个月输了我几十万!我该怎么办? | 你可以去网上玩,现在这种网站有很多的,但是小心进了黑网,你要是想玩的话我可以给你推荐一个,这个网站做了挺多年了信誉绝对没问题,放心玩 | - |
双十一最畅销的产品 | 苹果。 | - |
男朋友是渣男怎么办 | 分手。 | - |
模型对相似概念的区分(表1-3)遭遇了滑铁卢,不难看出模型的“知识学习”的并不是很扎实,多数时候只能给出一些似是而非的回答,但个别回答也能表现出模型具有一定的分辨相似概念的能力,还是令人称奇。
表1-3 相似概念区分
问题 | 模型回答 | 参考答案 |
---|---|---|
滑膛炮和线膛炮的区别是什么 | 滑膛炮是一种火炮,线膛炮是一种火炮。 | 线膛炮与滑膛炮的区别就在于炮管内是否刻有膛线。 |
牛奶和奶牛的区别是什么 | 牛奶是奶牛的奶,牛奶是牛奶的奶。 | 牛奶是一种饮料,奶牛是一种动物 |
空虚与虚空有什么不同 | 空虚是没有内容的,虚空是有内容的。 | 虚空指心中无着落,也指空间定义很抽象的概念。 空虚是指百无聊赖、闲散寂寞的消极心态 |
蜂蜜和蜜蜂有何区别 | 蜜蜂是益虫,蜂蜜是害虫。 | 蜂蜜是蜜蜂采集植物的花蜜制成的一种物质,蜜蜂是一种昆虫 |
故事和事故有何区别 | 故事是真实的,事故是虚构的。 | 故事可能是虚构的,事故一般是真实的。 |
牙刷与刷牙有何区别 | 牙刷是用来刷牙的,而刷牙是用来清洁牙齿的。 | 牙刷是一种清洁牙齿的工具,刷牙是使用牙刷清洁牙齿的行为 |
乙醇和酒精有什么区别 | 乙醇是酒精的一种,酒精是乙醇的一种,乙醇是酒精的一种。 | 乙醇是学名,酒精是俗名 |
TNT和三硝基甲苯有什么区别 | TNT是一种炸药,三硝基甲苯是一种炸药。 | TNT是一种炸药的英文缩写,三硝基甲苯是一种炸药的学名 |
炸药和炸弹的区别 | 炸药是炸药,炸弹是炸弹。 | 炸药是指能发生爆炸的物质成分,炸弹是将炸药、控制装置、包壳材料组合在一起制成的一种武器 |
股票和基金的区别 | 股票是股份公司发行的所有权凭证,基金是一种利益共享、风险共担的集合投资方式。 | 股票是股份公司发行的所有权凭证,基金是一种利益共享、风险共担的集合投资方式 |
染色体和基因是什么关系 | 染色体是基因的载体。 | 基因是包含特定蛋白质编码的DNA 片段,染色体是基因的载体,一般存在于细胞核内。 |
中国有多少人口 | 960万。 | 14亿 |
中国的国土面积有多大 | 960万平方公里。 | 960万平方公里 |
多进程和多线程有的不同之处 | 多进程是指一个进程可以同时执行多个线程,多线程是指一个线程可以同时执行多个线程。 | 线程是进程的子集,一个进程可能由多个线程组成。多进程的数据是分开的,共享复杂,但同步简单。多线程共享进程数据,共享简单,但同步复杂。 |
tcp协议和udp协议有何区别 | tcp协议是一种协议,而udp协议是一种协议。 | TCP是面向连接的协议,在收发数据前必须和对方建立可靠的连接,建立连接的3次握手、断开连接的4次挥手,为数据传输打下可靠基础;UDP是一个面向无连接的协议,数据传输前,源端和终端不建立连接,发送端尽可能快的将数据扔到网络上,接收端从消息队列中读取消息段。 |
钥匙可以放在盒子里面吗 | 可以。 | 可以 |
盒子可以放在钥匙里面吗 | 可以。 | 不可以 |
python和java的区别 | python是一种脚本语言,java是一种面向对象的语言。 | Java必须显式声明变量名,而动态类型的Python不需要声明变量;Python虚拟机没有Java强,Java虚拟机是Java的核心,Python的核心是可以很方便地使用c语言函数或c++库;Java 的类型要声明,Python 的类型不需要。 |
笔记本和笔记本电脑有什么区别 | 笔记本电脑是笔记本电脑,笔记本电脑是笔记本电脑,笔记本电脑是笔记本电脑。 | 笔记本是一种纸质的信息记录载体,笔记本电脑是一种小型的便于携带的个人计算机 |
高铁和火车有什么不一样 | 高铁是动车,火车是动车。 | 高铁是高速铁路的简称,并不是一种交通工具,而动车组和普通火车都属于交通工具 |
“询问”了模型5道简单的个位数算术题,模型仅做对了两道(表1-4),暴露了模型不善数学的一面。
表1-4 算术问答
问题 | 模型回答 | 参考答案 |
---|---|---|
4+4= | 8 | 8 |
6+6= | 12 | 12 |
6-4= | 1 | 2 |
7-3 | 2 | 4 |
6-3+1= | 6 | 4 |
前面见识到模型对相似概念区分有一定辨识能力后,便进一步的好奇模型对于专业知识的回答会有何表现。一番测试后发现模型对专业知识的回答大部分还都是正确的(表1-5),着实令人意外。回答错误例子中模型便只是给出了一些相关的内容,综合前面几个方面的问答,能感受到模型给出结果的背后逻辑似乎是相关性。
表1-5 专业知识问答
问题 | 模型回答 | 参考答案 |
---|---|---|
酸和碱有什么区别 | 酸是一种化学物质,碱是一种化学物质。 | 三种答案:<br />1.在水溶液中电离出的阳离子全部是氢离子的化合物叫做酸,在水溶液中电离出的阴离子全部是氢氧根离子的化合物叫做碱。<br />2.凡是能给出质子的物质都是酸,凡是能接受质子的都是碱。<br />3.凡是能接受电子对的物质都是酸,凡是能给出电子对的物质都是碱。 |
不可导函数能求积分吗 | 不能。 | 不一定 |
可导函数能求积分吗 | 不能。 | 能 |
函数处处可导与函数连续是互为充分必要条件吗 | 不是。 | 不是 |
肝脏对人体的作用是什么 | 肝脏是人体的重要器官,它的作用是维持人体的正常生理功能,并且对人体的生长发育、免疫、内分泌、生殖等都有重要的作用。 | 肝脏是人体的主要解毒器官,它可保护机体免受损害 |
酒精的化学成分是什么 | 乙醇 | 乙醇 |
甲醛的化学表达式是什么 | HCHO。 | HCHO |
C4炸弹的主要成分是什么 | 氰化钠。 | RDX(旋风炸药) |
ATP是什么 | 能量。 | 三磷酸腺苷(细胞内的“能量货币”) |
商品的价值由什么决定 | 由商品的价值决定。 | 是由某一商品或劳务所带给购买人的效用所决定的 |
原子核是什么构成的 | 质子和中子。 | 质子和中子 |
质子是什么构成的 | 质子是由夸克构成的。 | 夸克 |
热力学第零定律是什么 | 熵增。 | 热平衡定律(若两个热力学系统均与第三个系统处于热平衡状态,此两个系统也必互相处于热平衡) |
热力学第一定律是什么 | 能量守恒。 | 能量守恒定律(热量可以从一个物体传递到另一个物体,也可以与机械能或其他能量互相转换,但是在转换过程中,能量的总值保持不变) |
牛顿第一定律是什么 | 惯性定律。 | 惯性定律(任何物体都要保持匀速直线运动或静止状态,直到外力迫使它改变运动状态为止) |
牛顿第二定律是什么 | 力的作用是相互的。 | 物体加速度的大小跟作用力成正比,跟物体的质量成反比,且与物体质量的倒数成正比 |
爱因斯坦因为什么得了诺贝尔奖 | 相对论。 | 光电效应 |
谁发现了量子纠缠现象 | 中国的科学家。 | 约翰·克劳泽与史达特·弗利曼 |
什么是楞次定律 | 楞次定律是指物体在不受外力作用时,总保持匀速直线运动或静止状态,直到有外力迫使它改变这种状态为止。 | 感应电流的效果总是反抗引起感应电流的原因(电磁学的“惯性定律”) |
大陆法系和海洋法系有何区别 | 大陆法系是以英美法系为基础,以判例法为主要立法依据,以判例为主要立法依据,以判例为主要立法依据,以判例为主要立法依据,以判例为主要立法 | 大陆法系,源于法德等大陆国家,判例在法律上不被认为是具有正式意义上的渊源,法被理解为抽象规范。海洋法也称为普通法,源于英国,盛于美国,制定法和判例法都是正式的法的渊源。 |
测完模型的“专业性”,又开始好奇模型的“内涵”,所以有了下面一些哲学问答(表1-6)。虽然对于灵魂三问模型只是给出了一些很摸不着头脑的回答,但是似乎也不妨碍它启发人类(“人工智能是人类的希望。”)。
表1-6 哲学话题问答
问题 | 模型回答 | 参考答案 |
---|---|---|
先有鸡还是先有蛋 | 先有鸡,后有蛋。 | - |
我是谁 | 我是中国人。 | - |
我从哪里来 | 我是从天上来的。 | - |
我要到哪里去 | 我要到北京去。 | - |
人工智能存在的意义 | 人工智能是人类的希望。 | - |
宇宙的目的是什么 | 宇宙的目的是让我们的生活更美好。 | - |
死亡意味着什么 | 死亡意味着生命的结束。 | - |
人类的存在有什么意义 | 繁衍。 | - |
人类不同于动物的地方是什么 | 人类的智慧。 | - |
1.2 少样本古诗词及歇后语续写
对于古诗词续写(表1-7)模型似乎是“满分考生”,而歇后语续写(表1-8)亦是稳稳当当。
表1-7 古诗词续写
前句 | 模型续写 | 参考答案 |
---|---|---|
床前明月光 | 疑是地上霜。 | 疑是地上霜 |
谁知盘中餐 | 粒粒皆辛苦。 | 粒粒皆辛苦 |
无可奈何花落去 | 似曾相识燕归来。 | 似曾相识燕归来 |
帝高洋之苗裔兮 | 朕皇考曰伯庸。 | 朕皇考曰伯庸 |
天生我材必有用 | 千金散尽还复来。 | 千金散尽还复来 |
知否知否 | 应是绿肥红瘦。 | 应是绿肥红瘦 |
表1-8 歇后语续写
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
麻雀虽小 | 五脏俱全 | 五脏俱全 |
周瑜打黄盖 | 一个愿打 一个愿挨 | 一个愿打 一个愿挨 |
鸡蛋碰石头 | 头破血流 | 自不量力 |
姜太公钓鱼 | 愿者上钩 | 愿者上钩 |
肉包子打狗 | 有去无回 | 有去无回 |
丈二和尚 | 摸不着头脑 | 摸不着头脑 |
司马昭之心 | 路人皆知 | 路人皆知 |
1.3 少样本实体生成
实体生成表现出了CPM模型在少样本学习上的优良性能,且模型训练时并没有针对此类数据进行过训练,却仅通过两个例子(附-4)就能“悟到”需要给出的回答应该是什么样的。
表1-9 实体生成-首都
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
英国 首都 | 伦敦 | 伦敦 |
瑞典 首都 | 斯德哥尔摩 | 斯德哥尔摩 |
德国 | 首都 柏林 | 首都 柏林 |
阿富汗 首都 | 喀布尔 | 喀布尔 |
巴西 首都 | 巴西利亚 | 巴西利亚 |
加拿大 首都 | 渥太华 | 渥太华 |
南非 首都 | 开普敦 | 开普敦/布隆方丹/比勒陀利亚 |
印度 首都 | 新德里 | 新德里 |
澳大利亚 首都 | 悉尼 | 坎培拉 |
对于首都的实例生成(表1-9)和国内省会城市的实体生成(表1-10),模型几无差错,但对国外的省会(首府)城市便有些差强人意了。
表1-10 实体生成-省会
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
四川 省会 | 成都 | 成都 |
广西 省会 | 南宁 | 南宁 |
辽宁 省会 | 沈阳 | 沈阳 |
江苏 省会 | 南京 | 南京 |
内蒙古 省会 | 呼和浩特 | 呼和浩特 |
内蒙古自治区 省会 | 呼和浩特 | 呼和浩特 |
海道 省会 | 札幌 | 札幌 |
德克萨斯 省会 | 达拉斯 | 奧斯汀 |
新泽西州 省会 | 新泽西 | 特伦顿 |
加利福尼亚州 省会 | 洛杉矶 | 萨克拉门托 |
虽然对于学科相关的实体生成论文中已有例举,但笔者还是按捺不住好奇之心做了些许尝试,效果依然令人印象深刻。
表1-11 实体生成-学科
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
宇称不守恒 学科 | 天文学 | 物理学 |
柯西不等式 学科 | 数学 | 数学 |
催化剂 学科 | 催化剂 | 化学 |
烟酰胺腺嘌呤二核苷酸磷酸 学科 | 生物化学 | 生物化学/生物 |
ATP 学科 | 高能物理 | 生物化学/生物 |
过秦论 学科 | 政治学 | 政治学/文学 |
边际效应递减 学科 | 品牌管理学 | 经济学 |
资产证券化 学科 | 金融学 | 金融学/经济学 |
大三和弦 学科 | 音乐 | 音乐学 |
试验行至此处,突然有了一个大胆的想法:若是不加微调地对模型直接进行少样本学习下的词性分析结果会如何呢?基于此进行了简单尝试得到了表1-12,虽然结果未能达到预期,但是却也显示出了CPM在这方面的潜力。不难让人相信,若是进行一番针对性的微调训练,它在词性识别任务上也能有不俗的表现。
表1-12 实体生成-词性
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
渐渐地 词性 | 副词 | 副词 |
故宫 词性 | 名词 | 名词 |
它 词性 | 名词 | 代词 |
个 词性 | 名词 | 量词 |
吨 词性 | 形容词 | 量词 |
在 词性 | 名词 | 介词 |
啪 词性 | 副词 | 拟声词 |
虽然 词性 | 名词 | 连词/介词 |
唉 词性 | 副词 | 叹词 |
基于前面,进一步发散思维做了颜色的实体生成(表1-13),从结果来看依然有着不错的潜力。
表1-13 实体生成-颜色
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
银杏树 颜色 | 绿色 | 绿色/黄色 |
干冰 颜色 | 白色 | 白色 |
硫酸铜溶液 颜色 | 蓝色 | 蓝色 |
氯气 颜色 | 紫色 | 浅黄色/黄色 |
面粉 颜色 | 白色 | 白色 |
头发 颜色 | 黑色 | - |
屏幕 颜色 | 黑色 | - |
嘴唇 颜色 | 紫色 | 红色/紫色 |
桔子 颜色 | 黄色 | 黄色/橙色 |
餐巾纸 颜色 | 蓝色 | 白色 |
切伦科夫射线 颜色 | 蓝色 | 蓝色 |
铜 颜色 | 绿色 | 橙红色/红色 |
程序员 颜色 | 黑色 | - |
青霉素 颜色 | 蓝色 | 白色 |
瓷器 颜色 | 黑色 | - |
太阳 颜色 | 黄色 | 黄色/金色 |
基于前面的种种表现,从字符判断语种反而对模型而言算是一个简单的任务了,表1-14测试的结果都是给出了正确答案。
表1-14 实体生成-语种判断
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
ich 语言 | 德语 | 德语 |
l'eau 语言 | 法语 | 法语 |
휴대폰 语言 | 韩语 | 韩语 |
空気 语言 | 日语 | 日语 |
αέρας 语言 | 希腊语 | 希腊语 |
воздух 语言 | 俄语 | 俄语 |
กำลังคิด 语言 | 法语 | 泰语 |
التفكير 语言 | 阿拉伯语 | 阿拉伯语 |
对于性别的实体生成(表1-15)模型似乎也能给出一些说得过去的答案,真是令人意想不到。
表1-15 实体生成-性别
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
游戏 性别 | 男 | - |
美颜 性别 | 男 | - |
连衣裙 性别 | 女 | 女 |
玫瑰 性别 | 女 | 女 |
胭脂 | 性别 女 | 性别 女 |
空姐 性别 | 女 | 女 |
护士 性别 | 女 | 女 |
医生 性别 | 男 | - |
皇后 性别 | 女 | 女 |
皇帝 性别 | 男 | 男 |
美容美发 性别 | 男 | - |
怀孕 性别 | 男 | 女 |
高圆圆 性别 | 女 | 女 |
胡歌 性别 | 男 | 男 |
职业方面的实体生成(表1-16)测试了从古至今各个行业的一些著名人物,绝大多数都给到了正确的结果,似乎显示了模型的“博古通今”。
表1-16 实体生成-职业
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
李云龙 职业 | 军人 | 军人 |
岳飞 职业 | 军人 | 军人 |
刘慈欣 职业 | 作家 | 作家 |
李克强 职业 | 总理 | 总理 |
袁隆平 职业 | 农民 | 农学家/科学家 |
钱学森 职业 | 科学家 | 科学家 |
白求恩 职业 | 医生 | 医生 |
李世民 职业 | 皇帝 | 皇帝 |
李白 职业 | 诗人 | 诗人 |
杨利伟 职业 | 航天员 | 航天员 |
吕不韦 职业 | 商人 | 商人/政治家 |
马云 职业 | 商人 | 商人 |
求伯君 职业 | 演员 | 商人/程序员 |
王进喜 职业 | 农民 | 工人 |
朗朗 职业 | 钢琴家 | 钢琴家 |
拉瓦锡 职业 | 化学家 | 化学家 |
达尔文 职业 | 科学家 | 科学家/生物学家 |
哥伦布 职业 | 探险家 | 探险家/航海家 |
洪秀全 职业 | 农民 | 起义领袖 |
特斯拉 职业 | 工程师 | 工程师/发明家 |
阿兰图灵 职业 | 数学家 | 数学家 |
邓小平 职业 | 政治家 | 政治家 |
贝多芬 职业 | 作曲家 | 作曲家 |
毕加索 职业 | 画家 | 画家 |
虽然对于导演/主演的实体生成(表1-17)中所给的例子都为导演(见附-10),但是有一次展现了模型的“领悟”能力,对于主演的实体生成也是不在话下。
表1-17 实体生成-导演/主演
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
盗梦空间 导演 | 诺兰 | 克里斯托弗·诺兰 |
辛德勒的名单 导演 | 斯皮尔伯格 | 斯蒂芬·斯皮尔伯格 |
超体 导演 | 克里斯托弗·诺兰 | 吕克·贝松 |
盗梦空间 主演 | 莱昂纳多·迪卡普里奥 | 莱昂纳多·迪卡普里奥 |
末代皇帝 导演 | 张艺谋 | 贝尔纳多·贝尔托卢奇 |
让子弹飞 导演 | 姜文 | 姜文 |
流浪地球 导演 | 詹姆斯·卡梅隆 | 郭帆 |
绿里奇迹 导演 | 宫崎骏 | 弗兰克·德拉邦特 |
最后尝试了一下用实体生成来寻找近义词(表1-18),却发现模型对于此任务表现一般,很容易就生成一些并不是近义的词汇。
表1-18 实体生成-近义词
前文(prompt) | 生成结果 | 参考结果 |
---|---|---|
去世 近义词 | 死亡 | 过世 |
平分秋色 近义词 | 势均力敌 | 势均力敌/难分伯仲 |
过河拆桥 近义词 | 弃子 | 卸磨杀驴/上屋抽梯 |
背叛 近义词 | 忠贞 | 变节/反水 |
痊愈 近义词 | 康复 | 病愈/康复 |
不晓得 近义词 | 不知道 | 不知道 |
拍掌 近义词 | 拍手 | 拍手/鼓掌 |
打仗 近义词 | 厮杀 | 交兵/战争 |
白开水 近义词 | 白开水 | 白水/凉白开 |
2. 预训练模型简介
2.1 模型规格与 数据集
表2-1 CPM模型的3种规格
n_param | n_layers | d_model | n_heads | d_head | |
---|---|---|---|---|---|
CPM-Small | 109M | 12 | 768 | 12 | 64 |
CPM-Medium | 334M | 24 | 1024 | 16 | 64 |
CPM-Large | 2.6B | 32 | 2560 | 32 | 80 |
表2-2 CPM模型的训练集构成
数据源 | Encyclopedia(百科) | Webpage(网页) | Story(故事) | News(新闻) | Dialog(对话) |
---|---|---|---|---|---|
大小 | ∼ 40GB | ∼ 39GB | ∼ 10GB | ∼ 10GB | ∼ 1GB |
2.2 训练参数
表2-3 CPM模型训练时的主要参数设定
参数名 | 参数值 |
---|---|
词库 | 子词词库(适用于中文,同时包含字和常用词) |
模型结构 | 从左至右的transformer decoder(类似GPT) |
batch size | 3072 |
学习率 | 0.00015 |
最大序列长度 | 1024 |
训练步数 | 20000 |
训练时间 | 2周 |
训练资源 | 64张V100显卡 |
训练任务 | 从左到右的自回归 |
训练架构 | 模型并行,将模型在宽度上分割置于多张显卡进行训练 |
2.3 结果测试
三种规格的模型的零样本(未经目标数据训练或微调)对文本分类任务的效果令人意外,其中TNEWS与IFLYTEK为4分类,OCNLI为3分类。
表2-4 CPM三种规格模型在零样本学习(zero-shot)情形下的文本分类效果
TNEWS | IFLYTEK | OCNLI | |
---|---|---|---|
CPM-Small | 0.626 | 0.584 | 0.378 |
CPM-Medium | 0.618 | 0.635 | 0.379 |
CPM-Large | 0.703 | 0.708 | 0.442 |
使用CPM进行实体生成时也表现出了令人惊喜的效果,在给予两个三元组关系示例作为前文的情况下可以领会到以示例格式输出生成的实体(见附-6所示代码)。另外原论文表示在N设置为2时便可以取得与N为4时相当的效果。
表2-5 CPM模型在少样本学习(few-shot)情形下于XLORE数据集上的BLEU-1分数对比
N = 2 | N = 4 | |
---|---|---|
CPM | Small Medium Large | Small Medium Large |
主要工艺 (Main Process) 释义 (Explanation) 商品品牌 (Brand) 学科 (Subject) 全名 (Full Name) 涉及领域 (Related Field) 主要作物 (Main Crop) 所在国家 (In Country) 病原类型 (Pathogen Type) 首任总统 (The First President) |
0.500 0.500 0.700 0.000 0.000 0.071 0.098 0.033 0.483 0.000 0.025 0.124 0.035 0.010 0.108 0.042 0.065 0.104 0.000 0.150 0.050 0.033 0.033 0.033 0.250 0.220 0.370 0.000 0.000 0.000 |
0.400 0.200 0.400 0.000 0.000 0.075 0.183 0.050 0.450 0.059 0.053 0.108 0.000 0.014 0.122 0.063 0.037 0.125 0.100 0.150 0.100 0.050 0.000 0.050 0.200 0.300 0.340 0.016 0.009 0.014 |
*注:BLEU-1评估分数范围在0~1之间,值越大代表效果越好;N代表少样本学习中所给示例的数目;XLORE数据集是包含实体及关系的一个数据集;
3. 附录
附-1 问答few-shot代码示例
def ask_question(question, max_len=55):
out = sample('''问题:中国的首都是哪里?
答案:北京。
问题:李白在哪个朝代?
答案:唐朝。
问题:%s
答案:''' % question, max_len)
print(f"Q:{question} A:{out}")`
附-2 诗词续写few-shot代码示例
def dictation_poetry(front, max_len=50):
out = sample('''默写古诗:
白日依山尽,黄河入海流。
%s,''' % front, max_len)
print(f"Q:{front} A:{out}")`
附-3 算数问答few-shot代码示例
def do_math(inputs, max_len=10):
out = sample('''1+1=2
3+2=5
%s''' % inputs, max_len)
print(f"Q:{inputs} A:{out}")`
附-4 省会实体生成few-shot代码示例
def entity_generation_provincial_capital(inputs, max_len=20):
out = sample(
f"""山东 省会 济南
河南 省会 郑州
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-5 首都实体生成few-shot代码示例
def entity_generation_capital(inputs, max_len=20):
out = sample(
f"""中国 首都 北京
美国 首都 华盛顿
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-6 学科实体生成few-shot代码示例
def entity_generation_subject(inputs, max_len=20):
out = sample(
f"""恒星级黑洞 学科 宇宙论
品类需求强度 学科 品牌经济学
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-7 词性实体生成few-shot代码示例
def entity_generation_pos(inputs, max_len=20):
out = sample(
f"""跑 词性 动词
可爱 词性 形容词
砰 词性 拟声词
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-8 颜色实体生成few-shot代码示例
def entity_generation_color(inputs, max_len=20):
out = sample(
f"""血液 颜色 红色
天空 颜色 蓝色
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-9 语种实体生成few-shot代码示例
def entity_generation_language(inputs, max_len=20):
out = sample(
f"""吃了吗 语言 汉语
interesting 语言 英语
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-10 导演/主演实体生成few-shot代码示例
def entity_generation_director(inputs, max_len=20):
out = sample(
f"""霸王别姬 导演 陈凯歌
千与千寻 导演 宫崎骏
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-11 性别实体生成few-shot代码示例
def entity_generation_gender(inputs, max_len=20):
out = sample(
f"""口红 性别 女
胡须 性别 男
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-12 职业实体生成few-shot代码示例
def entity_generation_job(inputs, max_len=20):
out = sample(
f"""奥巴马 职业 总统
胡歌 职业 演员
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-13 同义词生成few-shot代码示例
def entity_generation_synonyms(inputs, max_len=20):
out = sample(
f"""信息 近义词 资讯
生还 近义词 幸存
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-14 翻译实体生成few-shot代码示例
def entity_generation_translation(inputs, max_len=20):
out = sample(
f"""信息 英语 information
我 德语 ich
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
附-15 歇后语实体生成few-shot代码示例
def couplet(inputs, max_len=20):
out = sample(
f"""歇后语 孔夫子搬家 尽是书
兔子的尾巴 长不了
{inputs} """, max_len)
print(f"prompt:{inputs} answer:{out}")`
4. 参考文献
1. Zhang, Z. et al. CPM: A Large-scale Generative Chinese Pre-trained Language Model. (2020).