「机器学习速成」嵌套:高维度数据映射到低维度空间

本文探讨了嵌套技术在高维度数据映射至低维度空间的应用,特别聚焦于电影推荐系统的协同过滤方法。通过构建电影间的相似度,实现个性化推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.toutiao.com/a6707188638792286727/

 

大家好,今天我们学习【机器学习速成】之 嵌套:高维度数据映射到低维度空间

嵌套将高维度数据映射到低维度空间, 可以将语义上相似的不同输入映射到嵌套空间里的邻近处, 以此来捕获输入的语义。

我们 马上学三点 ,

  1. 协同过滤电影推荐
  2. 输入表示法
  3. 深度网络中的嵌套层

大家可以点击下面的“ 了解更多”,或搜索“ 马上学123 ”,在线观看PPT讲义。

协同过滤推荐

推荐系统最基本的方面是嵌套, 这也是我们今天要讨论的内容。

协同过滤是一项可以预测用户兴趣的任务, 这里以电影推荐的任务为例, 假设我有一百万部电影和五十万用户, 而且我知道每个用户观看过的电影。

任务很简单:我要向用户推荐电影。 要解决这个问题, 我们需要使用某种方法来确定哪些电影是相似的。 我们可以通过将电影嵌套到低维空间 (使得相似的电影彼此邻近)来实现这个目标。

如果您观看了3部电影, 我就可以推荐和这3部电影相邻的给你。

按相似度整理电影(一维)

首先,我们先试着沿着一维嵌套这些电影。 为了更直观地了解嵌套过程, 请准备一张纸,试着在一维数轴上排列以下电影, 让越相关的电影靠得越近

「机器学习速成」嵌套:高维度数据映射到低维度空间

按相似度整理电影(一维)

比如说,我可能会在左侧放入动画片, 在右侧放入更加适合成人的电影, 这种嵌套有助于捕获电影的适宜观赏年龄段。

我可以向儿童推荐动画片,这个效果不错, 但有些动画片不适合儿童观看, 还有一些电影很少有人看,我们应该少推荐。 但只有一个维度,我很难做出其它角度的判断。

按相似度整理影片(二维)

如果我们再添加一个维度, 有两个维度的话会怎样呢?

「机器学习速成」嵌套:高维度数据映射到低维度空间

按相似度整理影片(二维)

X轴的左侧是比较适合儿童的电影, 右侧则是比较适合成人的电影, Y轴的顶部是比较卖座的大片, 底部则是偏艺术类的电影。 当然,这只是电影诸多重要特征中的两个。

利用这种二维嵌套,我们可以定义电影之间的距离, 从而使在适宜儿童或成人的程度上相近的电影 以及属于大片或艺术电影的程度上相近的电影位于相近的位置, 您可以看到位置相邻的电影比较类似, 而这正是我们想要实现的目标。

我们所做的是将这些电影映射到一个嵌套空间, 其中的每个字词都由一组二维坐标来表示。 例如,在这个空间中,《怪物史莱克》映射到了 (-1.0, 0.95), 而《蓝》则映射到了 (0.65, -0.2)。 此处的每部电影都可以仅由两个值组成的集表示, 而且我们现在可通过这些点之间的距离 了解电影之间的相似性

d 维嵌套

尽管我只绘制两个维度, 但实际上,您需要在D维空间中建模,二维不足以捕获一切内容。

通常情况下,在学习 d 维嵌套时, 每部影片都变成一个 d 维点,由d个数字表示, 其中维度 d 中的值表示这部影片符合相应方面的程度。

实际上可以通过数据学习这些嵌套, 我们可以使用深度神经网络进行嵌套, 嵌套层只是隐藏层,每个维度一个单元。

输入表示法

现在,我们看看如何将这种方法运用到神经网络中。

「机器学习速成」嵌套:高维度数据映射到低维度空间

输入表示法

如图所示, 我用一行表示一个用户,一列表示一部电影, 并在这个简单的示例中打一个勾表示用户看过这部电影。 每个样本其实只是此矩阵中的一行, 我们来重点关注一下最后一行。

如果有五十万部电影, 我可不想列出您没有看过的所有电影, 所以,只是记下您看过的电影会更高效。

为实现这一目标,我们将使用以下输入表示法, 为此,我们需要分两个阶段进行:

  • 第一个阶段是预处理阶段: 在这个阶段,我们将构建名为字典的数据库, 字典就是从各个特征相应整数的映射。 本例中,电影按照所在列的顺序映射相应整数, 我会将第0列命名为第0个电影, 将第1列命名为第1个电影, 以此类推,这是我们在预处理阶段执行的一项一次性操作。
  • 现在,我可以高效地将那个最后一行样本 仅表示为用户看过的3个电影,而不用去管所有其他电影。 实际上这只是3个整数: 1、3、999999, 因为这些数字表示用户看过的3个电影的索引。

深度网络中的嵌套层

现在有了输入表示法, 我们就可以了解如何将其运用到整个网络,

「机器学习速成」嵌套:高维度数据映射到低维度空间

深度网络中的嵌套层

电影推荐问题其实很有趣,我的训练数据在哪里? 我只知道每个用户都看过一些电影, 但我怎样才能知道哪些电影适合推荐?我要使用什么作为标签?

在这种情况下,我们可以使用一个简单的技巧: 假设用户看过10部电影, 我们会随机挑选3部电影,把这些电影放在一边, 这些就是标签, 这些是我要推荐的电影, 它们都是不错的推荐,因为您已经看过这些电影了, 至于另外7部电影,我会将其用作训练数据, 获取稀疏表示法,并会将其引入到嵌套层。

我们还可以根据具体需求添加任何其他特征, 可以是类型,也可以是导演, 还可以是任何其他有关电影或用户的特征, 然后,我们可以将这些特征添加到额外的隐藏层, 这样我们就有了一个对数层。 这个对数层很大,如果我有五十万部电影,则会有五十万个节点。 这会导致一些问题,但不在我们本次讨论的范围内。

但通过这五十万部电影, 我们可以获得我们认为您会喜欢的电影的概率分布, 然后根据选出的你可能会喜欢电影对softmax损失进行优化。 这样一来, 我们就可以在反向传播标准训练中学习如何嵌套电影。

深度网络与几何视图的对应关系

现在,我们一起回顾一下, 我们在深度神经网络中学习的内容 如何与我刚开始提供的几何视图联系在一起。

「机器学习速成」嵌套:高维度数据映射到低维度空间

深度网络与几何视图的对应关系

我们来看看深度网络, 底部的每个节点都可表示为五十万部电影的其中一部, 我已挑选其中一部并使其显示为黑色。 在此示例中, 有3个隐藏单元,所以我打算使用三维嵌套方式

这样,该黑色节点的边缘会连接到上述每个单元; 我使用红色显示第1个单元,使用洋红色显示第2个单元,使用棕色显示第3个单元。 完成神经网络训练后,这些边缘会表示权重, 每个边缘对应一个与其相关联的实值, 这就是我的嵌套方式。

「机器学习速成」嵌套:高维度数据映射到低维度空间

深度网络与几何视图的对应关系

红色表示X值,洋红色表示Y值,棕色表示Z值。 所以,这部电影就会嵌套到三维空间内(0.9,0.2,0.4)。

选择嵌套维度个数

与任何深度神经网络一样, 此网络也有超参数, 嵌套层中的其中一个超参数指的是 您想在该层中添加的嵌套维度数量,隐藏单元数量

维度越多越好,因为这样就能够梳理更多的差别, 从而了解相互之间更细致的关系。

但多重维度也存在缺陷,那就是当我增加维度的数量时, 还有可能出现过拟合, 从而导致训练进程变慢且需要更多数据

因此,最好的经验法则是维度数量约为潜在值的数量(例如词汇量)的四次方根。

但这只是经验之谈,对于所有超参数, 您真正需要做的是使用验证数据, 根据您自己的具体问题多多尝试, 然后确定哪项参数能获得最佳效果

总结:

  • 协同过滤是一项可以预测用户兴趣的任务,
  • 构建一个字典,其中包含各个特征到相应整数的映射
  • 深度网络中的嵌套层,每个隐藏单元都对应一个维度,应使用验证数据进行微调;

这里讲了三点,关键词有哪几个?

提问!降维技术还有哪些?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值