人工智能小白日记之17 ML学习篇之13 嵌套 Embedding

前言

嵌套是大名鼎鼎的推荐系统的最基本的方面。例如各种专人定制的推送相信大家接收过不少,还有今日头条大家看过吧,有没有发现只要你点过关于某方面的文章,后面就会看到不少相关的东西。比如房价啦,游戏啦,占卜啦。当然了,这节我个人感觉不是很好理解它。

课程内容

1 协同过滤

协同过滤是一项可以预测用户兴趣(根据很多其他用户的兴趣)的任务。以影片推荐的任务为例,假设我们有 100 万个用户,以及每位用户观看过的影片的列表(可供观看的影片共有 50 万部)。 我们的目标是向用户推荐影片。

要解决这个问题,我们需要使用某种方法来确定哪些影片是相似的。我们可以通过将影片嵌套到低维空间(使得相似的影片彼此邻近)来实现这个目标。
人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
虽然这种嵌套有助于捕获影片的适宜观赏年龄段(儿童或成人),但在推荐影片时还需要考虑影片的许多其他方面。

如果我们再添加一个维度, 有两个维度的话会怎样呢?
人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
我们所做的是将这些影片映射到一个嵌套空间,其中的每个字词都由一组二维坐标来表示。例如,在这个空间中,《怪物史莱克》映射到了 (-1.0, 0.95),而《蓝》则映射到了 (0.65, -0.2)。通常情况下,在学习 d 维嵌套时,每部影片都由 d 个实值数字表示,其中每个数字都分别表示在一个维度中的坐标。

真正有意义的是嵌套空间中各个影片之间的距离,而不是单个影片在任意指定维度上的坐标。

那么,如何将这种方法运用到神经网络中?

2 分类输入数据

分类数据是指用于表示一组有限选项中的一个或多个离散项的输入特征。
人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
在图 3 的矩阵中,每一行都是一个显示用户的影片观看记录的样本,并以稀疏张量的形式表示,因为每个用户只会观看所有可能的影片中的一小部分。根据影片图标上方所示的索引,最后一行对应于稀疏张量 [1, 3, 999999]。

为了能够在机器学习系统中使用这类表示法,最简单的方法是:定义一个巨型输入层,并在其中为词汇表内的每个字词设定一个节点。如果有50万的独一无二的词汇,规模就会很庞大,得到的输入矢量就会比较稀疏,可能会致使模型很难高效地学习。

2-1 会产生什么问题

1)网络的规模巨大
巨型输入矢量意味着神经网络的对应权重数目会极其庞大。如果您的词汇表内有 M 个字词,而神经网络输入层上方的第一层内有 N 个节点,您便需要为该层训练 MxN 个权重。权重数目过大会进一步引发以下问题:

  • 数据量:模型中的权重越多,高效训练所需的数据就越多。

  • 计算量:权重越多,训练和使用模型所需的计算就越多。这很容易就会超出您硬件的能力范围。

2)矢量之间缺乏有意义的联系

对于在索引 1247 处设为 1 以表示“马”的矢量而言,如果说它与在索引 238 处设为 1 以表示“电视机”的矢量不够邻近,那么它与在索引 50430 处设为 1 以表示“羚羊”的矢量亦然。然而两者都是动物。

3)解决方案:嵌套
也就是将大型稀疏矢量映射到一个保留语义关系的低维空间。

3 转换到低维度空间

要解决稀疏输入数据的核心问题,可以将高维度数据映射到低维度空间。
ps:由于理解上可能不方便,先直接看案例

案例1:房屋预测
人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
ps:如果房价预测中需要参考广告词,通过类似的词汇来了解房屋的空间大小,比如’很大’,'宽敞’之类的。广告词里面出现的各种词汇用分类数据小节中的稀疏张量来表示,解决了输入特征的问题,同时进行三维嵌套,这样压缩其规模,被压缩到了嵌入层的3个节点中。

案例2:影片推荐
人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
ps:同样,作为影片推荐,第一步就是进行上面提到的分类数据,用户看过影片形成一个稀疏张量;第二步对这些庞大的张量进行三维嵌入。另外,这里有一个特意提到的点就是,没有标签y,如何进行训练?视频中提到将用户看过的电影中的一部分作为标签y,大部分作为输入特征x。这点其实就是之前的泛化理论。

尽管我们需要足够的维度来编码丰富的语义关系,但我们也需要足够小的嵌套空间来更快速地训练我们的系统。实用嵌套的量级大致有数百个维度。这可能比您在自然语言任务中使用的词汇规模要小好几个数量级。

4 嵌入过程

人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
ps:对于影片推荐这个例子。仅进行n维嵌入(这里是3个),下面的m个稀疏张量,需要跟上面嵌入层的n个节点(对应绿色的3个点)一一连接。以黑色点为例,就会形成红色,紫色,棕色三条权重。红色表示X值,洋红色表示Y值,棕色表示Z值。这部电影就会嵌入到三维空间内(0.9,0.2,0.4)。

人工智能小白日记之17 ML学习篇之13 嵌套 Embedding

5 编程练习

人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
人工智能小白日记之17 ML学习篇之13 嵌套 Embedding
ps:以后有机会再补,要先做语音的东西了,还是很懵,教程后面慢慢还是要看完,再给补上。。。