首页 > 编程知识 正文

scanf输入实型数据,vsscanf

时间:2023-05-05 19:14:43 阅读:25503 作者:4972

我之前说过很多,现在我们正式推出了与word2vec相关的两种机型: CBOW机型(Continuous Bag-Of-Words Model )和Skip-gram机型) continuous skikigram CBOW是已知当前单词的上下文,预测当前单词,而Skip-gram则相反,如果已知当前单词,则预测当前单词的上下文。 两者的模型结构如下图所示。

对于上述两种型号,word2vec分别提供了两个基于Hierarchical Softmax和Negative Sampling设计的框架。 接下来,我将介绍各个CBOW模型。

1、基于Hierarchical Softmax的CBOW模型

1.1型号说明

如上所述,基于神经网络的语言模型的目标函数通常采用以下对数似然函数:

其关键是条件概率p(w|context ) ) )的结构。 基于Hierarchical Softmax的CBOW模型优化的目标函数也如上。

首先,让我们来看看CBOW的网络结构。 它由三层组成:输入层、投影层和输出层。 假设context(w )由词w前后的各c词组成。 下图说明了这三层。

与前面提到的神经概率语言模型相比,CBOW主要分为以下三个方面。

1 )从输入层到投影层的操作,神经概率模型采用拼接方式,CBOW采用累加方式

2 )从有无隐层看,神经概率模型有隐层,CBOW没有隐层

3 )从输出层来看,神经概率模型的输出层为线性结构,而CBOW为树形结构

因此,对于神经概率模型的大规模矩阵运算和softmax归一化运算,CBOW对其进行优化,首先去除隐藏层,同时将输出层改为Huffman树,为利用Hierarchical Softmax技术奠定了基础。

1.2坡度计算

日立软件最大技术是word2vec中提高性能的关键技术。 为了便于说明,在具体介绍该技术之前,假设考虑Huffman树的某个叶节点,对应词典d中的单词w,写如下:

引入了这么多符号,我举一个例子来说明这些符号。 让我们假设在第一个故事中举出了巴西世界杯的例子。 其结构的Huffman树如下图所示。

对于足球这个词,我们得到以下结果。

那么,我定义了很多符号。 接下来,让我们考虑一下如何定义条件概率p(w|context ) w )。

请看看上面的巴西世界杯例子。 从根结点到足球这个叶结点的过程中,我们经历了四次分支。 每一个分支都相当于做了两个分类。 既然从二分类的角度考虑问题,那么对于每个非叶节点,有必要在左右的子节点中指定哪个是正类、哪个是负类、哪个是负类的类别。 除了根节点之外,树中的每个节点都有一个值为0或1的Huffman代码。 因此,word2vec将编码为0的节点定义为负疲劳,将编码为0的点定义为正类,即约束:

换句话说,在分类一个节点时,分为左为负类,分为右为正类。 根据前面介绍的逻辑回归知识,一个节点归类为正类的概率如下:

被划分为负类的概率是

请注意。 上式中有一个向量叫。 这是未定的参数。 很明显,这里与叶以外的节点对应的向量可以由wi起到的作用。 因此,如果对叶节点从根结点发送到足球这一经历的4次二分类,写下各自分类结果的概率(这里也需要注意。 分为右侧则视为正类,分为左侧则视为负类。 ) :

所以我们要p (足球)。 它和上面四个概率的关系如下。

通过对足球的例子的说明,Hierarchical Softmax的基本思想已经介绍了。 总之,对于词典d的任意词w,Huffman的树中一定存在从根结点到该词的路径,路径长度为l时,路径上存在l-1个分支,每个分支为2个分类,每分类产生1个概率,将所有分支

条件概率p(w|context(w ) ) )的通式可以写如下。

其中:

写下整体公式后,如下所示

因此,基于Hierarchical Softmax的CBOW模型的似然函数如下:

接下来,需要最大化上面的似然函数

word2vec里面采用的是随机梯度上升法(求最小值用梯度下降法,求最大值用梯度上升法)。为了简化求梯度的过程,我们将上式中双重括号里面的部分记为L(w,j):

这样做是完全可以的,因为每个j是不相关的,同时随机梯度上升法的做法是每取一个样本就对所有参数进行一次更新。该函数中包含的参数主要有:

该模型的参数更新形式为:

中间设计的推导过程如下:

可以看到,利用sigmoid函数求导的性质,很容易得到上面的结果。

至此,基于Hierarchical Softmax的CBOW模型就介绍完啦,最后给出该模型的伪代码:

2、基于Negative Sampling的CBOW模型

可以看到,基于Hierarchical Softmax的CBOW模型采用了复杂的Huffman树,为了简化这一过程,又提出了基于Negative Sampling的CBOW模型,利用随机负彩样,大幅提升了计算性能。不过,其基本的计算思想仍是一样的。

在CBOW模型中,已知词w的上下文Context(w),需要预测w,因此对于给定的Context(w)来说,词w就是一个正样本,其他词就是一个负样本了。关于负样本的选取,我们将在最后一节中进行介绍。假定现在已经选好了一个关于w的负样本字节NEG(w),且对于D中的每一个词,定义:

即正样本的标签是1,负样本的标签是0。

所以,对于一个给定的(Context(w),w),我们希望最大化:

其中:

写成整体表达式即为:

由于只有一个正样本,所以g(w)又可以写为:

下面是对上式的一个解释:

为计算方便,我们可以对G取对数,则最终的目标函数为:

大家对上面的式子是不是很熟悉,其实跟之前基于Hierarchical Softmax的CBOW模型是一样的,我们同样取两重加和中间的部分,并通过随机梯度上升的方法对参数进行更新,这里详细的推导过程就不推导了,这里直接给出参数更新的结果:

则基于Negative Sampling的CBOW模型的伪代码如下图所示:

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