李宏毅机器学习(十九)无监督学习Word Embedding

Word Embedding词嵌入向量

我们对于不同的分类,常常使用的就是1-of-N Encoding(或者叫One-hot编码),每个元素只能有一维上是1,其余是0,这样就可能反应不出来每个分类之间的关系,我们就会想把这些词语进行分类,比如第一类是动物,第二类是动作,第三类是植物,我们又进一步将其投影到高维空间(这个高维其实是比种类N低得多),就期望同类的会比较聚集在一起,而坐标轴又反应一定关系,比如左侧就不是生物,右侧就是生物

李宏毅机器学习(十九)无监督学习Word Embedding_第1张图片
插图1

我们Word Embedding具体是怎么做的呢,给出词汇自动将其分类,我们通常做法是让计算机阅读大量文章学习

李宏毅机器学习(十九)无监督学习Word Embedding_第2张图片
插图2

我们生成词向量的过程是无监督学习的,因为我们并不知道给一个单词,他需要输出的结果,我们之前讲过auto-encoder,它是否能做词嵌入向量呢,其实是不行的,因为编码都是使各维度间是独立的,我们并不能学到比较好的效果。

李宏毅机器学习(十九)无监督学习Word Embedding_第3张图片
插图3

我们词嵌入向量首先就是需要计算机学习到大量文档,然后一个词需要通过上下文的理解来决定,比如计算机看到多次马英九520宣誓就职,蔡英文520宣誓就职,计算机就会考虑马英九蔡英文是比较接近的东西,虽然不一定将他们按人分类

李宏毅机器学习(十九)无监督学习Word Embedding_第4张图片
插图4

我们怎么去挖掘上下文呢,我们有2种方法,一种是Count based,另一种是Prediction based

Count based我们是如果wi,wj经常一起出现,我们就设计向量V(wi),V(wj)使他们的内积趋近于Nij(他们共同出现在一个文本的次数),具体介绍见网址

李宏毅机器学习(十九)无监督学习Word Embedding_第5张图片
插图5

我们基于Prediction based是怎么做的呢,我们输入一个词,我们就会假设下一个词会是什么,例如我们将词(one-hot编码后)输入网络,网络输出是每个词出现的几率,当我们把模型训练好后,我们就会发现第一个隐层激活函数前z,我们把他考虑成一个词汇的话,就会有如右下图的分类效果,好像程序就理解了每个词的含义

李宏毅机器学习(十九)无监督学习Word Embedding_第6张图片
插图6

我们举个例子,比如我们从文章学到某句是蔡英文宣誓就职,另一句是马英九宣誓就职,我们的神经网络输入就会想让输入蔡英文或马英九,他们的几率应该是差不多的,因此他们经过了第一层的隐层的时候,只有他们计算出的z比较接近,才有可能实现输出相同的几率,所以我们模型训练出来后,取第一层隐层就会有分类效果

李宏毅机器学习(十九)无监督学习Word Embedding_第7张图片
插图7

也许有人说我们输入马英九或者蔡英文就输出宣誓就职可能有点太夸张了,是不是多几个词语再决定比较好,以2个词语输入为例,但是这里我们就会有要求,第一个词语连结第一个神经元的权重和第二个词语连结第一个神经元的权重一样,依次继续,这是为什么呢,第一个是能减少参数,第二个是我们希望当w1出现在w2的位置上,我们也会有相同的输出。

李宏毅机器学习(十九)无监督学习Word Embedding_第8张图片
插图8

我们假设x1,x2都是V个维度的one-hot编码,z就是其线性组合,我们考虑w1=w2=w,所以右侧就能合并

李宏毅机器学习(十九)无监督学习Word Embedding_第9张图片
插图9

我们怎么实现2个权重相同呢,其实这跟我们之前说的CNN原理一样,我们将wi,wj一样的初始值,然后每次处理梯度时,减去2者的偏导和学习率,最后我们wi,wj就能保证始终一样

李宏毅机器学习(十九)无监督学习Word Embedding_第10张图片
插图10

我们怎么训练呢,这是种无监督学习,我们先通过收集大量文本,比如我们想创造语句“潮水退了就知道谁没穿裤子”,我们输入潮水,退了给神经网络,希望输出在‘就’(也是one-hot编码)上交叉熵最大,同理依次获得下一个词汇

李宏毅机器学习(十九)无监督学习Word Embedding_第11张图片
插图11

我们做prediction-based有很多种方法,一种是CBOW模型,我们已知去预测,

另一种是Skip-gram模型,我们已知,去预测,课上老师讲了个大神用了一个隐层实现了词语预测,而非深度神经网络,当然老师说其工程能力很强,做出的模型至今没有人超越,听上去屌屌的

李宏毅机器学习(十九)无监督学习Word Embedding_第12张图片
插图12

我们使用word embedding就会发现一些词汇之间的关系,比如国家和首都组成的关系,又比如动词和其时态的关系

李宏毅机器学习(十九)无监督学习Word Embedding_第13张图片
插图13

有人发现如果我们把2个word vector相减(其中一个是另一个的子类),其2维平面投影就会比较接近

李宏毅机器学习(十九)无监督学习Word Embedding_第14张图片
插图14

我们于是就有了如下hotter-hot≈bigger-big,比如说我们说罗马之于意大利就如柏林之于?(德国),我们就会去计算德国的向量-罗马向量+意大利向量,得到的向量找到最接近的,很可能就是德国

李宏毅机器学习(十九)无监督学习Word Embedding_第15张图片
插图15

也有人做过,把英文文章和中文文章(没有直接关系)大量训练统计,我们使知道意义的词汇尽量接近,最后就能实现不知道含义的英文旁边的中文恰好就是他的翻译,就实现了翻译功能

李宏毅机器学习(十九)无监督学习Word Embedding_第16张图片
插图16

word-embedding不仅可以处理文本,还可以用于影像识别,比如我们建立模型,使其分散到对应得单词附近,这样我们输入一个图片,如果是靠近dog的周围,那它就是狗.。我们做个模型训练图片分类,但是如果一个图片的分类没有出现在训练的模型里,就可能误分类,但是我们通过word-embedding已经让机器训练了cat,这样一张猫的图片就靠近cat,就会实现识别是个猫

李宏毅机器学习(十九)无监督学习Word Embedding_第17张图片
插图17

我们不光可以做词语分类还可以做文档分类,比如我们将一个文档通过bag-of-word收集单词

李宏毅机器学习(十九)无监督学习Word Embedding_第18张图片
插图18

我们这么做常常是不够的,比如下图2个语句bag of word完全一样,但是他们的词语顺序不一样导致表达的意思不一样

李宏毅机器学习(十九)无监督学习Word Embedding_第19张图片
插图19

老师列举了一些方法的文档(又是需要自己查阅),前3个是无监督的,后面的是有监督的

李宏毅机器学习(十九)无监督学习Word Embedding_第20张图片
插图20

你可能感兴趣的:(李宏毅机器学习(十九)无监督学习Word Embedding)