NLP
文章平均质量分 66
_illusion_
知乎主页:https://www.zhihu.com/people/illusions-29/posts
展开
-
为何skip-gram相比于CBOW,对低频词更敏感?
CBOW是用window大小的滑动窗口内的词来表征中心词,skip-gram是用中心词来表征window大小的滑动窗口内的所有词; 训练效率而言,CBOW远胜skip-gram,随着语料或window_size的增加越发明显,因为CBOW对每个中心词只需做一次表征(embedding)学习,但skip-gram需要(window_size - 1)次; 性能上,对于常见词/高频词,CBOW占优;对于低频词,skip-gram更敏感。 非常浅显地解释: 对于这样一..原创 2021-09-07 16:23:24 · 1648 阅读 · 0 评论 -
对各大预训练语言模型的简单总结和评述(BERT/RoBERTa/ALBERT/ELECTRA/ERNIE/structBERT/SpanBERT...)
前言本文系对BERT及其各种优化的简单总结。如RoBERTa、ALBERT、ERNIE、SBERT、MacBERT等。随积累,即时更新。总结BERT初始预训练任务简介:MLM,即完形填空。我们对一个sequence/句子中15%的token进行随机地mask,然后对这些被mask的token进行预测;NSP。判断两句话是否有上下文的关系。两句话可能来自不同的文章。在组成预训练数据时,有10%的可能随机将最大长度512的样本限制为小于512长度(BERT是128),一方面降低预训练时长,另一原创 2021-02-19 22:06:08 · 3638 阅读 · 0 评论 -
DPR-Dense Passage Retrieval for Open-Domain Question Answering 论文阅读
开放域的问答依赖于准确地文档召回。传统做法,通常依赖于TF-IDF或BM25这类方法。在本篇论文中,作者提出一种仅使用深度语义向量的方法进行召回,而这个文档的语义向量,即来自于简单的对偶encoder框架(说的这么玄乎,其实就是俩一样的BERT-encoder,分别处理query和doc),本文提出的模型框架,面对top20文档召回的准确率问题,相较于强大的Lucene-BM25,有至多9%~19%的效果提升,这帮助我们得到了一个全新的、端到端的sota QA系统。论文链接:https://arxiv.原创 2021-01-31 12:25:53 · 1519 阅读 · 0 评论 -
对抗训练的理解,以及FGM、PGD和FreeLB的详细介绍
对抗训练基本思想——Min-Max公式如图所示。中括号里的含义为,我们要找到一组在样本空间内、使Loss最大的的对抗样本(该对抗样本由原样本x和经过某种手段得到的扰动项r_adv共同组合得到)。这样一组样本组成的对抗样本集,它们所体现出的数据分布,就是该中括号中所体现的。外层min()函数指的则是,我们面对这种数据分布的样本集,要通过对模型参数的更新,使模型在该对抗样本集上的期望loss最小我们知道如何在已有数据上进行模型更新,但如何找到最佳扰动r_adv呢?很简单——梯度上升。所以说,对抗原创 2020-12-08 18:07:13 · 23267 阅读 · 14 评论 -
置顶-常用资源直接跳转
Pytorch:pytorch保存、载入模型,与state_dict()有关的操作NLP杂七杂八正则表达式语句速查 正则表达式小括号的使用原创 2020-12-02 10:43:35 · 283 阅读 · 0 评论 -
GLUE任务内容及数据集简介
通常来说,NLP可以分为自然语言理解(NLU)和自然语言生成(NLG)。在NLU方面,我们拿时下最流行的GLUE(General Language Understanding Evaluation)排行榜举例,其上集合了九项NLU的任务,分别是CoLA(The Corpus of Linguistic Acceptability):纽约大学发布的有关语法的数据集,该任务主要是对一个给定句子,判定其是否语法正确,因此CoLA属于单个句子的文本二分类任务; SST(The Stanford Sentime转载 2020-07-13 11:19:06 · 6044 阅读 · 0 评论 -
RMSProp/Momentum/Adam/AdamW,多种优化器详解及伪代码实现
多种梯度更新方法——都是对Gradient Descent的优化传统GDx = x - lr * grad_xAdaGrad——不同方向的梯度应该是可以不一样的为了解决不同方向上梯度涨落速度不一致的情况,所以相当于给每个方向不同的learning_rate。具体每个方向的lr大小要怎么拟定?——之前该方向上grad大的,就给小lr——即梯度变化幅度缓慢,那么就拉开步子大胆走。如上图的公式,历史grad总量和lr大小成反比,即该方向的总grad越小,则lr就越大。但该方法解决不了,在该方向上原创 2020-07-09 16:12:12 · 5339 阅读 · 0 评论 -
BERT中是怎么做到只计算[MASK]token的CrossEntropyLoss的?及torch.nn.CrossEntropyLoss()参数
nn.CrossEntropyLoss()的参数torch.nn.CrossEntropyLoss(weight=None, size_average=None,ignore_index=-100, reduce=None, reduction=‘mean’)weight:不必多说,这就是各class的权重。所以它的值必须满足两点:type = torch.Tensorweight.shape = tensor(1, class_num)size_average 、 reduce :原创 2020-07-02 16:55:13 · 4448 阅读 · 0 评论 -
BERT为何被称为“自编码模型”?为何将BERT的训练过程称为“降噪”?
最近,阅读并调试了albert的预训练代码,对于BERT为何被称为“自编码”模型有了更深的理解,在这里稍作介绍:**注:我文中所提到的albert/BERT为预训练而准备的对数据做[MASK]的code在这里:prepare_lm_data_ngram.py正文开始…该函数涉及了多种噪声引入方式,非常形象地阐释了为什么BERT被称为"自编码"模型,以及为什么把BERT对预训练输入的处理称为"加噪声",以及为何会将"自编码"过程(即预训练的训练过程)称为"降噪"。“噪声"是BERT故意在[MASK]阶段原创 2020-06-30 10:10:26 · 1412 阅读 · 0 评论 -
浅谈sigmoid函数和softmax函数
问题提出最近在找文本分类问题的trick,偶尔看到夕小瑶大佬的一个回答:在文本分类任务中,有哪些论文中很少提及却对性能有重要影响的tricks? - 夕小瑶的回答 - 知乎https://www.zhihu.com/question/265357659/answer/578944550里面有句话引起了我的注意:关于二分类二分类问题一定要用sigmoid作为输出层的激活函数?当然不是,尝试一下包含俩类别的softmax吧。可能多一条分支就多一点信息叭,虽然后者在数学形式上更丑一点,但是实践中原创 2020-06-02 17:53:42 · 5374 阅读 · 1 评论 -
Sentence-BERT 论文阅读
BERT、RoBERTa已经在文本语义相似度任务(semantic textual similarity ,STS)上达到了sota。然而,BERT要求句子对拼接到一起再传入模型中,这会导致巨大的计算开销——例如,在10000条句子中寻找最相似的两条,则需要约5*10^7次计算,如果使用BERT,则需要约65小时,这导致许多涉及篇章向量的任务,如相似度计算、聚类等无从开展。基于此,我们提出了sentence-BERT(SBERT),它使用基于预训练过的BERT的孪生网络,获得在语义上有足够意义的篇章向.原创 2020-05-25 16:02:21 · 8956 阅读 · 1 评论 -
Cross-Domain NER using Cross-Domain Language Modeling论文阅读
NER模型的训练依赖于有标记的数据,有标记数据的质量会决定NER模型最终的表现。但很多领域的标记数据较少,成为了NER任务的瓶颈。现存的很多方法,都会充分利用源领域和目标领域的标记数据进行监督学习。然而这种方法的缺点就在于,目标领域必须要有标记数据才可以训练。而这篇文章使用跨领域的语言模型(cross-domain LM)作为跨域训练NER的桥连,并设计了一种新颖的参数生成网络。结果表明,该方法...原创 2020-04-13 10:14:37 · 1545 阅读 · 0 评论 -
ELECTRA论文阅读笔记
ELECTRA模型是对BERT的一次改进,该改进主要体现在对样本的使用效率上。具体实现方式,是引入了比较像GAN的一种架构——首先,使用一个较小的generator(生成器)将随机mask掉的token再预测出来,然后再将重新修复后的句子交给discriminator(判别器)进行判断,判断input中每个单词是否有被generator替换过。相比之下,BERT是先对一部分token进行随机ma...原创 2020-04-13 10:06:18 · 2296 阅读 · 0 评论 -
关于BERT和Transformer的易错点
1. BERT中使用Transformer作特征提取器,其实只使用了Transformer的Encoder。那么Decoder去哪了呢?显然是被BERT改造了。Transformer其实是个完整地seq-to-seq模型,可以解决诸如机器翻译、QA这种输入输出为不定长句子的任务,在Transformer中,它使用Encoder做特征提取器,然后用Decoder做解析,输出我们想要的结果。而...原创 2020-01-15 18:41:37 · 4235 阅读 · 3 评论 -
Transformer、Attention与seq2seq model
一、什么是seq2seq,以及它和Attention机制有什么关系seq2seq是一种NLP常见的框架——这种框架不要求输入和输出序列是维度是一样的。许多NLP task的输入输出维度不统一,比如机器翻译、图像的图注生成、摘要生成、自动问答等。seq2seq框架大多包含encoder和decoder。 Attention机制只是一种思想——即,人在理解一件事物并作出判断的时候,并不是概览了整...原创 2019-11-22 14:17:42 · 1667 阅读 · 1 评论 -
命名体识别(NER)实战---NLP技术
命名体识别(Name Entity Recognition)是自然语言处理(Nature Language Processing)领域中比较重要的一个任务,几乎百分之50的和文本处理有关的项目中都会涉及到命名体识别。笔者认为其中最关键的原因是:从广义的角度来讲,如果把一句话比作一串珍珠的话,命名实体就是这串珍珠项链中的珍珠,句子的其他部分是把珍珠串起来的线。举个例子: "小明在1992年从哈佛...转载 2019-04-01 23:24:49 · 5161 阅读 · 0 评论