本篇笔记,可作为《逻辑小站》【逻辑与AI】栏目中机器学习板块的内容。
一、向量
如果把「线性代数」比作一座大厦,那么「向量」就是这个大厦的砖石了。「向量」是学习线性代数所有其它内容的起点和基础。
在开始以前,首先让我们对齐你和我对「向量是什么」这个问题的回答。从最广的意义上,对「向量」可以从三个视角理解:
物理学的角度
计算机编程的角度
数学的角度
从物理学的角度,所谓「向量」就是一个具有方向和大小的量,通常是在平面上用箭头表示。一个平面向量可以出现在任何位置,但只要方向和大小相同,向量就是相等的。除了二维平面向量,还有三维的空间向量。
从计算机编程的角度,向量只是一列有序的数字,这列数字可以用纵列(column)表示:
例如,我可以用一列数字描述我未来想要买的房子,其中,我最关心的是房子的价格和面积大小,所以我可以用两个数字表达对未来我要购入的房子关切点:
面积:100m²
价格:¥800,000
把这两个关切点转换成向量就是:
值得注意的是, 向量的两个数字的位置极为重要,例如第一行数字表示面积,第二行表示价格,如果没有顺序限制,两个向量就无法比较。因此,
在程序员看来,所谓「向量」无非就是一个列表结构,其成员是数字。列表的成员数量反映了维度数。例如上例的向量就是二维向量。
而站在数学的角度,则是综合了这两个视角,把任意向量看作是另外两个带系数的向量的和。
为什么单一向量要看作是另外两个带系数的向量的和?因为这就是我们理解向量以及线性代数实质的关键。因此,要深刻理解向量,首先要从向量的加法和向量的标量乘法开始。
不过,在讨论向量的这两种运算之前,先看一下线性代数是如何描述向量的。首先,向量有一个几何「形象」—— 箭头。
在线性代数中,所有向量的几何表示都是在直角坐标系内,箭头的尾永远位于坐标系的原点。
这一点和物理学不同,因为物理学中的向量可以分布在任何位置。把向量的几何形象箭头放入直角坐标系,我们就可以得到许多关于向量的新的概念。首先,我们可以把几何表示转换成一列数字,而这些数字和其几何表示的对应关系,对于理解线性代数的核心概念非常重要。在这个语境下,我们关注的目标有三个:
1. 向量的几何表示:一个从原点出发到达坐标系中任意确定的一点做一线段,线的头部冠以箭头;
2. 向量的代数表示:一列数字,表示箭头所处的在坐标系中的位置——坐标点(cooridinate),数字的数量,由坐标系的维度决定;
3. 直角坐标系,这是任何有中学数学基础的人都熟悉的东西,不过在这里,我们将以新的视角重新理解坐标系的概念。首先,我们关注的是平面二维直角坐标系。
一个直角坐标系,是由两条相互垂直的直线构成,分别称作x-轴和y-轴,两线的交叉点称作原点。在这个坐标系上的所有向量的几何形象都始于原点。有了两条水平和垂直的数轴之后,我们可以选择【任意】长度作为单位,在坐标系统中表示1。这句话非常重要,坐标系统中作为单位长的1,其实际长度是任意的,也就是说,现在我们可以选择长度为7mm的距离作为单位长,未来为了某种需要我们可能改变这个单位的实际长度,例如14mm。现在需要想象的是,同一坐标系上的一个向量,如果坐标系的单位长度改变,甚至坐标系的角度改变,是否影响向量的表示。
如果要用这个直角坐标系描述整个二维空间,那么这个刻度就不再仅仅限于坐标纵横数轴本身,而是整个二维空间。
什么时候我们需要这样的网格空间?答案是当我们需要考虑在这个空间中所有向量时。如果我们的关注点只是少数几个向量时,我们仍然采用原来的坐标系表示法。
现在我们回到「向量」的话题。向量在坐标上的代数表示,是一对数字,称作「坐标点」,它的作用是确定从原点出发的向量如何得到它在坐标系上的顶点:
其中,[-2, 3]所代表的意义是:
-2:表示这个向量沿着x-轴向左移动了2个单位,
3:表示这个向量沿着y-轴向上移动了3个单位,
这里有两个重点,一、移动:所有向量都可以看做是点从原点位置出发移动所产生的;二、移动方式,先不要把这个移动看做是从原点到顶点坐标的直接移动,而是分两步进行:先水平移动,后垂直移动,或反之。为什么,这一点非常重要,当后面讨论向量运算时就会明白。现在所要理解的就是,二维向量是由两个「普通」的数合成的。
我们有时需要区分向量和点的概念。在表示方面,向量是纵列的两个数,而点则是我们通常熟悉的方法:(-4, 2)。
向量有一个重要性质:每对数字只能表示一个平面向量;而一个平面向量只能对应于唯一一组数字。在三维坐标系中,
下面,我们开始讨论向量的基本性质之一:向量的加法和向量的标量乘法。这两种运算,是最重要的「线性运算」。首先,我们来看向量的加法运算:当二维空间存在两个以上的向量时,我们将用网格形式表示:
图中,我们有两个向量:v 和 w,从几何的角度,两个向量的加法,就是把w移到v的顶端,两个向量首尾相连,这样,两个向量的和就是从原点到移动后w的顶点。从直观上来看,从原点到w的顶点,有两条通路:从原点经v 和 w,到达终点,另一条则是抄近道:从原点直接到终点。这个「抄近道」得到的新向量就是v + w的和。
如何理解向量的加法运算?正如前面所说,向量的形成是通过点的移动形成。如果从整个坐标空间考虑,向量v的形成,所代表是在坐标空间中「一类」点的移动。
如果你仍然从概念上不太理解为什么向量加法的实质是两箭头首位相接,那么请看下面的x-轴上的加法。
2+5 是由向量[2,0]和向量[5,0]构成,两个向量首尾相接,后面向量的值正好是[7,0]。与之相对,我们可以从原点直接到[7,0]。从这个例子可以看出,我们在小学学习的加法,实际上是向量加法的特例,是没有其它维度量参与的加法运算;第二、向量加法实际上是量和方向的叠加。
如果从代数角度分析,那么这两个向量所代表的坐标值分别为
其结果为:
除了向量加法,另一个重要运算就是标量乘法。在讨论标量乘法之间,让我们先了解一下「标量」(scalar)是什么概念。scalar这个词的原形是scale,基本意思是:体量规模的大小伸缩。scalable,是指一件事物可大可小、适应能力强。scalar的意思是,能让某个向量的体量改变的量。这一点可以从我们小学的乘法运算看出基本意思。鸡蛋3块钱一斤,买了5斤,一共是15块钱。其中,3的单位是钱,而5的单位是重量。3块 x 5斤,所表示的,3这个量被5放大,所以得到的值是放大了5倍的货币的值。因此我们可以把3块看做是一个一维向量,把5斤看做是帮助这个量放大体量的量,亦即,5个3块钱。如果向量不是一维而是二维,例如向量v,[3,1],如果体量翻番,则是 [3,1] x 2 = [6, 2]。
因此,所谓「标量」,其意义就是使向量可以伸缩的量,其类型就是上面提到了「普通」的实数。下面表示的就是向量v = [3,1]在平面坐标系的几何表示:
做标量运算:v * 2 = 2 v = [6, 2]
如果标量大于0小于1,这个标量令向量的体量变小。
标量除了可以改变向量的大小,还可以改变向量的方向,
标量的作用是:通过值改变向量的体量,通过正负号改变向量的方向;如果只改变体量而不考虑方向的改变,亦即,标量的绝对值,那么标量对向量的作用称做scaling,大致可以译作「体量伸缩」。
因此标量的真正含义是:伸缩量,它的类型是任何实数、有理数或整数。
有了向量加法和标量乘法的概念,我们就可用这两个运算定义任意向量。下面再仔细看一下向量v
我们可以把这个向量看做是两个向量经过向量加法和标量乘法运算的结果:
首先设有一个沿x-轴的一维向量i = [1,0],这个向量通过标量乘法向右延伸3个单位:i * 3 = 3i:代数表示:3 · [1,0] = [3, 0]
同样,设有一个沿y-轴的一维向量j = [0,1],这个向量通过标量乘法向上保持是一个单位:j * 1 = 1j,代数表示:1 · [0,1] = [1, 0]
两个向量相加:3i + 1j = [3,0] + [0,1] = [3,1]
这正好是v的向量值。这个事实告诉我们,向量v可以由i和j定义,而v的向量值[3, 1]可分别看做是i和j的标量。因此,i和j是构成任何向量的基本要素。这里,我们暂且把i和j称作【单位向量】。总之,向量v,是单位向量i和j,与向量值[3,1]中的两个标量3, 1经过标量乘法和向量加法运算的结果。
推而广之:任何向量 v = [m, n],都可以看做是单位向量i = [1,0]和j=[0,1]经过标量乘法和向量加法运算得到的结果:mi +nj = v。这两个单位向量i和j,标准术语是:【基向量】(basis vector)。
小结:
向量的三个视点:
物理视点:带有方向和大小的量;
计算机编程视点:有序的实数序列,通常用方括号的纵列表示。
数学视点:物理视点与编程视点的结合,一个向量在直角坐标系中既有几何解释也有代数表示。
向量,代表了我们对某个对象的量化关注点,例如一开始的例子:未来的房子。这些量化的关注点在现实世界中可以有成千上万:
这些关注点可以化作几何形态的坐标向量:
关注点,在现实生活中称作数据,在机器学习的语境中称作「特征」(feature)。通过向量的研究,我们可以发现数据的模式,找到需要的信息。
在整个在平面直角坐标系中所形成的网格系统,可以看做是一个二维空间,每一个「格」可以看作是这个空间的基本单位,代表了i+j——基向量,因此所有这些基本单位的集合,称作「向量空间」。
下一篇的话题是:线性组合、span,基向量