bert之类的预训练模型在NLP各项任务上取得的效果是显著的,但是因为bert的模型参数多,推断速度慢等原因,导致bert在工业界上的应用很难普及,针对预训练模型做模型压缩是促进其在工业界应用的关键,今天介绍三篇小型化bert模型——DistillBert, ALBERT, TINYBERT. 一,DistillBert 论文:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter  GitHub…
这是一篇还在双盲审的论文,不过看了之后感觉作者真的是很有创新能力,ELECTRA可以看作是开辟了一条新的预训练的道路,模型不但提高了计算效率,加快模型的收敛速度,而且在参数很小也表现的非常好. 论文:ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS ELECTRA全称为Efficiently Learning an Encoder that Classifies Token Replaceme…
本篇带来XL-Net和它的基础结构Transformer-XL.在讲解XL-Net之前需要先了解Transformer-XL,Transformer-XL不属于预训练模型范畴,而是Transformer的扩展版,旨在解决Transformer的捕获长距离依赖信息的上限问题.接下来我们详细的介绍Transformer-XL和XL-Net. 一,Transformer-XL 论文:TRANSFORMER-XL: LANGUAGE MODELING WITH LONGER-TERM DEPENDENC…
随着bert在NLP各种任务上取得骄人的战绩,预训练模型在这不到一年的时间内得到了很大的发展,本系列的文章主要是简单回顾下在bert之后有哪些比较有名的预训练模型,这一期先介绍几个国内开源的预训练模型. 一,ERNIE(清华大学&华为诺亚) 论文:ERNIE: Enhanced Language Representation with Informative Entities GitHub:https://github.com/thunlp/ERNIE 清华大学和华为诺亚方舟实验室联合提出的引入…
本篇带来Facebook的提出的两个预训练模型——SpanBERT和RoBERTa. 一,SpanBERT 论文:SpanBERT: Improving Pre-training by Representing and Predicting Spans  GitHub:https://github.com/facebookresearch/SpanBERT 这篇论文中提出了一种新的mask的方法,以及一个新损失函数对象.并且讨论了bert中的NSP任务是否有用.接下来SpanBERT是如何预训练…
一.学习NLP背景介绍:      从2019年4月份开始跟着华为云ModelArts实战营同学们一起进行了6期关于图像深度学习的学习,初步了解了关于图像标注.图像分类.物体检测,图像都目标物体检测等,基本了解了卷积神经网络(CNN)原理及相关常用模型,如:VGG16.MaxNet等.之后从9月份开始在华为云AI专家的带领指引下,对AI深度学习的另外一个重要领域:自然语言处理(NLP)的学习,到目前为止学习了:命名实体识别.文本分类.文本相似度分析.问答系统.人脸检测.在这一个多月对NLP的处理…
预训练语言模型的前世今生 - 从Word Embedding到BERT 本篇文章共 24619 个词,一个字一个字手码的不容易,转载请标明出处:预训练语言模型的前世今生 - 从Word Embedding到BERT - 二十三岁的有德 目录 一.预训练 1.1 图像领域的预训练 1.2 预训练的思想 二.语言模型 2.1 统计语言模型 神经网络语言模型 三.词向量 3.1 独热(Onehot)编码 3.2 Word Embedding 四.Word2Vec 模型 五.自然语言处理的预训练模型 六…
在使用pytorch或tensorflow等神经网络框架进行nlp任务的处理时,可以通过对应的Embedding层做词向量的处理,更多的时候,使用预训练好的词向量会带来更优的性能.下面分别介绍使用gensim和torchtext两种加载预训练词向量的方法. 1.使用gensim加载预训练词向量    对于如下这样一段语料 test_sentence = """When forty winters shall besiege thy brow,And dig deep tren…
目录 简介 预训练任务简介 自回归语言模型 自编码语言模型 预训练模型的简介与对比 ELMo 细节 ELMo的下游使用 GPT/GPT2 GPT 细节 微调 GPT2 优缺点 BERT BERT的预训练 输入表征 Fine-tunninng 缺点 ELMo/GPT/BERT对比,其优缺点 BERT-wwm RoBERTa ERNIE(艾尼) 1.0 ERNIE 2.0 XLNet 提出背景 排列语言模型(Permutation Language Model,PLM) Two-Stream Sel…
NLP论文解读 |杨健 论文标题: ERNIE:Enhanced Language Representation with Informative Entities 收录会议:ACL 论文链接: https://arxiv.org/abs/1905.07129 项目地址: https://github.com/thunlp/ERNIE 1.问题 论文作者认为尽管预训练语言模型能够从大规模文本语料中学习到词法.语法等信息,然而这些预训练模型却忽略了知识图谱提供的知识. 这些知识能够为预训练模型提供…
原创作者 | 杨健 论文标题: K-BERT: Enabling Language Representation with Knowledge Graph 收录会议: AAAI 论文链接: https://ojs.aaai.org/index.php/AAAI/article/view/5681 项目地址: https://github.com/autoliuweijie/K-BERT 01 背景论述 笔者在前面的论文解读中提到过ERNIE使用基于自注意力机制来克服异构向量的融合,而KEPLER…
原创作者 | 杨健 论文标题: KEPLER: A unified model for knowledge embedding and pre-trained language representation 收录期刊: TACL 论文链接: https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00360/98089/ 项目地址: https://github.com/THU-KEG/KEPLE 01.问题 上一次我们介绍了ERNIE,其实…
本文是对xing_NLP中的用N-gram语言模型做完型填空这样一个NLP项目环境搭建的一个说明,本来想写在README.md中.第一次用github中的wiki,想想尝试一下也不错,然而格式非常的混乱,自己都满意,所以先在博客园记录一下,等github博客搭建成功了再说. 1. 操作系统: 作为programer,linux自然是首先选择,ubuntu,centos等等都可以.我用的是CentOS7.3,之前用Centos6.5各种报错,建议装最新版的linux系统,何为最新版?2016年以后…
转载 https://zhuanlan.zhihu.com/p/49271699 首发于深度学习前沿笔记 写文章   从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 张俊林 你所不知道的事 179 人赞了该文章 Bert最近很火,应该是最近最火爆的AI进展,网上的评价很高,那么Bert值得这么高的评价吗?我个人判断是值得.那为什么会有这么高的评价呢?是因为它有重大的理论或者模型创新吗?其实并没有,从模型创新角度看一般,创新不算大.但是架不住效果太好了,基本刷新了很…
目录 NLP中的预训练 语境表示 语境表示相关研究 存在的问题 BERT的解决方案 任务一:Masked LM 任务二:预测下一句 BERT 输入表示 模型结构--Transformer编码器 Transformer vs. LSTM 模型细节 在不同任务上进行微调 GLUE SQuAD 1.1 SQuAD 2.0 SWAG 分析 预训练的影响 方向与训练时间的影响 模型规模的影响 遮罩策略的影响 多语言BERT(机器翻译) 生成训练数据(机器阅读理解) 常见问题 结论 翻译自Jacob Dev…
从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 Bert最近很火,应该是最近最火爆的AI进展,网上的评价很高,那么Bert值得这么高的评价吗?我个人判断是值得.那为什么会有这么高的评价呢?是因为它有重大的理论或者模型创新吗?其实并没有,从模型创新角度看一般,创新不算大.但是架不住效果太好了,基本刷新了很多NLP的任务的最好性能,有些任务还被刷爆了,这个才是关键.另外一点是Bert具备广泛的通用性,就是说绝大部分NLP任务都可以采用类似的两阶段模式直接去提升效果,这…
内容是结合:https://zhuanlan.zhihu.com/p/49271699 可以直接看原文 预训练一般要从图像处理领域说起:可以先用某个训练集合比如训练集合A或者训练集合B对这个网络进行预先训练,在A任务上或者B任务上学会网络参数,然后存起来以备后用.假设我们面临第三个任务C,网络结构采取相同的网络结构,在比较浅的几层CNN结构,网络参数初始化的时候可以加载A任务或者B任务学习好的参数,其它CNN高层的参数仍然需要随机初始化.之后我们用C任务的训练数据来训练网络,此时有两种做法,一种…
预训练 先在某个任务(训练集A或者B)进行预先训练,即先在这个任务(训练集A或者B)学习网络参数,然后存起来以备后用.当我们在面临第三个任务时,网络可以采取相同的结构,在较浅的几层,网络参数可以直接加载训练集A或者B训练好的参数,其他高层仍然随机初始化.底层参数有两种方式:frozen,即预训练的参数固定不变,fine-tuning,即根据现在的任务调整预训练的参数. 优势: 1.当前任务数据量少,难以训练更多的网络参数,可以加载预训练的模型,然后根据当前的任务对参数进行fine-tuning,…
最近看了吴恩达老师的深度学习课程,又看了python深度学习这本书,对深度学习有了大概的了解,但是在实战的时候, 还是会有一些细枝末节没有完全弄懂,这篇文章就用来总结一下用keras实现深度学习算法的时候一些我自己很容易搞错的点. 一.与序列文本有关 1.仅对序列文本进行one-hot编码 比如:使用路透社数据集(包含许多短新闻及其对应的主题,包括46个不同的主题,每个主题有至少10个样本) from keras.datasets import reuters (train_data,train…
目录 一.例子:句子分类 二.模型架构 模型的输入 模型的输出 三.与卷积网络并行 四.嵌入表示的新时代 回顾一下词嵌入 ELMo: 语境的重要性 五.ULM-FiT:搞懂NLP中的迁移学习 六.Transformer:超越LSTM 七.OpenAI Transformer:为语言建模预训练一个Transformer解码器 八.在下游任务中使用迁移学习 九.BERT:从解码器到编码器 MLM语言模型 两个句子的任务 解决特定任务的模型 用于特征提取的BERT 十.把BERT牵出来遛一遛 本文翻译…
BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 谷歌AI语言组论文<BERT:语言理解的深度双向变换器预训练>,介绍一种新的语言表征模型BERT——来自变换器的双向编码器表征量.异于最新语言表征模型,BERT基于所有层的左.右语境来预训练深度双向表征量.BERT是首个大批句子层面和词块层面任务中取得当前最优性能的表征模型,性能超越许多使用任务特定架构的系统,刷新11项NLP任务当前最…
BERT:用于语义理解的深度双向预训练转换器(Transformer)   鉴于最近BERT在人工智能领域特别火,但相关中文资料却很少,因此将BERT论文理论部分(1-3节)翻译成中文以方便大家后续研究. ·  摘要   本文主要介绍一个名为BERT的模型.与现有语言模型不同的是,BERT旨在通过调节所有层中的上下文来进行深度双向的预训练.因此,预训练的BERT表示可以通过另外的输出层进行调整,以创建用于广泛任务的状态模型,例如问题转换和语言参考,而无需实质的任务特定体系结构修改.   BERT…
Pytorch预训练模型以及修改 pytorch中自带几种常用的深度学习网络预训练模型,torchvision.models包中包含alexnet.densenet.inception.resnet.squeezenet.vgg等常用网络结构,并且提供了预训练模型,可通过调用来读取网络结构和预训练模型(模型参数).往往为了加快学习进度,训练的初期直接加载pretrain模型中预先训练好的参数.加载model如下所示: import torchvision.models as models 1.加…
keras提供了VGG19在ImageNet上的预训练权重模型文件,其他可用的模型还有VGG16.Xception.ResNet50.InceptionV3 4个. VGG19在keras中的定义: def VGG19(include_top=True, weights='imagenet', input_tensor=None, input_shape=None, pooling=None, classes=1000) include_top: 是否包含最后的3个全连接层 weights: 定…
https://blog.csdn.net/chuchus/article/details/78386059 词汇是语料库的基本元素, 所以, 使用embedding layer来学习词嵌入, 将一个词映射成为固定维度的稠密向量. 有了这一步, 才能构造矩阵, 实现神经网络的前向传播. 如何使用? 从头训练 就像word2vec一样, 这一层是可学习的, 用随机数initialize , 通过BP去调整. pre-trained + fine tuning 用其他网络(如 word2vec) 训…
BERT(Bidirectional Encoder Representations from Transformers)是谷歌AI研究人员最近发表的一篇论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.它通过在各种各样的NLP任务中呈现最先进的结果,包括问答(SQuAD v1.1).自然语言推理(MNLI)等,在机器学习社区中引起了轰动. BERT的关键技术创新是将Transf…
先上开源地址: https://github.com/huggingface/pytorch-transformers#quick-tour 官网: https://huggingface.co/pytorch-transformers/index.html PyTorch-Transformers(正式名称为 pytorch-pretrained-bert)是一个用于自然语言处理(NLP)的最先进的预训练模型库. 该库目前包含下列模型的 PyTorch 实现.预训练模型权重.使用脚本和下列模型…
在介绍这一节之前,需要你对slim模型库有一些基本了解,具体可以参考第二十二节,TensorFlow中的图片分类模型库slim的使用.数据集处理,这一节我们会详细介绍slim模型库下面的一些函数的使用. 一 简介 slim被放在tensorflow.contrib这个库下面,导入的方法如下: import tensorflow.contrib.slim as slim 这样我们就可以使用slim了,既然说到了,先来了解tensorflow.contrib这个库,tensorflow官方对它的描述…
现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过直接调用 TensorFlow 的 C/C++ 接口来导入 TensorFlow 预训练好的模型. 1.环境配置 点此查看 C/C++ 接口的编译 2. 导入预定义的图和训练好的参数值 // set up your input paths const string pathToGraph = "/ho…
现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过 C/C++ 间接调用 Python 的方式来实现在 C/C++ 程序中调用 TensorFlow 预训练好的模型. 1. 环境配置 为了能在 C/C++ 中调用 Python,我们需要配置一下头文件和库的路径,本文以 Code::Blocks 为例介绍. 在 Build -> Project opt…