Word2vec原理+实战学习笔记(二)

来源:投稿 作者:阿克西

编辑:学姐

前篇:Word2vec原理+实战学习笔记(一)​​​​​​​

视频链接:https://ai.deepshare.net/detail/p_5ee62f90022ee_zFpnlHXA/6

5 对比模型(论文Model Architectures部分)

在word2vec提出之前,NNLM与RNNLM通过训练语言模型的方法的训练词向量,使用统计的方法。

本节主要对以下三种模型进行对比:

  • Feedforward Neural Net Language Model

  • Recurrent Neural Net Language Model

  • Parallel Training of Neural networks

5.1 前馈神经网络语言模型(NNLM)

5.1.1 Feedforward Neural Net Language Model

前馈神经网络语言模型全称:Feedforward Neural Net Language Model,简称NNLM,也叫深度神经网络,全连接神经网络。

参考文献:Bengio A neural probabilistic language model (2003)

在nlp任务中,首先都会构建word2id以及id2word,它们都是字典类型,word2id的key是word,value是id,id2word相反,表示每个词对应一个id。

  • input layer:输入层,输入的是index,index表示词的编号,把所有词放在一起组成一个词典,这样每个词都有一个编号,用编号表示位置。将每个index映射成一个向量,将这些向量进行拼接(concat),如图中输入的是n-1个词,每个词都是100维,因此拼接完成后变成100×(n-1)维;

  • hidden layer:隐藏层,将上一步得到的100×(n-1)维向量输入到全连接层中,使用tanh激活函数;

  • output layer:输出层,上一步得到的结果再接一个全连接层,然后使用softmax。

根据前n-1个单词,预测第n个位置单词的概率,即n-gram模型。将w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}输入到网络输入层,映射向量,进行拼接,经过两个全连接层使用softmax预测第t个词的概率,这样可以得到句子中每个词的概率,从而得到句子的概率。

语言模型的优点在于它是无监督模型,不需要任何标注语料,爬取网站上相关句子即可。通过前n-1个单词预测第n个单词,使用无监督的方式进行监督学习。

构建模型,首先在一个句子之前pad(填充)用来预测第一个词,生成语料,前n-1个词作为特征,下一个词作为标签,依次类推,可以构造除前馈神经网络的训练所需数据集。然后通过梯度下降优化模型,使得输出的正确的单词概率最大化。

输入层:将词(index)映射成向量,相当于个1×V的one-hot向量乘以V×D的向量得到一个1×D的向量,其中V×D的向量每一行表示一个词向量。

并行计算:[(n-1), V]*[V, D]=[(n-1), D]

隐藏层:一个以tanh为激活函数的全连接层。

a= tanh(d+Ux)

其中d为偏置,U是参数, d和U相当于b和W参数。

输出层:一个全连接层,后面接个 softmax 函数来生成概率分布。

y=b+Wa

其中y是一个1×V的向量:

P\left(w_{t} \mid w_{t-n+1}, \ldots, w_{t-1}\right)=\frac{\exp \left(y_{w_{t}}\right)}{\sum_{i} \exp \left(y_{i}\right)}

5.1.2 语言模型困惑度和Loss的关系

如何求困惑度?

需要将每个句子中每个词的概率给预测出来,然后将他们相乘吗?这样做也是可以的,但在实际中有更加方便巧妙的方法。

先写出Loss,使得预测出得到的每个正确单词得到的概率越大越好,使用了交叉熵损失函数,这个Loss是一句话的Loss:

\begin{aligned} &\text { Loss: } L=-\frac{1}{T} \sum_{i=1}^{T} \log p\left(w_{i} \mid w_{i-n+1}, \ldots, w_{i-1}\right) \\ P P(s)&=P\left(w_{1}, w_{2}, \ldots, w_{T}\right)^{-\frac{1}{T}}=\sqrt[T]{\frac{1}{P\left(w_{1}, w_{2}, \ldots, w_{T}\right)}} \\ \log (P P(s))&=-\frac{1}{T} \log \left(P\left(w_{1}\right) P\left(w_{2} \mid w_{1}\right) \ldots P\left(w_{T} \mid w_{T-n+1}, \ldots, w_{T-1}\right)\right) \\ &=-\frac{1}{T}\left(\log P\left(w_{1}\right)+\log P\left(w_{2} \mid w_{1}\right)+\cdots+\log P\left(w_{T} \mid w_{T-n+1}, \ldots, w_{T-1}\right)\right. \\ &=-\frac{1}{T} \sum_{i=1}^{T} \log p\left(w_{i} \mid w_{i-n+1}, \ldots, w_{i-1}\right) \\ P P(s)&=e^{L} \end{aligned}

其中, T表示句子中词的个数。困惑度是句子的概率开负T分之一。

这样在得出loss的情况下,可以很方便的求出困惑度是多少,看看困惑度的情况。现在都是批次进行训练和预测的,每计算batchsize大小的个数进行一次loss的计算。

NLP中,每个句子长度不一致,为了每个batchsize中的句子长度相同,需要补pad,对pad位置求loss是与其他词一起计算,得到的loss求指数得到的不是真实的困惑度,可能偏小,所以需要将pad抵消掉。

5.1.3 回顾网络模型

  • 仅对一部分输出进行梯度传播:比如单词the、a、and等他们所包含的信息比较少,但是在语料中又频繁出现,因此这些词能不能或者少进行不进行梯度传播。

  • 引入先验知识,如词性等:比如形容词后接名词概率较大,加动词概率较小。加词性之前,先考虑这个模型本身是否会学到词性信息,如果模型本身就可以学习到词性信息,那么就不需要再加了。之后查看网络学习到的词性是否够多,可以先加上词性信息看看效果是否更好。

  • 解决一词多义问题:一个词就一个向量,那么一个向量怎么能表示多个意思呢?比如机器翻译中,可以通过上下文信息,详细可见elmo论文。

  • 加速softmax层:softmax层的神经元个数是字典V的个数,因为每个词都要输出一下概率,这样就很慢。

5.2 循环神经网络语言模型(RNNLM)

全称:Recurrent Neural Net Language Model

s(t-1)是上一个时间步的输出,w(t)是当前词向量(也是通过one-hot方式转换的)的输入。

输入层:和NNLM一样,需要将当前时间步的转化为词向量。

隐藏层:对输入和上一个时间步的隐藏输出进行全连接层操作。

s(t)=U w(t)+W s(t-1)+d

  • 对应维度:

输出层:一个全连接层,后面接一 个\operatorname{softmax} 函数来生成概率分布。

y(t)=b+V s(t)

  • 其中 y是一个1 \times V 的向量:P\left(w_{t} \mid w_{t-n+1}, \ldots, w_{t-1}\right)=\frac{\exp \left(y_{w_{t}}\right)}{\sum_{i} \exp \left(y_{i}\right)}

每个时间步预测一个词 ,在预测第n个词时使用了前n - 1个词的信息,没有使用马尔科夫假设了,基于统计的思想。<S>表示开始,第一个词。

\mathrm{Loss}: L=-\frac{1}{T} \sum_{i=1}^{T} \log p\left(w_{i} \mid w_{i-n+1}, \ldots, w_{i-1}\right)

5.3 word2vec模型

Log Linear Models定义:将语言模型的建立看成一个多分类问题,相当于线性分类器加上softmax。因为只有softmax求指数部分是非线性,但是加上log就变成了线性,所以称为log线性模型。逻辑斯蒂回归模型就是Log Linear Models。

\rm Y=softmax(wx+b)

本节讲述的skip-gram与CBOW也是Log Linear Models。

5.3.1 word2vec原理

跳字模型:

  • 语言模型基本思想:句子中下一个词的出现和前面的词是有关系的,所以可以使用前面的词预测下一个词。马尔可夫假设,比如NNLM,以及统计思想,前面所有词预测下一个,如RNNLM。

  • Word2vec基本思想:句子中相近的词之间是有联系的,比如今天后面经常出现上午、下午和晚上。所以Word2vec的基本思想就是用词来预测词skip-gram使用中心词预测周围词,cbow使用周围词预测中心词。word2vec的基本思想上就对语言模型进行了简化。

5.3.2 Skip-gram

计算过程:

skip-gram使用中心词预测周围词,什么范围内是中心词和周围词?这里选择“下午”作为中心词,窗口为2,因此p(w_{i-1}|w_i)表示用“下午”预测“我”, p(w_{i-2}|w_i)表示用“下午”预测“今天”, p(w_{i+1}|w_i)表示用“下午”预测“打”, p(w_{i+1}|w_i)表示用“下午”预测“羽毛球”。根据窗口的训练大小,这里产生四个训练样本。

如何求上图中的概率?其实语言模型中概率问题都是一个多分类问题,输入就是w_i,而标签就是w_{i-1}相当于一个词表大小的多分类问题,怎么求概率以及学习词向量?

p(w_{i-1}|w_i):用中心词w_i预测周围词w_{i-1}

输入是index,代表这个词在词表中的位置,映射成1×V的one-hot向量;W是中心词的词向量矩阵,维度为V×D,每一行表示一个词的词向量;将one-hot向量与中心词的词向量矩阵相乘得到一个词的向量;得到1×D的词向量与周围词的词向量矩阵W^*进行相乘,得到1×V的向量,这个向量在经过softmax之后,得到每个词的概率,然后使得正确词的位置上的概率越大越好。

图中W和W^*就是想训练得到的词向量,一般用W就可以,或者用\frac{(W+W*)}{2}。1×D的词向量代表的是中心词W_i的词向量, W^*是周围词的词向量矩阵,它们相乘后再做softmax,把W_{i-1}这个位置的单词取出来。 

p\left(w_{i-1} \mid w_{i}\right)=\frac{\exp \left(u_{w_{i-1}}^{T} v_{w_{i}}\right)}{\sum_{w=1}^{V} \exp \left(u_{w}^{T} v_{w_{i}}\right)}

分母:中心词向量与所有周围词向量做内积,求和。 分子:W_{i-1}的周围词向量的转置与中心词向量内积。

损失函数:

简单直观不准确解释:在词表中将中心词ants所有周围词取出,放在一个袋子里,在袋子里用手随意抓一个,这个词是car的概率。类似于共现矩阵的次数。如果要是car与ant都与同一个词有关系,二者可能存在一定的依赖关系,准确度可能会较高,所以这种解释并不准确。

求最小值:

J(\theta)=-\frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m, j \neq 0} \log p\left(w_{t+j} \mid w_{t}\right)

p(o \mid c)=\frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w=1}^{V} \exp \left(u_{w}^{T} v_{c}\right)}

  • v_{c}是中心词向量

  • u_{o}是窗口内上下文某个周围词的词向量

  • u_{o} u_{w}是窗口内上下文所有周围词的词向量

  • m是窗口大小

5.3.3 CBOW

全称:Continuous Bag-of-Words Model,词袋模型,忽略了词的顺序。

cbow使用周围词预测中心词,NNLM中将输入所有此concat连接在一起,输入较大,求和或者求平均输入与单个词向量维度相同,输入越小,模型复杂度越低。这里采用的求和。

对于中心词来说这里只有一个训练的样本。p\left(w_{i} \mid w_{i-2}, w_{i-1}, w_{i+1}, w_{i+2}\right)

输入w_{i-2}, w_{i-1}, w_{i+1}, w_{i+2}的index,转换为1×V大小的one-hot向量。

输入是index,代表这个词在词表中的位置,映射成1×V的one-hot向量;与Skip-gram相反,这里W是周围词的词向量矩阵,维度为V×D,每一行表示一个周围词的词向量;将二者相乘得到每个周围词的词向量;在经过平均或者求和方式得到1×D的向量与与中心词的词向量矩阵W^*进行相乘,得到1×V的向量,这个向量在经过softmax之后,得到每个词的概率,然后使得正确词的位置上的概率越大越好。

J(\theta)=-\frac{1}{T} \sum_{T} \sum \log P(c \mid o)=\frac{1}{T} \sum \frac{\exp \left\{u_{o}^{T} v_{c}\right\}}{\sum_{j=1}^{V} \exp \left\{u_{o}^{T} v_{j}\right\}}

  • e1, e2, e3, e4上下文词

u_{o}=\operatorname{sum}(e 1, e 2, e 3, e 4)

P(c \mid o)=\frac{\exp \left\{u_{o}^{T} v_{c}\right\}}{\sum_{j=1}^{V} \exp \left\{u_{o}^{T} v_{j}\right\}}

  • u_{o}是窗口内上下文词向量和

  • v_{c} v_{j}是中心词向量

6 关键技术

6.1 复杂度讨论

如何降低复杂度?

Softmax 对于要输出V个概率:

p(o \mid c)=\frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w=1}^{V} \exp \left(u_{w}^{T} v_{c}\right)}

U是周围词的矩阵,V是中心词的矩阵,第三个矩阵相乘相当于是一个没有激活函数也没有偏置的全连接层,全连接层额神经元个数是词表大小,因为softmax层要输出V个概率,V是特别大的,因此这个全连接层也是特别大的,那么如何降低复杂度呢?能不能将softmax的复杂度降低呢?论文中也提到了两种方法,层次softmax和负采样。

6.2 Hierarchical Softmax

将softmax转变为多个sigmoid,可以写成一个二叉树的形式。softmax需要做次指数操作,sigmoid只需要一次指数运算即可。只要转换为少于V次指数操作的sigmoid操作,就相当于进行了加速运算。

\log _{2} V层,只需计算\log _{2} V\operatorname{sigmoid}运算。

6.2.1 Skip-gram目标函数

满二叉树: 为什么层次softmax只需计算\log _{2} V个sigmoid?

\begin{aligned} &V=8 \\ &\log _{2} V=3 \end{aligned}

只需要3次就能找到。

假设词表大小是8,softmax需要做8次指数操作,如果计算sigmoid,通过8个节点的满二叉树,判断为a,需要进行3次二分类,判断为b,也需要进行3次二分类,因此,分类次数=树的深度-1。

构建Huffman树:带权重路径最短二叉树

5表示预测这个词需要做5次sigmoid,7表示预测这个词需要做7次sigmoid,边的个数表示权重,哈夫曼树将频率高的放在树的上层,少于\log_2 V次。

层次softmax构建:

每个分支节点都是一个向量,例如在skip-gram中用中心词向量与\theta_0相乘,之后进行sigmoid,如果小于零,表示往左进行查找,如果大于零,表示向右进行查找,再与\theta_1相乘,同理如果小于零,表示往左进行查找,如果大于零,表示向右进行查找,再与\theta_2相乘。之前的词向量为V个,这里的词向量个数少于V个。求I的概率:

\begin{aligned} p(\mathrm{I} \mid c) &=\sigma\left(\theta_{0}^{T} v_{c}\right) \sigma\left(\theta_{1}^{T} v_{c}\right)\left(1-\sigma\left(\theta_{2}^{T} v_{c}\right)\right) \\ &=\sigma\left(\theta_{0}^{T} v_{c}\right) \sigma\left(\theta_{1}^{T} v_{c}\right) \sigma\left(-\theta_{2}^{T} v_{c}\right) \end{aligned}

\sigma(-x)=1-\sigma(x) \iff 1-\sigma\left(\theta_{2}^{T} v_{c}\right)= \sigma\left(-\theta_{2}^{T} v_{c}\right)

\begin{aligned} 1 - \frac{1}{1+e^{-x}}= \frac{1-1-e^{-x}}{1+e^{-x}}=\frac{e^{-x}}{1+e^{-x}}=\frac{1}{1+e^{x}} \end{aligned}

  • v_{c}是中心词向量

  • \theta参数相当于上下文词(周围词)向量,约有\log V

L(w)树高度O(\log _{2} V)

 6.2.2 CBOW Hierarchical Softmax

层次softmax分类

\begin{aligned} &\begin{gathered} p(\mathrm{I} \mid c)=\sigma\left(u_{o}^{T} \theta_{0}\right) \sigma\left(u_{o}^{T} \theta_{1}\right)\left(1-\sigma\left(u_{o}^{T} \theta_{2}\right)\right) \\ =\sigma\left(u_{o}^{T} \theta_{0}\right) \sigma\left(u_{o}^{T} \theta_{1}\right) \sigma\left(-u_{o}^{T} \theta_{2}\right) \end{gathered}\\ \end{aligned}

  • u_{o}是窗口内上下文词向量avg

  • \sigma(-x)=1-\sigma(x)

之前的skip-gram与CBOW都是最终词向量可以是中心词向量与周围词向量的相加或者平均,但是在层次softmax中只有一组词向量,因为\theta个数少于V个,其具体含义并不明确,比如\theta_0可能表示一簇词类别的意义。

6.3 Negative Sample(应用较多)

在效果与效率上,负采样(Negative Sample)均好于层次softmax。

舍弃多分类,提升速度,将多分类变为二分类。二分类需要正样本与负样本,一个中心词与周围词在一起是正样本,例如图中的jump over,在skip-gram里,中心词+词表任意一词作为负样本,例如图中的jumps again,负样本可能正好选择了中心词与其周围词,但词表非常大,可能性非常小,可忽略不计。

基本思想:增大正样本概率,减小负样本概率。

对于每个词,一次要输出1个正样本的概率,注意不能只选择一个负样本,否则会有偏差,因为正样本是真实的,负样本是采样出来的,一般选择3-10个之间负样本。假如选择K个负样本,则输出K个负样本概率,总共K+1个概率,K<<V并且效果比多分类要好。这里还是需要每个词的上下文词向量,矩阵维度为(V, D),总的参数比HS(层次softmax)多(每次计算量不多,层次softmax需要\log_2 V个概率,这里仅需要K+1个)。

损失函数:

{J_{neg-sample}}(\theta)=-\left(\underbrace{\log \sigma\left(u_{o}^{T} v_{c}\right)}_{P(o|c)}+\underbrace{\sum_{k=1}^{K} E_{k \sim P(w)}\left[\log \sigma\left(-u_{k}^{T} v_{c}\right)\right]}_{1-P(j|c)}\right)

  • v_{c}是中心词向量

  • u_{o}是窗口内上下文词向量

  • u_{k}是负采样上下文词向量

6.3.1 如何采样?

 减少频率大的词的抽样概率,增加频率小的词的抽样概率。因为一些不重要的词出现的概率较大,比如the,a等,重要的词出现的概率较大。可以加速训练,得到更好的效果。

6.3.2 CBOW Negative Sampling

同理,二分类需要正样本与负样本,所有周围词的词向量的平均与真正的中心词在一起是正样本,所有周围词的词向量的平均与随机采样的词组合在一起是负样本。

损失函数与上述相同:

 6.4 高频词重采样(Subsampling of Frequent Words)

自然语言处理共识:文档或者数据集中出现频率高的词往往携带信息较少,比如the,is,a,and,而出现频率低的词往往携带信息多

什么青蛙

  • 什么是深度学习,什么是CNN,什么是RNN,这篇告诉你。

  • 青蛙(Frog)属于脊索动物门、两栖纲、无尾目、蛙科的两栖类动物,成体无尾,卵产于水中。

重采样的原因:

  • 想更多地训练重要的词对,比如训练“France”和“Paris”之间的关系比训练“France”和“the”之间的关系要有用。

  • 高频词很快就训练好了,而低频次需要更多的轮次。

重采样方法:

 优点:加速训练,能够得到更好的词向量。

7 模型复杂度

7.1 模型复杂度的概念

模型的复杂度也就是时间上的复杂度:

7.2 基于前馈网络的语言模型的时间复杂度

NNLM通过前面N个词,预测第N+1个词:

\left.\begin{aligned} &y=U \tanh (d+\mathrm{W} x) \\ &y=\left[y_{1}, x_{2}, \ldots, y_{V}\right] \\ &x=\left[x_{1}, x_{2}, x_{3}, x_{4}\right] \end{aligned}\right\} \xrightarrow{softmax} p\left(x_{i} \mid x_{i-1}, \ldots, x_{i-\mathrm{N}}\right)=\frac{e^{y_{i}}}{\sum_{j=1}^{V} e^{y_j}}

 模型复杂度:

Q=V * H+N * D * H+N * D

Bengio A neural probabilistic language mode/(2003)

7.3 基于循环神经网络的语言模型的时间复杂度

\left.\begin{aligned} &s(t)=U w(t)+Ws(t-1) \\ &y(t) = Vs(t)\\ &y=\left[y_{1}, x_{2}, \ldots, y_{V}\right] \end{aligned}\right\} \xrightarrow{softmax} p\left(x_{i} \mid x_{i-N}, \ldots, x_{i-\mathrm{1}}\right)=\frac{e^{y_{i}}}{\sum_{j=1}^{V} e^{y_j}}

RNNLM模型复杂度:

 7.4 Skip-gram复杂度

7.4.1 Hierarchical Softmax 复杂度

7.4.2 Negative Sampling 复杂度

Q=C(D +D*V) \xrightarrow{softmax} Q=C(D+D*(K+1))

对于每一个中心词来说,有一个正样本和K个负样本,每个都会变成一个D维的词向量,便得到上图中第二个公式。

7.5 CBOW 复杂度

CBOW 复杂度:Q=N*D+D*V

 注意:上述是每一次计算所需的参数。

7.6 模型复杂度对比

 从理论分析:层次softmax与负采样速度均快于前馈神经网络与循环神经网络,CBOW速度快于Skip-Gram,负采样速度快于层次softmax。

8 实验结果分析

8.1 任务描述

任务是一个词对推理的任务,下图中前五个是语义类,后九个是语法类。

语法类数据易收集,语义类数据难收集。

关系类型翻译
capital-common-countries常见国家首都
capital-world各国首都
currency货币
city-in-state州-城市
family家庭关系
gram1-adjective-to-adverb形容词-副词
gram2-opposite反义词
gram3-comparative比较级
gram4-superlative最高级
gram5-present-participle现在进行式
gram6-nationality-adjective国家的形容词
gram7-past-tense过去式
gram8-plural复数
gram9-plural-verb第三人称单数

Word2vec程序中 questions-words.txt:

// Copyright 2013 Google Inc. All Rights Reserved.
: capital-common-countries
Athens Greece Baghdad Iraq
Athens Greece Bangkok Thailand
Athens Greece Beijing China
Athens Greece Berlin Germany
Athens Greece Bern Switzerland
Athens Greece Cairo Egypt
Athens Greece Canberra Australia
Athens Greece Hanoi Vietnam
Athens Greece Havana Cuba
Athens Greece Helsinki Finland
...

8.2 最大化正确率(优化参数)

用小数据集调参,选择最好的参数,参数包括维度、训练的数据量,是2个需要寻找的参数。

随着维度的增加(纵轴),随着数据集的扩大(横轴),效果基本上是越来越好的。

8.3 模型比较

MSR Word Relatedness测试集大部分都是语法数据。RNNLM和NNLM都在语义上(Syntactic Accuracy)表现的比较好,在语法上(Semantic Accuracy)表现的比较差,CBOW也是,而skip-gram在语法和语义上都表现的比较好。

RNNLM单机用了8周,NNLM计算量更大。

RNN相对在语法问题上较好,NNLM效果更好,CBOW更好。

Skip-gram更平衡,在语义问题上效果好。

LDC corpora 320M words,82K

和其他人开源的词向量比较:

Our NNLM使用了层次softmax进行了加速。

3 epoch CBOW(36.1) < 1 epoch skip-gram(49.2) 3 epoch 300dim < 1 epoch 600d

8.4 大规模并行模型训练

Large Scale Parallel Training of Model

8.5 微软研究院句子完成比赛

类似完形填空,一句话盖住一个词,给出5个预测结果。

skip-gram只统计了周围词,没有用到词与词之间的关系,所以可以联合语言模型RNNLM进行训练。

8.6 HS和NEG比较

NCE:其他负采样方法。

下方表格为使用了重采样,可以发现速度大大提升了。

例子:学习到的关系

使用十个关系词对做平均可以将偏差抵消掉。

out-of-the-list words:不符合当前分类的词。

9 讨论和总结

讨论论文中存在的问题,总结本阶段所学内容。

9.1 讨论

超参数选择:请问,利用gensim做word2vec的时候,词向量的维度和单词数目有没有一个比较好的对照范围呢?

dim一般在100-500之间选择,初始值词典大小V的1/4次方,例如V=10K,dim=100。min_count一般在2-10之间选择,min_count表示词在语料中出现的最小次数,小于该次数的词进行舍弃,决定了词表大小。

gridsearch

9.2 总结

论文主要创新点: 1、提出一种新的结构:这个结构是使用词预测词,而不是用前面的一系列词来预测词,简化了结构。也提出了层次softmax和负采样,大大减少了计算量,从而可以使用更高的维度,更大的数据集。 2、利用分布式训练框架:在大数据上训练,从而达到更好的效果。 3、提出了新的词相似度任务:Analogy词类别。

关键点:

  1. 更简单的预测模型 —— word2vec

  2. 更快的分类方案 —— HS和NEG

创新点:

  1. 使用词对的预测来替换语言模型的预测

  2. 使用HS和NEG降低分类复杂度

  3. 使用subsampling加速训练

  4. 新的词对推理数据集来客观评估词向量的质量

启发点:

1、大数据集上的简单模型往往强于小数据集上的复杂模型 simple models trained on huge amounts of data outperform complex systems trained on less data.(1 Introduction p1)

2、King的词向量减去Man的词向量加上Woman的词向量和Queen的词向量最接近 vector(”King”) - vector(”Man”) + vector(”Woman”) results in a vector that is closest to the vector representation of the word Queen (1.1 Goals of the Paper p3) 说明了word2vec可以很好的学习词对之间的代数关系,在神经网络中都是数与数之间的计算,如果可以学习到词向量之间的代数关系,则词向量也非常使用于神经网络。

3、我们决定设计简单的模型来训练词向量,虽然简单的模型无法像神经网络那么准确地表示数据,但是可以在更多地数据上更快地训练 we decided to explore simpler models that might not be able to represent the data as precisely as neural networks, but can possibly be trained on much more data efficiently (3 New Log-linear Models p1)

4、我们相信在更大的数据集上使用更大的词向量维度能够训练得到更好的词向量。 We believe that word vectors trained on even larger data sets with larger dimensionality will perform significantly better(5 Examples of the Learned Relationshops p1)

关注下方《学姐带你玩AI》🚀🚀🚀

论文资料+比赛方案+AI干货all in

码字不易,欢迎大家点赞评论收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/17155.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python使用AI photo2cartoon制作属于你的漫画头像

Python使用AI photo2cartoon制作属于你的漫画头像 1. 效果图2. 原理3. 源码参考 git clone https://github.com/minivision-ai/photo2cartoon.git cd ./photo2cartoon python test.py --photo_path images/photo_test.jpg --save_path images/cartoon_result.png1. 效果图 官方…

(22)目标检测算法之 yolov8模型导出总结

yolov8模型导出总结 不断更新中… 几种部署情况: onnxxmlengine官网说明:https://github.com/ultralytics/ultralytics/blob/main/docs/modes/export.md导出参数: onnx 参数解析format: 导出的模型形式:onnx xml engine ... imgsz: 设置模型的输入尺寸大小,默认640*640 ke…

磁盘和固态磁盘

磁盘和固态磁盘 磁盘的物理结构 ​ 磁盘的表面由一些磁性的物质组成&#xff0c;可以用这些磁性物质来记录二进制数据。磁盘的盘面被划分成一个个磁道&#xff0c;这样一个“圈”就是一个磁道。同一磁盘上不同磁道上记录的信息量相同&#xff0c;因此内侧磁道上的数据密度较大…

STM32F429移植microPython笔记

目录 一、microPython下载。二、安装开发环境。三、编译开发板源码。四、下载验证。 一、microPython下载。 https://micropython.org/download/官网 下载后放在linux中。 解压命令&#xff1a; tar -xvf micropython-1.19.1.tar.xz 二、安装开发环境。 sudo apt-get inst…

【Java笔试强训 14】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;计算日期…

玩着3dmax把Python学了-01

3ds Max 2022以前的版本要借助Python的api来实现Python编程达到编辑绘图脚本的功能&#xff0c;但是好消息来了&#xff0c;3ds Max 2022 起&#xff0c;MaxPlus 不再作为 3ds Max 的 Python API 包含在内。而是3ds Max 将 Python 3.7 的标准版本包涵其中了&#xff0c;位于 [3…

Filter 过滤器

Filter过滤器介绍 这里我们讲解Filter的执行流程&#xff0c;从下图可以大致了解到&#xff0c;当客户端发送请求的时候&#xff0c;会经过过滤器&#xff0c;然后才能到我们的servlet&#xff0c;当我们的servlet处理完请求之后&#xff0c;我们的response还是先经过过滤器才…

基于SpringBoot的线上日志阅读器

软件特点 部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式&#xff0c;支持大文件的读取。支持实时打印新增的日志&#xff08;类终端&#xff09;。支持日志搜索。 使用手册 基本页面 配置路径 配置日志所在的目录&#xff0c;配置后按回车…

2023亚马逊云科技研究,数字化技能为中国企业和员工带来经济效益

在中国&#xff0c;信息技术在个人、企业和宏观经济层面都推动着重大变革。为了研究这些变化所带来的影响&#xff0c;盖洛普咨询公司(Gallup)和亚马逊云科技开展了关于数字化技能的调研。 研究表明&#xff0c;数字化技能正在为中国企业和在职人员带来巨大的经济价值&#x…

一文带你入门C++类和对象【十万字详解,一篇足够了】

本文字数较多&#xff0c;建议电脑端访问。不多废话&#xff0c;正文开始 文章目录 ———————————————【类和对象 筑基篇】 ———————————————一、前言二、面向过程与面向对象三、结构体与类1、C中结构体的变化2、C中结构体的具体使用3、结构体 --&…

程序环境和预处理

目录 一 程序的翻译环境和执行环境 二 详解编译链接 2.1 翻译环境 2.2 编译本身也分为几个阶段 2.3 运行环境 三 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define定义宏 3.2.3 #define 替换规则 3.2.4 #和## 3.2.5 带副作用的宏参…

告别被拒,如何提升iOS审核通过率(上篇)

iOS审核一直是每款移动产品上架苹果商店时面对的一座大山&#xff0c;每次提审都像是一次漫长而又悲壮的旅行&#xff0c;经常被苹果拒之门外&#xff0c;无比煎熬。那么问题来了&#xff0c;我们有没有什么办法准确把握苹果审核准则&#xff0c;从而提升审核的通过率呢&#x…

Centos7快速安装Kibana并连接ES使用

Elasticsearch 提供了一个名为 Kibana 的官方可视化界面。Kibana 是一个开源的数据可视化和管理工具&#xff0c;用于 Elasticsearch。它提供了丰富的功能&#xff0c;如仪表板、图表、地图等&#xff0c;帮助您更好地理解、搜索和可视化存储在 Elasticsearch 中的数据。 在 C…

【软考备战·希赛网每日一练】2023年5月5日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源&#xff1a;2023年05月05日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 有返回消息的就是同步消息&#xff1b;不需要等待返回消息就可以去做其他事情的请求消息就是异步消息…

从零基础到网络安全专家:全网最全的网络安全学习路线

前言 网络安全知识体系非常广泛&#xff0c;涉及的领域也非常复杂&#xff0c;有时候即使有想法和热情&#xff0c;也不知道从何入手。 为了帮助那些想要进入网络安全行业的小伙伴们更快、更系统地学习网络安全知识&#xff0c;我制定了这份学习路线。本路线覆盖了网络安全的…

网络协议与攻击模拟-03-ARP协议

ARP 协议&#xff08;地址解析协议&#xff09; 一、 ARP 协议 将一个已知的 IP 地址解析为 MAC 地址&#xff0c;从而进行二层数据交互 是一个三层的协议&#xff0c;但是工作在二层&#xff0c;是一个2.5层协议 二、工作流程 1、两个阶段 ARP 请求 ARP 相应 2、 ARP 协议…

Java 基础入门篇(三)—— 数组的定义与内存分配

文章目录 一、数组的定义1.1 静态初始化数组1.2 动态初始化数组1.3 数组的访问 二、数组的遍历三、数组的内存图 ★3.1 Java 的内存分配3.2 数组的内存图3.3 两个数组变量指向同一个数组对象 四、数组使用的常见问题补充&#xff1a;随机数 Random 类 一、数组的定义 数组就是…

黑盒测试过程中【测试方法】详解2-正交实验

在黑盒测试过程中&#xff0c;有9种常用的方法&#xff1a;1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 前面我们已经讲解过了等价类划分、边界值、判定表。 可以参考我之前的文章&#xff…

MySQL 常用命令

#--------------------------- #----cmd命令行连接MySql--------- cd C:\Program Files\MySQL\MySQL Server 5.5\bin # 启动mysql服务器 net start mysql # 关闭mysql服务器 net stop mysql # 进入mysql命令行 mysql -h localhost -u root -p 或mysql -u root -p #---------…

SPSS如何进行回归分析之案例实训?

文章目录 0.引言1.线性回归分析2.曲线回归分析3.非线性回归分析4.Logistic回归分析5.有序回归分析6.概率回归分析7.加权回归分析 0.引言 因科研等多场景需要进行数据统计分析&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合…