【问题标题】:Why does 'dimension' mean several different things in the machine-learning world? [closed]为什么“维度”在机器学习世界中意味着几个不同的东西? [关闭]
【发布时间】:2020-10-05 06:48:34
【问题描述】:

我注意到 AI 社区将各种张量称为 512-d,意思是 512 维张量,其中“维度”一词似乎意味着单个数据点表示中的 512 个不同的浮点值。例如在 512-d word-embeddings 中表示 512 长度的浮点向量,用于表示 1 个英文单词,例如https://medium.com/@jonathan_hui/nlp-word-embedding-glove-5e7f523999f6

但它不是 512 个不同的维度,它只是 1 维向量?为什么dimension 一词的使用方式与平时不同?

当我们使用术语 conv1d 或 conv2d(它们是一维和二维的卷积)时,维度的使用方式与数学/科学中使用的典型方式相同,但在词嵌入上下文中,一维向量被称为 512 维向量,还是我遗漏了什么?

为什么过度使用术语dimension?什么上下文决定了dimension 在机器学习中的含义,因为该术语似乎超载了?

【问题讨论】:

  • 从这个意义上说,许多术语都被“重载”了,整个科学界的几乎每个符号也是如此。每个上下文只有有限数量的有用词,因此在某些时候重载变得不可避免。顺便说一句,Numpy 使用术语shape 而PyTorch 使用size,来表示n-张量的n。

标签: tensorflow deep-learning neural-network pytorch word-embedding


【解决方案1】:

它不是重载,而是标准用法。 512维向量空间的元素是什么?它们是 512 维的向量。每个都可以用 512 个浮点数表示,如您的等式中所示。每个这样的向量跨越 512 维空间的一维子空间。

当您谈到 张量 的维度时,张量是 N 个向量空间的乘积的线性映射(粗略地说,我省略了对偶)到现实。 TENSOR 的维数是 N。

【讨论】:

  • 我不确定我是否遵循。单词“猫”的 512 维词嵌入是长度为 512 的 1 维向量。这与 512 维张量不同吗?
  • 词嵌入存在于 512 维向量空间中。 512 维张量是从 512 个向量空间的乘积到 R 的映射。
【解决方案2】:

如果你想更具体,你需要清楚dimension、rank和shape这三个术语。

张量的维数表示秩,它有一个特定的定义:秩是索引的数量。当您看到“3 维张量”时,您可以认为该张量有 3 个索引,即T[i][j][k]。所以向量的秩为 1,矩阵的秩为 2,立方体的秩为 3,依此类推。

当您想指定每个维度的大小时,您应该更喜欢使用术语shape。如果第 0 维有 10 个值,第 1 维有 20 个值,第 2 维有 30 个值,则 3 维(也称为 3 阶)张量的形状可以是 [10, 20, 30]。 (例如,这个形状可能代表一批 10 张图像,每张图像的形状为 20x30。)

但请注意,在谈到 向量 时,通常会说“512-D 向量”。正如您所提到的,这个术语在词嵌入中出现了很多(例如“我们使用了 512-D 词嵌入”)。由于“向量”在定义上意味着 1 级,那么人们会将该语句解释为“具有 512 个值的 1 级结构”。

您可能会遇到有人说“我有一个 5 维向量”,在这种情况下,您需要跟进“等等,您是指 5 维张量还是具有 5 个值的 1 维向量? ”。

顺便说一句,我不是数学家。

【讨论】:

    【解决方案3】:

    在神经网络中的词嵌入、降维和许多其他机器学习领域的上下文中,调用向量确实是正确的(通常是,一维数组或张量)作为n维,其中n通常大于2。这是因为我们通常在Euclidean space中工作,其中a(数据) 点在某个维度(欧几里得)空间中表示为实数的n-tuple(即实数n空间ℝn)。

    以下是 3D(欧几里得)空间中(数据)点的示例ref。为了表示这个空间中的任何点,比如d1,我们需要一个由三个实数组成的元组(x1、y1,z1)。

    现在,您的困惑出现了,为什么这一点 d1 被称为 3 维数组而不是 1 维数组。原因是它位于或生活在这个 3D 空间中。相同的参数可以扩展到任何 n 维实空间中的所有点,就像在带有 300d、512d、1024d 向量等的嵌入的情况下所做的那样。

    然而,在所有 nD 数组计算框架中,例如 NumPy、PyTorch、TensorFlow 等,这些仍然是一维数组,因为上述向量的 长度 可以表示使用单个数字。

    但是,如果您有超过 1 个数据点怎么办?然后,您必须以某种(独特的)方式堆叠它们。这就是需要第二个维度的地方。所以,假设你垂直堆叠这些512d 向量中的4 个,那么你最终会得到一个形状为(4, 512) 的二维数组/张量。请注意,这里我们将数组称为 2D,因为需要两个整数来表示沿每个轴的范围/长度。

    为了更好地理解这一点,请参考我在 axis parameter visualization 上对 nD 数组的其他答案,我将在下面包含它的可视化表示。


    参考:Euclidean space wiki

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 2016-06-10
      • 2011-07-11
      • 2016-01-31
      • 1970-01-01
      • 2018-06-17
      • 2011-01-29
      • 2014-05-15
      • 1970-01-01
      相关资源
      最近更新 更多