在机器学习中,向量是基本的数据表示形式,广泛用于各种算法和模型中。熟练掌握向量的概念和相关知识对于理解机器学习算法和实现机器学习模型都非常重要。
什么是矢量(vector)?
矢量是指同时具有大小和方向的几何对象。例如物理学中的速度、加速度、力等等都是矢量。
在数学中,矢量可以抽象为向量,即有方向的量。
矢量可以用线段来表示,线段的长度表示矢量的大小,而箭头指向的方向表示矢量的方向。
与矢量相对的是只有大小而没有方向的标量。
在计算机科学中,矢量的概念常常被泛化。事实上,你会多次听到用“列表”代替“矢量”这个词。在这种概念中,矢量不过是一个属性列表,我们可以用它来表示任何东西。
假设我们要根据房屋的三个属性来表示房屋:
- 卧室数
- 卫生间数
- 使用面积,单位平方米
在上图中我们有两个矢量。
- 第一个代表一个有3间卧室、2间卫生间和115平方米使用面积的房子;
- 第二个代表一个有1间卧室、1个卫生间和45平方米的房子。
当然,如果对房子的其他属性感兴趣,可以创建一个更长的矢量。在这种情况下,我们会说矢量不是3维,而是n维。在机器学习中,通常可以有成百上千个维度。
简单矢量运算
我们可以对矢量执行一些操作,其中最简单的就是两个矢量之间的加法,以及一个矢量与一个标量(即一个简单的数字)的乘法。
要添加2个矢量,可以使用平行四边形规则。也就是说,绘制与要加的矢量平行的矢量,然后画出对角线。对角线将是加法的结果矢量。直接看下面的例子会更容易理解这一点。
而与标量相乘则将矢量拉长N个单位。请看下面的例子。
单位矢量
一个矢量实际上总是用其它矢量表示。
例如,我们把两个长度为1且相互正交的矢量i和j作为参考矢量。
现在我们定义一个新的矢量r,它从原点开始,即从i和j的交点开始,比i长a倍,比j长b倍。
更常见的是,我们使用坐标 r = [a,b] 来引用矢量,这样我们就可以在矢量空间中识别各种矢量。
向量的模
向量的模(vector Modulus),即它的长度可以从它的坐标中导出,定义如下。
内积/点积
向量的内积和点积是同一概念,也称为数量积或点乘。它是对两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。
如下图例,给定两个矢量,内积是将它们的所有分量相乘并返回总和。
内积有一些特性,在某些情况下可能是有用的:
- 交换律:
\vec{r} * \vec{s} = \vec{s} * \vec{r}
- 分配加法:
\vec{r} * ( \vec{s} * \vec{t} ) = \vec{r} * \vec{s} + \vec{r} * \vec{t}
- 结合标量乘法:
\vec{r}*(a*\vec{s}) = a*(\vec{r}*\vec{s})
其中a
是标量
注意,如果你计算一个矢量本身的内积,你将得到它的模的平方!
余弦(点)积
到目前为止,我们只看到了基于向量坐标的内积的数学定义。现在让我们看看它的几何解释。创建 3 个向量r, s和它们的差r-s,形成一个有a,b,c 三条边的三角形。
我们从高中时代就知道,可以使用简单的三角法则推导出c。
从上可以继续得出:
从上面公式可以看到,夹角对点积操作的结果有很大的影响。
事实上,在角度为 0°、90° 和 180°的特殊情况下,余弦将分别为 0,1,-1,这将对此操作产生特殊效果。例如,2个相互成90°的矢量总有一个点积 = 0。
点积的主要作用是可以用来计算角度,它用来简化大量的计算。
投影
让我们假设两个矢量 a 和 b。这两个矢量从一侧彼此靠近并在它们之间形成角度θ,在a上放一个手电筒,我们会在b上看到a的影子。那是a在b上的投影。
矢量的投影是指在一个向量上找到另一个向量在该向量方向上的投影,也就是在该向量上的垂线上的投影。有两种基本的投影操作:
- 标量投影(Scalar Projection):投影的大小
- 矢量投影(Vector Projection):投影矢量本身
向量a在向量b上的投影向量公式等于向量a和向量b的点积除以向量b的大小。
投影向量的大小是一个标量值,并且是向量 b 的方向。
在二维空间,点积可以想象成一条直线在另外一条直线上的投影,点积为零表示相互垂直。
两个二维向量做点积运算,其实就是将其中一个二维向量看作是一种从二维向一维进行转换的线性变换,通俗的说,就是将一个二维向量进行降维,从而维降到一维;再通俗一点地说,就是将一个二维平面压缩到一条数轴上,这样的话,原来的向量就会变成一个数字,空间的压缩会导致二维向量的一个维度的消失,二维空间中(平面)的向量在一维空间(数轴)中就是一个点,因为这个过程是以投影的方式实现的。
一个向量在另一个向量上的投影与另一个向量的长度相乘就是点积的结果。这个投影可以是同向的,也可以是反向的。无论是哪个向量向另外一个向量投影,结果都是一样的。这说明点积的计算与计算顺序无关,具有对称性。
变基(Changing Basis)
线性代数中的变基是指用一组不同的坐标来表达一个向量的过程,这组坐标称为基(Basis)。
一个基是一组线性独立的矢量,可以用来表达矢量空间中的任何矢量。
当一个矢量用不同的基来表达时,它的坐标就会改变。
例如,我们已经看到,在二维空间中,每个矢量都可以表示为两个基矢量 [0,1] 和 [1,0] 的和。
这两个矢量是我们空间的基础。试想,可以使用其他两个矢量作为基础而不仅仅是这两个吗?当然可以,但在这种情况下,空间中每个矢量坐标都会发生变化。
在上面的图片中,有两个基数。基数(e1,e2),和基数(b1,b2)。此外,还有一个矢量r(红色)。
当用(e1,e2)表示时,这个向量的坐标为[3,4],这是我们一直默认使用的基数。
但如果用(b1,b2)来表示,它的坐标会变成什么样子?
为了找到这些坐标,我们需要分步骤进行。
首先,我们需要找到矢量r对新基点(b1,b2)的矢量的投影。
显而易见我们创建的这些投影的总和就是 r。
r = p1 + p2
此外,为了改变基础,我必须检查新基也是正交的,也就是说,向量之间是90度的,所以它们可以定义整个空间。
要检查这一点,只需查看角度的余弦是否为 0,这意味着角度为 90 度。
现在我们继续计算 r 在矢量 (b1,b2) 上的矢量投影,使用我们在前面提到的公式。
计算结果如下:
矢量投影中用红色圈出的值将为我们提供以基数b表示的新矢量r的坐标:(b1,b2) 而非e:(e1,e2)。
为了检查计算是否正确,我们需要检查投影的总和是否只是以e为基数的r:(e1,e2)。
[-1,2] + [4,2] = [3,4]
基、矢量空间和线性无关
前面章节中,我们已经看到并谈到了基,接下来让我们更加准确地定义什么是矢量空间中的矢量基。
基是一组 n 个矢量,它们:
- 不是彼此的线性组合(线性独立)
- 跨越空间:空间是n维的
第一点是说,例如我有 3 个矢量a、b、c构成一个基,这意味着没有办法将这些矢量加在一起并乘以标量并得到零!
如果我用x ,y和z表示任意三个标量(两个数字),则意味着:
xa + yb +zc != 0
(显然不包括 x = y = z = 0 的简单情况)。在这种情况下,我们会说矢量是线性无关的。
例如,无法乘以标量并将a和b加在一起得到c。这意味着如果a和b位于二维空间中,则 c 位于第三维空间中。
而第二点意味着我可以将这些矢量乘以标量并将它们加在一起以获得 3 维空间中的任何可能矢量。所以这 3 个基矢量足以让我定义维度 n=3 的整个空间。
矩阵和求解联立方程
到目前为止,您应该非常擅长处理矢量并对它们进行操作。但是它们在现实生活中有什么用呢?我们一开始就知道我们的目标之一是同时求解多个方程,例如,计算超市蔬菜的价格。
假设我们去市场购买 2 个鳄梨和 3 个西兰花,并支付 8 美元。第二天,我们买了 10 个鳄梨和 1 个西兰花,并支付了 12 美元。现在,我们想知道单个鳄梨和单个西兰花的成本是多少,我们必须同时解决下列数学表达式。
但现在我们知道了矢量,我们可以用更简单的方式重写这些方程。我们把系数向量[2,10]和[3,1]挨在一起,形成一个矩阵(矢量集)。然后我们会有未知数的矢量[a,b],最后是结果[8,12]。
现在你可能会问,这种写问题的新形式是否真的更好。如何在矩阵和矢量之间做乘法?这很简单。只需将矩阵的每一行与矢量相乘。如果要在两个矩阵之间做乘法,我们就必须用第一个矩阵的每一行乘以第二个矩阵的每一列。
因此,通过逐列应用这一规则,我们应该重新获得原始形状。
然而,这种形式也有其他优点。它为我们提供了对正在发生的事情的几何解释。每个矩阵都定义了空间的转换。因此,如果在一个空间里有一个点,应用一个矩阵,这个点将以某种方式移动。
但是,我们也可以说,矩阵只不过是一个将一个点作为输入并生成一个新点作为输出的函数。
所以我们最初的问题可以解释如下:“什么是原始向量 [a,b],其变换结果为 [8,3]?”
这样一来,就可以把求解联立方程看成是对矢量空间中矢量的变换。矩阵加运算具有以下非常有用的属性。
给定 A(r) = r2,其中 A 是矩阵,r、r2 都是标量:
- A(nr) = ns其中n是标量
- A(r+s) = A(r) + A(s)其中s是矢量
矩阵和空间变换
要了解矩阵的影响,可以了解它们如何转换应用它们的矢量。特别是,我们可以看看矩阵在应用于特征基数时有什么影响。
如果我们有一个2x2的矩阵,并且我们在一个二维空间中,矩阵的第一列会告诉我们对向量e1=[1,0]的影响,而第二列则会告诉我们对向量e1=[0,2]的影响。
然后我们看到一些已知矩阵的效果。这些变换在机器学习中对图像的数据增强经常是有用的,例如可以拉伸或缩小这些图像。
我们也可以对一个矢量连续进行多次变换。因此,如果我们有两个由矩阵A1和A2表示的变换,我们可以连续应用它们A2(A1(vector))。
但这与反过来应用它们是不同的,即A1(A2(vector))。这就是为什么矩阵之间的乘积不享有换元特性的原因。
参考:
标签:投影,矢量,矩阵,基础知识,vec,相关,我们,向量 From: https://www.cnblogs.com/ghj1976/p/vector.html