Word embedding

Word embedding

视频链接

Word embedding:词向量

dimension reduction:维数缩减

Word embedding 其实是 dimension reduction一个非常好、非常广为人知的应用。

如果我们今天要你用一个vector 来表示一个Word,你会怎么做呢?

最经典的做法叫做 1-of-N encoding

image-20210428204552738

每个word 对应的vector都不一样,但是从这个vector里面,你没有办法得到任何咨询。

比如说 cat 和 dog 都是动物这件事。

那怎么办呢?

有一个方法叫做建 Word class

把同样性质的Word cluster 成一群一群的,但class之间的关联没法表示

所以我们需要Word embedding(下图右上角)

Word embedding:把每一个word都project到一个high dimensional 的space 上面。

在Word embedding上,我们可以看到的是 类似词义的词汇,在这个图上是比较接近的。而且每一个dimension,可能都有它特别的含义。

image-20210428204934277

比如说上图的横轴可能代表了生物与其他东西直接的差别,纵轴可能代表的跟动作有关的东西(动物会动)

那怎么做Word Embedding 呢?

Word Embedding 是一个unsupervised approach,也就是我们让machine知道每一个词汇的含义,是什么呢?

你只要让machine通过阅读大量的文章,它就可以知道每一个词汇它的embedding 的feature vector 应该长什么样子

我们要做的就是要learn 一个neural network 找一个function ,input是一个词汇,output就是那一个词汇所对应的Word Embedding的那一个vector。

而我们手上有点training data就是一大堆文字,这个问题是没办法用auto-encoder来解的。

那要怎么做呢?

image-20210801093147339

它基本的精神就是你要了解一个词汇的含义,可以通过看词汇的contest,每一个词汇的含义可以通过上下文来得到。

那怎么用这个思想来找出Word Embedding 的vector 呢?

有两个不同体系的做法 Count based VS Predition based

Count based

image-20210801093533306

如果两个词常常一起出现,V(w)会比较接近

我们希望V(wi)V(wj)的inner productwi wj 在同一文章出现的次数 这两件事越接近越好。

Prediction-based

它的想法是learn 一个neural network,它做的事情的prediction,predict什么呢?

这个neural network做的事情是given前一个word,predict下一个可能出现的Word是谁。

image-20210801095113086

对于每个Word 我们动用 1-of-N encoding 可以把它表示成一个feature vector

所以如果我们要做prediction ,就是learn 一个neural network ,input就是w(i-1) 1-of-N encoding 的feature vector,output急速下一个Word (wi) 是某一个Word的几率。 这个model 的output的dimension就是vector 的size。

假设现在世界上有10万个Word 这个model的output就是10万维的,每一维代表l某一个Word是下一个word的几率。

接下来,我们把第一个hidden layer的input拿出来,假设第一个dimension是z1…

你input同一个词汇它有同样的1-of-N encoding在这边它的z就会一样,所以我们一共这个input 1-of-N encoding得到的Z的这个vector就可以来当做那一个Word的Embedding。

为什么用Prediction-based 的方法就可以得到这样的vector呢?

Prediction-based 是怎么根据上下文来了解一个词汇的含义呢?

image-20210801100055648

假设我们Training data里面

有一个文章是 蔡英文(wi-1)宣誓就职(wi

另一个文章是马英九(wi-1) 宣誓就职(wi

你在训练Prediction model 的时候,不管是蔡英文,还是马英九 你都希望learn处理的结果是“宣誓就职”的几率比较大

所以,你会希望说input 马英九 和蔡英文的时候,它output对应到“宣誓就职”那一个词汇,它的dimension 的几率是高的。

为了要让不同的input 得到一样的output ,必须要让中间的hidden layer 把这两个不同的input,project 到同样的接近的空间

如果只有(wi-1)去predict(wi)好像觉得太弱了,就算是人,你给一个词汇,去predict下一个词汇感觉也很难,下一个词汇的可能性是千千万万的,那怎么办呢?

你可以轻易把这个model 拓展到N个词汇,一般我们,如果你真的要learn这样的Word vector的话,可能你的input 通常是至少10个词汇这样才能learn出比较reasonable 的结果。

image-20210801102746390

image-20210801102829270

需要注意的是==(wi-2)的第一个dimension 跟第一个hidden layer的第一个neuron连接的weight== 和==(wi-1)的第一个dimension 跟第一个hidden layer的第一个neuron连接的weight== 必须是一样的。

如果我们不这么做,你把同一个Word放在(wi-2)的位置很放在(wi-1)的位置通过这个transform以后他得到的Embedding就会不一样。

还有一个好处是减少参数。

在实做上,怎么样才能让W1 跟W2 他们的weight 都一样呢?

事实上,我们在train CNN的时候也有同样的问题,我们也要让某一些参数,他们的weight必须是一样的

那怎么做呢?

image-20210801104310749

首先要给wi 和 wj 一样的 initialization,训练的时候给他们一样的初始值

然后在更新参数的时候减去对方更新的项,这样就能保持一致了。

Prediction based 还有其它的变形:

image-20210801105936528

CBOW:我们拿某一个词汇的context 去predict中间这个词汇

Skip-gram:拿wi去predict wi-1 跟wi+1

注意:这个neural network不是deep的,只是一个hidden layer

Word Embedding会得到一些有趣的特性
image-20210801111848512

image-20210801111904071

如果B 是属于A的, 那 A-B的结果是会跟类似的。

所以利用这个特性,我们可以做一些简单的推论:

image-20210801112222115

图像上的应用:

image-20210801112505201

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与 或

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值