NLP学习13_ELmo、词向量总结

ELmo解决单词考虑上下文,词向量的表示,动态调整词向量。目前来说最好的方法

首先我们通过训练集训练已经得到了单词back的词向量,然后在测试集中,如果出现了这个back单词,我们不是直接使用训练好的词向量,
而是将训练好的词向量加上一个根据back在测试集出现位置上下文的一个偏移量, 最终得到back词向量是基于当前测试集上下文的。

Elmo

1、使用了语言模型的训练框架
2、使用了深度学习

理解deep model

deep learning 等价于层次结构学习
从识别汽车的例子看出,在底层特征中,是一些很微小的特征,当在高层次特征中,可以明显看到更加具象的特征,比如车灯,轮胎等。
在底层的特征,我们完全可以把这些特征运用到其他领域,也就是可以进行迁移学习transfer learning
越往高层,学习到的特征越适应于当前领域的研究。
这些底层次的特征训练出来的参数我可以运用到其他领域,作为预训练初始化参数,这样可以减小新模型训练的成本
在这里插入图片描述
既然深度学习在CV中可以得到层次结构的特征,那是否也可以用于NLP中提取单词的层次结构特征?
如果应用,我们希望使用深度学习的方式来构建词向量模型,通过深度学习方式,
得到低层次的希望是单词特征,接着是语法特征和单词的语义特征,针对一个单词的不同层次特征。
在这里插入图片描述
在这里插入图片描述
我们想通过RNN这种模型来得到chain rule这种不经过马尔科夫假设的概率形式,使得概率计算更加准确

我将每个单词训练好的词向量都送入LSTM模型,通过这种层次结构,每一层都能得到一个单词特征,然后我将得出的几个特征向量加权求和来得到最终单词的一个向量embedding,也就是说,这么一个词向量既考虑了单词特征、也考虑了语法语义特征。
权重参数和为1,并且这几个参数要通过训练得到。
以上就是ELmo的一个思路

在这里插入图片描述
RNN模型中,因为计算下一个词的向量是考虑到前边所有词的,所以就没有窗口的概念,每次计算词向量我都是把前边所有单词全部考虑的结果。
RNN中的标签就是单词的下一个单词,比如到第三个单词,此时计算出了三个单词的词向量,要预测第四个单词是什么,也就是第三个单词的标签,直接使用交叉熵损失函数计算损失,得出预测结果。

我的理解就是:通过训练集训练出一个Elmo模型,我需要的是模型的参数,而不需要训练集中词向量在每层中的一个特征词向量。在测试集中,输入的单词经过模型是动态生成词向量的。

词向量总结

使用词向量来表示一个单词
在这里插入图片描述
整个的词的表示分成两部分:
1、one-hot表示:包含布尔表示,count based representation,tfidf是考虑了单词重要性的文本表示法
2、分布式的表示
按照空间角度划分:
1、非欧式空间:也就是弯曲的空间,有Hypobolic embedding,具备了可解释性
2、欧式空间
1、global:在学习词向量的时候关注整个的语料库,典型的方法:矩阵分解MF(metrix F)
2、local:在学习词向量时只关注当前句子或者段落
(LM:Unigram、Bigram、Ngram,由马尔科夫假设得来,根据前边的词来预测新词 )在这里插入图片描述
1、基于非LM:即不是通过前边的单词推测后边的
包括skip-gram(中心词推出上下文词,工业界用的最多)、CBOW(上下文词推出中心词)、Glove,这三个考虑了置信度。 Gussian Embedding考虑不确定性
2、基于LM:即根据前边的词推测后边的
1、考虑上下文:ELmo(预测的第N个单词是综合考虑了前边所有单词)、BERT
2、不考虑上下文:NNLM(神经网络LM,4-gram,根据前三个单词预测第四个单词)

MF矩阵分解:推荐系统最常用的方法

基于全局语料库来学习词向量
根据语料库得出一个矩阵,统计相邻单词出现的次数。接着通过MF的方式得到单词词向量
在这里插入图片描述

Glove

MF的方式好处是考虑到了全局,但是当一个新词出现的时候又需要重新进行MF,
local的方式计算快,但是没有考虑全局
glove综合考虑了MF和skipgram

Gaussian Embedding

每个单词不再是词向量,而是高斯分布的 表示形式

非欧式空间

欧式空间看不出事物的一个树状的关系
当放到非欧式的空间时,比如中心点是fruit,他周围会围绕水果的单词,这就能明显看出一个所属关系
在这里插入图片描述

对于word embedding的方法,我们同样可以用在其他方面
句子层面sentence embedding、节点Node embedding、Graph embedding、Knowledge Graph embedding、Code embedding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值