目录
一、生成模型 VS 判别模型
从概率分布的角度考虑,对于一堆样本数据,每个均有特征Xi对应分类标记yi。
生成模型:学习得到联合概率分布P(x,y),即特征x和标记y共同出现的概率,然后求条件概率分布。能够学习到数据生成的机制。
判别模型:学习得到条件概率分布P(y|x),即在特征x出现的情况下标记y出现的概率。
数据要求:生成模型需要的数据量比较大,能够较好地估计概率密度;而判别模型对数据样本量的要求没有那么多。
HMM是生成模型,是概率有向图,是局部最优,有一定的label bias,有齐次马尔可夫假设(当前状态只与前几个状态有关)和观测独立性假设(任意时刻观测只依赖于该时刻的马尔可夫链状态,与其他观测及状态无关)。
CRF是判别模型,基于概率无向图,是全局最优,归一化较为合理不存在label bias。
1. One-hot表示:维度灾难、语义鸿沟
2. 分布式表示:
矩阵分解(LSA):利用全局预料特征,但SVD求解计算复杂度大
基于NNML/RNNLM词向量:词向量为副产物,存在效率不高等问题
word2vec、fastText:优化效率高,但是基于局部语料
glove:基于全局语料,结合LSA和word2vec的优点
elmo、GPT、bert:动态特征
1) 都可以无监督学习词向量,fastText训练词向量会考虑subword
2) fastText还可以进行邮件度学习进行文本分类,其主要特点:
1)skip-gram vs cbow , skipgram中心词输入,上下文作为输出。cbow 无隐层,使用双向上下文作为入口。投影层转化为求和平均。
2) word2vec的两种优化方法 hierarchical softmax(保证词频多的路径短,词频低的路径长,减少计算量) 和 negative sampling(为每个训练集提供负例)。
前面的词向量都是静态词向量,无法解决一词多义的问题。下面的都是基于语言模型的动态词向量。下面从
特征提取器: 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等优化
1、为什么要引入Attention机制?
根据通用近似定理,前馈网络和循环网络都有很强的能力。但为什么还要引入注意力机制呢?
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 中对一阶动量也是用指数移动平均计算。
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