BERT

从自监督学习主流方法、最新工作进展,看未来前景研究方向

时间秒杀一切 提交于 2020-10-10 00:28:37
来源: 机器学习算法与自然语言处理 本文约 6000字 ,建议阅读 10分钟。 找到合适的辅助任务,对于自监督学习是最需要解决的问题。 本文作者来自东北大学,他通过整理自监督学习的一系列工作,把主流方法分成三大类,方便大家更全面的了解自监督学习的定义、方法、用途。 与此同时,文中也穿插着几大主流方法的最新工作进展,现在正在探索自监督学习未来前景研究方向的同学,也不妨借鉴一二,说不定能找到灵感哦~ 学习的范式 我们首先来回顾下机器学习中两种基本的学习范式,如图所示,一种是监督学习,一种是无监督学习。 监督学习与无监督学习[1] 监督学习利用大量的标注数据来训练模型,模型的预测和数据的真实标签产生损失后进行反向传播,通过不断的学习,最终可以获得识别新样本的能力。而无监督学习不依赖任何标签值,通过对数据内在特征的挖掘,找到样本间的关系,比如聚类相关的任务。有监督和无监督最主要的区别在于模型在训练时是否需要人工标注的标签信息。 无监督学习中被广泛采用的方式是自动编码器(autoencoder): 深度自编码器[6] 编码器将输入的样本映射到隐层向量,解码器将这个隐层向量映射回样本空间。我们期待网络的输入和输出可以保持一致(理想情况,无损重构),同时隐层向量的维度大大小于输入样本的维度,以此达到了降维的目的,利用学习到的隐层向量再进行聚类等任务时将更加的简单高效。 对于如何学习隐层向量的研究

CoSDA-ML:一种只需利用字典资源提高跨语言zero-shot任务性能的方法

拈花ヽ惹草 提交于 2020-10-08 09:05:05
背景 跨语言学习(Cross-Lingual)是自然语言处理领域研究的热点,其可以借助从资源丰富(high resource)语言中学习到的知识,帮助稀缺资源(low resource)语言更好的完成相关任务,为不同语言之间的知识迁移提供了桥梁与枢纽。刚刚结束的EMNLP2020也着重强调不允许以研究非英语语言作为拒稿理由(“Invalid bases for rejecting a Paper: The Paper’s work is on a language other than English. We care about NLP for any language),表明了资源稀缺语言研究的重要性。随着预训练模型(Pre-trained Language Model, PLMs)席卷整个自然语言处理领域,跨语言学习也借助PLMs的东风,得到了快速的发展,诸如mBERT,XLM等跨语言预训练模型不断涌现,极大的提升了低资源语言的任务性能。然而,上述mBERT在取得卓越进展的同时,也存在一定缺陷:尽管mBERT模型被称之为多语言BERT,但是其在训练时,每次输入依旧为单语数据,即对于单个句子来说仍是单语言语境,如图1所示。除了借助共同的词语(实际为subword)来对齐多种语言表示之外,没有其他显式的多语言对齐信号,这一缺陷严重阻碍了mBERT模型的性能。 图1

Deformer: 双塔模型与匹配模型的结合

心已入冬 提交于 2020-10-07 05:03:38
作者:曹庆庆(Stony Brook University 在读 PhD,关注Efficient NLP,QA方向,详见awk.ai) 背景 BERT、XLNet、RoBERTa等基于Transformer[^transfomer]的预训练模型推出后,自然语言理解任务都获得了大幅提升。问答任务(Question Answering,QA)[^qa-note]也同样取得了很大的进步。 用BERT类模型来做问答或阅读理解任务,通常需要将问题和问题相关文档拼接一起作为输入文本,然后用自注意力机制对输入文本进行多层交互编码,之后用线性分类器判别文档中可能的答案序列。如下图: 虽然这种片段拼接的输入方式可以让自注意力机制对全部的token进行交互,得到的文档表示是问题相关的(反之亦然),但相关文档往往很长,token数量一般可达问题文本的10~20倍[^length],这样就造成了大量的计算。 在实际场景下,考虑到设备的运算速度和内存大小,往往会对模型进行压缩,比如通过蒸馏(distillation)小模型、剪枝(pruning)、量化(quantization)和低轶近似/权重共享等方法。 但模型压缩还是会带来一定的精度损失。因此我们思考, 是不是可以参考双塔模型的结构,提前进行一些计算,从而提升模型的推理速度? 如果这种思路可行,会有几个很大的优势: 它不需要大幅修改原来的模型架构

bert前世今生之一: bert进行embedding

做~自己de王妃 提交于 2020-10-06 18:57:07
bert可以干啥 我们理解bert为一个transformer集合,输入是一句话,输出是经过transform的结果。我们了解,深度学习的本质就是抽取核心特征, 这也是bert的核心功能,而且以transformer为主要模块,具有更优秀的attention功能,捕获的特征更为精确和全面。 一句话概括, bert就是一个抽取器。输入一句话(词序列),输出抽取后的embedding序列。 输入输出 输入会加入特殊的[CLS]代表整句话的含义,可以用于分类。 input的词help,prince,mayuko等,一共512,这是截取的最大长度。 然后经过12层的encoder 最后输出的是每个token对应的embedding序列,每个token对应一个768维的向量。这个应该很好理解。 作用 有了词序列对应的embedding向量,就可以对词分类、句子向量构建,句子分类、句子相似度比较等。 code #%% md # bert # % % ! pip install transformers # % % import torch from transformers import BertModel , BertTokenizer # % % tokenizer = BertTokenizer . from_pretrained ( 'bert-base-uncased' ) # %

最新进展概述:澄清式提问辅助理解信息检索中的用户意图

≡放荡痞女 提交于 2020-10-06 10:07:48
©PaperWeekly 原创 · 作者|金金 单位|阿里巴巴研究实习生 研究方向|推荐系统 用户使用搜索引擎的过程中,通常很难用单一的查询表达复杂的信息需求。在真实应用的过程中,用户需要根据当前搜索引擎的展示结果反复修改查询词。这一过程极大地增加了用户搜索的负担,影响了用户的搜索体验。 近期,澄清式提问(Asking Clarifying Questions)的提出为该问题的解决提供了新的思路。该方法根据用户给出的查询提出相关问题,从而更好地理解用户意图,展示更符合用户需求的排序结果,提高用户对搜索过程的满意度。本文将概述该方向的一些最新研究进展。 从任务提出到简单实现 论文标题: Asking Clarifying Questions in Open-Domain Information-Seeking Conversations 论文来源: SIGIR 2019 论文链接: https://arxiv.org/abs/1907.06554 本文发表于 SIGIR 2019,该论文首先提出了“通过澄清式提问理解信息检索中的用户意图”的任务;然后针对已有的查询,根据搜索引擎的查询词建议或已知的不同用户意图,人工构造澄清式问题和答案;在此基础上提出了根据查询和历史问答记录检索并选择当前问题的深度学习模型 BERT-LeaQuR 和 NeuQS。 1.1 任务流程

动手做个DialoGPT:生成式多轮对话模型

旧巷老猫 提交于 2020-10-06 02:36:37
  前段时间刷Arixv的时候,发现清华大学开源了一个大规模的中文闲聊语料库LCCC,从开源的文件上来看,这可能是目前开源的数量最大、质量最好的闲聊语料库了,而且还包含了部分多轮对话聊天,总的来说可玩性还是蛮强的。笔者也被它吸引到了,尝试着用它来训练了一个闲聊对话模型,结果看上去还是不错的,在此分享一下自己的经验。   论文名称:《A Large-Scale Chinese Short-Text Conversation Dataset》      论文链接:https://arxiv.org/abs/2008.03946   项目地址:https://github.com/thu-coai/CDial-GPT    1    语料简介   这里简单介绍一下LCCC这个数据集(Large-scale Cleaned Chinese Conversation),具体细节大家可以去Github上看,下载链接也在上面。LCCC分base和large两个版本,base主要是来源于微博对话,large则是在base的基础上融合了其他开源对话语料,按照作者的说法,LCCC经过了严格的清洗过程,所以整体质量看上去还是很不错的。      为了简化任务,所有样本都被处理成双人对话。下面是一些样本示例:    A: 等过年咱们回去买点兔头好好吃顿火锅 B: 太原就没看见有好吃的兔头 A:

一文看懂 Attention(本质原理+3大优点+5大类型)

ⅰ亾dé卋堺 提交于 2020-10-04 03:14:39
转自: https://zhuanlan.zhihu.com/p/91839581 Attention 正在被越来越广泛的得到应用。尤其是 BERT 火爆了之后。 Attention 到底有什么特别之处?他的原理和本质是什么?Attention都有哪些类型?本文将详细讲解Attention的方方面面。 Attention 的本质是什么 Attention(注意力)机制如果浅层的理解,跟他的名字非常匹配。他的核心逻辑就是「 从关注全部到关注重点 」。 Attention 机制很像人类看图片的逻辑,当我们看一张图片的时候,我们并没有看清图片的全部内容,而是将注意力集中在了图片的焦点上。大家看一下下面这张图: 我们一定会看清「锦江饭店」4个字,如下图: 但是我相信没人会意识到「锦江饭店」上面还有一串「电话号码」,也不会意识到「喜运来大酒家」,如下图: 所以,当我们看一张图片的时候,其实是这样的: 上面所说的,我们的视觉系统就是一种 Attention机制, 将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。 AI 领域的 Attention 机制 Attention 机制最早是在计算机视觉里应用的,随后在 NLP 领域也开始应用了,真正发扬光大是在 NLP 领域,因为 2018 年 BERT 和 GPT 的效果出奇的好,进而走红。而 Transformer 和

最小熵原理系列:词向量的维度应该怎么选择?

旧街凉风 提交于 2020-10-03 11:44:40
©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP、神经网络 随着 NLP 的发展,像 Word2Vec、Glove 这样的词向量模型,正逐渐地被基于 Transformer 的 BERT 等模型代替,不过经典始终是经典,词向量模型依然在不少场景发光发热,并且仍有不少值得我们去研究的地方。本文我们来关心一个词向量模型可能有的疑惑: 词向量的维度大概多少才够? 先说结论,笔者给出的估算结果是: 更简约的话可以直接记 ,其中 N 是词表大小,n 就是词向量维度, 是自然对数。当 n 超过这个阈值时,就说明模型有足够的容量容纳这 N 个词语(当然 n 越大过拟合风险也越大)。 这样一来,当 N=100000 时,得到的 n 大约是 96,所以对于 10 万个词的词向量模型来说,维度选择 96 就足够了;如果要容纳 500 万个词,那么 n 大概就是 128。 背景 之所以想起这个问题,是因为昨天在 Arxiv 上刷到了论文 Word2vec Skip-gram Dimensionality Selection via Sequential Normalized Maximum Likelihood [1] ,遗憾的是,从这篇论文中笔者并没有找到想要的答案。顺带搜索了一下,发现也有类似文献研究同样的问题,比如 On the Dimensionality of

K近邻算法哪家强?KDTree、Annoy、HNSW原理和使用方法介绍

微笑、不失礼 提交于 2020-10-03 03:46:33
1、什么是K近邻算法 K近邻算法(KNN)是一种常用的分类和回归方法,它的基本思想是从训练集中寻找和输入样本最相似的k个样本,如果这k个样本中的大多数属于某一个类别,则输入的样本也属于这个类别。 关于KNN算法,一个核心问题是: 如何快速从数据集中找到和目标样本最接近的K个样本? 本文将从这个角度切入,介绍常用的K近邻算法的实现方法。具体将从原理、使用方法、时间开销和准确率对比等方面进行分析和实验。 2、距离度量 在介绍具体算法之前,我们先简单回顾一下KNN算法的三要素: 距离度量、k值的选择和分类决策规则 。 其中机器学习领域常用的距离度量方法,有欧式距离、余弦距离、曼哈顿距离、dot内积等 主流的近邻算法都支持上述不同的距离度量。其中n维特征空间的a、b向量的 欧式距离 体现数值上的绝对差异,而余弦距离基于余弦相似度(两个向量间夹角的余弦值),体现方向上的相对差异。 如果对向量做归一化处理,二者的结果基本是等价的。 实际应用中,需要根据业务目标来选择合适的度量方法。 3、K近邻算法的实现方法 K近邻的实现方式多达数十种,笔者从中挑选了几种常用、经典的方法作为分析案例。 首先最直观的想法(暴力法),是线性扫描法。将待预测样本和候选样本逐一比对,最终挑选出距离最接近的k个样本即可,时间复杂度O(n)。对于样本数量较少的情况,这种方法简单稳定,已经能有不错的效果。但是数据规模较大时

乘风破浪的PTM:两年来预训练模型的技术进展

那年仲夏 提交于 2020-10-02 13:41:23
作者 | 张俊林 来源 | 深度学习前沿笔记专栏 Bert模型自18年10月推出,到目前为止快两年了。它卜一问世即引起轰动,之后,各种改进版本的预训练模型(Pre-Training Model, PTM)与应用如过江之鲫,层出不穷。Bert及它的继任者们,确实也不负众望,在NLP各个领域攻城略地,所向披靡,多种NLP数据集竞赛榜单,连续多年被各种新出现的预训练模型霸榜,有些榜单,个别模型已经把指标刷到超过人类。 那么,在近两年的时间里,诸多改进模型中,有哪些令人印象深刻的新模型?在那些表现突出的新模型中,是哪些因素导致它们的良好表现?预训练模型技术本身有重大的改动或创新么?或者,关于预训练模型,目前有哪些相对明确的结论?根据目前的技术发展水准,如何根据现有结论,来打造最强的预训练模型?本文通过梳理现有技术文献,试图来回答上述一系列问题。本文的数据都客观有出处,但是对数据的解读,带有严重的个人色彩,偏颇难免,还请谨慎参考。另外,如要透彻理解本文,需要有关于预训练模型的先导基础知识,对这个不太了解的同学,建议先阅读下文打个基础: 张俊林:从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 我们知道,在预训练模型框架下,解决NLP问题,会划分为序列进行的两阶段:第一阶段是预训练阶段,然后是Fine-tuning阶段,本文集中在预训练阶段。