• [技术干货] 26亿参数,智源、清华开源中文大规模预训练模型
    近日,北京智源人工智能研究院和清华大学研究团队联合发布了以中文为核心的大规模预训练语言模型 CPM-LM,参数规模达 26 亿,预训练中文数据规模 100 GB。自 2018 年谷歌发布 BERT 以来,预训练模型在自然语言处理(NLP)领域逐渐成为主流。今年 5 月份,OpenAI 推出的史上最大 AI 模型 GPT-3更是引起了大量讨论。但是,目前 NLP 领域的预训练模型多针对英语语言,以英语语言数据为训练数据,例如 GPT-3:用于训练 GPT-3 的数据集。近日,北京智源人工智能研究院和清华大学研究团队合作开展了一项名为「清源 CPM (Chinese Pretrained Models)」的大规模预训练模型开源计划,旨在构建以中文为核心的大规模预训练模型。首期开源内容包括预训练中文语言模型和预训练知识表示模型,可广泛应用于中文自然语言理解、生成任务以及知识计算应用,所有模型免费向学术界和产业界开放下载,供研究使用。清源 CPM 主页:https://cpm.baai.ac.cn/清源 CPM Github 托管代码主页:https://github.com/TsinghuaAI/模型特点根据清源 CPM 主页介绍,该计划发布的预训练模型具备以下特点:模型规模大:本次发布的CPM-LM 参数规模达 26 亿,预训练中文数据规模 100 GB,使用了 64 块 V100 GPU,训练时间约为 3 周;CPM-KG 的参数规模为 217 亿,预训练结构化知识图谱为 WikiData 全量数据,包含近 1300 个关系、8500 万实体、4.8 亿个事实三元组,使用了 8 块 V100 GPU 训练时间约为 2 周。语料丰富多样:收集大量丰富多样的中文语料,包括百科、小说、对话、问答、新闻等类型。学习能力强:能够在多种自然语言处理任务上进行零次学习或少次学习,并达到较好的效果。行文自然流畅:基于给定上文,模型可以续写出一致性高、可读性强的文本,达到现有中文生成模型的领先效果。在模型训练方面,CPM 模型预训练过程分布在多块 GPU 上,采用层内并行的方法进行训练,并基于当前已有的成熟技术,减少同步提高通讯速率。在硬件设施方面,为训练该 CPM 模型,共有 64 块 V100 显卡投入使用。经过预训练的 CPM 模型可以用来促进诸多下游中文任务,如对话、论文生成、完形填空和语言理解等。为了促进中文自然语言处理研究的发展,该项目还提供了 CPM-LM (2.6B) 模型的文本生成代码,可用于文本生成的本地测试,并以此为基础进一步研究零次学习 / 少次学习等场景,详情参见项目 GitHub 主页。模型性能清源 CPM 使用新闻、百科、对话、网页、故事等不同类型的中文语料数据进行预训练。在多个公开的中文数据集上的实验表明,清源 CPM 在少样本或无样本的情况下均能够实现较好的效果。中文成语填空 ChIDChID 是 2019 年清华大学对话交互式人工智能实验室(CoAI)收集的中文成语填空数据集,其目标是对于给定的段落,在 10 个候选项中选择最符合段意的成语进行填空。其中有监督设定是指在 ChID 的训练集上进行训练,随后在测试集上测试;无监督设定是指不经过任何额外训练,直接使用预训练模型进行测试。具体做法是,将候选项依次填入段落中,计算填充后段落的困惑度 (Perplexity),选择困惑度最小的候选项作为预测结果。表中汇报了预测的准确率,可以看到,CPM (大) 在无监督设定下甚至达到了比有监督 CPM (小) 更好的结果,反映出清源 CPM 强大的中文语言建模能力。对话生成 STCSTC 是 2015 年华为诺亚方舟实验室提出的短文本对话数据集,要求在给定上文多轮对话的条件下预测接下来的回复。其中 CDial-GPT 是清华大学对话交互式人工智能(CoAI)实验室 2020 年提出的中文对话预训练模型。用于衡量多样性的 Dist-n 指标的两个数字分别是所有不重复的 N-Gram 的数量及占所有 N-Gram 的比例。可以看到,在无监督的设定下,清源 CPM 具有更好的泛化性,在有监督设定下,清源 CPM 能达到比 CDial-GPT 更优的效果,尤其在多样性指标上表现更佳。文本分类清源 CPM 使用头条新闻标题分类(TNEWS,采样为 4 分类)、IFLYTEK 应用介绍分类(IFLYTEK,采样为 4 分类)、中文自然语言推断(OCNLI,3 分类)任务作为文本分类任务的基准。具体做法是,先输入分类样本,再输入「该文章的类别为 / 该介绍的类别为 / 两句话的关系为」,要求模型直接生成标签,四个标签中概率最高的标签作为预测结果。在无监督设定下,不同规模的清源 CPM 在文本分类任务上的精确度如下表所示:清源 CPM 能够在无监督的设定下达到比随机预测好得多的精确度(TNEWS/IFLYTEK/OCNLI 随机预测精确度分别为 0.25/0.25/0.33)。自动问答CPM 使用 DuReader 和 CMRC2018 作为自动问答任务的基准,要求模型从给定段落中抽取一个片段作为对题目问题的答案,其中 DuReader 由百度搜索和百度知道两部分数据组成。在无监督的设定下,不同规模的 CPM 模型的表现如下表所示:其中单样本是指在测试时,从数据集中随机抽取一个正确的「(段落,问题,答案)」三元组,插入到用于评价的样例前,作为 CPM 模型生成答案的提示;零样本是指直接使用 CPM 模型预测给定段落和问题的答案。在单样本设定下,CPM 能从给定的样本中学习到生成答案的模式,因此效果总是比零样本设定更好。由于模型的输入长度有限,多样本输入的场景将在未来进行探索。模型效果展示我们可以从以下示例中,观察 CPM 预训练中文语言模型的效果。比如基于对单个常识性问题的学习,依照规律进行提问和正确回答:根据前文真实的天气预报,继续报道天气预报(不保证正确性):执行数理推理:甚至续写《红楼梦》片段:据了解,清源 CPM 未来计划开源发布更大规模的预训练中文语言模型、以中文为核心的多语言预训练模型、融合大规模知识的预训练语言模型等。本文转载自:https://news.51cto.com/art/202011/632184.htm?pc
  • [前沿快讯] 刘群:预训练语言模型研究进展和趋势展望
    作者 | 戚路北自2018年下半年开始,到现在为止,预训练语言模型的发展基本呈现爆发趋势,研究人员数目越来越多,研究方向也越来越广。近日,在第十九届中国计算语言学大会(CCL2020)上,华为诺亚方舟实验室语音语义首席科学家刘群介绍了预训练语言模型研究进展和趋势展望。演讲内容包括自然语言处理的预训练方法的背景,预训练语言模型的近期进展,华为课题组的成员们做的工作,以及目前的成就与未来的展望。刘群是自然语言处理和机器翻译领域的国际著名专家,研究方向包括多语言信息处理、机器翻译模型、方法与评价等。2012 年 7 月之前,刘群是中国科学院计算技术研究所的研究员和自然语言处理研究组负责人。2012 年 7 至 2018 年 6 月,刘群任都柏林城市大学教授、爱尔兰 ADAPT 研究中心(前身 CNGL 研究中心)自然语言处理主题负责人。2018 年 7 月开始,他正式加入华为诺亚方舟实验室,任语音语义首席科学家,主导语音和自然语言处理领域的前沿研究和技术创新,除了语音、对话、翻译、多模态以外,其实验室也在重点布局预训练语言模型。以下是演讲全文,AI科技评论进行了不改变原意的整理。1自然语言处理的预训练方法的背景自然语言处理的预训练方法属于自然语言的表示学习,自然语言表示学习的形成已经经过了长期的历史发展。首先,1948年N-gram分布式模型被提出来,这是最初的语言模型。1986年出现了分布式语义表示,即用一个词的上下文来表示该词的词义。2003年神经语言模型被提出,开始使用神经网络来进行语言建模。2013年word2vec的提出,标志着神经网络方法开始在NLP领域获得成功,word2vec将词语从一个符号空间映射到了一个向量空间,使得NLP中大规模使用神经网络方法成为可能。到2018年,出现了预训练语言模型。不管是统计方法还是神经网络方法,都是一种基于数据的方法。如果数据不够的话,模型就无法有效建立。但是现实生活中,数据永远是一个很大的问题。在实际应用场景中,我们得到的很多数据都是无标注的,在这种情况下传统模型就无法解决实际问题。预训练的思想是,在利用标注数据之前,先利用无标注的数据也就是纯文本数据,去训练一个模型,这个模型能够学到一些潜在的跟标注无关的知识。然后在具体的任务上,预训练模型就可以利用大量的无标注数据训练所得到的知识。第一代自然语言处理预训练模型是词向量模型。词向量模型是把大量的无标注的文本送到一个比较简单的神经网络里面,经过训练,每个词都会被赋予一个静态的向量。词的静态向量在空间分布上有一个非常好的特点,即相似的词会聚在一起。词与词之间的关系也会以一种向量的形式得到体现,从而实现了符号空间到向量空间的映射。第二代自然语言处理的预训练模型,就是我们今天研究和使用的预训练语言模型。预训练语言模型是词向量模型的进化,它的本质其实是有上下文的词向量模型。预训练语言模型的训练过程是,首先给句子中的每个词赋予一个静态向量,然后它会跟句子的上下文词进行交互,最后就得到了这个词在句子中的变化的词向量。这种特殊的词向量模型我们叫做预训练语言模型。预训练语言模型有一个很重要的特点,它既会给每一个句子赋予一个概率,同时还会给每个词赋予一个表示或一些特征。利用预训练语言模型的这个特点,就可以使用现实生活中几乎无穷无尽的无标注文本,来训练预训练语言模型,然后就能把经过训练的预训练语言模型,用在任何的下游任务上。这不仅可以使下游任务的性能得到非常大的提高,还可以大大降低下游任务所依赖的标注语料的规模。实际上,预训练语言模型的出现,几乎使所有的下游任务的性能都得到了很大的提高,使得自然语言处理技术又上了一个台阶,因此这是一个具有重大意义的突破。在实际应用中,使用预训练语言模型可以分成两个过程,一个叫预训练,一个叫微调。首先在大量的文本上训练出一个预训练语言模型,然后在下游的任务上,根据实际情况对得到的预训练语言模型进行微调。Transformer模型是预训练语言模型的主要框架,它的主要特点就是词与词之间可以互相关注。类似于卷积神经网络中具有多个卷积核,并且每个卷积核会自动去会分配不同的权重,Transformer的基本结构的每一层都由多头的自注意力网络,以及一个前向的神经网络共同组成。自注意力机制是预训练语言模型中非常有趣的机制。通过一些可视化工具,我们可以看到不同的自注意力头呈现出不同的特点或不同的关注结构,比如关注句子的第一个词、相邻的词、中心词甚至是句子结尾的标点符号。所有的关注信息,或者说词的注意力都可以在可视化图里看到。预训练语言模型出现以来发展得非常迅速,目前已经演化形成了一个家族。2预训练语言模型的近期进展预训练语言模型的近期进展包括以下几个方面:1.更强大,也被戏称为叫大力出奇迹。2.更小巧,即怎么把做模型做的更小、更快。3.更优秀、功能更多、性能更高、训练更快的模型。4.更聪明,即怎么引入外部知识。5.更能干,即预训练语言模型如何影响了自然语言处理以外的一些领域。1.更强大预训练语言模型几乎成为了大公司之间的军备竞赛,目前学术界还还很难参与这种军备竞赛。很多大企业都将自己的预训练语言模型做的越来越大,仿佛没有终点,并且这种趋势还在不断加强。预训练语言模型的做大不仅仅是带来量的提高,更带来了模型使用性质的变化。最早在词向量模型时期,整个自然语言处理就被带入了神经网络时代。在神经网络时代,单一的CPU已经不能满足需求了。可以通过GPU,在不需要进行过多额外计算的情况下,做到在整个词表上进行词的选择,这在以前的SMT上是不可想象的。正是有了GPU,我们才可以通过词向量模型这类神经语言模型来完成这类工作。如果没有GPU支持,或者用以前的统计方法,是难以想象的。预训练语言模型通过使用更大的GPU,更多的数据,也带来了更大的变化,即微调的模式。微调为下游任务大致规定了几种固定的模式,包括句子分类、句子关系的分类、词语序列标注,以及QA任务中常见的句子片段的提取等。以前解决每个NLP问题,都要先设计模型。现在通过微调这一简单的模式,我们不再需要去为每个任务去设计特定的NLP模型,而可以将所有的NLP任务都纳入几个模式。GPT-3有一个非常吸引人的地方,就是它几乎无需做微调,并且它的演示效果也很好。GPT-3给我们带来了非常大的冲击。这个模型有着极高的训练成本,使得实际上绝大部分的企业和科研机构都无力承担。它的1750亿参数比BERT-base模型大了100倍,比 GPT-2大了10倍。它单次训练需要1万亿单词的训练数据,以及1200万美元的训练成本,能够承担这种训练成本的企业在世界范围内也非常少。虽然它的训练成本如此之高,但是它的效果非常令人吃惊。以前我们解决特定的问题,都需要专门去找语料,做专门的训练才能做。现在这个模型,只要是需要的功能都可以直接实现,基本不用训练。还有一些我们原来觉得很难做到的事情,GPT-3也能做到,例如算术计算、写代码等等。它还能够很细致的区分56和49这两个词,甚至在数量上都能区分出来,如此的细腻度令人吃惊,这也给它的商业价值也带来巨大的想象空间。很多人都在想,大算力会不会成为预训练语言模型的瓶颈?实际上,算力最终并不会成为瓶颈。上世纪90年代IBM提出统计机器翻译模型的时候,大家几乎都重复不了。但是99年以后,统计机器翻译模型基本上变成普遍的、所有人都能用的模型了。深度学习也是一样,深度学习在GPU出现以前,也是曲高和寡,然而 GPU的出现,突破了算力瓶颈以后,也变成了一种普通的工具。那么GPT-3这样的模型,现在的成本虽然非常高,但是我们大家可以去憧憬一下,未来的某一天,它或许也会变成一种非常普遍的工具。训练大模型实际上是很困难的,它并不是在单一的CPU或者GPU上进行训练,而是在多个硬件的组合结构上进行训练。但同时,每引入一种更复杂的硬件结构,也会带来更多的问题。上图为一些常见的用来解决这些问题的技术。下面着重介绍三维并行训练技术和稀疏注意力加速技术。三维并行训练技术,是指把数据和模型进行各种维度的切分,包括数据并行、pipeline并行和模型并行。模型并行又包括不同类型的模型变形,通过把整个数据和模型进行三维的切分,建立三维并行坐标和物理设备之间的映射,然后每一个区域运行一小块的方法。稀疏注意力加速技术也是一个被证明有效的技术,GPT-3就使用了这个技术。它的原理是把一个注意力矩阵分成两个小型矩阵的乘积,这是一个可以有效处理更长注意力的机制,这也是目前为止被证明非常有效的办法。2.更小巧目前的大型预训练模型,不但训练麻烦,而且推理时间也很长,因此只能用在云端应用上,在设备端应用有明显的局限性。因此训练出更小的模型,实际上也具有非常大的应用价值。就华为来说,华为目前的业务方向除了手机业务外,也在做大量的用于物联网的小设备。既然希望将模型用到小设备上,我们就面临将模型进行加速和压缩的问题。预训练语言模型就形成了这两种趋势。一方面是人们把模型越做越大,去探索模型能力的边界。另外一方面就是模型越做越小,让它在各种下游任务上形成生产力,即在手机端等各种小设备上能够单独运行。目前模型压缩这一方面研究也非常多,主要包括三大类技术,一类是基于知识蒸馏的预训练语言模型压缩,另一类是基于剪枝的预训练语言模型压缩,还有一类是基于量化的预训练语言模型压缩。基于剪枝的预训练语言模型压缩,就是基于一定的准则,去除掉参数矩阵的冗余部分。比如在神经网络模型中,我们可以去掉一些冗余的神经元节点,和神经元连接,使得模型变小一点。基于量化的预训练语言模型压缩,就是减少数值表示所需要的比特值。目前我们使用的GPU都是用32位的浮点数计算,计算代价非常高。我们可以将它量化为8位的浮点数,甚至4位的浮点数、2位的浮点数,这样运算过程就得到了简化。还有一些别的压缩技术,比如矩阵参数分解、参数共享、模型架构设计与搜索。矩阵参数分解就是将一个大矩阵,分解成两个小矩阵的乘积。参数共享有很多方式,比如Transformer有很多层,各层之间可以共享其中一些参数。而ALBERT,就是所有的层共享其中一层的参数。共享参数的好处就是参数量大大减少,但实际上在推理时间上并不能大幅度减少,所以它能带来的好处还是有限。模型架构设计与搜索这方面的发展,其实跟近年来自动机器学习的发展有关系,我们希望通过自动机器学习,能够去搜索出更好的、更精简的架构。3.更优秀目前看来Transformer模型架构确实非常优秀,当下也很难去做大的改动。真正做出一些影响力的工作是transformer XL,它的贡献是引入了recurrent的思想,以及引入了相对位置编码。而其它方面的话,大的改动很少。另外就是试图降低复杂度,因为attention机制是每两个词之间都要做一次 attention,这样的话attention的计算数量就是一个句子长度的平方级。在日常处理更长的文本的时候,都会面临这样的问题。目前我们需要的文本长度一般都不能超过1024,很多任务甚至只能用512或者256。很多研究工作速度希望把它的计算数量从平方量级降到线性量级,从而可以使语言模型处理更长的文本,所以目前这方面的研究也非常多。除了去寻找更好的模型结构,我们还需要训练更复杂的任务。现在BERT训练的过程实际上并不高效,它的训练时间很长,很多学者就试图在这方面去改进,提出更好的训练任务。Baseline是基础的预训练语言模型的训练,包括LM、MLM和NSP等训练任务。除此之外,大家也提出了各种各样的新的训练任务来进行改进。BERT就提出了几种新的训练方法,一种叫做next sentence prediction(NSP),就是根据前文预测下一个句子。另一种叫做whole word masking,这跟BERT的设计有关系。因为BERT里很多词都被拆分成一个个小单位,这样单独预测其中一个subword难度就比较小。通过把小单位合起来,加大训练难度,预测效果就会更好一点。以下还列举了其它模型的一些训练任务。replaced token prediction:也就是将一个词给换掉,然后来预测这个词是换掉之后的词还是原来的词。Sentence order prediction:将两个句子的顺序给颠倒,来检测哪种顺序是正确的。Denoising Autoencoder:这个是更复杂的训练任务,它是对一个句子进行插入、删除、替换等操作之后,再将它还原出来。Multi-task Learning:它同时使用了多种训练任务。Generator and discriminator:它是用一个生成器去替换一些词,然后由判别器来判断每个词是否替换。它的好处在于一个句子中的所有词都可以做错误的反向传播,所有词都能被我们使用,而BERT一个句子只能利用15%的词。这样我们就能加快它的训练速度。另外我们还在追求更多的功能,比如多语言预训练语言模型,像mBERT和XLM,另外还有一些想法就是把GPT和BERT这一类模型给综合起来,像UniLM和PMLM。4.更聪明现在,人们都意识到语言模型缺乏知识,那么是否可以融入一些外部知识呢?知识这个话题很大,目前也有一些争议,但是相关研究还是很多的。图中是刘知远团队跟华为合作的早期工作,就是试图把采用TransE预训练得到的知识空间的向量表示嵌入到语言模型里面去。这是刘知远团队改进后的工作叫KEPLER,也就是将知识图谱融入到语言模型中,像这一类的工作还有很多。还有一种更简单的想法,Span知识融入:就是让实体或者关系对应着句子中的一个span,通过利用span的方式来把知识嵌入。图中是赵海团队做的SemBERT, 这种方法是将语义角色标记这种更复杂的句法语义的知识融入到语言模型。5.更能干目前在预训练语言模型中,有很多想法都非常好,而且在自然语言处理方面取得了成功。因此很多人都在想,能不能将这种思路应用到别的领域?这个想法很好,做起来很困难,但最终也取得了一些喜人的成果。比如说在语音识别领域, Facebook提出了 wave2vec,它就是通过使用大量没有标注的、纯语音的数据,去预训练一个模型,然后利用这个模型,在一个少量文本标注的语料上进行语音识别,最终取得了非常好的效果。那么最近在图像上面,包括图像分类、目标检测等任务,都有一些预训练的相关研究。其中,DETR是用了transformer模型,但不算预训练。信息检索也已经开始用预训练语言模型,并取得了非常好的效果。在这方面目前大概有两类模型,一类采用sparse索引,它是使用传统的搜索引擎的前提下,去改进传统倒排表的方法。另一类采用dense索引,这种方法不需要建立传统的倒排表,而是直接用dense向量去对文本进行信息检索。3我们的工作接下来我将介绍一下华为诺亚方舟实验室在这方面所取得的成果。首先,我们开发了一个自研的预训练语言模型叫哪吒。其次,我们在模型压缩方面做的工作非常多,华为的TinyBERT模型被压缩的非常小,小到可以用在端侧。如今的预训练语言模型太多了,但我们还是希望有自主开发的模型,然后兼收并蓄,融合好的技术,并且把新技术也结合,然后训练好用的模型。同时我们也把它开源,大家可以去网上下载。目前我们已经推出了不同的版本,另外还有生成模型和TinyBERT,也都开源了。哪吒的性能也是非常强的,我们在目前中文的CLUE排行榜上是第二名,仅次于human模型,事实上在之前很长时间内我们都是第一名。另外在英文的排行榜SUPERGLUE,我们现在已经排到第二名,第一名的是目前在规模上大哪吒十倍的T5模型。哪吒在华为产品的落地,包括华为云,华为手机小艺,以及华为的 HMS。哪吒在华为产品落地的技术,包括基础的算法和模型,对话系统,还有推荐搜索等。TinyBERT是我们目前取得成就最多的一个模型,接下来我着重讲一下TinyBERT的原理。TinyBERT知识蒸馏的基本流程包括两步,第一步叫做general distillation,即使用一个大的预训练语言模型,训练一个小的预训练语言模型。第二步叫做task-specific distillation,即使用一个大的预训练语言模型,去对一个小的预训练语言模型进行微调。在这里我们引入了一个新的技术,叫做数据增强,这个技术非常重要,如果没有这个技术的话,整个模型的性能会下降很多。TinyBERT知识蒸馏的损失函数中一个比较重要的就是,让中间层去学习隐藏状态和attention向量。TinyBERT知识蒸馏的选层策略就是,我们用4层或者6层的学生模型,去学习12层的教师模型。但是让哪一层去学习哪一层,这就是一个有关映射的策略的问题了。我们最早提出的是一个均匀映射模型,即用小模型的1,2,3,4层,去依次学习大模型的3,6,9,12层。后来我们就在想,是否可以让每一层都自动去搜索一个最合适的层次学习?我们就引入了进化学习算法。然后我们发现,对小模型来说,最好的学习层次是0,0,5,10。即小模型的第一层,第二层不要去学习,最好直接使用自动反向传播去调。用第3层去学大模型的第5层,第4层去学大模型的第10层,这样效果最好。6层的学生模型我们学到的是0,5,0,0,0,10。通过选层策略可以发现,选择好的层次的话就可以提高整体的效果。TinyBERT知识蒸馏数据增强是一个非常有效的技术。因为下游任务一般数据都比较少,那么我们在蒸馏小模型的时候,数据的数量经常是不足的。我们采取的办法,就是把用于下游任务的数据进行增强。数据增强实际上就是利用了BERT本身的特点,它的每个词都是可以替换成别的词的。我们采用一种替换策略,就是把每个词都去做一些替换,这样的话就会生成很多的跟原来的句子很相似的句子,比如10个词的句子换掉2个或者3个词,去生成增强的语料。最后,我们发现大概增强20倍的时候,即将原来的一个句子替换生成20个左右相似的句子,用来做下游任务的蒸馏的效果最好。这是我们的实验结果,我们看到在4层的模型,在GLUE上面,总的分数大概降低了2.5,从79.5降到77。6层的TinyBERT基本上是跟12层的没有什么变化。在参数量方面,BERT-base有109M,而4层的模型只有14.5M,只有原模型的13.3%。6层的模型只降到了原来的一半。在速度方面,我们也可以看到4层的模型提速了9.4倍,提速非常高。并且我们现在模型空间非常小,参数量是14.5M的模型大小只有50M左右,完全可以放入手机之中,并且它的推理速度比原来快将近快10倍。目前我们这个模型已经大量的运用在华为的设备与应用之中。我们还做了一个工作,在华为自研的BOLT深度学习加速库下,利用了底层的硬件再一次进行压缩和加速,使得TinyBERT最终的推理速度,可以达到1.3毫秒。我们的TinyBERT在中文的CLUE小模型排行榜上一直是第一名。然后我们参加了 NLPCC的小模型评测比赛,也是获得了第一名。4总结与展望从历史角度来讲,模型越来越大。GPT-3已经这么大了,我们还能做得更大吗?当然如果未来计算设备的硬件的问题解决了,可以更大,但是近期内呢?更大的模型应该是什么样子?我设想的一种方式就是分布式,把模型分布到很多机器上计算,就像搜索引擎一样。像BERT这一类模型如何再把它训练的更大?现在最大的几个预训练语言模型都是GPT类的,BERT这一类模型很难做得更大,一些工程上的问题目前还是很难解决的。那么未来我们是否可能训练更大的BERT类的模型?小模型相反, BERT这类模型可以压缩的很小,GPT模型就很难压缩。BERT这个模型的压缩是不是还有潜力可以挖掘?另外知识融入是一个很有意思的问题。知识融入人们做了很多工作,实际上我是不太满意的。因为很多工作只是在解决知识类的问题效果比较好, 一般的 NLP的问题,知识融入的作用并不是那么大,所以希望知识融入能够解决一般的 NLP的问题。还有就是知识应该如何表示?现在大部分人认为知识都是三元组,我觉得这个是存在争议的,三元组实际上能够表达的知识其实非常有限。比如序列关系、空间关系、集合关系、数值关系等等关系知识都是很难学到的。关于搜索引擎,我希望以后预训练语言模型可以和搜索引擎结合起来,预训练语言模型就是个能够回答任何问题的搜索引擎。最后就是多模态预训练,希望将来它能带来无限的想象空间。
  • [技术干货] 【2.1管理中心安装】只安装一个管理中心,不安装其他服务(如:NLP服务),场景包需要做哪些修改?
    背景:场景包中包含了其他服务,安装时直接导入场景包会使得配置中含有服务节点信息,而我们并没有配置服务节点信息,从而导致安装失败。以只安装一个管理中心为例操作步骤场景包修改:删除不需要服务节点信息(API、Manas、NLP、Mobile)tenant页签partition页签service页签
  • [其他] iBOT 方法概述
    在 NLP 的大规模模型训练中,MLM (Masked Language Modeling)是非常核心的训练目标,其思想是遮住文本的一部分并通过模型去预测这些遮住部分的语义信息,通过这一过程可以使模型学到泛化的特征。NLP 中的经典方法 BERT 就是采用了 MLM 的预训练范式,通过 MLM 训练的模型已经被证明在大模型和大数据上具备极好的泛化能力,成为 NLP 任务的标配。但是在大多数 CV 中的自监督学习任务里面,关注的往往是图片的 global view,比如 MoCo v3。而没有认真研究 image 的内部结构,也就不算是真正的 MIM (Masked Image Modeling)。对于 NLP 任务的 MLM 中,lingual tokenizer 非常重要。它的任务是把 language 变成富含文本语义的 tokens。与此相似,对于 CV 任务的 MIM 中,visual tokenizer 非常重要。它的任务是把 image 变成富含图像语义的 tokens。但是,图片不像是文本,文本中自然蕴含有语言的语义信息,NLP 中 tokenization 通过离线的词频分析即可将语料编码为含高语义的分词。但是图片不一样,图片的信息比较连续,图像 patch 是连续分布的且存在大量冗余的底层细节信息,而图像 patch token 的语义信息丰富。所以图像 patch 的 visual semantic 信息不那么容易被提取。这个属性直观地带来了一个多阶段的训练策略,即:在训练目标模型之前,我们需要首先训练一个 off-the-shelf 的 tokenizer,它能够把 image 转换成语义丰富的 tokens。BEiT 中使用的是一个 Pre-trained discrete VAE 作为 tokenizer。虽然提供了一定程度的抽象,但discrete VAE 仍然只能在局部细节中捕获低级语义。
  • [其他] 自然语言
           自然语言(Natural language)通常是指一种自然地随文化演化的语言。例如,汉语、英语、日语都是自然语言的例子,这一种用法可见于自然语言处理一词中。自然语言是人类交流和思维的主要工具。 自然语言是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一,而对自然语言处理的研究也是充满魅力和挑战的,也是各国人表达的方法其中之一。       与自然语言相对的是逻辑语言。自然语言是人脑与人脑的交际工具 ,逻辑语言是人脑与电脑的交际工具。认知科学认为,思维和认知是知识的逻辑运算,任何计算化的自然语言分析都主要依赖逻辑语言对这种分析的表述。研究心智表现及其运算的认知科学理论追求的是心智研究的物质体现,这最终将导致语言学研究进入自然科学研究。自然语言的高度形式化描写对计算机程序的机械模仿至关重要,但理解力模仿不同于机械模仿,它们之间的区别非常类似自然语言中形式操作与意义操作之间的不同。机械模仿涉及的是形式性质,而理解力模仿涉及的却是准语义性质。现阶段计算机以机械模仿为主并通过逻辑语言与人类的自然语言对话       自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分  。       自然语言处理主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面 。
  • [其他] 自然语言处理一些应用场景
    机器翻译机器翻译因其效率高、成本低满足了全球各国多语言信息快速翻译的需求。机器翻译属于自然语言信息处理的一个分支,能够将一种自然语言自动生成另一种自然语言又无需人类帮助的计算机系统。目前,谷歌翻译、百度翻译、搜狗翻译等人工智能行业巨头推出的翻译平台逐渐凭借其翻译过程的高效性和准确性占据了翻译行业的主导地位。自动问答传统的搜索引擎技术已经不能满足人们越来越高的需求,而自动问答技术成为了解决这一问题的有效手段。自动问答是指利用计算机自动回答用户所提出的问题以满足用户知识需求的任务,在回答用户问题时,首先要正确理解用户所提出的问题,抽取其中关键的信息,在已有的语料库或者知识库中进行检索、匹配,将获取的答案反馈给用户。打击垃圾邮件当前,垃圾邮件过滤器已成为抵御垃圾邮件问题的第一道防线。不过,有许多人在使用电子邮件时遇到过这些问题:不需要的电子邮件仍然被接收,或者重要的电子邮件被过滤掉。事实上,判断一封邮件是否是垃圾邮件,首先用到的方法是“关键词过滤”,如果邮件存在常见的垃圾邮件关键词,就判定为垃圾邮件。但这种方法效果很不理想,一是正常邮件中也可能有这些关键词,非常容易误判,二是将关键词进行变形,就很容易规避关键词过滤。自然语言处理通过分析邮件中的文本内容,能够相对准确地判断邮件是否为垃圾邮件。目前,贝叶斯(Bayesian)垃圾邮件过滤是备受关注的技术之一,它通过学习大量的垃圾邮件和非垃圾邮件,收集邮件中的特征词生成垃圾词库和非垃圾词库,然后根据这些词库的统计频数计算邮件属于垃圾邮件的概率,以此来进行判定。文本情感分析情感分析作为一种常见的自然语言处理方法的应用,可以让我们能够从大量数据中识别和吸收相关信息,而且还可以理解更深层次的含义。比如,企业分析消费者对产品的反馈信息,或者检测在线评论中的差评信息等。信息提取金融市场中的许多重要决策正日益脱离人类的监督和控制。算法交易正变得越来越流行,这是一种完全由技术控制的金融投资形式。但是,这些财务决策中的许多都受到新闻的影响。因此,自然语言处理的一个主要任务是获取这些明文公告,并以一种可被纳入算法交易决策的格式提取相关信息。例如,公司之间合并的消息可能会对交易决策产生重大影响,将合并细节(包括参与者、收购价格)纳入到交易算法中,这或将带来数百万美元的利润影响。
  • [其他] 自然语言处理--展望
    从历史角度来讲,模型越来越大。GPT-3已经这么大了,我们还能做得更大吗?当然如果未来计算设备的硬件的问题解决了,可以更大,但是近期内呢?更大的模型应该是什么样子?我设想的一种方式就是分布式,把模型分布到很多机器上计算,就像搜索引擎一样。像BERT这一类模型如何再把它训练的更大?现在最大的几个预训练语言模型都是GPT类的,BERT这一类模型很难做得更大,一些工程上的问题目前还是很难解决的。那么未来我们是否可能训练更大的BERT类的模型?小模型相反, BERT这类模型可以压缩的很小,GPT模型就很难压缩。BERT这个模型的压缩是不是还有潜力可以挖掘?另外知识融入是一个很有意思的问题。知识融入人们做了很多工作,实际上我是不太满意的。因为很多工作只是在解决知识类的问题效果比较好, 一般的 NLP的问题,知识融入的作用并不是那么大,所以希望知识融入能够解决一般的 NLP的问题。还有就是知识应该如何表示?现在大部分人认为知识都是三元组,我觉得这个是存在争议的,三元组实际上能够表达的知识其实非常有限。比如序列关系、空间关系、集合关系、数值关系等等关系知识都是很难学到的。关于搜索引擎,我希望以后预训练语言模型可以和搜索引擎结合起来,预训练语言模型就是个能够回答任何问题的搜索引擎。最后就是多模态预训练,希望将来它能带来无限的想象空间。
  • [其他] 自然语言处理--知识蒸馏
    TinyBERT知识蒸馏的基本流程包括两步,第一步叫做general distillation,即使用一个大的预训练语言模型,训练一个小的预训练语言模型。第二步叫做task-specific distillation,即使用一个大的预训练语言模型,去对一个小的预训练语言模型进行微调。在这里我们引入了一个新的技术,叫做数据增强,这个技术非常重要,如果没有这个技术的话,整个模型的性能会下降很多。TinyBERT知识蒸馏的损失函数中一个比较重要的就是,让中间层去学习隐藏状态和attention向量。TinyBERT知识蒸馏的选层策略就是,我们用4层或者6层的学生模型,去学习12层的教师模型。但是让哪一层去学习哪一层,这就是一个有关映射的策略的问题了。我们最早提出的是一个均匀映射模型,即用小模型的1,2,3,4层,去依次学习大模型的3,6,9,12层。后来我们就在想,是否可以让每一层都自动去搜索一个最合适的层次学习?我们就引入了进化学习算法。然后我们发现,对小模型来说,最好的学习层次是0,0,5,10。即小模型的第一层,第二层不要去学习,最好直接使用自动反向传播去调。用第3层去学大模型的第5层,第4层去学大模型的第10层,这样效果最好。6层的学生模型我们学到的是0,5,0,0,0,10。通过选层策略可以发现,选择好的层次的话就可以提高整体的效果。TinyBERT知识蒸馏数据增强是一个非常有效的技术。因为下游任务一般数据都比较少,那么我们在蒸馏小模型的时候,数据的数量经常是不足的。我们采取的办法,就是把用于下游任务的数据进行增强。数据增强实际上就是利用了BERT本身的特点,它的每个词都是可以替换成别的词的。我们采用一种替换策略,就是把每个词都去做一些替换,这样的话就会生成很多的跟原来的句子很相似的句子,比如10个词的句子换掉2个或者3个词,去生成增强的语料。最后,我们发现大概增强20倍的时候,即将原来的一个句子替换生成20个左右相似的句子,用来做下游任务的蒸馏的效果最好。这是我们的实验结果,我们看到在4层的模型,在GLUE上面,总的分数大概降低了2.5,从79.5降到77。6层的TinyBERT基本上是跟12层的没有什么变化。在参数量方面,BERT-base有109M,而4层的模型只有14.5M,只有原模型的13.3%。6层的模型只降到了原来的一半。在速度方面,我们也可以看到4层的模型提速了9.4倍,提速非常高。并且我们现在模型空间非常小,参数量是14.5M的模型大小只有50M左右,完全可以放入手机之中,并且它的推理速度比原来快将近快10倍。目前我们这个模型已经大量的运用在华为的设备与应用之中。我们还做了一个工作,在华为自研的BOLT深度学习加速库下,利用了底层的硬件再一次进行压缩和加速,使得TinyBERT最终的推理速度,可以达到1.3毫秒。我们的TinyBERT在中文的CLUE小模型排行榜上一直是第一名。然后我们参加了 NLPCC的小模型评测比赛,也是获得了第一名。
  • [其他] 自然语言处理技术难点
    内容的有效界定日常生活中句子间的词汇通常是不会孤立存在的,需要将话语中的所有词语进行相互关联才能够表达出相应的含义,一旦形成特定的句子,词语间就会形成相应的界定关系。如果缺少有效的界定,内容就会变得模棱两可,无法进行有效的理解。例如他背着母亲和姐姐悄悄的出去玩了。这句话中如果不对介词“和”作出界定,就很容易形成母亲和姐姐两个人不知道他出去玩,或者是母亲不知道他和姐姐出去玩。消歧和模糊性词语和句子在不同情况下的运用往往具备多个含义,很容易产生模糊的概念或者是不同的想法,例如高山流水这个词具备多重含义,既可以表示自然环境,也能表达两者间的关系,甚至是形容乐曲的美妙,所以自然语言处理需要根据前后的内容进行界定,从中消除歧义和模糊性,表达出真正的意义。有瑕疵的或不规范的输入例如语音处理时遇到外国口音或地方口音,或者在文本的处理中处理拼写,语法或者光学字符识别(OCR)的错误。语言行为与计划句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。
  • [其他] 自然语言处理概念和技术
    信息抽取(IE)信息抽取是将嵌入在文本中的非结构化信息提取并转换为结构化数据的过程,从自然语言构成的语料中提取出命名实体之间的关系,是一种基于命名实体识别更深层次的研究。信息抽取的主要过程有三步:首先对非结构化的数据进行自动化处理,其次是针对性的抽取文本信息,最后对抽取的信息进行结构化表示。信息抽取最基本的工作是命名实体识别,而核心在于对实体关系的抽取。自动文摘自动文摘是利用计算机按照某一规则自动地对文本信息进行提取、集合成简短摘要的一种信息压缩技术,旨在实现两个目标:首先使语言的简短,其次要保留重要信息。语音识别技术语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术,也就是让机器听懂人类的语音,其目标是将人类语音中的词汇内容转化为计算机可读的数据。要做到这些,首先必须将连续的讲话分解为词、音素等单位,还需要建立一套理解语义的规则。语音识别技术从流程上讲有前端降噪、语音切割分帧、特征提取、状态匹配几个部分。而其框架可分成声学模型、语言模型和解码三个部分。Transformer 模型Transformer 模型在2017 年,由Google 团队中首次提出。Transformer 是一种基于注意力机制来加速深度学习算法的模型,模型由一组编码器和一组解码器组成,编码器负责处理任意长度的输入并生成其表达,解码器负责把新表达转换为目的词。Transformer 模型利用注意力机制获取所有其他单词之间的关系,生成每个单词的新表示。Transformer 的优点是注意力机制能够在不考虑单词位置的情况下,直接捕捉句子中所有单词之间的关系。模型抛弃之前传统的encoder-decoder 模型必须结合RNN 或者CNN(Convolutional Neural Networks, CNN)的固有模式,使用全Attention 的结构代替了LSTM,减少计算量和提高并行效率的同时不损害最终的实验结果。但是此模型也存在缺陷。首先此模型计算量太大,其次还存在位置信息利用不明显的问题,无法捕获长距离的信息。 基于传统机器学习的自然语言处理技术自然语言处理可将处理任务进行分类,形成多个子任务,传统的机械学习方法可利用SVM(支持向量机模型)、Markov(马尔科夫模型)、CRF(条件随机场模型)等方法对自然语言中多个子任务进行处理,进一步提高处理结果的精度。但是,从实际应用效果上来看,仍存在着以下不足:(1)传统机器学习训练模型的性能过于依赖训练集的质量,需要人工标注训练集,降低了训练效率。(2)传统机器学习模型中的训练集在不同领域应用会出现差异较大的应用效果,削弱了训练的适用性,暴露出学习方法单一的弊端。若想让训练数据集适用于多个不同领域,则要耗费大量人力资源进行人工标注。(3)在处理更高阶、更抽象的自然语言时,机器学习无法人工标注出来这些自然语言特征,使得传统机器学习只能学习预先制定的规则,而不能学规则之外的复杂语言特征。 基于深度学习的自然语言处理技术深度学习是机器学习的一大分支,在自然语言处理中需应用深度学习模型,如卷积神经网络、循环神经网络等,通过对生成的词向量进行学习,以完成自然语言分类、理解的过程。与传统的机器学习相比,基于深度学习的自然语言处理技术具备以下优势:(1)深度学习能够以词或句子的向量化为前提,不断学习语言特征,掌握更高层次、更加抽象的语言特征,满足大量特征工程的自然语言处理要求。(2)深度学习无需专家人工定义训练集,可通过神经网络自动学习高层次特征。 
  • [其他] 自然语言处理的发展史
    最早的自然语言理解方面的研究工作是机器翻译  。1949年,美国人威弗首先提出了机器翻译设计方案  。其发展主要分为三个阶段。早期自然语言处理第一阶段(60~80年代):基于规则来建立词汇、句法语义分析、问答、聊天和机器翻译系统。好处是规则可以利用人类的内省知识,不依赖数据,可以快速起步;问题是覆盖面不足,像个玩具系统,规则管理和可扩展一直没有解决。统计自然语言处理第二阶段(90年代开始):基于统计的机器学习(ML)开始流行,很多NLP开始用基于统计的方法来做。主要思路是利用带标注的数据,基于人工定义的特征建立机器学习系统,并利用数据经过学习确定机器学习系统的参数。运行时利用这些学习得到的参数,对输入数据进行解码,得到输出。机器翻译、搜索引擎都是利用统计方法获得了成功。神经网络自然语言处理第三阶段(2008年之后):深度学习开始在语音和图像发挥威力。随之,NLP研究者开始把目光转向深度学习。先是把深度学习用于特征计算或者建立一个新的特征,然后在原有的统计学习框架下体验效果。比如,搜索引擎加入了深度学习的检索词和文档的相似度计算,以提升搜索的相关度。自2014年以来,人们尝试直接通过深度学习建模,进行端对端的训练。目前已在机器翻译、问答、阅读理解等领域取得了进展,出现了深度学习的热潮。
  • [其他] 自然语言处理--GPT-3的冲击
    GPT-3有一个非常吸引人的地方,就是它几乎无需做微调,并且它的演示效果也很好。GPT-3给我们带来了非常大的冲击。这个模型有着极高的训练成本,使得实际上绝大部分的企业和科研机构都无力承担。它的1750亿参数比BERT-base模型大了100倍,比 GPT-2大了10倍。它单次训练需要1万亿单词的训练数据,以及1200万美元的训练成本,能够承担这种训练成本的企业在世界范围内也非常少。虽然它的训练成本如此之高,但是它的效果非常令人吃惊。以前我们解决特定的问题,都需要专门去找语料,做专门的训练才能做。现在这个模型,只要是需要的功能都可以直接实现,基本不用训练。还有一些我们原来觉得很难做到的事情,GPT-3也能做到,例如算术计算、写代码等等。它还能够很细致的区分56和49这两个词,甚至在数量上都能区分出来,如此的细腻度令人吃惊,这也给它的商业价值也带来巨大的想象空间。
  • [其他] 自然语言处理--预训练语言模型的做大
    预训练语言模型的做大不仅仅是带来量的提高,更带来了模型使用性质的变化。最早在词向量模型时期,整个自然语言处理就被带入了神经网络时代。在神经网络时代,单一的CPU已经不能满足需求了。可以通过GPU,在不需要进行过多额外计算的情况下,做到在整个词表上进行词的选择,这在以前的SMT上是不可想象的。正是有了GPU,我们才可以通过词向量模型这类神经语言模型来完成这类工作。如果没有GPU支持,或者用以前的统计方法,是难以想象的。预训练语言模型通过使用更大的GPU,更多的数据,也带来了更大的变化,即微调的模式。微调为下游任务大致规定了几种固定的模式,包括句子分类、句子关系的分类、词语序列标注,以及QA任务中常见的句子片段的提取等。以前解决每个NLP问题,都要先设计模型。现在通过微调这一简单的模式,我们不再需要去为每个任务去设计特定的NLP模型,而可以将所有的NLP任务都纳入几个模式。--固定模式 > 微调   这样将任务简单化了~
  • [其他] 自然语言处理--预训练的思想
    不管是统计方法还是神经网络方法,都是一种基于数据的方法。如果数据不够的话,模型就无法有效建立。但是现实生活中,数据永远是一个很大的问题。在实际应用场景中,我们得到的很多数据都是无标注的,在这种情况下传统模型就无法解决实际问题。预训练的思想是,在利用标注数据之前,先利用无标注的数据(也就是纯文本数据),去训练一个模型,这个模型能够学到一些潜在的跟标注无关的知识。然后在具体的任务上,预训练模型就可以利用大量的无标注数据训练所得到的知识。--到底是什么知识呢?第一代自然语言处理预训练模型是词向量模型。词向量模型是把大量的无标注的文本送到一个比较简单的神经网络里面,经过训练,每个词都会被赋予一个静态的向量。词的静态向量在空间分布上有一个非常好的特点,即相似的词会聚在一起。词与词之间的关系也会以一种向量的形式得到体现,从而实现了符号空间到向量空间的映射。
  • [其他] 分享NLP的丰富应用
    自然语言处理领域的研究现状令人欢欣鼓舞,因为我们在该领域开发的模型和工具有解决许多实际问题的潜力。看看本届会议展示的各种各样的 NLP 应用,这一点就愈发明显了。在这个充斥着假新闻和虚假的神经网络新闻的时代,验证陈述的真实性变得越来越重要。Shengli Hu 的工作「Detecting Concealed Information in Text and Speech」(https://www.aclweb.org/anthology/P19-1039)构建了一个利用声学和语言学特征识别文本和语音中的隐藏信息的系统,其性能相较于人类提升了 15%。在健康领域,Shardlow 等人(https://www.aclweb.org/anthology/P19-1037)开发了一种通过特定领域的短语表使得医生编写的临床文书对于患者来说更具可读性的神经网络模型。相关的工作还有,Du 等人(https://arxiv.org/pdf/1906.02239.pdf)提出了根据临床对话提取出疾病症状的任务,并给出了一些对比基线模型,这种手段可以减少初级保健医生花费在与临床文献记录系统交互的时间。今年的 ACL 还专门设立了一个将 NLP 技术应用于生物学问题的研讨会(https://aclweb.org/aclwiki/BioNLP_Workshop)。例如,Fauqueur 等人(https://arxiv.org/pdf/1907.01417.pdf)提出了用于在无需训练数据或手动设计的规则的条件下,从生物医学文献中提取出新的科学事实的技术。Rajagopal 和 Vyas 等人(https://www.aclweb.org/anthology/W19-5009)的另一篇优秀论文,则通过在大规模数据集上训练一个 LSTM-CRF 模型,然后在「低资源」(数据量较少的)语料库上进行调优,从而使语义角色标注系统适用于生物学过程,他们的模型性能在标准数据集上相较于以往的工作提高了 21 个百分点。除此之外,NLP 领域还有一些很酷炫的工作,包括 Zhang 等人的论文「This Email Could Save Your Life: Introducing the Task of Email Subject Line Generation」(https://arxiv.org/abs/1906.03497),他们介绍了电子邮件主题行生成的问题(不妨想一想电子邮件智能回复功能,只不过这里的任务是生成电子邮件的标题),并且针对该问题展示了第一个充满前景的模型,对该模型进行了自动和人工评估。
总条数:283 到第 页
上滑加载中