深度学习推荐系统实战_09_06_Embedding基础所有人都在谈的Embedding技术到底是什么
你好,我是王哲。
今天我们聊聊embedding,说起embedding,我想你肯定不会陌生,至少经常听说。
事实上,embedding技术不仅名气大,而且用embedding方法进行相似物品推荐,几乎成了业界最流行的做法。
无论是国外的facebook、 airb、 NB,还是国内的阿里、美团,我们都能看到embedding的成功应用。
因此,自从深度学习流行起来之后,embedding就成为了深度学习推荐系统领域最火热的话题之一。
但是embedding这个词又不是很好理解,你甚至很难给它找出一个准确的中文翻译。
如果硬是翻译成嵌入向量映射,感觉也不知所谓。
所以索性我们还是用embedding这个叫法吧。
那这项技术到底是什么?为什么它在推荐系统领域这么重要?最经典的embedding方法or to y的细节原理到底是什么样的这节课,我们就一起来聊聊这几个问题。
简单来说,embedding就是用一个数值向量表示一个对象的方法。
我这里说的对象可以是一个词,一个物品也可以是一个电影等等。
但是表示这个词是什么意思呢?用一个向量表示一个物品还是不那么好理解。
但里我先尝试着解释一下,一个物品能被向量表示是因为这个向量跟其他物品向量之间的距离,反映了这些物品之间的相似性。
更进一步来说,两个向量间的距离,向量甚至能够反映它们之间的关系。
这个解释听上去还是有些抽象。
那我们再给大家看两个具体的例子,你可以看到我在文稿中给出了一张示意图。
图一,它是google著名的论文watto work等中的例子。
这利用waterwak这个模型,把单词映射到了高维空间中,每个单词在这个高维空间的位置都非常有意思。
你看图一左边的例子,从king到queen的向量,和从man到queen的向量,无论从方向还是尺度来说都异常接近,这说明什么呢?这说明词向量间的运算,居然能够揭示词之间的性别关系。
比如woman这个词的词向量可以用这样的公式计算出来。
Embedding woman等于embedding men,再加上embedding queen减去embedding king,同样的图一右的例子也很典型,从walking到walked和从swimming到swam的向量基本一致,这说明词向量居然揭示了词之间的时态关系,这就是embedding技术的神奇之处。
你可能会觉得词向量技术离推荐系统还是有一点远。
那neffix应用的电影embedding向量方法就是一个非常直接的推荐系统应用。
你可以看一看某影推定系图,就是EEFXX生成的电影和用户的ebebedding示图。
它中利进行举分分解方方法容易了。
从中我们可以看出有很多不同的电影和用户分布在一个二维的空间内。
由于embedding向量保存了他们之间的相似性关系。
因此有了这个embedding空间之后,我们再进行电影推荐就非常容易了。
具体来说,就是我们直接找出某个用户向量周围的电影向量,再把这些电影推荐给这个用户就可以了。
这就是embedding技术推推荐系统,中直直接应应用。
事实上,我一直把embedding技术称作深度学习的基础核心操作,在推荐系统领域进入深度学习时代之后,embedding技术更是如鱼若水。
为什么embeding技术对于推荐系统如此重要,embedding技术又在特征工程中发挥了怎样的作用呢?我主要来谈谈下面两点,首先embedding是处理稀疏特征的利器。
上节课我们学习了one号编码,不过推荐场景中的类别ID型特征非常多,大量使用one号的编码会导致样本特征向量极其稀疏,而深度学习的结构特点又不利于稀疏特征向量的处理。
因此,几乎所有深度学习推荐模型都会有embedding层负责,把稀疏的高维特征向量转换成稠密的低维特征向量。
所以说,各类embedding技术是构建深度学习推荐模型的基础性操作。
其次,embedding可以融合大量有价值的信息,本身就是极其重要的特征向量,相比由原始信息直接处理而来的特征向量,embedding的表达能力更强,特别是graph embedding技术被提出后,embedding几乎可以引入任何信息进行编码,使其本身就包含大量有价值的信息。
所以通过预训练得到银白粒向量,本身就是极其重要的特征向量。
所以我们说embedding技术在深度学习推荐系统中占有极其重要的位置,熟悉并掌握各类流行的embedding方法,是构建一个成功的推荐系统的有力武器。
这两个特点也是我们为什么把embedding的相关内容放到特征工程片的原因。
因为它不仅是一种处理稀数特征的方法,也是融合大量基本特征、生成高阶特征向应的有效手段。
提到embedding,就一定要深入了解一下watd back,它不仅让词向量在自然语言处理领域再度流行。
更关键的是,自从二零一三年谷歌提出wordback以来,embebedding技术从自然语言处理领域推广到广告、搜索、图像推荐等几乎所有深度学习的领域,成了深度学习知识框架中不可或缺的技术点。
作为经典的ebebedding法,熟悉what worwork对于理解之后,所有embedding相关技术和概念都是至关重要的。
所以接下来我就给你详细说说what work的原理。
What to wak是ar to vetor的简称,顾名思义,它是一个生成对词的向量表达的模型。
想要训练what work模型,我们需要准备由一组句子组成的语料库。
假设其中一个长度为t的句子包含的词有w一、w二一直到WT,并且假设每个词都跟其相邻词的关系最密切。
根据模型假设的不同,what work模型分为两种形式,syabo模型和skip gram模型。
其中c boo模型假设句子中每个词的选取都由相邻的词决定。
因此,我们就看到,CB模型的输入是WT周边的词,预测的输出是WT ski gram模型则正好相反。
它假设句子中每个词都决定了相邻词的选取。
所以你可以看到,skip gram模型的输入是WT,预测的输出是WT周边的词。
按照一般的经验,skip gram模型的效果会更好一些。
所以我接下来也会以skip gram作为框架来给你讲讲watto ruck的模型细节。
首先我们先来看看训练what work的样本是怎么生成的。
作为一个自自然言处理的模型型训,what work的的样本当然来自于语料库。
比如我们想训练一个电商网站中关键词的embedding模型。
那电商网站中所有物品的描述文字就是一个好好语语料库。
我们从语料库抽抽取一句样,选,选取个长度度,二c加一的的滑窗口口,将滑动窗口由左至右输动,每移动一窗口口中的词组,形形了一个训练练本。
根据skip p me模型的理念,念重新词决定了它的相邻词。
我们就可以根据这个训练样本定义出what worck模型的输入和输出了。
输入是样本的中心词,输出是所有的相邻词。
为了方便你理解,我再举一个例子,为里我们选取了embedding技术对深度学习推荐模型的重要性。
这句话作为句子样本,通过进行分词去除停用词的过程后,生成了词序列。
在选取大小为三的滑动窗口,从头到尾依次滑动,生成训练样本,然后把中心词当输入边缘词做输出,就得到了训练。
What to wak模型的可用的训练样本了。
有了训练样本之后,我们最关心的当然是what to back.这个模型的结构是什么样的。
我相信通过第三节课的学习,你已经掌握了神经网络的基础知识,那在理解watto wak的结构就容易多了。
因为它的本质就是一个三层的神经网络,它的输入层和输出层的维度都是v这个v其实就是语料库词典的大小。
假设语料库一共使用了一万个词,那v就等于一万。
根据图四生成的训练样本,这里的输入向量自然就是由输入词转换而来的。
One hot编码向量输出向量则是由多个输出词转换而来的。
Multi hot编码向量显然,基于skip gram框架的waterbiback模型解决的是一个多分类问题。
隐层的维度是NN的选择,就需要一定的调参能力了。
我们需要根据模型的效果和模型的复杂度进行权衡,来决定最后n的取值,最终每个词的embedding向量的维度也是由n来决定的。
最后我们再来说说激活函数。
需要注意的是,隐层神经元是没有激偶函数的,或者说采用了输入即输出的恒等函数。
作为奇偶函数,而输入层神经元采用了soft max.作为奇偶函数,你可能会问,为什么要这样设置watworwork的神经网络呢?以及为什么要这样选择奇偶函数呢?因为这个神经网络其实是为了表达从输入向量到输入向量的这样一个条件概率关系公式。
你可以看一下文稿,这个由输入词WI预测输入出词。
Wo的条件概率,其实就是what to wack神经网络想要表达的东西。
我们通过极大似然的方法去最大化这个条件概率,就能够让相似的词的内积距离更接近。
这就是我们希望what work神经网络学到的。
当然了,如果你对数学和机器学习的底层理论没那么感兴趣的话,也不用太深入了解这个公式的由来。
因为现在大多数深度学习平台都把它们封封好好了,不需要去实现损失函数梯度下降的细节,你只要大概清楚它们的概念就可以了。
如果你是一个理论派,其实watch bag还有很多值得挖掘的东西。
比如为了节约训练时间,what bug经常会采用副材样或者分层soft max的训练方法。
我推推荐去阅阅读,在文文中给出的文章,相信你会找到最详细和准确的解释。
在训练完what worked的神经网络之后,可能你还会有疑问,我们不是想得到每个词对应的embedding向量吗?那这个embedding在哪儿呢?其实它就藏在输入层到隐层的权重矩阵。
Wv乘以n中,我想看了文稿中的示意图,你就明白了。
你可以看到输入向量矩阵。
Wv乘以n的每一个行向量对应的就是我们要找的词向量。
比如我们要找词向量里第i个词对应的embedding.因为输入向量于采用问号的编码的,所以输入向量的第i为应该是一那输入向量矩阵WV乘以n中的第i行的行向量,自然就是该词的embedding向量了。
细心的你可能也发现了输出向量w一撇儿也遵循这个道理,确实是这样的。
但般般说,我们还是习惯于使用输入向量矩阵作为词向量矩阵。
在实际的使用过程中,我们往往会把输入向量矩阵转换成此向量查找表。
比如说输入向量是一万个词组成的,完好的向量,隐层维度是三百维那,输入层到隐层的权重矩阵应该是一万乘以三百维。
在转换为词向量查找表后,每行的权重就成了对应词的inbeling向量。
如果我们把这个查找表存储到线上的数据库中,就可以轻松的在推荐物品的过程中使用embedding去计算相似性等重要的特征了。
What? Worwork是谷歌于二零一三年正式提出的,但其实它并不完全是原创的学术界对词向量的研究可以追溯到二零零三年甚至更早的时期。
但正是谷歌对what worked的成功应用,让词向量的技术得以在业界迅速推广,进而让embedding这一研究话题成为热点。
毫不夸张的说,what worwork对深度学习时代embedding方向的研究具有奠基性的意义。
从另一个角度来说,watto work的研究中提出了模型结构、目标、函数、副采样方法等技术点。
在后续的研究中被重复使用,并屡次优化掌握what worked中的每一个细节,成了研究embedding的基础。
从这个意义上来讲,熟练掌握本节课的内容是非常重要的。
好了,最后我还想给你说说what work的推广item to work,推what to work诞生之后,embedding的思想逐渐从NLP领域扩散到几乎所有的机器学习领域,推荐系统,当然也不例外。
推然what work可以对词序列中的词进行embedding.那对于用户购买序列中的一个商品,用户观看序列中的一个电影也应该存在相应的embedding方法。
于是,微软于二零一五年提出了item to back方法,它是对what to back方法的推广,使embedding方法适用于几乎所有的序列数据。
Item to back模型的技术细节,几乎和what work back完一致。
致只能够够用序列据据的形式,我们想要表达的对象表示出来,来把序序列据据给给what back模型,我们就能够得到任意物品的embedding了。
Iteteto back back提出对于推荐系统来说,当然是至关重要的,因为它让万物皆embedding成为了可能。
对于推荐系统来说,item to back可以帮助它利用物品的embedding直接求得他们的相似性,或者作为重要的特征输入、推荐模型进行训练,或者都有助于提升推系统的效果。
好了,这节课讲完了,我们一起来总结一下今天的重点内容。
这节课我们一起学习了深度学习对象性、整容非常重要的知识点。
Embedding embedding就是用一个数值向量表示一个对象的方法。
通过imbedding,我们又引出了what to work. What to work是生成对词的向量表达的模型。
其中,watto wake的训练样本是通过滑动窗口一一截取词组生成的。
在训练完成后,模型输入向量矩阵的行向量就是我们要提取的词向量。
最后我们还学习了item to work,它是what worked在任意序列数据上的推广。
我把这些重点的内容以表格的形式总结在了文稿中,方便你随时回顾这节课,我们主要对序列数据进行了embedding化。
那如果是图结构的数据怎么办呢?另外,有没有什么好的工具能实现embedding技术呢?接下来的两节课,我就会一一讲解图结构数据的embedding方法graph embedding,并基于spark对它们进行实现,期待在与大家一起学习。
最后我们再来看一道思考题。
在我们通过watch back训练得到词向量,或者通过item to back得到物品向量之后,我们应该用什么方法计算它们的相似性呢?你知道几种计算相似性的方法,欢迎把它们分享出来。
如果你身边的朋友针对embedding技术感到疑惑,也欢迎你把这节课分享给它。
我们下节课再见。