给定语料库 ,其中包含 篇文档 。
每篇文档 包含单词序列 ,其中 表示单词的编号:
所有的单词来自于词汇表 ,其中 表示词汇表的大小。
词的表达任务要解决的问题是:如何表示每个单词 。
最简单的表示方式是one-hot
编码。对于词汇表中第 个单词 ,将其表示为:
即第 位取值为1
,剩余位取值为0
。
这种表示方式有两个主要缺点:
one-hot
向量的维度也在数十万维。这对于存储、计算都消耗过大。BOW:Bag of Words
:词在文档中不考虑顺序,这称作词袋模型。
向量空间模型主要用于文档的表达。
向量空间模型假设单词和单词之间是相互独立的,每个单词代表一个独立的语义单元。实际上,该假设很难满足:
给定语料库 和词汇表 ,定义文档-单词
矩阵为:
令矩阵为 ,则:
于是文档 表示为: ,其中文档 中包含的单词对应的位置取值为1,其它位置取值为 0 。
事实上,文档的上述表达并未考虑单词的顺序,也未考虑单词出现的次数。
一种改进策略是考虑单词出现的次数,从而赋予文档-单词
矩阵以不同的权重:
其中 表示单词 在文档 中的权重。
权重 有两种常用的选取方法:
单词权重等于单词出现的频率TF
:
函数 返回单词 在文档 中出现的频数。
单词权重等于单词的TF-IDF
:
函数 是单词的逆文档频率: ,其中:
TF-IDF
不仅考虑了单词的局部特征,也考虑了单词的全局特征。
给定 文档-单词
矩阵,则很容易得到文档的向量表达:
给定文档 ,文档的相似度为:
其中
latent semantic analysis:LSA
的基本假设是:如果两个词多次出现在同一篇文档中,则这两个词具有语义上的相似性。给定文档-单词
矩阵 :
其中 表示单词 在文档 中的权重,可以为:
0/1
值。TF-IDF
值。定义 , 它为矩阵 的第 列,代表单词 的单词-文档向量
,描述了该单词和所有文档的关系。
定义 ,它为矩阵 的第 行,代表文档 的文档-单词
向量,描述了该文档和所有单词的关系。
对矩阵 进行SVD
分解。假设矩阵 可以分解为:
其中:
为单位正交矩阵。
为广义对角矩阵。
其中 称作奇异值。
SVD
分解的物理意义为:主题。
所有的文档一共有 个主题,每个主题的强度分别为: 。
第 篇文档 由这 个主题组成,文档的主题分布(称作文档-主题向量
)为:
第 个主题由 个单词组成,主题的单词分布(称作主题-单词向量
)为:
第 个单词也可以由 个主题描述,单词的主题分布 (称作单词-主题向量
)为:
根据 有:
则该分解的物理意义为:文档-单词
矩阵 = 文档-主题
矩阵 x 主题强度
x 主题-单词
矩阵。
将奇异值从大到小进行排列,选择 top k
的奇异值来近似 ,即:
其中:
k
个奇异值组成的对角矩阵。选择top k
的物理意义为:选择权重最大的前 k
个主题。
第 篇文档 由这 个主题组成,文档的主题分布为:
第 个主题由 个单词组成,主题的单词分布为:
第 个单词也可以由 个主题描述,单词的主题分布为:
得到了文档的主题分布、单词的主题分布之后,可以获取文档的相似度和单词的相似度。
文档 和文档 的相似度:
单词 和单词 的相似度:
虽然获得了文档的单词分布,但是并不能获得主题的相似度。
因为 是正交矩阵,因此有:
则有:
因此,任意两个主题之间的相似度为 0 。
因为文档-主题向量
由 决定,而
而文档-主题向量
为 的行向量,也就是 的列向量。文档-单词向量
为 的行向量,也就是 的列向量。
因此,对于一篇新的文档 ,假设其文档-单词向量
为 ,则其文档-主题向量
为:
因为单词-主题向量
由 决定,而:
而单词-主题向量
为 的行向量,也就是 的列向量。单词-文档向量
为 的列向量。
因此,对于一个新的单词,假设其单词-文档向量
为 ,则单词-主题向量
为:
LSA
可以应用在以下几个方面:
文档-主题向量
进行比较,从而进行基于主题的文档聚类或者分类。单词-主题向量
进行比较,从而用于同义词、多义词进行检测。query
映射到主题空间,进而进行信息检索。LSA
的本质是将矩阵 通过 SVD
进行降维。降维主要是由于以下原因:
文档-单词
矩阵 太大,计算机无法处理。通过降维,得到原始矩阵的一个近似。文档-单词
矩阵 含有噪音。通过降维,去掉原始矩阵的噪音。文档-单词
矩阵 过于稀疏。通过降维,得到一个稠密的矩阵。LSA
的降维可以解决一部分同义词的问题,也可以解决一部分二义性的问题。
LSA
的缺点包括:
产生的主题维度可能存在某些主题可解释性差。即:它们并不代表一个自然语言上的主题。
由于Bag of words:BOW
模型的局限性,它无法捕捉单词的前后顺序关系。
一个解决方案是:采用二元词组或者多元词组。
LSA
假设单词和文档形成联合高斯分布。实际观察发现,它们是一个联合泊松分布。
这种情况下,用pLSA
模型效果会更好。
CBOW
模型(continuous bag-of-word
):根据上下文来预测下一个单词。在一个单词上下文的CBOW
模型中:
一个单词上下文的CBOW
模型如下:
其中:
为隐层的大小,即隐向量 。
网络输入 ,它是输入单词(即上下文单词)的 one-hote
编码,其中只有一位为 1,其他位都为 0 。
网络输出 ,它是输出单词为词汇表各单词的概率。
相邻层之间为全连接:
假设没有激活函数,没有偏置项。给定输入 ,则其对应的隐向量 为: 。
令:
由于 是个one-hot
编码,假设它为词表 中第 个单词 ,即:
则有:。
即: 的第 行 就是词表 中第 个单词 的表达,称作单词 的输入向量。
给定隐向量 ,其对应的输出向量 为:
令:
则有: ,表示词表 中,第 个单词 的得分。
为矩阵 的第 列,称作单词 的输出向量。
之后接入一层 softmax
层,则有:
即 表示词汇表 中第 个单词 为真实输出单词的概率。
假设给定一个单词 (它称作上下文),观测到它的下一个单词为 。
假设 对应的网络输出编号为 ,则网络的优化目标是:
其中 为输入单词 的输入向量。
考虑到 ,定义:
则优化目标为: 。
定义 ,即第 个输出单元对应于真实的输出单词 时,它为1;否则为0。
定义:
它刻画了每个输出单元的预测误差:
根据:
则有:
则 更新规则为:
其物理意义为:
当估计过量 (