矩阵基础
在机器学习中,经常会遇到一些矩阵相关的知识,有些概念特别容易混淆,在这里对这些知识做下总结。
概念
我们先从几个概念说起:
标量(scalar)
一个标量表示一个单独的数,通常使用小写的变量名称。
向量(vector)
一个向量表示一组有序排列的数。通常我们赋予向量粗体的小写变量名称,比如 ,或小写字母上面加一个向右的箭头 。向量中的元素可以通过带脚标的斜体表示。
矩阵(matrix)
矩阵是具有相同特征和纬度的对象的集合,表现为一张二维数据表。其意义是一个对象表示为矩阵中的一行,一个特征表示为矩阵中的一列,每个特征都有数值型的取值。矩阵一般使用粗体的大写变量名称,比如。
张量(tensor)
在某些情况下,我们会讨论坐标超过两维的数组。一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量。使用 来表示张量“A”。张量中坐标为的元素记作。
矩阵乘法
向量乘法:
定义两个向量 与,为两个向量的夹角。
内积
点积又叫向量的内积、标量积、数量积、点积、点乘,是一个向量和它在另一个向量上的投影的长度的乘积,是标量。反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘越大。
向量的点积记作:
几何意义
code
可以使用numpy中的dot()函数进行矩阵的点乘
1 | # 如果处理的是一维数组(向量相乘),则得到的是两数组的内积,即对应位置相乘然后相加 |
外积
向量的外积又叫向量叉乘。
向量a与b的外积是一个向量,其长度等于|a×b| = |a||b|sin∠(a,b),其方向正交于a与b。并且,(a,b,a×b)构成右手系。(外积是张量积的一种形式)
几何意义
其中θ为向量a和向量b的夹角,如下图所示,c的模即以a和b为两条边的平行四边形的面积。
c的方向定义为垂直于a和b所构成的平面
code
1 | result = np.outer(mat_1,mat_2) |
对应元素相乘
没有几何意义只有代数意义的向量乘法,也叫做哈达玛积
1 | result = mat_1*mat_2 |
矩阵乘法:
点乘(又叫点积是对应位置相乘)
1 | # 如果是二维数组(矩阵)之间的运算,则得到的是矩阵积(mastrix product) |
output:
1 | mat_1: |
叉乘(矩阵乘法)
1 | print(f"dot:\n{np.dot(mat_1,mat_2)}") |