终于有人把Embedding讲明白了

导读:如果要总结深度学习大获成功的原因,那至少有两样东西必须入选:一样当然是很“深”的神经网络模型,这也是深度学习的“深度”的由来,另一样就是Embedding。

在深度学习中,Embedding是个很重要的概念,甚至可以说,如果要总结深度学习大获成功的原因,那至少有两样东西必须入选:一样当然是很“深”的神经网络模型,这也是深度学习的“深度”的由来,另一样就是这个Embedding。

所以我非常期待,Embedding的专著当然有必要读一读。可是,为什么市面上专门写Embedding的书这么稀缺呢?我想,这是因为要清楚介绍Embedding,刚动笔就会遇到一个很大的问题。

我们说深度学习模型效果拔群,但是缺点和优点同样突出:坏就坏在可解释性差。很多地方光知道用深度学习模型就能效果拔群,但很难解释为什么拔群,这就是深度学习一直深受学术界诟病的黑箱问题。要害部门不敢用深度学习,就是因为在原理上说不清楚。

那Embedding有什么问题呢?Embedding的问题是让黑箱问题雪上加霜。

对深度学习来说,Embedding很像一种催化剂,在两个方面将深度学习推向极致:效果更好,但同时也更为解释不清。我自问没有作者这般的本事,更不可能用一篇小文就说清楚Embedding是什么,不过我想,经验我还是有一些的,可以把来龙去脉给大家捋一捋,也许能有助于理解。

01

词嵌入

Embedding是英文,这是废话,但它的准确中译应该是什么呢?Embedding直译为“嵌入”,但是它的应用领域很广,直接叫“嵌入”会很拗口,而且意思也不清楚,容易让人摸不着头脑。倒是在Embedding的龙兴之地NLP(自然语言处理),让Embedding经过积年累月,终于固定了一个中译名称,叫词嵌入。

词嵌入也是个非常重要的概念,特别是在NLP领域。了解深度学习的同学应该已经很熟悉:现在用深度学习模型做NLP,肯定离不开这个词嵌入,基本上NLP工作的第一步,就是花式得到词嵌入。

那么,词嵌入是什么意思呢?

早些的时候,也就是词嵌入还没成为标配的时候,NLP就已经是深度学习甚至更广一点的用机器学习最重要的问题领域之一。但是大家也都知道:甭管深度学习还是机器学习,模型本身是不认字的,也就是不能把字符直接输入进去。模型只认数字。甭管是中文汉字还是英文字符,你都得想办法先转成数字才能输进模型里面去,这叫“向量化”。

那具体怎么办呢?方法不是唯一的,在深度学习这边用的比较多的叫One-Hot编码,有人翻译为“独热编码”,具体实现也简单,假设语料里面有n个词,那么就搞个n维的向量,每一个词都用单独的一维来表示,有这个词对应的维度就置1,否则为0。

譬如说我们的语料就是“Hello World”,这里有“Hello”和“World”两个词,那么要输入“Hello”就可以用[1,0]来表示,而输入“World”则可以用[0,1]来表示。那要输入的就是“Hello World”呢?既然两个词都有,都置为1就行了,也就是[1,1]。

有一点要注意的是:英文本身就是一个词一个词地组成句子和文章,词与词之间天然有空格等分割符分开,所以直接就可以进行One-Hot编码。但是中文不行,中文虽然也有“词”,但是并没有天然的分隔符,所以中文做NLP多了一个“分词”阶段,也分成一个个带空格的词,然后才能进行One-Hot编码。

One-Hot编码方法简单,而且文本经过编码处理后,就能毫无障碍地输进模型,是一种很常用的文本向量化方法。但缺点也很明显,那就是太稀疏了。

“稀疏”和“稠密”是深度学习经常使用的两个术语,什么叫“稀疏”呢?说人话就是有非常多的0,譬如说上千维的向量,只有十来个是1,其它都是0。

这一点很好理解,汉语和英语的常用词大概都在2000到3000这个范围之内,一般规模大点的语料集都会包含大部分的常用词,按照One-Hot编码一个词一个维度的办法,那向量肯定就得有两、三千个维度,但是一条句子了不起也就二十来个词,就算都没有重复,那能置位为1的也就二十来个,剩下的全都是0,当然就稀疏了。

稀疏坏处很多,占空间大不说,处理难度还高,更重要的是,大部分的内容纯粹就是有了没用但没了又不行,没啥实际信息量,很多有用的信息反而又没包含进去。所以,大家肯定就想把这些稀疏的词向量变得更加稠密,那么词嵌入就是其中取得成功的一条路子。

02

表示学习

词嵌入同样也是向量,不过和One-Hot编码不同的是,One-Hot编码得到诸如[0,0,0,1,0,1,1,00,0,00,0,0]这样的向量,而词嵌入更为“稠密”,也就是相比之下维度更低,同时每个维度基本都是非0取值,譬如[-0.517,2.1869,1.0442]。

得到词嵌入的方法有很多,但是核心目标可以归结为两个字:表示。

什么叫“表示”呢?前面我们说,文本是没法直接输进模型的,首先得向量化,把文本变成数字。不过,这只是起步,最终的目标是向量化后得到的数字,能够完好地保持了文本所包含的信息。用我们的话说,也就是希望得到的文本特征向量,能够表示文本的“意思”。

“你懂我意思吧?”对,就是那个说不清道不明,但是又能让人秒懂的那个“意思”。我们就是希望得到的词嵌入能表示这个意思,表示就是这么来的。这个过程被称为表示学习。

表示的英文是representation,也有译作“表征”,如果你在文献里看到表示学习或者表征学习, 不要疑惑,这俩就是一回事。具体是怎么回事呢?简单来说就是通过表示学习,得到上面所说的,能够表示文本“语义”的词嵌入。

可是,语义到底是什么?

譬如说上面写了这么多字,“语义”到底是什么?有标准答案吗?关键是,能量化成向量吗?现在大家应该都懂为什么前面说Embedding这个话题不好写,就是因为意思就是那个意思,但究竟是什么意思呢?不好意思,不知道是什么意思。

所以理所当然,词嵌入绝不是一条未敢设想的道路,相反,学界早有无数的人在脑海里闪现过类似的火花,可是这条路注定铺满荆棘,就连人类智能在考试都尚且要分客观题和主观题,更何况人工智能呢?在我们普通人的认知里,语义和可量化应该是这个世界上距离最远的两个词,直到Word2Vec横空出世。

03

Word2Vec

谈Embedding,谈词嵌入,就不可能不谈Word2Vec,Word2Vec是词嵌入的一块当之无愧的里程碑。Word2Vec不仅仅只是提出一种技术,而是开创了一种全新的可能,令深度学习模型在NLP上面有了无限的遐想空间,一切都要从下面这条不可能的等式说起:皇帝-男人=皇后-女人

这条等式太不可思议了,我用文字读一次:皇帝减去男人等于皇后减去女人。

毫无疑问,从数学的角度看,这是一段极为简单的四则运算式,但是含义一点也不简单。皇帝减去男人是什么意思?不知道,说不清楚。那皇后减去女人又是什么意思?不知道,也说不清楚。但是你说皇帝减去男人等于皇后减去女人,一想好像也确实符合常识。

Word2Vec还更进了一步,提出了语义空间的概念。在语义空间里面,皇帝和男人的距离,应该就等于皇后和女人的距离。把抽象的语义,变成了可以度量的具体空间。

这样处理有很多好处。不但把抽象的概念具象化了,更重要的是,许多现成的数学工具就能马上派上用场,估计发明这些数学工具的作者,无论如何也想不到能在语义上派上用场。

Word2Vec对机器学习也带来许多好处。许多传统的机器学习模型,譬如说聚类模型,本来很难蹭进NLP的圈子里的,One-Hot编码出来的结果虽然也叫“向量化”了,但特别不适合做聚类,不过现在有了Word2Vec,马上枯木逢春,也能有了用武之地。

前面说Word2Vec是一块里程碑,我感觉更像一扇门,或者叫“脑洞”也不无不可,一旦打开了,后面玩法就喷涌而出。这倒不是之前的人们缺乏想象力,而是缺乏好用的文本向量化工具,最后没法得到有意义的效果。而现在有了Word2Vec,就等于有了效果倍增器,很多模型做出了可用的结果,深度学习做NLP真的就是如虎添翼。

Word2Vec效果很好,学术界当然也得包装一下,至少得建立一个符合人们日常直觉的概念解释这件事。既然我们假设语义是有个“语义空间”这么个玩意,而最终得到的结果又是条向量,那么我们是不是可以这样理解:这条Word2Vec用来表示某个词的向量,实际上是这个词的意思,“嵌入”进了语义空间。嵌入英文就是Embedding,这就是Embedding的由来,而得到的向量也称作Word Embedding,也就是我们一直在说的词嵌入。

好了,以下是真心话大冒险的时间。如果你读完上面这段话觉得完全不知所云,不要怀疑自己,错的一定不是你。学术界对于Embedding确实就是上面这段话,也读过很多版本的解释,但始终有种挥之不去的“你懂我意思吧”的感觉。

我觉得Embedding针对的就是那种解释不清的、很抽象的“感觉”的问题,原理自然没法清楚解释,虽然学界给出了一个“你懂我意思吧”的解释,但我是真的没懂,也许学界也是似懂非懂,只不过看在Embedding效果确实不错的份上,大家也都默认罢了。

04

Embedding

Word2Vec疗效显著,也让Embedding这个概念大放异彩,很多领域其实都存在“你懂我意思吧”的需求,譬如说推荐算法。以前我介绍推荐算法,说推荐算的核心就是“以此类推”四个字,你喜欢物品A,那你大概率也会喜欢和物品A很类似的物品B,所以推荐算法有个很重要的环节,叫相似度计算。

但是有一个问题,怎么知道物品A和物品B很类似呢?这个问题这个简单,物品A和物品B是同一类东西,所以说类似。但是,这里的“东西”究竟是个什么东西?和前面的意思一样,都很抽象,或者干脆只能说是一种很微妙的感觉。但是要进行计算,就必须量化。

是不是觉得这个需求似曾相识?没错,这正是表示学习研究的领域,不过已经不是NLP领域了,叫Word Embedding肯定不合适,那好,干脆直接就叫Embedding。

不过还有个问题。这里还是Embedding,解释逻辑也还是前面的“嵌入空间”,可是“语义空间”可没法照搬?怎么办呢?学界这里发挥了极强的创造力:前面我们不是说Word2Vec还有个语义空间的概念吗?空间是好东西,可是继续叫“语义”不合适,那我们就换个一劳永逸的名字,叫“隐空间”(Latent Space)。

别小看隐空间,这可是个伟大的发明,现在深度学习凡是解释不通的东西,统统都丢进隐空间里面去了,连看似八竿子打不着的GAN都用了这个概念。至此,Embedding也完成了概念的抽象化,彻底摆脱了NLP的背景,从一项技术,变成了一条道路,Embedding和表示学习,或者叫表征学习,成为了深度学习的主线剧情。

Embedding的内容还有很多,得到Embedding的方法也一直在没有止息地演进,当初的Word2Vec已经成了明日黄花,3年前演化出来的Transformer已经成为NLP领域无可撼动的霸主,最近正展现出一统江湖的野心。想了解这些内容,推荐阅读《深入浅出Embedding》。

 

关于作者

莫凡 ,网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。

扫码关注作者

 

RECOMMEND

推荐阅读

01

《深入浅出Embedding:原理解析与应用实践》

推荐理由:全面讲解Embedding原理和方法,重点剖析Embedding 6大应用场景。北京智源人工智能研究院院长黄铁军、微软中国首席技术官韦青、亚马逊云计算上海AI研究院院长张峥、中国计算机学会副理事长周明联袂推荐!配代码、数据、实战营、作者答疑群!

 

 

02

《Python深度学习:基于PyTorch》

推荐理由:业内公认的深度学习入门实战好书!资深AI专家20余年工作经验总结,从工具、技术、算法、实战4个维度全面讲解深度学习,重点突出、循序渐进、用图说话,配全套代码、数据和学习PPT、作者答疑群!

 

 

读书实战营

14天掌握深度学习领域爆火的Embedding、Transformer, bert,word2vec!社区领读10天+5个作业+4天实战!

与志同道合的小伙伴一起学习讨论,克服拖延症!还可获得书籍作者的面对面点评!

 

扫码关注【华章计算机】视频号

每天来听华章哥讲书

更多精彩回顾

书讯 | 9月书讯 | 秋天的第一本书,来了

资讯 | 什么是Serverless?有哪些应用?终于有人讲明白了

书单 | 10本书,帮你看清未来的科技趋势

干货 | Linux30岁生日:Linux 成功的真正原因

收藏 | 终于有人把Scrapy爬虫框架讲明白了

上新 | 【新书速递】“帆船书”——数据库领域殿堂级作品,全新升级第7版!

赠书 | 【第71期】破案了!库里为何会花18万美元买一个猴子头像?

点击阅读全文优惠选书

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注