自然语言处理
文章平均质量分 83
自然语言处理的原创知识分享
海晨威
Growth is a song
展开
-
海晨威文章内容总结
写文章有段时间了,但内容比较杂,想到啥写啥。这次文章就做一个归类总结,方便小伙伴系统的看这些内容。原创 2022-12-30 22:26:16 · 401 阅读 · 1 评论 -
超细节的 BatchNorm/BN/LayerNorm/LN 知识点
1、BN在训练和测试时的差异2、BN中的移动平均 Moving Average是怎么做的3、移动平均中 Momentum 参数的影响4、Norm中的标准化、平移和缩放的作用5、不同Norm方法中都有哪些参数要保存6、BN和LN 有哪些差异7、为什么BERT使用LN,而不使用BN8、如何去理解在哪一个维度做Norm原创 2022-05-29 11:49:03 · 804 阅读 · 1 评论 -
BERT如何解决一词多义问题
对于同一个词,不同的上下文会让这个词融合不同的语义信息,使得同一个词在不同的上下文中有不同的embedding,去表征不同的语义,从而区分一词多义。原创 2022-02-27 17:44:24 · 2570 阅读 · 0 评论 -
对话文本摘要概述
文本摘要是NLP领域一个重要的任务,它以凝练的语句去描述原始文本中的主要信息。文本的形式是多种多样的,其中,对话文本是人们在不同交流场景下产生的交互式文本。提取对话中的主要信息,在实际应用中可以减少人理解的时间,也可以更好地辅助后续可能的任务。本篇文章会探究对话文本的特点和对话摘要的实现,基于三个不同的对话场景(会议、医患沟通、客服对话),分别介绍一篇有代表性的近期顶会paper,并在最后总结不同对话文本特点对应的解决方案。引言当前,对文本摘要的研究主要集中在新闻领域,而从广泛的对话文本(包括会议、访原创 2021-11-30 23:15:57 · 2450 阅读 · 0 评论 -
NLP神经网络模型训练时,不同batch可以padding到不同长度嘛?
同一个batch内要padding到一样长度,不同batch之间可以不一样这一点,对于 (绝大多数) NLP模型都是这样的同一个batch内要padding到一样长度神经网络,内部大都是矩阵的运算,batch训练,需要矩阵输入因此一个batch要padding到一样的长度,才能形成一个矩阵,像[[1,2], [3,4,5]]它并不是一个矩阵,矩阵需要每个维度的长度一样才行不同batch之间可以不一样一般batch个句子经过embedding层之后,它的维度会变成 [batch_size,原创 2021-10-16 14:54:01 · 1662 阅读 · 0 评论 -
超细节的对比学习和SimCSE知识点
2020年的Moco和SimCLR等,掀起了对比学习在CV领域的热潮,2021年的SimCSE,则让NLP也乘上了对比学习的东风。下面就尝试用QA的形式挖掘其中一些细节知识点,去更好的理解对比学习和SimCSE。1、如何去理解对比学习,它和度量学习的差别是什么?2、对比学习中一般选择一个batch中的所有其他样本作为负例,那如果负例中有很相似的样本怎么办?3、infoNCE loss 如何去理解,和CE loss有什么区别?4、对比学习的infoNCE loss 中的温度常数的作用是什么?5、S原创 2021-08-24 22:56:41 · 2133 阅读 · 6 评论 -
世界上本没什么Embedding,有的只是One Hot
为什么 Bert 的三个 Embedding 可以进行相加?这是一个非常有意思的问题,苏剑林老师也给出了回答:Embedding的数学本质,就是以one hot为输入的单层全连接。也就是说,世界上本没什么Embedding,有的只是one hot。这里再从三个角度去理解一下第一,Embedding 就是以one hot为输入的单层全连接Embedding 矩阵就是全连接中间的参数one-hot中 1 所在位置连接的参数就是对应的 Embedding 向量第二,回到问题本身,为什么 Ber原创 2021-05-30 20:00:53 · 761 阅读 · 0 评论 -
史上最细节的自然语言处理NLP/Transformer/BERT/Self Attention面试问题与答案
这是我花费了两个周末整理和筛选的,可能是史上最细节的自然语言处理NLP面试问题与(部分)答案啦,主要聚焦目前处于NLP舞台中央的Transformer/BERT/后BERT/Self Attention。筛选的问题会深入到算法/模型更细节的地方,而尽量避免大而泛的问题。本文希望能帮助你对Transformer/BERT的理解再深一层,而这也要求你对上面的算法/模型有基本的认识,主要包括这两部分(后BERT的模型可以自行查找):1、论文:论文是最一手的资源,没有各方解读的杂音Transformer:原创 2021-01-31 20:25:25 · 1944 阅读 · 3 评论 -
超细粒度分析 XLNet 中神奇的 Attention Mask
BERT后时代,XLNet 在20个任务上超越BERT,引起不小的关注。最重要的改进是 XLNet 实现了不在输入中加[Mask] 标志,同样可以利用上下文信息,解决了BERT预训练和微调不一致的问题。1、XLNet如何实现在不加 [Mask] 情况下利用上下文信息呢?XLNet 通过 Permutation Language Modeling (PLM) 重排输入文本,使得当前词的下文也有可能出现在当前词的「上文」中,而实际的操作不是通过改变文本输入顺序来实现,而是依靠关键的 Attention M原创 2020-11-29 12:58:46 · 1219 阅读 · 0 评论 -
超细节的 Self-Attention 知识点 - 附源码解析
在当前的NLP领域,Transformer/BERT已然成为基础应用,而 Self-Attention 则是两者的核心部分,下面尝试用Q&A和源码的形式深入 Self-Attention 的细节。Q&A1、 Self-Attention 的核心是什么?Self-Attention的核心是用文本中的其它词来增强目标词的语义表示,从而更好的利用上下文的信息。2、Self-Attention 的时间复杂度是怎么计算的?Self-Attention时间复杂度:O(n2⋅d)O(n^2 \c原创 2020-10-24 10:25:50 · 2848 阅读 · 4 评论 -
深度学习中的轴/axis/dim全解
在深度学习中,轴,指的就是张量的层级,一般通过参数axis/dim来设定。很多张量的运算、神经网络的构建,都会涉及到轴,但到底取哪个轴,却不是那么容易把握。下面会针对轴/axis/dim,基于 Pytorch 的代码和实例,尝试去理清张量运算中轴/axis/dim的设定。轴的概念对于一个张量,它的shape有几维,就对应有几个轴,也就对应着张量的层级,最直观的可以通过看最前面的方括号数量来判断。import torcha = torch.Tensor([[1,2,3], [4,5,6]])b =原创 2020-09-13 09:33:20 · 3156 阅读 · 0 评论 -
NLP中Mask全解
Mask 在NLP中是一个很常规的操作,也有多种应用的场景和形式,下面尝试从以下几个方面去全(用了夸张的修辞手法)解Mask,并尽可能地辅以图片说明和代码解释:Mask的作用:处理非定长序列RNN中的MaskAttention中Mask防止标签泄露Transformer中的MaskBERT中的MaskXLNet中的MaskMask的作用对于NLP中mask的作用,先上结论:1、padding mask:处理非定长序列,区分padding和非padding部分,如在RN原创 2020-08-15 15:20:33 · 3480 阅读 · 5 评论 -
超细节的BERT/Transformer知识点
随着NLP的不断发展,对BERT/Transformer相关知识的研(mian)究(shi)应(ti)用(wen),也越来越细节,下面尝试用QA的形式深入不浅出BERT/Transformer。1、Transformer在哪里做了权重共享,为什么可以做权重共享?2、Self-Attention 的时间复杂度是怎么计算的?3、不考虑多头的原因,self-attention中词向量不乘QKV参数矩阵,会有什么问题?4、为什么BERT选择mask掉15%这个比例的词,可以是其他的比例吗?5、为什么BE原创 2020-08-09 15:04:51 · 1237 阅读 · 0 评论 -
NLP中各框架对变长序列的处理全解
在NLP中,文本数据大都是变长的,为了能够做batch的训练,需要padding到相同的长度,并在实际训练中忽略padding部分的影响。在不同的深度学习框架中,对变长序列的处理,本质思想都是一致的,但具体的实现方式有较大差异,下面针对Pytorch、Keras和TensorFlow三大框架,以LSTM模型为例,说明各框架对NLP中变长序列的处理方式和注意事项。Pytorch在pytorch中,是用的torch.nn.utils.rnn中的 pack_padded_sequence 和 pad_pac原创 2020-07-26 11:29:47 · 1813 阅读 · 0 评论