我是靠谱客的博主 拉长紫菜,最近开发中收集的这篇文章主要介绍CS224n笔记(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

skip-gram model

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

最后

以上就是拉长紫菜为你收集整理的CS224n笔记(一)的全部内容,希望文章能够帮你解决CS224n笔记(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部