首页 > 编程知识 正文

向量的运算的所有公式,词频共现矩阵

时间:2023-05-04 05:51:56 阅读:33170 作者:3286

传统的单词向量模型,如Word2Vec和Glove学习中得到的单词向量是固定的。 即,一个单词只有一种单词向量,明显不适合多义词。 另一方面,ELMo算法使用深度双向语言模型biLM,只训练语言模型,而单词的词向量是从输入语句实时获得的,因此词向量与上下文信息密切相关,可以很好地区分语义差异。

1 .静态词向量算法

上一篇文章介绍了字嵌入算法Word2Vec和Glove。 与传统的one-hot码、共现向量相比,词嵌入算法得到的词向量维度较低,能够更好地支持文档分类、答疑系统等下游任务。

但是,这两种算法都是静态词向量算法,在数据集上训练语言模型后,每个词的词向量都是固定的。 下一次使用单词向量时,无论输入的语句是什么,单词向量都是相同的。 示例:

“我喜欢小米”中的“小米”指的是一种食物。 “小米手机很好用”的“小米”指着手机品牌给出上面两个句子,在Word2Vec和Glove上“小米”的词向量相同,根据上下文不能给出更准确的词向量。

ELMo是一种动态词向量算法,在大型语料库中训练biLSTM (双向LSTM模型)。 下游任务需要获取单词的词向量时,将整个句子输入biLSTM,利用biLSTM的输出作为单词的词向量,包括上下文信息。 可以理解为biLSTM是函数,函数的输入是句子,输出是句子中单词的词向量。

2 .双向语言模式

首先,我们将介绍什么是双向语言模型,以及如何通过biLSTM获得单词的词向量。 有关不熟悉LSTM的儿童鞋,请参阅上一篇文章中的循环神经网络RNN、LSTM和GRU。

2.1双向语言模型

双向语言模型有正向模型和反向模型,如果给出包含n个单词的语句t=[t(1),t ),t ),n ],则正向模型是前面的单词[t,t ),…,t(k-1)

2.2使用bil STM得到上下文相关的词向量

双层biLSTM模型

biLSTM是一种双向循环神经网络,包括前向网络和后向网络两部分。 上图为层数L=2的biLSTM。

各单词t(I )的输入是单词向量,该单词向量是固定的,可以使用在Word2Vec或Glove中生成的单词向量,在ELMo中使用在CNN-BIG-LSTM中生成的单词向量。 请注意,ELMo在输入时具有固定的单词向量。 ELMo将输入的单词向量传递给biLSTM所得到的内容是动态的,包含上下文信息。

在ELMo的论文中,双向LSTM中的每一层对应第I个单词的输出用以下符号表示,向前输出包含第I个单词的前缀,向后输出包含第I个单词的后缀。

因为在文章中添加表达式很难,所以向前输出使用h(k,j,),向后输出使用h ) k,j,,请谅解。 各层的输出h(k-1、j、)和h ) k1、j、)是单词的动态词向量。

LTM共有l层,对于前方LSTM,各单词t(k-1 )的最后一层输出h ) k-1,l,)预测下一个单词t ) k; 在后方LSTM的情况下,各单词t(k1 )的最终阶层在前一个单词t ) k的预测中输出h ) k1、l、。 预测过程采用softmax,biLSTM需要优化的目标函数为以下:

(x )表示输入单词时的单词向量,该单词向量是固定的。 (s )表示softmax层,用于预测前后单词。 (LSTM,)表示前向lstm的参数,用于计算h(k-1,l,)。 (LSTM,)表示后方lstm的参数,用于计算h(k-1,l,)。

3. ELMo算法

3.1流程介绍

ELMo机型

ELMo中使用了biLSTM层数L=2,但ELMo可以首先在大数据集上训练模型,然后在任务中根据输入句子输出每个单词的词向量。 例如,给出某个语句t=[t(1),t )2)、t ) n ],ELMo计算单词向量的方法如下。

从静态词向量表中查找单词词向量e(1)、e ) n )用于输入。 ELMo使用在CNN-BIG-LSTM中生成的单词向量作为输入。 将单词向量e(1)、…、e )、n )分别输入第一分层前方LSTM和后方LSTM,前方输出h )、1)、…、h )、n、1)、后方输出h )、1、1、)、h ) 将后方输出h(1、1、)、h ) n、1、)传递给第2层并前往LSTM,

得到第 2 层后向输出 h(1,2,←), ..., h(N,2,←)。则单词 i 最终可以得到的词向量包括 E(i), h(N,1,→), h(N,1,←), h(N,2,→), h(N,2,←),如果采用 L 层的 biLSTM 则最终可以得到 2L+1 个词向量。3.2 使用词向量

在上面我们知道句子中一个单词 i 可以得到 2L+1 个词向量,在实际使用的过程中应该如何利用这 2L+1 个词向量?

首先在 ELMo 中使用 CNN-BIG-LSTM 词向量 E(i) 作为输入,E(i) 的维度等于 512。然后每一层 LSTM 可以得到两个词向量 h(i,layer,→) 和 h(i,layer,←),这两个向量也都是 512 维。则对于单词 i 可以构造出 L+1 个词向量。

h(i,0) 表示两个 E(i) 直接拼接,表示输入词向量,这是静态的,1024 维。

h(i,j) 表示第 j 层 biLSTM 的两个输出词向量 h(i,j,→) 和 h(i,j,←) 直接拼接,这是动态的,1024维。

ELMo 中不同层的词向量往往的侧重点往往是不同的,输入层采用的 CNN-BIG-LSTM 词向量可以比较好编码词性信息,第 1 层 LSTM 可以比较好编码句法信息,第 2 层 LSTM 可以比较好编码单词语义信息。

ELMo 的作者提出了两种使用词向量的方法:

第一种是直接使用最后一层 biLSTM 的输出作为词向量,即 h(i,L)。

第二种是更加通用的做法,将 L+1 个输出加权融合在一起,公式如下。γ 是一个与任务相关的系数,允许不同的 NLP 任务缩放 ELMo 的向量,可以增加模型的灵活性。s(task,j) 是使用 softmax 归一化的权重系数。

3.3 ELMo效果

ELMo 论文中的例子

这是论文中的一个例子,上面的是 Glove,下面两行是 ELMo。可以看到 Glove 查找 play 的最近邻,会出现“游戏”、“表演”、“运动”等相关的单词,可能与 paly 在句子中的实际意思不同。但是在 ELMo 中,可以看到第一个句子中的 play 是比赛的意思,其最近邻句子的 play 也是比赛的意思。而第二个句子的 play 都是表演的意思。说明 ELMo 可以根据上下文更好地得到一个单词的词向量。

4. ELMo 总结

ELMo 训练语言模型,而不是直接训练得到单词的词向量,在后续使用中可以把句子传入语言模型,结合上下文语义得到单词更准确的词向量。

使用了 biLSTM,可以同时学习得到保存上文信息和下文信息的词向量。

biLSTM 中不同层得到的词向量侧重点不同,输入层采用的 CNN-BIG-LSTM 词向量可以比较好编码词性信息,第 1 层 LSTM 可以比较好编码句法信息,第 2 层 LSTM 可以比较好编码单词语义信息。通过多层词向量的融合得到最终词向量,最终词向量可以兼顾多种不同层次的信息。

参考文献

1. Deep contextualized word representations

https://arxiv.org/pdf/1810.04805.pdf

2. 知乎:ELMo原理解析及简单上手使用

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。