NLP基础知识整理

目录

一、生成模型 VS 判别模型


一、生成模型 VS 判别模型

从概率分布的角度考虑,对于一堆样本数据,每个均有特征Xi对应分类标记yi。

生成模型:学习得到联合概率分布P(x,y),即特征x和标记y共同出现的概率,然后求条件概率分布。能够学习到数据生成的机制。

判别模型:学习得到条件概率分布P(y|x),即在特征x出现的情况下标记y出现的概率。

数据要求:生成模型需要的数据量比较大,能够较好地估计概率密度;而判别模型对数据样本量的要求没有那么多。

 

二、HMM VS CRF

HMM是生成模型,是概率有向图,是局部最优,有一定的label bias,有齐次马尔可夫假设(当前状态只与前几个状态有关)和观测独立性假设(任意时刻观测只依赖于该时刻的马尔可夫链状态,与其他观测及状态无关)。

CRF是判别模型,基于概率无向图,是全局最优,归一化较为合理不存在label bias。

 

三、各种词向量的特点

1. One-hot表示:维度灾难、语义鸿沟

2. 分布式表示:

矩阵分解(LSA):利用全局预料特征,但SVD求解计算复杂度大

基于NNML/RNNLM词向量:词向量为副产物,存在效率不高等问题

word2vec、fastText:优化效率高,但是基于局部语料

glove:基于全局语料,结合LSA和word2vec的优点

elmo、GPT、bert:动态特征

 

四、word2vec和fastText对比有什么区别

1) 都可以无监督学习词向量,fastText训练词向量会考虑subword

2) fastText还可以进行邮件度学习进行文本分类,其主要特点:

 

五、word2vec

1)skip-gram vs cbow , skipgram中心词输入,上下文作为输出。cbow 无隐层,使用双向上下文作为入口。投影层转化为求和平均。 

2) word2vec的两种优化方法   hierarchical softmax(保证词频多的路径短,词频低的路径长,减少计算量) 和  negative sampling(为每个训练集提供负例)。

 

六、elmo、GPT、bert三者之间有什么区别?

前面的词向量都是静态词向量,无法解决一词多义的问题。下面的都是基于语言模型的动态词向量。下面从

特征提取器: elmo使用LSTM进行提取,GPT和bert则采用Transformer进行提取。很多任务Transformer特征提取能力强于LSTM,elmo采用1层静态向量+2层LSTM,多层提取能力有限,而GPT和bert中的Transformer课采用多层,并行计算能力强。

GPT和Bert都采用Transformer,Transformer是encoder-decoder结构,GPT的单向量模型采用decoder部分,decoder的部分见到的都是不完整的句子;bert的双向语言模型则采用encoder部分,采用了完整的句子。

 

4、为什么要采取Marked LM,而不直接应用Transformer Encoder?

我们知道向Transformer这样深度越深,学习效果会越好。可是为什么不直接应用双向模型呢?因为随着网络深度增加会导致标签泄露。如下图:

 

深度双向模型比left-to-right 模型或left-to-right and right-to-left模型的浅层连接更强大。遗憾的是,标准条件语言模型只能从左到右或从右到左进行训练,因为双向条件作用将允许每个单词在多层上下文中间接地“see itself”。

为了训练一个深度双向表示(deep bidirectional representation),研究团队采用了一种简单的方法,即随机屏蔽(masking)部分输入token,然后只预测那些被屏蔽的token。论文将这个过程称为“masked LM”(MLM)。

 

5、bert为什么并不总是用实际的[MASK]token替换被“masked”的词汇?

虽然这确实能让团队获得双向预训练模型,但这种方法有两个缺点。首先,预训练和finetuning之间不匹配,因为在finetuning期间从未看到[MASK]token。

Transformer encoder不知道它将被要求预测哪些单词或哪些单词已被随机单词替换,因此它被迫保持每个输入token的分布式上下文表示。此外,因为随机替换只发生在所有token的1.5%(即15%的10%),这似乎不会损害模型的语言理解能力。
使用MLM的第二个缺点是每个batch只预测了15%的token,这表明模型可能需要更多的预训练步骤才能收敛。团队证明MLM的收敛速度略慢于 left-to-right的模型(预测每个token),但MLM模型在实验上获得的提升远远超过增加的训练成本。

局部连接、权重共享以及pooling等优化

 

 

七、elmo、GPT、bert三者之间有什么区别?

 

 

1、为什么要引入Attention机制?

根据通用近似定理,前馈网络和循环网络都有很强的能力。但为什么还要引入注意力机制呢?

  • 计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。
  • 优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息“记忆”能力并不高。

self attention

如果你对RNN比较熟悉的话,我们不妨做一个比较。RNN通过保存一个隐藏态,将前面词的信息编码后依次往后面传递,达到利用前面词的信息来编码当前词的目的。而self-Attention仿佛有个上帝之眼,纵观全局,看看上下文中每个词对当前词的贡献。

 

multi-head attention

在transformer的那篇论文当中,在self-attention的基础上又提出了一种“multi-head” self-attention机制,multi-head self-attention将attention的结果映射到多个空间中去(相当于重复进行上面的self-attention,但是每次都是随机初始化,所以最终结果是相当于映射到多个子空间 )

 

LSTM VS GRU

一般数据集上表现差不多,GRU 参数较少训练更快更容易收敛(重置门、更新门),LSTM(记忆门、忘记门、输出门、更新门)

 

优化算法

 

 

 

Adam[6] 可以认为是 RMSprop 和 Momentum 的结合。和 RMSprop 对二阶动量使用指数移动平均类似,Adam 中对一阶动量也是用指数移动平均计算。

 

  • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
  • 对内存需求较小
  • 为不同的参数计算不同的自适应学习率
  • 也适用于大多非凸优化 - 适用于大数据集和高维空间

 

Nadam对学习率有了更强的约束,同时对梯度的更新也有更直接的影响。一般而言,在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。

 

BERT_self-attention原理(面试必备) https://jishuin.proginn.com/p/763bfbd3877d

attention方法 https://www.zhihu.com/question/68482809

https://blog.csdn.net/u010358304/article/details/79748153

https://www.baidu.com/link?url=_Ycn6S9zs7UPEhpsgGo8FCFM0h8qReSpZMK2g-RS4oUepZkm6RXWAsZdctQ8niuwcniMUCOQyQYfPjFY-Fp7woQHP3upzDnZezigH4av47C&wd=&eqid=87649b62004f2cba0000000360ce24d5

https://zhuanlan.zhihu.com/p/93650508

https://zhuanlan.zhihu.com/p/346920960

 

https://blog.csdn.net/weixin_40920183/article/details/106718158?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242

你可能感兴趣的:(NLP)