CS224n笔记(一)

skip-gram model

在每一个估算步都取一个词作为中心词汇,尝试去预测它一定范围内上下文的词汇,这个模型会定义一个概率分布:给定一个中心词汇,其他单词在这个词汇上下文出现的概率,作为词汇的向量表示,然后让概率分布最大化。这个模型只有一个概率分布,这个概率分布就是输出,也就是出现在中心词周围的上下文的一个输出,接着我们要定义一个半径m,然后从中心词汇开始到距离为m的位置,用刚刚的概率分布去预测周围的词汇。然后我们会在多处进行多次重复操作,我们要选择词汇向量,以便让预测的概率达到最大。
CS224n笔记(一)_第1张图片
J( θ \theta θ)就是我们的损失函数,J( θ \theta θ)表示的是我们拿到一段很长的文本,有了足够上的词汇序列。然后遍历文本中所有所有位置,对于文本中的每个位置我们都会定义一个围绕中心词汇的,大小为2m的窗口,中心词前后各m的单词,这样就得到一个概率分布,可以根据中心词汇给出词汇出现的概率。然后我们就要设置模型的参数,让上下文中所有词汇出现的概率都尽可能地高。这里的 θ \theta θ就是模型的参数, θ \theta θ就是词汇的向量表示,也是每个词汇的向量表示的唯一参数。然后我们要最大化这个预测的概率,J( θ \theta θ)是我们的目标函数,最大化操作就是解决对数分布问题,所有求积就会转换成求和。这样我们就不用计算整个语料库的概率,而是取每个位置上的平均值,得到1/T,这样相当于对每个词汇进行归一化处理,这样并不会影响最大值。在公式前面加一个负号,这样可以把最大化问题转换成最小化问题,这样我们就得到一个负的对数似然,也就是模型的负对数分布。我们需要利用这些单词向量来最小化负的对数似然函数,使用单词向量构造成的中心词汇来得出上下文单词的概率分布,这就是概率分布的形式。
CS224n笔记(一)_第2张图片
每种单词类型都有一个对应的向量,uo是索引为o的单词所对应的向量,vc是中心词汇对应的向量。我们使用softmax确定相应的概率分布,选取两个向量的点积并且将它们转换成softmax形式,求点积然后求和,这种求点积类似于一种粗糙衡量相似性的方法,两个向量的相似性越大,那么这个点积就越大。这是一种通过点积衡量相似性的方法,softmax将数值转换成概率的标准方法。v是中心词汇的向量,u是上下文词汇的向量,两个表示是相互独立的,在做优化的时候,不会相互耦合。在处理上下文的时候,我们不需要关注它们所处的位置,它们在哪和这个模型并没有什么影响。我们有一个中心词汇的独热编码向量,然后有一个所有中心词汇表示组成的矩阵,如果我们将这个矩阵和向量相乘,我们选出这个矩阵的列代表的就是中心词汇的表示。接着我们构造第二个矩阵,用于存储上下文词汇的表示。对于上下文的每个位置,我们把这个向量和这个矩阵相乘,这个矩阵就是上下文的词汇表示。我们挑出中心词汇和上下文表示的点积,然后用softmax方法将它们转化成概率分布,给定一个中心词汇作为一个生成模型,它可以预测在上下文中出现的词汇的概率,概率最高的就是我们应该选择的单词,但如果实际的上下文单词不是这个,说明你的预测做的不够好,产生了一些误差。
CS224n笔记(一)_第3张图片
一般来说,我们会把模型中所有的参数都放进一个大的向量 θ \theta θ里,然后进行优化,通过改变这些参数,让模型的目标方程最大化,所以我们要的参数就是对每个单词都有一个小向量,不管它是中心词汇还是上下文词汇,这样我们就得到一个一定大小的单词表。
然后是对方程简化,计算过程在下图。
CS224n笔记(一)_第4张图片
CS224n笔记(一)_第5张图片
CS224n笔记(一)_第6张图片
反向传播实际上不过就是链式法则再加上一些偏导项的高效存储,这样你就不用反复计算同一个项,这就好比是带有存储功能的链式法则。uo是实际输出的上下文词汇,这里是期望的形式,我们通过计算上下文中可能出现的每一个单词的概率来得到期望,基于这个概率我们得到ux,ux是期望向量。它是所有可能的上下文向量的平均,以它们出现的似然值来加权,接下来我们要做就是调整我们模型中的参数,为的是让它们相等,然后我们就可以得到需要最小化的值。

你可能感兴趣的:(机器学习,人工智能)