整理自贪心科技NLP公开课,感谢分享!侵删
第一讲:词向量与ELMo模型 李文哲老师
预习1:最大似然估计
最大似然估计是机器学习邻域最为常见的构建目标函数的方法,核心是根据观测到的结果预测其中的未知参数
求解:极大值倒数为0
预习2:机器学习中的MLE(极大似然估计)、MAP(最大后验估计)、贝叶斯估计
(参考公众号:李老师谈人工智能)
假设在一个班级寻找一个人帮忙解答问题,找谁
班级可视为假设空间,每个学生可看作模型实例化
方法1:MLE 最大似然估计
选择过去三次考试成绩最好的学生。三次考试成绩相当于”学习过程“,选他去回答难题相当于”预测过程“。
方法2:MAP 最大后验估计
根据三次考试成绩以及老师的评价选出最优学生。这种方法选择的学生不一定是第一名。老师的评价和过往成绩根据贝叶斯公式结合。左边的项是MAP需要优化的部分,通过贝叶斯定理这个项可以分解成MLE(第一种策略)和Prior,也就是老师的评价。
若观测数据增加,MAP逐步逼近MLE
方法三:Bayesian 贝叶斯模型
让所有人都去参与回答张三的难题,但最后我们通过一些加权平均的方式获得最终的答案。通过三次考试成绩和老师评价确定权重。
1.预训练与词向量
2.词向量常见训练方法
3.深度学习与层次表示
4.LSTM、BL-LSTM模型回顾
5.基于BI-LSTM的ELMo算法
1. 基础部分回顾——词向量、语言模型
词向量:词的表示方法。如何通过量化的方式来表示一个单词是nlp的核心问题。利用词向量表示单词的方法有one-hot表示(只有1、0)和分布式表示。通过超空间表示时,性质相似的单词距离相近。
one-hot编码不能计算两个词语义的相似度
语言模型:用来判断一句话从句法上是否通畅
p(s)=p(w1,w2.....) wn表示词向量
目前大部分LM都是基于统计方法(链式法则,马尔可夫估计)的。
链式法则chain rule:
马尔科夫假设
由于长句时P值会变得很小,用马尔可夫假设近似估计来解决该问题。同时,可以降低统计量,降低复杂度,提高泛化能力(可在线学习)。
常见语言模型
unigram:每个单词出现都是独立的,不考虑上下文关系,只取决于词在语料库中出现的概率
bigram:基于first-order马尔科夫假设
ngram:基于n-order马尔可夫假设
由于某个词在语料库可能没有出现过,直接计算会导致稀疏性问题,几大部分句子P=0 -->平滑方法
常见平滑方法
add-one smoothing(拉普拉斯平滑),add-K smoothing(k是可以通过训练优化的参数,add-one smoothing可视为特殊情况),Interpolation(多个LM概率的加权平均,由于不同LM计算出的P可能不同),good-turning smoothing
如何评估语言模型
理想方法:modelA、B同时应用于一个任务比较准确性
perplexity=2^-(x) x:average log likelihood
基于分布式表示的模型总览
global:从全局考虑,计算量大,若增加一个新的文档则要重新计算
local:加窗思想,计算量小,可充分利用大数据
建议学习路径
2.NLP核心:学习不同语境下语义表示
词向量训练常见方法
基于非语言模型方法:skipgram,cbow
基于语言模型的方法:神经网络语言模型(RNN等)
通过训练可以得到每个单词固定的词向量,这些词向量与上下文可能有关
SkipGram
设window size=1,句子abcde,目标函数是最大化P(a|b)P(b|a)P(c|b)P(b|c)........
CBOW
设window size=1,句子abcde,目标函数是最大化P(a|b,c)(c|b,d)........
NNLM:神经网络语言模型,基于马尔科夫假设
BERT:denosing auto encoder
3.基于LSTM的词向量学习(语言模型)
基本结构
深度LSTM
双向LSTM
注意双向lstm并不是真的双向,是两个方向相反的lstm的拼接
4.深度学习中的层次表示以及DEEP BI-LSTM
层次越深能学习到细节表示
网友评论