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

news2024/11/25 12:43:47

来源:投稿 作者:阿克西

编辑:学姐

前篇: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.coloradmin.cn/o/480525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

锐捷(十七)锐捷单臂路由的配置

一 实验拓扑 二 实验需求 用单臂路由实现不同vlan间的通信&#xff0c;即要求vlan10的主机和vlan20的主机之间通过三层实现互访 三 实验分析 路由器的物理接口可以被划分成多个逻辑接口&#xff0c;这些被划分后的逻辑接口被形象的称为子接口。值得注意的是这些逻辑子接口不能…

Redis高级——键值对设计

1、Redis键值设计 1.1、优雅的key结构 Redis的Key虽然可以自定义&#xff0c;但最好遵循下面的几个最佳实践约定&#xff1a; 遵循基本格式&#xff1a;[业务名称]:[数据名]:[id]长度不超过44字节不包含特殊字符 例如&#xff1a;我们的登录业务&#xff0c;保存用户信息&a…

AIGC迈向通用人工智能时代

一、AIGC“起飞”的背后 2023年1月30日&#xff0c;AIGC概念股突飞猛涨。一时间&#xff0c;AIGC再次站上风口浪尖。 AIGC&#xff08;AI Generated Content&#xff09;是指利用人工智能技术来生成内容&#xff0c;被认为是继UGC、PGC之后的新型内容生产方式&#xff0c;常见…

哈希的应用 -- 布隆过滤器与海量数据处理

文章目录 布隆过滤器概念布隆过滤器设计思路布隆过滤器的应用布隆过滤器模拟实现布隆过滤器的基本框架布隆过滤器的插入布隆过滤器的探测布隆过滤器的删除 布隆过滤器优点布隆过滤器缺陷布隆过滤器模拟实现代码及测试代码海量数据处理哈希切割哈希切分 布隆过滤器概念 布隆过滤…

【机器学习】HOG+SVM实现行人检测

文章目录 一、准备工作1. 下载数据集2. 解压数据集 二、HOG特征简介1. 梯度&#xff08;Gradient&#xff09;2. 格子&#xff08;Cell&#xff09;3. 块归一化&#xff08;Block Normalization&#xff09;4. HOG特征&#xff08;HOG Feature&#xff09;5. 使用skimage.featu…

“五一”假期消防安全知识要牢记之消防安全知识答题活动

“五一”期间&#xff0c;容易出现哪些安全隐患&#xff0c;生产生活中要注意哪些安全事项&#xff0c;一起来看&#xff01; 森林防火&#xff1a; 1.禁止将火柴、汽油等易燃物带入山林&#xff0c;禁止乱扔火种。 2.景区管理单位要加强防火巡逻&#xff0c;禁止野外火源&am…

smbms项目搭建

目录 1.搭建一个maven web项目 2.配置Tomcat 3.测试项目是否能够跑起来 4.导入项目中会遇到的Jar包 5.项目结构搭建 6.项目实体类搭建 7.编写基础公共类 1.数据库配置文件 2.编写数据库的公共类 3.编写字符编码过滤器 3.1web配置注册 4.导入静态资源 1.搭建一个maven web项目 …

C++前置声明的理解

知识补充 在C/C中引入一个头文件时&#xff0c;在编译器预处理的时候会将引入头文件的地方简单替换成头文件的内容。这样做的后果是很容易引起头文件的重复引用。所以我们在编写头文件是一般有以下规定来防止头文件被重复包含。 MyWidget.h #ifndef MyWidget_H_ #define MyWi…

实验四、彩色图像处理

实验目的 使用MatLab软件对图像进行彩色处理&#xff0c;熟悉使用MatLab软件进行图像彩色处理的有关方法&#xff0c;并体会到图像彩色处理技术以及对图像处理的效果。 作业1&#xff1a;生成一副256*256的RGB图像&#xff0c;使得该图像左上角为黄色或者青色&#xff0c;左下…

day04_基本数据类型丶变量丶类型转换

前置知识 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制&#xff0c;是人为定义的带进位的计数方法 。不同的进制可以按照一定的规则进行转换。 进制的分类 十进制&#x…

Seurat -- Perform linear dimensional reduction

brief 什么是线性降维&#xff1f; 这里是一个很形象的网页演示&#xff0c;其中包括了一个视频链接。 这里是如何用R 包psych做线性降维的演示&#xff0c;其中也有原理的简述。 为什么要做线性降维&#xff1f; 因为下一步的聚类分析需要这里的降维结果作为输入。降维做的好…

14-3-进程间通信-消息队列

前面提到的管道pipe和fifo是半双工的&#xff0c;在某些场景不能发挥作用&#xff1b; 接下来描述的是消息队列&#xff08;一种全双工的通信方式&#xff09;&#xff1b; 比如消息队列可以实现两个进程互发消息&#xff08;不像管道&#xff0c;只能1个进程发消息&#xff…

vulnhub靶机Misdirection

环境准备 下载链接&#xff1a;https://download.vulnhub.com/misdirection/Misdirection.zip 解压后双击ovf文件导入虚拟机 网络&#xff1a;DHCP、NAT、192.168.100.0/24网段 信息收集 主机发现 192.168.100.133是新增的ip 端口扫描 发现开放了以上端口&#xff0c;继续…

【Java笔试强训 28】

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

【Python入门】Python搭建编程环境-安装Python3解释器(内含Windows版本、MacOS版本、Linux版本)

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…

与其焦虑被 AI 取代或猜测前端是否已死, 不如看看 vertical-align 扎实你的基础!!!

与其焦虑被 AI 取代或猜测前端是否已死, 不如看看 vertical-align 扎实你的基础!!! vertical-align 设置 display 值为 inline, inline-block 和 table-cell 的元素竖直对齐方式. 从 line-height: normal 究竟是多高说起 我们先来看一段代码, 分析一下为什么第二行的行高, 也就…

D. Mysterious Crime(单个位置贡献)

Problem - D - Codeforces Acingel是一个小镇。这里只有一位医生——Miss Ada。她非常友善&#xff0c;没有人曾经对她说过坏话&#xff0c;所以谁能想到Ada会在她的房子里被发现死亡&#xff1f;世界著名侦探Gawry先生被任命查找罪犯。他询问Ada的邻居关于那个不幸的日子里拜访…

Java回收垃圾的基本过程与常用算法

目录 一、基本概述 二、垃圾分类 基本背景 举例说明各种引用类型的作用 强引用&#xff08;Strong Reference&#xff09; 软引用&#xff08;Soft Reference&#xff09; 弱引用&#xff08;Weak Reference&#xff09; 虚引用&#xff08;Phantom Reference&#xff…

广搜的优化技巧(备赛中)

A.电路维修 这道题我们对于每一个点都有四个方向&#xff0c;分别为 char op[]{"\\/\\/"}; 如果我们当前点到下一个点的方向不是对应的方向时我们的distance就加1&#xff0c;因为我们要求最优距离&#xff0c;所以我们采取一个小贪心的法则&#xff0c;每一次我们将…

「神州数码DCN」SAVI在IPV6环境下的应用

前言 介绍 ISIS&#xff0c;中间系统到中间系统的网络协议&#xff0c;最初是OSI组织为了他的CLNP&#xff08;类似于TCP/IP中的IP网络&#xff09;而设计的动态路由协议&#xff0c;后IETF对其进行修改和填充&#xff0c;现可以在TCP/IP和OSI环境中使用&#xff0c;称为&…