词的分布表示
来源:互联网 发布:淘宝旗舰店是正品么 编辑:程序博客网 时间:2024/04/27 13:43
词的表示
- One-hot Representation(独热表示)
“苹果”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 …]
优点:简介,缺点:词之间是孤立的,维数灾难。 - Distributed Representation(分布式表示)
词向量或者词嵌入(word embedding)是用一个向量来表示一个词,一定程度上可以用来刻画词之间的语义距离。
给出一个文档,用一个单词序列比如 “我喜欢苹果”,然后对文档中每个不同的单词都得到一个对应的低维向量表示,“苹果”表示为 [0.11, −0.77, −0.71, 0.10, −0.50, …]。
优点:低维、相似词的词向量距离相近,缺点:计算复杂。
分布假说
上下文相似的词,其语义也相似。
语言模型
文本学习:词频、词的共现、词的搭配。
语言模型判定一句话是否为自然语言。机器翻译、拼写纠错、音字转换、问答系统、语音识别等应用在得到若干候选之后,然后利用语言模型挑一个尽量靠谱的结果。
通常,
基于矩阵的分布表示
基于矩阵的分布表示主要是构建“词-上下文”矩阵,通过某种技术从该矩阵中获取词的分布表示。矩阵的行表示词,列表示上下文,每个元素表示某个词和上下文共现的次数,这样矩阵的一行就描述了改词的上下文分布。常见的上下文有:(1)文档,即“词-文档”矩阵;(2)上下文的每个词,即“词-词”矩阵;(3)n-元词组,即“词-n-元组”矩阵。矩阵中的每个元素为词和上下文共现的次数,通常会利用TF-IDF、取对数等技巧进行加权和平滑。另外,矩阵的维度较高并且非常稀疏,可以通过SVD、NMF等手段进行分解降维,变为低维稠密矩阵。
经典模型代表:Global Vector模型(GloVe)。
GloVe模型(Global Vectors for Word Representation)
GloVe对“词-词”矩阵进行分解,只考虑矩阵非零的元素,同时采用了类似于推荐系统Latent Factor Model的方式进行矩阵分解。目标函数为:
其中
基于神经网络的分布表示
经典Bengio神经网络语言模型
Bengio 神经网络语言模型(Neural Network Language Model ,NNLM)是对
- 输入层
x :将n−1 个词的对应的词向量C(wt−n+1),...,C(wt−1) 顺序拼接组成长度为(n−1)∗m 的列向量,用x 表示,x=[C(wt−n+1),...,C(wt−1)] - 隐含层
h :使用tanh 作为激励函数,输出,tanh(d+Hx) Hh∗(n−1)m 为输入层到隐藏层的权重矩阵,d 为偏置项(biases); - 输出层
y :一共有|V| 个节点,分量y(wt=i) 为上下文为wt−n+1,...,wt−1 的条件下,下一个词为wt 的可能性,即上下文序列和目标词之间的关系,而yi 或者y(wt) 是未归一化log 概率(unnormalized log-probabilities),其中,y 的计算为:,y=b+Wx+Utanh(d+Hx) U|V|∗h 为隐藏层到输出层的权重矩阵,b 为偏置项,W|V|∗(n−1)m 为输入层到输出层直连边的权重矩阵,对输入层到输出层做一线性变换1。由于输出层的各个元素(yi 或者y(wt) )之和不等于1,最后使用softmax 激活函数将输出值yi 进行归一化,将y 转化为对应的概率值:P(wt|wt−n+1,...,wt−1)=eywt∑ieyvi
对于整个语料库,模型需要最大化:
训练时使用梯度下降优化上述目标,每次训练从语料库中随机选取一段序列
其中,
相对于n-gram,NNLM的优势在于词语之|V|*h间的相似性可以通过词向量计算,比如:
- A cat is walking on the street * 10000
- A mouse is walking on the street * 1
上面例子中 cat 和 mouse 在NNLM中词向量相近,而在n-gram中cat的概率要大很多。
该结构的学习中,各层的规模:
输入层:n为上下文词数,一般不超过5,m为词向量维度,10~10^3;
隐含层:n_hidden,用户指定,一般为10^2量级;
输出层:词表大小V,10^4~10^5量级;
同时,也可以发现,该模型的计算主要集中在隐含层到输出层
word2vec
Bengio 等人的工作只考虑对语言模型的建模,词向量只是语言模型结束的副产品,因此他们并没有指出哪一套向量作为词向量效果更好。此外,在NNLM中词向量出现在两个地方,输入层各词的词向量是从矩阵
CBOW模型
CBOW模型对NNLM做了简化:
- 隐含层不再是上文各词词向量的拼接,而是使用上下文各词词向量的平均值,减少计算量;
- 去掉了tanh隐含层,提升模型训练速度;
CBOW模型包含3层,输入层、投影层和输出层:
- 输入层:共
- 投影层:将输入层的
- 输出层:一共
对于整个语料库而言,CBOW的优化目标为最大化:
Skip-gram模型
与 CBOW一样,Skip-gram模型中没有隐藏层,不同的是,Skip-gram模型每次从目标词
对于整个语料库而言,CBOW的优化目标为最大化:
参考资料
[1] Yoshua Bengio, Rejean Ducharme, Pascal Vincent, and Christian Jauvin. A Neural Probabilistic Language Model. Journal of Machine Learning Research (JMLR), 3:1137–1155, 2003. [pdf]
[2] Tomas Mikolov et al. Efficient estimation of word representations in vector space. [pdf]
[2] 李泽魁。再探深度学习词向量表示(Advanced word vector representations)
- Bengio 的论文中提到,如果使用该直连边,可以减少一半的迭代次数;但如果没有直连边,可以生成性能更好的语言模型。 ↩
- 词的分布表示
- 自然语言处理-分布表示
- CSAPP读书笔记——程序的机器级表示之寄存器分布与mov指令集
- 表示女性的词
- 词的向量表示
- 词的向量表示
- 词的向量表示
- 词的向量化表示
- 理解二项分布,beta分布,多项分布 狄利克雷分布的
- 先验分布,后验分布,共轭分布的关系
- 常见的语言表示模型(词嵌入、句表示、篇章表示)
- +-*/的表示
- 中国地震带的分布
- 中国地震带的分布
- 程序的内存分布
- 变量的内存分布
- 栈的分布
- c++内存的分布
- Java-面向对象(基础编)--包装类
- css3属性border-radius详解
- 从零开始学C++之虚函数与多态(二):纯虚函数、抽象类、虚析构函数
- python 的日志logging模块学习
- css居中(水平+垂直,定宽/高+不定宽/高,边距+浮动+定位)
- 词的分布表示
- 总结
- 5大架构:细数数据平台的组成与扩展
- 泛型委托
- 利用Spring进行LADP验证登录遇到的问题及其解决方式
- App项目实战之路(一):概述篇
- javascript——数组
- Toolbar的简单使用方法
- wireshark分析